}
+ */
+export default function ready(callback) {
+ return new Promise((resolve, reject) => {
+ function loaded() {
+ let result;
+ try {
+ result = callback();
+ } catch (err) {
+ reject(err);
+
+ return;
+ }
+
+ if (typeof result?.then === 'function') {
+ result.then(resolve).catch(reject);
+ } else {
+ resolve();
+ }
+ }
+
+ if (['interactive', 'complete'].includes(document.readyState)) {
+ loaded();
+ } else {
+ document.addEventListener('DOMContentLoaded', loaded);
+ }
+ });
}
diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js
index 14b7040273..f4f97cd3a8 100644
--- a/app/javascript/mastodon/reducers/filters.js
+++ b/app/javascript/mastodon/reducers/filters.js
@@ -1,4 +1,5 @@
import { FILTERS_IMPORT } from '../actions/importer';
+import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters';
import { Map as ImmutableMap, is, fromJS } from 'immutable';
const normalizeFilter = (state, filter) => {
@@ -7,13 +8,17 @@ const normalizeFilter = (state, filter) => {
title: filter.title,
context: filter.context,
filter_action: filter.filter_action,
+ keywords: filter.keywords,
expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null,
});
if (is(state.get(filter.id), normalizedFilter)) {
return state;
} else {
- return state.set(filter.id, normalizedFilter);
+ // Do not overwrite keywords when receiving a partial filter
+ return state.update(filter.id, ImmutableMap(), (old) => (
+ old.mergeWith(((old_value, new_value) => (new_value === undefined ? old_value : new_value)), normalizedFilter)
+ ));
}
};
@@ -27,6 +32,10 @@ const normalizeFilters = (state, filters) => {
export default function filters(state = ImmutableMap(), action) {
switch(action.type) {
+ case FILTERS_CREATE_SUCCESS:
+ return normalizeFilter(state, action.filter);
+ case FILTERS_FETCH_SUCCESS:
+ return normalizeFilters(ImmutableMap(), action.filters);
case FILTERS_IMPORT:
return normalizeFilters(state, action.filters);
default:
diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js
index 0219d8a5e1..bccdc18655 100644
--- a/app/javascript/mastodon/reducers/index.js
+++ b/app/javascript/mastodon/reducers/index.js
@@ -17,7 +17,7 @@ import status_lists from './status_lists';
import mutes from './mutes';
import blocks from './blocks';
import boosts from './boosts';
-import rules from './rules';
+import server from './server';
import contexts from './contexts';
import compose from './compose';
import search from './search';
@@ -39,6 +39,7 @@ import markers from './markers';
import picture_in_picture from './picture_in_picture';
import accounts_map from './accounts_map';
import history from './history';
+import tags from './tags';
const reducers = {
announcements,
@@ -61,7 +62,7 @@ const reducers = {
mutes,
blocks,
boosts,
- rules,
+ server,
contexts,
compose,
search,
@@ -81,6 +82,7 @@ const reducers = {
markers,
picture_in_picture,
history,
+ tags,
};
export default combineReducers(reducers);
diff --git a/app/javascript/mastodon/reducers/meta.js b/app/javascript/mastodon/reducers/meta.js
index 65becc44f8..5040a340fc 100644
--- a/app/javascript/mastodon/reducers/meta.js
+++ b/app/javascript/mastodon/reducers/meta.js
@@ -7,12 +7,13 @@ const initialState = ImmutableMap({
streaming_api_base_url: null,
access_token: null,
layout: layoutFromWindow(),
+ permissions: '0',
});
export default function meta(state = initialState, action) {
switch(action.type) {
case STORE_HYDRATE:
- return state.merge(action.state.get('meta'));
+ return state.merge(action.state.get('meta')).set('permissions', action.state.getIn(['role', 'permissions']));
case APP_LAYOUT_CHANGE:
return state.set('layout', action.layout);
default:
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index 4b460bc10c..eb34edb633 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -41,7 +41,7 @@ const initialState = ImmutableMap({
lastReadId: '0',
readMarkerId: '0',
isTabVisible: true,
- isLoading: false,
+ isLoading: 0,
browserSupport: false,
browserPermission: 'default',
});
@@ -115,7 +115,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece
}
}
- mutable.set('isLoading', false);
+ mutable.update('isLoading', (nbLoading) => nbLoading - 1);
});
};
@@ -214,9 +214,9 @@ export default function notifications(state = initialState, action) {
case NOTIFICATIONS_LOAD_PENDING:
return state.update('items', list => state.get('pendingItems').concat(list.take(40))).set('pendingItems', ImmutableList()).set('unread', 0);
case NOTIFICATIONS_EXPAND_REQUEST:
- return state.set('isLoading', true);
+ return state.update('isLoading', (nbLoading) => nbLoading + 1);
case NOTIFICATIONS_EXPAND_FAIL:
- return state.set('isLoading', false);
+ return state.update('isLoading', (nbLoading) => nbLoading - 1);
case NOTIFICATIONS_FILTER_SET:
return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', true);
case NOTIFICATIONS_SCROLL_TOP:
@@ -234,8 +234,6 @@ export default function notifications(state = initialState, action) {
case FOLLOW_REQUEST_AUTHORIZE_SUCCESS:
case FOLLOW_REQUEST_REJECT_SUCCESS:
return filterNotifications(state, [action.id], 'follow_request');
- case ACCOUNT_MUTE_SUCCESS:
- return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state;
case NOTIFICATIONS_CLEAR:
return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', false);
case TIMELINE_DELETE:
diff --git a/app/javascript/mastodon/reducers/rules.js b/app/javascript/mastodon/reducers/rules.js
deleted file mode 100644
index c1180b5203..0000000000
--- a/app/javascript/mastodon/reducers/rules.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { RULES_FETCH_SUCCESS } from 'mastodon/actions/rules';
-import { List as ImmutableList, fromJS } from 'immutable';
-
-const initialState = ImmutableList();
-
-export default function rules(state = initialState, action) {
- switch (action.type) {
- case RULES_FETCH_SUCCESS:
- return fromJS(action.rules);
- default:
- return state;
- }
-}
diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js
new file mode 100644
index 0000000000..68131c6ddf
--- /dev/null
+++ b/app/javascript/mastodon/reducers/server.js
@@ -0,0 +1,19 @@
+import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL } from 'mastodon/actions/server';
+import { Map as ImmutableMap, fromJS } from 'immutable';
+
+const initialState = ImmutableMap({
+ isLoading: true,
+});
+
+export default function server(state = initialState, action) {
+ switch (action.type) {
+ case SERVER_FETCH_REQUEST:
+ return state.set('isLoading', true);
+ case SERVER_FETCH_SUCCESS:
+ return fromJS(action.server).set('isLoading', false);
+ case SERVER_FETCH_FAIL:
+ return state.set('isLoading', false);
+ default:
+ return state;
+ }
+}
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 53dec95859..7efb49d857 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -13,6 +13,8 @@ import {
STATUS_REVEAL,
STATUS_HIDE,
STATUS_COLLAPSE,
+ STATUS_TRANSLATE_SUCCESS,
+ STATUS_TRANSLATE_UNDO,
} from '../actions/statuses';
import { TIMELINE_DELETE } from '../actions/timelines';
import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer';
@@ -77,6 +79,10 @@ export default function statuses(state = initialState, action) {
return state.setIn([action.id, 'collapsed'], action.isCollapsed);
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
+ case STATUS_TRANSLATE_SUCCESS:
+ return state.setIn([action.id, 'translation'], fromJS(action.translation));
+ case STATUS_TRANSLATE_UNDO:
+ return state.deleteIn([action.id, 'translation']);
default:
return state;
}
diff --git a/app/javascript/mastodon/reducers/tags.js b/app/javascript/mastodon/reducers/tags.js
new file mode 100644
index 0000000000..d24098e394
--- /dev/null
+++ b/app/javascript/mastodon/reducers/tags.js
@@ -0,0 +1,25 @@
+import {
+ HASHTAG_FETCH_SUCCESS,
+ HASHTAG_FOLLOW_REQUEST,
+ HASHTAG_FOLLOW_FAIL,
+ HASHTAG_UNFOLLOW_REQUEST,
+ HASHTAG_UNFOLLOW_FAIL,
+} from 'mastodon/actions/tags';
+import { Map as ImmutableMap, fromJS } from 'immutable';
+
+const initialState = ImmutableMap();
+
+export default function tags(state = initialState, action) {
+ switch(action.type) {
+ case HASHTAG_FETCH_SUCCESS:
+ return state.set(action.name, fromJS(action.tag));
+ case HASHTAG_FOLLOW_REQUEST:
+ case HASHTAG_UNFOLLOW_FAIL:
+ return state.setIn([action.name, 'following'], true);
+ case HASHTAG_FOLLOW_FAIL:
+ case HASHTAG_UNFOLLOW_REQUEST:
+ return state.setIn([action.name, 'following'], false);
+ default:
+ return state;
+ }
+};
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index 187e3306dd..3dd7f48972 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -1,5 +1,6 @@
import { createSelector } from 'reselect';
import { List as ImmutableList, Map as ImmutableMap } from 'immutable';
+import { toServerSideType } from 'mastodon/utils/filters';
import { me } from '../initial_state';
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
@@ -20,23 +21,6 @@ export const makeGetAccount = () => {
});
};
-const toServerSideType = columnType => {
- switch (columnType) {
- case 'home':
- case 'notifications':
- case 'public':
- case 'thread':
- case 'account':
- return columnType;
- default:
- if (columnType.indexOf('list:') > -1) {
- return 'home';
- } else {
- return 'public'; // community, account, hashtag
- }
- }
-};
-
const getFilters = (state, { contextType }) => {
if (!contextType) return null;
@@ -73,6 +57,7 @@ export const makeGetStatus = () => {
if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) {
return null;
}
+ filterResults = filterResults.filter(result => filters.has(result.get('filter')));
if (!filterResults.isEmpty()) {
filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title']));
}
diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js
index b354f3b332..e4c66cc000 100644
--- a/app/javascript/mastodon/service_worker/entry.js
+++ b/app/javascript/mastodon/service_worker/entry.js
@@ -1,20 +1,59 @@
-// import { freeStorage, storageFreeable } from '../storage/modifier';
-import './web_push_notifications';
+import { ExpirationPlugin } from 'workbox-expiration';
+import { precacheAndRoute } from 'workbox-precaching';
+import { registerRoute } from 'workbox-routing';
+import { CacheFirst } from 'workbox-strategies';
+import { handleNotificationClick, handlePush } from './web_push_notifications';
-// function openSystemCache() {
-// return caches.open('mastodon-system');
-// }
+const CACHE_NAME_PREFIX = 'mastodon-';
function openWebCache() {
- return caches.open('mastodon-web');
+ return caches.open(`${CACHE_NAME_PREFIX}web`);
}
function fetchRoot() {
return fetch('/', { credentials: 'include', redirect: 'manual' });
}
-// const firefox = navigator.userAgent.match(/Firefox\/(\d+)/);
-// const invalidOnlyIfCached = firefox && firefox[1] < 60;
+precacheAndRoute(self.__WB_MANIFEST);
+
+registerRoute(
+ /locale_.*\.js$/,
+ new CacheFirst({
+ cacheName: `${CACHE_NAME_PREFIX}locales`,
+ plugins: [
+ new ExpirationPlugin({
+ maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month
+ maxEntries: 5,
+ }),
+ ],
+ }),
+);
+
+registerRoute(
+ ({ request }) => request.destination === 'font',
+ new CacheFirst({
+ cacheName: `${CACHE_NAME_PREFIX}fonts`,
+ plugins: [
+ new ExpirationPlugin({
+ maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month
+ maxEntries: 5,
+ }),
+ ],
+ }),
+);
+
+registerRoute(
+ ({ request }) => ['audio', 'image', 'track', 'video'].includes(request.destination),
+ new CacheFirst({
+ cacheName: `m${CACHE_NAME_PREFIX}media`,
+ plugins: [
+ new ExpirationPlugin({
+ maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week
+ maxEntries: 256,
+ }),
+ ],
+ }),
+);
// Cause a new version of a registered Service Worker to replace an existing one
// that is already installed, and replace the currently active worker on open pages.
@@ -52,26 +91,8 @@ self.addEventListener('fetch', function(event) {
return response;
}));
- } /* else if (storageFreeable && (ATTACHMENT_HOST ? url.host === ATTACHMENT_HOST : url.pathname.startsWith('/system/'))) {
- event.respondWith(openSystemCache().then(cache => {
- return cache.match(event.request.url).then(cached => {
- if (cached === undefined) {
- const asyncResponse = invalidOnlyIfCached && event.request.cache === 'only-if-cached' ?
- fetch(event.request, { cache: 'no-cache' }) : fetch(event.request);
-
- return asyncResponse.then(response => {
- if (response.ok) {
- cache
- .put(event.request.url, response.clone())
- .catch(()=>{}).then(freeStorage()).catch();
- }
-
- return response;
- });
- }
-
- return cached;
- });
- }));
- } */
+ }
});
+
+self.addEventListener('push', handlePush);
+self.addEventListener('notificationclick', handleNotificationClick);
diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js
index 48a2be7e70..9b75e9b9dc 100644
--- a/app/javascript/mastodon/service_worker/web_push_notifications.js
+++ b/app/javascript/mastodon/service_worker/web_push_notifications.js
@@ -75,7 +75,7 @@ const formatMessage = (messageId, locale, values = {}) =>
const htmlToPlainText = html =>
unescape(html.replace(/
/g, '\n').replace(/<\/p>/g, '\n\n').replace(/<[^>]*>/g, ''));
-const handlePush = (event) => {
+export const handlePush = (event) => {
const { access_token, notification_id, preferred_locale, title, body, icon } = event.data.json();
// Placeholder until more information can be loaded
@@ -189,7 +189,7 @@ const openUrl = url =>
return self.clients.openWindow(url);
});
-const handleNotificationClick = (event) => {
+export const handleNotificationClick = (event) => {
const reactToNotificationClick = new Promise((resolve, reject) => {
if (event.action) {
if (event.action === 'expand') {
@@ -211,6 +211,3 @@ const handleNotificationClick = (event) => {
event.waitUntil(reactToNotificationClick);
};
-
-self.addEventListener('push', handlePush);
-self.addEventListener('notificationclick', handleNotificationClick);
diff --git a/app/javascript/mastodon/storage/db.js b/app/javascript/mastodon/storage/db.js
deleted file mode 100644
index 377a792a7d..0000000000
--- a/app/javascript/mastodon/storage/db.js
+++ /dev/null
@@ -1,27 +0,0 @@
-export default () => new Promise((resolve, reject) => {
- // ServiceWorker is required to synchronize the login state.
- // Microsoft Edge 17 does not support getAll according to:
- // Catalog of standard and vendor APIs across browsers - Microsoft Edge Development
- // https://developer.microsoft.com/en-us/microsoft-edge/platform/catalog/?q=specName%3Aindexeddb
- if (!('caches' in self && 'getAll' in IDBObjectStore.prototype)) {
- reject();
- return;
- }
-
- const request = indexedDB.open('mastodon');
-
- request.onerror = reject;
- request.onsuccess = ({ target }) => resolve(target.result);
-
- request.onupgradeneeded = ({ target }) => {
- const accounts = target.result.createObjectStore('accounts', { autoIncrement: true });
- const statuses = target.result.createObjectStore('statuses', { autoIncrement: true });
-
- accounts.createIndex('id', 'id', { unique: true });
- accounts.createIndex('moved', 'moved');
-
- statuses.createIndex('id', 'id', { unique: true });
- statuses.createIndex('account', 'account');
- statuses.createIndex('reblog', 'reblog');
- };
-});
diff --git a/app/javascript/mastodon/storage/modifier.js b/app/javascript/mastodon/storage/modifier.js
deleted file mode 100644
index 9fadabef44..0000000000
--- a/app/javascript/mastodon/storage/modifier.js
+++ /dev/null
@@ -1,211 +0,0 @@
-import openDB from './db';
-
-const accountAssetKeys = ['avatar', 'avatar_static', 'header', 'header_static'];
-const storageMargin = 8388608;
-const storeLimit = 1024;
-
-// navigator.storage is not present on:
-// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.100 Safari/537.36 Edge/16.16299
-// estimate method is not present on Chrome 57.0.2987.98 on Linux.
-export const storageFreeable = 'storage' in navigator && 'estimate' in navigator.storage;
-
-function openCache() {
- // ServiceWorker and Cache API is not available on iOS 11
- // https://webkit.org/status/#specification-service-workers
- return self.caches ? caches.open('mastodon-system') : Promise.reject();
-}
-
-function printErrorIfAvailable(error) {
- if (error) {
- console.warn(error);
- }
-}
-
-function put(name, objects, onupdate, oncreate) {
- return openDB().then(db => (new Promise((resolve, reject) => {
- const putTransaction = db.transaction(name, 'readwrite');
- const putStore = putTransaction.objectStore(name);
- const putIndex = putStore.index('id');
-
- objects.forEach(object => {
- putIndex.getKey(object.id).onsuccess = retrieval => {
- function addObject() {
- putStore.add(object);
- }
-
- function deleteObject() {
- putStore.delete(retrieval.target.result).onsuccess = addObject;
- }
-
- if (retrieval.target.result) {
- if (onupdate) {
- onupdate(object, retrieval.target.result, putStore, deleteObject);
- } else {
- deleteObject();
- }
- } else {
- if (oncreate) {
- oncreate(object, addObject);
- } else {
- addObject();
- }
- }
- };
- });
-
- putTransaction.oncomplete = () => {
- const readTransaction = db.transaction(name, 'readonly');
- const readStore = readTransaction.objectStore(name);
- const count = readStore.count();
-
- count.onsuccess = () => {
- const excess = count.result - storeLimit;
-
- if (excess > 0) {
- const retrieval = readStore.getAll(null, excess);
-
- retrieval.onsuccess = () => resolve(retrieval.result);
- retrieval.onerror = reject;
- } else {
- resolve([]);
- }
- };
-
- count.onerror = reject;
- };
-
- putTransaction.onerror = reject;
- })).then(resolved => {
- db.close();
- return resolved;
- }, error => {
- db.close();
- throw error;
- }));
-}
-
-function evictAccountsByRecords(records) {
- return openDB().then(db => {
- const transaction = db.transaction(['accounts', 'statuses'], 'readwrite');
- const accounts = transaction.objectStore('accounts');
- const accountsIdIndex = accounts.index('id');
- const accountsMovedIndex = accounts.index('moved');
- const statuses = transaction.objectStore('statuses');
- const statusesIndex = statuses.index('account');
-
- function evict(toEvict) {
- toEvict.forEach(record => {
- openCache()
- .then(cache => accountAssetKeys.forEach(key => cache.delete(records[key])))
- .catch(printErrorIfAvailable);
-
- accountsMovedIndex.getAll(record.id).onsuccess = ({ target }) => evict(target.result);
-
- statusesIndex.getAll(record.id).onsuccess =
- ({ target }) => evictStatusesByRecords(target.result);
-
- accountsIdIndex.getKey(record.id).onsuccess =
- ({ target }) => target.result && accounts.delete(target.result);
- });
- }
-
- evict(records);
-
- db.close();
- }).catch(printErrorIfAvailable);
-}
-
-export function evictStatus(id) {
- evictStatuses([id]);
-}
-
-export function evictStatuses(ids) {
- return openDB().then(db => {
- const transaction = db.transaction('statuses', 'readwrite');
- const store = transaction.objectStore('statuses');
- const idIndex = store.index('id');
- const reblogIndex = store.index('reblog');
-
- ids.forEach(id => {
- reblogIndex.getAllKeys(id).onsuccess =
- ({ target }) => target.result.forEach(reblogKey => store.delete(reblogKey));
-
- idIndex.getKey(id).onsuccess =
- ({ target }) => target.result && store.delete(target.result);
- });
-
- db.close();
- }).catch(printErrorIfAvailable);
-}
-
-function evictStatusesByRecords(records) {
- return evictStatuses(records.map(({ id }) => id));
-}
-
-export function putAccounts(records, avatarStatic) {
- const avatarKey = avatarStatic ? 'avatar_static' : 'avatar';
- const newURLs = [];
-
- put('accounts', records, (newRecord, oldKey, store, oncomplete) => {
- store.get(oldKey).onsuccess = ({ target }) => {
- accountAssetKeys.forEach(key => {
- const newURL = newRecord[key];
- const oldURL = target.result[key];
-
- if (newURL !== oldURL) {
- openCache()
- .then(cache => cache.delete(oldURL))
- .catch(printErrorIfAvailable);
- }
- });
-
- const newURL = newRecord[avatarKey];
- const oldURL = target.result[avatarKey];
-
- if (newURL !== oldURL) {
- newURLs.push(newURL);
- }
-
- oncomplete();
- };
- }, (newRecord, oncomplete) => {
- newURLs.push(newRecord[avatarKey]);
- oncomplete();
- }).then(records => Promise.all([
- evictAccountsByRecords(records),
- openCache().then(cache => cache.addAll(newURLs)),
- ])).then(freeStorage, error => {
- freeStorage();
- throw error;
- }).catch(printErrorIfAvailable);
-}
-
-export function putStatuses(records) {
- put('statuses', records)
- .then(evictStatusesByRecords)
- .catch(printErrorIfAvailable);
-}
-
-export function freeStorage() {
- return storageFreeable && navigator.storage.estimate().then(({ quota, usage }) => {
- if (usage + storageMargin < quota) {
- return null;
- }
-
- return openDB().then(db => new Promise((resolve, reject) => {
- const retrieval = db.transaction('accounts', 'readonly').objectStore('accounts').getAll(null, 1);
-
- retrieval.onsuccess = () => {
- if (retrieval.result.length > 0) {
- resolve(evictAccountsByRecords(retrieval.result).then(freeStorage));
- } else {
- resolve(caches.delete('mastodon-system'));
- }
- };
-
- retrieval.onerror = reject;
-
- db.close();
- }));
- });
-}
diff --git a/app/javascript/mastodon/utils/filters.js b/app/javascript/mastodon/utils/filters.js
new file mode 100644
index 0000000000..97b433a991
--- /dev/null
+++ b/app/javascript/mastodon/utils/filters.js
@@ -0,0 +1,16 @@
+export const toServerSideType = columnType => {
+ switch (columnType) {
+ case 'home':
+ case 'notifications':
+ case 'public':
+ case 'thread':
+ case 'account':
+ return columnType;
+ default:
+ if (columnType.indexOf('list:') > -1) {
+ return 'home';
+ } else {
+ return 'public'; // community, account, hashtag
+ }
+ }
+};
diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.js
new file mode 100644
index 0000000000..c3e362e39a
--- /dev/null
+++ b/app/javascript/mastodon/utils/icons.js
@@ -0,0 +1,15 @@
+import React from 'react';
+
+// Copied from emoji-mart for consistency with emoji picker and since
+// they don't export the icons in the package
+export const loupeIcon = (
+
+);
+
+export const deleteIcon = (
+
+);
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index 91240aecfb..020f2b4a0e 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -4,8 +4,10 @@ import { start } from '../mastodon/common';
start();
-loadPolyfills().then(() => {
- require('../mastodon/main').default();
+loadPolyfills().then(async () => {
+ const { default: main } = await import('mastodon/main');
+
+ return main();
}).catch(e => {
console.error(e);
});
diff --git a/app/javascript/styles/mastodon/_mixins.scss b/app/javascript/styles/mastodon/_mixins.scss
index 68cad0fde3..dcfab6bd01 100644
--- a/app/javascript/styles/mastodon/_mixins.scss
+++ b/app/javascript/styles/mastodon/_mixins.scss
@@ -20,6 +20,7 @@
font-family: inherit;
background: $ui-base-color;
color: $darker-text-color;
+ border-radius: 4px;
font-size: 14px;
margin: 0;
}
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index 215774a192..54b65bfc8c 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -210,9 +210,9 @@
font-size: 12px;
line-height: 12px;
font-weight: 500;
- color: $ui-secondary-color;
- background-color: rgba($ui-secondary-color, 0.1);
- border: 1px solid rgba($ui-secondary-color, 0.5);
+ color: var(--user-role-accent, $ui-secondary-color);
+ background-color: var(--user-role-background, rgba($ui-secondary-color, 0.1));
+ border: 1px solid var(--user-role-border, rgba($ui-secondary-color, 0.5));
&.moderator {
color: $success-green;
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index f606bfa4aa..08845123ad 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -940,6 +940,10 @@ a.name-tag,
margin-top: 15px;
}
+.user-role {
+ color: var(--user-role-accent);
+}
+
.announcements-list,
.filters-list {
border: 1px solid lighten($ui-base-color, 4%);
@@ -976,6 +980,17 @@ a.name-tag,
&__meta {
padding: 0 15px;
color: $dark-text-color;
+
+ a {
+ color: inherit;
+ text-decoration: underline;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: none;
+ }
+ }
}
&__action-bar {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 26f4c54a3c..b906117dbe 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -126,6 +126,27 @@
&:hover {
border-color: lighten($ui-primary-color, 4%);
color: lighten($darker-text-color, 4%);
+ text-decoration: none;
+ }
+
+ &:disabled {
+ opacity: 0.5;
+ }
+ }
+
+ &.button-tertiary {
+ background: transparent;
+ padding: 6px 17px;
+ color: $highlight-text-color;
+ border: 1px solid $highlight-text-color;
+
+ &:active,
+ &:focus,
+ &:hover {
+ background: $ui-highlight-color;
+ color: $primary-text-color;
+ border: 0;
+ padding: 7px 18px;
}
&:disabled {
@@ -700,6 +721,19 @@
transition: height 0.4s ease, opacity 0.4s ease;
}
+.sign-in-banner {
+ padding: 10px;
+
+ p {
+ color: $darker-text-color;
+ margin-bottom: 20px;
+ }
+
+ .button {
+ margin-bottom: 10px;
+ }
+}
+
.emojione {
font-size: inherit;
vertical-align: middle;
@@ -1783,10 +1817,14 @@ a.account__display-name {
object-fit: contain;
}
- .loading-bar {
+ .loading-bar__container {
position: relative;
}
+ .loading-bar {
+ position: absolute;
+ }
+
&.image-loader--amorphous .image-loader__preview-canvas {
display: none;
}
@@ -2210,6 +2248,7 @@ a.account__display-name {
> .scrollable {
background: $ui-base-color;
+ border-radius: 0 0 4px 4px;
}
}
@@ -2656,6 +2695,26 @@ a.account__display-name {
height: calc(100% - 10px);
overflow-y: hidden;
+ .hero-widget {
+ box-shadow: none;
+
+ &__text,
+ &__img,
+ &__img img {
+ border-radius: 0;
+ }
+
+ &__text {
+ padding: 15px;
+ color: $secondary-text-color;
+
+ strong {
+ font-weight: 700;
+ color: $primary-text-color;
+ }
+ }
+ }
+
.navigation-bar {
padding-top: 20px;
padding-bottom: 20px;
@@ -2663,10 +2722,6 @@ a.account__display-name {
min-height: 20px;
}
- .flex-spacer {
- background: transparent;
- }
-
.compose-form {
flex: 1;
overflow-y: hidden;
@@ -2705,6 +2760,14 @@ a.account__display-name {
flex: 0 0 auto;
}
+ .logo {
+ height: 30px;
+ width: auto;
+ }
+}
+
+.navigation-panel,
+.compose-panel {
hr {
flex: 0 0 auto;
border: 0;
@@ -2832,6 +2895,7 @@ a.account__display-name {
box-sizing: border-box;
width: 100%;
background: lighten($ui-base-color, 4%);
+ border-radius: 4px 4px 0 0;
color: $highlight-text-color;
cursor: pointer;
flex: 0 0 auto;
@@ -3027,6 +3091,17 @@ a.account__display-name {
color: $highlight-text-color;
}
}
+
+ &--logo {
+ background: transparent;
+ padding: 10px;
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: transparent;
+ }
+ }
}
.column-link__icon {
@@ -3547,6 +3622,7 @@ a.status-card.compact:hover {
display: flex;
font-size: 16px;
background: lighten($ui-base-color, 4%);
+ border-radius: 4px 4px 0 0;
flex: 0 0 auto;
cursor: pointer;
position: relative;
@@ -3619,6 +3695,11 @@ a.status-card.compact:hover {
background: lighten($ui-base-color, 8%);
}
}
+
+ &:disabled {
+ color: $dark-text-color;
+ cursor: default;
+ }
}
.column-header__collapsible {
@@ -5229,6 +5310,16 @@ a.status-card.compact:hover {
line-height: 22px;
color: lighten($inverted-text-color, 16%);
margin-bottom: 30px;
+
+ a {
+ text-decoration: none;
+ color: $inverted-text-color;
+ font-weight: 500;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
}
&__actions {
@@ -5375,6 +5466,14 @@ a.status-card.compact:hover {
background: transparent;
margin: 15px 0;
}
+
+ .emoji-mart-search {
+ padding-right: 10px;
+ }
+
+ .emoji-mart-search-icon {
+ right: 10px + 5px;
+ }
}
.report-modal__container {
@@ -5935,6 +6034,13 @@ a.status-card.compact:hover {
height: 100%;
}
+ &.inactive {
+ audio,
+ .video-player__controls {
+ visibility: hidden;
+ }
+ }
+
.video-player__volume::before,
.video-player__seek::before {
background: currentColor;
@@ -7239,6 +7345,13 @@ noscript {
padding-right: 15px;
margin-left: 5px;
color: $secondary-text-color;
+ text-decoration: none;
+
+ &__asterisk {
+ color: $darker-text-color;
+ font-size: 18px;
+ vertical-align: super;
+ }
}
&__sparkline {
@@ -7836,3 +7949,85 @@ noscript {
}
}
}
+
+.server-banner {
+ padding: 20px 0;
+
+ &__introduction {
+ color: $darker-text-color;
+ margin-bottom: 20px;
+
+ strong {
+ font-weight: 600;
+ }
+
+ a {
+ color: inherit;
+ text-decoration: underline;
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: none;
+ }
+ }
+ }
+
+ &__hero {
+ display: block;
+ border-radius: 4px;
+ width: 100%;
+ height: auto;
+ margin-bottom: 20px;
+ aspect-ratio: 1.9;
+ border: 0;
+ background: $ui-base-color;
+ object-fit: cover;
+ }
+
+ &__description {
+ margin-bottom: 20px;
+ }
+
+ &__meta {
+ display: flex;
+ gap: 10px;
+ max-width: 100%;
+
+ &__column {
+ flex: 0 0 auto;
+ width: calc(50% - 5px);
+ overflow: hidden;
+ }
+ }
+
+ &__number {
+ font-weight: 600;
+ color: $primary-text-color;
+ }
+
+ &__number-label {
+ color: $darker-text-color;
+ font-weight: 500;
+ }
+
+ h4 {
+ text-transform: uppercase;
+ color: $darker-text-color;
+ margin-bottom: 10px;
+ font-weight: 600;
+ }
+
+ .account {
+ padding: 0;
+ border: 0;
+ }
+
+ .account__avatar-wrapper {
+ margin-left: 0;
+ }
+
+ .spacer {
+ margin: 10px 0;
+ }
+}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index da699dd25e..9909038590 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -256,6 +256,10 @@ code {
}
}
+ .input.with_block_label.user_role_permissions_as_keys ul {
+ columns: unset;
+ }
+
.input.datetime .label_input select {
display: inline-block;
width: auto;
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index 431b8a73a4..39211910fb 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -190,6 +190,55 @@ a.table-action-link {
}
}
+ &__select-all {
+ background: $ui-base-color;
+ height: 47px;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid darken($ui-base-color, 8%);
+ border-top: 0;
+ color: $secondary-text-color;
+ display: none;
+
+ &.active {
+ display: flex;
+ }
+
+ .selected,
+ .not-selected {
+ display: none;
+
+ &.active {
+ display: block;
+ }
+ }
+
+ strong {
+ font-weight: 700;
+ }
+
+ span {
+ padding: 8px;
+ display: inline-block;
+ }
+
+ button {
+ background: transparent;
+ border: 0;
+ font: inherit;
+ color: $highlight-text-color;
+ border-radius: 4px;
+ font-weight: 700;
+ padding: 8px;
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 8%);
+ }
+ }
+ }
+
&__form {
padding: 16px;
border: 1px solid darken($ui-base-color, 8%);
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 7ff06ea390..f4c67cccd7 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -116,12 +116,12 @@ class ActivityPub::Activity
def dereference_object!
return unless @object.is_a?(String)
- dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_account: signed_fetch_account)
+ dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_actor: signed_fetch_actor)
@object = dereferencer.object unless dereferencer.object.nil?
end
- def signed_fetch_account
+ def signed_fetch_actor
return Account.find(@options[:delivered_to_account_id]) if @options[:delivered_to_account_id].present?
first_mentioned_local_account || first_local_follower
@@ -163,15 +163,15 @@ class ActivityPub::Activity
end
def followed_by_local_accounts?
- @account.passive_relationships.exists? || @options[:relayed_through_account]&.passive_relationships&.exists?
+ @account.passive_relationships.exists? || (@options[:relayed_through_actor].is_a?(Account) && @options[:relayed_through_actor].passive_relationships&.exists?)
end
def requested_through_relay?
- @options[:relayed_through_account] && Relay.find_by(inbox_url: @options[:relayed_through_account].inbox_url)&.enabled?
+ @options[:relayed_through_actor] && Relay.find_by(inbox_url: @options[:relayed_through_actor].inbox_url)&.enabled?
end
def reject_payload!
- Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_account] && "via #{@options[:relayed_through_account].uri}"}")
+ Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_actor] && "via #{@options[:relayed_through_actor].uri}"}")
nil
end
end
diff --git a/app/lib/activitypub/dereferencer.rb b/app/lib/activitypub/dereferencer.rb
index bea69608fe..4d7756d71d 100644
--- a/app/lib/activitypub/dereferencer.rb
+++ b/app/lib/activitypub/dereferencer.rb
@@ -3,10 +3,10 @@
class ActivityPub::Dereferencer
include JsonLdHelper
- def initialize(uri, permitted_origin: nil, signature_account: nil)
+ def initialize(uri, permitted_origin: nil, signature_actor: nil)
@uri = uri
@permitted_origin = permitted_origin
- @signature_account = signature_account
+ @signature_actor = signature_actor
end
def object
@@ -46,7 +46,7 @@ class ActivityPub::Dereferencer
req.add_headers('Accept' => 'application/activity+json, application/ld+json')
req.add_headers(headers) if headers
- req.on_behalf_of(@signature_account) if @signature_account
+ req.on_behalf_of(@signature_actor) if @signature_actor
req.perform do |res|
if res.code == 200
diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb
index e853a970e8..f90adaf6c5 100644
--- a/app/lib/activitypub/linked_data_signature.rb
+++ b/app/lib/activitypub/linked_data_signature.rb
@@ -9,7 +9,7 @@ class ActivityPub::LinkedDataSignature
@json = json.with_indifferent_access
end
- def verify_account!
+ def verify_actor!
return unless @json['signature'].is_a?(Hash)
type = @json['signature']['type']
@@ -18,7 +18,7 @@ class ActivityPub::LinkedDataSignature
return unless type == 'RsaSignature2017'
- creator = ActivityPub::TagManager.instance.uri_to_resource(creator_uri, Account)
+ creator = ActivityPub::TagManager.instance.uri_to_actor(creator_uri)
creator ||= ActivityPub::FetchRemoteKeyService.new.call(creator_uri, id: false)
return if creator.nil?
@@ -35,7 +35,7 @@ class ActivityPub::LinkedDataSignature
def sign!(creator, sign_with: nil)
options = {
'type' => 'RsaSignature2017',
- 'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join,
+ 'creator' => ActivityPub::TagManager.instance.key_uri_for(creator),
'created' => Time.now.utc.iso8601,
}
diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb
index f6b9741fa1..3d6b28ef58 100644
--- a/app/lib/activitypub/tag_manager.rb
+++ b/app/lib/activitypub/tag_manager.rb
@@ -44,6 +44,10 @@ class ActivityPub::TagManager
end
end
+ def key_uri_for(target)
+ [uri_for(target), '#main-key'].join
+ end
+
def uri_for_username(username)
account_url(username: username)
end
@@ -155,6 +159,10 @@ class ActivityPub::TagManager
path_params[param]
end
+ def uri_to_actor(uri)
+ uri_to_resource(uri, Account)
+ end
+
def uri_to_resource(uri, klass)
return if uri.nil?
diff --git a/app/lib/admin/system_check.rb b/app/lib/admin/system_check.rb
index 877a42ef63..f512635abb 100644
--- a/app/lib/admin/system_check.rb
+++ b/app/lib/admin/system_check.rb
@@ -8,11 +8,11 @@ class Admin::SystemCheck
Admin::SystemCheck::ElasticsearchCheck,
].freeze
- def self.perform
+ def self.perform(current_user)
ACTIVE_CHECKS.each_with_object([]) do |klass, arr|
- check = klass.new
+ check = klass.new(current_user)
- if check.pass?
+ if check.skip? || check.pass?
arr
else
arr << check.message
diff --git a/app/lib/admin/system_check/base_check.rb b/app/lib/admin/system_check/base_check.rb
index fcad8daca4..c2974c218e 100644
--- a/app/lib/admin/system_check/base_check.rb
+++ b/app/lib/admin/system_check/base_check.rb
@@ -1,6 +1,16 @@
# frozen_string_literal: true
class Admin::SystemCheck::BaseCheck
+ attr_reader :current_user
+
+ def initialize(current_user)
+ @current_user = current_user
+ end
+
+ def skip?
+ false
+ end
+
def pass?
raise NotImplementedError
end
diff --git a/app/lib/admin/system_check/database_schema_check.rb b/app/lib/admin/system_check/database_schema_check.rb
index b93d1954eb..c2f01fd55b 100644
--- a/app/lib/admin/system_check/database_schema_check.rb
+++ b/app/lib/admin/system_check/database_schema_check.rb
@@ -1,6 +1,10 @@
# frozen_string_literal: true
class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck
+ def skip?
+ !current_user.can?(:view_devops)
+ end
+
def pass?
!ActiveRecord::Base.connection.migration_context.needs_migration?
end
diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb
index 1b48a5415a..8aee182674 100644
--- a/app/lib/admin/system_check/elasticsearch_check.rb
+++ b/app/lib/admin/system_check/elasticsearch_check.rb
@@ -1,6 +1,10 @@
# frozen_string_literal: true
class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
+ def skip?
+ !current_user.can?(:view_devops)
+ end
+
def pass?
return true unless Chewy.enabled?
@@ -32,8 +36,4 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
def compatible_version?
Gem::Version.new(running_version) >= Gem::Version.new(required_version)
end
-
- def missing_queues
- @missing_queues ||= Sidekiq::ProcessSet.new.reduce(SIDEKIQ_QUEUES) { |queues, process| queues - process['queues'] }
- end
end
diff --git a/app/lib/admin/system_check/rules_check.rb b/app/lib/admin/system_check/rules_check.rb
index 1fbdf955dc..8206a5df39 100644
--- a/app/lib/admin/system_check/rules_check.rb
+++ b/app/lib/admin/system_check/rules_check.rb
@@ -3,6 +3,10 @@
class Admin::SystemCheck::RulesCheck < Admin::SystemCheck::BaseCheck
include RoutingHelper
+ def skip?
+ !current_user.can?(:manage_rules)
+ end
+
def pass?
Rule.kept.exists?
end
diff --git a/app/lib/admin/system_check/sidekiq_process_check.rb b/app/lib/admin/system_check/sidekiq_process_check.rb
index 22446edaf7..648811d6c1 100644
--- a/app/lib/admin/system_check/sidekiq_process_check.rb
+++ b/app/lib/admin/system_check/sidekiq_process_check.rb
@@ -9,6 +9,10 @@ class Admin::SystemCheck::SidekiqProcessCheck < Admin::SystemCheck::BaseCheck
scheduler
).freeze
+ def skip?
+ !current_user.can?(:view_devops)
+ end
+
def pass?
missing_queues.empty?
end
diff --git a/app/lib/ascii_folding.rb b/app/lib/ascii_folding.rb
new file mode 100644
index 0000000000..1798d3d0e6
--- /dev/null
+++ b/app/lib/ascii_folding.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class ASCIIFolding
+ NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž'
+ EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz'
+
+ def fold(str)
+ str.tr(NON_ASCII_CHARS, EQUIVALENT_ASCII_CHARS)
+ end
+end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 4633786ca8..0bc7e254e3 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -47,6 +47,8 @@ class FeedManager
filter_from_mentions?(status, receiver.id)
when :direct
filter_from_direct?(status, receiver.id)
+ when :tags
+ filter_from_tags?(status, receiver.id, build_crutches(receiver.id, [status]))
else
false
end
@@ -58,7 +60,7 @@ class FeedManager
# @param [Boolean] update
# @return [Boolean]
def push_to_home(account, status, update: false)
- return false unless add_to_feed(:home, account.id, status, account.user&.aggregates_reblogs?)
+ return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?)
trim(:home, account.id)
PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}")
@@ -71,7 +73,7 @@ class FeedManager
# @param [Boolean] update
# @return [Boolean]
def unpush_from_home(account, status, update: false)
- return false unless remove_from_feed(:home, account.id, status, account.user&.aggregates_reblogs?)
+ return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?)
redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update
true
@@ -83,7 +85,7 @@ class FeedManager
# @param [Boolean] update
# @return [Boolean]
def push_to_list(list, status, update: false)
- return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?)
+ return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?)
trim(:list, list.id)
PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}")
@@ -96,7 +98,7 @@ class FeedManager
# @param [Boolean] update
# @return [Boolean]
def unpush_from_list(list, status, update: false)
- return false unless remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?)
+ return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?)
redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update
true
@@ -145,7 +147,7 @@ class FeedManager
statuses.each do |status|
next if filter_from_home?(status, into_account.id, crutches)
- add_to_feed(:home, into_account.id, status, aggregate)
+ add_to_feed(:home, into_account.id, status, aggregate_reblogs: aggregate)
end
trim(:home, into_account.id)
@@ -171,7 +173,7 @@ class FeedManager
statuses.each do |status|
next if filter_from_home?(status, list.account_id, crutches) || filter_from_list?(status, list)
- add_to_feed(:list, list.id, status, aggregate)
+ add_to_feed(:list, list.id, status, aggregate_reblogs: aggregate)
end
trim(:list, list.id)
@@ -186,7 +188,7 @@ class FeedManager
timeline_status_ids = redis.zrange(timeline_key, 0, -1)
from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status|
- remove_from_feed(:home, into_account.id, status, into_account.user&.aggregates_reblogs?)
+ remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?)
end
end
@@ -199,7 +201,7 @@ class FeedManager
timeline_status_ids = redis.zrange(timeline_key, 0, -1)
from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status|
- remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?)
+ remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?)
end
end
@@ -262,7 +264,7 @@ class FeedManager
timeline_key = key(:home, account.id)
account.statuses.limit(limit).each do |status|
- add_to_feed(:home, account.id, status, aggregate)
+ add_to_feed(:home, account.id, status, aggregate_reblogs: aggregate)
end
account.following.includes(:account_stat).find_each do |target_account|
@@ -282,7 +284,7 @@ class FeedManager
statuses.each do |status|
next if filter_from_home?(status, account.id, crutches)
- add_to_feed(:home, account.id, status, aggregate)
+ add_to_feed(:home, account.id, status, aggregate_reblogs: aggregate)
end
trim(:home, account.id)
@@ -401,6 +403,7 @@ class FeedManager
def filter_from_home?(status, receiver_id, crutches)
return false if receiver_id == status.account_id
return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?)
+ return true if crutches[:languages][status.account_id].present? && status.language.present? && !crutches[:languages][status.account_id].include?(status.language)
check_for_blocks = crutches[:active_mentions][status.id] || []
check_for_blocks.concat([status.account_id])
@@ -474,6 +477,16 @@ class FeedManager
false
end
+ # Check if a status should not be added to the home feed when it comes
+ # from a followed hashtag
+ # @param [Status] status
+ # @param [Integer] receiver_id
+ # @param [Hash] crutches
+ # @return [Boolean]
+ def filter_from_tags?(status, receiver_id, crutches)
+ receiver_id != status.account_id && (((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain])
+ end
+
# Adds a status to an account's feed, returning true if a status was
# added, and false if it was not added to the feed. Note that this is
# an internal helper: callers must call trim or push updates if
@@ -483,7 +496,7 @@ class FeedManager
# @param [Status] status
# @param [Boolean] aggregate_reblogs
# @return [Boolean]
- def add_to_feed(timeline_type, account_id, status, aggregate_reblogs = true)
+ def add_to_feed(timeline_type, account_id, status, aggregate_reblogs: true)
timeline_key = key(timeline_type, account_id)
reblog_key = key(timeline_type, account_id, 'reblogs')
@@ -531,7 +544,7 @@ class FeedManager
# @param [Status] status
# @param [Boolean] aggregate_reblogs
# @return [Boolean]
- def remove_from_feed(timeline_type, account_id, status, aggregate_reblogs = true)
+ def remove_from_feed(timeline_type, account_id, status, aggregate_reblogs: true)
timeline_key = key(timeline_type, account_id)
reblog_key = key(timeline_type, account_id, 'reblogs')
@@ -588,6 +601,7 @@ class FeedManager
end
crutches[:following] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:in_reply_to_account_id).compact).pluck(:target_account_id).index_with(true)
+ crutches[:languages] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:account_id)).pluck(:target_account_id, :languages).to_h
crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).index_with(true)
crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true)
crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true)
diff --git a/app/lib/hashtag_normalizer.rb b/app/lib/hashtag_normalizer.rb
new file mode 100644
index 0000000000..c1f99e1638
--- /dev/null
+++ b/app/lib/hashtag_normalizer.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class HashtagNormalizer
+ def normalize(str)
+ remove_invalid_characters(ascii_folding(lowercase(cjk_width(str))))
+ end
+
+ private
+
+ def remove_invalid_characters(str)
+ str.gsub(/[^[:alnum:]#{Tag::HASHTAG_SEPARATORS}]/, '')
+ end
+
+ def ascii_folding(str)
+ ASCIIFolding.new.fold(str)
+ end
+
+ def lowercase(str)
+ str.mb_chars.downcase.to_s
+ end
+
+ def cjk_width(str)
+ str.unicode_normalize(:nfkc)
+ end
+end
diff --git a/app/lib/importer/statuses_index_importer.rb b/app/lib/importer/statuses_index_importer.rb
index 7c65325600..5b5153d5c8 100644
--- a/app/lib/importer/statuses_index_importer.rb
+++ b/app/lib/importer/statuses_index_importer.rb
@@ -84,6 +84,6 @@ class Importer::StatusesIndexImporter < Importer::BaseImporter
end
def local_statuses_scope
- Status.local.select('id, coalesce(reblog_of_id, id) as status_id')
+ Status.local.select('"statuses"."id", COALESCE("statuses"."reblog_of_id", "statuses"."id") AS status_id')
end
end
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
index e48bce0609..6d15f39638 100644
--- a/app/lib/permalink_redirector.rb
+++ b/app/lib/permalink_redirector.rb
@@ -17,10 +17,6 @@ class PermalinkRedirector
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
diff --git a/app/lib/redis_configuration.rb b/app/lib/redis_configuration.rb
index e14d6c8b67..f0e86d985b 100644
--- a/app/lib/redis_configuration.rb
+++ b/app/lib/redis_configuration.rb
@@ -7,9 +7,7 @@ class RedisConfiguration
@pool = ConnectionPool.new(size: new_pool_size) { new.connection }
end
- def with
- pool.with { |redis| yield redis }
- end
+ delegate :with, to: :pool
def pool
@pool ||= establish_pool(pool_size)
@@ -17,7 +15,7 @@ class RedisConfiguration
def pool_size
if Sidekiq.server?
- Sidekiq.options[:concurrency]
+ Sidekiq[:concurrency]
else
ENV['MAX_THREADS'] || 5
end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 4289da9333..648aa30850 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -31,7 +31,7 @@ class Request
@url = Addressable::URI.parse(url).normalize
@http_client = options.delete(:http_client)
@options = options.merge(socket_class: use_proxy? ? ProxySocket : Socket)
- @options = @options.merge(Rails.configuration.x.http_client_proxy) if use_proxy?
+ @options = @options.merge(proxy_url) if use_proxy?
@headers = {}
raise Mastodon::HostValidationError, 'Instance does not support hidden service connections' if block_hidden_service?
@@ -40,12 +40,11 @@ class Request
set_digest! if options.key?(:body)
end
- def on_behalf_of(account, key_id_format = :uri, sign_with: nil)
- raise ArgumentError, 'account must not be nil' if account.nil?
+ def on_behalf_of(actor, sign_with: nil)
+ raise ArgumentError, 'actor must not be nil' if actor.nil?
- @account = account
- @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @account.keypair
- @key_id_format = key_id_format
+ @actor = actor
+ @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @actor.keypair
self
end
@@ -79,7 +78,7 @@ class Request
end
def headers
- (@account ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET)
+ (@actor ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET)
end
class << self
@@ -128,12 +127,7 @@ class Request
end
def key_id
- case @key_id_format
- when :acct
- @account.to_webfinger_s
- when :uri
- [ActivityPub::TagManager.instance.uri_for(@account), '#main-key'].join
- end
+ ActivityPub::TagManager.instance.key_uri_for(@actor)
end
def http_client
@@ -141,11 +135,23 @@ class Request
end
def use_proxy?
- Rails.configuration.x.http_client_proxy.present?
+ proxy_url.present?
+ end
+
+ def proxy_url
+ if hidden_service? && Rails.configuration.x.http_client_hidden_proxy.present?
+ Rails.configuration.x.http_client_hidden_proxy
+ else
+ Rails.configuration.x.http_client_proxy
+ end
end
def block_hidden_service?
- !Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match?(@url.host)
+ !Rails.configuration.x.access_to_hidden_service && hidden_service?
+ end
+
+ def hidden_service?
+ /\.(onion|i2p)$/.match?(@url.host)
end
module ClientLimit
@@ -196,7 +202,7 @@ class Request
addresses.each do |address|
begin
- check_private_address(address)
+ check_private_address(address, host)
sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0)
sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s)
@@ -252,10 +258,10 @@ class Request
alias new open
- def check_private_address(address)
+ def check_private_address(address, host)
addr = IPAddr.new(address.to_s)
return if private_address_exceptions.any? { |range| range.include?(addr) }
- raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(addr)
+ raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
end
def private_address_exceptions
diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb
new file mode 100644
index 0000000000..526e26ae59
--- /dev/null
+++ b/app/lib/translation_service.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class TranslationService
+ class Error < StandardError; end
+ class NotConfiguredError < Error; end
+ class TooManyRequestsError < Error; end
+ class QuotaExceededError < Error; end
+ class UnexpectedResponseError < Error; end
+
+ def self.configured
+ if ENV['DEEPL_API_KEY'].present?
+ TranslationService::DeepL.new(ENV.fetch('DEEPL_PLAN', 'free'), ENV['DEEPL_API_KEY'])
+ elsif ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
+ TranslationService::LibreTranslate.new(ENV['LIBRE_TRANSLATE_ENDPOINT'], ENV['LIBRE_TRANSLATE_API_KEY'])
+ else
+ raise NotConfiguredError
+ end
+ end
+
+ def translate(_text, _source_language, _target_language)
+ raise NotImplementedError
+ end
+end
diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb
new file mode 100644
index 0000000000..b75b604a81
--- /dev/null
+++ b/app/lib/translation_service/deepl.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+class TranslationService::DeepL < TranslationService
+ include JsonLdHelper
+
+ def initialize(plan, api_key)
+ super()
+
+ @plan = plan
+ @api_key = api_key
+ end
+
+ def translate(text, source_language, target_language)
+ request(text, source_language, target_language).perform do |res|
+ case res.code
+ when 429
+ raise TooManyRequestsError
+ when 456
+ raise QuotaExceededError
+ when 200...300
+ transform_response(res.body_with_limit)
+ else
+ raise UnexpectedResponseError
+ end
+ end
+ end
+
+ private
+
+ def request(text, source_language, target_language)
+ req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' })
+ req.add_headers('Authorization': "DeepL-Auth-Key #{@api_key}")
+ req
+ end
+
+ def endpoint_url
+ if @plan == 'free'
+ 'https://api-free.deepl.com/v2/translate'
+ else
+ 'https://api.deepl.com/v2/translate'
+ end
+ end
+
+ def transform_response(str)
+ json = Oj.load(str, mode: :strict)
+
+ raise UnexpectedResponseError unless json.is_a?(Hash)
+
+ Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase)
+ rescue Oj::ParseError
+ raise UnexpectedResponseError
+ end
+end
diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb
new file mode 100644
index 0000000000..8cf26f8684
--- /dev/null
+++ b/app/lib/translation_service/libre_translate.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+class TranslationService::LibreTranslate < TranslationService
+ def initialize(base_url, api_key)
+ super()
+
+ @base_url = base_url
+ @api_key = api_key
+ end
+
+ def translate(text, source_language, target_language)
+ request(text, source_language, target_language).perform do |res|
+ case res.code
+ when 429
+ raise TooManyRequestsError
+ when 403
+ raise QuotaExceededError
+ when 200...300
+ transform_response(res.body_with_limit, source_language)
+ else
+ raise UnexpectedResponseError
+ end
+ end
+ end
+
+ private
+
+ def request(text, source_language, target_language)
+ body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key)
+ req = Request.new(:post, "#{@base_url}/translate", body: body)
+ req.add_headers('Content-Type': 'application/json')
+ req
+ end
+
+ def transform_response(str, source_language)
+ json = Oj.load(str, mode: :strict)
+
+ raise UnexpectedResponseError unless json.is_a?(Hash)
+
+ Translation.new(text: json['translatedText'], detected_source_language: source_language)
+ rescue Oj::ParseError
+ raise UnexpectedResponseError
+ end
+end
diff --git a/app/lib/translation_service/translation.rb b/app/lib/translation_service/translation.rb
new file mode 100644
index 0000000000..a55b825749
--- /dev/null
+++ b/app/lib/translation_service/translation.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+class TranslationService::Translation < ActiveModelSerializers::Model
+ attributes :text, :detected_source_language
+end
diff --git a/app/lib/vacuum.rb b/app/lib/vacuum.rb
new file mode 100644
index 0000000000..9db1ec90be
--- /dev/null
+++ b/app/lib/vacuum.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+module Vacuum; end
diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/lib/vacuum/access_tokens_vacuum.rb
similarity index 56%
rename from app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
rename to app/lib/vacuum/access_tokens_vacuum.rb
index 9303a352fb..4f3878027a 100644
--- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
+++ b/app/lib/vacuum/access_tokens_vacuum.rb
@@ -1,13 +1,18 @@
# frozen_string_literal: true
-class Scheduler::DoorkeeperCleanupScheduler
- include Sidekiq::Worker
+class Vacuum::AccessTokensVacuum
+ def perform
+ vacuum_revoked_access_tokens!
+ vacuum_revoked_access_grants!
+ end
- sidekiq_options retry: 0
+ private
- def perform
+ def vacuum_revoked_access_tokens!
Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
+ end
+
+ def vacuum_revoked_access_grants!
Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
- SystemKey.expired.delete_all
end
end
diff --git a/app/lib/vacuum/backups_vacuum.rb b/app/lib/vacuum/backups_vacuum.rb
new file mode 100644
index 0000000000..3b83072f36
--- /dev/null
+++ b/app/lib/vacuum/backups_vacuum.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class Vacuum::BackupsVacuum
+ def initialize(retention_period)
+ @retention_period = retention_period
+ end
+
+ def perform
+ vacuum_expired_backups! if retention_period?
+ end
+
+ private
+
+ def vacuum_expired_backups!
+ backups_past_retention_period.in_batches.destroy_all
+ end
+
+ def backups_past_retention_period
+ Backup.unscoped.where(Backup.arel_table[:created_at].lt(@retention_period.ago))
+ end
+
+ def retention_period?
+ @retention_period.present?
+ end
+end
diff --git a/app/lib/vacuum/feeds_vacuum.rb b/app/lib/vacuum/feeds_vacuum.rb
new file mode 100644
index 0000000000..00b9fd6461
--- /dev/null
+++ b/app/lib/vacuum/feeds_vacuum.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+class Vacuum::FeedsVacuum
+ def perform
+ vacuum_inactive_home_feeds!
+ vacuum_inactive_list_feeds!
+ vacuum_inactive_direct_feeds!
+ end
+
+ private
+
+ def vacuum_inactive_home_feeds!
+ inactive_users.select(:id, :account_id).find_in_batches do |users|
+ feed_manager.clean_feeds!(:home, users.map(&:account_id))
+ end
+ end
+
+ def vacuum_inactive_list_feeds!
+ inactive_users_lists.select(:id).find_in_batches do |lists|
+ feed_manager.clean_feeds!(:list, lists.map(&:id))
+ end
+ end
+
+ def vacuum_inactive_direct_feeds!
+ inactive_users_lists.select(:id).find_in_batches do |lists|
+ feed_manager.clean_feeds!(:direct, lists.map(&:id))
+ end
+ end
+
+ def inactive_users
+ User.confirmed.inactive
+ end
+
+ def inactive_users_lists
+ List.where(account_id: inactive_users.select(:account_id))
+ end
+
+ def feed_manager
+ FeedManager.instance
+ end
+end
diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb
new file mode 100644
index 0000000000..7fb347ce4d
--- /dev/null
+++ b/app/lib/vacuum/media_attachments_vacuum.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+class Vacuum::MediaAttachmentsVacuum
+ TTL = 1.day.freeze
+
+ def initialize(retention_period)
+ @retention_period = retention_period
+ end
+
+ def perform
+ vacuum_cached_files! if retention_period?
+ vacuum_orphaned_records!
+ end
+
+ private
+
+ def vacuum_cached_files!
+ media_attachments_past_retention_period.find_each do |media_attachment|
+ media_attachment.file.destroy
+ media_attachment.thumbnail.destroy
+ media_attachment.save
+ end
+ end
+
+ def vacuum_orphaned_records!
+ orphaned_media_attachments.in_batches.destroy_all
+ end
+
+ def media_attachments_past_retention_period
+ MediaAttachment.unscoped.remote.cached.where(MediaAttachment.arel_table[:created_at].lt(@retention_period.ago)).where(MediaAttachment.arel_table[:updated_at].lt(@retention_period.ago))
+ end
+
+ def orphaned_media_attachments
+ MediaAttachment.unscoped.unattached.where(MediaAttachment.arel_table[:created_at].lt(TTL.ago))
+ end
+
+ def retention_period?
+ @retention_period.present?
+ end
+end
diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb
new file mode 100644
index 0000000000..84ef100ed9
--- /dev/null
+++ b/app/lib/vacuum/preview_cards_vacuum.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class Vacuum::PreviewCardsVacuum
+ TTL = 1.day.freeze
+
+ def initialize(retention_period)
+ @retention_period = retention_period
+ end
+
+ def perform
+ vacuum_cached_images! if retention_period?
+ vacuum_orphaned_records!
+ end
+
+ private
+
+ def vacuum_cached_images!
+ preview_cards_past_retention_period.find_each do |preview_card|
+ preview_card.image.destroy
+ preview_card.save
+ end
+ end
+
+ def vacuum_orphaned_records!
+ orphaned_preview_cards.in_batches.destroy_all
+ end
+
+ def preview_cards_past_retention_period
+ PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago))
+ end
+
+ def orphaned_preview_cards
+ PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago))
+ end
+
+ def retention_period?
+ @retention_period.present?
+ end
+end
diff --git a/app/lib/vacuum/statuses_vacuum.rb b/app/lib/vacuum/statuses_vacuum.rb
new file mode 100644
index 0000000000..41d6ba270c
--- /dev/null
+++ b/app/lib/vacuum/statuses_vacuum.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+class Vacuum::StatusesVacuum
+ include Redisable
+
+ def initialize(retention_period)
+ @retention_period = retention_period
+ end
+
+ def perform
+ vacuum_statuses! if retention_period?
+ end
+
+ private
+
+ def vacuum_statuses!
+ statuses_scope.find_in_batches do |statuses|
+ # Side-effects not covered by foreign keys, such
+ # as the search index, must be handled first.
+
+ remove_from_account_conversations(statuses)
+ remove_from_search_index(statuses)
+
+ # Foreign keys take care of most associated records
+ # for us. Media attachments will be orphaned.
+
+ Status.where(id: statuses.map(&:id)).delete_all
+ end
+ end
+
+ def statuses_scope
+ Status.unscoped.kept.where(account: Account.remote).where(Status.arel_table[:id].lt(retention_period_as_id)).select(:id, :visibility)
+ end
+
+ def retention_period_as_id
+ Mastodon::Snowflake.id_at(@retention_period.ago, with_random: false)
+ end
+
+ def analyze_statuses!
+ ActiveRecord::Base.connection.execute('ANALYZE statuses')
+ end
+
+ def remove_from_account_conversations(statuses)
+ Status.where(id: statuses.select(&:direct_visibility?).map(&:id)).includes(:account, mentions: :account).each(&:unlink_from_conversations)
+ end
+
+ def remove_from_search_index(statuses)
+ with_redis { |redis| redis.sadd('chewy:queue:StatusesIndex', statuses.map(&:id)) } if Chewy.enabled?
+ end
+
+ def retention_period?
+ @retention_period.present?
+ end
+end
diff --git a/app/lib/vacuum/system_keys_vacuum.rb b/app/lib/vacuum/system_keys_vacuum.rb
new file mode 100644
index 0000000000..ceee2fd164
--- /dev/null
+++ b/app/lib/vacuum/system_keys_vacuum.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class Vacuum::SystemKeysVacuum
+ def perform
+ vacuum_expired_system_keys!
+ end
+
+ private
+
+ def vacuum_expired_system_keys!
+ SystemKey.expired.delete_all
+ end
+end
diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb
index a681e0815f..7c0c10c338 100644
--- a/app/lib/webfinger.rb
+++ b/app/lib/webfinger.rb
@@ -3,7 +3,7 @@
class Webfinger
class Error < StandardError; end
class GoneError < Error; end
- class RedirectError < StandardError; end
+ class RedirectError < Error; end
class Response
attr_reader :uri
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 9e683b6a16..ab73826ab3 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -66,24 +66,6 @@ class NotificationMailer < ApplicationMailer
end
end
- def digest(recipient, **opts)
- return unless recipient.user.functional?
-
- @me = recipient
- @since = opts[:since] || [@me.user.last_emailed_at, (@me.user.current_sign_in_at + 1.day)].compact.max
- @notifications_count = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).count
-
- return if @notifications_count.zero?
-
- @notifications = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).limit(40)
- @follows_since = Notification.where(account: @me, activity_type: 'Follow').where('created_at > ?', @since).count
-
- locale_for_account(@me) do
- mail to: @me.user.email,
- subject: I18n.t(:subject, scope: [:notification_mailer, :digest], count: @notifications_count)
- end
- end
-
private
def thread_by_conversation(conversation)
diff --git a/app/models/account.rb b/app/models/account.rb
index 688e6fabd9..f75750838c 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -120,7 +120,7 @@ class Account < ApplicationRecord
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') }
- scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) }
+ scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches("%.#{domain}"))) }
scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) }
scope :not_domain_blocked_by_account, ->(account) { where(arel_table[:domain].eq(nil).or(arel_table[:domain].not_in(account.excluded_from_timeline_domains))) }
@@ -136,9 +136,6 @@ class Account < ApplicationRecord
:unconfirmed?,
:unconfirmed_or_pending?,
:role,
- :admin?,
- :moderator?,
- :staff?,
:locale,
:shows_application?,
to: :user,
@@ -367,6 +364,10 @@ class Account < ApplicationRecord
username
end
+ def to_log_human_identifier
+ acct
+ end
+
def excluded_from_timeline_account_ids
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
@@ -456,7 +457,7 @@ class Account < ApplicationRecord
DeliveryFailureTracker.without_unavailable(urls)
end
- def search_for(terms, limit = 10, offset = 0)
+ def search_for(terms, limit: 10, offset: 0)
tsquery = generate_query_for_search(terms)
sql = <<-SQL.squish
@@ -478,7 +479,7 @@ class Account < ApplicationRecord
records
end
- def advanced_search_for(terms, account, limit = 10, following = false, offset = 0)
+ def advanced_search_for(terms, account, limit: 10, following: false, offset: 0)
tsquery = generate_query_for_search(terms)
sql = advanced_search_for_sql_template(following)
records = find_by_sql([sql, id: account.id, limit: limit, offset: offset, tsquery: tsquery])
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index ec309ce093..e214e0bad2 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -4,7 +4,7 @@ class AccountFilter
KEYS = %i(
origin
status
- permissions
+ role_ids
username
by_domain
display_name
@@ -26,7 +26,7 @@ class AccountFilter
params.each do |key, value|
next if key.to_s == 'page'
- scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
+ scope.merge!(scope_for(key, value)) if value.present?
end
scope
@@ -38,18 +38,18 @@ class AccountFilter
case key.to_s
when 'origin'
origin_scope(value)
- when 'permissions'
- permissions_scope(value)
+ when 'role_ids'
+ role_scope(value)
when 'status'
status_scope(value)
when 'by_domain'
- Account.where(domain: value)
+ Account.where(domain: value.to_s)
when 'username'
- Account.matches_username(value)
+ Account.matches_username(value.to_s)
when 'display_name'
- Account.matches_display_name(value)
+ Account.matches_display_name(value.to_s)
when 'email'
- accounts_with_users.merge(User.matches_email(value))
+ accounts_with_users.merge(User.matches_email(value.to_s))
when 'ip'
valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value).group('users.id, accounts.id')) : Account.none
when 'invited_by'
@@ -104,13 +104,8 @@ class AccountFilter
Account.left_joins(user: :invite).merge(Invite.where(user_id: value.to_s))
end
- def permissions_scope(value)
- case value.to_s
- when 'staff'
- accounts_with_users.merge(User.staff)
- else
- raise "Unknown permissions: #{value}"
- end
+ def role_scope(value)
+ accounts_with_users.merge(User.where(role_id: Array(value).map(&:to_s)))
end
def accounts_with_users
@@ -118,7 +113,7 @@ class AccountFilter
end
def valid_ip?(value)
- IPAddr.new(value) && true
+ IPAddr.new(value.to_s) && true
rescue IPAddr::InvalidAddressError
false
end
diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb
index 6067b54b78..961a078b99 100644
--- a/app/models/account_warning.rb
+++ b/app/models/account_warning.rb
@@ -43,4 +43,8 @@ class AccountWarning < ApplicationRecord
def overruled?
overruled_at.present?
end
+
+ def to_log_human_identifier
+ target_account.acct
+ end
end
diff --git a/app/models/admin/action_log.rb b/app/models/admin/action_log.rb
index 401bfd9acc..4fa8008f5c 100644
--- a/app/models/admin/action_log.rb
+++ b/app/models/admin/action_log.rb
@@ -9,38 +9,42 @@
# action :string default(""), not null
# target_type :string
# target_id :bigint(8)
-# recorded_changes :text default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
+# human_identifier :string
+# route_param :string
+# permalink :string
#
class Admin::ActionLog < ApplicationRecord
- serialize :recorded_changes
+ self.ignored_columns = %w(
+ recorded_changes
+ )
belongs_to :account
belongs_to :target, polymorphic: true, optional: true
default_scope -> { order('id desc') }
+ before_validation :set_human_identifier
+ before_validation :set_route_param
+ before_validation :set_permalink
+
def action
super.to_sym
end
- before_validation :set_changes
-
private
- def set_changes
- case action
- when :destroy, :create
- self.recorded_changes = target.attributes
- when :update, :promote, :demote
- self.recorded_changes = target.previous_changes
- when :change_email
- self.recorded_changes = ActiveSupport::HashWithIndifferentAccess.new(
- email: [target.email, nil],
- unconfirmed_email: [nil, target.unconfirmed_email]
- )
- end
+ def set_human_identifier
+ self.human_identifier = target.to_log_human_identifier if target.respond_to?(:to_log_human_identifier)
+ end
+
+ def set_route_param
+ self.route_param = target.to_log_route_param if target.respond_to?(:to_log_route_param)
+ end
+
+ def set_permalink
+ self.permalink = target.to_log_permalink if target.respond_to?(:to_log_permalink)
end
end
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
index 0f2f712a25..c7a7e1a4c3 100644
--- a/app/models/admin/action_log_filter.rb
+++ b/app/models/admin/action_log_filter.rb
@@ -12,6 +12,7 @@ class Admin::ActionLogFilter
reject_appeal: { target_type: 'Appeal', action: 'reject' }.freeze,
assigned_to_self_report: { target_type: 'Report', action: 'assigned_to_self' }.freeze,
change_email_user: { target_type: 'User', action: 'change_email' }.freeze,
+ change_role_user: { target_type: 'User', action: 'change_role' }.freeze,
confirm_user: { target_type: 'User', action: 'confirm' }.freeze,
approve_user: { target_type: 'User', action: 'approve' }.freeze,
reject_user: { target_type: 'User', action: 'reject' }.freeze,
@@ -21,16 +22,22 @@ 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_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze,
create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze,
+ create_user_role: { target_type: 'UserRole', action: 'create' }.freeze,
+ create_canonical_email_block: { target_type: 'CanonicalEmailBlock', 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_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze,
destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze,
destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze,
destroy_status: { target_type: 'Status', action: 'destroy' }.freeze,
+ destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze,
+ destroy_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'destroy' }.freeze,
disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze,
disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
disable_user: { target_type: 'User', action: 'disable' }.freeze,
@@ -52,6 +59,8 @@ class Admin::ActionLogFilter
update_announcement: { target_type: 'Announcement', action: 'update' }.freeze,
update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze,
update_status: { target_type: 'Status', action: 'update' }.freeze,
+ update_user_role: { target_type: 'UserRole', action: 'update' }.freeze,
+ update_ip_block: { target_type: 'IpBlock', action: 'update' }.freeze,
unblock_email_account: { target_type: 'Account', action: 'unblock_email' }.freeze,
}.freeze
diff --git a/app/models/announcement.rb b/app/models/announcement.rb
index f8183aabce..bedced9ded 100644
--- a/app/models/announcement.rb
+++ b/app/models/announcement.rb
@@ -34,6 +34,10 @@ class Announcement < ApplicationRecord
before_validation :set_all_day
before_validation :set_published, on: :create
+ def to_log_human_identifier
+ text
+ end
+
def publish!
update!(published: true, published_at: Time.now.utc, scheduled_at: nil)
end
diff --git a/app/models/appeal.rb b/app/models/appeal.rb
index 1f32cfa8b2..6fbf60b39e 100644
--- a/app/models/appeal.rb
+++ b/app/models/appeal.rb
@@ -52,6 +52,14 @@ class Appeal < ApplicationRecord
update!(rejected_at: Time.now.utc, rejected_by_account: current_account)
end
+ def to_log_human_identifier
+ account.acct
+ end
+
+ def to_log_route_param
+ account_warning_id
+ end
+
private
def validate_time_frame
diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb
index 94781386c9..1eb69ac67a 100644
--- a/app/models/canonical_email_block.rb
+++ b/app/models/canonical_email_block.rb
@@ -5,27 +5,30 @@
#
# id :bigint(8) not null, primary key
# canonical_email_hash :string default(""), not null
-# reference_account_id :bigint(8) not null
+# reference_account_id :bigint(8)
# created_at :datetime not null
# updated_at :datetime not null
#
class CanonicalEmailBlock < ApplicationRecord
include EmailHelper
+ include Paginable
- belongs_to :reference_account, class_name: 'Account'
+ belongs_to :reference_account, class_name: 'Account', optional: true
validates :canonical_email_hash, presence: true, uniqueness: true
+ scope :matching_email, ->(email) { where(canonical_email_hash: email_to_canonical_email_hash(email)) }
+
+ def to_log_human_identifier
+ canonical_email_hash
+ end
+
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
-
- def self.find_blocks(email)
- where(canonical_email_hash: email_to_canonical_email_hash(email))
+ matching_email(email).exists?
end
end
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index a7401362f4..15c49f2fec 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -9,6 +9,7 @@ module AccountInteractions
mapping[follow.target_account_id] = {
reblogs: follow.show_reblogs?,
notify: follow.notify?,
+ languages: follow.languages,
}
end
end
@@ -38,6 +39,7 @@ module AccountInteractions
mapping[follow_request.target_account_id] = {
reblogs: follow_request.show_reblogs?,
notify: follow_request.notify?,
+ languages: follow_request.languages,
}
end
end
@@ -100,12 +102,13 @@ module AccountInteractions
has_many :announcement_mutes, dependent: :destroy
end
- def follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false)
- rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
+ def follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false)
+ rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, languages: languages, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
.find_or_create_by!(target_account: other_account)
- rel.show_reblogs = reblogs unless reblogs.nil?
- rel.notify = notify unless notify.nil?
+ rel.show_reblogs = reblogs unless reblogs.nil?
+ rel.notify = notify unless notify.nil?
+ rel.languages = languages unless languages.nil?
rel.save! if rel.changed?
@@ -114,12 +117,13 @@ module AccountInteractions
rel
end
- def request_follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false)
- rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
+ def request_follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false)
+ rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, languages: languages, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
.find_or_create_by!(target_account: other_account)
- rel.show_reblogs = reblogs unless reblogs.nil?
- rel.notify = notify unless notify.nil?
+ rel.show_reblogs = reblogs unless reblogs.nil?
+ rel.notify = notify unless notify.nil?
+ rel.languages = languages unless languages.nil?
rel.save! if rel.changed?
@@ -249,15 +253,7 @@ module AccountInteractions
def status_matches_filters(status)
active_filters = CustomFilter.cached_filters_for(id)
-
- filter_matches = active_filters.filter_map do |filter, rules|
- next if rules[:keywords].blank?
-
- match = rules[:keywords].match(status.proper.searchable_text)
- FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil?
- end
-
- filter_matches
+ CustomFilter.apply_cached_filters(active_filters, status)
end
def followers_for_local_distribution
@@ -296,8 +292,7 @@ module AccountInteractions
private
- def remove_potential_friendship(other_account, mutual = false)
+ def remove_potential_friendship(other_account)
PotentialFriendshipTracker.remove(id, other_account.id)
- PotentialFriendshipTracker.remove(other_account.id, id) if mutual
end
end
diff --git a/app/models/concerns/user_roles.rb b/app/models/concerns/user_roles.rb
deleted file mode 100644
index a42b4a1726..0000000000
--- a/app/models/concerns/user_roles.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-# frozen_string_literal: true
-
-module UserRoles
- extend ActiveSupport::Concern
-
- included do
- scope :admins, -> { where(admin: true) }
- scope :moderators, -> { where(moderator: true) }
- scope :staff, -> { admins.or(moderators) }
- end
-
- def staff?
- admin? || moderator?
- end
-
- def role=(value)
- case value
- when 'admin'
- self.admin = true
- self.moderator = false
- when 'moderator'
- self.admin = false
- self.moderator = true
- else
- self.admin = false
- self.moderator = false
- end
- end
-
- def role
- if admin?
- 'admin'
- elsif moderator?
- 'moderator'
- else
- 'user'
- end
- end
-
- def role?(role)
- case role
- when 'user'
- true
- when 'moderator'
- staff?
- when 'admin'
- admin?
- else
- false
- end
- end
-
- def promote!
- if moderator?
- update!(moderator: false, admin: true)
- elsif !admin?
- update!(moderator: true)
- end
- end
-
- def demote!
- if admin?
- update!(admin: false, moderator: true)
- elsif moderator?
- update!(moderator: false)
- end
- end
-end
diff --git a/app/models/content_retention_policy.rb b/app/models/content_retention_policy.rb
new file mode 100644
index 0000000000..b5e922c8c5
--- /dev/null
+++ b/app/models/content_retention_policy.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class ContentRetentionPolicy
+ def self.current
+ new
+ end
+
+ def media_cache_retention_period
+ retention_period Setting.media_cache_retention_period
+ end
+
+ def content_cache_retention_period
+ retention_period Setting.content_cache_retention_period
+ end
+
+ def backups_retention_period
+ retention_period Setting.backups_retention_period
+ end
+
+ private
+
+ def retention_period(value)
+ value.days if value.is_a?(Integer) && value.positive?
+ end
+end
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index 196ae02974..9bf9860dbe 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -23,8 +23,8 @@
class CustomEmoji < ApplicationRecord
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
+ LOCAL_LIMIT = (ENV['MAX_EMOJI_SIZE'] || 256.kilobytes).to_i
+ LIMIT = [LOCAL_LIMIT, (ENV['MAX_REMOTE_EMOJI_SIZE'] || 256.kilobytes).to_i].max
SHORTCODE_RE_FRAGMENT = '[a-zA-Z0-9_]{2,}'
@@ -49,7 +49,7 @@ class CustomEmoji < ApplicationRecord
scope :local, -> { where(domain: nil) }
scope :remote, -> { where.not(domain: nil) }
scope :alphabetic, -> { order(domain: :asc, shortcode: :asc) }
- scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) }
+ scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches("%.#{domain}"))) }
scope :listed, -> { local.where(disabled: false).where(visible_in_picker: true) }
remotable_attachment :image, LIMIT
@@ -70,6 +70,10 @@ class CustomEmoji < ApplicationRecord
copy.tap(&:save!)
end
+ def to_log_human_identifier
+ shortcode
+ end
+
class << self
def from_text(text, domain = nil)
return [] if text.blank?
diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb
index e98ed7df9f..da2a914934 100644
--- a/app/models/custom_filter.rb
+++ b/app/models/custom_filter.rb
@@ -3,14 +3,14 @@
#
# Table name: custom_filters
#
-# id :bigint not null, primary key
-# account_id :bigint
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
# expires_at :datetime
# phrase :text default(""), not null
# context :string default([]), not null, is an Array
# created_at :datetime not null
# updated_at :datetime not null
-# action :integer default(0), not null
+# action :integer default("warn"), not null
#
class CustomFilter < ApplicationRecord
@@ -34,6 +34,7 @@ class CustomFilter < ApplicationRecord
belongs_to :account
has_many :keywords, class_name: 'CustomFilterKeyword', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy
+ has_many :statuses, class_name: 'CustomFilterStatus', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy
accepts_nested_attributes_for :keywords, reject_if: :all_blank, allow_destroy: true
validates :title, :context, presence: true
@@ -62,8 +63,10 @@ class CustomFilter < ApplicationRecord
def self.cached_filters_for(account_id)
active_filters = Rails.cache.fetch("filters:v3:#{account_id}") do
+ filters_hash = {}
+
scope = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()'))
- scope.to_a.group_by(&:custom_filter).map do |filter, keywords|
+ scope.to_a.group_by(&:custom_filter).each do |filter, keywords|
keywords.map! do |keyword|
if keyword.whole_word
sb = /\A[[:word:]]/.match?(keyword.keyword) ? '\b' : ''
@@ -74,13 +77,34 @@ class CustomFilter < ApplicationRecord
/#{Regexp.escape(keyword.keyword)}/i
end
end
- [filter, { keywords: Regexp.union(keywords) }]
+
+ filters_hash[filter.id] = { keywords: Regexp.union(keywords), filter: filter }
+ end.to_h
+
+ scope = CustomFilterStatus.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()'))
+ scope.to_a.group_by(&:custom_filter).each do |filter, statuses|
+ filters_hash[filter.id] ||= { filter: filter }
+ filters_hash[filter.id].merge!(status_ids: statuses.map(&:status_id))
end
+
+ filters_hash.values.map { |cache| [cache.delete(:filter), cache] }
end.to_a
active_filters.select { |custom_filter, _| !custom_filter.expired? }
end
+ def self.apply_cached_filters(cached_filters, status)
+ cached_filters.filter_map do |filter, rules|
+ match = rules[:keywords].match(status.proper.searchable_text) if rules[:keywords].present?
+ keyword_matches = [match.to_s] unless match.nil?
+
+ status_matches = [status.id, status.reblog_of_id].compact & rules[:status_ids] if rules[:status_ids].present?
+
+ next if keyword_matches.blank? && status_matches.blank?
+ FilterResultPresenter.new(filter: filter, keyword_matches: keyword_matches, status_matches: status_matches)
+ end
+ end
+
def prepare_cache_invalidation!
@should_invalidate_cache = true
end
diff --git a/app/models/custom_filter_keyword.rb b/app/models/custom_filter_keyword.rb
index bf5c557469..e0d0289ae1 100644
--- a/app/models/custom_filter_keyword.rb
+++ b/app/models/custom_filter_keyword.rb
@@ -3,8 +3,8 @@
#
# Table name: custom_filter_keywords
#
-# id :bigint not null, primary key
-# custom_filter_id :bigint not null
+# id :bigint(8) not null, primary key
+# custom_filter_id :bigint(8) not null
# keyword :text default(""), not null
# whole_word :boolean default(TRUE), not null
# created_at :datetime not null
diff --git a/app/models/custom_filter_status.rb b/app/models/custom_filter_status.rb
new file mode 100644
index 0000000000..e748d69633
--- /dev/null
+++ b/app/models/custom_filter_status.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: custom_filter_statuses
+#
+# id :bigint(8) not null, primary key
+# custom_filter_id :bigint(8) not null
+# status_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class CustomFilterStatus < ApplicationRecord
+ belongs_to :custom_filter
+ belongs_to :status
+
+ validates :status, uniqueness: { scope: :custom_filter }
+ validate :validate_status_access
+
+ before_save :prepare_cache_invalidation!
+ before_destroy :prepare_cache_invalidation!
+ after_commit :invalidate_cache!
+
+ private
+
+ def validate_status_access
+ errors.add(:status_id, :invalid) unless StatusPolicy.new(custom_filter.account, status).show?
+ end
+
+ def prepare_cache_invalidation!
+ custom_filter.prepare_cache_invalidation!
+ end
+
+ def invalidate_cache!
+ custom_filter.invalidate_cache!
+ end
+end
diff --git a/app/models/domain_allow.rb b/app/models/domain_allow.rb
index 7a0acbe325..9e746b9157 100644
--- a/app/models/domain_allow.rb
+++ b/app/models/domain_allow.rb
@@ -19,6 +19,10 @@ class DomainAllow < ApplicationRecord
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
+ def to_log_human_identifier
+ domain
+ end
+
class << self
def allowed?(domain)
!rule_for(domain).nil?
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index a15206b5ef..b08687787c 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -31,6 +31,10 @@ class DomainBlock < ApplicationRecord
scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) }
scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) }
+ def to_log_human_identifier
+ domain
+ end
+
def policies
if suspend?
[:suspend]
diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb
index 0e1e663c10..10a0e51020 100644
--- a/app/models/email_domain_block.rb
+++ b/app/models/email_domain_block.rb
@@ -17,6 +17,7 @@ class EmailDomainBlock < ApplicationRecord
)
include DomainNormalizable
+ include Paginable
belongs_to :parent, class_name: 'EmailDomainBlock', optional: true
has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy
@@ -26,36 +27,64 @@ class EmailDomainBlock < ApplicationRecord
# Used for adding multiple blocks at once
attr_accessor :other_domains
+ def to_log_human_identifier
+ domain
+ end
+
def history
@history ||= Trends::History.new('email_domain_blocks', id)
end
- def self.block?(domain_or_domains, attempt_ip: nil)
- domains = Array(domain_or_domains).map do |str|
- domain = begin
- if str.include?('@')
- str.split('@', 2).last
- else
- str
- end
- end
+ class Matcher
+ def initialize(domain_or_domains, attempt_ip: nil)
+ @uris = extract_uris(domain_or_domains)
+ @attempt_ip = attempt_ip
+ end
- TagManager.instance.normalize_domain(domain) if domain.present?
- rescue Addressable::URI::InvalidURIError
- nil
+ def match?
+ blocking? || invalid_uri?
end
- # If some of the inputs passed in are invalid, we definitely want to
- # block the attempt, but we also want to register hits against any
- # other valid matches
+ private
- blocked = domains.any?(&:nil?)
+ def invalid_uri?
+ @uris.any?(&:nil?)
+ end
- where(domain: domains).find_each do |block|
- blocked = true
- block.history.add(attempt_ip) if attempt_ip.present?
+ def blocking?
+ blocks = EmailDomainBlock.where(domain: domains_with_variants).order(Arel.sql('char_length(domain) desc'))
+ blocks.each { |block| block.history.add(@attempt_ip) } if @attempt_ip.present?
+ blocks.any?
end
- blocked
+ def domains_with_variants
+ @uris.flat_map do |uri|
+ next if uri.nil?
+
+ segments = uri.normalized_host.split('.')
+
+ segments.map.with_index { |_, i| segments[i..-1].join('.') }
+ end
+ end
+
+ def extract_uris(domain_or_domains)
+ Array(domain_or_domains).map do |str|
+ domain = begin
+ if str.include?('@')
+ str.split('@', 2).last
+ else
+ str
+ end
+ end
+
+ Addressable::URI.new.tap { |u| u.host = domain.strip } if domain.present?
+ rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
+ nil
+ end
+ end
+ end
+
+ def self.block?(domain_or_domains, attempt_ip: nil)
+ Matcher.new(domain_or_domains, attempt_ip: attempt_ip).match?
end
end
diff --git a/app/models/export.rb b/app/models/export.rb
index 5216eed5ea..2457dcc156 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -30,9 +30,9 @@ class Export
end
def to_following_accounts_csv
- CSV.generate(headers: ['Account address', 'Show boosts'], write_headers: true) do |csv|
+ CSV.generate(headers: ['Account address', 'Show boosts', 'Notify on new posts', 'Languages'], write_headers: true) do |csv|
account.active_relationships.includes(:target_account).reorder(id: :desc).each do |follow|
- csv << [acct(follow.target_account), follow.show_reblogs]
+ csv << [acct(follow.target_account), follow.show_reblogs, follow.notify, follow.languages&.join(', ')]
end
end
end
diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb
index 74d62e7778..201ce75f5c 100644
--- a/app/models/featured_tag.rb
+++ b/app/models/featured_tag.rb
@@ -13,17 +13,21 @@
#
class FeaturedTag < ApplicationRecord
- belongs_to :account, inverse_of: :featured_tags, required: true
- belongs_to :tag, inverse_of: :featured_tags, required: true
+ belongs_to :account, inverse_of: :featured_tags
+ belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation
- delegate :name, to: :tag, allow_nil: true
-
- validates_associated :tag, on: :create
- validates :name, presence: true, on: :create
+ validate :validate_tag_name, on: :create
validate :validate_featured_tags_limit, on: :create
- def name=(str)
- self.tag = Tag.find_or_create_by_names(str.strip)&.first
+ before_create :set_tag
+ before_create :reset_data
+
+ delegate :display_name, to: :tag
+
+ attr_writer :name
+
+ def name
+ tag_id.present? ? tag.name : @name
end
def increment(timestamp)
@@ -34,14 +38,23 @@ class FeaturedTag < ApplicationRecord
update(statuses_count: [0, statuses_count - 1].max, last_status_at: account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).where.not(id: deleted_status_id).select(:created_at).first&.created_at)
end
+ private
+
+ def set_tag
+ self.tag = Tag.find_or_create_by_names(@name)&.first
+ end
+
def reset_data
self.statuses_count = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).count
self.last_status_at = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).select(:created_at).first&.created_at
end
- private
-
def validate_featured_tags_limit
errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= 10
end
+
+ def validate_tag_name
+ errors.add(:name, :blank) if @name.blank?
+ errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i)
+ end
end
diff --git a/app/models/follow.rb b/app/models/follow.rb
index a5e3fe8099..e5cecbbc1d 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -11,6 +11,7 @@
# show_reblogs :boolean default(TRUE), not null
# uri :string
# notify :boolean default(FALSE), not null
+# languages :string is an Array
#
class Follow < ApplicationRecord
@@ -27,6 +28,7 @@ class Follow < ApplicationRecord
has_one :notification, as: :activity, dependent: :destroy
validates :account_id, uniqueness: { scope: :target_account_id }
+ validates :languages, language: true
scope :recent, -> { reorder(id: :desc) }
@@ -35,7 +37,7 @@ class Follow < ApplicationRecord
end
def revoke_request!
- FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, uri: uri)
+ FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, languages: languages, uri: uri)
destroy!
end
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 0b6f7629af..9034250c0d 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -11,6 +11,7 @@
# show_reblogs :boolean default(TRUE), not null
# uri :string
# notify :boolean default(FALSE), not null
+# languages :string is an Array
#
class FollowRequest < ApplicationRecord
@@ -27,9 +28,10 @@ class FollowRequest < ApplicationRecord
has_one :notification, as: :activity, dependent: :destroy
validates :account_id, uniqueness: { scope: :target_account_id }
+ validates :languages, language: true
def authorize!
- account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri, bypass_limit: true)
+ account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, 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 dcf1558403..5cfcf7205b 100644
--- a/app/models/form/account_batch.rb
+++ b/app/models/form/account_batch.rb
@@ -6,7 +6,8 @@ class Form::AccountBatch
include AccountableConcern
include Payloadable
- attr_accessor :account_ids, :action, :current_account
+ attr_accessor :account_ids, :action, :current_account,
+ :select_all_matching, :query
def save
case action
@@ -60,7 +61,11 @@ class Form::AccountBatch
end
def accounts
- Account.where(id: account_ids)
+ if select_all_matching?
+ query
+ else
+ Account.where(id: account_ids)
+ end
end
def approve!
@@ -101,7 +106,7 @@ class Form::AccountBatch
def reject_account(account)
authorize(account.user, :reject?)
- log_action(:reject, account.user, username: account.username)
+ log_action(:reject, account.user)
account.suspend!(origin: :local)
AccountDeletionWorker.perform_async(account.id, { 'reserve_username' => false })
end
@@ -118,4 +123,8 @@ class Form::AccountBatch
log_action(:approve, account.user)
account.user.approve!
end
+
+ def select_all_matching?
+ select_all_matching == '1'
+ end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 5627f8a844..68c98d43f2 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -15,11 +15,9 @@ class Form::AdminSettings
closed_registrations_message
open_deletion
timeline_preview
- show_staff_badge
bootstrap_timeline_accounts
flavour
skin
- min_invite_role
activity_api_enabled
peers_api_enabled
show_known_fediverse_at_about_page
@@ -42,12 +40,14 @@ class Form::AdminSettings
outgoing_spoilers
require_invite_text
captcha_enabled
+ media_cache_retention_period
+ content_cache_retention_period
+ backups_retention_period
).freeze
BOOLEAN_KEYS = %i(
open_deletion
timeline_preview
- show_staff_badge
activity_api_enabled
peers_api_enabled
show_known_fediverse_at_about_page
@@ -79,12 +79,12 @@ class Form::AdminSettings
validates :site_short_description, :site_description, html: { wrap_with: :p }
validates :site_extended_description, :site_terms, :closed_registrations_message, html: true
validates :registrations_mode, inclusion: { in: %w(open approved none) }
- validates :min_invite_role, inclusion: { in: %w(disabled user moderator admin) }
validates :site_contact_email, :site_contact_username, presence: true
validates :site_contact_username, existing_username: true
validates :bootstrap_timeline_accounts, existing_username: { multiple: true }
validates :show_domain_blocks, inclusion: { in: %w(disabled users all) }
validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }
+ validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true
def initialize(_attributes = {})
super
diff --git a/app/models/form/status_filter_batch_action.rb b/app/models/form/status_filter_batch_action.rb
new file mode 100644
index 0000000000..d87bd5cc4d
--- /dev/null
+++ b/app/models/form/status_filter_batch_action.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+class Form::StatusFilterBatchAction
+ include ActiveModel::Model
+ include AccountableConcern
+ include Authorization
+
+ attr_accessor :current_account, :type,
+ :status_filter_ids, :filter_id
+
+ def save!
+ process_action!
+ end
+
+ private
+
+ def status_filters
+ filter = current_account.custom_filters.find(filter_id)
+ filter.statuses.where(id: status_filter_ids)
+ end
+
+ def process_action!
+ return if status_filter_ids.empty?
+
+ case type
+ when 'remove'
+ handle_remove!
+ end
+ end
+
+ def handle_remove!
+ status_filters.destroy_all
+ end
+end
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 36110ee400..edbf02a6d1 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -48,6 +48,8 @@ class Instance < ApplicationRecord
domain
end
+ alias to_log_human_identifier to_param
+
delegate :exhausted_deliveries_days, to: :delivery_failure_tracker
def availability_over_days(num_days, end_date = Time.now.utc.to_date)
diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb
index aedd3ca0d4..8666f4248e 100644
--- a/app/models/ip_block.rb
+++ b/app/models/ip_block.rb
@@ -16,9 +16,11 @@ class IpBlock < ApplicationRecord
CACHE_KEY = 'blocked_ips'
include Expireable
+ include Paginable
enum severity: {
sign_up_requires_approval: 5000,
+ sign_up_block: 5500,
no_access: 9999,
}
@@ -26,6 +28,10 @@ class IpBlock < ApplicationRecord
after_commit :reset_cache
+ def to_log_human_identifier
+ "#{ip}/#{ip.prefix}"
+ end
+
class << self
def blocked?(remote_ip)
blocked_ips_map = Rails.cache.fetch(CACHE_KEY) { FastIpMap.new(IpBlock.where(severity: :no_access).pluck(:ip)) }
diff --git a/app/models/report.rb b/app/models/report.rb
index 2efb6d4a77..42c869dd44 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -115,6 +115,10 @@ class Report < ApplicationRecord
Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists?
end
+ def to_log_human_identifier
+ id
+ end
+
def history
subquery = [
Admin::ActionLog.where(
@@ -136,6 +140,8 @@ class Report < ApplicationRecord
Admin::ActionLog.from(Arel::Nodes::As.new(subquery, Admin::ActionLog.arel_table))
end
+ private
+
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local?
end
diff --git a/app/models/status.rb b/app/models/status.rb
index 3efa23ae21..c1e8862ca9 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -171,6 +171,14 @@ class Status < ApplicationRecord
].compact.join("\n\n")
end
+ def to_log_human_identifier
+ account.acct
+ end
+
+ def to_log_permalink
+ ActivityPub::TagManager.instance.uri_for(self)
+ end
+
def reply?
!in_reply_to_id.nil? || attributes['reply']
end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index a640426149..8929baf66f 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -15,20 +15,25 @@
# last_status_at :datetime
# max_score :float
# max_score_at :datetime
+# display_name :string
#
class Tag < ApplicationRecord
has_and_belongs_to_many :statuses
has_and_belongs_to_many :accounts
+ has_many :passive_relationships, class_name: 'TagFollow', inverse_of: :tag, dependent: :destroy
has_many :featured_tags, dependent: :destroy, inverse_of: :tag
+ has_many :followers, through: :passive_relationships, source: :account
HASHTAG_SEPARATORS = "_\u00B7\u200c"
HASHTAG_NAME_RE = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)"
HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i
validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i }
+ validates :display_name, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i }
validate :validate_name_change, if: -> { !new_record? && name_changed? }
+ validate :validate_display_name_change, if: -> { !new_record? && display_name_changed? }
scope :reviewed, -> { where.not(reviewed_at: nil) }
scope :unreviewed, -> { where(reviewed_at: nil) }
@@ -46,6 +51,10 @@ class Tag < ApplicationRecord
name
end
+ def display_name
+ attributes['display_name'] || name
+ end
+
def usable
boolean_with_default('usable', true)
end
@@ -90,8 +99,10 @@ class Tag < ApplicationRecord
class << self
def find_or_create_by_names(name_or_names)
- Array(name_or_names).map(&method(:normalize)).uniq { |str| str.mb_chars.downcase.to_s }.map do |normalized_name|
- tag = matching_name(normalized_name).first || create(name: normalized_name)
+ names = Array(name_or_names).map { |str| [normalize(str), str] }.uniq(&:first)
+
+ names.map do |(normalized_name, display_name)|
+ tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(/[^[:alnum:]#{HASHTAG_SEPARATORS}]/, ''))
yield tag if block_given?
@@ -129,7 +140,7 @@ class Tag < ApplicationRecord
end
def normalize(str)
- str.gsub(/\A#/, '')
+ HashtagNormalizer.new.normalize(str)
end
end
@@ -138,4 +149,8 @@ class Tag < ApplicationRecord
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
+
+ def validate_display_name_change
+ errors.add(:display_name, I18n.t('tags.does_not_match_previous_name')) unless HashtagNormalizer.new.normalize(display_name).casecmp(name.mb_chars).zero?
+ end
end
diff --git a/app/models/tag_follow.rb b/app/models/tag_follow.rb
new file mode 100644
index 0000000000..abe36cd171
--- /dev/null
+++ b/app/models/tag_follow.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: tag_follows
+#
+# id :bigint(8) not null, primary key
+# tag_id :bigint(8) not null
+# account_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class TagFollow < ApplicationRecord
+ include RateLimitable
+ include Paginable
+
+ belongs_to :tag
+ belongs_to :account
+
+ accepts_nested_attributes_for :tag
+
+ rate_limit by: :account, family: :follows
+end
diff --git a/app/models/trends.rb b/app/models/trends.rb
index 0fff66a9f0..5d5f2eb226 100644
--- a/app/models/trends.rb
+++ b/app/models/trends.rb
@@ -32,7 +32,7 @@ module Trends
tags_requiring_review = tags.request_review
statuses_requiring_review = statuses.request_review
- User.staff.includes(:account).find_each do |user|
+ User.those_who_can(:manage_taxonomies).includes(:account).find_each do |user|
links = user.allows_trending_links_review_emails? ? links_requiring_review : []
tags = user.allows_trending_tags_review_emails? ? tags_requiring_review : []
statuses = user.allows_trending_statuses_review_emails? ? statuses_requiring_review : []
diff --git a/app/models/unavailable_domain.rb b/app/models/unavailable_domain.rb
index 5e8870bde0..dfc0ef14ef 100644
--- a/app/models/unavailable_domain.rb
+++ b/app/models/unavailable_domain.rb
@@ -16,6 +16,10 @@ class UnavailableDomain < ApplicationRecord
after_commit :reset_cache!
+ def to_log_human_identifier
+ domain
+ end
+
private
def reset_cache!
diff --git a/app/models/user.rb b/app/models/user.rb
index 6d2d946250..de59fe4b38 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -37,6 +37,7 @@
# sign_in_token_sent_at :datetime
# webauthn_id :string
# sign_up_ip :inet
+# role_id :bigint(8)
#
class User < ApplicationRecord
@@ -50,7 +51,6 @@ class User < ApplicationRecord
)
include Settings::Extend
- include UserRoles
include Redisable
include LanguagesHelper
@@ -79,6 +79,7 @@ class User < ApplicationRecord
belongs_to :account, inverse_of: :user
belongs_to :invite, counter_cache: :uses, optional: true
belongs_to :created_by_application, class_name: 'Doorkeeper::Application', optional: true
+ belongs_to :role, class_name: 'UserRole', optional: true
accepts_nested_attributes_for :account
has_many :applications, class_name: 'Doorkeeper::Application', as: :owner
@@ -93,7 +94,7 @@ class User < ApplicationRecord
validates :invite_request, presence: true, on: :create, if: :invite_text_required?
validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale?
- validates_with BlacklistedEmailValidator, if: -> { !confirmed? }
+ validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with EmailMxValidator, if: :validate_email_dns?
validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create
@@ -103,6 +104,7 @@ class User < ApplicationRecord
validates_with RegistrationFormTimeValidator, on: :create
validates :website, absence: true, on: :create
validates :confirm_password, absence: true, on: :create
+ validate :validate_role_elevation
scope :recent, -> { order(id: :desc) }
scope :pending, -> { where(approved: false) }
@@ -117,6 +119,7 @@ class User < ApplicationRecord
scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) }
before_validation :sanitize_languages
+ before_validation :sanitize_role
before_create :set_approved
after_commit :send_pending_devise_notifications
after_create_commit :trigger_webhooks
@@ -135,8 +138,28 @@ class User < ApplicationRecord
:disable_swiping, :always_send_emails, :default_content_type, :system_emoji_font,
to: :settings, prefix: :setting, allow_nil: false
+ delegate :can?, to: :role
+
attr_reader :invite_code
- attr_writer :external, :bypass_invite_request_check
+ attr_writer :external, :bypass_invite_request_check, :current_account
+
+ def self.those_who_can(*any_of_privileges)
+ matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id)
+
+ if matching_role_ids.empty?
+ none
+ else
+ where(role_id: matching_role_ids)
+ end
+ end
+
+ def role
+ if role_id.nil?
+ UserRole.everyone
+ else
+ super
+ end
+ end
def confirmed?
confirmed_at.present?
@@ -158,6 +181,14 @@ class User < ApplicationRecord
update!(disabled: false)
end
+ def to_log_human_identifier
+ account.acct
+ end
+
+ def to_log_route_param
+ account_id
+ end
+
def confirm
new_user = !confirmed?
self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval?
@@ -251,17 +282,13 @@ class User < ApplicationRecord
end
def preferred_posting_language
- valid_locale_cascade(settings.default_language, locale)
+ valid_locale_cascade(settings.default_language, locale, I18n.locale)
end
def setting_default_privacy
settings.default_privacy || (account.locked? ? 'private' : 'public')
end
- def allows_digest_emails?
- settings.notification_emails['digest']
- end
-
def allows_report_emails?
settings.notification_emails['report']
end
@@ -449,6 +476,11 @@ class User < ApplicationRecord
self.chosen_languages = nil if chosen_languages.empty?
end
+ def sanitize_role
+ return if role.nil?
+ self.role = nil if role.everyone?
+ end
+
def prepare_new_user!
BootstrapTimelineWorker.perform_async(account_id)
ActivityTracker.increment('activity:accounts:local')
@@ -461,7 +493,7 @@ class User < ApplicationRecord
end
def notify_staff_about_pending_account!
- User.staff.includes(:account).find_each do |u|
+ User.those_who_can(:manage_users).includes(:account).find_each do |u|
next unless u.allows_pending_account_emails?
AdminMailer.new_pending_account(u.account, self).deliver_later
end
@@ -479,6 +511,10 @@ class User < ApplicationRecord
email_changed? && !external? && !(Rails.env.test? || Rails.env.development?)
end
+ def validate_role_elevation
+ errors.add(:role_id, :elevated) if defined?(@current_account) && role&.overrides?(@current_account&.user_role)
+ end
+
def invite_text_required?
Setting.require_invite_text && !invited? && !external? && !bypass_invite_request_check?
end
diff --git a/app/models/user_role.rb b/app/models/user_role.rb
new file mode 100644
index 0000000000..74dfdc2205
--- /dev/null
+++ b/app/models/user_role.rb
@@ -0,0 +1,190 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: user_roles
+#
+# id :bigint(8) not null, primary key
+# name :string default(""), not null
+# color :string default(""), not null
+# position :integer default(0), not null
+# permissions :bigint(8) default(0), not null
+# highlighted :boolean default(FALSE), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class UserRole < ApplicationRecord
+ FLAGS = {
+ administrator: (1 << 0),
+ view_devops: (1 << 1),
+ view_audit_log: (1 << 2),
+ view_dashboard: (1 << 3),
+ manage_reports: (1 << 4),
+ manage_federation: (1 << 5),
+ manage_settings: (1 << 6),
+ manage_blocks: (1 << 7),
+ manage_taxonomies: (1 << 8),
+ manage_appeals: (1 << 9),
+ manage_users: (1 << 10),
+ manage_invites: (1 << 11),
+ manage_rules: (1 << 12),
+ manage_announcements: (1 << 13),
+ manage_custom_emojis: (1 << 14),
+ manage_webhooks: (1 << 15),
+ invite_users: (1 << 16),
+ manage_roles: (1 << 17),
+ manage_user_access: (1 << 18),
+ delete_user_data: (1 << 19),
+ }.freeze
+
+ module Flags
+ NONE = 0
+ ALL = FLAGS.values.reduce(&:|)
+
+ DEFAULT = FLAGS[:invite_users]
+
+ CATEGORIES = {
+ invites: %i(
+ invite_users
+ ).freeze,
+
+ moderation: %w(
+ view_dashboard
+ view_audit_log
+ manage_users
+ manage_user_access
+ delete_user_data
+ manage_reports
+ manage_appeals
+ manage_federation
+ manage_blocks
+ manage_taxonomies
+ manage_invites
+ ).freeze,
+
+ administration: %w(
+ manage_settings
+ manage_rules
+ manage_roles
+ manage_webhooks
+ manage_custom_emojis
+ manage_announcements
+ ).freeze,
+
+ devops: %w(
+ view_devops
+ ).freeze,
+
+ special: %i(
+ administrator
+ ).freeze,
+ }.freeze
+ end
+
+ attr_writer :current_account
+
+ validates :name, presence: true, unless: :everyone?
+ validates :color, format: { with: /\A#?(?:[A-F0-9]{3}){1,2}\z/i }, unless: -> { color.blank? }
+
+ validate :validate_permissions_elevation
+ validate :validate_position_elevation
+ validate :validate_dangerous_permissions
+ validate :validate_own_role_edition
+
+ before_validation :set_position
+
+ scope :assignable, -> { where.not(id: -99).order(position: :asc) }
+
+ has_many :users, inverse_of: :role, foreign_key: 'role_id', dependent: :nullify
+
+ def self.nobody
+ @nobody ||= UserRole.new(permissions: Flags::NONE, position: -1)
+ end
+
+ def self.everyone
+ UserRole.find(-99)
+ rescue ActiveRecord::RecordNotFound
+ UserRole.create!(id: -99, permissions: Flags::DEFAULT)
+ end
+
+ def self.that_can(*any_of_privileges)
+ all.select { |role| role.can?(*any_of_privileges) }
+ end
+
+ def everyone?
+ id == -99
+ end
+
+ def nobody?
+ id.nil?
+ end
+
+ def permissions_as_keys
+ FLAGS.keys.select { |privilege| permissions & FLAGS[privilege] == FLAGS[privilege] }.map(&:to_s)
+ end
+
+ def permissions_as_keys=(value)
+ self.permissions = value.map(&:presence).compact.reduce(Flags::NONE) { |bitmask, privilege| FLAGS.key?(privilege.to_sym) ? (bitmask | FLAGS[privilege.to_sym]) : bitmask }
+ end
+
+ def can?(*any_of_privileges)
+ any_of_privileges.any? { |privilege| in_permissions?(privilege) }
+ end
+
+ def overrides?(other_role)
+ other_role.nil? || position > other_role.position
+ end
+
+ def computed_permissions
+ # If called on the everyone role, no further computation needed
+ return permissions if everyone?
+
+ # If called on the nobody role, no permissions are there to be given
+ return Flags::NONE if nobody?
+
+ # Otherwise, compute permissions based on special conditions
+ @computed_permissions ||= begin
+ permissions = self.class.everyone.permissions | self.permissions
+
+ if permissions & FLAGS[:administrator] == FLAGS[:administrator]
+ Flags::ALL
+ else
+ permissions
+ end
+ end
+ end
+
+ def to_log_human_identifier
+ name
+ end
+
+ private
+
+ def in_permissions?(privilege)
+ raise ArgumentError, "Unknown privilege: #{privilege}" unless FLAGS.key?(privilege)
+ computed_permissions & FLAGS[privilege] == FLAGS[privilege]
+ end
+
+ def set_position
+ self.position = -1 if everyone?
+ end
+
+ def validate_own_role_edition
+ return unless defined?(@current_account) && @current_account.user_role.id == id
+ errors.add(:permissions_as_keys, :own_role) if permissions_changed?
+ errors.add(:position, :own_role) if position_changed?
+ end
+
+ def validate_permissions_elevation
+ errors.add(:permissions_as_keys, :elevated) if defined?(@current_account) && @current_account.user_role.computed_permissions & permissions != permissions
+ end
+
+ def validate_position_elevation
+ errors.add(:position, :elevated) if defined?(@current_account) && @current_account.user_role.position < position
+ end
+
+ def validate_dangerous_permissions
+ errors.add(:permissions_as_keys, :dangerous) if everyone? && Flags::DEFAULT & permissions != permissions
+ end
+end
diff --git a/app/policies/account_moderation_note_policy.rb b/app/policies/account_moderation_note_policy.rb
index 885411a5b5..310ce854cc 100644
--- a/app/policies/account_moderation_note_policy.rb
+++ b/app/policies/account_moderation_note_policy.rb
@@ -2,11 +2,11 @@
class AccountModerationNotePolicy < ApplicationPolicy
def create?
- staff?
+ role.can?(:manage_reports)
end
def destroy?
- admin? || owner?
+ owner? || (role.can?(:manage_reports) && role.overrides?(record.account.user_role))
end
private
diff --git a/app/policies/account_policy.rb b/app/policies/account_policy.rb
index cc23771e7a..a744af81de 100644
--- a/app/policies/account_policy.rb
+++ b/app/policies/account_policy.rb
@@ -2,74 +2,66 @@
class AccountPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_users)
end
def show?
- staff?
+ role.can?(:manage_users)
end
def warn?
- staff? && !record.user&.staff?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role)
end
def suspend?
- staff? && !record.user&.staff? && !record.instance_actor?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) && !record.instance_actor?
end
def destroy?
- record.suspended_temporarily? && admin?
+ record.suspended_temporarily? && role.can?(:delete_user_data)
end
def unsuspend?
- staff? && record.suspension_origin_local?
+ role.can?(:manage_users) && record.suspension_origin_local?
end
def sensitive?
- staff? && !record.user&.staff?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role)
end
def unsensitive?
- staff?
+ role.can?(:manage_users)
end
def silence?
- staff? && !record.user&.staff?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role)
end
def unsilence?
- staff?
+ role.can?(:manage_users)
end
def redownload?
- admin?
+ role.can?(:manage_federation)
end
def remove_avatar?
- staff?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role)
end
def remove_header?
- staff?
- end
-
- def subscribe?
- admin?
- end
-
- def unsubscribe?
- admin?
+ role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role)
end
def memorialize?
- admin? && !record.user&.admin? && !record.instance_actor?
+ role.can?(:delete_user_data) && role.overrides?(record.user_role) && !record.instance_actor?
end
def unblock_email?
- staff?
+ role.can?(:manage_users)
end
def review?
- staff?
+ role.can?(:manage_taxonomies)
end
end
diff --git a/app/policies/account_warning_policy.rb b/app/policies/account_warning_policy.rb
index 65707dfa7c..4f8df7420e 100644
--- a/app/policies/account_warning_policy.rb
+++ b/app/policies/account_warning_policy.rb
@@ -2,7 +2,7 @@
class AccountWarningPolicy < ApplicationPolicy
def show?
- target? || staff?
+ target? || role.can?(:manage_appeals)
end
def appeal?
diff --git a/app/policies/account_warning_preset_policy.rb b/app/policies/account_warning_preset_policy.rb
index bccbd33efd..59514e9516 100644
--- a/app/policies/account_warning_preset_policy.rb
+++ b/app/policies/account_warning_preset_policy.rb
@@ -2,18 +2,18 @@
class AccountWarningPresetPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_settings)
end
def create?
- staff?
+ role.can?(:manage_settings)
end
def update?
- staff?
+ role.can?(:manage_settings)
end
def destroy?
- staff?
+ role.can?(:manage_settings)
end
end
diff --git a/app/policies/announcement_policy.rb b/app/policies/announcement_policy.rb
index 0a4e4575ca..b5dc6a18af 100644
--- a/app/policies/announcement_policy.rb
+++ b/app/policies/announcement_policy.rb
@@ -2,18 +2,18 @@
class AnnouncementPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_announcements)
end
def create?
- admin?
+ role.can?(:manage_announcements)
end
def update?
- admin?
+ role.can?(:manage_announcements)
end
def destroy?
- admin?
+ role.can?(:manage_announcements)
end
end
diff --git a/app/policies/appeal_policy.rb b/app/policies/appeal_policy.rb
index a25187172a..7466b334b0 100644
--- a/app/policies/appeal_policy.rb
+++ b/app/policies/appeal_policy.rb
@@ -2,12 +2,14 @@
class AppealPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_appeals)
end
def approve?
- record.pending? && staff?
+ record.pending? && role.can?(:manage_appeals)
end
- alias reject? approve?
+ def reject?
+ record.pending? && role.can?(:manage_appeals)
+ end
end
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb
index d1de5e81a2..163b81e9e6 100644
--- a/app/policies/application_policy.rb
+++ b/app/policies/application_policy.rb
@@ -8,8 +8,6 @@ class ApplicationPolicy
@record = record
end
- delegate :admin?, :moderator?, :staff?, to: :current_user, allow_nil: true
-
private
def current_user
@@ -19,4 +17,8 @@ class ApplicationPolicy
def user_signed_in?
!current_user.nil?
end
+
+ def role
+ current_user&.role || UserRole.nobody
+ end
end
diff --git a/app/policies/audit_log_policy.rb b/app/policies/audit_log_policy.rb
new file mode 100644
index 0000000000..f78aa9a8e0
--- /dev/null
+++ b/app/policies/audit_log_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AuditLogPolicy < ApplicationPolicy
+ def index?
+ role.can?(:view_audit_log)
+ end
+end
diff --git a/app/policies/canonical_email_block_policy.rb b/app/policies/canonical_email_block_policy.rb
new file mode 100644
index 0000000000..8d76075c93
--- /dev/null
+++ b/app/policies/canonical_email_block_policy.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class CanonicalEmailBlockPolicy < ApplicationPolicy
+ def index?
+ role.can?(:manage_blocks)
+ end
+
+ def show?
+ role.can?(:manage_blocks)
+ end
+
+ def test?
+ role.can?(:manage_blocks)
+ end
+
+ def create?
+ role.can?(:manage_blocks)
+ end
+
+ def destroy?
+ role.can?(:manage_blocks)
+ end
+end
diff --git a/app/policies/custom_emoji_policy.rb b/app/policies/custom_emoji_policy.rb
index a8c3cbc733..18de71c193 100644
--- a/app/policies/custom_emoji_policy.rb
+++ b/app/policies/custom_emoji_policy.rb
@@ -2,30 +2,30 @@
class CustomEmojiPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_custom_emojis)
end
def create?
- admin?
+ role.can?(:manage_custom_emojis)
end
def update?
- admin?
+ role.can?(:manage_custom_emojis)
end
def copy?
- admin?
+ role.can?(:manage_custom_emojis)
end
def enable?
- staff?
+ role.can?(:manage_custom_emojis)
end
def disable?
- staff?
+ role.can?(:manage_custom_emojis)
end
def destroy?
- admin?
+ role.can?(:manage_custom_emojis)
end
end
diff --git a/app/policies/dashboard_policy.rb b/app/policies/dashboard_policy.rb
new file mode 100644
index 0000000000..3df1c3088b
--- /dev/null
+++ b/app/policies/dashboard_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class DashboardPolicy < ApplicationPolicy
+ def index?
+ role.can?(:view_dashboard)
+ end
+end
diff --git a/app/policies/delivery_policy.rb b/app/policies/delivery_policy.rb
index 24d06c1689..f6ba2eb181 100644
--- a/app/policies/delivery_policy.rb
+++ b/app/policies/delivery_policy.rb
@@ -2,14 +2,14 @@
class DeliveryPolicy < ApplicationPolicy
def clear_delivery_errors?
- admin?
+ role.can?(:manage_federation)
end
def restart_delivery?
- admin?
+ role.can?(:manage_federation)
end
def stop_delivery?
- admin?
+ role.can?(:manage_federation)
end
end
diff --git a/app/policies/domain_allow_policy.rb b/app/policies/domain_allow_policy.rb
index 7a5b5d7808..45c797ecdf 100644
--- a/app/policies/domain_allow_policy.rb
+++ b/app/policies/domain_allow_policy.rb
@@ -2,18 +2,18 @@
class DomainAllowPolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_federation)
end
def show?
- admin?
+ role.can?(:manage_federation)
end
def create?
- admin?
+ role.can?(:manage_federation)
end
def destroy?
- admin?
+ role.can?(:manage_federation)
end
end
diff --git a/app/policies/domain_block_policy.rb b/app/policies/domain_block_policy.rb
index 543259ccef..0fea2e0351 100644
--- a/app/policies/domain_block_policy.rb
+++ b/app/policies/domain_block_policy.rb
@@ -2,22 +2,22 @@
class DomainBlockPolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_federation)
end
def show?
- admin?
+ role.can?(:manage_federation)
end
def create?
- admin?
+ role.can?(:manage_federation)
end
def update?
- admin?
+ role.can?(:manage_federation)
end
def destroy?
- admin?
+ role.can?(:manage_federation)
end
end
diff --git a/app/policies/email_domain_block_policy.rb b/app/policies/email_domain_block_policy.rb
index 5a75ee1838..1a0ddfa877 100644
--- a/app/policies/email_domain_block_policy.rb
+++ b/app/policies/email_domain_block_policy.rb
@@ -2,14 +2,14 @@
class EmailDomainBlockPolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_blocks)
end
def create?
- admin?
+ role.can?(:manage_blocks)
end
def destroy?
- admin?
+ role.can?(:manage_blocks)
end
end
diff --git a/app/policies/follow_recommendation_policy.rb b/app/policies/follow_recommendation_policy.rb
index 68cd0e547f..9245733ea8 100644
--- a/app/policies/follow_recommendation_policy.rb
+++ b/app/policies/follow_recommendation_policy.rb
@@ -2,14 +2,14 @@
class FollowRecommendationPolicy < ApplicationPolicy
def show?
- staff?
+ role.can?(:manage_taxonomies)
end
def suppress?
- staff?
+ role.can?(:manage_taxonomies)
end
def unsuppress?
- staff?
+ role.can?(:manage_taxonomies)
end
end
diff --git a/app/policies/instance_policy.rb b/app/policies/instance_policy.rb
index 801ca162e3..b15e123fef 100644
--- a/app/policies/instance_policy.rb
+++ b/app/policies/instance_policy.rb
@@ -2,14 +2,14 @@
class InstancePolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_federation)
end
def show?
- admin?
+ role.can?(:manage_federation)
end
def destroy?
- admin?
+ role.can?(:manage_federation)
end
end
diff --git a/app/policies/invite_policy.rb b/app/policies/invite_policy.rb
index 14236f78b8..24eacd08e8 100644
--- a/app/policies/invite_policy.rb
+++ b/app/policies/invite_policy.rb
@@ -2,19 +2,19 @@
class InvitePolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_invites)
end
def create?
- min_required_role?
+ role.can?(:invite_users)
end
def deactivate_all?
- admin?
+ role.can?(:manage_invites)
end
def destroy?
- owner? || (Setting.min_invite_role == 'admin' ? admin? : staff?)
+ owner? || role.can?(:manage_invites)
end
private
@@ -22,8 +22,4 @@ class InvitePolicy < ApplicationPolicy
def owner?
record.user_id == current_user&.id
end
-
- def min_required_role?
- current_user&.role?(Setting.min_invite_role)
- end
end
diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb
index 34dbd746a3..2986a4fdb3 100644
--- a/app/policies/ip_block_policy.rb
+++ b/app/policies/ip_block_policy.rb
@@ -2,14 +2,18 @@
class IpBlockPolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_blocks)
end
def create?
- admin?
+ role.can?(:manage_blocks)
+ end
+
+ def update?
+ role.can?(:manage_blocks)
end
def destroy?
- admin?
+ role.can?(:manage_blocks)
end
end
diff --git a/app/policies/preview_card_policy.rb b/app/policies/preview_card_policy.rb
index 0410987e46..a7bb41634d 100644
--- a/app/policies/preview_card_policy.rb
+++ b/app/policies/preview_card_policy.rb
@@ -2,10 +2,10 @@
class PreviewCardPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_taxonomies)
end
def review?
- staff?
+ role.can?(:manage_taxonomies)
end
end
diff --git a/app/policies/preview_card_provider_policy.rb b/app/policies/preview_card_provider_policy.rb
index 44d2ad5cfc..131ccb5ddf 100644
--- a/app/policies/preview_card_provider_policy.rb
+++ b/app/policies/preview_card_provider_policy.rb
@@ -2,10 +2,10 @@
class PreviewCardProviderPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_taxonomies)
end
def review?
- staff?
+ role.can?(:manage_taxonomies)
end
end
diff --git a/app/policies/relay_policy.rb b/app/policies/relay_policy.rb
index bd75e21977..4305bcfaae 100644
--- a/app/policies/relay_policy.rb
+++ b/app/policies/relay_policy.rb
@@ -2,6 +2,6 @@
class RelayPolicy < ApplicationPolicy
def update?
- admin?
+ role.can?(:manage_federation)
end
end
diff --git a/app/policies/report_note_policy.rb b/app/policies/report_note_policy.rb
index 694bc096b5..dc31416e8e 100644
--- a/app/policies/report_note_policy.rb
+++ b/app/policies/report_note_policy.rb
@@ -2,11 +2,11 @@
class ReportNotePolicy < ApplicationPolicy
def create?
- staff?
+ role.can?(:manage_reports)
end
def destroy?
- admin? || owner?
+ owner? || (role.can?(:manage_reports) && role.overrides?(record.account.user_role))
end
private
diff --git a/app/policies/report_policy.rb b/app/policies/report_policy.rb
index 95b5c30c88..c9f7639bdd 100644
--- a/app/policies/report_policy.rb
+++ b/app/policies/report_policy.rb
@@ -2,14 +2,14 @@
class ReportPolicy < ApplicationPolicy
def update?
- staff?
+ role.can?(:manage_reports)
end
def index?
- staff?
+ role.can?(:manage_reports)
end
def show?
- staff?
+ role.can?(:manage_reports)
end
end
diff --git a/app/policies/rule_policy.rb b/app/policies/rule_policy.rb
index 6a4def0090..51b2a69776 100644
--- a/app/policies/rule_policy.rb
+++ b/app/policies/rule_policy.rb
@@ -2,18 +2,18 @@
class RulePolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_rules)
end
def create?
- admin?
+ role.can?(:manage_rules)
end
def update?
- admin?
+ role.can?(:manage_rules)
end
def destroy?
- admin?
+ role.can?(:manage_rules)
end
end
diff --git a/app/policies/settings_policy.rb b/app/policies/settings_policy.rb
index 874f97bab9..2b052af279 100644
--- a/app/policies/settings_policy.rb
+++ b/app/policies/settings_policy.rb
@@ -2,14 +2,14 @@
class SettingsPolicy < ApplicationPolicy
def update?
- admin?
+ role.can?(:manage_settings)
end
def show?
- admin?
+ role.can?(:manage_settings)
end
def destroy?
- admin?
+ role.can?(:manage_settings)
end
end
diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb
index 75d95a90b3..134721f95e 100644
--- a/app/policies/status_policy.rb
+++ b/app/policies/status_policy.rb
@@ -8,7 +8,7 @@ class StatusPolicy < ApplicationPolicy
end
def index?
- staff?
+ role.can?(:manage_reports, :manage_users)
end
def show?
@@ -33,17 +33,17 @@ class StatusPolicy < ApplicationPolicy
end
def destroy?
- staff? || owned?
+ role.can?(:manage_reports) || owned?
end
alias unreblog? destroy?
def update?
- staff? || owned?
+ role.can?(:manage_reports) || owned?
end
def review?
- staff?
+ role.can?(:manage_taxonomies)
end
private
diff --git a/app/policies/tag_policy.rb b/app/policies/tag_policy.rb
index bdfcec0c96..bb1d37d6cc 100644
--- a/app/policies/tag_policy.rb
+++ b/app/policies/tag_policy.rb
@@ -2,18 +2,18 @@
class TagPolicy < ApplicationPolicy
def index?
- staff?
+ role.can?(:manage_taxonomies)
end
def show?
- staff?
+ role.can?(:manage_taxonomies)
end
def update?
- staff?
+ role.can?(:manage_taxonomies)
end
def review?
- staff?
+ role.can?(:manage_taxonomies)
end
end
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index 140905e1f2..6751b8b8fb 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -2,52 +2,38 @@
class UserPolicy < ApplicationPolicy
def reset_password?
- staff? && !record.staff?
+ role.can?(:manage_user_access) && role.overrides?(record.role)
end
def change_email?
- staff? && !record.staff?
+ role.can?(:manage_user_access) && role.overrides?(record.role)
end
def disable_2fa?
- admin? && !record.staff?
+ role.can?(:manage_user_access) && role.overrides?(record.role)
+ end
+
+ def change_role?
+ role.can?(:manage_roles) && role.overrides?(record.role)
end
def confirm?
- staff? && !record.confirmed?
+ role.can?(:manage_user_access) && !record.confirmed?
end
def enable?
- staff?
+ role.can?(:manage_users)
end
def approve?
- staff? && !record.approved?
+ role.can?(:manage_users) && !record.approved?
end
def reject?
- staff? && !record.approved?
+ role.can?(:manage_users) && !record.approved?
end
def disable?
- staff? && !record.admin?
- end
-
- def promote?
- admin? && promotable?
- end
-
- def demote?
- admin? && !record.admin? && demoteable?
- end
-
- private
-
- def promotable?
- record.approved? && (!record.staff? || !record.admin?)
- end
-
- def demoteable?
- record.staff?
+ role.can?(:manage_users) && role.overrides?(record.role)
end
end
diff --git a/app/policies/user_role_policy.rb b/app/policies/user_role_policy.rb
new file mode 100644
index 0000000000..6144a0ec4a
--- /dev/null
+++ b/app/policies/user_role_policy.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class UserRolePolicy < ApplicationPolicy
+ def index?
+ role.can?(:manage_roles)
+ end
+
+ def create?
+ role.can?(:manage_roles)
+ end
+
+ def update?
+ role.can?(:manage_roles) && (role.overrides?(record) || role.id == record.id)
+ end
+
+ def destroy?
+ !record.everyone? && role.can?(:manage_roles) && role.overrides?(record) && role.id != record.id
+ end
+end
diff --git a/app/policies/webhook_policy.rb b/app/policies/webhook_policy.rb
index 2c55703a1e..a2199a333f 100644
--- a/app/policies/webhook_policy.rb
+++ b/app/policies/webhook_policy.rb
@@ -2,34 +2,34 @@
class WebhookPolicy < ApplicationPolicy
def index?
- admin?
+ role.can?(:manage_webhooks)
end
def create?
- admin?
+ role.can?(:manage_webhooks)
end
def show?
- admin?
+ role.can?(:manage_webhooks)
end
def update?
- admin?
+ role.can?(:manage_webhooks)
end
def enable?
- admin?
+ role.can?(:manage_webhooks)
end
def disable?
- admin?
+ role.can?(:manage_webhooks)
end
def rotate_secret?
- admin?
+ role.can?(:manage_webhooks)
end
def destroy?
- admin?
+ role.can?(:manage_webhooks)
end
end
diff --git a/app/presenters/filter_result_presenter.rb b/app/presenters/filter_result_presenter.rb
index 677225f5ec..1e9e8f3c19 100644
--- a/app/presenters/filter_result_presenter.rb
+++ b/app/presenters/filter_result_presenter.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
class FilterResultPresenter < ActiveModelSerializers::Model
- attributes :filter, :keyword_matches
+ attributes :filter, :keyword_matches, :status_matches
end
diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb
index 06482935ca..129ea2a46b 100644
--- a/app/presenters/initial_state_presenter.rb
+++ b/app/presenters/initial_state_presenter.rb
@@ -3,4 +3,8 @@
class InitialStatePresenter < ActiveModelSerializers::Model
attributes :settings, :push_subscription, :token,
:current_account, :admin, :text, :visibility
+
+ def role
+ current_account&.user_role
+ end
end
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index 3e85faa924..c461ac55f3 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -1,19 +1,51 @@
# frozen_string_literal: true
-class InstancePresenter
- delegate(
- :site_contact_email,
- :site_title,
- :site_short_description,
- :site_description,
- :site_extended_description,
- :site_terms,
- :closed_registrations_message,
- to: Setting
- )
-
- def contact_account
- Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, ''))
+class InstancePresenter < ActiveModelSerializers::Model
+ attributes :domain, :title, :version, :source_url,
+ :description, :languages, :rules, :contact
+
+ class ContactPresenter < ActiveModelSerializers::Model
+ attributes :email, :account
+
+ def email
+ Setting.site_contact_email
+ end
+
+ def account
+ Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, ''))
+ end
+ end
+
+ def contact
+ ContactPresenter.new
+ end
+
+ def closed_registrations_message
+ Setting.closed_registrations_message
+ end
+
+ def description
+ Setting.site_short_description
+ end
+
+ def extended_description
+ Setting.site_extended_description
+ end
+
+ def privacy_policy
+ Setting.site_terms
+ end
+
+ def domain
+ Rails.configuration.x.local_domain
+ end
+
+ def title
+ Setting.site_title
+ end
+
+ def languages
+ [I18n.default_locale]
end
def rules
@@ -40,8 +72,8 @@ class InstancePresenter
Rails.cache.fetch('sample_accounts', expires_in: 12.hours) { Account.local.discoverable.popular.limit(3) }
end
- def version_number
- Mastodon::Version
+ def version
+ Mastodon::Version.to_s
end
def source_url
diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb
index d7ffb1954a..be818a2de7 100644
--- a/app/presenters/status_relationships_presenter.rb
+++ b/app/presenters/status_relationships_presenter.rb
@@ -33,12 +33,7 @@ class StatusRelationshipsPresenter
active_filters = CustomFilter.cached_filters_for(current_account_id)
@filters_map = statuses.each_with_object({}) do |status, h|
- filter_matches = active_filters.filter_map do |filter, rules|
- next if rules[:keywords].blank?
-
- match = rules[:keywords].match(status.proper.searchable_text)
- FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil?
- end
+ filter_matches = CustomFilter.apply_cached_filters(active_filters, status)
unless filter_matches.empty?
h[status.id] = filter_matches
diff --git a/app/presenters/tag_relationships_presenter.rb b/app/presenters/tag_relationships_presenter.rb
new file mode 100644
index 0000000000..c3bdbaf071
--- /dev/null
+++ b/app/presenters/tag_relationships_presenter.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class TagRelationshipsPresenter
+ attr_reader :following_map
+
+ def initialize(tags, current_account_id = nil, **options)
+ @following_map = begin
+ if current_account_id.nil?
+ {}
+ else
+ TagFollow.select(:tag_id).where(tag_id: tags.map(&:id), account_id: current_account_id).each_with_object({}) { |f, h| h[f.tag_id] = true }.merge(options[:following_map] || {})
+ end
+ end
+ end
+end
diff --git a/app/serializers/activitypub/hashtag_serializer.rb b/app/serializers/activitypub/hashtag_serializer.rb
index 1a56e4dfe4..90929c57f9 100644
--- a/app/serializers/activitypub/hashtag_serializer.rb
+++ b/app/serializers/activitypub/hashtag_serializer.rb
@@ -10,11 +10,11 @@ class ActivityPub::HashtagSerializer < ActivityPub::Serializer
end
def name
- "##{object.name}"
+ "##{object.display_name}"
end
def href
- if object.class.name == 'FeaturedTag'
+ if object.instance_of?(FeaturedTag)
short_account_tag_url(object.account, object.tag)
else
tag_url(object)
diff --git a/app/serializers/activitypub/public_key_serializer.rb b/app/serializers/activitypub/public_key_serializer.rb
index 62ed49e81d..8621517e7c 100644
--- a/app/serializers/activitypub/public_key_serializer.rb
+++ b/app/serializers/activitypub/public_key_serializer.rb
@@ -6,7 +6,7 @@ class ActivityPub::PublicKeySerializer < ActivityPub::Serializer
attributes :id, :owner, :public_key_pem
def id
- [ActivityPub::TagManager.instance.uri_for(object), '#main-key'].join
+ ActivityPub::TagManager.instance.key_uri_for(object)
end
def owner
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 5eab02dbca..aa36f82a10 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -1,12 +1,15 @@
# frozen_string_literal: true
class InitialStateSerializer < ActiveModel::Serializer
+ include RoutingHelper
+
attributes :meta, :compose, :accounts,
:media_attachments, :settings,
:max_toot_chars, :poll_limits,
:languages
has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer
+ has_one :role, serializer: REST::RoleSerializer
def max_toot_chars
StatusLengthValidator::MAX_CHARS
@@ -21,23 +24,24 @@ class InitialStateSerializer < ActiveModel::Serializer
}
end
+ # rubocop:disable Metrics/AbcSize
def meta
store = {
streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
access_token: object.token,
locale: I18n.locale,
- domain: Rails.configuration.x.local_domain,
- title: instance_presenter.site_title,
+ domain: instance_presenter.domain,
+ title: instance_presenter.title,
admin: object.admin&.id&.to_s,
search_enabled: Chewy.enabled?,
repository: Mastodon::Version.repository,
- source_url: Mastodon::Version.source_url,
- version: Mastodon::Version.to_s,
- invites_enabled: Setting.min_invite_role == 'user',
+ source_url: instance_presenter.source_url,
+ version: instance_presenter.version,
limited_federation_mode: Rails.configuration.x.whitelist_mode,
mascot: instance_presenter.mascot&.file&.url,
profile_directory: Setting.profile_directory,
trends: Setting.trends,
+ registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
}
if object.current_account
@@ -54,7 +58,6 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:advanced_layout] = object.current_account.user.setting_advanced_layout
store[:use_blurhash] = object.current_account.user.setting_use_blurhash
store[:use_pending_items] = object.current_account.user.setting_use_pending_items
- store[:is_staff] = object.current_account.user.staff?
store[:trends] = Setting.trends && object.current_account.user.setting_trends
store[:default_content_type] = object.current_account.user.setting_default_content_type
store[:system_emoji_font] = object.current_account.user.setting_system_emoji_font
@@ -69,6 +72,7 @@ class InitialStateSerializer < ActiveModel::Serializer
store
end
+ # rubocop:enable Metrics/AbcSize
def compose
store = {}
diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index 9827323a81..6b52964804 100644
--- a/app/serializers/manifest_serializer.rb
+++ b/app/serializers/manifest_serializer.rb
@@ -22,11 +22,11 @@ class ManifestSerializer < ActiveModel::Serializer
:share_target, :shortcuts
def name
- object.site_title
+ object.title
end
def short_name
- object.site_title
+ object.title
end
def icons
diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb
index 3480e8c5a1..2fbc7b1cb2 100644
--- a/app/serializers/rest/admin/account_serializer.rb
+++ b/app/serializers/rest/admin/account_serializer.rb
@@ -77,6 +77,6 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer
end
def ip
- ips&.first
+ ips&.first&.ip
end
end
diff --git a/app/serializers/rest/admin/canonical_email_block_serializer.rb b/app/serializers/rest/admin/canonical_email_block_serializer.rb
new file mode 100644
index 0000000000..fe385940a7
--- /dev/null
+++ b/app/serializers/rest/admin/canonical_email_block_serializer.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class REST::Admin::CanonicalEmailBlockSerializer < ActiveModel::Serializer
+ attributes :id, :canonical_email_hash
+
+ def id
+ object.id.to_s
+ end
+end
diff --git a/app/serializers/rest/admin/email_domain_block_serializer.rb b/app/serializers/rest/admin/email_domain_block_serializer.rb
new file mode 100644
index 0000000000..a026ff680e
--- /dev/null
+++ b/app/serializers/rest/admin/email_domain_block_serializer.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class REST::Admin::EmailDomainBlockSerializer < ActiveModel::Serializer
+ attributes :id, :domain, :created_at, :history
+
+ def id
+ object.id.to_s
+ end
+end
diff --git a/app/serializers/rest/admin/ip_block_serializer.rb b/app/serializers/rest/admin/ip_block_serializer.rb
new file mode 100644
index 0000000000..6a38f8b566
--- /dev/null
+++ b/app/serializers/rest/admin/ip_block_serializer.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class REST::Admin::IpBlockSerializer < ActiveModel::Serializer
+ attributes :id, :ip, :severity, :comment,
+ :created_at, :expires_at
+
+ def id
+ object.id.to_s
+ end
+
+ def ip
+ "#{object.ip}/#{object.ip.prefix}"
+ end
+end
diff --git a/app/serializers/rest/credential_account_serializer.rb b/app/serializers/rest/credential_account_serializer.rb
index be0d763dc1..27e1db2077 100644
--- a/app/serializers/rest/credential_account_serializer.rb
+++ b/app/serializers/rest/credential_account_serializer.rb
@@ -3,6 +3,8 @@
class REST::CredentialAccountSerializer < REST::AccountSerializer
attributes :source
+ has_one :role, serializer: REST::RoleSerializer
+
def source
user = object.user
@@ -15,4 +17,8 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer
follow_requests_count: FollowRequest.where(target_account: object).limit(40).count,
}
end
+
+ def role
+ object.user_role
+ end
end
diff --git a/app/serializers/rest/featured_tag_serializer.rb b/app/serializers/rest/featured_tag_serializer.rb
index 96adcc7d09..8abcd9b90f 100644
--- a/app/serializers/rest/featured_tag_serializer.rb
+++ b/app/serializers/rest/featured_tag_serializer.rb
@@ -12,4 +12,8 @@ class REST::FeaturedTagSerializer < ActiveModel::Serializer
def url
short_account_tag_url(object.account, object.tag)
end
+
+ def name
+ object.display_name
+ end
end
diff --git a/app/serializers/rest/filter_result_serializer.rb b/app/serializers/rest/filter_result_serializer.rb
index 0ef4db79a8..54ead2f1f1 100644
--- a/app/serializers/rest/filter_result_serializer.rb
+++ b/app/serializers/rest/filter_result_serializer.rb
@@ -3,4 +3,9 @@
class REST::FilterResultSerializer < ActiveModel::Serializer
belongs_to :filter, serializer: REST::FilterSerializer
has_many :keyword_matches
+ has_many :status_matches
+
+ def status_matches
+ object.status_matches&.map(&:to_s)
+ end
end
diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb
index 98d7edb175..8816dd8076 100644
--- a/app/serializers/rest/filter_serializer.rb
+++ b/app/serializers/rest/filter_serializer.rb
@@ -3,6 +3,7 @@
class REST::FilterSerializer < ActiveModel::Serializer
attributes :id, :title, :context, :expires_at, :filter_action
has_many :keywords, serializer: REST::FilterKeywordSerializer, if: :rules_requested?
+ has_many :statuses, serializer: REST::FilterStatusSerializer, if: :rules_requested?
def id
object.id.to_s
diff --git a/app/serializers/rest/filter_status_serializer.rb b/app/serializers/rest/filter_status_serializer.rb
new file mode 100644
index 0000000000..6bcbaa249c
--- /dev/null
+++ b/app/serializers/rest/filter_status_serializer.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class REST::FilterStatusSerializer < ActiveModel::Serializer
+ attributes :id, :status_id
+
+ def id
+ object.id.to_s
+ end
+
+ def status_id
+ object.status_id.to_s
+ end
+end
diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb
index 2c8cd7734a..f4ea494277 100644
--- a/app/serializers/rest/instance_serializer.rb
+++ b/app/serializers/rest/instance_serializer.rb
@@ -1,74 +1,39 @@
# frozen_string_literal: true
class REST::InstanceSerializer < ActiveModel::Serializer
- include RoutingHelper
-
- attributes :uri, :title, :short_description, :description, :email,
- :version, :urls, :stats, :thumbnail, :max_toot_chars, :poll_limits,
- :languages, :registrations, :approval_required, :invites_enabled,
- :configuration
-
- has_one :contact_account, serializer: REST::AccountSerializer
-
- has_many :rules, serializer: REST::RuleSerializer
-
- delegate :contact_account, :rules, to: :instance_presenter
-
- def uri
- Rails.configuration.x.local_domain
- end
-
- def title
- Setting.site_title
- end
+ class ContactSerializer < ActiveModel::Serializer
+ attributes :email
- def short_description
- Setting.site_short_description
+ has_one :account, serializer: REST::AccountSerializer
end
- def description
- Setting.site_description
- end
+ include RoutingHelper
- def email
- Setting.site_contact_email
- end
+ attributes :domain, :title, :version, :source_url, :description,
+ :usage, :thumbnail, :languages, :configuration,
+ :registrations
- def version
- Mastodon::Version.to_s
- end
+ has_one :contact, serializer: ContactSerializer
+ has_many :rules, serializer: REST::RuleSerializer
def thumbnail
- instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.png')
+ object.thumbnail ? full_asset_url(object.thumbnail.file.url) : full_pack_url('media/images/preview.png')
end
- def max_toot_chars
- StatusLengthValidator::MAX_CHARS
- end
-
- def poll_limits
+ def usage
{
- max_options: PollValidator::MAX_OPTIONS,
- max_option_chars: PollValidator::MAX_OPTION_CHARS,
- min_expiration: PollValidator::MIN_EXPIRATION,
- max_expiration: PollValidator::MAX_EXPIRATION,
- }
- end
-
- def stats
- {
- user_count: instance_presenter.user_count,
- status_count: instance_presenter.status_count,
- domain_count: instance_presenter.domain_count,
+ users: {
+ active_month: object.active_user_count(4),
+ },
}
end
- def urls
- { streaming_api: Rails.configuration.x.streaming_api_base_url }
- end
-
def configuration
{
+ urls: {
+ streaming: Rails.configuration.x.streaming_api_base_url,
+ },
+
statuses: {
max_characters: StatusLengthValidator::MAX_CHARS,
max_media_attachments: 4,
@@ -93,25 +58,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer
}
end
- def languages
- [I18n.default_locale]
- end
-
def registrations
- Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode
- end
-
- def approval_required
- Setting.registrations_mode == 'approved'
- end
-
- def invites_enabled
- Setting.min_invite_role == 'user'
- end
-
- private
-
- def instance_presenter
- @instance_presenter ||= InstancePresenter.new
+ {
+ enabled: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
+ approval_required: Setting.registrations_mode == 'approved',
+ }
end
end
diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb
index afd4cddf9b..31fc60eb25 100644
--- a/app/serializers/rest/relationship_serializer.rb
+++ b/app/serializers/rest/relationship_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class REST::RelationshipSerializer < ActiveModel::Serializer
- attributes :id, :following, :showing_reblogs, :notifying, :followed_by,
+ attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by,
:blocking, :blocked_by, :muting, :muting_notifications, :requested,
:domain_blocking, :endorsed, :note
@@ -25,6 +25,11 @@ class REST::RelationshipSerializer < ActiveModel::Serializer
false
end
+ def languages
+ (instance_options[:relationships].following[object.id] || {})[:languages] ||
+ (instance_options[:relationships].requested[object.id] || {})[:languages]
+ end
+
def followed_by
instance_options[:relationships].followed_by[object.id] || false
end
diff --git a/app/serializers/rest/role_serializer.rb b/app/serializers/rest/role_serializer.rb
new file mode 100644
index 0000000000..5b81c6e048
--- /dev/null
+++ b/app/serializers/rest/role_serializer.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class REST::RoleSerializer < ActiveModel::Serializer
+ attributes :id, :name, :permissions, :color, :highlighted
+
+ def id
+ object.id.to_s
+ end
+
+ def permissions
+ object.computed_permissions.to_s
+ end
+end
diff --git a/app/serializers/rest/tag_serializer.rb b/app/serializers/rest/tag_serializer.rb
index 74aa571a4c..7801e77d1f 100644
--- a/app/serializers/rest/tag_serializer.rb
+++ b/app/serializers/rest/tag_serializer.rb
@@ -5,7 +5,25 @@ class REST::TagSerializer < ActiveModel::Serializer
attributes :name, :url, :history
+ attribute :following, if: :current_user?
+
def url
tag_url(object)
end
+
+ def name
+ object.display_name
+ end
+
+ def following
+ if instance_options && instance_options[:relationships]
+ instance_options[:relationships].following_map[object.id] || false
+ else
+ TagFollow.where(tag_id: object.id, account_id: current_user.account_id).exists?
+ end
+ end
+
+ def current_user?
+ !current_user.nil?
+ end
end
diff --git a/app/serializers/rest/translation_serializer.rb b/app/serializers/rest/translation_serializer.rb
new file mode 100644
index 0000000000..a06f23f327
--- /dev/null
+++ b/app/serializers/rest/translation_serializer.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class REST::TranslationSerializer < ActiveModel::Serializer
+ attributes :content, :detected_source_language
+
+ def content
+ object.text
+ end
+end
diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb
new file mode 100644
index 0000000000..fefbed8ee1
--- /dev/null
+++ b/app/serializers/rest/v1/instance_serializer.rb
@@ -0,0 +1,115 @@
+# frozen_string_literal: true
+
+class REST::V1::InstanceSerializer < ActiveModel::Serializer
+ include RoutingHelper
+
+ attributes :uri, :title, :short_description, :description, :email,
+ :version, :urls, :stats, :thumbnail, :max_toot_chars, :poll_limits,
+ :languages, :registrations, :approval_required, :invites_enabled,
+ :configuration
+
+ has_one :contact_account, serializer: REST::AccountSerializer
+
+ has_many :rules, serializer: REST::RuleSerializer
+
+ def uri
+ object.domain
+ end
+
+ def short_description
+ object.description
+ end
+
+ def description
+ Setting.site_description # Legacy
+ end
+
+ def email
+ object.contact.email
+ end
+
+ def contact_account
+ object.contact.account
+ end
+
+ def thumbnail
+ instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.png')
+ end
+
+ def max_toot_chars
+ StatusLengthValidator::MAX_CHARS
+ end
+
+ def poll_limits
+ {
+ max_options: PollValidator::MAX_OPTIONS,
+ max_option_chars: PollValidator::MAX_OPTION_CHARS,
+ min_expiration: PollValidator::MIN_EXPIRATION,
+ max_expiration: PollValidator::MAX_EXPIRATION,
+ }
+ end
+
+ def stats
+ {
+ user_count: instance_presenter.user_count,
+ status_count: instance_presenter.status_count,
+ domain_count: instance_presenter.domain_count,
+ }
+ end
+
+ def urls
+ { streaming_api: Rails.configuration.x.streaming_api_base_url }
+ end
+
+ def usage
+ {
+ users: {
+ active_month: instance_presenter.active_user_count(4),
+ },
+ }
+ 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 registrations
+ Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode
+ end
+
+ def approval_required
+ Setting.registrations_mode == 'approved'
+ end
+
+ def invites_enabled
+ UserRole.everyone.can?(:invite_users)
+ end
+
+ private
+
+ def instance_presenter
+ @instance_presenter ||= InstancePresenter.new
+ end
+end
diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb
index 6fe4b6593a..4dcae20ebf 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -61,11 +61,11 @@ class AccountSearchService < BaseService
end
def advanced_search_results
- Account.advanced_search_for(terms_for_query, account, limit_for_non_exact_results, options[:following], offset)
+ Account.advanced_search_for(terms_for_query, account, limit: limit_for_non_exact_results, following: options[:following], offset: offset)
end
def simple_search_results
- Account.search_for(terms_for_query, limit_for_non_exact_results, offset)
+ Account.search_for(terms_for_query, limit: limit_for_non_exact_results, offset: offset)
end
def from_elasticsearch
diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb
index 9d01f53868..ca7a8c6ca8 100644
--- a/app/services/activitypub/fetch_remote_account_service.rb
+++ b/app/services/activitypub/fetch_remote_account_service.rb
@@ -1,66 +1,12 @@
# frozen_string_literal: true
-class ActivityPub::FetchRemoteAccountService < BaseService
- include JsonLdHelper
- include DomainControlHelper
- include WebfingerHelper
-
- SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
-
+class ActivityPub::FetchRemoteAccountService < ActivityPub::FetchRemoteActorService
# Does a WebFinger roundtrip on each call, unless `only_key` is true
- def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false)
- return if domain_not_allowed?(uri)
- return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri)
-
- @json = begin
- if prefetched_body.nil?
- fetch_resource(uri, id)
- else
- body_to_json(prefetched_body, compare_id: id ? uri : nil)
- end
- end
-
- return if !supported_context? || !expected_type? || (break_on_redirect && @json['movedTo'].present?)
-
- @uri = @json['id']
- @username = @json['preferredUsername']
- @domain = Addressable::URI.parse(@uri).normalized_host
-
- return unless only_key || verified_webfinger?
-
- ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key)
- rescue Oj::ParseError
- nil
- end
-
- private
-
- def verified_webfinger?
- webfinger = webfinger!("acct:#{@username}@#{@domain}")
- confirmed_username, confirmed_domain = split_acct(webfinger.subject)
-
- return webfinger.link('self', 'href') == @uri if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero?
-
- webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}")
- @username, @domain = split_acct(webfinger.subject)
-
- return false unless @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero?
- return false if webfinger.link('self', 'href') != @uri
-
- true
- rescue Webfinger::Error
- false
- end
-
- def split_acct(acct)
- acct.gsub(/\Aacct:/, '').split('@')
- end
-
- def supported_context?
- super(@json)
- end
+ def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true)
+ actor = super
+ return actor if actor.nil? || actor.is_a?(Account)
- def expected_type?
- equals_or_includes_any?(@json['type'], SUPPORTED_TYPES)
+ Rails.logger.debug "Fetching account #{uri} failed: Expected Account, got #{actor.class.name}"
+ raise Error, "Expected Account, got #{actor.class.name}" unless suppress_errors
end
end
diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb
new file mode 100644
index 0000000000..17bf2f2876
--- /dev/null
+++ b/app/services/activitypub/fetch_remote_actor_service.rb
@@ -0,0 +1,80 @@
+# frozen_string_literal: true
+
+class ActivityPub::FetchRemoteActorService < BaseService
+ include JsonLdHelper
+ include DomainControlHelper
+ include WebfingerHelper
+
+ class Error < StandardError; end
+
+ SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
+
+ # Does a WebFinger roundtrip on each call, unless `only_key` is true
+ def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true)
+ return if domain_not_allowed?(uri)
+ return ActivityPub::TagManager.instance.uri_to_actor(uri) if ActivityPub::TagManager.instance.local_uri?(uri)
+
+ @json = begin
+ if prefetched_body.nil?
+ fetch_resource(uri, id)
+ else
+ body_to_json(prefetched_body, compare_id: id ? uri : nil)
+ end
+ rescue Oj::ParseError
+ raise Error, "Error parsing JSON-LD document #{uri}"
+ end
+
+ raise Error, "Error fetching actor JSON at #{uri}" if @json.nil?
+ raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?
+ raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type?
+ raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present?
+
+ @uri = @json['id']
+ @username = @json['preferredUsername']
+ @domain = Addressable::URI.parse(@uri).normalized_host
+
+ check_webfinger! unless only_key
+
+ ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key)
+ rescue Error => e
+ Rails.logger.debug "Fetching actor #{uri} failed: #{e.message}"
+ raise unless suppress_errors
+ end
+
+ private
+
+ def check_webfinger!
+ webfinger = webfinger!("acct:#{@username}@#{@domain}")
+ confirmed_username, confirmed_domain = split_acct(webfinger.subject)
+
+ if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero?
+ raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri
+ return
+ end
+
+ webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}")
+ @username, @domain = split_acct(webfinger.subject)
+
+ unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?
+ raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})"
+ end
+
+ raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri
+ rescue Webfinger::RedirectError => e
+ raise Error, e.message
+ rescue Webfinger::Error => e
+ raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}"
+ end
+
+ def split_acct(acct)
+ acct.gsub(/\Aacct:/, '').split('@')
+ end
+
+ def supported_context?
+ super(@json)
+ end
+
+ def expected_type?
+ equals_or_includes_any?(@json['type'], SUPPORTED_TYPES)
+ end
+end
diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb
index c48288b3ba..32e82b47a5 100644
--- a/app/services/activitypub/fetch_remote_key_service.rb
+++ b/app/services/activitypub/fetch_remote_key_service.rb
@@ -3,17 +3,19 @@
class ActivityPub::FetchRemoteKeyService < BaseService
include JsonLdHelper
- # Returns account that owns the key
- def call(uri, id: true, prefetched_body: nil)
- return if uri.blank?
+ class Error < StandardError; end
+
+ # Returns actor that owns the key
+ def call(uri, id: true, prefetched_body: nil, suppress_errors: true)
+ raise Error, 'No key URI given' if uri.blank?
if prefetched_body.nil?
if id
@json = fetch_resource_without_id_validation(uri)
- if person?
+ if actor_type?
@json = fetch_resource(@json['id'], true)
elsif uri != @json['id']
- return
+ raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}"
end
else
@json = fetch_resource(uri, id)
@@ -22,30 +24,38 @@ class ActivityPub::FetchRemoteKeyService < BaseService
@json = body_to_json(prefetched_body, compare_id: id ? uri : nil)
end
- return unless supported_context?(@json) && expected_type?
- return find_account(@json['id'], @json) if person?
+ raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil?
+ raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json)
+ raise Error, "Unexpected object type for key #{uri}" unless expected_type?
+ return find_actor(@json['id'], @json, suppress_errors) if actor_type?
@owner = fetch_resource(owner_uri, true)
- return unless supported_context?(@owner) && confirmed_owner?
+ raise Error, "Unable to fetch actor JSON #{owner_uri}" if @owner.nil?
+ raise Error, "Unsupported JSON-LD context for document #{owner_uri}" unless supported_context?(@owner)
+ raise Error, "Unexpected object type for actor #{owner_uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_owner_type?
+ raise Error, "publicKey id for #{owner_uri} does not correspond to #{@json['id']}" unless confirmed_owner?
- find_account(owner_uri, @owner)
+ find_actor(owner_uri, @owner, suppress_errors)
+ rescue Error => e
+ Rails.logger.debug "Fetching key #{uri} failed: #{e.message}"
+ raise unless suppress_errors
end
private
- def find_account(uri, prefetched_body)
- account = ActivityPub::TagManager.instance.uri_to_resource(uri, Account)
- account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body)
- account
+ def find_actor(uri, prefetched_body, suppress_errors)
+ actor = ActivityPub::TagManager.instance.uri_to_actor(uri)
+ actor ||= ActivityPub::FetchRemoteActorService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors)
+ actor
end
def expected_type?
- person? || public_key?
+ actor_type? || public_key?
end
- def person?
- equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES)
+ def actor_type?
+ equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES)
end
def public_key?
@@ -56,7 +66,11 @@ class ActivityPub::FetchRemoteKeyService < BaseService
@owner_uri ||= value_or_id(@json['owner'])
end
+ def expected_owner_type?
+ equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES)
+ end
+
def confirmed_owner?
- equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && value_or_id(@owner['publicKey']) == @json['id']
+ value_or_id(@owner['publicKey']) == @json['id']
end
end
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 4449a54270..456b3524b5 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -32,8 +32,6 @@ class ActivityPub::ProcessAccountService < BaseService
process_duplicate_accounts! if @options[:verified_webfinger]
end
- return if @account.nil?
-
after_protocol_change! if protocol_changed?
after_key_change! if key_changed? && !@options[:signed_with_known_key]
clear_tombstones! if key_changed?
@@ -105,11 +103,13 @@ class ActivityPub::ProcessAccountService < BaseService
def set_fetchable_attributes!
begin
@account.avatar_remote_url = image_url('icon') || '' unless skip_download?
+ @account.avatar = nil if @account.avatar_remote_url.blank?
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?
+ @account.header = nil if @account.header_remote_url.blank?
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id)
end
diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb
index eb008c40a2..fffe301957 100644
--- a/app/services/activitypub/process_collection_service.rb
+++ b/app/services/activitypub/process_collection_service.rb
@@ -3,8 +3,8 @@
class ActivityPub::ProcessCollectionService < BaseService
include JsonLdHelper
- def call(body, account, **options)
- @account = account
+ def call(body, actor, **options)
+ @account = actor
@json = original_json = Oj.load(body, mode: :strict)
@options = options
@@ -16,6 +16,7 @@ class ActivityPub::ProcessCollectionService < BaseService
end
return if !supported_context? || (different_actor? && verify_account!.nil?) || suspended_actor? || @account.local?
+ return unless @account.is_a?(Account)
if @json['signature'].present?
# We have verified the signature, but in the compaction step above, might
@@ -66,8 +67,10 @@ class ActivityPub::ProcessCollectionService < BaseService
end
def verify_account!
- @options[:relayed_through_account] = @account
- @account = ActivityPub::LinkedDataSignature.new(@json).verify_account!
+ @options[:relayed_through_actor] = @account
+ @account = ActivityPub::LinkedDataSignature.new(@json).verify_actor!
+ @account = nil unless @account.is_a?(Account)
+ @account
rescue JSON::LD::JsonLdError => e
Rails.logger.debug "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}"
nil
diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb
index e006941577..3833327bbc 100644
--- a/app/services/app_sign_up_service.rb
+++ b/app/services/app_sign_up_service.rb
@@ -2,23 +2,67 @@
class AppSignUpService < BaseService
def call(app, remote_ip, params)
- return unless allowed_registrations?
+ @app = app
+ @remote_ip = remote_ip
+ @params = params
- user_params = params.slice(:email, :password, :agreement, :locale)
- account_params = params.slice(:username)
- invite_request_params = { text: params[:reason] }
- user = User.create!(user_params.merge(created_by_application: app, sign_up_ip: remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params))
+ raise Mastodon::NotPermittedError unless allowed_registrations?
- Doorkeeper::AccessToken.create!(application: app,
- resource_owner_id: user.id,
- scopes: app.scopes,
- expires_in: Doorkeeper.configuration.access_token_expires_in,
- use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?)
+ ApplicationRecord.transaction do
+ create_user!
+ create_access_token!
+ end
+
+ @access_token
end
private
+ def create_user!
+ @user = User.create!(
+ user_params.merge(created_by_application: @app, sign_up_ip: @remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params)
+ )
+ end
+
+ def create_access_token!
+ @access_token = Doorkeeper::AccessToken.create!(
+ application: @app,
+ resource_owner_id: @user.id,
+ scopes: @app.scopes,
+ expires_in: Doorkeeper.configuration.access_token_expires_in,
+ use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?
+ )
+ end
+
+ def user_params
+ @params.slice(:email, :password, :agreement, :locale)
+ end
+
+ def account_params
+ @params.slice(:username)
+ end
+
+ def invite_request_params
+ { text: @params[:reason] }
+ end
+
def allowed_registrations?
- Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode
+ registrations_open? && !single_user_mode? && !omniauth_only? && !ip_blocked?
+ end
+
+ def registrations_open?
+ Setting.registrations_mode != 'none'
+ end
+
+ def single_user_mode?
+ Rails.configuration.x.single_user_mode
+ end
+
+ def omniauth_only?
+ ENV['OMNIAUTH_ONLY'] == 'true'
+ end
+
+ def ip_blocked?
+ IpBlock.where(severity: :sign_up_block).where('ip >>= ?', @remote_ip.to_s).exists?
end
end
diff --git a/app/services/appeal_service.rb b/app/services/appeal_service.rb
index cef9be05fd..399a053d6a 100644
--- a/app/services/appeal_service.rb
+++ b/app/services/appeal_service.rb
@@ -22,7 +22,7 @@ class AppealService < BaseService
end
def notify_staff!
- User.staff.includes(:account).each do |u|
+ User.those_who_can(:manage_appeals).includes(:account).each do |u|
AdminMailer.new_appeal(u.account, @appeal).deliver_later if u.allows_appeal_emails?
end
end
diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb
index a02e55a6df..126c0fa2e5 100644
--- a/app/services/bootstrap_timeline_service.rb
+++ b/app/services/bootstrap_timeline_service.rb
@@ -17,7 +17,7 @@ class BootstrapTimelineService < BaseService
end
def notify_staff!
- User.staff.includes(:account).find_each do |user|
+ User.those_who_can(:manage_users).includes(:account).find_each do |user|
LocalNotificationWorker.perform_async(user.account_id, @source_account.id, 'Account', 'admin.sign_up')
end
end
diff --git a/app/services/clear_domain_media_service.rb b/app/services/clear_domain_media_service.rb
index 704cfb71a6..9e70ebe51c 100644
--- a/app/services/clear_domain_media_service.rb
+++ b/app/services/clear_domain_media_service.rb
@@ -10,24 +10,18 @@ class ClearDomainMediaService < BaseService
private
- def invalidate_association_caches!
+ def invalidate_association_caches!(status_ids)
# Normally, associated models of a status are immutable (except for accounts)
# so they are aggressively cached. After updating the media attachments to no
# longer point to a local file, we need to clear the cache to make those
# changes appear in the API and UI
- @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") }
+ Rails.cache.delete_multi(status_ids.map { |id| "statuses/#{id}" })
end
def clear_media!
- @affected_status_ids = []
-
- begin
- clear_account_images!
- clear_account_attachments!
- clear_emojos!
- ensure
- invalidate_association_caches!
- end
+ clear_account_images!
+ clear_account_attachments!
+ clear_emojos!
end
def clear_account_images!
@@ -39,12 +33,18 @@ class ClearDomainMediaService < BaseService
end
def clear_account_attachments!
- media_from_blocked_domain.reorder(nil).find_each do |attachment|
- @affected_status_ids << attachment.status_id if attachment.status_id.present?
+ media_from_blocked_domain.reorder(nil).find_in_batches do |attachments|
+ affected_status_ids = []
+
+ attachments.each do |attachment|
+ affected_status_ids << attachment.status_id if attachment.status_id.present?
+
+ attachment.file.destroy if attachment.file&.exists?
+ attachment.type = :unknown
+ attachment.save
+ end
- attachment.file.destroy if attachment.file&.exists?
- attachment.type = :unknown
- attachment.save
+ invalidate_association_caches!(affected_status_ids) unless affected_status_ids.empty?
end
end
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index 9d6d7e7848..1df522459e 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -16,6 +16,7 @@ class FanOutOnWriteService < BaseService
check_race_condition!
fan_out_to_local_recipients!
+ fan_out_to_public_recipients! if broadcastable?
fan_out_to_public_streams! if broadcastable?
end
@@ -51,6 +52,10 @@ class FanOutOnWriteService < BaseService
end
end
+ def fan_out_to_public_recipients!
+ deliver_to_hashtag_followers!
+ end
+
def fan_out_to_public_streams!
broadcast_to_hashtag_streams!
broadcast_to_public_streams!
@@ -85,6 +90,14 @@ class FanOutOnWriteService < BaseService
end
end
+ def deliver_to_hashtag_followers!
+ TagFollow.where(tag_id: @status.tags.map(&:id)).select(:id, :account_id).reorder(nil).find_in_batches do |follows|
+ FeedInsertWorker.push_bulk(follows) do |follow|
+ [@status.id, follow.account_id, 'tags', { 'update' => update? }]
+ end
+ end
+ end
+
def deliver_to_lists!
@account.lists_for_local_distribution.select(:id).reorder(nil).find_in_batches do |lists|
FeedInsertWorker.push_bulk(lists) do |list|
@@ -108,7 +121,7 @@ class FanOutOnWriteService < BaseService
end
def broadcast_to_hashtag_streams!
- @status.tags.pluck(:name).each do |hashtag|
+ @status.tags.map(&:name).each do |hashtag|
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", anonymous_payload)
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", anonymous_payload) if @status.local?
end
diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb
index 6c0093cd45..73204e55db 100644
--- a/app/services/fetch_resource_service.rb
+++ b/app/services/fetch_resource_service.rb
@@ -47,7 +47,7 @@ class FetchResourceService < BaseService
body = response.body_with_limit
json = body_to_json(body)
- [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) || expected_type?(json))
+ [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) || expected_type?(json))
elsif !terminal
link_header = response['Link'] && parse_link_header(response)
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index ed28e13718..feea40e3c0 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -11,6 +11,7 @@ class FollowService < BaseService
# @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
+ # @option [Array] :languages Which languages to allow on the home feed from this account, defaults to all
# @option [Boolean] :bypass_locked
# @option [Boolean] :bypass_limit Allow following past the total follow number
# @option [Boolean] :with_rate_limit
@@ -57,15 +58,15 @@ class FollowService < BaseService
end
def change_follow_options!
- @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify])
+ @source_account.follow!(@target_account, **follow_options)
end
def change_follow_request_options!
- @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify])
+ @source_account.request_follow!(@target_account, **follow_options)
end
def request_follow!
- follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])
+ follow_request = @source_account.request_follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]))
if @target_account.local?
LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name, 'follow_request')
@@ -77,7 +78,7 @@ class FollowService < BaseService
end
def direct_follow!
- follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])
+ follow = @source_account.follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]))
LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name, 'follow')
MergeWorker.perform_async(@target_account.id, @source_account.id)
@@ -88,4 +89,8 @@ class FollowService < BaseService
def build_json(follow_request)
Oj.dump(serialize_payload(follow_request, ActivityPub::FollowSerializer))
end
+
+ def follow_options
+ @options.slice(:reblogs, :notify, :languages)
+ end
end
diff --git a/app/services/import_service.rb b/app/services/import_service.rb
index 8e6640b9dd..676c37bde4 100644
--- a/app/services/import_service.rb
+++ b/app/services/import_service.rb
@@ -27,7 +27,7 @@ class ImportService < BaseService
def import_follows!
parse_import_data!(['Account address'])
- import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true })
+ import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true }, notify: { header: 'Notify on new posts', default: false }, languages: { header: 'Languages', default: nil })
end
def import_blocks!
diff --git a/app/services/keys/claim_service.rb b/app/services/keys/claim_service.rb
index 69568a0d19..ae9e24a24f 100644
--- a/app/services/keys/claim_service.rb
+++ b/app/services/keys/claim_service.rb
@@ -72,7 +72,7 @@ class Keys::ClaimService < BaseService
def build_post_request(uri)
Request.new(:post, uri).tap do |request|
- request.on_behalf_of(@source_account, :uri)
+ request.on_behalf_of(@source_account)
request.add_headers(HEADERS)
end
end
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index d30b338765..c7454fc609 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -76,7 +76,7 @@ class NotifyService < BaseService
end
def from_staff?
- @notification.from_account.local? && @notification.from_account.user.present? && @notification.from_account.user.staff?
+ @notification.from_account.local? && @notification.from_account.user.present? && @notification.from_account.user_role&.overrides?(@recipient.user_role)
end
def optional_non_following_and_direct?
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index 8c63b611d3..c9c158af1c 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -38,7 +38,7 @@ class ProcessMentionsService < BaseService
mentioned_account = Account.find_remote(username, domain)
# Unapproved and unconfirmed accounts should not be mentionable
- next if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?)
+ next match if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?)
# If the account cannot be found or isn't the right protocol,
# first try to resolve it
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index bd67ff8d3e..8c92cf3346 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -38,7 +38,7 @@ class ReportService < BaseService
def notify_staff!
return if @report.unresolved_siblings?
- User.staff.includes(:account).each do |u|
+ User.those_who_can(:manage_reports).includes(:account).each do |u|
LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report')
AdminMailer.new_report(u.account, @report).deliver_later if u.allows_report_emails?
end
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index b55e454094..e3b370968f 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true
class ResolveAccountService < BaseService
- include JsonLdHelper
include DomainControlHelper
include WebfingerHelper
include Redisable
@@ -13,6 +12,7 @@ class ResolveAccountService < BaseService
# @param [Hash] options
# @option options [Boolean] :redirected Do not follow further Webfinger redirects
# @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data
+ # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error
# @return [Account]
def call(uri, options = {})
return if uri.blank?
@@ -52,15 +52,15 @@ class ResolveAccountService < BaseService
# either needs to be created, or updated from fresh data
fetch_account!
- rescue Webfinger::Error, Oj::ParseError => e
+ rescue Webfinger::Error => e
Rails.logger.debug "Webfinger query for #{@uri} failed: #{e}"
- nil
+ raise unless @options[:suppress_errors]
end
private
def process_options!(uri, options)
- @options = options
+ @options = { suppress_errors: true }.merge(options)
if uri.is_a?(Account)
@account = uri
@@ -96,7 +96,7 @@ class ResolveAccountService < BaseService
@username, @domain = split_acct(@webfinger.subject)
unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?
- raise Webfinger::RedirectError, "The URI #{uri} tries to hijack #{@username}@#{@domain}"
+ raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})"
end
rescue Webfinger::GoneError
@gone = true
@@ -110,7 +110,7 @@ class ResolveAccountService < BaseService
return unless activitypub_ready?
with_lock("resolve:#{@username}@#{@domain}") do
- @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url)
+ @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors])
end
@account
diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb
index e2c745673e..37c856cf86 100644
--- a/app/services/resolve_url_service.rb
+++ b/app/services/resolve_url_service.rb
@@ -20,8 +20,8 @@ class ResolveURLService < BaseService
private
def process_url
- if equals_or_includes_any?(type, ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES)
- ActivityPub::FetchRemoteAccountService.new.call(resource_url, prefetched_body: body)
+ if equals_or_includes_any?(type, ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES)
+ ActivityPub::FetchRemoteActorService.new.call(resource_url, prefetched_body: body)
elsif equals_or_includes_any?(type, ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
status = FetchRemoteStatusService.new.call(resource_url, body)
authorize_with @on_behalf_of, status, :show? unless status.nil?
diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb
new file mode 100644
index 0000000000..539a0d9db5
--- /dev/null
+++ b/app/services/translate_status_service.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class TranslateStatusService < BaseService
+ CACHE_TTL = 1.day.freeze
+
+ include FormattingHelper
+
+ def call(status, target_language)
+ raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility?
+
+ @status = status
+ @content = status_content_format(@status)
+ @target_language = target_language
+
+ Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) }
+ end
+
+ private
+
+ def translation_backend
+ TranslationService.configured
+ end
+
+ def content_hash
+ Digest::SHA256.base64digest(@content)
+ end
+end
diff --git a/app/validators/language_validator.rb b/app/validators/language_validator.rb
new file mode 100644
index 0000000000..b723e1a408
--- /dev/null
+++ b/app/validators/language_validator.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class LanguageValidator < ActiveModel::EachValidator
+ include LanguagesHelper
+
+ def validate_each(record, attribute, value)
+ record.errors.add(attribute, :invalid) unless valid?(value)
+ end
+
+ private
+
+ def valid?(str)
+ if str.nil?
+ true
+ elsif str.is_a?(Array)
+ str.all? { |x| valid_locale?(x) }
+ else
+ valid_locale?(str)
+ end
+ end
+end
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index 0b75f159a4..a75549120f 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -8,7 +8,7 @@
.column-0
.public-account-header.public-account-header--no-bar
.public-account-header__image
- = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title, class: 'parallax'
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title, class: 'parallax'
.column-1
.landing-page__call-to-action{ dir: 'ltr' }
@@ -30,14 +30,14 @@
.contact-widget
%h4= t 'about.administered_by'
- = account_link_to(@instance_presenter.contact_account)
+ = account_link_to(@instance_presenter.contact.account)
- - if @instance_presenter.site_contact_email.present?
+ - if @instance_presenter.contact.email.present?
%h4
= succeed ':' do
= t 'about.contact'
- = mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email
+ = mail_to @instance_presenter.contact.email, nil, title: @instance_presenter.contact.email
.column-3
= render 'application/flashes'
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index fb292941b1..8d09a2938b 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -53,11 +53,11 @@
.hero-widget
.hero-widget__img
- = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title
.hero-widget__text
%p
- = @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html')
+ = @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html')
= link_to about_more_path do
= t('about.learn_more')
= fa_icon 'angle-double-right'
@@ -66,7 +66,7 @@
.hero-widget__footer__column
%h4= t 'about.administered_by'
- = account_link_to @instance_presenter.contact_account
+ = account_link_to @instance_presenter.contact.account
.hero-widget__footer__column
%h4= t 'about.server_stats'
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index 72e9c66111..7fa688bd35 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -75,7 +75,7 @@
= link_to short_account_tag_path(@account, featured_tag.tag) do
%h4
= fa_icon 'hashtag'
- = featured_tag.name
+ = featured_tag.display_name
%small
- if featured_tag.last_status_at.nil?
= t('accounts.nothing_here')
diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby
index fd45a8b2b0..34e29d483f 100644
--- a/app/views/accounts/show.rss.ruby
+++ b/app/views/accounts/show.rss.ruby
@@ -28,7 +28,7 @@ RSS::Builder.build do |doc|
end
status.tags.each do |tag|
- item.category(tag.name)
+ item.category(tag.display_name)
end
end
end
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index 0290df7de1..9571f27b44 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -1,48 +1,40 @@
- content_for :page_title do
= t('admin.accounts.title')
-.filters
- .filter-subset
- %strong= t('admin.accounts.location.title')
- %ul
- %li= filter_link_to t('generic.all'), origin: nil
- %li= filter_link_to t('admin.accounts.location.local'), origin: 'local'
- %li= filter_link_to t('admin.accounts.location.remote'), origin: 'remote'
- .filter-subset
- %strong= t('admin.accounts.moderation.title')
- %ul
- %li= filter_link_to t('generic.all'), status: nil
- %li= filter_link_to t('admin.accounts.moderation.active'), status: 'active'
- %li= filter_link_to t('admin.accounts.moderation.suspended'), status: 'suspended'
- %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{number_with_delimiter(User.pending.count)})"], ' '), status: 'pending'
- .filter-subset
- %strong= t('admin.accounts.role')
- %ul
- %li= filter_link_to t('admin.accounts.moderation.all'), permissions: nil
- %li= filter_link_to t('admin.accounts.roles.staff'), permissions: 'staff'
- .filter-subset
- %strong= t 'generic.order_by'
- %ul
- %li= filter_link_to t('relationships.most_recent'), order: nil
- %li= filter_link_to t('relationships.last_active'), order: 'active'
-
= form_tag admin_accounts_url, method: 'GET', class: 'simple_form' do
- .fields-group
- - (AccountFilter::KEYS - %i(origin status permissions)).each do |key|
- - if params[key].present?
- = hidden_field_tag key, params[key]
+ .filters
+ .filter-subset.filter-subset--with-select
+ %strong= t('admin.accounts.location.title')
+ .input.select.optional
+ = select_tag :origin, options_for_select([[t('admin.accounts.location.local'), 'local'], [t('admin.accounts.location.remote'), 'remote']], params[:origin]), prompt: I18n.t('generic.all')
+ .filter-subset.filter-subset--with-select
+ %strong= t('admin.accounts.moderation.title')
+ .input.select.optional
+ = select_tag :status, options_for_select([[t('admin.accounts.moderation.active'), 'active'], [t('admin.accounts.moderation.silenced'), 'silenced'], [t('admin.accounts.moderation.suspended'), 'suspended'], [safe_join([t('admin.accounts.moderation.pending'), "(#{number_with_delimiter(User.pending.count)})"], ' '), 'pending']], params[:status]), prompt: I18n.t('generic.all')
+ .filter-subset.filter-subset--with-select
+ %strong= t('admin.accounts.role')
+ .input.select.optional
+ = select_tag :role_ids, options_from_collection_for_select(UserRole.assignable, :id, :name, params[:role_ids]), prompt: I18n.t('admin.accounts.moderation.all')
+ .filter-subset.filter-subset--with-select
+ %strong= t 'generic.order_by'
+ .input.select
+ = select_tag :order, options_for_select([[t('relationships.most_recent'), 'recent'], [t('relationships.last_active'), 'active']], params[:order])
+ .fields-group
- %i(username by_domain display_name email ip).each do |key|
- unless key == :by_domain && params[:origin] != 'remote'
.input.string.optional
= text_field_tag key, params[key], class: 'string optional', placeholder: I18n.t("admin.accounts.#{key}")
- .actions
- %button.button= t('admin.accounts.search')
- = link_to t('admin.accounts.reset'), admin_accounts_path, class: 'button negative'
+ .actions
+ %button.button= t('admin.accounts.search')
+ = link_to t('admin.accounts.reset'), admin_accounts_path, class: 'button negative'
+
+%hr.spacer/
= form_for(@form, url: batch_admin_accounts_path) do |f|
= hidden_field_tag :page, params[:page] || 1
+ = hidden_field_tag :select_all_matching, '0'
- AccountFilter::KEYS.each do |key|
= hidden_field_tag key, params[key] if params[key].present?
@@ -58,6 +50,14 @@
= f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }
= f.button safe_join([fa_icon('lock'), t('admin.accounts.perform_full_suspension')]), name: :suspend, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }
+ - if @accounts.total_count > @accounts.size
+ .batch-table__select-all
+ .not-selected.active
+ %span= t('generic.all_items_on_page_selected_html', count: @accounts.size)
+ %button{ type: 'button' }= t('generic.select_all_matching_items', count: @accounts.total_count)
+ .selected
+ %span= t('generic.all_matching_items_selected_html', count: @accounts.total_count)
+ %button{ type: 'button' }= t('generic.deselect')
.batch-table__body
- if @accounts.empty?
= nothing_here 'nothing-here--under-tabs'
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index a69832b046..dc3b359566 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -92,10 +92,13 @@
%tr
%th= t('admin.accounts.role')
- %td= t("admin.accounts.roles.#{@account.user&.role}")
%td
- = table_link_to 'angle-double-up', t('admin.accounts.promote'), promote_admin_account_role_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:promote, @account.user)
- = table_link_to 'angle-double-down', t('admin.accounts.demote'), demote_admin_account_role_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:demote, @account.user)
+ - if @account.user_role&.everyone?
+ = t('admin.accounts.no_role_assigned')
+ - else
+ = @account.user_role&.name
+ %td
+ = table_link_to 'vcard', t('admin.accounts.change_role.label'), admin_user_role_path(@account.user) if can?(:change_role, @account.user)
%tr
%th{ rowspan: can?(:create, :email_domain_block) ? 3 : 2 }= t('admin.accounts.email')
diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml
index 03d5bffb94..7869570e6e 100644
--- a/app/views/admin/action_logs/index.html.haml
+++ b/app/views/admin/action_logs/index.html.haml
@@ -8,7 +8,7 @@
.filter-subset.filter-subset--with-select
%strong= t('admin.action_logs.filter_by_user')
.input.select.optional
- = select_tag :account_id, options_from_collection_for_select(Account.joins(:user).merge(User.staff), :id, :username, params[:account_id]), prompt: I18n.t('admin.accounts.moderation.all')
+ = select_tag :account_id, options_from_collection_for_select(@auditable_accounts, :id, :username, params[:account_id]), prompt: I18n.t('admin.accounts.moderation.all')
.filter-subset.filter-subset--with-select
%strong= t('admin.action_logs.filter_by_action')
diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml
index e8cc1c400d..00c1927dfe 100644
--- a/app/views/admin/instances/show.html.haml
+++ b/app/views/admin/instances/show.html.haml
@@ -1,32 +1,33 @@
- content_for :page_title do
= @instance.domain
-- content_for :heading_actions do
- = l(@time_period.first)
- = ' - '
- = l(@time_period.last)
+- if current_user.can?(:view_dashboard)
+ - content_for :heading_actions do
+ = l(@time_period.first)
+ = ' - '
+ = l(@time_period.last)
-%p
- = fa_icon 'info fw'
- = t('admin.instances.totals_time_period_hint_html')
+ %p
+ = fa_icon 'info fw'
+ = t('admin.instances.totals_time_period_hint_html')
-.dashboard
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_accounts_measure'), href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain)
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_statuses', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_statuses_measure')
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_media_attachments', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_media_attachments_measure')
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_follows', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_follows_measure')
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_followers', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_followers_measure')
- .dashboard__item
- = react_admin_component :counter, measure: 'instance_reports', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_reports_measure'), href: admin_reports_path(by_target_domain: @instance.domain)
- .dashboard__item
- = react_admin_component :dimension, dimension: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_accounts_dimension')
- .dashboard__item
- = react_admin_component :dimension, dimension: 'instance_languages', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_languages_dimension')
+ .dashboard
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_accounts_measure'), href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain)
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_statuses', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_statuses_measure')
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_media_attachments', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_media_attachments_measure')
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_follows', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_follows_measure')
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_followers', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_followers_measure')
+ .dashboard__item
+ = react_admin_component :counter, measure: 'instance_reports', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_reports_measure'), href: admin_reports_path(by_target_domain: @instance.domain)
+ .dashboard__item
+ = react_admin_component :dimension, dimension: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_accounts_dimension')
+ .dashboard__item
+ = react_admin_component :dimension, dimension: 'instance_languages', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_languages_dimension')
%hr.spacer/
diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml
new file mode 100644
index 0000000000..31f78f2405
--- /dev/null
+++ b/app/views/admin/roles/_form.html.haml
@@ -0,0 +1,40 @@
+= simple_form_for @role, url: @role.new_record? ? admin_roles_path : admin_role_path(@role) do |f|
+ = render 'shared/error_messages', object: @role
+
+ - if @role.everyone?
+ .flash-message.info
+ = t('admin.roles.everyone_full_description_html')
+ - else
+ .fields-group
+ = f.input :name, wrapper: :with_label
+
+ - unless current_user.role.id == @role.id
+ .fields-group
+ = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 }
+
+ .fields-group
+ = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000', type: 'color' }
+
+ %hr.spacer/
+
+ .fields-group
+ = f.input :highlighted, wrapper: :with_label
+
+ %hr.spacer/
+
+ - unless current_user.role.id == @role.id
+
+ .field-group
+ .input.with_block_label
+ %label= t('simple_form.labels.user_role.permissions_as_keys')
+ %span.hint= t('simple_form.hints.user_role.permissions_as_keys')
+
+ - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions|
+ %h4= t(category, scope: 'admin.roles.categories')
+
+ = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 }
+
+ %hr.spacer/
+
+ .actions
+ = f.button :button, @role.new_record? ? t('admin.roles.add_new') : t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/roles/_role.html.haml b/app/views/admin/roles/_role.html.haml
new file mode 100644
index 0000000000..798d8d8b4f
--- /dev/null
+++ b/app/views/admin/roles/_role.html.haml
@@ -0,0 +1,30 @@
+.announcements-list__item
+ - if can?(:update, role)
+ = link_to edit_admin_role_path(role), class: 'announcements-list__item__title' do
+ %span.user-role{ class: "user-role-#{role.id}" }
+ = fa_icon 'users fw'
+
+ - if role.everyone?
+ = t('admin.roles.everyone')
+ - else
+ = role.name
+ - else
+ %span.announcements-list__item__title
+ %span.user-role{ class: "user-role-#{role.id}" }
+ = fa_icon 'users fw'
+
+ - if role.everyone?
+ = t('admin.roles.everyone')
+ - else
+ = role.name
+
+ .announcements-list__item__action-bar
+ .announcements-list__item__meta
+ - if role.everyone?
+ = t('admin.roles.everyone_full_description_html')
+ - else
+ = link_to t('admin.roles.assigned_users', count: role.users.count), admin_accounts_path(role_ids: role.id)
+ •
+ %abbr{ title: role.permissions_as_keys.map { |privilege| I18n.t("admin.roles.privileges.#{privilege}") }.join(', ') }= t('admin.roles.permissions_count', count: role.permissions_as_keys.size)
+ %div
+ = table_link_to 'pencil', t('admin.accounts.edit'), edit_admin_role_path(role) if can?(:update, role)
diff --git a/app/views/admin/roles/edit.html.haml b/app/views/admin/roles/edit.html.haml
new file mode 100644
index 0000000000..659ccb8dce
--- /dev/null
+++ b/app/views/admin/roles/edit.html.haml
@@ -0,0 +1,8 @@
+- content_for :page_title do
+ = t('admin.roles.edit', name: @role.everyone? ? t('admin.roles.everyone') : @role.name)
+
+- content_for :heading_actions do
+ = link_to t('admin.roles.delete'), admin_role_path(@role), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:destroy, @role)
+
+= render partial: 'form'
+
diff --git a/app/views/admin/roles/index.html.haml b/app/views/admin/roles/index.html.haml
new file mode 100644
index 0000000000..4f6c511b4f
--- /dev/null
+++ b/app/views/admin/roles/index.html.haml
@@ -0,0 +1,17 @@
+- content_for :page_title do
+ = t('admin.roles.title')
+
+- content_for :heading_actions do
+ = link_to t('admin.roles.add_new'), new_admin_role_path, class: 'button' if can?(:create, :user_role)
+
+%p= t('admin.roles.description_html')
+
+%hr.spacer/
+
+.applications-list
+ = render partial: 'role', collection: @roles.select(&:everyone?)
+
+%hr.spacer/
+
+.applications-list
+ = render partial: 'role', collection: @roles.reject(&:everyone?)
diff --git a/app/views/admin/roles/new.html.haml b/app/views/admin/roles/new.html.haml
new file mode 100644
index 0000000000..8210792718
--- /dev/null
+++ b/app/views/admin/roles/new.html.haml
@@ -0,0 +1,4 @@
+- content_for :page_title do
+ = t('admin.roles.add_new')
+
+= render partial: 'form'
diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml
index dd794b7270..f2fdab90d0 100644
--- a/app/views/admin/settings/edit.html.haml
+++ b/app/views/admin/settings/edit.html.haml
@@ -61,9 +61,6 @@
.fields-group
= f.input :show_known_fediverse_at_about_page, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_known_fediverse_at_about_page.title'), hint: t('admin.settings.show_known_fediverse_at_about_page.desc_html')
- .fields-group
- = f.input :show_staff_badge, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_staff_badge.title'), hint: t('admin.settings.show_staff_badge.desc_html')
-
.fields-group
= f.input :open_deletion, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.deletion.title'), hint: t('admin.settings.registrations.deletion.desc_html')
@@ -103,9 +100,6 @@
%hr.spacer/
- .fields-group
- = f.input :min_invite_role, wrapper: :with_label, collection: %i(disabled user moderator admin), label: t('admin.settings.registrations.min_invite_role.title'), label_method: lambda { |role| role == :disabled ? t('admin.settings.registrations.min_invite_role.disabled') : t("admin.accounts.roles.#{role}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
.fields-row
.fields-row__column.fields-row__column-6.fields-group
= f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
@@ -121,5 +115,12 @@
= f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 }
= f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html')
+ %hr.spacer/
+
+ .fields-group
+ = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' }
+ = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' }
+ = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' }
+
.actions
= f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml
index 5ac57e1f2a..71bce0c0cb 100644
--- a/app/views/admin/tags/show.html.haml
+++ b/app/views/admin/tags/show.html.haml
@@ -1,55 +1,56 @@
- content_for :page_title do
- = "##{@tag.name}"
-
-- content_for :heading_actions do
- = l(@time_period.first)
- = ' - '
- = l(@time_period.last)
-
-.dashboard
- .dashboard__item
- = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank'
- .dashboard__item
- = react_admin_component :counter, measure: 'tag_uses', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_uses_measure')
- .dashboard__item
- = react_admin_component :counter, measure: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_servers_measure')
- .dashboard__item
- = react_admin_component :dimension, dimension: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_servers_dimension')
- .dashboard__item
- = react_admin_component :dimension, dimension: 'tag_languages', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_languages_dimension')
- .dashboard__item
- = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.usable? ? 'positive' : 'negative'] do
- - if @tag.usable?
- %span= t('admin.trends.tags.usable')
- = fa_icon 'check fw'
- - else
- %span= t('admin.trends.tags.not_usable')
- = fa_icon 'lock fw'
-
- = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.trendable? ? 'positive' : 'negative'] do
- - if @tag.trendable?
- %span= t('admin.trends.tags.trendable')
- = fa_icon 'check fw'
- - else
- %span= t('admin.trends.tags.not_trendable')
- = fa_icon 'lock fw'
-
-
- = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.listable? ? 'positive' : 'negative'] do
- - if @tag.listable?
- %span= t('admin.trends.tags.listable')
- = fa_icon 'check fw'
- - else
- %span= t('admin.trends.tags.not_listable')
- = fa_icon 'lock fw'
-
-%hr.spacer/
+ = "##{@tag.display_name}"
+
+- if current_user.can?(:view_dashboard)
+ - content_for :heading_actions do
+ = l(@time_period.first)
+ = ' - '
+ = l(@time_period.last)
+
+ .dashboard
+ .dashboard__item
+ = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank'
+ .dashboard__item
+ = react_admin_component :counter, measure: 'tag_uses', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_uses_measure')
+ .dashboard__item
+ = react_admin_component :counter, measure: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_servers_measure')
+ .dashboard__item
+ = react_admin_component :dimension, dimension: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_servers_dimension')
+ .dashboard__item
+ = react_admin_component :dimension, dimension: 'tag_languages', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_languages_dimension')
+ .dashboard__item
+ = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.usable? ? 'positive' : 'negative'] do
+ - if @tag.usable?
+ %span= t('admin.trends.tags.usable')
+ = fa_icon 'check fw'
+ - else
+ %span= t('admin.trends.tags.not_usable')
+ = fa_icon 'lock fw'
+
+ = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.trendable? ? 'positive' : 'negative'] do
+ - if @tag.trendable?
+ %span= t('admin.trends.tags.trendable')
+ = fa_icon 'check fw'
+ - else
+ %span= t('admin.trends.tags.not_trendable')
+ = fa_icon 'lock fw'
+
+
+ = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.listable? ? 'positive' : 'negative'] do
+ - if @tag.listable?
+ %span= t('admin.trends.tags.listable')
+ = fa_icon 'check fw'
+ - else
+ %span= t('admin.trends.tags.not_listable')
+ = fa_icon 'lock fw'
+
+ %hr.spacer/
= simple_form_for @tag, url: admin_tag_path(@tag.id) do |f|
= render 'shared/error_messages', object: @tag
.fields-group
- = f.input :name, wrapper: :with_block_label
+ = f.input :display_name, wrapper: :with_block_label
.fields-group
= f.input :usable, as: :boolean, wrapper: :with_label
diff --git a/app/views/admin/trends/tags/_tag.html.haml b/app/views/admin/trends/tags/_tag.html.haml
index 7bb99b1580..a30666a08b 100644
--- a/app/views/admin/trends/tags/_tag.html.haml
+++ b/app/views/admin/trends/tags/_tag.html.haml
@@ -6,7 +6,7 @@
.pending-account__header
= link_to admin_tag_path(tag.id) do
= fa_icon 'hashtag'
- = tag.name
+ = tag.display_name
%br/
diff --git a/app/views/admin/users/roles/show.html.haml b/app/views/admin/users/roles/show.html.haml
new file mode 100644
index 0000000000..8216180607
--- /dev/null
+++ b/app/views/admin/users/roles/show.html.haml
@@ -0,0 +1,9 @@
+- content_for :page_title do
+ = t('admin.accounts.change_role.title', username: @user.account.username)
+
+= simple_form_for @user, url: admin_user_role_path(@user) do |f|
+ .fields-group
+ = f.association :role, wrapper: :with_block_label, collection: UserRole.assignable, label_method: :name, include_blank: I18n.t('admin.accounts.change_role.no_role')
+
+ .actions
+ = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin_mailer/_new_trending_tags.text.erb b/app/views/admin_mailer/_new_trending_tags.text.erb
index cde5af4e4e..363df369d5 100644
--- a/app/views/admin_mailer/_new_trending_tags.text.erb
+++ b/app/views/admin_mailer/_new_trending_tags.text.erb
@@ -1,12 +1,12 @@
<%= raw t('admin_mailer.new_trends.new_trending_tags.title') %>
<% @tags.each do |tag| %>
-- #<%= tag.name %>
+- #<%= tag.display_name %>
<%= raw t('admin.trends.tags.usage_comparison', today: tag.history.get(Time.now.utc).accounts, yesterday: tag.history.get(Time.now.utc - 1.day).accounts) %> • <%= t('admin.trends.tags.current_score', score: Trends.tags.score(tag.id).round(2)) %>
<% end %>
<% if @lowest_trending_tag %>
-<%= raw t('admin_mailer.new_trends.new_trending_tags.requirements', lowest_tag_name: @lowest_trending_tag.name, lowest_tag_score: Trends.tags.score(@lowest_trending_tag.id).round(2), rank: Trends.tags.options[:review_threshold]) %>
+<%= raw t('admin_mailer.new_trends.new_trending_tags.requirements', lowest_tag_name: @lowest_trending_tag.display_name, lowest_tag_score: Trends.tags.score(@lowest_trending_tag.id).round(2), rank: Trends.tags.options[:review_threshold]) %>
<% else %>
<%= raw t('admin_mailer.new_trends.new_trending_tags.no_approved_tags') %>
<% end %>
diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml
index 0a952add07..eb2813dd03 100644
--- a/app/views/application/_sidebar.html.haml
+++ b/app/views/application/_sidebar.html.haml
@@ -1,9 +1,9 @@
.hero-widget
.hero-widget__img
- = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title
.hero-widget__text
- %p= @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html')
+ %p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html')
- if Setting.trends && !(user_signed_in? && !current_user.setting_trends)
- trends = Trends.tags.query.allowed.limit(3)
@@ -13,4 +13,4 @@
%h4.emojify= t('footer.trending_now')
- trends.each do |tag|
- = react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer).as_json
+ = react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer, scope: current_user, scope_name: :current_user).as_json
diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb
new file mode 100644
index 0000000000..bcbe819621
--- /dev/null
+++ b/app/views/custom_css/show.css.erb
@@ -0,0 +1,12 @@
+<%- if Setting.custom_css.present? %>
+<%= raw Setting.custom_css %>
+
+<%- end %>
+<%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %>
+.user-role-<%= role.id %> {
+ --user-role-accent: <%= role.color %>;
+ --user-role-background: <%= role.color + '19' %>;
+ --user-role-border: <%= role.color + '80' %>;
+}
+
+<%- end %>
diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml
index 2ab014081c..9993ad2ee8 100644
--- a/app/views/filters/_filter.html.haml
+++ b/app/views/filters/_filter.html.haml
@@ -22,6 +22,15 @@
- keywords = filter.keywords.map(&:keyword)
- keywords = keywords.take(5) + ['…'] if keywords.size > 5 # TODO
= keywords.join(', ')
+ - unless filter.statuses.empty?
+ %li.permissions-list__item
+ .permissions-list__item__icon
+ = fa_icon('comment')
+ .permissions-list__item__text
+ .permissions-list__item__text__title
+ = t('filters.index.statuses', count: filter.statuses.size)
+ .permissions-list__item__text__type
+ = t('filters.index.statuses_long', count: filter.statuses.size)
.announcements-list__item__action-bar
.announcements-list__item__meta
diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml
index 1a52faa7af..c58978f5a3 100644
--- a/app/views/filters/_filter_fields.html.haml
+++ b/app/views/filters/_filter_fields.html.haml
@@ -14,6 +14,13 @@
%hr.spacer/
+- unless f.object.statuses.empty?
+ %h4= t('filters.edit.statuses')
+
+ %p.muted-hint= t('filters.edit.statuses_hint_html', path: filter_statuses_path(f.object))
+
+ %hr.spacer/
+
%h4= t('filters.edit.keywords')
.table-wrapper
diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml
new file mode 100644
index 0000000000..ba1170cf92
--- /dev/null
+++ b/app/views/filters/statuses/_status_filter.html.haml
@@ -0,0 +1,37 @@
+- status = status_filter.status.proper
+
+.batch-table__row
+ %label.batch-table__row__select.batch-checkbox
+ = f.check_box :status_filter_ids, { multiple: true, include_hidden: false }, status_filter.id
+ .batch-table__row__content
+ .status__content><
+ - if status.spoiler_text.blank?
+ = prerender_custom_emojis(status_content_format(status), status.emojis)
+ - else
+ %details<
+ %summary><
+ %strong> Content warning: #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)}
+ = prerender_custom_emojis(status_content_format(status), status.emojis)
+
+ - status.ordered_media_attachments.each do |media_attachment|
+ %abbr{ title: media_attachment.description }
+ = fa_icon 'link'
+ = media_attachment.file_file_name
+
+ .detailed-status__meta
+ = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'name-tag', target: '_blank', rel: 'noopener noreferrer' do
+ = image_tag(status.account.avatar.url, width: 15, height: 15, alt: display_name(status.account), class: 'avatar')
+ .username= status.account.acct
+ ·
+ = link_to ActivityPub::TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener noreferrer' do
+ %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
+ - if status.edited?
+ ·
+ = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted'))
+ ·
+ = fa_visibility_icon(status)
+ = t("statuses.visibilities.#{status.visibility}")
+ - if status.sensitive?
+ ·
+ = fa_icon('eye-slash fw')
+ = t('stream_entries.sensitive_content')
diff --git a/app/views/filters/statuses/index.html.haml b/app/views/filters/statuses/index.html.haml
new file mode 100644
index 0000000000..eaa39e170f
--- /dev/null
+++ b/app/views/filters/statuses/index.html.haml
@@ -0,0 +1,35 @@
+- content_for :page_title do
+ = t('filters.statuses.index.title')
+ \-
+ = @filter.title
+
+.filters
+ .back-link
+ = link_to edit_filter_path(@filter) do
+ = fa_icon 'chevron-left fw'
+ = t('filters.statuses.back_to_filter')
+
+%p.hint= t('filters.statuses.index.hint')
+
+%hr.spacer/
+
+= form_for(@status_filter_batch_action, url: batch_filter_statuses_path(@filter.id)) do |f|
+ = hidden_field_tag :page, params[:page] || 1
+
+ - Admin::StatusFilter::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
+ - unless @status_filters.empty?
+ = f.button safe_join([fa_icon('times'), t('filters.statuses.batch.remove')]), name: :remove, class: 'table-action-link', type: :submit
+ .batch-table__body
+ - if @status_filters.empty?
+ = nothing_here 'nothing-here--under-tabs'
+ - else
+ = render partial: 'status_filter', collection: @status_filters, locals: { f: f }
+
+= paginate @status_filters
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index 568b23effc..437c337154 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -1,10 +1,14 @@
- content_for :header_tags do
- = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+ - if user_signed_in?
+ = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+
+ = render partial: 'shared/og'
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
+
= render_initial_state
.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index ee444c070f..5cbab8fc54 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -23,6 +23,7 @@
%link{ rel: 'manifest', href: manifest_path(format: :json) }/
%meta{ name: 'theme-color', content: '#6364FF' }/
%meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/
+ %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/
%title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title
@@ -43,8 +44,7 @@
= render partial: 'layouts/theme', object: @core
= render partial: 'layouts/theme', object: @theme
- - if Setting.custom_css.present?
- = stylesheet_link_tag custom_css_path, host: request.host, media: 'all'
+ = stylesheet_link_tag custom_css_path, host: request.host, media: 'all'
%body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index f4ef199e6c..10bc681ce2 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -32,8 +32,7 @@
.column-0
%h4= t 'footer.resources'
%ul
- %li= link_to t('about.terms'), terms_path
- %li= link_to t('about.privacy_policy'), terms_path
+ %li= link_to t('about.privacy_policy'), privacy_policy_path
.column-1
%h4= t 'footer.developers'
%ul
@@ -56,6 +55,6 @@
.legal-xs
= link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url
·
- = link_to t('about.privacy_policy'), terms_path
+ = link_to t('about.privacy_policy'), privacy_policy_path
= render template: 'layouts/application'
diff --git a/app/views/notification_mailer/digest.html.haml b/app/views/notification_mailer/digest.html.haml
deleted file mode 100644
index a94ace228d..0000000000
--- a/app/views/notification_mailer/digest.html.haml
+++ /dev/null
@@ -1,44 +0,0 @@
-%table.email-table{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.email-body
- .email-container
- %table.content-section{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.content-cell.darker.hero-with-button
- .email-row
- .col-6
- %table.column{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.column-cell.text-center.padded
- %h1= t 'notification_mailer.digest.title'
- %p.lead= t('notification_mailer.digest.body', since: l((@me.user_current_sign_in_at || @since).to_date, format: :short), instance: site_hostname)
- %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.button-primary
- = link_to web_url do
- %span= t 'notification_mailer.digest.action'
-
-- @notifications.each_with_index do |n, i|
- = render 'status', status: n.target_status, i: i
-
-- unless @follows_since.zero?
- %table.email-table{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.email-body
- .email-container
- %table.content-section{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.content-cell.content-start.border-top
- .email-row
- .col-6
- %table.column{ cellspacing: 0, cellpadding: 0 }
- %tbody
- %tr
- %td.column-cell.text-center
- %p= t('notification_mailer.digest.new_followers_summary', count: @follows_since)
diff --git a/app/views/notification_mailer/digest.text.erb b/app/views/notification_mailer/digest.text.erb
deleted file mode 100644
index 0f84a4ef05..0000000000
--- a/app/views/notification_mailer/digest.text.erb
+++ /dev/null
@@ -1,15 +0,0 @@
-<%= raw t('application_mailer.salutation', name: display_name(@me)) %>
-
-<%= raw t('notification_mailer.digest.body', since: l(@me.user_current_sign_in_at || @since), instance: root_url) %>
-<% @notifications.each do |notification| %>
-
-* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %>
-
- <%= raw extract_status_plain_text(notification.target_status) %>
-
- <%= raw t('application_mailer.view')%> <%= web_url("statuses/#{notification.target_status.id}") %>
-<% end %>
-<% if @follows_since > 0 %>
-
-<%= raw t('notification_mailer.digest.new_followers_summary', count: @follows_since) %>
-<% end %>
diff --git a/app/views/about/terms.html.haml b/app/views/privacy/show.html.haml
similarity index 60%
rename from app/views/about/terms.html.haml
rename to app/views/privacy/show.html.haml
index 9d076a91b4..cdd38a5958 100644
--- a/app/views/about/terms.html.haml
+++ b/app/views/privacy/show.html.haml
@@ -4,6 +4,6 @@
.grid
.column-0
.box-widget
- .rich-formatting= @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
+ .rich-formatting= @instance_presenter.privacy_policy.html_safe.presence || t('terms.body_html')
.column-1
= render 'application/sidebar'
diff --git a/app/views/settings/deletes/show.html.haml b/app/views/settings/deletes/show.html.haml
index 08792e0afd..ddf0908794 100644
--- a/app/views/settings/deletes/show.html.haml
+++ b/app/views/settings/deletes/show.html.haml
@@ -16,7 +16,7 @@
%li.positive-hint= t('deletes.warning.email_contact_html', email: Setting.site_contact_email)
%li.positive-hint= t('deletes.warning.username_available')
- %p.hint= t('deletes.warning.more_details_html', terms_path: terms_path)
+ %p.hint= t('deletes.warning.more_details_html', terms_path: privacy_policy_path)
%hr.spacer/
diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml
index 65de7f8f30..5d87e2862d 100644
--- a/app/views/settings/featured_tags/index.html.haml
+++ b/app/views/settings/featured_tags/index.html.haml
@@ -9,7 +9,7 @@
= render 'shared/error_messages', object: @featured_tag
.fields-group
- = f.input :name, wrapper: :with_block_label, hint: safe_join([t('simple_form.hints.featured_tag.name'), safe_join(@recently_used_tags.map { |tag| link_to("##{tag.name}", settings_featured_tags_path(featured_tag: { name: tag.name }), method: :post) }, ', ')], ' ')
+ = f.input :name, wrapper: :with_block_label, hint: safe_join([t('simple_form.hints.featured_tag.name'), safe_join(@recently_used_tags.map { |tag| link_to("##{tag.display_name}", settings_featured_tags_path(featured_tag: { name: tag.name }), method: :post) }, ', ')], ' ')
.actions
= f.button :button, t('featured_tags.add_new'), type: :submit
diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml
index 38e8b171e7..a03faa1456 100644
--- a/app/views/settings/preferences/notifications/show.html.haml
+++ b/app/views/settings/preferences/notifications/show.html.haml
@@ -18,22 +18,16 @@
= ff.input :reblog, as: :boolean, wrapper: :with_label
= ff.input :favourite, as: :boolean, wrapper: :with_label
= ff.input :mention, as: :boolean, wrapper: :with_label
-
- - if current_user.staff?
- = ff.input :report, as: :boolean, wrapper: :with_label
- = ff.input :appeal, as: :boolean, wrapper: :with_label
- = ff.input :pending_account, as: :boolean, wrapper: :with_label
- = ff.input :trending_tag, as: :boolean, wrapper: :with_label
- = ff.input :trending_link, as: :boolean, wrapper: :with_label
- = ff.input :trending_status, as: :boolean, wrapper: :with_label
+ = ff.input :report, as: :boolean, wrapper: :with_label if current_user.can?(:manage_reports)
+ = ff.input :appeal, as: :boolean, wrapper: :with_label if current_user.can?(:manage_appeals)
+ = ff.input :pending_account, as: :boolean, wrapper: :with_label if current_user.can?(:manage_users)
+ = ff.input :trending_tag, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies)
+ = ff.input :trending_link, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies)
+ = ff.input :trending_status, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies)
.fields-group
= f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label
- .fields-group
- = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
- = ff.input :digest, as: :boolean, wrapper: :with_label
-
%h4= t 'notifications.other_settings'
.fields-group
diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml
index 7feae1b8b4..b54ab2429a 100644
--- a/app/views/shared/_og.html.haml
+++ b/app/views/shared/_og.html.haml
@@ -1,12 +1,12 @@
- thumbnail = @instance_presenter.thumbnail
-- description ||= strip_tags(@instance_presenter.site_short_description.presence || t('about.about_mastodon_html'))
+- description ||= strip_tags(@instance_presenter.description.presence || t('about.about_mastodon_html'))
%meta{ name: 'description', content: description }/
= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname)
= opengraph 'og:url', url_for(only_path: false)
= opengraph 'og:type', 'website'
-= opengraph 'og:title', @instance_presenter.site_title
+= opengraph 'og:title', @instance_presenter.title
= opengraph 'og:description', description
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('media/images/preview.png', protocol: :request))
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
diff --git a/app/views/tags/_og.html.haml b/app/views/tags/_og.html.haml
index a7c289bcb0..37f644cf2f 100644
--- a/app/views/tags/_og.html.haml
+++ b/app/views/tags/_og.html.haml
@@ -1,6 +1,6 @@
= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname)
= opengraph 'og:url', tag_url(@tag)
= opengraph 'og:type', 'website'
-= opengraph 'og:title', "##{@tag.name}"
-= opengraph 'og:description', strip_tags(t('about.about_hashtag_html', hashtag: @tag.name))
+= opengraph 'og:title', "##{@tag.display_name}"
+= opengraph 'og:description', strip_tags(t('about.about_hashtag_html', hashtag: @tag.display_name))
= opengraph 'twitter:card', 'summary'
diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml
index 0e6d4c43d8..608989a2bf 100644
--- a/app/views/tags/show.html.haml
+++ b/app/views/tags/show.html.haml
@@ -1,5 +1,5 @@
- content_for :page_title do
- = "##{@tag.name}"
+ = "##{@tag.display_name}"
- content_for :header_tags do
%meta{ name: 'robots', content: 'noindex' }/
@@ -8,8 +8,8 @@
= render 'og'
.page-header
- %h1= "##{@tag.name}"
- %p= t('about.about_hashtag_html', hashtag: @tag.name)
+ %h1= "##{@tag.display_name}"
+ %p= t('about.about_hashtag_html', hashtag: @tag.display_name)
#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(hashtag: @tag.name, local: @local)) }}
.notranslate#modal-container
diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby
index 9ce71be74c..8e0c2327b5 100644
--- a/app/views/tags/show.rss.ruby
+++ b/app/views/tags/show.rss.ruby
@@ -1,6 +1,6 @@
RSS::Builder.build do |doc|
- doc.title("##{@tag.name}")
- doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.name))
+ doc.title("##{@tag.display_name}")
+ doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.display_name))
doc.link(tag_url(@tag))
doc.last_build_date(@statuses.first.created_at) if @statuses.any?
doc.generator("Mastodon v#{Mastodon::Version.to_s}")
@@ -26,7 +26,7 @@ RSS::Builder.build do |doc|
end
status.tags.each do |tag|
- item.category(tag.name)
+ item.category(tag.display_name)
end
end
end
diff --git a/app/views/user_mailer/confirmation_instructions.html.haml b/app/views/user_mailer/confirmation_instructions.html.haml
index 39a83faff8..447e689b40 100644
--- a/app/views/user_mailer/confirmation_instructions.html.haml
+++ b/app/views/user_mailer/confirmation_instructions.html.haml
@@ -77,4 +77,4 @@
%tbody
%tr
%td.column-cell.text-center
- %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url
+ %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url
diff --git a/app/views/user_mailer/confirmation_instructions.text.erb b/app/views/user_mailer/confirmation_instructions.text.erb
index aad91cd9d6..a1b2ba7d2e 100644
--- a/app/views/user_mailer/confirmation_instructions.text.erb
+++ b/app/views/user_mailer/confirmation_instructions.text.erb
@@ -6,7 +6,7 @@
=> <%= confirmation_url(@resource, confirmation_token: @token, redirect_to_app: @resource.created_by_application ? 'true' : nil) %>
-<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url)) %>
+<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url)) %>
=> <%= about_more_url %>
-=> <%= terms_url %>
+=> <%= privacy_policy_url %>
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index 788f2cf809..d9153132b3 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -37,7 +37,7 @@ class ActivityPub::DeliveryWorker
def build_request(http_client)
Request.new(:post, @inbox_url, body: @json, http_client: http_client).tap do |request|
- request.on_behalf_of(@source_account, :uri, sign_with: @options[:sign_with])
+ request.on_behalf_of(@source_account, sign_with: @options[:sign_with])
request.add_headers(HEADERS)
request.add_headers({ 'Collection-Synchronization' => synchronization_header }) if ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] != 'true' && @options[:synchronize_followers]
end
diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb
index 37e316354b..4d06ad0796 100644
--- a/app/workers/activitypub/processing_worker.rb
+++ b/app/workers/activitypub/processing_worker.rb
@@ -5,11 +5,15 @@ class ActivityPub::ProcessingWorker
sidekiq_options backtrace: true, retry: 8
- def perform(account_id, body, delivered_to_account_id = nil)
- account = Account.find_by(id: account_id)
- return if account.nil?
+ def perform(actor_id, body, delivered_to_account_id = nil, actor_type = 'Account')
+ case actor_type
+ when 'Account'
+ actor = Account.find_by(id: actor_id)
+ end
- ActivityPub::ProcessCollectionService.new.call(body, account, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true)
+ return if actor.nil?
+
+ ActivityPub::ProcessCollectionService.new.call(body, actor, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true)
rescue ActiveRecord::RecordInvalid => e
Rails.logger.debug "Error processing incoming ActivityPub object: #{e}"
end
diff --git a/app/workers/digest_mailer_worker.rb b/app/workers/digest_mailer_worker.rb
deleted file mode 100644
index 21f1c357a0..0000000000
--- a/app/workers/digest_mailer_worker.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-class DigestMailerWorker
- include Sidekiq::Worker
-
- sidekiq_options queue: 'mailers'
-
- attr_reader :user
-
- def perform(user_id)
- @user = User.find(user_id)
- deliver_digest if @user.allows_digest_emails?
- end
-
- private
-
- def deliver_digest
- NotificationMailer.digest(user.account).deliver_now!
- user.touch(:last_emailed_at)
- end
-end
diff --git a/app/workers/feed_insert_worker.rb b/app/workers/feed_insert_worker.rb
index 9483510aaf..ee9a3cadc1 100644
--- a/app/workers/feed_insert_worker.rb
+++ b/app/workers/feed_insert_worker.rb
@@ -9,7 +9,7 @@ class FeedInsertWorker
@options = options.symbolize_keys
case @type
- when :home
+ when :home, :tags
@follower = Account.find(id)
when :list
@list = List.find(id)
@@ -38,6 +38,8 @@ class FeedInsertWorker
case @type
when :home
FeedManager.instance.filter?(:home, @status, @follower)
+ when :tags
+ FeedManager.instance.filter?(:tags, @status, @follower)
when :list
FeedManager.instance.filter?(:list, @status, @list)
when :direct
@@ -53,7 +55,7 @@ class FeedInsertWorker
def perform_push
case @type
- when :home
+ when :home, :tags
FeedManager.instance.push_to_home(@follower, @status, update: update?)
when :list
FeedManager.instance.push_to_list(@list, @status, update: update?)
@@ -64,7 +66,7 @@ class FeedInsertWorker
def perform_unpush
case @type
- when :home
+ when :home, :tags
FeedManager.instance.unpush_from_home(@follower, @status, update: true)
when :list
FeedManager.instance.unpush_from_list(@list, @status, update: true)
diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb
index 319b001097..4b712d3aae 100644
--- a/app/workers/refollow_worker.rb
+++ b/app/workers/refollow_worker.rb
@@ -10,8 +10,9 @@ class RefollowWorker
return unless target_account.activitypub?
target_account.passive_relationships.where(account: Account.where(domain: nil)).includes(:account).reorder(nil).find_each do |follow|
- reblogs = follow.show_reblogs?
- notify = follow.notify?
+ reblogs = follow.show_reblogs?
+ notify = follow.notify?
+ languages = follow.languages
# Locally unfollow remote account
follower = follow.account
@@ -19,7 +20,7 @@ class RefollowWorker
# Schedule re-follow
begin
- FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, bypass_limit: true)
+ FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_limit: true)
rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError
next
end
diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb
deleted file mode 100644
index 85d5312c0a..0000000000
--- a/app/workers/scheduler/backup_cleanup_scheduler.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-class Scheduler::BackupCleanupScheduler
- include Sidekiq::Worker
-
- sidekiq_options retry: 0
-
- def perform
- old_backups.reorder(nil).find_each(&:destroy!)
- end
-
- private
-
- def old_backups
- Backup.where('created_at < ?', 7.days.ago)
- end
-end
diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb
deleted file mode 100644
index c052f2fce0..0000000000
--- a/app/workers/scheduler/email_scheduler.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-
-class Scheduler::EmailScheduler
- include Sidekiq::Worker
-
- sidekiq_options retry: 0
-
- FREQUENCY = 7.days.freeze
- SIGN_IN_OFFSET = 1.day.freeze
-
- def perform
- eligible_users.reorder(nil).find_each do |user|
- next unless user.allows_digest_emails?
- DigestMailerWorker.perform_async(user.id)
- end
- end
-
- private
-
- def eligible_users
- User.emailable
- .where('current_sign_in_at < ?', (FREQUENCY + SIGN_IN_OFFSET).ago)
- .where('last_emailed_at IS NULL OR last_emailed_at < ?', FREQUENCY.ago)
- end
-end
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb
deleted file mode 100644
index 78adc97e25..0000000000
--- a/app/workers/scheduler/feed_cleanup_scheduler.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# frozen_string_literal: true
-
-class Scheduler::FeedCleanupScheduler
- include Sidekiq::Worker
- include Redisable
-
- sidekiq_options retry: 0
-
- def perform
- clean_home_feeds!
- clean_list_feeds!
- clean_direct_feeds!
- end
-
- private
-
- def clean_home_feeds!
- feed_manager.clean_feeds!(:home, inactive_account_ids)
- end
-
- def clean_list_feeds!
- feed_manager.clean_feeds!(:list, inactive_list_ids)
- end
-
- def clean_direct_feeds!
- feed_manager.clean_feeds!(:direct, inactive_account_ids)
- end
-
- def inactive_account_ids
- @inactive_account_ids ||= User.confirmed.inactive.pluck(:account_id)
- end
-
- def inactive_list_ids
- List.where(account_id: inactive_account_ids).pluck(:id)
- end
-
- def feed_manager
- FeedManager.instance
- end
-end
diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb
index 7afad2f581..8f607db037 100644
--- a/app/workers/scheduler/ip_cleanup_scheduler.rb
+++ b/app/workers/scheduler/ip_cleanup_scheduler.rb
@@ -3,7 +3,8 @@
class Scheduler::IpCleanupScheduler
include Sidekiq::Worker
- IP_RETENTION_PERIOD = 1.year.freeze
+ IP_RETENTION_PERIOD = ENV.fetch('IP_RETENTION_PERIOD', 1.year).to_i.seconds.freeze
+ SESSION_RETENTION_PERIOD = ENV.fetch('SESSION_RETENTION_PERIOD', 1.year).to_i.seconds.freeze
sidekiq_options retry: 0
@@ -15,7 +16,8 @@ class Scheduler::IpCleanupScheduler
private
def clean_ip_columns!
- SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all
+ SessionActivation.where('updated_at < ?', SESSION_RETENTION_PERIOD.ago).in_batches.destroy_all
+ SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(ip: nil)
User.where('current_sign_in_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(sign_up_ip: nil)
LoginActivity.where('created_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all
Doorkeeper::AccessToken.where('last_used_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(last_used_ip: nil)
diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb
deleted file mode 100644
index 24d30a6be5..0000000000
--- a/app/workers/scheduler/media_cleanup_scheduler.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-class Scheduler::MediaCleanupScheduler
- include Sidekiq::Worker
-
- sidekiq_options retry: 0
-
- def perform
- unattached_media.find_each(&:destroy)
- end
-
- private
-
- def unattached_media
- MediaAttachment.reorder(nil).unattached.where('created_at < ?', 1.day.ago)
- end
-end
diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb
new file mode 100644
index 0000000000..ce88ff204d
--- /dev/null
+++ b/app/workers/scheduler/vacuum_scheduler.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+class Scheduler::VacuumScheduler
+ include Sidekiq::Worker
+
+ sidekiq_options retry: 0
+
+ def perform
+ vacuum_operations.each do |operation|
+ operation.perform
+ rescue => e
+ Rails.logger.error("Error while running #{operation.class.name}: #{e}")
+ end
+ end
+
+ private
+
+ def vacuum_operations
+ [
+ statuses_vacuum,
+ media_attachments_vacuum,
+ preview_cards_vacuum,
+ backups_vacuum,
+ access_tokens_vacuum,
+ feeds_vacuum,
+ ]
+ end
+
+ def statuses_vacuum
+ Vacuum::StatusesVacuum.new(content_retention_policy.content_cache_retention_period)
+ end
+
+ def media_attachments_vacuum
+ Vacuum::MediaAttachmentsVacuum.new(content_retention_policy.media_cache_retention_period)
+ end
+
+ def preview_cards_vacuum
+ Vacuum::PreviewCardsVacuum.new(content_retention_policy.media_cache_retention_period)
+ end
+
+ def backups_vacuum
+ Vacuum::BackupsVacuum.new(content_retention_policy.backups_retention_period)
+ end
+
+ def access_tokens_vacuum
+ Vacuum::AccessTokensVacuum.new
+ end
+
+ def feeds_vacuum
+ Vacuum::FeedsVacuum.new
+ end
+
+ def content_retention_policy
+ ContentRetentionPolicy.current
+ end
+end
diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb
index 0bd5ff472e..7203b4888f 100644
--- a/app/workers/unfollow_follow_worker.rb
+++ b/app/workers/unfollow_follow_worker.rb
@@ -10,11 +10,12 @@ class UnfollowFollowWorker
old_target_account = Account.find(old_target_account_id)
new_target_account = Account.find(new_target_account_id)
- follow = follower_account.active_relationships.find_by(target_account: old_target_account)
- reblogs = follow&.show_reblogs?
- notify = follow&.notify?
+ follow = follower_account.active_relationships.find_by(target_account: old_target_account)
+ reblogs = follow&.show_reblogs?
+ notify = follow&.notify?
+ languages = follow&.languages
- FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, bypass_locked: bypass_locked, bypass_limit: true)
+ FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_locked: bypass_locked, bypass_limit: true)
UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true)
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
true
diff --git a/boxfile.yml b/boxfile.yml
deleted file mode 100644
index 27166cec9f..0000000000
--- a/boxfile.yml
+++ /dev/null
@@ -1,205 +0,0 @@
-run.config:
- engine: ruby
- engine.config:
- runtime: ruby-2.5
-
- extra_packages:
- # basic servers:
- - nginx
- - nodejs
-
- # for images:
- - ImageMagick
- - jemalloc
-
- # for videos:
- - ffmpeg3
-
- # to prep the .env file:
- - gettext-tools
-
- # for node-gyp, used in the asset compilation process:
- - python-2
-
- # i18n:
- - libidn
-
- cache_dirs:
- - node_modules
-
- extra_path_dirs:
- - node_modules/.bin
-
- build_triggers:
- - .ruby-version
- - Gemfile
- - Gemfile.lock
- - package.json
- - yarn.lock
-
- extra_steps:
- - cp .env.nanobox .env
- - yarn
-
- fs_watch: true
-
-deploy.config:
- extra_steps:
- - NODE_ENV=production bundle exec rake assets:precompile
- transform:
- - 'envsubst < /app/.env.nanobox > /app/.env.production'
- - |-
- if [ -z "$LOCAL_DOMAIN" ]
- then
- . /app/.env.production
- export LOCAL_DOMAIN
- fi
- erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf
- erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf
- - touch /app/log/production.log
- before_live:
- web.web:
- - bin/tootctl cache clear
- - bundle exec rake db:migrate:setup
- after_live:
- worker.sidekiq:
- - |-
- if [[ "${ES_ENABLED}" != "false" ]]
- then
- bin/tootctl search deploy
- fi
-
-web.web:
- start:
- nginx: nginx -c /app/nanobox/nginx-web.conf
- rails: bundle exec puma -C /app/config/puma.rb
-
- routes:
- - '/'
-
- writable_dirs:
- - tmp
-
- log_watch:
- rails: 'log/production.log'
-
- network_dirs:
- data.storage:
- - public/system
-
-web.stream:
- start:
- nginx: nginx -c /app/nanobox/nginx-stream.conf
- node: yarn run start
-
- routes:
- - '/api/v1/streaming*'
- # Somehow we're getting requests for scheme://domain//api/v1/streaming* - match those, too
- - '//api/v1/streaming*'
-
- writable_dirs:
- - tmp
-
-worker.sidekiq:
- start:
- default: bundle exec sidekiq -c 5 -q default -L /app/log/sidekiq.log
- mailers: bundle exec sidekiq -c 5 -q mailers -L /app/log/sidekiq.log
- pull: bundle exec sidekiq -c 5 -q pull -L /app/log/sidekiq.log
- push: bundle exec sidekiq -c 5 -q push -L /app/log/sidekiq.log
- scheduler: bundle exec sidekiq -c 5 -q scheduler -L /app/log/sidekiq.log
-
- writable_dirs:
- - tmp
-
- log_watch:
- rails: 'log/production.log'
- sidekiq: 'log/sidekiq.log'
-
- network_dirs:
- data.storage:
- - public/system
-
-data.db:
- image: nanobox/postgresql:9.6
-
- cron:
- - id: backup
- schedule: '0 3 * * *'
- command: |
- PGPASSWORD=${DATA_DB_PASS} pg_dump -U ${DATA_DB_USER} -w -Fc -O gonano |
- gzip |
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).sql.gz -X POST -T - >&2
- curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
- sed 's/,/\n/g' |
- grep ${HOSTNAME} |
- sort |
- head -n-${BACKUP_COUNT:-1} |
- sed 's/.*: \?"\(.*\)".*/\1/' |
- while read file
- do
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
- done
-
-data.elastic:
- image: nanobox/elasticsearch:5
-
- cron:
- - id: backup
- schedule: '0 3 * * *'
- command: |
- id=$(cat /proc/sys/kernel/random/uuid)
- curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" -d "{\"type\": \"fs\",\"settings\": {\"location\": \"/var/tmp/${id}\",\"compress\": true}}"
- curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}/backup?wait_for_completion=true&pretty"
- tar -cz -C "/var/tmp/${id}" . |
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2
- curl -X DELETE -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}"
- rm -rf "/var/tmp/${id}"
- curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
- sed 's/,/\n/g' |
- grep ${HOSTNAME} |
- sort |
- head -n-${BACKUP_COUNT:-1} |
- sed 's/.*: \?"\(.*\)".*/\1/' |
- while read file
- do
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
- done
-
-data.redis:
- image: nanobox/redis:4.0
-
- cron:
- - id: backup
- schedule: '0 3 * * *'
- command: |
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).rdb -X POST -T /data/var/db/redis/dump.rdb >&2
- curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
- sed 's/,/\n/g' |
- grep ${HOSTNAME} |
- sort |
- head -n-${BACKUP_COUNT:-1} |
- sed 's/.*: \?"\(.*\)".*/\1/' |
- while read file
- do
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
- done
-
-data.storage:
- image: nanobox/unfs:0.9
-
- cron:
- - id: backup
- schedule: '0 3 * * *'
- command: |
- tar cz -C /data/var/db/unfs/ . |
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2
- curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ |
- sed 's/,/\n/g' |
- grep ${HOSTNAME} |
- sort |
- head -n-${BACKUP_COUNT:-1} |
- sed 's/.*: \?"\(.*\)".*/\1/' |
- while read file
- do
- curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE
- done
diff --git a/chart/.helmignore b/chart/.helmignore
index 0e8a0eb36f..886747ed0b 100644
--- a/chart/.helmignore
+++ b/chart/.helmignore
@@ -21,3 +21,4 @@
.idea/
*.tmproj
.vscode/
+mastodon-*.tgz
diff --git a/chart/Chart.lock b/chart/Chart.lock
index d74e7570ce..961e4fa80f 100644
--- a/chart/Chart.lock
+++ b/chart/Chart.lock
@@ -1,12 +1,12 @@
dependencies:
- name: elasticsearch
- repository: https://charts.bitnami.com/bitnami
- version: 15.10.3
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+ version: 19.0.1
- name: postgresql
- repository: https://charts.bitnami.com/bitnami
- version: 8.10.14
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+ version: 11.1.3
- name: redis
- repository: https://charts.bitnami.com/bitnami
- version: 10.9.0
-digest: sha256:f5c57108f7768fd16391c1a050991c7809f84a640cca308d7d24d87379d04000
-generated: "2021-08-05T08:01:01.457727804Z"
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+ version: 16.13.2
+digest: sha256:17ea58a3264aa22faff18215c4269f47dabae956d0df273c684972f356416193
+generated: "2022-08-08T21:44:18.0195364+02:00"
diff --git a/chart/Chart.yaml b/chart/Chart.yaml
index 1687132acb..b1138b594f 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: 1.2.1
+version: 2.0.0
# 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,13 +24,13 @@ appVersion: 3.3.0
dependencies:
- name: elasticsearch
- version: 15.10.3
- repository: https://charts.bitnami.com/bitnami
+ version: 19.0.1
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
condition: elasticsearch.enabled
- name: postgresql
- version: 8.10.14
- repository: https://charts.bitnami.com/bitnami
+ version: 11.1.3
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
condition: postgresql.enabled
- name: redis
- version: 10.9.0
- repository: https://charts.bitnami.com/bitnami
+ version: 16.13.2
+ repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl
index 5814a31203..71bb002ef2 100644
--- a/chart/templates/_helpers.tpl
+++ b/chart/templates/_helpers.tpl
@@ -77,3 +77,53 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
{{- define "mastodon.postgresql.fullname" -}}
{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
+
+{{/*
+Get the mastodon secret.
+*/}}
+{{- define "mastodon.secretName" -}}
+{{- if .Values.mastodon.secrets.existingSecret }}
+ {{- printf "%s" (tpl .Values.mastodon.secrets.existingSecret $) -}}
+{{- else -}}
+ {{- printf "%s" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Get the postgresql secret.
+*/}}
+{{- define "mastodon.postgresql.secretName" -}}
+{{- if (and (or .Values.postgresql.enabled .Values.postgresql.postgresqlHostname) .Values.postgresql.auth.existingSecret) }}
+ {{- printf "%s" (tpl .Values.postgresql.auth.existingSecret $) -}}
+{{- else if .Values.postgresql.enabled -}}
+ {{- printf "%s-postgresql" (tpl .Release.Name $) -}}
+{{- else -}}
+ {{- printf "%s" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Get the redis secret.
+*/}}
+{{- define "mastodon.redis.secretName" -}}
+{{- if .Values.redis.auth.existingSecret }}
+ {{- printf "%s" (tpl .Values.redis.auth.existingSecret $) -}}
+{{- else if .Values.redis.existingSecret }}
+ {{- printf "%s" (tpl .Values.redis.existingSecret $) -}}
+{{- else -}}
+ {{- printf "%s-redis" (tpl .Release.Name $) -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Return true if a mastodon secret object should be created
+*/}}
+{{- define "mastodon.createSecret" -}}
+{{- if (or
+ (and .Values.mastodon.s3.enabled (not .Values.mastodon.s3.existingSecret))
+ (not .Values.mastodon.secrets.existingSecret )
+ (and (not .Values.postgresql.enabled) (not .Values.postgresql.auth.existingSecret))
+ ) -}}
+ {{- true -}}
+{{- end -}}
+{{- end -}}
diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml
index aa242684ff..f988477d91 100644
--- a/chart/templates/configmap-env.yaml
+++ b/chart/templates/configmap-env.yaml
@@ -10,14 +10,14 @@ data:
{{- else }}
DB_HOST: {{ .Values.postgresql.postgresqlHostname }}
{{- end }}
- DB_NAME: {{ .Values.postgresql.postgresqlDatabase }}
+ DB_NAME: {{ .Values.postgresql.auth.database }}
DB_POOL: {{ .Values.mastodon.sidekiq.concurrency | quote }}
DB_PORT: "5432"
- DB_USER: {{ .Values.postgresql.postgresqlUsername }}
+ DB_USER: {{ .Values.postgresql.auth.username }}
DEFAULT_LOCALE: {{ .Values.mastodon.locale }}
{{- if .Values.elasticsearch.enabled }}
ES_ENABLED: "true"
- ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master
+ ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master-hl
ES_PORT: "9200"
{{- end }}
LOCAL_DOMAIN: {{ .Values.mastodon.local_domain }}
diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml
index 3d6e25cc68..160aee2042 100644
--- a/chart/templates/cronjob-media-remove.yaml
+++ b/chart/templates/cronjob-media-remove.yaml
@@ -1,5 +1,5 @@
{{ if .Values.mastodon.cron.removeMedia.enabled }}
-apiVersion: batch/v1beta1
+apiVersion: batch/v1
kind: CronJob
metadata:
name: {{ include "mastodon.fullname" . }}-media-remove
@@ -12,6 +12,10 @@ spec:
template:
metadata:
name: {{ include "mastodon.fullname" . }}-media-remove
+ {{- with .Values.jobAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 12 }}
+ {{- end }}
spec:
restartPolicy: OnFailure
{{- if (not .Values.mastodon.s3.enabled) }}
@@ -49,21 +53,17 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml
index baf6c2b2dd..f1809bd858 100644
--- a/chart/templates/deployment-sidekiq.yaml
+++ b/chart/templates/deployment-sidekiq.yaml
@@ -70,22 +70,31 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
+ {{- if .Values.mastodon.smtp.existingSecret }}
+ - name: "SMTP_LOGIN"
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Values.mastodon.smtp.existingSecret }}
+ key: login
+ optional: true
+ - name: "SMTP_PASSWORD"
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Values.mastodon.smtp.existingSecret }}
+ key: password
+ {{- end -}}
{{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml
index b332b686ac..12203a530b 100644
--- a/chart/templates/deployment-streaming.yaml
+++ b/chart/templates/deployment-streaming.yaml
@@ -43,16 +43,12 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.streaming.port | quote }}
diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml
index 8b8bb4f29c..ab722c77b1 100644
--- a/chart/templates/deployment-web.yaml
+++ b/chart/templates/deployment-web.yaml
@@ -56,24 +56,32 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (and .Values.mastodon.s3.enabled .Values.mastodon.s3.existingSecret) }}
+ - name: "AWS_SECRET_ACCESS_KEY"
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Values.mastodon.s3.existingSecret }}
+ key: AWS_SECRET_ACCESS_KEY
+ - name: "AWS_ACCESS_KEY_ID"
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Values.mastodon.s3.existingSecret }}
+ key: AWS_ACCESS_KEY_ID
+ {{- end -}}
{{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml
index 825a7e9160..faa51a20d9 100644
--- a/chart/templates/job-assets-precompile.yaml
+++ b/chart/templates/job-assets-precompile.yaml
@@ -12,6 +12,10 @@ spec:
template:
metadata:
name: {{ include "mastodon.fullname" . }}-assets-precompile
+ {{- with .Values.jobAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
spec:
restartPolicy: Never
{{- if (not .Values.mastodon.s3.enabled) }}
@@ -50,21 +54,17 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml
index cc68a3385a..ae6fb38e12 100644
--- a/chart/templates/job-chewy-upgrade.yaml
+++ b/chart/templates/job-chewy-upgrade.yaml
@@ -13,6 +13,10 @@ spec:
template:
metadata:
name: {{ include "mastodon.fullname" . }}-chewy-upgrade
+ {{- with .Values.jobAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
spec:
restartPolicy: Never
{{- if (not .Values.mastodon.s3.enabled) }}
@@ -51,21 +55,17 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml
index ffb8bb0590..659c00671f 100644
--- a/chart/templates/job-create-admin.yaml
+++ b/chart/templates/job-create-admin.yaml
@@ -13,6 +13,10 @@ spec:
template:
metadata:
name: {{ include "mastodon.fullname" . }}-create-admin
+ {{- with .Values.jobAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
spec:
restartPolicy: Never
{{- if (not .Values.mastodon.s3.enabled) }}
@@ -56,21 +60,17 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml
index 72f910e3b2..8e4f70dfb1 100644
--- a/chart/templates/job-db-migrate.yaml
+++ b/chart/templates/job-db-migrate.yaml
@@ -12,6 +12,10 @@ spec:
template:
metadata:
name: {{ include "mastodon.fullname" . }}-db-migrate
+ {{- with .Values.jobAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
spec:
restartPolicy: Never
{{- if (not .Values.mastodon.s3.enabled) }}
@@ -50,21 +54,17 @@ spec:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
- secretRef:
- name: {{ template "mastodon.fullname" . }}
+ name: {{ template "mastodon.secretName" . }}
env:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
- {{- if .Values.postgresql.enabled }}
- name: {{ .Release.Name }}-postgresql
- {{- else }}
- name: {{ template "mastodon.fullname" . }}
- {{- end }}
- key: postgresql-password
+ name: {{ template "mastodon.postgresql.secretName" . }}
+ key: password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
- name: {{ .Release.Name }}-redis
+ name: {{ template "mastodon.redis.secretName" . }}
key: redis-password
- name: "PORT"
value: {{ .Values.mastodon.web.port | quote }}
diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml
index 0452a8ae1e..135d5b61a4 100644
--- a/chart/templates/secrets.yaml
+++ b/chart/templates/secrets.yaml
@@ -1,3 +1,4 @@
+{{- if (include "mastodon.createSecret" .) }}
apiVersion: v1
kind: Secret
metadata:
@@ -7,9 +8,12 @@ metadata:
type: Opaque
data:
{{- if .Values.mastodon.s3.enabled }}
+ {{- if not .Values.mastodon.s3.existingSecret }}
AWS_ACCESS_KEY_ID: "{{ .Values.mastodon.s3.access_key | b64enc }}"
AWS_SECRET_ACCESS_KEY: "{{ .Values.mastodon.s3.access_secret | b64enc }}"
{{- end }}
+ {{- end }}
+ {{- if not .Values.mastodon.secrets.existingSecret }}
{{- if not (empty .Values.mastodon.secrets.secret_key_base) }}
SECRET_KEY_BASE: "{{ .Values.mastodon.secrets.secret_key_base | b64enc }}"
{{- else }}
@@ -30,6 +34,10 @@ data:
{{- else }}
VAPID_PUBLIC_KEY: {{ required "vapid.public_key is required" .Values.mastodon.secrets.vapid.public_key }}
{{- end }}
+ {{- end }}
{{- if not .Values.postgresql.enabled }}
- postgresql-password: "{{ .Values.postgresql.postgresqlPassword | b64enc }}"
+ {{- if not .Values.postgresql.auth.existingSecret }}
+ postgresql-password: "{{ .Values.postgresql.auth.password | b64enc }}"
+ {{- end }}
{{- end }}
+{{- end -}}
diff --git a/chart/values.yaml b/chart/values.yaml
index 2cfa3484b4..4b18a9dfa5 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -48,6 +48,9 @@ mastodon:
enabled: false
access_key: ""
access_secret: ""
+ # you can also specify the name of an existing Secret
+ # with keys AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
+ existingSecret: ""
bucket: ""
endpoint: https://us-east-1.linodeobjects.com
hostname: us-east-1.linodeobjects.com
@@ -61,6 +64,10 @@ mastodon:
vapid:
private_key: ""
public_key: ""
+ # you can also specify the name of an existing Secret
+ # with keys SECRET_KEY_BASE and OTP_SECRET and
+ # VAPID_PRIVATE_KEY and VAPID_PUBLIC_KEY
+ existingSecret: ""
sidekiq:
concurrency: 25
smtp:
@@ -70,13 +77,16 @@ mastodon:
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
+ login:
+ password:
+ # you can also specify the name of an existing Secret
+ # with the keys login and password
+ existingSecret:
streaming:
port: 4000
# this should be set manually since os.cpus() returns the number of CPUs on
@@ -127,18 +137,26 @@ postgresql:
# 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:
- # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade
- postgresqlPassword: ""
- postgresqlUsername: postgres
+ auth:
+ database: mastodon_production
+ username: postgres
+ # you must set a password; the password generated by the postgresql chart will
+ # be rotated on each upgrade:
+ # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade
+ password: ""
+ # you can also specify the name of an existing Secret
+ # with a key of postgres-password set to the password you want
+ existingSecret: ""
# https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters
redis:
# you must set a password; the password generated by the redis chart will be
# rotated on each upgrade:
password: ""
+ # you can also specify the name of an existing Secret
+ # with a key of redis-password set to the password you want
+ # auth:
+ # existingSecret: ""
service:
type: ClusterIP
@@ -157,45 +175,45 @@ externalAuth:
# client_secret: SECRETKEY
# redirect_uri: https://example.com/auth/auth/openid_connect/callback
# assume_email_is_verified: true
- # client_auth_method:
- # response_type:
- # response_mode:
- # display:
- # prompt:
- # send_nonce:
- # send_scope_to_token_endpoint:
- # idp_logout_redirect_uri:
- # http_scheme:
- # host:
- # port:
- # jwks_uri:
- # auth_endpoint:
- # token_endpoint:
- # user_info_endpoint:
- # end_session_endpoint:
+ # client_auth_method:
+ # response_type:
+ # response_mode:
+ # display:
+ # prompt:
+ # send_nonce:
+ # send_scope_to_token_endpoint:
+ # idp_logout_redirect_uri:
+ # http_scheme:
+ # host:
+ # port:
+ # jwks_uri:
+ # auth_endpoint:
+ # token_endpoint:
+ # user_info_endpoint:
+ # end_session_endpoint:
saml:
enabled: false
# acs_url: http://mastodon.example.com/auth/auth/saml/callback
# issuer: mastodon
# idp_sso_target_url: https://login.example.com/auth/realms/example/protocol/saml
# idp_cert: '-----BEGIN CERTIFICATE-----[your_cert_content]-----END CERTIFICATE-----'
- # idp_cert_fingerprint:
+ # idp_cert_fingerprint:
# name_identifier_format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
- # cert:
- # private_key:
+ # cert:
+ # private_key:
# want_assertion_signed: true
# want_assertion_encrypted: true
# assume_email_is_verified: true
# uid_attribute: "urn:oid:0.9.2342.19200300.100.1.1"
- # attributes_statements:
+ # attributes_statements:
# uid: "urn:oid:0.9.2342.19200300.100.1.1"
# email: "urn:oid:1.3.6.1.4.1.5923.1.1.1.6"
# full_name: "urn:oid:2.16.840.1.113730.3.1.241"
# first_name: "urn:oid:2.5.4.42"
# last_name: "urn:oid:2.5.4.4"
- # verified:
- # verified_email:
- oauth_global:
+ # verified:
+ # verified_email:
+ oauth_global:
# Force redirect local login to CAS. Does not function with SAML or LDAP.
oauth_redirect_at_sign_in: false
cas:
@@ -204,15 +222,15 @@ externalAuth:
# host: sso.myserver.com
# port: 443
# ssl: true
- # validate_url:
- # callback_url:
- # logout_url:
- # login_url:
+ # validate_url:
+ # callback_url:
+ # logout_url:
+ # login_url:
# uid_field: 'user'
- # ca_path:
+ # ca_path:
# disable_ssl_verification: false
# assume_email_is_verified: true
- # keys:
+ # keys:
# uid: 'user'
# name: 'name'
# email: 'email'
@@ -222,7 +240,7 @@ externalAuth:
# location: 'location'
# image: 'image'
# phone: 'phone'
- pam:
+ pam:
enabled: false
# email_domain: example.com
# default_service: rpam
@@ -232,9 +250,9 @@ externalAuth:
# host: myservice.namespace.svc
# port: 389
# method: simple_tls
- # base:
- # bind_on:
- # password:
+ # base:
+ # bind_on:
+ # password:
# uid: cn
# mail: mail
# search_filter: "(|(%{uid}=%{email})(%{mail}=%{email}))"
@@ -263,8 +281,14 @@ serviceAccount:
# If not set and create is true, a name is generated using the fullname template
name: ""
+# Kubernetes manages pods for jobs and pods for deployments differently, so you might
+# need to apply different annotations to the two different sets of pods. The annotations
+# set with podAnnotations will be added to all deployment-managed pods.
podAnnotations: {}
+# The annotations set with jobAnnotations will be added to all job pods.
+jobAnnotations: {}
+
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
diff --git a/config/application.rb b/config/application.rb
index 24fa2a9781..2e54eb6f67 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -44,6 +44,7 @@ require_relative '../lib/webpacker/helper_extensions'
require_relative '../lib/rails/engine_extensions'
require_relative '../lib/active_record/database_tasks_extensions'
require_relative '../lib/active_record/batches'
+require_relative '../lib/simple_navigation/item_extensions'
Dotenv::Railtie.load
@@ -164,7 +165,6 @@ module Mastodon
config.active_job.queue_adapter = :sidekiq
config.middleware.use Rack::Attack
- config.middleware.use Rack::Deflater
config.middleware.use Mastodon::RackMiddleware
config.to_prepare do
diff --git a/config/deploy.rb b/config/deploy.rb
index 8a2316b573..2bdb115950 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-lock '3.17.0'
+lock '3.17.1'
set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git')
set :branch, ENV.fetch('BRANCH', 'master')
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 69f80667e4..dd73bb4e1b 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -47,7 +47,7 @@ Rails.application.configure do
config.force_ssl = true
config.ssl_options = {
redirect: {
- exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') }
+ exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
}
}
diff --git a/config/initializers/http_client_proxy.rb b/config/initializers/http_client_proxy.rb
index 7a9b7b86d7..b29e9edd75 100644
--- a/config/initializers/http_client_proxy.rb
+++ b/config/initializers/http_client_proxy.rb
@@ -18,5 +18,22 @@ Rails.application.configure do
}.compact
end
+ if ENV['http_hidden_proxy'].present?
+ proxy = URI.parse(ENV['http_hidden_proxy'])
+
+ raise "Unsupported proxy type: #{proxy.scheme}" unless %w(http https).include? proxy.scheme
+ raise "No proxy host" unless proxy.host
+
+ host = proxy.host
+ host = host[1...-1] if host[0] == '[' # for IPv6 address
+
+ config.x.http_client_hidden_proxy[:proxy] = {
+ proxy_address: host,
+ proxy_port: proxy.port,
+ proxy_username: proxy.user,
+ proxy_password: proxy.password,
+ }.compact
+ end
+
config.x.access_to_hidden_service = ENV['ALLOW_ACCESS_TO_HIDDEN_SERVICE'] == 'true'
end
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index 9bc9a54b2d..a361cb0ec3 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -24,6 +24,8 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'RSS'
inflect.acronym 'REST'
inflect.acronym 'URL'
+ inflect.acronym 'ASCII'
+ inflect.acronym 'DeepL'
inflect.singular 'data', 'data'
end
diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml
index c41e2341d0..dff778d571 100644
--- a/config/locales/activerecord.af.yml
+++ b/config/locales/activerecord.af.yml
@@ -38,3 +38,9 @@ af:
email:
blocked: maak gebruik van 'n e-pos verskaffer wat nie toegelaat word nie
unreachable: blyk nie te bestaan nie
+ user_role:
+ attributes:
+ permissions_as_keys:
+ own_role: kan nie verander word met jou huidige rol nie
+ position:
+ own_role: kan nie verander word met jou huidige rol nie
diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml
index 056137276a..ddf3fed4ef 100644
--- a/config/locales/activerecord.ca.yml
+++ b/config/locales/activerecord.ca.yml
@@ -38,3 +38,14 @@ ca:
email:
blocked: utilitza un proveïdor de correu electrònic no autoritzat
unreachable: sembla que no existeix
+ role_id:
+ elevated: no pot ser superior que el teu rol actual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: inclou permisos que no són segurs per al rol base
+ elevated: no pot incloure permisos que el teu rol actual no té
+ own_role: no es pot canviar amb el teu rol actual
+ position:
+ elevated: no pot ser superior al teu rol actual
+ own_role: no pot ser canviat amb el teu rol actual
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index d306fe627a..5505254e5f 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -38,3 +38,14 @@ cs:
email:
blocked: používá zakázanou e-mailovou službu
unreachable: pravděpodobně neexistuje
+ role_id:
+ elevated: nemůže být vyšší než vaše aktuální role
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: obsahuje oprávnění, která nejsou bezpečná pro základní roli
+ elevated: nemůže obsahovat oprávnění, která vaše aktuální role nemá
+ own_role: nelze změnit s vaší aktuální rolí
+ position:
+ elevated: nemůže být vyšší než vaše aktuální role
+ own_role: nelze změnit s vaší aktuální rolí
diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml
index 3566abf439..33d86e2962 100644
--- a/config/locales/activerecord.da.yml
+++ b/config/locales/activerecord.da.yml
@@ -38,3 +38,13 @@ da:
email:
blocked: bruger en ikke-tilladt e-mailudbyder
unreachable: ser ikke ud til at eksistere
+ role_id:
+ elevated: kan ikke være højere end din aktuelle rolle
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: omfat tilladelser, som ikke er sikre for basisrollen
+ elevated: kan ikke omfatte tilladelser, din aktuelle rolle ikke besidder
+ own_role: kan ikke ændres med din aktuelle rolle
+ position:
+ elevated: kan ikke være højere end din aktuelle rolle
diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml
index a24862a705..d3c013dc0f 100644
--- a/config/locales/activerecord.de.yml
+++ b/config/locales/activerecord.de.yml
@@ -38,3 +38,14 @@ de:
email:
blocked: verwendet einen nicht erlaubten E-Mail-Anbieter
unreachable: scheint nicht zu existieren
+ role_id:
+ elevated: Kann nicht höher als Ihre aktuelle Rolle sein
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: enthalte Berechtigungen, die für die Basisrolle nicht sicher sind
+ elevated: kann keine Berechtigungen enthalten, die deine aktuelle Rolle nicht besitzt
+ own_role: kann nicht mit deiner aktuellen Rolle geändert werden
+ position:
+ elevated: kann nicht höher sein als deine aktuelle Rolle
+ own_role: kann nicht mit deiner aktuellen Rolle geändert werden
diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml
index 67ce1758e5..77d0c2716a 100644
--- a/config/locales/activerecord.el.yml
+++ b/config/locales/activerecord.el.yml
@@ -30,3 +30,9 @@ el:
email:
blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail
unreachable: δεν φαίνεται να υπάρχει
+ user_role:
+ attributes:
+ permissions_as_keys:
+ own_role: δεν μπορεί να αλλάξει με τον τρέχοντα ρόλο σας
+ position:
+ own_role: δεν μπορεί να αλλάξει με τον τρέχοντα ρόλο σας
diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml
index 720b0f5e30..2dfa3b955e 100644
--- a/config/locales/activerecord.en.yml
+++ b/config/locales/activerecord.en.yml
@@ -38,3 +38,14 @@ en:
email:
blocked: uses a disallowed e-mail provider
unreachable: does not seem to exist
+ role_id:
+ elevated: cannot be higher than your current role
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: include permissions that are not safe for the base role
+ elevated: cannot include permissions your current role does not possess
+ own_role: cannot be changed with your current role
+ position:
+ elevated: cannot be higher than your current role
+ own_role: cannot be changed with your current role
diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml
index 8a9b75a8c7..d1eda34062 100644
--- a/config/locales/activerecord.es-AR.yml
+++ b/config/locales/activerecord.es-AR.yml
@@ -38,3 +38,14 @@ es-AR:
email:
blocked: usa un proveedor de correo electrónico no permitido
unreachable: no parece existir
+ role_id:
+ elevated: no puede ser mayor que tu rol actual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: incluir permisos que no son seguros para el rol base
+ elevated: no se pueden incluir permisos que tu rol actual no posea
+ own_role: no se puede cambiar con tu rol actual
+ position:
+ elevated: no puede ser mayor que tu rol actual
+ own_role: no se puede cambiar con tu rol actual
diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml
index c316a70a7a..c7283aafd5 100644
--- a/config/locales/activerecord.es-MX.yml
+++ b/config/locales/activerecord.es-MX.yml
@@ -21,6 +21,14 @@ es-MX:
username:
invalid: solo puede contener letras, números y guiones bajos
reserved: está reservado
+ admin/webhook:
+ attributes:
+ url:
+ invalid: no es una URL válida
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: no es una URL válida
status:
attributes:
reblog:
@@ -30,3 +38,14 @@ es-MX:
email:
blocked: utiliza un proveedor de correo no autorizado
unreachable: no parece existir
+ role_id:
+ elevated: no puede ser mayor que tu rol actual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: incluir permisos que no son seguros para el rol base
+ elevated: no se pueden incluir permisos que tu rol actual no posea
+ own_role: no se puede cambiar con tu rol actual
+ position:
+ elevated: no puede ser mayor que tu rol actual
+ own_role: no se puede cambiar con tu rol actual
diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml
index 805e6b9204..4aec0f074f 100644
--- a/config/locales/activerecord.es.yml
+++ b/config/locales/activerecord.es.yml
@@ -38,3 +38,14 @@ es:
email:
blocked: utiliza un proveedor de correo no autorizado
unreachable: no parece existir
+ role_id:
+ elevated: no puede ser mayor que tu rol actual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: incluir permisos que no son seguros para el rol base
+ elevated: no se pueden incluir permisos que tu rol actual no posea
+ own_role: no se puede cambiar con tu rol actual
+ position:
+ elevated: no puede ser mayor que tu rol actual
+ own_role: no se puede cambiar con tu rol actual
diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml
index 40dd81812e..f9798cabe4 100644
--- a/config/locales/activerecord.fi.yml
+++ b/config/locales/activerecord.fi.yml
@@ -21,6 +21,14 @@ fi:
username:
invalid: saa sisältää vain kirjaimia, numeroita ja alaviivoja
reserved: on varattu
+ admin/webhook:
+ attributes:
+ url:
+ invalid: ei ole kelvollinen URL
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: ei ole kelvollinen URL
status:
attributes:
reblog:
@@ -30,3 +38,14 @@ fi:
email:
blocked: käyttää kiellettyä sähköpostipalvelun tarjoajaa
unreachable: ei näytä olevan olemassa
+ role_id:
+ elevated: ei voi olla korkeampi kuin nykyinen roolisi
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: sisältää oikeudet, jotka eivät ole turvallisia perusroolille
+ elevated: ei voi sisältää oikeuksia, joita nykyisellä roolillasi ei ole
+ own_role: ei voi muuttaa nykyisellä roolillasi
+ position:
+ elevated: ei voi olla korkeampi kuin nykyinen roolisi
+ own_role: ei voi muuttaa nykyisellä roolillasi
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index 4ab8f6a919..cc650cec83 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -38,3 +38,14 @@ fr:
email:
blocked: utilise un fournisseur de courriel interdit
unreachable: ne semble pas exister
+ role_id:
+ elevated: ne peut pas être supérieur à votre rôle actuel
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: inclure des autorisations non sécurisées pour le rôle de base
+ elevated: ne peut pas inclure des autorisations que votre rôle actuel ne possède pas
+ own_role: ne peut pas être modifié avec votre rôle actuel
+ position:
+ elevated: ne peut pas être supérieur à votre rôle actuel
+ own_role: ne peut pas être modifié avec votre rôle actuel
diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml
index 2920b561ef..b210144eff 100644
--- a/config/locales/activerecord.gd.yml
+++ b/config/locales/activerecord.gd.yml
@@ -21,6 +21,14 @@ gd:
username:
invalid: "– chan fhaod ach litrichean gun sràcan, àireamhan ’s fo-loidhnichean a bhith ’na bhroinn"
reserved: "– tha e glèidhte"
+ admin/webhook:
+ attributes:
+ url:
+ invalid: "– chan eil seo ’na URL dligheach"
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: "– chan eil seo ’na URL dligheach"
status:
attributes:
reblog:
@@ -30,3 +38,14 @@ gd:
email:
blocked: "– tha seo a’ chleachdadh solaraiche puist-d nach eil ceadaichte"
unreachable: "– tha coltas nach eil seo ann"
+ role_id:
+ elevated: "– chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta"
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: gabh a-staigh na ceadan nach eil sàbhailte dhan bhun-dreuchd
+ elevated: chan urrainn dhut ceadan a ghabhail a-staigh nach eil aig an dreuchd a th’ agad an-dràsta
+ own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta
+ position:
+ elevated: chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta
+ own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta
diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml
index 4b039f5afe..a80e3ece52 100644
--- a/config/locales/activerecord.gl.yml
+++ b/config/locales/activerecord.gl.yml
@@ -38,3 +38,14 @@ gl:
email:
blocked: utiliza un provedor de email non autorizado
unreachable: semella que non existe
+ role_id:
+ elevated: non pode superar o teu rol actual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: inclúe permisos que non son seguros para o rol básico
+ elevated: non pode incluir permisos que o teu rol actual non posúe
+ own_role: non pode ser modificado co teu rol actual
+ position:
+ elevated: non pode superar ao teu rol actual
+ own_role: non pode ser modificado co teu rol actual
diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml
index 5dc8ddc962..7a9d54cd24 100644
--- a/config/locales/activerecord.he.yml
+++ b/config/locales/activerecord.he.yml
@@ -21,6 +21,14 @@ he:
username:
invalid: ספרות, אותיות לטיניות וקו תחתי בלבד
reserved: שמור
+ admin/webhook:
+ attributes:
+ url:
+ invalid: כתובת לא חוקית
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: הינה כתובת לא חוקית
status:
attributes:
reblog:
@@ -30,3 +38,14 @@ he:
email:
blocked: עושה שימוש בספק דוא"ל אסור
unreachable: נראה שלא קיים
+ role_id:
+ elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: כלול הרשאות לא בטוחות לתפקיד הבסיסי
+ elevated: לא ניתן לכלול הרשאות שתפקידך הנוכחי לא כולל
+ own_role: לא ניתן למזג על תפקידך הנוכחי
+ position:
+ elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי
+ own_role: לא ניתן לשנות באמצעות תפקידך הנוכחי
diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml
index 442bf38581..44340b3e91 100644
--- a/config/locales/activerecord.hu.yml
+++ b/config/locales/activerecord.hu.yml
@@ -38,3 +38,14 @@ hu:
email:
blocked: egy letiltott e-mail szolgáltatót használ
unreachable: úgy tűnik, hogy nem létezik
+ role_id:
+ elevated: nem lehet magasabb, mint a jelenlegi szereped
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: tartalmaz olyan engedélyeket is, melyek az alap szerephez nem biztonságosak
+ elevated: nem tartalmazhat olyan engedélyeket, melyek nincsenek benne a jelenlegi szerepedben
+ own_role: nem megváltoztatható a jelenlegi szerepköröddel
+ position:
+ elevated: nem lehet magasabb, mint a jelenlegi szereped
+ own_role: nem megváltoztatható a jelenlegi szerepköröddel
diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml
index 9779cbdd11..5c809ce2e1 100644
--- a/config/locales/activerecord.io.yml
+++ b/config/locales/activerecord.io.yml
@@ -38,3 +38,14 @@ io:
email:
blocked: uzas nepermisata retpostodomeno
unreachable: semblas ne existar
+ role_id:
+ elevated: ne povas divenar plu alta kam vua nuna rolo
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: inkluzas permisi quo ne esas segura por bazrolo
+ elevated: ne povas inkluzar permisi quon vua nuna rolo ne havas
+ own_role: ne povas divenesar kun vua nuna rolo
+ position:
+ elevated: ne povas divenar plu alta kam vua nuna rolo
+ own_role: ne povas divenesar kun vua nuna rolo
diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml
index 75c18c6a37..1fe5403226 100644
--- a/config/locales/activerecord.is.yml
+++ b/config/locales/activerecord.is.yml
@@ -38,3 +38,14 @@ is:
email:
blocked: notar óleyfilega tölvupóstþjónustu
unreachable: virðist ekki vera til
+ role_id:
+ elevated: getur ekki verið veigameiri en núverandi hlutverk þitt
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: hefur heimildir sem ekki eru öruggar fyrir grunnhlutverk
+ elevated: getur ekki haft heimildir sem núverandi hlutverk þitt er ekki með
+ own_role: er ekki hægt að breyta með þinu hlutverki
+ position:
+ elevated: getur ekki verið veigameiri en núverandi hlutverk þitt
+ own_role: er ekki hægt að breyta með þinu hlutverki
diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml
index 307bd801e8..388c354aef 100644
--- a/config/locales/activerecord.it.yml
+++ b/config/locales/activerecord.it.yml
@@ -38,3 +38,14 @@ it:
email:
blocked: utilizza un provider di posta elettronica non autorizzato
unreachable: non sembra esistere
+ role_id:
+ elevated: non può essere superiore al tuo ruolo attuale
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: include i permessi non sicuri per il ruolo di base
+ elevated: non è possibile includere i permessi che il tuo ruolo attuale non possiede
+ own_role: non può essere modificato con il tuo ruolo attuale
+ position:
+ elevated: non può essere superiore al tuo ruolo attuale
+ own_role: non può essere modificato con il tuo ruolo attuale
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index 52b1b37fd9..06d63da7a7 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -38,3 +38,9 @@ ja:
email:
blocked: は禁止されているメールプロバイダを使用しています
unreachable: は存在しないようです
+ user_role:
+ attributes:
+ permissions_as_keys:
+ own_role: 現在と同じロールには変更できません
+ position:
+ own_role: 現在と同じロールには変更できません
diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml
index 4db8d73af8..8ce4c07013 100644
--- a/config/locales/activerecord.ko.yml
+++ b/config/locales/activerecord.ko.yml
@@ -38,3 +38,14 @@ ko:
email:
blocked: 허용되지 않은 이메일 제공자입니다
unreachable: 존재하지 않는 것 같습니다
+ role_id:
+ elevated: 당신의 현재 역할보다 높을 수 없습니다
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: 기본 역할로 사용하기에 안전하지 않은 권한을 포함하고 있습니다
+ elevated: 당신의 현재 역할이 가지고 있지 않은 권한은 포함할 수 없습니다
+ own_role: 당신의 현재 역할을 변경할 수 없습니다
+ position:
+ elevated: 당신의 현재 역할보다 높을 수 없습니다
+ own_role: 당신의 현재 역할을 변경할 수 없습니다
diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml
index b440181d80..3eec2950cf 100644
--- a/config/locales/activerecord.ku.yml
+++ b/config/locales/activerecord.ku.yml
@@ -38,3 +38,14 @@ ku:
email:
blocked: dabînkerê e-nameya qedexe bi kar tîne
unreachable: xuya ye ku tune ye
+ role_id:
+ elevated: nabe ku ji rola te ya heyî bilindtir be
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: mafdayînên ku ji bo rola bingehîn ne ewle ne tê de hene
+ elevated: di rola te ya heyî de nabe mafdayîn tê de hebin
+ own_role: bi rola te ya heyî nayê guhertin
+ position:
+ elevated: nabe ku ji rola te ya heyî bilindtir be
+ own_role: bi rola te ya heyî nayê guhertin
diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml
index 89a1fb0943..ba31a8b3c4 100644
--- a/config/locales/activerecord.lv.yml
+++ b/config/locales/activerecord.lv.yml
@@ -3,7 +3,7 @@ lv:
activerecord:
attributes:
poll:
- expires_at: Deadline
+ expires_at: Gala termiņš
options: Izvēles
user:
agreement: Pakalpojuma līgums
@@ -38,3 +38,14 @@ lv:
email:
blocked: lieto neatļautu epasta pakalpojuma sniedzēju
unreachable: šķiet, ka neeksistē
+ role_id:
+ elevated: nevar būt augstāka par tavu pašreizējo lomu
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: ietver atļaujas, kas nav drošas pamata lomai
+ elevated: nevar ietvert atļaujas, kas nepieder tavai pašreizējai lomai
+ own_role: nevar mainīt pert tavu pašreizējo lomu
+ position:
+ elevated: nevar būt augstāka par tavu pašreizējo lomu
+ own_role: nevar mainīt pert tavu pašreizējo lomu
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
index 9d3adf2905..7bfe0f7101 100644
--- a/config/locales/activerecord.nl.yml
+++ b/config/locales/activerecord.nl.yml
@@ -38,3 +38,14 @@ nl:
email:
blocked: gebruikt een niet toegestane e-mailprovider
unreachable: schijnt niet te bestaan
+ role_id:
+ elevated: kan niet hoger zijn dan jouw huidige rol
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: rechten toevoegen die niet veilig zijn voor de basisrol
+ elevated: kan geen rechten toevoegen die jouw huidige rol niet bezit
+ own_role: kan niet met jouw huidige rol worden gewijzigd
+ position:
+ elevated: kan niet hoger zijn dan jouw huidige rol
+ own_role: kan niet met jouw huidige rol worden gewijzigd
diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml
index f23f9ae6c1..ce37d1856e 100644
--- a/config/locales/activerecord.nn.yml
+++ b/config/locales/activerecord.nn.yml
@@ -6,11 +6,12 @@ nn:
expires_at: Frist
options: Val
user:
- email: E-mail address
+ agreement: Serviceavtale
+ email: Epostadresse
locale: Område
password: Passord
user/account:
- username: Brukernavn
+ username: Brukarnamn
user/invite_request:
text: Grunn
errors:
@@ -18,9 +19,32 @@ nn:
account:
attributes:
username:
- invalid: bare bokstaver, tall og understreker
+ invalid: må innehalde kun bokstavar, tal og understrekar
reserved: er reservert
+ admin/webhook:
+ attributes:
+ url:
+ invalid: er ikkje ein gyldig URL
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: er ikkje ein gyldig URL
status:
attributes:
reblog:
- taken: av status eksisterer allerede
+ taken: av innlegg eksisterer allereie
+ user:
+ attributes:
+ email:
+ unreachable: ser ikkje ut til å eksistere
+ role_id:
+ elevated: kan ikkje vere høgare enn di noverande rolle
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: inkluder tillatingar som ikkje er trygge for basisrolla
+ elevated: kan ikkje inkludere rettigheiter di noverande rolle ikkje innehar
+ own_role: kan ikkje endrast med di noverande rolle
+ position:
+ elevated: kan ikkje vere høgare enn di noverande rolle
+ own_role: kan ikkje endrast med di noverande rolle
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index e9af762449..68d0b77847 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -38,3 +38,14 @@ pl:
email:
blocked: używa niedozwolonego dostawcy poczty elektronicznej
unreachable: wydaje się nie istnieć
+ role_id:
+ elevated: nie może być wyższa niż twoja bieżąca rola
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: dołącz uprawnienia, które nie są bezpieczne dla roli podstawowej
+ elevated: nie może zawierać uprawnień, jakie twoja obecna rola nie posiada
+ own_role: nie można zmienić z aktualną rolą
+ position:
+ elevated: nie może być wyższa niż twoja bieżąca rola
+ own_role: nie można zmienić z aktualną rolą
diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml
index 8b4d3439ad..105f5a550c 100644
--- a/config/locales/activerecord.pt-BR.yml
+++ b/config/locales/activerecord.pt-BR.yml
@@ -21,6 +21,14 @@ pt-BR:
username:
invalid: apenas letras, números e underlines ( "_" )
reserved: já existe
+ admin/webhook:
+ attributes:
+ url:
+ invalid: não é uma URL válida
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: não é uma URL válida
status:
attributes:
reblog:
@@ -30,3 +38,13 @@ pt-BR:
email:
blocked: usa provedor de e-mail não permitido
unreachable: parece não existir
+ role_id:
+ elevated: não pode ser maior do que sua função atual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ elevated: não pode incluir permissões que a sua função atual não possui
+ own_role: não pode ser alterado com sua função atual
+ position:
+ elevated: não pode ser maior do que sua função atual
+ own_role: não pode ser alterado com sua função atual
diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml
index 5b89ee5a2d..b730eaf678 100644
--- a/config/locales/activerecord.pt-PT.yml
+++ b/config/locales/activerecord.pt-PT.yml
@@ -38,3 +38,14 @@ pt-PT:
email:
blocked: utiliza um provedor de e-mail não permitido
unreachable: não parece existir
+ role_id:
+ elevated: não pode ser maior que o da sua função atual
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: incluir permissões que não são seguras para a função base
+ elevated: não pode incluir permissões que a sua função atual não possui
+ own_role: não pode ser alterado com a sua função atual
+ position:
+ elevated: não pode ser maior que o da sua função atual
+ own_role: não pode ser alterado com a sua função atual
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 758fe7dd4d..fb8c6dde51 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -38,3 +38,14 @@ ru:
email:
blocked: использует запрещённого провайдера эл. почты
unreachable: не существует
+ role_id:
+ elevated: не может быть выше вашей текущей роли
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: включить разрешения, небезопасные для базовой роли
+ elevated: не может включать разрешения, которыми не обладает ваша текущая роль
+ own_role: невозможно изменить с вашей текущей ролью
+ position:
+ elevated: не может быть выше, чем ваша текущая роль
+ own_role: невозможно изменить с вашей текущей ролью
diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml
index 7927cb4fc3..255f5e1ed9 100644
--- a/config/locales/activerecord.sl.yml
+++ b/config/locales/activerecord.sl.yml
@@ -38,3 +38,14 @@ sl:
email:
blocked: uporablja nedovoljenega ponudnika e-poštnih storitev
unreachable: kot kaže ne obstaja
+ role_id:
+ elevated: ne more biti višje od vaše trenutne vloge
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: vključi pravice, ki niso varne za osnovno vlogo
+ elevated: ni mogoče vključiti pravic, ki jih vaša trenutna vloga ne vsebuje
+ own_role: ni mogoče spremeniti z vašo trenutno vlogo
+ position:
+ elevated: ne more biti višje od vaše trenutne vloge
+ own_role: ni mogoče spremeniti z vašo trenutno vlogo
diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml
index 57de9d3cb8..a4c8af15f8 100644
--- a/config/locales/activerecord.sq.yml
+++ b/config/locales/activerecord.sq.yml
@@ -38,3 +38,14 @@ sq:
email:
blocked: përdor një shërbim email të palejuar
unreachable: s’duket se ekziston
+ role_id:
+ elevated: s’mund të jetë më i lartë sesa roli juaj i tanishëm
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: përfshi leje që s’janë të parrezik për rolin bazë
+ elevated: s’mund të përfshijë leje të cilat roli juaj i tanishëm s’i përfshin
+ own_role: s’mund të ndryshohet me rolin tuaj të tanishëm
+ position:
+ elevated: s’mund të jetë më i lartë sesa roli juaj i tanishëm
+ own_role: s’mund të ndryshohet me rolin tuaj të tanishëm
diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml
index 60908144f8..64586f5bbe 100644
--- a/config/locales/activerecord.th.yml
+++ b/config/locales/activerecord.th.yml
@@ -38,3 +38,14 @@ th:
email:
blocked: ใช้ผู้ให้บริการอีเมลที่ไม่ได้รับอนุญาต
unreachable: ดูเหมือนว่าจะไม่มีอยู่
+ role_id:
+ elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: รวมสิทธิอนุญาตที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน
+ elevated: ไม่สามารถรวมสิทธิอนุญาตที่บทบาทปัจจุบันของคุณไม่มี
+ own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ
+ position:
+ elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ
+ own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ
diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml
index ac40e06159..f0787dc415 100644
--- a/config/locales/activerecord.tr.yml
+++ b/config/locales/activerecord.tr.yml
@@ -38,3 +38,14 @@ tr:
email:
blocked: izin verilmeyen bir e-posta sağlayıcı kullanıyor
unreachable: mevcut gözükmüyor
+ role_id:
+ elevated: mevcut rolünüzden yüksek olamaz
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: temel rol için güvenli olmayan izinleri içerir
+ elevated: mevcut rolünüzün sahip olmadığı izinleri içeremez
+ own_role: mevcut rolünüzle değiştirilemez
+ position:
+ elevated: mevcut rolünüzden yüksek olamaz
+ own_role: mevcut rolünüzle değiştirilemez
diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml
index 06967ddc77..159f6d40a1 100644
--- a/config/locales/activerecord.uk.yml
+++ b/config/locales/activerecord.uk.yml
@@ -38,3 +38,14 @@ uk:
email:
blocked: використовує не дозволенного постачальника електронної пошти
unreachable: не існує
+ role_id:
+ elevated: не може бути вищою за поточну роль
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: включити небезпечні для базової ролі дозволи
+ elevated: не можна включити права, якими не володіє ваша поточна роль
+ own_role: не можна змінити у вашій поточній ролі
+ position:
+ elevated: не може бути вищою за поточну роль
+ own_role: не можна змінити у вашій поточній ролі
diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml
index 6c7c419035..9062dc5321 100644
--- a/config/locales/activerecord.vi.yml
+++ b/config/locales/activerecord.vi.yml
@@ -38,3 +38,14 @@ vi:
email:
blocked: sử dụng dịch vụ email bị cấm
unreachable: không tồn tại
+ role_id:
+ elevated: không thể cao hơn vai trò hiện tại của bạn
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: bao gồm các quyền không an toàn cho vai trò cơ bản
+ elevated: không thể bao gồm các quyền mà vai trò hiện tại của bạn không có
+ own_role: không thể thay đổi vai trò hiện tại của bạn
+ position:
+ elevated: không thể cao hơn vai trò hiện tại của bạn
+ own_role: không thể thay đổi vai trò hiện tại của bạn
diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml
index 855e79de6c..c46c874517 100644
--- a/config/locales/activerecord.zh-CN.yml
+++ b/config/locales/activerecord.zh-CN.yml
@@ -19,18 +19,33 @@ zh-CN:
account:
attributes:
username:
- invalid: 只能使用字母、数字和下划线
+ invalid: 只能包含字母、数字和下划线
reserved: 是保留关键字
admin/webhook:
attributes:
url:
- invalid: 不是有效的 URL。
+ invalid: 非有效网址
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: 非有效网址
status:
attributes:
reblog:
- taken: 已经被转嘟过
+ taken: 已被转嘟过
user:
attributes:
email:
blocked: 使用了被封禁的电子邮件提供商
unreachable: 似乎不存在
+ role_id:
+ elevated: 不能高于您当前的身份
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: 包含对基本角色不安全的权限
+ elevated: 不能包含您当前角色不拥有的权限
+ own_role: 无法以您当前的身份更改
+ position:
+ elevated: 不能高于您当前的角色
+ own_role: 无法以您当前的身份更改
diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml
index bea950ed68..2ebb4460c1 100644
--- a/config/locales/activerecord.zh-TW.yml
+++ b/config/locales/activerecord.zh-TW.yml
@@ -38,3 +38,14 @@ zh-TW:
email:
blocked: 使用不被允許的電子信箱供應商
unreachable: 似乎不存在
+ role_id:
+ elevated: 不能高於您目前的角色
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: 包含對基本角色不安全的權限
+ elevated: 不能包含您目前角色不具備的權限
+ own_role: 無法被您目前的角色更改
+ position:
+ elevated: 不能高於您目前的角色
+ own_role: 無法被您目前的角色更改
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 01f55f344e..691cc86890 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -28,7 +28,6 @@ ar:
learn_more: تعلم المزيد
logged_in_as_html: أنت متصل حالياً كـ %{username}.
logout_before_registering: أنت متصل سلفًا.
- privacy_policy: سياسة الخصوصية
rules: قوانين الخادم
rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:'
see_whats_happening: اطّلع على ما يجري
@@ -42,7 +41,6 @@ ar:
two: منشورات
zero: منشورات
status_count_before: نشروا
- terms: شروط الخدمة
unavailable_content: محتوى غير متوفر
unavailable_content_description:
domain: الخادم
@@ -98,10 +96,8 @@ ar:
posts_tab_heading: المنشورات
posts_with_replies: المنشورات والردود
roles:
- admin: المدير
bot: روبوت
group: فريق
- moderator: مُشرِف
unavailable: الصفحة التعريفية غير متوفرة
unfollow: إلغاء المتابعة
admin:
@@ -120,7 +116,6 @@ ar:
avatar: الصورة الرمزية
by_domain: النطاق
change_email:
- changed_msg: تم تعديل عنوان البريد الإلكتروني الخاص بالحساب بنجاح!
current_email: عنوان البريد الإلكتروني الحالي
label: تعديل عنوان البريد الإلكتروني
new_email: عنوان البريد الإلكتروني الجديد
@@ -199,12 +194,6 @@ ar:
reset: إعادة التعيين
reset_password: إعادة ضبط كلمة السر
resubscribe: إعادة الاشتراك
- role: الصلاحيات
- roles:
- admin: مدير
- moderator: مشرف
- staff: الفريق
- user: مستخدِم
search: البحث
search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني
search_same_ip: مستخدِمون آخرون بنفس الـ IP
@@ -308,7 +297,6 @@ ar:
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}
@@ -340,7 +328,6 @@ ar:
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: تصفية حسب المستخدم
@@ -665,9 +652,6 @@ ar:
deletion:
desc_html: السماح لأي مستخدم إغلاق حسابه
title: السماح بحذف الحسابات
- min_invite_role:
- disabled: لا أحد
- title: المستخدِمون المصرح لهم لإرسال الدعوات
require_invite_text:
desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري
title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل
@@ -680,9 +664,6 @@ ar:
show_known_fediverse_at_about_page:
desc_html: عند التعطيل، يُقيّد الخط الزمني العام المرتبط من صفحة الهبوط لعرض المحتوى المحلي فقط
title: إظهار الفديفرس الموحَّد في خيط المُعايَنة
- show_staff_badge:
- desc_html: عرض شارة الموظفين على صفحة المستخدم
- title: إظهار شارة الموظفين
site_description:
desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما <a>
و <em>
.
title: وصف مثيل الخادوم
@@ -692,9 +673,6 @@ ar:
site_short_description:
desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم.
title: مقدمة وصفية قصيرة عن مثيل الخادوم
- site_terms:
- desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
- title: شروط الخدمة المخصصة
site_title: اسم مثيل الخادم
thumbnail:
desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به
@@ -703,9 +681,6 @@ ar:
desc_html: عرض الخيط العمومي على صفحة الاستقبال
title: مُعاينة الخيط العام
title: إعدادات الموقع
- trendable_by_default:
- desc_html: يؤثر على علامات الوسوم التي لم يكن مسموح بها مسبقاً
- title: السماح للوسوم بالظهور على المتداوَلة بدون مراجعة مسبقة
trends:
desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن
title: الوسوم المتداولة
@@ -1026,7 +1001,6 @@ ar:
title: تعديل عامل التصفية
errors:
invalid_context: لم تقم بتحديد أي مجال أو أنّ المجال غير صالح
- invalid_irreversible: إلّا مجالات الإشعارات و الخيط الرئيسي معنية بالتصفية اللارجعية
index:
delete: إزالة
empty: ليست لديك أية عوامل تصفية.
@@ -1160,18 +1134,6 @@ ar:
admin:
sign_up:
subject: أنشأ %{name} حسابًا
- digest:
- action: معاينة كافة الإشعارات
- body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since}
- mention: "%{name} أشار إليك في:"
- new_followers_summary:
- few: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
- many: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
- one: و لقد تحصّلتَ كذلك على مُتابِع آخَر بينما كنتَ غائبًا! هذا شيء رائع!
- other: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
- two: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
- zero: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
- title: أثناء فترة غيابك...
favourite:
body: 'أُعجب %{name} بمنشورك:'
subject: أُعجِب %{name} بمنشورك
@@ -1469,8 +1431,6 @@ ar:
sensitive_content: محتوى حساس
tags:
does_not_match_previous_name: لا يطابق الإسم السابق
- terms:
- title: شروط الخدمة وسياسة الخصوصية على %{instance}
themes:
contrast: ماستدون (تباين عالٍ)
default: ماستدون (داكن)
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index 1fb1cee900..6fc9065620 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -24,7 +24,6 @@ ast:
one: artículu
other: artículos
status_count_before: Que crearon
- terms: Términos del serviciu
unavailable_content_description:
domain: Sirvidor
reason: Motivu
@@ -70,11 +69,6 @@ ast:
resend_confirmation:
already_confirmed: Esti usuariu yá ta confirmáu
send: Reunviar les instrucciones
- role: Permisos
- roles:
- admin: Alministrador
- moderator: Llendador
- user: Usuariu
statuses: Estaos
title: Cuentes
username: Nome d'usuariu
@@ -134,12 +128,17 @@ ast:
are_you_sure: "¿De xuru?"
status: Estáu
title: Informes
+ roles:
+ everyone: Permisos predeterminaos
+ permissions_count:
+ one: "%{count} permisu"
+ other: "%{count} permisos"
settings:
- registrations:
- min_invite_role:
- disabled: Naide
site_description:
title: Descripción del sirvidor
+ site_terms:
+ desc_html: Pues escribir la to política de privacidá. Tamién pues usar etiquetes HTML
+ title: Política de privacidá personalizada
site_title: Nome del sirvidor
title: Axustes del sitiu
title: Alministración
@@ -317,9 +316,6 @@ ast:
warning:
followers: Esta aición va mover tolos siguidores de la cuenta actual a la nueva
notification_mailer:
- digest:
- body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since}
- mention: "%{name} mentóte en:"
favourite:
title: Favoritu nuevu
follow:
@@ -353,7 +349,7 @@ ast:
followers: Siguidores
most_recent: Lo más recién
relationship: Rellación
- remove_selected_follows: Dexar de siguir a los usuarios esbillaos
+ remove_selected_follows: Dexar de siguir a los usuarios seleicionaos
status: Estáu
remote_follow:
acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer
@@ -471,6 +467,8 @@ ast:
sensitive_content: Conteníu sensible
tags:
does_not_match_previous_name: nun concasa col nome anterior
+ terms:
+ title: 'Política de pirvacidá de: %{instance}'
themes:
contrast: Contraste altu
default: Mastodon
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 04296b342a..23c11e5431 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -21,7 +21,6 @@ bg:
get_apps: Опитайте мобилно приложение
hosted_on: Mastodon е хостван на %{domain}
learn_more: Още информация
- privacy_policy: Политика за поверителност
see_whats_happening: Вижте какво се случва
server_stats: 'Сървърна статистика:'
source_code: Програмен код
@@ -29,7 +28,6 @@ bg:
one: състояние
other: състояния
status_count_before: Написали
- terms: Условия за ползване
unavailable_content: Модерирани сървъри
unavailable_content_description:
domain: Сървър
@@ -71,10 +69,8 @@ bg:
posts_tab_heading: Публикации
posts_with_replies: Публикации и отговори
roles:
- admin: Админ
bot: Бот
group: Група
- moderator: Мод
unavailable: Профилът не е наличен
unfollow: Не следвай
admin:
@@ -90,7 +86,6 @@ bg:
avatar: Аватар
by_domain: Домейн
change_email:
- changed_msg: Имейлът на акаунта беше успешно променен!
current_email: Текущ имейл
label: Промяна на имейл
new_email: Нов имейл
@@ -233,12 +228,6 @@ bg:
images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения
too_many: Не мога да прикача повече от 4 файла
notification_mailer:
- digest:
- body: Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since}
- mention: "%{name} те спомена в:"
- new_followers_summary:
- one: Имаш един нов последовател! Ура!
- other: Имаш %{count} нови последователи! Изумително!
favourite:
body: 'Публикацията ти беше харесана от %{name}:'
subject: "%{name} хареса твоята публикация"
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index ae1ced4506..a30d933e59 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -23,7 +23,6 @@ bn:
hosted_on: এই মাস্টাডনটি আছে %{domain} এ
instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n"
learn_more: বিস্তারিত জানুন
- privacy_policy: গোপনীয়তা নীতি
see_whats_happening: কী কী হচ্ছে দেখুন
server_stats: 'সার্ভারের অবস্থা:'
source_code: আসল তৈরীপত্র
@@ -31,7 +30,6 @@ bn:
one: অবস্থা
other: স্থিতিগুলি
status_count_before: কে লিখেছে
- terms: ব্যবহারের শর্তাবলী
unavailable_content: অনুপলব্ধ সামগ্রী
unavailable_content_description:
domain: সার্ভার
@@ -74,10 +72,8 @@ bn:
posts_tab_heading: লেখাগুলো
posts_with_replies: লেখা এবং মতামত
roles:
- admin: পরিচালক
bot: রোবট
group: গোষ্ঠী
- moderator: পরিচালক
unavailable: প্রোফাইল অনুপলব্ধ
unfollow: অনুসরণ বাদ
admin:
@@ -95,7 +91,6 @@ bn:
avatar: অবতার
by_domain: ওয়েবসাইট/কার্যক্ষেত্র
change_email:
- changed_msg: নিবন্ধনের ইমেইল সঠিকভাবে পরিবর্তন হয়েছে!
current_email: এখনকার ইমেইল
label: ইমেইল পরিবর্তন
new_email: নতুন ইমেইল
@@ -160,12 +155,6 @@ bn:
reset: পুনরায় সেট করুন
reset_password: পাসওয়ার্ড পুনঃস্থাপন করুন
resubscribe: পুনরায় সদস্যতা নিন
- role: অনুমতিসমূহ
- roles:
- admin: পরিচালক
- moderator: নিয়ামক
- staff: কর্মী
- user: ব্যবহারকারী
search: অনুসন্ধান
search_same_email_domain: একই ইমেল ডোমেন সহ অন্যান্য ব্যবহারকারীরা
search_same_ip: একই IP সহ অন্যান্য ব্যবহারকারীরা
diff --git a/config/locales/br.yml b/config/locales/br.yml
index f7c0605794..0e9b9d1ee0 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -9,7 +9,6 @@ br:
contact: Darempred
discover_users: Dizoleiñ implijer·ien·ezed
learn_more: Gouzout hiroc'h
- privacy_policy: Reolennoù prevezded
rules: Reolennoù ar servijer
server_stats: 'Stadegoù ar servijer:'
source_code: Boneg tarzh
@@ -19,7 +18,6 @@ br:
one: toud
other: toud
two: toud
- terms: Divizoù gwerzhañ hollek
unavailable_content_description:
domain: Dafariad
user_count_after:
@@ -48,7 +46,6 @@ br:
posts_tab_heading: Toudoù
posts_with_replies: Toudoù ha respontoù
roles:
- admin: Merour
bot: Robot
group: Strollad
unavailable: Profil dihegerz
@@ -83,10 +80,6 @@ br:
remove_header: Dilemel an talbenn
reset: Adderaouekaat
reset_password: Adderaouekaat ar ger-tremen
- roles:
- admin: Merour
- moderator: Habaskaer·ez
- user: Implijer·ez
search: Klask
suspended: Astalet
title: Kontoù
@@ -94,7 +87,6 @@ br:
action_logs:
action_types:
destroy_status: Dilemel ar statud
- deleted_status: "(statud dilemet)"
announcements:
new:
create: Sevel ur gemenn
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 8c8fa1ffb8..3f381d76cb 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -28,7 +28,7 @@ ca:
learn_more: Aprèn més
logged_in_as_html: Actualment has iniciat sessió com a %{username}.
logout_before_registering: Ja has iniciat sessió.
- privacy_policy: Política de privadesa
+ privacy_policy: Política de Privacitat
rules: Normes del servidor
rules_html: 'A continuació, es mostra 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
@@ -39,7 +39,6 @@ ca:
other: publicacions
status_count_before: Qui ha publicat
tagline: Xarxa social descentralitzada
- terms: Condicions de servei
unavailable_content: Servidors moderats
unavailable_content_description:
domain: Servidor
@@ -83,10 +82,8 @@ ca:
posts_tab_heading: Publicacions
posts_with_replies: Publicacions i respostes
roles:
- admin: Administrador
bot: Bot
group: Grup
- moderator: Moderador
unavailable: Perfil inaccessible
unfollow: Deixa de seguir
admin:
@@ -111,6 +108,11 @@ ca:
new_email: Adreça electrònica nova
submit: Canvia l'adreça electrònica
title: Canvia l'adreça electrònica de %{username}
+ change_role:
+ changed_msg: Els privilegis del compte s'han canviat correctament!
+ label: Canvia rol
+ no_role: Sense rol
+ title: Canvia el rol per a %{username}
confirm: Confirma
confirmed: Confirmat
confirming: Confirmant
@@ -154,6 +156,7 @@ ca:
active: Actiu
all: Tot
pending: Pendent
+ silenced: Limitat
suspended: Suspès
title: Moderació
moderation_notes: Notes de moderació
@@ -161,6 +164,7 @@ ca:
most_recent_ip: IP més recent
no_account_selected: No s'han canviat els comptes perquè no s'han seleccionat
no_limits_imposed: Sense límits imposats
+ no_role_assigned: Cap rol assignat
not_subscribed: No subscrit
pending: Revisió pendent
perform_full_suspension: Suspèn
@@ -187,12 +191,7 @@ ca:
reset: Reinicialitza
reset_password: Restableix la contrasenya
resubscribe: Torna a subscriure
- role: Permisos
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Personal
- user: Usuari
+ role: Rol
search: Cerca
search_same_email_domain: Altres usuaris amb el mateix domini de correu
search_same_ip: Altres usuaris amb la mateixa IP
@@ -235,17 +234,21 @@ ca:
approve_user: Aprova l'usuari
assigned_to_self_report: Assigna l'informe
change_email_user: Canvia l'adreça electrònica per l'usuari
+ change_role_user: Canvia el Rol del Usuari
confirm_user: Confirma l'usuari
create_account_warning: Crea un avís
create_announcement: Crea un anunci
+ create_canonical_email_block: Crea un bloqueig de correu electrònic
create_custom_emoji: Crea un emoji personalitzat
create_domain_allow: Crea un domini permès
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
+ create_user_role: Crea Rol
demote_user: Degrada l'usuari
destroy_announcement: Esborra l'anunci
+ destroy_canonical_email_block: Esborra el bloqueig de correu electrònic
destroy_custom_emoji: Esborra l'emoji personalitzat
destroy_domain_allow: Esborra el domini permès
destroy_domain_block: Esborra el bloqueig de domini
@@ -254,6 +257,7 @@ ca:
destroy_ip_block: Eliminar regla IP
destroy_status: Esborrar la publicació
destroy_unavailable_domain: Esborra domini no disponible
+ destroy_user_role: Destrueix Rol
disable_2fa_user: Desactiva 2FA
disable_custom_emoji: Desactiva l'emoji personalitzat
disable_sign_in_token_auth_user: Desactivar l'autenticació de token per correu per l'usuari
@@ -280,24 +284,30 @@ ca:
update_announcement: Actualitza l'anunci
update_custom_emoji: Actualitza l'emoji personalitzat
update_domain_block: Actualitza el Bloqueig de Domini
+ update_ip_block: Actualitza norma IP
update_status: Actualitza l'estat
+ update_user_role: Actualitza Rol
actions:
approve_appeal_html: "%{name} ha aprovat l'apel·lació a la decisió de moderació de %{target}"
approve_user_html: "%{name} ha aprovat el registre de %{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}"
+ change_role_user_html: "%{name} ha canviat el rol de %{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_canonical_email_block_html: "%{name} ha bloquejat l'adreça de correu electrònic amb el hash %{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}"
+ create_user_role_html: "%{name} ha creat el rol %{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_canonical_email_block_html: "%{name} ha desbloquejat el correu electrònic amb el hash %{target}"
+ destroy_custom_emoji_html: "%{name} ha esborrat 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}"
@@ -305,6 +315,7 @@ ca:
destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}"
destroy_status_html: "%{name} ha eliminat la publicació de %{target}"
destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}"
+ destroy_user_role_html: "%{name} ha esborrat el rol %{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_sign_in_token_auth_user_html: "%{name} ha desactivat l'autenticació de token per correu per a %{target}"
@@ -331,8 +342,9 @@ ca:
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_ip_block_html: "%{name} ha canviat la norma per la IP %{target}"
update_status_html: "%{name} ha actualitzat l'estat de %{target}"
- deleted_status: "(publicació esborrada)"
+ update_user_role_html: "%{name} ha canviat el rol %{target}"
empty: No s’han trobat registres.
filter_by_action: Filtra per acció
filter_by_user: Filtra per usuari
@@ -649,6 +661,67 @@ ca:
unresolved: No resolt
updated_at: Actualitzat
view_profile: Veure perfil
+ roles:
+ add_new: Afegir rol
+ assigned_users:
+ one: "%{count} usuari"
+ other: "%{count} usuaris"
+ categories:
+ administration: Administració
+ devops: Operadors de desenvolupament
+ invites: Invitacions
+ moderation: Moderació
+ special: Especial
+ delete: Esborra
+ description_html: Amb rols d'usuari, pots personalitzar quines funcions i àrees de Mastodon els teus usuaris poden accedir.
+ edit: Editar el rol %{name}
+ everyone: Permisos per defecte
+ everyone_full_description_html: Aquest és el rol base que afecta tots els usuaris, fins i tot els que no en tenen cap d'assignat. Tots els altres rols n'hereten els permisos.
+ permissions_count:
+ one: "%{count} permís"
+ other: "%{count} permisos"
+ privileges:
+ administrator: Administrador
+ administrator_description: Els usuaris amb aquest permís passaran per alt tots els permisos
+ delete_user_data: Esborra dades d'usuari
+ delete_user_data_description: Permet als usuaris suprimir les dades d'altres usuaris sense demora
+ invite_users: Convida usuaris
+ invite_users_description: Permet als usuaris convidar persones noves al servidor
+ manage_announcements: Gestiona els anuncis
+ manage_announcements_description: Permet als usuaris gestionar els anuncis al servidor
+ manage_appeals: Gestiona apel·lacions
+ manage_appeals_description: Permet als usuaris revisar les apel·lacions contra les accions de moderació
+ manage_blocks: Gestiona blocs
+ manage_blocks_description: Permet als usuaris bloquejar proveïdors de correu electrònic i adreces IP
+ manage_custom_emojis: Gestiona emojis personalitzats
+ manage_custom_emojis_description: Permet als usuaris gestionar emojis personalitzats al servidor
+ manage_federation: Gestiona federació
+ manage_federation_description: Permet als usuaris bloquejar o permetre la federació amb altres dominis i controlar la capacitat de lliurament
+ manage_invites: Gestiona invitacions
+ manage_invites_description: Permet als usuaris veure i desactivar els enllaços d'invitació
+ manage_reports: Gestiona informes
+ manage_reports_description: Permet als usuaris revisar informes i realitzar accions de moderació contra ells
+ manage_roles: Gestionar rols
+ manage_roles_description: Permet als usuaris gestionar i assignar rols per sota dels seus
+ manage_rules: Gestiona normes
+ manage_rules_description: Permet als usuaris canviar les normes del servidor
+ manage_settings: Gestiona configuració
+ manage_settings_description: Permet als usuaris canviar la configuració del lloc
+ manage_taxonomies: Gestionar taxonomies
+ manage_taxonomies_description: Permet als usuaris revisar el contingut actual i actualitzar la configuració de l'etiqueta
+ manage_user_access: Gestionar l'accés dels usuaris
+ manage_user_access_description: Permet als usuaris desactivar l'autenticació de dos factors d'altres usuaris, canviar la seva adreça de correu electrònic i restablir la seva contrasenya
+ manage_users: Gestionar usuaris
+ manage_users_description: Permet als usuaris veure els detalls d'altres usuaris i realitzar accions de moderació contra ells
+ manage_webhooks: Gestionar Webhooks
+ manage_webhooks_description: Permet als usuaris configurar webhooks per a esdeveniments administratius
+ view_audit_log: Veure el registre d'auditoria
+ view_audit_log_description: Permet als usuaris veure un historial d'accions administratives al servidor
+ view_dashboard: Veure panell
+ view_dashboard_description: Permet als usuaris accedir al tauler i a diverses mètriques
+ view_devops: Operadors de desenvolupament
+ view_devops_description: Permet als usuaris accedir als taulers de control de Sidekiq i pgHero
+ title: Rols
rules:
add_new: Afegir norma
delete: Suprimeix
@@ -701,9 +774,6 @@ ca:
deletion:
desc_html: Permet a qualsevol usuari d'esborrar el seu compte
title: Obre la supressió del compte
- min_invite_role:
- disabled: Ningú
- title: Permet les invitacions de
require_invite_text:
desc_html: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcions l escriure el text de la solicitud d'invitació "Perquè vols unirte?"
title: Requerir als nous usuaris omplir el text de la solicitud d'invitació
@@ -716,9 +786,6 @@ ca:
show_known_fediverse_at_about_page:
desc_html: Quan està desactivat, restringeix la línia de temps pública enllaçada des de la pàgina inicial a mostrar només contingut local
title: Inclou el contingut federat a la pàgina no autenticada de la línia de temps pública
- show_staff_badge:
- desc_html: Mostra una insígnia de personal en la pàgina d'usuari
- title: Mostra insígnia de personal
site_description:
desc_html: Paràgraf introductori a la pàgina principal i en etiquetes meta. Pots utilitzar etiquetes HTML, en particular <a>
i <em>
.
title: Descripció del servidor
@@ -729,8 +796,8 @@ ca:
desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial.
title: Descripció curta del servidor
site_terms:
- 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
+ desc_html: Pots escriure la teva pròpia política de privacitat. Pots fer servir etiquetes HTML
+ title: Política de privacitat personalitzada
site_title: Nom del servidor
thumbnail:
desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px
@@ -740,8 +807,8 @@ ca:
title: Permet l'accés no autenticat a la línia de temps pública
title: Configuració del lloc
trendable_by_default:
- desc_html: Afecta a les etiquetes que no s'havien rebutjat prèviament
- title: Permet que les etiquetes passin a la tendència sense revisió prèvia
+ desc_html: El contingut específic de la tendència encara pot explícitament no estar permès
+ title: Permet tendències sense revisió prèvia
trends:
desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència
title: Etiquetes tendència
@@ -1124,16 +1191,40 @@ ca:
public: Línies de temps públiques
thread: Converses
edit:
+ add_keyword: Afegeix paraula clau
+ keywords: Paraules clau
+ statuses: Apunts individuals
+ statuses_hint_html: Aquest filtre aplica als apunts individuals seleccionats independentment de si coincideixen amb les paraules clau de sota. Revisa o elimina els apunts des d'el filtre.
title: Editar filtre
errors:
+ deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web.
invalid_context: Cap o el context proporcionat no és vàlid
- invalid_irreversible: El filtratge irreversible només funciona amb el contextos inici o notificacions
index:
+ contexts: Filtres en %{contexts}
delete: Esborra
empty: No hi tens cap filtre.
+ expires_in: Expira en %{distance}
+ expires_on: Expira el %{date}
+ keywords:
+ one: "%{count} paraula clau"
+ other: "%{count} paraules clau"
+ statuses:
+ one: "%{count} apunt"
+ other: "%{count} apunts"
+ statuses_long:
+ one: "%{count} apunt individual oculta"
+ other: "%{count} apunts individuals ocultats"
title: Filtres
new:
+ save: Desa el nou filtre
title: Afegir un nou filtre
+ statuses:
+ back_to_filter: Tornar al filtre
+ batch:
+ remove: Eliminar del filtre
+ index:
+ hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web.
+ title: Apunts filtrats
footer:
developers: Desenvolupadors
more: Més…
@@ -1141,12 +1232,22 @@ ca:
trending_now: En tendència
generic:
all: Tot
+ all_items_on_page_selected_html:
+ one: "%{count} article d'aquesta s'ha seleccionat."
+ other: Tots %{count} articles d'aquesta pàgina estan seleccionats.
+ all_matching_items_selected_html:
+ one: "%{count} article coincident amb la teva cerca està seleccionat."
+ other: Tots %{count} articles coincidents amb la teva cerca estan seleccionats.
changes_saved_msg: Els canvis s'han desat correctament!
copy: Copiar
delete: Esborra
+ deselect: Desfer selecció
none: Cap
order_by: Ordena per
save_changes: Desa els canvis
+ select_all_matching_items:
+ one: Selecciona %{count} article coincident amb la teva cerca.
+ other: Selecciona tots %{count} articles coincidents amb la teva cerca.
today: avui
validation_errors:
one: Alguna cosa no va bé! Si us plau, revisa l'error
@@ -1251,19 +1352,10 @@ ca:
copy_account_note_text: 'Aquest usuari s’ha mogut des de %{acct}, aquí estaven les teves notes prèvies sobre ell:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} ha presentat un informe"
sign_up:
subject: "%{name} s'ha registrat"
- digest:
- action: Mostra totes les notificacions
- body: Un resum del que et vas perdre des de la darrera visita el %{since}
- mention: "%{name} t'ha mencionat en:"
- new_followers_summary:
- one: A més, has adquirit un nou seguidor durant la teva absència! Visca!
- other: A més, has adquirit %{count} nous seguidors mentre estaves fora! Increïble!
- subject:
- one: "1 notificació nova des de la teva darrera visita 🐘"
- other: "%{count} notificacions noves des de la teva darrera visita 🐘"
- title: Durant la teva absència…
favourite:
body: "%{name} ha marcat com a favorit el teu estat:"
subject: "%{name} ha marcat com a favorit el teu estat"
@@ -1545,7 +1637,79 @@ ca:
tags:
does_not_match_previous_name: no coincideix amb el nom anterior
terms:
- title: "%{instance} Condicions del servei i política de privadesa"
+ body_html: |
+ Aquesta pàgina conté els nostres Termes del servei (adaptats de la Bsd.network ToS) i la nostra Política de privadesa.
+
+
Termes del servei
+
+ La nostra intenció és que utilitzis aquest servei per al gaudi personal i la interacció respectuosa i amistosa. A aquest efecte, esperem fomentar un entorn favorable i integrador.
+
+
Aquest servidor és de propietat privada i obert als usuaris voluntàriament, no un espai públic. S'espera que els usuaris que vulguin unir-se a aquesta comunitat actuïn sense malícia i de bona fe. Fer-ho d'una altra manera pot conduir a l'eliminació de l'usuari del servei, independentment de si viola qualsevol regla que s'esbossi a continuació.
+
+
Polítiques i normes
+
+ La nostra instància està subjecta a un conjunt de normes que regeixen el comportament dels usuaris. Les regles sempre són visibles a la nostra pàgina Quant a.
+
+
Aquestes normes estan dissenyades per a mantenir un ambient amistós i obert, i per a evitar l'assetjament i la discriminació. Per tant, són un conjunt de directrius, però per necessitat incompletes. Els usuaris que violen l'esperit d'aquestes normes no es tractaran de manera diferent que els usuaris que violen una regla específica.
+
+
Si us plau, tingues en compte que les nostres normes contenen una secció sobre les millors pràctiques, i els usuaris que repetidament i que malaurat els advertiments ignoren aquestes millors pràctiques poden veure's violant les nostres normes.
+
+
Els moderadors poden eliminar els comptes que publiquin spam, o si se sospita que un compte és creat només per reservar un nom d'usuari. La violació de les polítiques i les normes també pot portar a l'eliminació de comptes a discreció dels moderadors.
+
+
Accés a dades
+
+ El contingut d'aquest servidor no s'ha d'utilitzar per a l'aprenentatge automàtic o altres propòsits de "recerca" sense el consentiment explícit dels usuaris implicats.
+
+
El contingut d'aquest servidor més enllà d'aquesta pàgina no s'ha d'arxivar o indexar a l'engròs per mitjans automatitzats per qualsevol usuari o servei. Els usuaris actius poden exportar les seves llistes i publicacions a través de l'exportació proporcionada a la seva pàgina de configuració, o l'API.
+
+
Política de privadesa
+
+ Recollida d'informació
+
+ Informació obligatòria del compte: nom d'usuari (sempre públic), adreça de correu electrònic i contrasenya.
+
+
Informació del compte opcional: nom de visualització, biografia, camps d'informació del perfil, imatge de perfil i imatge de capçalera. El nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre seran públics.
+
+
Estat i interaccions: Retenim totes les vostres publicacions, inclosos els adjunts, i altres interaccions (com ara els preferits, els segueix i els impulsos). A més del contingut i les persones implicades, també emmagatzemen els codis de temps per a totes les entrades de dades enumerades. Si aquestes interaccions impacten en un altre servidor (per exemple, seguint, impulsant o missatger a un usuari en un servidor diferent), aquest altre servidor rebrà tota la informació requerida. Les publicacions públiques, no llistades i fitxades són públiques. Els teus seguidors només tenen missatges de seguiment, i els missatges directes estan disponibles per a tu i totes les persones esmentades en el missatge. Tingues en compte que, com que no podem controlar altres servidors, això significa que no podem garantir l'estat de privacitat dels teus missatges tan aviat abandonin aquest servidor.
+
+
Galetes: Utilitzem galetes per mantenir-te registrat i guardar les teves preferències per a futures visites.
+
+
Altres metadades: No registrem ni emmagatzem la teva adreça IP com a norma general. Es faran excepcions quan busquem activament errors. Una vegada que s'hagi finalitzat la cerca d'errors, les adreces IP recollides s'eliminaran. Retenim el nom de l'aplicació del teu navegador per permetre't revisar les sessions actualment iniciades per motius de seguretat.
+
+
Ús de la informació
+
+ Tota la informació que recopilem de tu pot ser utilitzada de les maneres següents:
+
+
Per proporcionar la funcionalitat principal d'aquest servidor. Només pots interaccionar amb el contingut d'altres persones i publicar el teu propi contingut quan hagis iniciat la sessió. Per exemple, pots seguir a altres persones per veure les seves publicacions en la teva pròpia línia de temps personalitzada.
+
+
Per a ajudar a la moderació de la comunitat, quan s'informi d'una publicació o un compte, examinarem la qüestió com a part de les nostres tasques de moderació.
+
+
L'adreça de correu electrònic que proporcionis es pot utilitzar per enviar-te informació, notificacions sobre altres persones que interaccionen amb el teu contingut o que t'envien missatges, i per respondre a les investigacions, i/o altres peticions o preguntes.
+
+
Protecció de la informació
+
+ Apliquem una varietat de mesures de seguretat per a mantenir la seguretat de la teva informació personal quan entres, presentes o accedeixes a la teva informació personal. Entre altres coses, la teva sessió de navegador, així com el trànsit entre les teves aplicacions i l'API, estan assegurades amb HTTPS, i la teva contrasenya es resumeix mitjançant un algorisme d'un únic sentit. Pots habilitar l'autenticació de doble factor per a un accés més segur al teu compte.
+
+
Supressió i retenció de la informació
+
+ Pots sol·licitar i descarregar un arxiu del teu contingut, incloent-hi les entrades, el contingut gràfic, la imatge del perfil i la imatge de capçalera.
+
+
En qualsevol moment pots suprimir el teu compte de manera irreversible.
+
+
Si jutgem que estàs incomplint les nostres normes, pot ser que eliminem de manera irreversible el teu compte en qualsevol moment.
+
+
Divulgació de la informació
+
+ La informació no es revela tret que ho permetis explícitament. L'única excepció és el proveïdor d'aquest servidor, que és un tercer de confiança i inevitable.
+
+
Contactar o permetre el contacte d'un usuari d'una instància diferent implica el consentiment que les dades necessàries es comparteixen amb el servidor en qüestió.
+
+
L'autorització d'una aplicació de tercers concedeix accés a la informació en funció de l'abast dels permisos que aprovis. L'aplicació pot accedir a la teva informació de perfil públic, la teva llista següent, els teus seguidors, les teves llistes, tots els teus missatges i els teus preferits. Les aplicacions no poden accedir mai a la teva adreça de correu electrònic o contrasenya.
+
+
Atribució
+
+ This text is free to be adapted and remixed under the terms of the CC-BY (Attribution 4.0 International) license.
+ title: Política de Privacitat de %{instance}
themes:
contrast: Mastodon (alt contrast)
default: Mastodon (fosc)
@@ -1589,7 +1753,7 @@ ca:
details: 'Aquí estan els detalls del inici de sessió:'
explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP.
further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur.
- subject: El teu compte ha estat accedit des d'una nova adreça IP
+ subject: S'ha accedit al teu compte des d'una adreça IP nova
title: Un nou inici de sessió
warning:
appeal: Envia una apel·lació
diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml
index 35e826c9c4..fe2dffcc18 100644
--- a/config/locales/ckb.yml
+++ b/config/locales/ckb.yml
@@ -27,7 +27,6 @@ ckb:
learn_more: زیاتر فێربه
logged_in_as_html: لە ئێستادا تۆ وەک %{username} چوویتە ژوورەوە.
logout_before_registering: تۆ پێشتر چوویتە ژوورەوە.
- privacy_policy: ڕامیاری تایبەتێتی
rules: یاساکانی سێرڤەر
rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:'
see_whats_happening: بزانە چی ڕوودەدات
@@ -37,7 +36,6 @@ ckb:
one: دۆخ
other: پۆست
status_count_before: لە لایەن یەکەوە
- terms: مەرجەکانی خزمەتگوزاری
unavailable_content: ڕاژەی چاودێریکراو
unavailable_content_description:
domain: ڕاژەکار
@@ -81,10 +79,8 @@ ckb:
posts_tab_heading: تووتەکان
posts_with_replies: تووتەکان و وڵامەکان
roles:
- admin: بەڕێوەبەر
bot: بۆت
group: گرووپ
- moderator: مۆد
unavailable: پرۆفایل بەردەست نیە
unfollow: بەدوادانەچو
admin:
@@ -103,7 +99,6 @@ ckb:
avatar: وێنۆچکە
by_domain: دۆمەین
change_email:
- changed_msg: ئیمەیڵی ئەژمێر بە سەرکەوتوویی گۆڕا!
current_email: ئیمەیلی ئێستا
label: گۆڕینی ئیمێڵ
new_email: ئیمەیڵی نوێ
@@ -182,12 +177,6 @@ ckb:
reset: ڕێکخستنەوە
reset_password: گەڕانەوەی تێپەڕوشە
resubscribe: دووبارە ئابونەبوون
- role: مۆڵەتەکان
- roles:
- admin: بەڕێوەبەر
- moderator: بەڕێوەبەر
- staff: ستاف
- user: بەکارهێنەر
search: گەڕان
search_same_email_domain: بەکارهێنەرانی دیکە بە ئیمەیلی یەکسان
search_same_ip: بەکارهێنەرانی تر بەهەمان ئای پی
@@ -274,7 +263,6 @@ ckb:
update_status: بەڕۆژکردنی دۆخ
actions:
update_status_html: "%{name} پۆستی نوێکراوە لەلایەن %{target}"
- deleted_status: "(نووسراوە سڕاوە)"
empty: هیچ لاگی کارنەدۆزرایەوە.
filter_by_action: فلتەر کردن بە کردار
filter_by_user: فلتەر کردن بە کردار
@@ -621,9 +609,6 @@ ckb:
deletion:
desc_html: ڕێ بدە بە هەر کەسێک هەژمارەکەی بسڕیتەوە
title: سڕینەوەی هەژمارە بکەوە
- min_invite_role:
- disabled: هیچکەس
- title: ڕێپێدانی بانگهێشتەکان لەلایەن
require_invite_text:
desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری
registrations_mode:
@@ -635,9 +620,6 @@ ckb:
show_known_fediverse_at_about_page:
desc_html: کاتێک ناچالاک کرا، هێڵی کاتی گشتی کە بەستراوەتەوە بە لاپەڕەی ئێستا سنووردار دەبن، تەنها ناوەڕۆکی ناوخۆیی پیشاندەدرێن
title: نیشاندانی ڕاژەکانی دیکە لە پێشنەمایەشی ئەم ڕاژە
- show_staff_badge:
- desc_html: پیشاندانی هێمایەک هاوکار لە سەر پەڕەی بەکارهێنەر
- title: نیشاندانی هێمای هاوکار
site_description:
desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a>
وە <em>
.
title: دەربارەی ئەم ڕاژە
@@ -647,9 +629,6 @@ ckb:
site_short_description:
desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت.
title: دەربارەی ئەم ڕاژە
- site_terms:
- desc_html: دەتوانیت سیاسەتی تایبەتیێتی خۆت بنووسیت، مەرجەکانی خزمەتگوزاری یان یاسایی تر. دەتوانیت تاگەکانی HTML بەکاربێنیت
- title: مەرجەکانی خزمەتگوزاری ئاسایی
site_title: ناوی ڕاژە
thumbnail:
desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە
@@ -658,9 +637,6 @@ ckb:
desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی
title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی
title: ڕێکخستنەکانی ماڵپەڕ
- trendable_by_default:
- desc_html: کاریگەری لەسەر هاشتاگی پێشوو کە پێشتر ڕێگە پێنەدراوە
- title: ڕێگە بدە بە هاشتاگی بەرچاوکراوە بەبێ پێداچوونەوەی پێشوو
trends:
desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن
title: هاشتاگی بەرچاوکراوە
@@ -884,7 +860,6 @@ ckb:
title: دەستکاری فلتەر
errors:
invalid_context: هیچ دەقێکی نادروست نییە یان بێ بڕوایە
- invalid_irreversible: فلتەرکردنی بێ گەڕانەوە تەنها کار دەکات لەگەڵ چوارچێوەی ماڵ یان ئاگانامەکان
index:
delete: سڕینەوە
empty: هیچ پالێوەرێکت نیە.
@@ -992,14 +967,6 @@ ckb:
carry_mutes_over_text: ئەم بەکارهێنەرە گواسترایەوە بۆ %{acct}، تۆ بێدەنگت کردووە.
copy_account_note_text: 'ئەم بەکارهێنەرە لە %{acct} ەوە گواستیەوە، تێبینیەکانی پێشووت دەربارەیان بوون:'
notification_mailer:
- digest:
- action: پیشاندانی هەموو ئاگانامەکان
- body: ئەمە کورتەی ئەو نامانەی لە دەستت دا لە دوا سەردانیت لە %{since}
- mention: "%{name} ئاماژەی بە تۆ کرد لە:"
- new_followers_summary:
- one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم!
- other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە!
- title: لە غیابی تۆدا...
favourite:
body: 'دۆخت پەسەندکراوە لەلایەن %{name}:'
subject: "%{name} دۆخی تۆی پەسەند کرد"
@@ -1205,8 +1172,6 @@ ckb:
sensitive_content: ناوەڕۆکی هەستیار
tags:
does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە
- terms:
- title: "%{instance} مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتیێتی"
themes:
contrast: ماستۆدۆن (کۆنتراستی بەرز)
default: ماستۆدۆن (ڕەش)
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 183439447f..bb03394403 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -25,7 +25,6 @@ co:
Stu contu ghjè un'attore virtuale chì ghjove à riprisentà u servore sanu è micca un veru utilizatore.
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
@@ -35,7 +34,6 @@ co:
one: statutu
other: statuti
status_count_before: Chì anu pubblicatu
- terms: Cundizione di u serviziu
unavailable_content: Cuntinutu micca dispunibule
unavailable_content_description:
domain: Servore
@@ -79,10 +77,8 @@ co:
posts_tab_heading: Statuti
posts_with_replies: Statuti è risposte
roles:
- admin: Amministratore
bot: Bot
group: Gruppu
- moderator: Muderatore
unavailable: Prufile micca dispunibule
unfollow: Ùn siguità più
admin:
@@ -101,7 +97,6 @@ co:
avatar: Ritrattu di prufile
by_domain: Duminiu
change_email:
- changed_msg: Email di u contu cambiatu!
current_email: E-mail attuale
label: Mudificà l’e-mail
new_email: Novu e-mail
@@ -178,12 +173,6 @@ co:
reset: Riinizializà
reset_password: Riinizializà a chjave d’accessu
resubscribe: Riabbunassi
- role: Auturizazione
- roles:
- admin: Amministratore
- moderator: Muderatore
- staff: Squadra
- user: Utilizatore
search: Cercà
search_same_email_domain: Altri utilizatori cù listessu duminiu d'e-mail
search_same_ip: Altri utilizatori cù listessa IP
@@ -278,7 +267,6 @@ co:
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"
@@ -307,7 +295,6 @@ co:
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
filter_by_user: Filtrà da utilizatore
@@ -579,9 +566,6 @@ co:
deletion:
desc_html: Auturizà tuttu u mondu à sguassà u so propiu contu
title: Auturizà à sguassà i conti
- min_invite_role:
- 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
@@ -594,9 +578,6 @@ co:
show_known_fediverse_at_about_page:
desc_html: Quandu ghjè selezziunatu, statuti di tuttu l’istanze cunnisciute saranu affissati indè a vista di e linee. Altrimente soli i statuti lucali saranu mustrati
title: Vedde tuttu u fediverse cunnisciutu nant’a vista di e linee
- show_staff_badge:
- desc_html: Mustrerà un badge Squadra nant’à un prufile d’utilizatore
- title: Mustrà un badge staff
site_description:
desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare <a>
è <em>
.
title: Discrizzione di u servore
@@ -606,9 +587,6 @@ co:
site_short_description:
desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di u servore sarà utilizata.
title: Descrizzione corta di u servore
- site_terms:
- 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
thumbnail:
desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px
@@ -617,9 +595,6 @@ co:
desc_html: Vede a linea pubblica nant’a pagina d’accolta
title: Vista di e linee
title: Parametri di u situ
- trendable_by_default:
- desc_html: Ùn affetta micca quelli chì sò digià stati ricusati
- title: Auturizà l'hashtag à esse in tindenze senza verificazione
trends:
desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà
title: Tendenze di hashtag
@@ -862,7 +837,6 @@ co:
title: Mudificà u filtru
errors:
invalid_context: Micca abbastanza cuntestu
- invalid_irreversible: A filtrazione irreversibile marchja solu per l'accolta è e nutificazione
index:
delete: Toglie
empty: Ùn avete manc'un filtru.
@@ -978,14 +952,6 @@ co:
carry_mutes_over_text: St'utilizatore hà traslucatu dapoi %{acct}, ch'aviate piattatu.
copy_account_note_text: 'St''utilizatore hà traslucatu dapoi %{acct}, eccu e vostr''anziane note nant''à ellu:'
notification_mailer:
- digest:
- action: Vede tutte e nutificazione
- body: Eccu cio ch’avete mancatu dapoi à a vostr’ultima visita u %{since}
- mention: "%{name} v’hà mintuvatu·a in:"
- new_followers_summary:
- one: Avete ancu un’abbunatu novu!
- other: Avete ancu %{count} abbunati novi!
- title: Dapoi l’ultima volta…
favourite:
body: "%{name} hà aghjuntu u vostru statutu à i so favuriti :"
subject: "%{name} hà messu u vostru post in i so favuriti"
@@ -1240,8 +1206,6 @@ co:
sensitive_content: Cuntenutu sensibile
tags:
does_not_match_previous_name: ùn currisponde micca à l'anzianu nome
- terms:
- title: Termini d’usu è di cunfidenzialità per %{instance}
themes:
contrast: Mastodon (Cuntrastu altu)
default: Mastodon (Scuru)
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 1868b9dd73..fbde9e051e 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -28,7 +28,7 @@ cs:
learn_more: Zjistit více
logged_in_as_html: Aktuálně jste přihlášeni jako %{username}.
logout_before_registering: Již jste přihlášeni.
- privacy_policy: Zásady ochrany osobních údajů
+ privacy_policy: Ochrana 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
@@ -41,7 +41,6 @@ cs:
other: příspěvků
status_count_before: Kteří napsali
tagline: Decentralizovaná sociální síť
- terms: Podmínky používání
unavailable_content: Moderované servery
unavailable_content_description:
domain: Server
@@ -91,10 +90,8 @@ cs:
posts_tab_heading: Příspěvky
posts_with_replies: Příspěvky a odpovědi
roles:
- admin: Administrátor
bot: Robot
group: Skupina
- moderator: Moderátor
unavailable: Profil není dostupný
unfollow: Přestat sledovat
admin:
@@ -113,12 +110,17 @@ cs:
avatar: Avatar
by_domain: Doména
change_email:
- changed_msg: E-mail k tomuto účtu byl úspěšně změněn!
+ changed_msg: E-mail úspěšně změněn!
current_email: Současný e-mail
label: Změnit e-mail
new_email: Nový e-mail
submit: Změnit e-mail
title: Změnit e-mail uživateli %{username}
+ change_role:
+ changed_msg: Role úspěšně změněna!
+ label: Změnit roli
+ no_role: Žádná role
+ title: Změnit roli pro %{username}
confirm: Potvrdit
confirmed: Potvrzeno
confirming: Potvrzuji
@@ -162,6 +164,7 @@ cs:
active: Aktivní
all: Vše
pending: Čekající
+ silenced: Omezeno
suspended: Pozastavené
title: Moderování
moderation_notes: Moderátorské poznámky
@@ -169,6 +172,7 @@ cs:
most_recent_ip: Nejnovější IP adresa
no_account_selected: Nebyl změněn žádný účet, neboť žádný nebyl zvolen
no_limits_imposed: Nejsou nastavena žádná omezení
+ no_role_assigned: Nebyla přiřazena žádná role
not_subscribed: Neodebírá
pending: Čeká na posouzení
perform_full_suspension: Pozastavit
@@ -197,12 +201,7 @@ cs:
reset: Obnovit
reset_password: Obnovit heslo
resubscribe: Znovu odebírat
- role: Oprávnění
- roles:
- admin: Administrátor
- moderator: Moderátor
- staff: Personál
- user: Uživatel
+ role: Role
search: Hledat
search_same_email_domain: Ostatní uživatelé se stejnou e-mailovou doménou
search_same_ip: Další uživatelé se stejnou IP adresou
@@ -245,6 +244,7 @@ cs:
approve_user: Schválit uživatele
assigned_to_self_report: Přiřadit hlášení
change_email_user: Změnit uživateli e-mailovou adresu
+ change_role_user: Změnit roli uživatele
confirm_user: Potvrdit uživatele
create_account_warning: Vytvořit varování
create_announcement: Nové oznámení
@@ -254,6 +254,7 @@ cs:
create_email_domain_block: Zablokovat e-mailovou doménu
create_ip_block: Vytvořit IP pravidlo
create_unavailable_domain: Vytvořit nedostupnou doménu
+ create_user_role: Vytvořit roli
demote_user: Snížit roli uživatele
destroy_announcement: Odstranit oznámení
destroy_custom_emoji: Odstranit vlastní emoji
@@ -264,6 +265,7 @@ cs:
destroy_ip_block: Smazat IP pravidlo
destroy_status: Odstranit Příspěvek
destroy_unavailable_domain: Smazat nedostupnou doménu
+ destroy_user_role: Zničit roli
disable_2fa_user: Vypnout 2FA
disable_custom_emoji: Zakázat vlastní emoji
disable_sign_in_token_auth_user: Zrušit uživatelovo ověřování e-mailovým tokenem
@@ -290,15 +292,19 @@ cs:
update_announcement: Aktualizovat oznámení
update_custom_emoji: Aktualizovat vlastní emoji
update_domain_block: Změnit blokaci domény
+ update_ip_block: Aktualizovat pravidlo IP
update_status: Aktualizovat Příspěvek
+ update_user_role: Aktualizovat roli
actions:
approve_appeal_html: Uživatel %{name} schválil odvolání proti rozhodnutí moderátora %{target}
approve_user_html: "%{name} schválil registraci od %{target}"
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}
+ change_role_user_html: "%{name} změnil roli %{target}"
confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target}
create_account_warning_html: Uživatel %{name} poslal %{target} varování
create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target}
+ create_canonical_email_block_html: "%{name} zablokoval e-mail s hash %{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}
@@ -307,7 +313,6 @@ cs:
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}
@@ -342,7 +347,6 @@ cs:
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
@@ -677,6 +681,71 @@ cs:
unresolved: Nevyřešeno
updated_at: Aktualizováno
view_profile: Zobrazit profil
+ roles:
+ add_new: Přidat roli
+ assigned_users:
+ few: "%{count} uživatelé"
+ many: "%{count} uživatelů"
+ one: "%{count} uživatel"
+ other: "%{count} uživatelů"
+ categories:
+ administration: Administrace
+ devops: Devops
+ invites: Pozvánky
+ moderation: Moderování
+ special: Speciální
+ delete: Smazat
+ description_html: Pomocí uživatelských rolímůžete upravit, ke kterým funkcím a oblastem mají přístup uživatelé Mastodon.
+ edit: Upravit roli „%{name}“
+ everyone: Výchozí oprávnění
+ everyone_full_description_html: Toto je základní role ovlivňující všechny uživatele, a to i bez přiřazené role. Všechny ostatní role od ní dědí oprávnění.
+ permissions_count:
+ few: "%{count} oprávnění"
+ many: "%{count} oprávnění"
+ one: "%{count} oprávnění"
+ other: "%{count} oprávnění"
+ privileges:
+ administrator: Správce
+ administrator_description: Uživatelé s tímto oprávněním obejdou všechna oprávnění
+ delete_user_data: Mazat uživatelská data
+ delete_user_data_description: Umožňuje uživatelům bezodkladně mazat data jiných uživatelů
+ invite_users: Zvát uživatele
+ invite_users_description: Umožňuje uživatelům zvát na server nové lidi
+ manage_announcements: Spravovat oznámení
+ manage_announcements_description: Umožňuje uživatelům spravovat oznámení na serveru
+ manage_appeals: Spravovat odvolání
+ manage_appeals_description: Umožňuje uživatelům posuzovat odvolání proti moderátorským zásahům
+ manage_blocks: Spravovat blokace
+ manage_blocks_description: Umožňuje uživatelům blokovat poskytovatele e-mailů a IP adresy
+ manage_custom_emojis: Spravovat vlastní emoji
+ manage_custom_emojis_description: Umožňuje uživatelům spravovat vlastní emoji na serveru
+ manage_federation: Spravovat federaci
+ manage_federation_description: Umožňuje uživatelům blokovat nebo povolit federaci s jinými doménami a ovládat doručování
+ manage_invites: Spravovat pozvánky
+ manage_invites_description: Umožňuje uživatelům procházet a deaktivovat pozvánky
+ manage_reports: Spravovat hlášení
+ manage_reports_description: Umožňuje uživatelům kontrolovat přehledy a provádět moderovací akce proti nim
+ manage_roles: Spravovat role
+ manage_roles_description: Umožňuje uživatelům spravovat a přiřazovat role pod nimi
+ manage_rules: Spravovat pravidla
+ manage_rules_description: Umožňuje uživatelům změnit pravidla serveru
+ manage_settings: Spravovat nastavení
+ manage_settings_description: Umožňuje uživatelům změnit nastavení webu
+ manage_taxonomies: Správa taxonomií
+ manage_taxonomies_description: Umožňuje uživatelům zkontrolovat populární obsah a aktualizovat nastavení hashtag
+ manage_user_access: Spravovat uživatelské přístupy
+ manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla
+ manage_users: Spravovat uživatele
+ manage_users_description: Umožňuje uživatelům zobrazit podrobnosti ostatních uživatelů a provádět moderování proti nim
+ manage_webhooks: Spravovat webhooky
+ manage_webhooks_description: Umožňuje uživatelům nastavit webhooky pro administrativní události
+ view_audit_log: Zobrazovat protokol auditu
+ view_audit_log_description: Umožňuje uživatelům vidět historii administrativních akcí na serveru
+ view_dashboard: Zobrazit ovládací panel
+ view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám
+ view_devops: Devops
+ view_devops_description: Umožňuje uživatelům přístup k ovládacím panelům Sidekiq a pgHero
+ title: Role
rules:
add_new: Přidat pravidlo
delete: Smazat
@@ -729,9 +798,6 @@ cs:
deletion:
desc_html: Povolit komukoliv smazat svůj účet
title: Zpřístupnit smazání účtu
- 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í
@@ -744,9 +810,6 @@ cs:
show_known_fediverse_at_about_page:
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 personálu
- title: Zobrazit odznak personálu
site_description:
desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a>
a <em>
.
title: Popis serveru
@@ -757,8 +820,8 @@ cs:
desc_html: Zobrazeno v postranním panelu a meta značkách. V jednom odstavci popište, co je Mastodon a čím se tento server odlišuje od ostatních.
title: Krátký popis serveru
site_terms:
- 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í
+ desc_html: Můžete napsat své vlastní zásady ochrany osobních údajů. HTML tagy můžete použít
+ title: Vlastní zásady ochrany osobních údajů
site_title: Název serveru
thumbnail:
desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px
@@ -768,8 +831,8 @@ cs:
title: Povolit neautentizovaný přístup k časové ose
title: Nastavení stránky
trendable_by_default:
- desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány
- title: Povolit zobrazení hashtagů mezi populárními i bez předchozího posouzení
+ desc_html: Specifický populární obsah může být i nadále výslovně zakázán
+ title: Povolit trendy bez předchozí revize
trends:
desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární
title: Trendy
@@ -1116,7 +1179,7 @@ cs:
invalid_domain: není platné doménové jméno
errors:
'400': Žádost, kterou jste odeslali, byla neplatná nebo poškozená.
- '403': Nemáte povolení zobrazit tuto stránku.
+ '403': Nejste oprávněni tuto stránku zobrazit.
'404': Stránka, kterou hledáte, tu není.
'406': Tato stránka není v požadovaném formátu dostupná.
'410': Stránka, kterou hledáte, tu již není.
@@ -1160,16 +1223,41 @@ cs:
public: Veřejné časové osy
thread: Konverzace
edit:
+ add_keyword: Přidat klíčové slovo
+ keywords: Klíčová slova
+ statuses: Individuální příspěvky
+ statuses_hint_html: Tento filtr platí pro výběr jednotlivých příspěvků bez ohledu na to, zda odpovídají klíčovým slovům níže. Zkontrolujte nebo odeberte příspěvky z filtru.
title: Upravit filtr
errors:
+ deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní.
invalid_context: Nebyl poskytnut žádný nebo jen neplatný kontext
- invalid_irreversible: Nezvratné filtrování funguje pouze v souvislosti s domovskou osou či oznámeními
index:
+ contexts: Filtruje %{contexts}
delete: Smazat
empty: Nemáte žádný filtr.
+ expires_in: Vyprší za %{distance}
+ expires_on: Vyprší %{date}
+ keywords:
+ few: "%{count} klíčová slova"
+ many: "%{count} klíčových slov"
+ one: "%{count} klíčové slovo"
+ other: "%{count} klíčových slov"
+ statuses:
+ few: "%{count} příspěvků"
+ many: "%{count} příspěvků"
+ one: "%{count} příspěvek"
+ other: "%{count} příspěvků"
title: Filtry
new:
+ save: Uložit nový filtr
title: Přidat nový filtr
+ statuses:
+ back_to_filter: Zpět na filtr
+ batch:
+ remove: Odstranit z filtru
+ index:
+ hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní.
+ title: Filtrované příspěvky
footer:
developers: Vývojáři
more: Více…
@@ -1180,6 +1268,7 @@ cs:
changes_saved_msg: Změny byly úspěšně uloženy!
copy: Kopírovat
delete: Smazat
+ deselect: Zrušit výběr všeho
none: Žádné
order_by: Seřadit podle
save_changes: Uložit změny
@@ -1291,23 +1380,10 @@ cs:
copy_account_note_text: 'Tento účet se přesunul z %{acct}, zde byly Vaše předchozí poznámky o něm:'
notification_mailer:
admin:
+ report:
+ subject: Uživatel %{name} podal hlášení
sign_up:
subject: Uživatel %{name} se zaregistroval
- digest:
- action: Zobrazit všechna oznámení
- body: Zde najdete stručný souhrn zpráv, které jste zmeškali od vaší poslední návštěvy %{since}
- mention: 'Uživatel %{name} vás zmínil v:'
- new_followers_summary:
- few: Zatímco jste byli pryč jste navíc získali %{count} nové sledující! Skvělé!
- many: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné!
- one: Zatímco jste byli pryč jste navíc získali jednoho nového sledujícího! Hurá!
- other: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné!
- subject:
- few: "%{count} nová oznámení od vaší poslední návštěvy 🐘"
- many: "%{count} nových oznámení od vaší poslední návštěvy 🐘"
- one: "1 nové oznámení od vaší poslední návštěvy 🐘"
- other: "%{count} nových oznámení od vaší poslední návštěvy 🐘"
- title: Ve vaší nepřítomnosti…
favourite:
body: 'Váš příspěvek si oblíbil uživatel %{name}:'
subject: Uživatel %{name} si oblíbil váš příspěvek
@@ -1682,7 +1758,7 @@ cs:
Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 26. května 2022.
Původně adaptováno ze zásad ochrany osobních údajů projektu Discourse.
- title: Podmínky používání a zásady ochrany osobních údajů na serveru %{instance}
+ title: Zásady ochrany osobních údajů %{instance}
themes:
contrast: Mastodon (vysoký kontrast)
default: Mastodon (tmavý)
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 9137533256..86a134a263 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -28,7 +28,6 @@ cy:
learn_more: Dysgu mwy
logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}.
logout_before_registering: Rydych chi eisoes wedi mewngofnodi.
- privacy_policy: Polisi preifatrwydd
rules: Rheolau gweinydd
rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:'
see_whats_happening: Gweld beth sy'n digwydd
@@ -42,7 +41,6 @@ cy:
two: statwsau
zero: statwsau
status_count_before: Ysgrifennwyd gan
- terms: Telerau gwasanaeth
unavailable_content: Cynnwys nad yw ar gael
unavailable_content_description:
domain: Gweinydd
@@ -98,10 +96,8 @@ cy:
posts_tab_heading: Postiadau
posts_with_replies: Postiadau ac atebion
roles:
- admin: Gweinyddwr
bot: Bot
group: Grŵp
- moderator: Safonwr
unavailable: Proffil ddim ar gael
unfollow: Dad-ddilyn
admin:
@@ -120,7 +116,6 @@ cy:
avatar: Afatar
by_domain: Parth
change_email:
- changed_msg: E-bost cyfrif wedi ei newid yn llwyddiannus!
current_email: E-bost Cyfredol
label: Newid E-bost
new_email: E-bost Newydd
@@ -197,11 +192,7 @@ cy:
reset: Ailosod
reset_password: Ailosod cyfrinair
resubscribe: Aildanysgrifio
- role: Caniatâd
- roles:
- admin: Gweinyddwr
- moderator: Aroglygydd
- user: Defnyddiwr
+ role: Rôl
search: Chwilio
search_same_email_domain: Defnyddwyr eraill gyda'r un parth ebost
search_same_ip: Defnyddwyr eraill gyda'r un IP
@@ -264,7 +255,6 @@ cy:
update_status: Diweddaru Statws
actions:
memorialize_account_html: Newidodd %{name} gyfrif %{target} i dudalen goffa
- deleted_status: "(statws wedi ei ddileu)"
empty: Dim logiau ar gael.
filter_by_action: Hidlo wrth weithred
filter_by_user: Hidlo wrth ddefnyddiwr
@@ -488,9 +478,6 @@ cy:
deletion:
desc_html: Caniatau i unrhywun i ddileu eu cyfrif
title: Agor dileu cyfrif
- min_invite_role:
- disabled: Neb
- title: Caniatau gwahoddiadau gan
registrations_mode:
modes:
approved: Mae angen cymeradwyaeth ar gyfer cofrestru
@@ -500,9 +487,6 @@ cy:
show_known_fediverse_at_about_page:
desc_html: Wedi'i ddewis, bydd yn dangos rhagolwg o dŵtiau o'r holl ffedysawd. Fel arall bydd ond yn dangos tŵtiau lleol.
title: Dangos ffedysawd hysbys ar ragolwg y ffrwd
- show_staff_badge:
- desc_html: Dangos bathodyn staff ar dudalen defnyddiwr
- title: Dangos bathodyn staff
site_description:
desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a>
a <em>
.
title: Disgrifiad achos
@@ -512,9 +496,6 @@ cy:
site_short_description:
desc_html: Yn cael ei ddangos yn bar ar yr ochr a tagiau meto. Digrifiwch beth yw Mastodon a beth sy'n gwneud y gweinydd hwn mewn un paragraff. Os yn wag, wedi ei ragosod i ddangos i disgrifiad yr achos.
title: Disgrifiad byr o'r achos
- site_terms:
- 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
thumbnail:
desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px
@@ -523,9 +504,6 @@ cy:
desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio
title: Rhagolwg o'r ffrwd
title: Gosodiadau'r wefan
- trendable_by_default:
- desc_html: Yn ddylanwadu ar hashnodau sydd heb ei rhwystro yn y gorffenol
- title: Gadael hashnodau i dueddu heb adolygiad cynt
trends:
desc_html: Arddangos hashnodau a adolygwyd yn gynt yn gyhoeddus sydd yn tueddu yn bresennol
title: Hashnodau tueddig
@@ -734,7 +712,6 @@ cy:
title: Golygu hidlydd
errors:
invalid_context: Dim cyd-destun neu cyd-destun annilys wedi ei ddarparu
- invalid_irreversible: Mae hidlo anadferadwy ond yn gweithio yng nghyd-destun cartref neu hysbysiadau
index:
delete: Dileu
empty: Nid oes gennych chi hidlyddion.
@@ -849,18 +826,6 @@ cy:
carry_mutes_over_text: Wnaeth y defnyddiwr symud o %{acct}, a oeddech chi wedi'i dawelu.
copy_account_note_text: 'Wnaeth y defnyddiwr symud o %{acct}, dyma oedd eich hen nodiadau amdanynt:'
notification_mailer:
- digest:
- action: Gweld holl hysbysiadau
- body: Dyma grynodeb byr o'r holl negeseuon golloch chi ers eich ymweliad diwethaf ar %{since}
- mention: 'Soniodd %{name} amdanoch chi:'
- new_followers_summary:
- few: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- many: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- one: Yr ydych wedi ennill dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- other: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- two: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- zero: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê!
- title: Yn eich absenoldeb...
favourite:
body: 'Cafodd eich statws ei hoffi gan %{name}:'
subject: Hoffodd %{name} eich statws
@@ -1077,8 +1042,6 @@ cy:
too_late: Mae'n rhy hwyr i apelio yn erbyn y rhybudd hwn
tags:
does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol
- terms:
- title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd"
themes:
contrast: Mastodon (Cyferbyniad uchel)
default: Mastodon (Tywyll)
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 337005369e..3379b82c3b 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -39,7 +39,6 @@ da:
other: indlæg
status_count_before: Som har postet
tagline: Decentraliseret socialt netværk
- terms: Tjenestevilkår
unavailable_content: Modererede servere
unavailable_content_description:
domain: Server
@@ -83,10 +82,8 @@ da:
posts_tab_heading: Indlæg
posts_with_replies: Indlæg og svar
roles:
- admin: Admin
bot: Bot
group: Gruppe
- moderator: Moderator
unavailable: Profil utilgængelig
unfollow: Følg ikke længere
admin:
@@ -105,12 +102,17 @@ da:
avatar: Profilbillede
by_domain: Domæne
change_email:
- changed_msg: Kontoens e-mail er skiftet!
+ changed_msg: E-mail 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}
+ change_role:
+ changed_msg: Rolle ændret!
+ label: Ændr rolle
+ no_role: Ingen rolle
+ title: Ændr rolle for %{username}
confirm: Bekræft
confirmed: Bekræftet
confirming: Bekræfter
@@ -154,6 +156,7 @@ da:
active: Aktiv
all: Alle
pending: Afventer
+ silenced: Begrænset
suspended: Suspenderet
title: Moderation
moderation_notes: Moderationsnotater
@@ -161,6 +164,7 @@ da:
most_recent_ip: Seneste IP
no_account_selected: Ingen kontiændringer, da ingen var valgt
no_limits_imposed: Ingen begrænsninger pålagt
+ no_role_assigned: Ingen rolle tildelt
not_subscribed: Abonnerer ikke
pending: Afventende vurdering
perform_full_suspension: Suspendér
@@ -187,12 +191,7 @@ da:
reset: Nulstil
reset_password: Nulstil adgangskode
resubscribe: Genabonnér
- role: Tilladelser
- roles:
- admin: Administrator
- moderator: Moderator
- staff: Personale
- user: Bruger
+ role: Rolle
search: Søg
search_same_email_domain: Øvrige brugere med samme e-maildomæne
search_same_ip: Øvrige brugere med identisk IP
@@ -235,17 +234,21 @@ da:
approve_user: Godkend bruger
assigned_to_self_report: Tildel rapport
change_email_user: Skift e-mail for bruger
+ change_role_user: Skift brugerrolle
confirm_user: Bekræft bruger
create_account_warning: Opret advarsel
create_announcement: Opret bekendtgørelse
+ create_canonical_email_block: Opret e-mailblokering
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
+ create_user_role: Opret rolle
demote_user: Degradér bruger
destroy_announcement: Slet bekendtgørelse
+ destroy_canonical_email_block: Slet e-mailblokering
destroy_custom_emoji: Slet tilpasset emoji
destroy_domain_allow: Slet domænetilladelse
destroy_domain_block: Slet domæneblokering
@@ -254,6 +257,7 @@ da:
destroy_ip_block: Slet IP-regel
destroy_status: Slet indlæg
destroy_unavailable_domain: Slet Utilgængeligt Domæne
+ destroy_user_role: Ødelæg rolle
disable_2fa_user: Deaktivér 2FA
disable_custom_emoji: Deaktivér tilpasset emoji
disable_sign_in_token_auth_user: Deaktivér e-mailtoken godkendelse for bruger
@@ -280,24 +284,30 @@ da:
update_announcement: Opdatér bekendtgørelse
update_custom_emoji: Opdatér tilpasset emoji
update_domain_block: Opdatér domæneblokering
+ update_ip_block: Opdatér IP-regel
update_status: Opdatér indlæg
+ update_user_role: Opdatér rolle
actions:
approve_appeal_html: "%{name} godkendte moderationsafgørelsesappellen fra %{target}"
approve_user_html: "%{name} godkendte tilmeldingen fra %{target}"
assigned_to_self_report_html: "%{name} tildelte sig selv anmeldelsen %{target}"
change_email_user_html: "%{name} ændrede e-mailadressen for bruger %{target}"
+ change_role_user_html: "%{name} ændrede rollen for %{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_canonical_email_block_html: "%{name} blokerede e-mailen med hash'et %{target}"
create_custom_emoji_html: "%{name} uploadede den 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}"
+ create_user_role_html: "%{name} oprettede %{target}-rolle"
demote_user_html: "%{name} degraderede brugeren %{target}"
destroy_announcement_html: "%{name} slettede bekendtgørelsen %{target}"
- destroy_custom_emoji_html: "%{name} fjernede emojien %{target}"
+ destroy_canonical_email_block_html: "%{name} afblokerede e-mailen med hash'et %{target}"
+ destroy_custom_emoji_html: "%{name} slettede 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}"
@@ -305,6 +315,7 @@ da:
destroy_ip_block_html: "%{name} slettede en regel for IP %{target}"
destroy_status_html: "%{name} fjernede indlægget fra %{target}"
destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}"
+ destroy_user_role_html: "%{name} slettede %{target}-rolle"
disable_2fa_user_html: "%{name} deaktiverede tofaktorkravet for brugeren %{target}"
disable_custom_emoji_html: "%{name} deaktiverede emojien %{target}"
disable_sign_in_token_auth_user_html: "%{name} deaktiverede e-mailtoken godkendelsen for %{target}"
@@ -331,8 +342,9 @@ da:
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_ip_block_html: "%{name} ændrede reglen for IP'en %{target}"
update_status_html: "%{name} opdaterede indlægget fra %{target}"
- deleted_status: "(slettet indlæg)"
+ update_user_role_html: "%{name} ændrede %{target}-rolle"
empty: Ingen logger fundet.
filter_by_action: Filtrér efter handling
filter_by_user: Filtrér efter bruger
@@ -649,6 +661,66 @@ da:
unresolved: Uløst
updated_at: Opdateret
view_profile: Vis profil
+ roles:
+ add_new: Tilføj rolle
+ assigned_users:
+ one: "%{count} bruger"
+ other: "%{count} brugere"
+ categories:
+ administration: Håndtering
+ devops: Devops
+ invites: Invitationer
+ moderation: Moderering
+ special: Speciel
+ delete: Slet
+ description_html: Med brugerrollerkan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder.
+ edit: Redigér rolle for '%{name}
+ everyone: Standardtilladelser
+ everyone_full_description_html: Dette er basisrollen med indvirkning på alle brugere, selv dem uden rolletildeling. Alle øvrige rolletilladelser nedarves herfra.
+ permissions_count:
+ one: "%{count} tilladelse"
+ other: "%{count} tilladelser"
+ privileges:
+ administrator: Administrator
+ administrator_description: Brugere med denne rolle kan omgå alle tilladelser
+ delete_user_data: Slet brugerdata
+ invite_users: Invitere brugere
+ invite_users_description: Tillader brugere at invitere nye personer til serveren
+ manage_announcements: Håndtere bekendtgørelser
+ manage_announcements_description: Tillader brugere at håndtere bekendtgørelser på serveren
+ manage_appeals: Håndtere appeller
+ manage_appeals_description: Tillader brugere at vurdere appeller af modereringshandlinger
+ manage_blocks: Håndtere blokeringer
+ manage_blocks_description: Tillader brugere at blokere e-mailudbydere og IP-adresser
+ manage_custom_emojis: Håndtere tilpassede emojier
+ manage_custom_emojis_description: Tillader brugere at håndtere tilpassede emojier på serveren
+ manage_federation: Håndtere federation
+ manage_federation_description: Tillader brugere at blokere eller tillade federation med andre domæner og styre leverbarhed
+ manage_invites: Håndtere invitationer
+ manage_invites_description: Tillader brugere at gennemse og deaktivere invitationslinks
+ manage_reports: Håndtere rapporter
+ manage_reports_description: Tillader brugere at vurdere rapporter og, i overensstemmelse hermed, at udføre moderationshandlinger
+ manage_roles: Håndtere roller
+ manage_roles_description: Tillader brugere at håndtere og tildele roller under deres privilegiestatus
+ manage_rules: Håndtere regler
+ manage_rules_description: Tillad brugere at ændre serverregler
+ manage_settings: Håndtere indstillinger
+ manage_settings_description: Tillader brugere at ændre webstedsindstillinger
+ manage_taxonomies: Håndtere taksonomier
+ manage_taxonomies_description: Tillader brugere at gennemse tenderende indhold og opdatere hashtag-indstillinger
+ manage_user_access: Håndtere brugeradgang
+ manage_user_access_description: Tillader brugere at deaktivere andre brugeres tofaktorgodkendelse, skifte deres e-mailadresse og nulstille deres adgangskode
+ manage_users: Håndtere brugere
+ manage_users_description: Tillader brugere at se andre brugeres oplysninger og underkaste dem moderationshandlinger
+ manage_webhooks: Håndtere Webhooks
+ manage_webhooks_description: Tillader brugere at opsætte webhooks til administrative begivenheder
+ view_audit_log: Vis revisionslog
+ view_audit_log_description: Tillader brugere at se en historik over administrative handlinger på serveren
+ view_dashboard: Vis Dashboard
+ view_dashboard_description: Tillader brugere at tilgå Dashboard'et og forskellige målinger
+ view_devops: Devops
+ view_devops_description: Tillader brugere at tilgå Sidekiq- og pgHero-dashboards
+ title: Roller
rules:
add_new: Tilføj regel
delete: Slet
@@ -701,9 +773,6 @@ da:
deletion:
desc_html: Tillad enhver at slette sin konto
title: Åbn kontosletning
- min_invite_role:
- disabled: Ingen
- title: Tillad invitationer fra
require_invite_text:
desc_html: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit
title: Nye brugere afkræves tilmeldingsbegrundelse
@@ -716,9 +785,6 @@ da:
show_known_fediverse_at_about_page:
desc_html: Når deaktiveret, begrænses den fra indgangssiden linkede offentlige tidslinje til kun at vise lokalt indhold
title: Medtag federeret indhold på ikke-godkendt, offentlig tidslinjeside
- show_staff_badge:
- desc_html: Vis et personale-badge på en brugerside
- title: Vis personale-badge
site_description:
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
@@ -729,8 +795,8 @@ da:
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: Der kan angives egen fortrolighedspolitik, tjenestevilkår el.lign. HTML-tags kan bruges
- title: Tilpassede tjenestevilkår
+ desc_html: Man kan skrive sin egen fortrolighedspolitik. HTML-tags understøttes
+ title: Tilpasset fortrolighedspolitik
site_title: Servernavn
thumbnail:
desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales
@@ -740,8 +806,8 @@ da:
title: Tillad ikke-godkendt tilgang til offentlig tidslinje
title: Webstedsindstillinger
trendable_by_default:
- desc_html: Påvirker hashtags, som ikke tidligere er blevet nægtet
- title: Tillad hashtags at forme tendens uden forudgående revision
+ desc_html: Bestemt tendensindhold kan stadig udtrykkeligt forbydes
+ title: Tillad tendenser uden forudgående gennemsyn
trends:
desc_html: Vis offentligt tidligere reviderede hashtags, som pt. trender
title: Populært
@@ -1124,16 +1190,40 @@ da:
public: Offentlig tidslinje
thread: Konversationer
edit:
+ add_keyword: Tilføj nøgleord
+ keywords: Nøgleord
+ statuses: Individuelle indlæg
+ statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Gennemgå eller fjern indlæg fra filteret.
title: Redigere filter
errors:
+ deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen.
invalid_context: Ingen eller ugyldig kontekst angivet
- invalid_irreversible: Uigenkaldelig filtrering virker kun med hjemme- eller notifikationskontekster
index:
+ contexts: Filtre i %{contexts}
delete: Slet
empty: Du har ingen filtre.
+ expires_in: Udløber om %{distance}
+ expires_on: Udløber om %{date}
+ keywords:
+ one: "%{count} nøgleord"
+ other: "%{count} nøgleord"
+ statuses:
+ one: "%{count} indlæg"
+ other: "%{count} indlæg"
+ statuses_long:
+ one: "%{count} individuelt indlæg skjult"
+ other: "%{count} individuelle indlæg skjult"
title: Filtre
new:
+ save: Gem nye filter
title: Tilføj nyt filter
+ statuses:
+ back_to_filter: Returnér til filter
+ batch:
+ remove: Fjern fra filter
+ index:
+ hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen.
+ title: Filtrerede indlæg
footer:
developers: Udviklere
more: Mere…
@@ -1141,12 +1231,22 @@ da:
trending_now: Trender lige nu
generic:
all: Alle
+ all_items_on_page_selected_html:
+ one: "%{count} emne på denne side er valgt."
+ other: Alle %{count} emner på denne side er valgt.
+ all_matching_items_selected_html:
+ one: "%{count} emne, der matchede søgningen, er valgt."
+ other: Alle %{count} emner, som matchede søgningen, er valgt.
changes_saved_msg: Ændringerne er gemt!
copy: Kopier
delete: Slet
+ deselect: Afmarkér alle
none: Intet
order_by: Sortér efter
save_changes: Gem ændringer
+ select_all_matching_items:
+ one: Vælg %{count} emne, der matchede søgningen.
+ other: Vælg alle %{count} emner, som matchede søgningen.
today: i dag
validation_errors:
one: Noget er ikke er helt i vinkel! Tjek fejlen nedenfor
@@ -1251,19 +1351,10 @@ da:
copy_account_note_text: 'Denne bruger er flyttet fra %{acct}, hvor dine tidligere noter om dem var:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} indsendte en anmeldelse"
sign_up:
subject: "%{name} tilmeldte sig"
- digest:
- action: Se alle notifikationer
- body: Her er en kort oversigt over de beskeder, som er misset siden dit seneste besøg %{since}
- mention: "%{name} nævnte dig i:"
- new_followers_summary:
- one: Under dit fravær har du har også fået en ny følger! Sådan!
- other: Under dit fravær har du har også fået %{count} nye følgere! Sådan!
- subject:
- one: "1 ny notifikation siden senest besøg 🐘"
- other: "%{count} nye notifikationer siden senest besøg 🐘"
- title: I dit fravær...
favourite:
body: "%{name} favoritmarkerede dit indlæg:"
subject: "%{name} favoritmarkerede dit indlæg"
@@ -1625,7 +1716,7 @@ da:
Dette dokument er CC-BY-SA. Det er senest opdateret 26. maj 2022.
Oprindeligt tilpasset fra Discourse-fortrolighedspolitik.
- title: Tjenestevilkår og Fortrolighedspolitik for %{instance}
+ title: "%{instance}-fortrolighedspolitik"
themes:
contrast: Mastodon (høj kontrast)
default: Mastodont (mørkt)
diff --git a/config/locales/de.yml b/config/locales/de.yml
index d15011a5ea..e47db036f0 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1,30 +1,30 @@
---
de:
about:
- about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren.
- about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!).
+ about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Födiversum ein Konto besitzt, kannst du mit ihnen interagieren.
+ about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail!
about_this: Über diesen Server
active_count_after: aktiv
- active_footnote: Monatlich Aktive User (MAU)
+ active_footnote: Monatlich aktive User (MAU)
administered_by: 'Betrieben von:'
api: API
apps: Mobile Apps
apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen
browse_directory: Durchsuche das Profilverzeichnis und filtere nach Interessen
- browse_local_posts: Durchsuche einen Live-Stream von öffentlichen Beiträgen von diesem Server
+ browse_local_posts: Durchsuche einen Live-Stream öffentlicher Beiträge dieses Servers
browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon
contact: Kontakt
contact_missing: Nicht angegeben
contact_unavailable: Nicht verfügbar
- continue_to_web: Weiter zur Web App
+ continue_to_web: Weiter zur Web-App
discover_users: Benutzer entdecken
documentation: Dokumentation
- federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen.
+ federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein, Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen.
get_apps: Versuche eine mobile App
hosted_on: Mastodon, gehostet auf %{domain}
instance_actor_flash: |
- Dieses Konto ist ein virtueller Akteur, der den Server selbst und nicht einen einzelnen Benutzer repräsentiert.
- Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn du möchtest die gesamte Instanz blockieren.
+ Dieses Konto ist ein virtueller Akteur, welcher den Server selbst – und nicht einen einzelnen Benutzer – repräsentiert.
+ 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
logged_in_as_html: Du bist derzeit als %{username} eingeloggt.
logout_before_registering: Du bist bereits angemeldet.
@@ -39,12 +39,11 @@ de:
other: Beiträge
status_count_before: mit
tagline: Dezentrales soziales Netzwerk
- terms: Nutzungsbedingungen
unavailable_content: Nicht verfügbarer Inhalt
unavailable_content_description:
domain: Server
reason: 'Grund:'
- rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles anklicken auf den anderen Server erfordert.
+ rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles Anklicken auf den anderen Server erfordert.
rejecting_media_title: Gefilterte Medien
silenced: Beiträge von diesem Server werden nirgends angezeigt, außer in deiner Startseite, wenn du der Person folgst, die den Beitrag verfasst hat.
silenced_title: Stummgeschaltete Server
@@ -83,10 +82,8 @@ de:
posts_tab_heading: Beiträge
posts_with_replies: Beiträge mit Antworten
roles:
- admin: Administrator
bot: Bot
group: Gruppe
- moderator: Moderator
unavailable: Profil nicht verfügbar
unfollow: Entfolgen
admin:
@@ -98,19 +95,24 @@ de:
created_msg: Moderationsnotiz erfolgreich erstellt!
destroyed_msg: Moderationsnotiz erfolgreich gelöscht!
accounts:
- add_email_domain_block: E-Mail-Domain blacklisten
+ add_email_domain_block: E-Mail-Domain auf Blacklist setzen
approve: Akzeptieren
- approved_msg: "%{username}'s Anmeldeantrag erfolgreich genehmigt"
+ approved_msg: Anmeldeantrag von %{username} erfolgreich genehmigt
are_you_sure: Bist du sicher?
avatar: Profilbild
by_domain: Domain
change_email:
- changed_msg: E-Mail-Adresse des Kontos erfolgreich geändert!
+ changed_msg: E-Mail erfolgreich geändert!
current_email: Aktuelle E-Mail-Adresse
label: E-Mail-Adresse ändern
new_email: Neue E-Mail-Adresse
submit: E-Mail-Adresse ändern
title: E-Mail-Adresse für %{username} ändern
+ change_role:
+ changed_msg: Rolle erfolgreich geändert!
+ label: Rolle ändern
+ no_role: Keine Rolle
+ title: Rolle für %{username} ändern
confirm: Bestätigen
confirmed: Bestätigt
confirming: Bestätigung
@@ -118,7 +120,7 @@ de:
delete: Daten löschen
deleted: Gelöscht
demote: Degradieren
- destroyed_msg: "%{username}'s Daten wurden zum Löschen in die Warteschlange eingereiht"
+ destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht
disable: Ausschalten
disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentifizierung per E-Mail
disable_two_factor_authentication: 2FA abschalten
@@ -131,12 +133,12 @@ de:
enable: Freischalten
enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail
enabled: Freigegeben
- enabled_msg: "%{username}'s Konto erfolgreich freigegeben"
+ enabled_msg: Konto von %{username} erfolgreich freigegeben
followers: Follower
follows: Folgt
header: Titelbild
inbox_url: Posteingangs-URL
- invite_request_text: Begründung für das beitreten
+ invite_request_text: Begründung für das Beitreten
invited_by: Eingeladen von
ip: IP-Adresse
joined: Beigetreten
@@ -149,11 +151,12 @@ de:
media_attachments: Dateien
memorialize: In Gedenkmal verwandeln
memorialized: Memorialisiert
- memorialized_msg: "%{username} wurde erfolgreich in ein memorialisiertes Konto umgewandelt"
+ memorialized_msg: "%{username} wurde erfolgreich in ein In-Memoriam-Konto umgewandelt"
moderation:
active: Aktiv
all: Alle
pending: In Warteschlange
+ silenced: Limitiert
suspended: Gesperrt
title: Moderation
moderation_notes: Moderationsnotizen
@@ -161,6 +164,7 @@ de:
most_recent_ip: Letzte IP-Adresse
no_account_selected: Keine Konten wurden geändert, da keine ausgewählt wurden
no_limits_imposed: Keine Beschränkungen
+ no_role_assigned: Keine Rolle zugewiesen
not_subscribed: Nicht abonniert
pending: In Warteschlange
perform_full_suspension: Verbannen
@@ -175,11 +179,11 @@ de:
redownload: Profil neu laden
redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert
reject: Ablehnen
- rejected_msg: "%{username}'s Anmeldeantrag erfolgreich abgelehnt"
+ rejected_msg: Anmeldeantrag von %{username} erfolgreich abgelehnt
remove_avatar: Profilbild entfernen
remove_header: Titelbild entfernen
removed_avatar_msg: Profilbild von %{username} erfolgreich entfernt
- removed_header_msg: "%{username}'s Titelbild wurde erfolgreich entfernt"
+ removed_header_msg: Titelbild von %{username} wurde erfolgreich entfernt
resend_confirmation:
already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt
send: Bestätigungs-E-Mail erneut senden
@@ -187,15 +191,10 @@ de:
reset: Zurücksetzen
reset_password: Passwort zurücksetzen
resubscribe: Wieder abonnieren
- role: Berechtigungen
- roles:
- admin: Administrator
- moderator: Moderator_in
- staff: Mitarbeiter
- user: Nutzer
+ role: Rolle
search: Suche
search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain
- search_same_ip: Andere Benutzer mit derselben IP
+ search_same_ip: Andere Benutzer mit derselben IP-Adresse
security_measures:
only_password: Nur Passwort
password_and_2fa: Passwort und 2FA
@@ -212,7 +211,7 @@ de:
subscribe: Abonnieren
suspend: Suspendieren
suspended: Verbannt
- suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor schon hatte.
+ suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es wieder brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor hatte.
suspension_reversible_hint_html: Das Konto wurde gesperrt und die Daten werden am %{date} vollständig gelöscht. Bis dahin kann das Konto ohne irgendwelche negativen Auswirkungen wiederhergestellt werden. Wenn du alle Daten des Kontos sofort entfernen möchtest, kannst du dies nachfolgend tun.
title: Konten
unblock_email: E-Mail Adresse entsperren
@@ -221,7 +220,7 @@ de:
undo_sensitized: Nicht mehr als NSFW markieren
undo_silenced: Stummschaltung aufheben
undo_suspension: Verbannung aufheben
- unsilenced_msg: "%{username}'s Konto erfolgreich freigegeben"
+ unsilenced_msg: Konto von %{username} erfolgreich freigegeben
unsubscribe: Abbestellen
unsuspended_msg: Konto von %{username} erfolgreich freigegeben
username: Profilname
@@ -235,18 +234,22 @@ de:
approve_user: Benutzer genehmigen
assigned_to_self_report: Bericht zuweisen
change_email_user: E-Mail des Benutzers ändern
+ change_role_user: Rolle des Benutzers ändern
confirm_user: Benutzer bestätigen
create_account_warning: Warnung erstellen
create_announcement: Ankündigung erstellen
- create_custom_emoji: Eigene Emoji erstellen
+ create_canonical_email_block: E-Mail-Block erstellen
+ create_custom_emoji: Eigene Emojis erstellen
create_domain_allow: Domain erlauben
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
+ create_user_role: Rolle erstellen
demote_user: Benutzer degradieren
destroy_announcement: Ankündigung löschen
- destroy_custom_emoji: Eigene Emoji löschen
+ destroy_canonical_email_block: E-Mail-Blockade löschen
+ destroy_custom_emoji: Eigene Emojis löschen
destroy_domain_allow: Erlaube das Löschen von Domains
destroy_domain_block: Domain-Blockade löschen
destroy_email_domain_block: E-Mail-Domain-Blockade löschen
@@ -254,6 +257,7 @@ de:
destroy_ip_block: IP-Regel löschen
destroy_status: Beitrag löschen
destroy_unavailable_domain: Nicht verfügbare Domain löschen
+ destroy_user_role: Rolle löschen
disable_2fa_user: 2FA deaktivieren
disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren
disable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer deaktiviert
@@ -279,25 +283,31 @@ de:
unsuspend_account: Konto nicht mehr sperren
update_announcement: Ankündigung aktualisieren
update_custom_emoji: Benutzerdefiniertes Emoji aktualisieren
- update_domain_block: Domain Block aktualisieren
+ update_domain_block: Domain-Blockade aktualisieren
+ update_ip_block: IP-Regel aktualisieren
update_status: Beitrag aktualisieren
+ update_user_role: Rolle aktualisieren
actions:
approve_appeal_html: "%{name} genehmigte die Moderationsbeschlüsse von %{target}"
approve_user_html: "%{name} genehmigte die Anmeldung von %{target}"
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"
+ change_role_user_html: "%{name} hat die Rolle von %{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_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} blockiert"
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"
+ create_user_role_html: "%{name} hat die Rolle %{target} erstellt"
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_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} freigegeben"
+ destroy_custom_emoji_html: "%{name} hat das %{target} Emoji gelöscht"
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"
@@ -305,12 +315,13 @@ de:
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"
+ destroy_user_role_html: "%{name} hat die Rolle %{target} gelöscht"
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_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} deaktiviert"
disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert"
enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert"
- enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} aktiviert"
+ enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} 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"
@@ -320,19 +331,20 @@ de:
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"
+ sensitive_account_html: "%{name} markierte die Medien von %{target} 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"
- unblock_email_account_html: "%{name} entsperrte %{target}'s E-Mail-Adresse"
- unsensitive_account_html: "%{name} markierte %{target}'s Medien nicht als NSFW"
+ unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}"
+ unsensitive_account_html: "%{name} markierte Medien von %{target} als nicht 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_ip_block_html: "%{name} hat die Regel für IP %{target} geändert"
update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert"
- deleted_status: "(gelöschter Beitrag)"
+ update_user_role_html: "%{name} hat die Rolle %{target} geändert"
empty: Keine Protokolle gefunden.
filter_by_action: Nach Aktion filtern
filter_by_user: Nach Benutzer filtern
@@ -467,11 +479,11 @@ de:
resolve: Domain auflösen
title: Neue E-Mail-Domain-Blockade
no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Blockierungen geändert, da keine ausgewählt wurden
- resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, die dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf große E-Mail-Anbieter nicht zu blockieren.
+ resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, welche dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf, große E-Mail-Anbieter nicht zu blockieren.
resolved_through_html: Durch %{domain} aufgelöst
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."
+ 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 basierend auf einer Mischung aus am meisten interagierenden Benutzerkonten und jenen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet."
language: Für Sprache
status: Status
suppress: Folgeempfehlungen unterdrücken
@@ -577,7 +589,7 @@ de:
disable: Ausschalten
disabled: Ausgeschaltet
enable: Einschalten
- enable_hint: Sobald aktiviert wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und wird alle öffentlichen Beiträge dieses Servers an es senden.
+ enable_hint: Sobald aktiviert, wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und alle öffentlichen Beiträge dieses Servers an dieses senden.
enabled: Eingeschaltet
inbox_url: Relay-URL
pending: Warte auf Zustimmung des Relays
@@ -599,12 +611,12 @@ de:
action_taken_by: Maßnahme ergriffen durch
actions:
delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen.
- mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account.
- other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto.
- resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen.
- silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden.
+ mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden als NSFW markiert und ein Strike wird notiert, um dir dabei zu helfen, härter auf zukünftige Zuwiderhandlungen desselben Kontos zu reagieren.
+ other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto.
+ resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen.
+ silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die ihm bereits folgen oder es manuell nachschlagen, und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden.
suspend_description_html: Das Profil und alle seine Inhalte werden unzugänglich werden, bis es schließlich gelöscht wird. Interaktion mit dem Konto wird unmöglich sein. Reversibel innerhalb von 30 Tagen.
- actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet außer wenn die Spam Kategorie ausgewählt ist.
+ actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet, außer wenn die Spam-Kategorie ausgewählt ist.
add_to_report: Mehr zur Meldung hinzufügen
are_you_sure: Bist du dir sicher?
assign_to_self: Mir zuweisen
@@ -614,7 +626,7 @@ de:
category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert
comment:
none: Kein
- comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} folgendes:'
+ comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} Folgendes:'
created_at: Gemeldet
delete_and_resolve: Beiträge löschen
forwarded: Weitergeleitet
@@ -649,10 +661,71 @@ de:
unresolved: Ungelöst
updated_at: Aktualisiert
view_profile: Zeige Profil
+ roles:
+ add_new: Rolle hinzufügen
+ assigned_users:
+ one: "%{count} Benutzer"
+ other: "%{count} Benutzer"
+ categories:
+ administration: Administration
+ devops: DevOps
+ invites: Einladungen
+ moderation: Moderation
+ special: Spezial
+ delete: Löschen
+ description_html: Mit Benutzerrollenkannst du die Funktionen und Bereiche von Mastodon anpassen, auf die deine Benutzer zugreifen können.
+ edit: "'%{name}' Rolle bearbeiten"
+ everyone: Standardberechtigungen
+ everyone_full_description_html: Das ist die -Basis-Rolle, die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon.
+ permissions_count:
+ one: "%{count} Berechtigung"
+ other: "%{count} Berechtigungen"
+ privileges:
+ administrator: Administrator
+ administrator_description: Benutzer mit dieser Berechtigung werden jede Berechtigung umgehen
+ delete_user_data: Benutzerdaten löschen
+ delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen
+ invite_users: Benutzer einladen
+ invite_users_description: Erlaubt Benutzern, neue Leute zum Server einzuladen
+ manage_announcements: Ankündigungen verwalten
+ manage_announcements_description: Erlaubt Benutzern, Ankündigungen auf dem Server zu verwalten
+ manage_appeals: Anträge verwalten
+ manage_appeals_description: Erlaubt es Benutzern, Anträge gegen Moderationsaktionen zu überprüfen
+ manage_blocks: Geblocktes verwalten
+ manage_blocks_description: Erlaubt Benutzern, E-Mail-Anbieter und IP-Adressen zu blockieren
+ manage_custom_emojis: Benutzerdefinierte Emojis verwalten
+ manage_custom_emojis_description: Erlaubt es Benutzern, eigene Emojis auf dem Server zu verwalten
+ manage_federation: Föderation verwalten
+ manage_federation_description: Erlaubt es Benutzern, Föderation mit anderen Domains zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren
+ manage_invites: Einladungen verwalten
+ manage_invites_description: Erlaubt es Benutzern, Einladungslinks zu durchsuchen und zu deaktivieren
+ manage_reports: Meldungen verwalten
+ manage_reports_description: Erlaubt es Benutzern, Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen
+ manage_roles: Rollen verwalten
+ manage_roles_description: Erlaubt es Benutzern, Rollen unter ihren Rollen zu verwalten und zuzuweisen
+ manage_rules: Regeln verwalten
+ manage_rules_description: Erlaubt es Benutzern, Serverregeln zu ändern
+ manage_settings: Einstellungen verwalten
+ manage_settings_description: Erlaubt es Benutzern, Seiten-Einstellungen zu ändern
+ manage_taxonomies: Taxonomien verwalten
+ manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen
+ manage_user_access: Benutzerzugriff verwalten
+ manage_user_access_description: Erlaubt es Benutzern, die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen
+ manage_users: Benutzer verwalten
+ manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen
+ manage_webhooks: Webhooks verwalten
+ manage_webhooks_description: Erlaubt es Benutzern, Webhooks für administrative Ereignisse einzurichten
+ view_audit_log: Audit-Log anzeigen
+ view_audit_log_description: Erlaubt es Benutzern, den Verlauf von administrativen Aktionen auf dem Server zu sehen
+ view_dashboard: Dashboard anzeigen
+ view_dashboard_description: Gewährt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken
+ view_devops: DevOps
+ view_devops_description: Erlaubt es Benutzern, auf die Sidekiq- und pgHero-Dashboards zuzugreifen
+ title: Rollen
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.
+ 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
@@ -661,13 +734,13 @@ de:
desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen
title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten
bootstrap_timeline_accounts:
- desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Accounts werden immer in den Folgemempfehlungen angezeigt
- title: Konten, die Neu-Angemeldete empfohlen bekommen sollen
+ desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Konten werden immer in den Folgemempfehlungen angezeigt
+ title: Konten, welche neuen Benutzern empfohlen werden sollen
contact_information:
email: Öffentliche E-Mail-Adresse
username: Profilname für die Kontaktaufnahme
custom_css:
- desc_html: Verändere das Aussehen mit CSS, dass auf jeder Seite geladen wird
+ desc_html: Verändere das Aussehen mit CSS-Stilen, die auf jeder Seite geladen werden
title: Benutzerdefiniertes CSS
default_noindex:
desc_html: Beeinflusst alle Benutzer, die diese Einstellung nicht selbst geändert haben
@@ -683,7 +756,7 @@ de:
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
mascot:
- desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde wird es auf das Standard-Maskottchen zurückfallen
+ desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden.
title: Maskottchen-Bild
peers_api_enabled:
desc_html: Domain-Namen, die der Server im Fediversum gefunden hat
@@ -692,7 +765,7 @@ de:
desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als NSFW markiert sind
title: NSFW-Medien in OpenGraph-Vorschau anzeigen
profile_directory:
- desc_html: Erlaube Benutzer auffindbar zu sein
+ desc_html: Erlaube es Benutzern, auffindbar zu sein
title: Aktiviere Profilverzeichnis
registrations:
closed_message:
@@ -701,11 +774,8 @@ de:
deletion:
desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen
title: Kontolöschung erlauben
- min_invite_role:
- disabled: Niemand
- title: Einladungen erlauben von
require_invite_text:
- desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den "Warum möchtest du beitreten?" Text eher obligatorisch als optional
+ desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional
title: Neue Benutzer müssen einen Einladungstext ausfüllen
registrations_mode:
modes:
@@ -714,11 +784,8 @@ de:
open: Jeder kann sich registrieren
title: Registrierungsmodus
show_known_fediverse_at_about_page:
- desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt.
+ desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Födiversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt.
title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite
- show_staff_badge:
- desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite
- title: Zeige Mitarbeiter-Badge
site_description:
desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a>
und <em>
.
title: Beschreibung des Servers
@@ -726,11 +793,11 @@ de:
desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen
title: Erweiterte Beschreibung des Servers
site_short_description:
- desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet.
+ desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet.
title: Kurze Beschreibung des Servers
site_terms:
- 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
+ desc_html: Sie können Ihre eigenen Datenschutzrichtlinien schreiben. Sie können HTML-Tags verwenden
+ title: Benutzerdefinierte Datenschutzerklärung
site_title: Name des Servers
thumbnail:
desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen
@@ -740,8 +807,8 @@ de:
title: Zeitleisten-Vorschau
title: Server-Einstellungen
trendable_by_default:
- desc_html: Betroffene Hashtags, die bisher nicht gesperrt wurden
- title: Hashtags ohne vorherige Überprüfung erlauben zu trenden
+ desc_html: Bestimmte angesagte Inhalte können immer noch explizit deaktiviert werden
+ title: Trends ohne vorherige Überprüfung erlauben
trends:
desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind
title: Trendende Hashtags
@@ -766,24 +833,24 @@ de:
disable: "%{name} hat das Konto von %{target} eingefroren"
mark_statuses_as_sensitive: "%{name} markierte %{target}'s Beiträge als NSFW"
none: "%{name} hat eine Warnung an %{target} gesendet"
- sensitive: "%{name} markierte %{target}'s Konto als NSFW"
+ sensitive: "%{name} markierte das Konto von %{target} als NSFW"
silence: "%{name} hat das Konto von %{target} eingeschränkt"
suspend: "%{name} hat das Konto von %{target} verbannt"
appeal_approved: Einspruch angenommen
appeal_pending: Einspruch ausstehend
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
+ message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führe sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält
elasticsearch_running_check:
- message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe ob Elasticsearch läuft oder deaktiviere die Volltextsuche
+ message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe, ob Elasticsearch läuft, oder deaktiviere die Volltextsuche
elasticsearch_version_check:
message_html: 'Inkompatible Elasticsearch-Version: %{value}'
version_comparison: Elasticsearch %{running_version} läuft, aber %{required_version} wird benötigt
rules_check:
action: Serverregeln verwalten
- message_html: Sie haben keine Serverregeln definiert.
+ message_html: Du hast 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
+ message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration
tags:
review: Prüfstatus
updated_msg: Hashtageinstellungen wurden erfolgreich aktualisiert
@@ -795,26 +862,26 @@ de:
links:
allow: Erlaube Link
allow_provider: Erlaube Herausgeber
- description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen, herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen.
+ description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen.
disallow: Verbiete Link
disallow_provider: Verbiete Herausgeber
shared_by_over_week:
one: In der letzten Woche von einer Person geteilt
other: In der letzten Woche von %{count} Personen geteilt
title: Angesagte Links
- usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal
+ usage_comparison: Heute %{today} Mal geteilt, gestern %{yesterday} Mal
only_allowed: Nur Erlaubte
pending_review: Überprüfung ausstehend
preview_card_providers:
allowed: Links von diesem Herausgeber können angesagt sein
- description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden sich nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains.
+ description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains.
rejected: Links von diesem Herausgeber können nicht angesagt sein
title: Herausgeber
rejected: Abgelehnt
statuses:
allow: Beitrag erlauben
allow_account: Autor erlauben
- description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt deren Konto anderen Benutzern zu zeigen. Du kannst auch einzelne Beiträge zulassen oder ablehnen.
+ description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt, sein Konto anderen Benutzern zeigen zu lassen. Du kannst auch einzelne Beiträge zulassen oder ablehnen.
disallow: Beitrag verbieten
disallow_account: Autor verbieten
not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden
@@ -840,7 +907,7 @@ de:
trendable: Darf unter Trends erscheinen
trending_rank: 'Trend #%{rank}'
usable: Kann verwendet werden
- usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal
+ usage_comparison: Heute %{today} Mal genutzt, gestern %{yesterday} Mal
used_by_over_week:
one: In der letzten Woche von einer Person genutzt
other: In der letzten Woche von %{count} Personen genutzt
@@ -882,9 +949,9 @@ de:
sensitive: deren Konto als NSFW zu markieren
silence: deren Konto zu beschränken
suspend: deren Konto zu sperren
- body: "%{target} hat was gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:"
+ body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:"
next_steps: Du kannst dem Einspruch zustimmen und die Moderationsentscheidung rückgängig machen oder ignorieren.
- subject: "%{username} hat Einspruch an einer Moderationsentscheidung von %{instance}"
+ subject: "%{username} hat Einspruch gegen eine Moderationsentscheidung von %{instance} eingelegt"
new_pending_account:
body: Die Details von diesem neuem Konto sind unten. Du kannst die Anfrage akzeptieren oder ablehnen.
subject: Neues Konto zur Überprüfung auf %{instance} verfügbar (%{username})
@@ -910,13 +977,13 @@ de:
aliases:
add_new: Alias erstellen
created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten.
- deleted_msg: Der Alias wurde erfolgreich entfernt. Aus diesem Konto zu diesem zu verschieben ist nicht mehr möglich.
+ deleted_msg: Der Alias wurde erfolgreich entfernt. Aus jenem Konto zu diesem zu verschieben, ist nicht mehr möglich.
empty: Du hast keine Aliase.
- hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und widerruflich. Die Kontenmigration wird vom altem Konto aus eingeleitet.
+ hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird, bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und widerruflich. Die Kontenmigration wird vom altem Konto aus eingeleitet.
remove: Alle Aliase aufheben
appearance:
advanced_web_interface: Fortgeschrittene Benutzeroberfläche
- advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt dir die fortgeschrittene Benutzeroberfläche viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags.
+ advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt es dir die fortgeschrittene Benutzeroberfläche, viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags.
animations_and_accessibility: Animationen und Barrierefreiheit
confirmation_dialogs: Bestätigungsfenster
discovery: Entdecken
@@ -983,7 +1050,7 @@ de:
pending: Deine Bewerbung wird von unseren Mitarbeitern noch überprüft. Dies kann einige Zeit dauern. Du erhältst eine E-Mail, wenn deine Bewerbung genehmigt wurde.
redirecting_to: Dein Konto ist inaktiv, da es derzeit zu %{acct} umgeleitet wird.
view_strikes: Zeige frühere Streiks gegen dein Konto
- too_fast: Formular zu schnell gesendet, versuchen Sie es erneut.
+ too_fast: Formular zu schnell gesendet, versuche es erneut.
trouble_logging_in: Schwierigkeiten beim Anmelden?
use_security_key: Sicherheitsschlüssel verwenden
authorize_follow:
@@ -1002,7 +1069,7 @@ de:
confirm: Fortfahren
hint_html: "Hinweis: Wir werden dich für die nächste Stunde nicht erneut nach deinem Passwort fragen."
invalid_password: Ungültiges Passwort
- prompt: Gib dein Passwort ein um fortzufahren
+ prompt: Gib dein Passwort ein, um fortzufahren
crypto:
errors:
invalid_key: ist kein gültiger Ed25519- oder Curve25519-Schlüssel
@@ -1032,7 +1099,7 @@ de:
proceed: Konto löschen
success_msg: Dein Konto wurde erfolgreich gelöscht
warning:
- before: 'Bevor du fortfährst, lese bitte diese Punkte sorgfältig durch:'
+ before: 'Bevor du fortfährst, lies bitte diese Punkte sorgfältig durch:'
caches: Inhalte, die von anderen Servern zwischengespeichert wurden, können weiterhin bestehen
data_removal: Deine Beiträge und andere Daten werden dauerhaft entfernt
email_change_html: Du kannst deine E-Mail-Adresse ändern, ohne dein Konto zu löschen
@@ -1081,15 +1148,15 @@ de:
errors:
'400': Die Anfrage, die du gesendet hast, war ungültig oder fehlerhaft.
'403': Dir fehlt die Befugnis, diese Seite sehen zu können.
- '404': Die Seite nach der du gesucht hast wurde nicht gefunden.
+ '404': Die Seite, nach der du gesucht hast, wurde nicht gefunden.
'406': Diese Seite ist im gewünschten Format nicht verfügbar.
- '410': Die Seite nach der du gesucht hast existiert hier nicht mehr.
+ '410': Die Seite, nach der du gesucht hast, existiert hier nicht mehr.
'422':
content: Sicherheitsüberprüfung fehlgeschlagen. Blockierst du Cookies?
title: Sicherheitsüberprüfung fehlgeschlagen
'429': Du wurdest gedrosselt
'500':
- content: Bitte verzeih, etwas ist bei uns schief gegangen.
+ content: Bitte verzeih', etwas ist bei uns schiefgegangen.
title: Diese Seite ist kaputt
'503': Die Seite konnte wegen eines temporären Serverfehlers nicht angezeigt werden.
noscript_html: Bitte aktiviere JavaScript, um die Mastodon-Web-Anwendung zu verwenden. Alternativ kannst du auch eine der nativen Mastodon-Anwendungen für deine Plattform probieren.
@@ -1100,7 +1167,7 @@ de:
archive_takeout:
date: Datum
download: Dein Archiv herunterladen
- hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern.
+ hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern.
in_progress: Stelle dein Archiv zusammen...
request: Dein Archiv anfragen
size: Größe
@@ -1124,16 +1191,40 @@ de:
public: Öffentliche Zeitleisten
thread: Gespräche
edit:
+ add_keyword: Stichwort hinzufügen
+ keywords: Stichwörter
+ statuses: Individuelle Beiträge
+ statuses_hint_html: Dieser Filter gilt für die Auswahl einzelner Beiträge, unabhängig davon, ob sie mit den unten stehenden Schlüsselwörtern übereinstimmen. Beiträge im Filter ansehen oder entfernen..
title: Filter bearbeiten
errors:
+ deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwende eine neuere Anwendung oder die Web-Schnittstelle.
invalid_context: Ungültiger oder fehlender Kontext übergeben
- invalid_irreversible: Unwiderrufliche Filterung funktioniert nur mit Heim- oder Benachrichtigungskontext
index:
+ contexts: Filter in %{contexts}
delete: Löschen
empty: Du hast keine Filter.
+ expires_in: Läuft ab in %{distance}
+ expires_on: Läuft am %{date} ab
+ keywords:
+ one: "%{count} Stichwort"
+ other: "%{count} Stichwörter"
+ statuses:
+ one: "%{count} Beitrag"
+ other: "%{count} Beiträge"
+ statuses_long:
+ one: "%{count} individueller Beitrag ausgeblendet"
+ other: "%{count} individuelle Beiträge ausgeblendet"
title: Filter
new:
+ save: Neuen Filter speichern
title: Neuen Filter hinzufügen
+ statuses:
+ back_to_filter: Zurück zum Filter
+ batch:
+ remove: Vom Filter entfernen
+ index:
+ hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über die Webschnittstelle hinzufügen.
+ title: Gefilterte Beiträge
footer:
developers: Entwickler
more: Mehr…
@@ -1141,12 +1232,22 @@ de:
trending_now: In den Trends
generic:
all: Alle
+ all_items_on_page_selected_html:
+ one: "%{count} Element auf dieser Seite ausgewählt."
+ other: Alle %{count} Elemente auf dieser Seite ausgewählt.
+ all_matching_items_selected_html:
+ one: "%{count} Element trifft auf ihre Suche zu."
+ other: Alle %{count} Elemente, die Ihrer Suche entsprechen, werden ausgewählt.
changes_saved_msg: Änderungen gespeichert!
copy: Kopieren
delete: Löschen
+ deselect: Auswahl für alle aufheben
none: Keine
order_by: Sortieren nach
save_changes: Änderungen speichern
+ select_all_matching_items:
+ one: Wähle %{count} Element, das deiner Suche entspricht.
+ other: Wählen Sie alle %{count} Elemente, die Ihrer Suche entsprechen.
today: heute
validation_errors:
one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler
@@ -1188,7 +1289,7 @@ de:
one: 1 mal verwendet
other: "%{count} mal verwendet"
max_uses_prompt: Kein Limit
- prompt: Generiere und teile Links um Zugang zu diesem Server zu geben
+ prompt: Generiere und teile Links, um Zugang zu diesem Server zu erteilen
table:
expires_at: Läuft ab
uses: Verwendungen
@@ -1210,7 +1311,7 @@ de:
media_attachments:
validations:
images_and_video: Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden
- not_ready: Dateien die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal!
+ not_ready: Dateien, die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal!
too_many: Es können nicht mehr als 4 Dateien angehängt werden
migrations:
acct: benutzername@domain des neuen Kontos
@@ -1236,7 +1337,7 @@ de:
set_redirect: Umleitung einrichten
warning:
backreference_required: Das neue Konto muss zuerst so konfiguriert werden, dass es auf das alte Konto referenziert
- before: 'Bevor du fortfährst, lese bitte diese Hinweise sorgfältig durch:'
+ before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:'
cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst
disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung.
followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben
@@ -1248,22 +1349,13 @@ de:
move_handler:
carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast.
carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast.
- copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:'
+ copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} hat eine Meldung eingereicht"
sign_up:
subject: "%{name} registrierte sich"
- digest:
- action: Zeige alle Benachrichtigungen
- body: Hier ist eine kurze Zusammenfassung der Nachrichten, die du seit deinem letzten Besuch am %{since} verpasst hast
- mention: "%{name} hat dich erwähnt:"
- new_followers_summary:
- one: Außerdem ist dir seit du weg warst ein weiteres Konto gefolgt! Juhu!
- other: Außerdem sind dir seit du weg warst %{count} weitere Konten gefolgt! Großartig!
- subject:
- one: "1 neue Mitteilung seit deinem letzten Besuch 🐘"
- other: "%{count} neue Mitteilungen seit deinem letzten Besuch 🐘"
- title: In deiner Abwesenheit...
favourite:
body: 'Dein Beitrag wurde von %{name} favorisiert:'
subject: "%{name} hat deinen Beitrag favorisiert"
@@ -1308,7 +1400,7 @@ de:
trillion: T
otp_authentication:
code_hint: Gib den von deiner Authentifizierungs-App generierten Code ein, um deine Anmeldung zu bestätigen
- description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Handys sein, dass Tokens für dein Konto generiert.
+ description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Smartphones sein, welches Tokens für dein Konto generiert.
enable: Aktivieren
instructions_html: "Scanne diesen QR-Code in Google Authenticator oder einer ähnlichen TOTP-App auf deinem Handy. Von nun an generiert diese App Tokens, die du beim Anmelden eingeben musst."
manual_instructions: 'Wenn du den QR-Code nicht scannen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:'
@@ -1327,7 +1419,7 @@ de:
duration_too_long: ist zu weit in der Zukunft
duration_too_short: ist zu früh
expired: Die Umfrage ist bereits vorbei
- invalid_choice: Die gewählte Stimmenoption existiert nicht
+ invalid_choice: Die gewählte Abstimmoption existiert nicht
over_character_limit: kann nicht länger als jeweils %{max} Zeichen sein
too_few_options: muss mindestens einen Eintrag haben
too_many_options: kann nicht mehr als %{max} Einträge beinhalten
@@ -1354,7 +1446,7 @@ de:
relationship: Beziehung
remove_selected_domains: Entferne alle Follower von den ausgewählten Domains
remove_selected_followers: Entferne ausgewählte Follower
- remove_selected_follows: Entfolge ausgewählte Benutzer
+ remove_selected_follows: Entfolge ausgewählten Benutzern
status: Kontostatus
remote_follow:
acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest
@@ -1362,7 +1454,7 @@ de:
no_account_html: Noch kein Konto? Du kannst dich hier anmelden
proceed: Weiter
prompt: 'Du wirst dieser Person folgen:'
- reason_html: "Warum ist dieser Schritt erforderlich?%{instance}
ist möglicherweise nicht der Server auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten."
+ reason_html: "Warum ist dieser Schritt erforderlich?%{instance}
ist möglicherweise nicht der Server, auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten."
remote_interaction:
favourite:
proceed: Fortfahren zum Favorisieren
@@ -1382,8 +1474,8 @@ de:
account: Öffentliche Beiträge von @%{acct}
tag: 'Öffentliche Beiträge mit dem Tag #%{hashtag}'
scheduled_statuses:
- over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht
- over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht
+ over_daily_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, für heute erreicht
+ over_total_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, erreicht
too_soon: Das geplante Datum muss in der Zukunft liegen
sessions:
activity: Letzte Aktivität
@@ -1504,7 +1596,7 @@ de:
enabled: Automatisch alte Beiträge löschen
enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen
exceptions: Ausnahmen
- explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht.
+ explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht.
ignore_favs: Favoriten ignorieren
ignore_reblogs: Boosts ignorieren
interaction_exceptions: Ausnahmen basierend auf Interaktionen
@@ -1512,15 +1604,15 @@ de:
keep_direct: Direktnachrichten behalten
keep_direct_hint: Löscht keine deiner Direktnachrichten
keep_media: Beiträge mit Medienanhängen behalten
- keep_media_hint: Löscht keine Ihrer Beiträge mit Medienanhängen
+ keep_media_hint: Löscht keinen deiner Beiträge mit Medienanhängen
keep_pinned: Angeheftete Beiträge behalten
- keep_pinned_hint: Löscht keine deiner angehefteten Beiträge
+ keep_pinned_hint: Löscht keinen deiner angehefteten Beiträge
keep_polls: Umfragen behalten
keep_polls_hint: Löscht keine deiner Umfragen
keep_self_bookmark: Als Lesezeichen markierte Beiträge behalten
- keep_self_bookmark_hint: Löscht nicht deine eigenen Beiträge, wenn du sie als Lesezeichen markiert hast
+ keep_self_bookmark_hint: Löscht deine eigenen Beiträge nicht, wenn du sie als Lesezeichen markiert hast
keep_self_fav: Behalte die von dir favorisierten Beiträge
- keep_self_fav_hint: Löscht nicht deine eigenen Beiträge, wenn du sie favorisiert hast
+ keep_self_fav_hint: Löscht deine eigenen Beiträge nicht, wenn du sie favorisiert hast
min_age:
'1209600': 2 Wochen
'15778476': 6 Monate
@@ -1549,10 +1641,10 @@ de:
Datenschutzerklärung
Welche Informationen sammeln wir?
- - Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
- - Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
- - Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche sensiblen Informationen über Mastodon.
- - Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
+ - Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen, wie etwa einen Anzeigenamen oder eine Biografie, eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
+ - Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt; das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, ist dies auch eine öffentlich verfügbare Information. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
+ - Direkte und „Nur Folgende“-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. „Nur Folgende“-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet das, dass sie an andere Server ausgeliefert und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen, sie kopieren oder anderweitig weiterverteilen könnten. Teile keine sensiblen Informationen über Mastodon.
+ - Internet-Protokoll-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
Für was verwenden wir deine Informationen?
@@ -1594,7 +1686,7 @@ de:
Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.
Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 26. Mai 2022.
Ursprünglich übernommen von der Discourse-Datenschutzerklärung.
- title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung"
+ title: "%{instance} Datenschutzerklärung"
themes:
contrast: Mastodon (Hoher Kontrast)
default: Mastodon (Dunkel)
@@ -1612,7 +1704,7 @@ de:
enabled: Zwei-Faktor-Authentisierung ist aktiviert
enabled_success: Zwei-Faktor-Authentisierung erfolgreich aktiviert
generate_recovery_codes: Wiederherstellungscodes generieren
- lost_recovery_codes: Wiederherstellungscodes erlauben dir, wieder den Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht.
+ lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht.
methods: Zwei-Faktor-Methoden
otp: Authentifizierungs-App
recovery_codes: Wiederherstellungs-Codes sichern
@@ -1651,8 +1743,8 @@ de:
disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen.
mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst.
sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt.
- silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen.
- suspend: Du kannst dein Konto nicht mehr verwenden und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst.
+ silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen, und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen.
+ suspend: Du kannst dein Konto nicht mehr verwenden, und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst.
reason: 'Grund:'
statuses: 'Zitierte Beiträge:'
subject:
@@ -1676,16 +1768,16 @@ de:
edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren.
explanation: Hier sind ein paar Tipps, um loszulegen
final_action: Fang an zu posten
- final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.'
+ final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich mit dem #introductions-Hashtag vorstellen.'
full_handle: Dein vollständiger Benutzername
- full_handle_hint: Dies ist was du deinen Freunden sagen kannst, damit sie dich anschreiben oder von einem anderen Server folgen können.
+ full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können.
review_preferences_action: Einstellungen ändern
review_preferences_step: Stelle sicher, dass du deine Einstellungen einstellst, wie zum Beispiel welche E-Mails du gerne erhalten möchtest oder was für Privatsphäreneinstellungen voreingestellt werden sollten. Wenn dir beim Ansehen von GIFs nicht schwindelig wird, dann kannst du auch das automatische Abspielen dieser aktivieren.
subject: Willkommen bei Mastodon
tip_federated_timeline: Die föderierte Zeitleiste ist die sehr große Ansicht vom Mastodon-Netzwerk. Sie enthält aber auch nur Leute, denen du und deine Nachbarn folgen, sie ist also nicht komplett.
tip_following: Du folgst standardmäßig deinen Server-Admin(s). Um mehr interessante Leute zu finden, kannst du die lokale oder öffentliche Zeitleiste durchsuchen.
tip_local_timeline: Die lokale Zeitleiste ist eine Ansicht aller Leute auf %{instance}. Diese sind deine Nachbarn!
- tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Wegen!
+ tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet, Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Belangen!
tips: Tipps
title: Willkommen an Bord, %{name}!
users:
diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml
index 0512ca1295..4cc829f3b8 100644
--- a/config/locales/devise.de.yml
+++ b/config/locales/devise.de.yml
@@ -21,18 +21,18 @@ de:
action: E-Mail-Adresse verifizieren
action_with_app: Bestätigen und zu %{app} zurückkehren
explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nur noch einen Klick weit von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren.
- explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst kannst du diese E-Mail ignorieren.
+ explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren.
extra_html: Bitte lies auch die Regeln des Servers und unsere Nutzungsbedingungen.
subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}'
title: Verifiziere E-Mail-Adresse
email_changed:
explanation: 'Die E-Mail-Adresse deines Accounts wird geändert zu:'
- extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast.
+ extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast.
subject: 'Mastodon: E-Mail-Adresse geändert'
title: Neue E-Mail-Adresse
password_change:
explanation: Das Passwort für deinen Account wurde geändert.
- extra: Wenn du dein Passwort nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast.
+ extra: Wenn du dein Passwort nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff auf deinem Account erlangt hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast.
subject: 'Mastodon: Passwort geändert'
title: Passwort geändert
reconfirmation_instructions:
@@ -43,7 +43,7 @@ de:
reset_password_instructions:
action: Ändere Passwort
explanation: Du hast ein neues Passwort für deinen Account angefragt.
- extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern solange du den obigen Link anklickst und ein neues erstellst.
+ extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern, solange du den obigen Link anklickst und ein neues erstellst.
subject: 'Mastodon: Passwort zurücksetzen'
title: Passwort zurücksetzen
two_factor_disabled:
@@ -51,7 +51,7 @@ de:
subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung deaktiviert'
title: 2FA deaktiviert
two_factor_enabled:
- explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, der von der gepaarten TOTP-App generiert wird, wird für den Login benötigt.
+ explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, das von der verbundenen TOTP-App generiert wird, wird für den Login benötigt.
subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung aktiviert'
title: 2FA aktiviert
two_factor_recovery_codes_changed:
@@ -78,7 +78,7 @@ de:
subject: 'Mastodon: Authentifizierung mit Sicherheitsschlüssel aktiviert'
title: Sicherheitsschlüssel aktiviert
omniauth_callbacks:
- failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil »%{reason}«.
+ failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil „%{reason}“.
success: Du hast dich erfolgreich mit deinem %{kind}-Konto angemeldet.
passwords:
no_token: Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst.
@@ -91,8 +91,8 @@ de:
signed_up: Willkommen! Du hast dich erfolgreich registriert.
signed_up_but_inactive: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto inaktiv ist.
signed_up_but_locked: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto gesperrt ist.
- signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast werden wir deine Anfrage überprüfen. Du wirst benachrichtigt falls die Anfrage angenommen wurde.
- signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin ist erklärt, wie du dein Konto freischalten kannst.
+ signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast, werden wir deine Anfrage überprüfen. Du wirst benachrichtigt werden, falls die Anfrage angenommen wurde.
+ signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin wird erklärt, wie du dein Konto freischalten kannst.
update_needs_confirmation: Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhältst in wenigen Minuten eine E-Mail. Darin ist erklärt, wie du die Änderung deiner E-Mail-Adresse abschließen kannst.
updated: Deine Daten wurden aktualisiert.
sessions:
@@ -112,4 +112,4 @@ de:
not_locked: ist nicht gesperrt
not_saved:
one: '1 Fehler hat verhindert, dass %{resource} gespeichert wurde:'
- other: "%{count} Fehler verhinderten, dass %{resource} gespeichert wurde:"
+ other: "%{count} Fehler haben verhindert, dass %{resource} gespeichert wurde:"
diff --git a/config/locales/devise.en-GB.yml b/config/locales/devise.en-GB.yml
new file mode 100644
index 0000000000..ef03d18104
--- /dev/null
+++ b/config/locales/devise.en-GB.yml
@@ -0,0 +1 @@
+en-GB:
diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml
index 63bb3aeddb..0f389bd383 100644
--- a/config/locales/devise.he.yml
+++ b/config/locales/devise.he.yml
@@ -110,3 +110,8 @@ he:
expired: פג תוקפו. נא לבקש חדש
not_found: לא נמצא
not_locked: לא היה נעול
+ not_saved:
+ many: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:"
+ one: 'שגיאה אחת מנעה מ%{resource} זה מלהשמר:'
+ other: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:"
+ two: " %{count} שגיאות מנעו מ%{resource} זה מלהשמר:"
diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml
index 24aa076ee8..82520cef75 100644
--- a/config/locales/devise.hu.yml
+++ b/config/locales/devise.hu.yml
@@ -12,7 +12,7 @@ hu:
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: A fiókod felülvizsgálat alatt áll, még mielőtt használhatnád.
+ pending: A fiókod még engedélyezésre vár.
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.
diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml
index 570377f8a4..cd949d772d 100644
--- a/config/locales/devise.ko.yml
+++ b/config/locales/devise.ko.yml
@@ -7,7 +7,7 @@ ko:
send_paranoid_instructions: 당신의 이메일이 우리의 DB에 있을 경우 몇 분 이내로 확인 메일이 발송 됩니다. 이메일을 받지 못 한 경우, 스팸 폴더를 확인하세요.
failure:
already_authenticated: 이미 로그인 된 상태입니다.
- inactive: 계정이 활성화 되지 않았습니다.
+ inactive: 계정이 아직 활성화 되지 않았습니다.
invalid: 올바르지 않은 %{authentication_keys} 혹은 패스워드입니다.
last_attempt: 계정이 잠기기까지 한 번의 시도가 남았습니다.
locked: 계정이 잠겼습니다.
diff --git a/config/locales/devise.ku.yml b/config/locales/devise.ku.yml
index 18187a156f..d5d0105efc 100644
--- a/config/locales/devise.ku.yml
+++ b/config/locales/devise.ku.yml
@@ -29,13 +29,13 @@ ku:
title: Navnîşana e-nameyê piştrast bike
email_changed:
explanation: 'Navnîşana e-nameyê ajimêra te hate guhertin bo:'
- extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî.
+ extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî.
subject: 'Mastodon: E-name hate guhertin'
title: Navnîşana e-nameya nû
password_change:
explanation: Borînpeyva ajimêra te hate guhertin.
- extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî.
- subject: 'Mastodon: pêborîn hate guhertin'
+ extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî.
+ subject: 'Mastodon: Borînpeyv hate guhertin'
title: Borînpeyv hate guhertin
reconfirmation_instructions:
explanation: Navnîşana nû piştrast bike da ku tu e-nameya xwe biguherînî.
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index bf3b02e3f9..477c7d41f1 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -21,7 +21,7 @@ nl:
action: E-mailadres verifiëren
action_with_app: Bevestigen en naar %{app} teruggaan
explanation: Je hebt een account op %{host} aangemaakt en met één klik kun je deze activeren. Wanneer jij dit account niet hebt aangemaakt, mag je deze e-mail negeren.
- explanation_when_pending: Je vroeg met dit e-mailadres een uitnodiging aan voor %{host}. Nadat je jouw e-mailadres hebt bevestigd, beoordelen we jouw aanvraag. Je kunt tot dan nog niet inloggen. Wanneer jouw aanvraag wordt afgekeurd, worden jouw gegevens verwijderd en hoef je daarna verder niets meer te doen. Wanneer jij dit niet was, kun je deze e-mail negeren.
+ explanation_when_pending: Je vroeg met dit e-mailadres een uitnodiging aan voor %{host}. Nadat je jouw e-mailadres hebt bevestigd, beoordelen we jouw aanvraag. Je kunt tot dan nog niet inloggen. Wanneer jouw aanvraag wordt afgewezen, worden jouw gegevens verwijderd en hoef je daarna verder niets meer te doen. Wanneer jij dit niet was, kun je deze e-mail negeren.
extra_html: Bekijk ook de regels van de Mastodonserver en onze gebruiksvoorwaarden.
subject: 'Mastodon: E-mail bevestigen voor %{instance}'
title: E-mailadres verifiëren
@@ -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 toegangscode nodig.
+ explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen inloggen is een door een tweestapsverificatie-app genereerde toegangscode nodig.
subject: 'Mastodon: Tweestapsverificatie ingeschakeld'
title: Tweestapsverificatie ingeschakeld
two_factor_recovery_codes_changed:
diff --git a/config/locales/devise.nn.yml b/config/locales/devise.nn.yml
index 88d8458f7b..0318e7ea92 100644
--- a/config/locales/devise.nn.yml
+++ b/config/locales/devise.nn.yml
@@ -41,7 +41,7 @@ nn:
subject: 'Mastodon: Stadfest e-post for %{instance}'
title: Stadfest e-postadresse
reset_password_instructions:
- action: Endr passord
+ action: Endre passord
explanation: Du har bedt om eit nytt passord til kontoen din.
extra: Om du ikkje bad om dette, ignorer denne e-posten. Passordet ditt vert ikkje endra før du går inn på lenkja ovanfor og lagar eit nytt.
subject: 'Mastodon: Instuksjonar for å endra passord'
@@ -63,51 +63,51 @@ nn:
webauthn_credential:
added:
explanation: Følgende sikkerhetsnøkkel har blitt lagt til i kontoen din
- subject: 'Mastodon: Ny sikkerhetsnøkkel'
- title: En ny sikkerhetsnøkkel har blitt lagt til
+ subject: 'Mastodon: Ny sikkerheitsnøkkel'
+ title: Ein ny sikkerheitsnøkkel har blitt lagt til
deleted:
- explanation: Følgende sikkerhetsnøkkel har blitt slettet fra kontoen din
- subject: 'Mastodon: Sikkerhetsnøkkel slettet'
- title: En av sikkerhetsnøklene dine har blitt slettet
+ explanation: Den følgande sikkerheitsnøkkelen har blitt sletta frå kontoen din
+ subject: 'Mastodon: Sikkerheitsnøkkel sletta'
+ title: Ein av sikkerheitsnøklane dine har blitt sletta
webauthn_disabled:
- subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av'
- title: Sikkerhetsnøkler deaktivert
+ subject: 'Mastodon: Autentisering med sikkerheitsnøklar vart skrudd av'
+ title: Sikkerheitsnøklar deaktivert
webauthn_enabled:
- subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på'
- title: Sikkerhetsnøkler aktivert
+ subject: 'Mastodon: Sikkerheitsnøkkelsautentisering vart skrudd på'
+ title: Sikkerheitsnøklar aktivert
omniauth_callbacks:
- failure: Du kunne ikkje verte autentisert frå %{kind} av di "%{reason}".
+ failure: Kunne ikkje autentisere deg frå %{kind} fordi "%{reason}".
success: Autentisert frå %{kind}-konto.
passwords:
- no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det er kva du har gjort, dobbelsjekk at du har kopiert heile URLen.
- send_instructions: Om vi har e-postadressa di i databasen vår, får du ein e-post med lenke til gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne e-posten.
- send_paranoid_instructions: Om vi har e-postadressa di i databasen vår, får du ei lenkje til å endra passordet om nokre få minutt. Ver venleg og sjekk søppelpostmappa om du ikkje fekk denne e-posten.
+ no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det var det du gjorde, dobbelsjekk at du har kopiert heile URLen.
+ send_instructions: Om me har epostadressa di i databasen vår, får du ein epost med ei lenke til å gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne eposten.
+ send_paranoid_instructions: Om me har epostadressa di i databasen vår, får du ei lenke til å endra passordet om nokre få minutt. Ver venleg å sjekke søppelpostmappa om du ikkje fekk denne eposten.
updated: Passordet ditt er endra. No er du logga inn.
updated_not_active: Passordet ditt er endra.
registrations:
- destroyed: Ha det! Kontoen din er sletta. Vi vonar å sjå deg igjen snart.
+ destroyed: Ha det! Kontoen din er sletta. Me vonar å sjå deg igjen snart.
signed_up: Velkomen! No er du registrert.
- signed_up_but_inactive: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno.
- signed_up_but_locked: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er låst.
- signed_up_but_pending: Ei melding med ei stadfestingslenkje er vorten send til e-postadressa di. Når du klikkar på lenkja skal vi sjå gjennom søknaden din. Du får ei melding om han vert godkjend.
- signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt e-postadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått e-posten.
- update_needs_confirmation: Du har oppdatert kontoen din, men vi må stadfeste den nye e-postadressa. Sjekk innboksen og følg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått den e-posten.
+ signed_up_but_inactive: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno.
+ signed_up_but_locked: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er låst.
+ signed_up_but_pending: Ei melding med ei stadfestingslenke har vorte sendt til epostadressa di. Når du klikkar på lenka skal me sjå gjennom søknaden din. Du får ei melding om den vert godkjend.
+ signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt til epostadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått eposten.
+ update_needs_confirmation: Du har oppdatert kontoen din, men me må stadfesta den nye epostadressa. Sjekk innboksen og fylg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått denne eposten.
updated: Kontoen har vorte oppdatert.
sessions:
already_signed_out: Logga ut.
signed_in: Logga inn.
signed_out: Logga ut.
unlocks:
- send_instructions: Om nokre minutt får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den mailen.
- send_paranoid_instructions: Dersom du har konto her, får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den mailen.
+ send_instructions: Om nokre minutt får du ein epost med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den eposten.
+ send_paranoid_instructions: Dersom du har konto her, får du ein epost med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den eposten.
unlocked: Kontoen din har vorte låst opp. Logg inn for å halde fram.
errors:
messages:
- already_confirmed: er allereie stadfesta, prøv logge inn
+ already_confirmed: er allereie stadfesta, prøv å logge inn
confirmation_period_expired: må verte stadfesta innan %{period}, spør etter ein ny
- expired: er utgått, ver venleg å beda om ein ny ein
+ expired: er utgått, ver venleg å be om ein ny ein
not_found: ikkje funne
not_locked: var ikkje låst
not_saved:
one: '1 feil hindra %{resource} frå verte lagra:'
- other: "%{count} feil hindra %{resource} frå verte lagra:"
+ other: "%{count} feil hindra %{resource} frå å verte lagra:"
diff --git a/config/locales/devise.si.yml b/config/locales/devise.si.yml
index b9aa1527ce..08b7286cbf 100644
--- a/config/locales/devise.si.yml
+++ b/config/locales/devise.si.yml
@@ -1,42 +1,115 @@
---
si:
devise:
+ confirmations:
+ confirmed: ඔබගේ විද්යුත් තැපැල් ලිපිනය සාර්ථකව තහවුරු කර ඇත.
+ send_instructions: මිනිත්තු කිහිපයකින් ඔබගේ විද්යුත් තැපැල් ලිපිනය තහවුරු කරන ආකාරය පිළිබඳ උපදෙස් සහිත විද්යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ send_paranoid_instructions: ඔබගේ විද්යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්යුත් තැපැල් ලිපිනය තහවුරු කරන ආකාරය පිළිබඳ උපදෙස් සහිත විද්යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
failure:
already_authenticated: ඔබ දැනටමත් පිවිස ඇත.
+ inactive: ඔබගේ ගිණුම තවම සක්රිය කර නොමැත.
+ invalid: වලංගු නොවන %{authentication_keys} හෝ මුරපදය.
+ 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: 'මාස්ටඩන්: වි-තැපෑල වෙනස් විය'
title: නව විද්යුත් තැපැල් ලිපිනය
password_change:
- title: මුරපදය වෙනස් කරන ලදි
+ explanation: ඔබගේ ගිණුම සඳහා මුරපදය වෙනස් කර ඇත.
+ extra: ඔබ ඔබගේ මුරපදය වෙනස් නොකළේ නම්, යමෙකු ඔබගේ ගිණුමට ප්රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න.
+ subject: 'Mastodon: මුරපදය වෙනස් විය'
+ title: මුරපදය වෙනස් කරන ලදී
reconfirmation_instructions:
+ explanation: ඔබගේ ඊමේල් වෙනස් කිරීමට නව ලිපිනය තහවුරු කරන්න.
+ extra: මෙම වෙනස ඔබ විසින් ආරම්භ කරන ලද්දක් නොවේ නම්, කරුණාකර මෙම විද්යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්රවේශ වන තෙක් Mastodon ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් නොවේ.
+ subject: 'Mastodon: %{instance}සඳහා විද්යුත් තැපෑල තහවුරු කරන්න'
title: වි. තැපැල් ලිපිනය තහවුරු කරන්න
reset_password_instructions:
action: මුරපදය වෙනස් කරන්න
+ explanation: ඔබ ඔබගේ ගිණුම සඳහා නව මුරපදයක් ඉල්ලා ඇත.
+ extra: ඔබ මෙය ඉල්ලා නොසිටියේ නම්, කරුණාකර මෙම විද්යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්රවේශ වී අලුත් එකක් සාදන තෙක් ඔබේ මුරපදය වෙනස් නොවනු ඇත.
+ subject: 'Mastodon: මුරපද උපදෙස් යළි පිහිටුවන්න'
title: මුරපදය නැවත සැකසීම
two_factor_disabled:
+ explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්යාපනය අබල කර ඇත. විද්යුත් තැපැල් ලිපිනය සහ මුරපදය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක.
+ subject: 'Mastodon: ද්වි සාධක සත්යාපනය අක්රීය කර ඇත'
title: ද්විපියවර අබලයි
two_factor_enabled:
+ explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්යාපනය සක්රීය කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනයක් පුරනය වීමට අවශ්ය වනු ඇත.
+ subject: 'Mastodon: ද්වි සාධක සත්යාපනය සක්රීය කර ඇත'
title: ද්විපියවර සබලයි
two_factor_recovery_codes_changed:
- title: ද්විපියවර ප්රතිසාධන කේත වෙනස්විණි
+ explanation: පෙර ප්රතිසාධන කේත අවලංගු කර නව ඒවා උත්පාදනය කර ඇත.
+ subject: 'Mastodon: ද්වි-සාධක ප්රතිසාධන කේත නැවත උත්පාදනය කරන ලදී'
+ title: ද්විපියවර ප්රතිසාධන කේත වෙනස් වේ
unlock_instructions:
- subject: 'මාස්ටඩන්: අගුලුහැරීමේ උපදේශ'
+ subject: 'මාස්ටඩන්: අගුලුහැරීමේ උපදේශනය'
webauthn_credential:
added:
+ explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමට එක් කර ඇත
subject: 'මාස්ටඩන්: නව ආරක්ෂණ යතුර'
title: ආරක්ෂණ යතුරක් එකතු කර ඇත
+ deleted:
+ explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමෙන් මකා ඇත
+ subject: 'Mastodon: ආරක්ෂක යතුර මකා ඇත'
+ title: ඔබගේ ආරක්ෂක යතුරු වලින් එකක් මකා ඇත
webauthn_disabled:
+ explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සමඟ සත්යාපනය අබල කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක.
+ subject: 'Mastodon: ආරක්ෂක යතුරු සමඟ සත්යාපනය අක්රිය කර ඇත'
title: ආරක්ෂණ යතුරු අබල කර ඇත
webauthn_enabled:
+ explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සත්යාපනය සක්රීය කර ඇත. ඔබගේ ආරක්ෂක යතුර දැන් පුරනය වීම සඳහා භාවිතා කළ හැක.
+ subject: 'Mastodon: ආරක්ෂක යතුරු සත්යාපනය සක්රීය කර ඇත'
title: ආරක්ෂණ යතුරු සබල කර ඇත
+ omniauth_callbacks:
+ failure: '"%{reason}" නිසා %{kind} සිට ඔබව සත්යාපනය කළ නොහැක.'
+ success: "%{kind} ගිණුමෙන් සාර්ථකව සත්යාපනය කරන ලදී."
+ passwords:
+ no_token: මුරපද යළි පිහිටුවීමේ විද්යුත් තැපෑලකින් නොපැමිණ ඔබට මෙම පිටුවට ප්රවේශ විය නොහැක. ඔබ පැමිණෙන්නේ මුරපද යළි පිහිටුවීමේ විද්යුත් තැපෑලකින් නම්, කරුණාකර ඔබ සපයා ඇති සම්පූර්ණ URL භාවිතා කර ඇති බවට වග බලා ගන්න.
+ send_instructions: ඔබගේ විද්යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්යුත් තැපැල් ලිපිනයට මුරපද ප්රතිසාධන සබැඳියක් ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ send_paranoid_instructions: ඔබගේ විද්යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්යුත් තැපැල් ලිපිනයට මුරපද ප්රතිසාධන සබැඳියක් ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ updated: ඔබගේ මුරපදය සාර්ථකව වෙනස් කර ඇත. ඔබ දැන් පුරනය වී ඇත.
+ updated_not_active: ඔබගේ මුරපදය සාර්ථකව වෙනස් කර ඇත.
registrations:
- update_needs_confirmation: ඔබ ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ නමුත් අපට ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කළ යුතුය. කරුණාකර ඔබගේ විද්යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කර ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න.
+ destroyed: ආයුබෝවන්! ඔබගේ ගිණුම සාර්ථකව අවලංගු කර ඇත. ඉක්මනින්ම ඔබව නැවත හමුවීමට අපි බලාපොරොත්තු වෙමු.
+ signed_up: සාදරයෙන් පිළිගනිමු! ඔබ සාර්ථකව ලියාපදිංචි වී ඇත.
+ signed_up_but_inactive: ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. කෙසේ වෙතත්, ඔබගේ ගිණුම තවමත් සක්රිය කර නොමැති නිසා අපට ඔබව පුරනය වීමට නොහැකි විය.
+ signed_up_but_locked: ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. කෙසේ වෙතත්, ඔබගේ ගිණුම අගුලු දමා ඇති නිසා අපට ඔබව පුරනය කිරීමට නොහැකි විය.
+ signed_up_but_pending: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබ සබැඳිය ක්ලික් කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. එය අනුමත වුවහොත් ඔබට දැනුම් දෙනු ලැබේ.
+ signed_up_but_unconfirmed: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබගේ ගිණුම සක්රිය කිරීමට කරුණාකර සබැඳිය අනුගමනය කරන්න. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ update_needs_confirmation: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ හැකි නමුත් අපට ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කර ගත යුතුය. කරුණාකර ඔබගේ විද්යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කරන්න ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න.
updated: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කර ඇත.
sessions:
already_signed_out: සාර්ථකව නික්මුනි.
- signed_in: සාර්ථකව පිවිසුනි.
+ signed_in: සාර්ථකව පිවිසෙන්න.
signed_out: සාර්ථකව නික්මුනි.
+ unlocks:
+ send_instructions: මිනිත්තු කිහිපයකින් ඔබගේ ගිණුම අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ send_paranoid_instructions: ඔබගේ ගිණුම තිබේ නම්, මිනිත්තු කිහිපයකින් එය අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න.
+ unlocked: ඔබගේ ගිණුම සාර්ථකව අගුලු හැර ඇත. ඉදිරියට යාමට කරුණාකර පුරනය වන්න.
+ errors:
+ messages:
+ already_confirmed: දැනටමත් තහවුරු කර ඇත, කරුණාකර පුරනය වීමට උත්සාහ කරන්න
+ confirmation_period_expired: "%{period}තුළ තහවුරු කළ යුතුය, කරුණාකර අලුත් එකක් ඉල්ලන්න"
+ expired: කල් ඉකුත් වී ඇත, කරුණාකර අලුත් එකක් ඉල්ලන්න
+ not_found: හමු වුණේ නැහැ
+ not_locked: අගුලු දමා නොතිබුණි
+ not_saved:
+ one: '1 දෝෂයක් මෙම %{resource} සුරැකීම තහනම් කර ඇත:'
+ other: 'දෝෂ %{count} කින් මෙම %{resource} සුරැකීම තහනම් කර ඇත:'
diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml
index 98baf29161..86b1c951f7 100644
--- a/config/locales/devise.tr.yml
+++ b/config/locales/devise.tr.yml
@@ -8,7 +8,7 @@ tr:
failure:
already_authenticated: Zaten oturum açtınız.
inactive: Hesabınız henüz etkinleştirilmedi.
- invalid: Geçersiz %{authentication_keys} ya da şifre.
+ invalid: Geçersiz %{authentication_keys} ya da parola.
last_attempt: Hesabınız kilitlenmeden önce bir kez daha denemeniz gerekir.
locked: Hesabınız kilitlendi.
not_found_in_database: Geçersiz %{authentication_keys} ya da parola.
@@ -31,7 +31,7 @@ tr:
subject: 'Mastodon: E-posta adresi değişti'
title: Yeni e-posta adresi
password_change:
- explanation: Hesabınızın şifresi değiştirildi.
+ explanation: Hesabınızın parolası değiştirildi.
extra: Parolanızı değiştirmediyseniz, büyük olasılıkla birileri hesabınıza erişmiş olabilir. Lütfen derhal parolanızı değiştirin veya hesabınız kilitlendiyse sunucu yöneticisine başvurun.
subject: 'Mastodon: Parola değiştirildi'
title: Parola değiştirildi
@@ -81,11 +81,11 @@ tr:
failure: '%{kind}''den kimliğiniz doğrulanamadı çünkü "%{reason}".'
success: "%{kind} hesabından başarıyla kimlik doğrulaması yapıldı."
passwords:
- no_token: Bu sayfaya şifre sıfırlama e-postasından gelmeden erişemezsiniz. Şifre sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun.
+ no_token: Bu sayfaya parola sıfırlama e-postasından gelmeden erişemezsiniz. Parola sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun.
send_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin.
send_paranoid_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin.
- updated: Şifreniz başarılı bir şekilde değiştirildi. Şu an oturum açtınız.
- updated_not_active: Şifreniz başarıyla değiştirildi.
+ updated: Parolanız başarılı bir şekilde değiştirildi. Şu an oturum açtınız.
+ updated_not_active: Parolanız başarıyla değiştirildi.
registrations:
destroyed: Görüşürüz! hesabın başarıyla iptal edildi. Umarız seni sonra tekrar görürüz.
signed_up: Hoş geldiniz! Başarılı bir şekilde oturum açtınız.
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
index 4dc4b5e0ae..85aaccea60 100644
--- a/config/locales/doorkeeper.cy.yml
+++ b/config/locales/doorkeeper.cy.yml
@@ -69,6 +69,7 @@ cy:
confirmations:
revoke: Ydych chi'n sicr?
index:
+ scopes: Caniatâd
title: Eich rhaglenni awdurdodedig
errors:
messages:
@@ -100,6 +101,12 @@ cy:
authorized_applications:
destroy:
notice: Diddymwyd y cais.
+ grouped_scopes:
+ title:
+ accounts: Cyfrifon
+ bookmarks: Tudalnodau
+ filters: Hidlyddion
+ search: Chwilio
layouts:
admin:
nav:
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index 3f7e1b2d75..e4668a50fd 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -72,7 +72,7 @@ de:
revoke: Bist du sicher?
index:
authorized_at: Autorisiert am %{date}
- description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst oder eine Anwendung sich falsch verhält, kannst du den Zugriff widerrufen.
+ description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst, oder wenn eine Anwendung sich falsch bzw. verdächtig verhält, kannst du den Zugriff widerrufen.
last_used_at: Zuletzt verwendet am %{date}
never_used: Nie verwendet
scopes: Berechtigungen
@@ -83,13 +83,13 @@ de:
access_denied: Die Anfrage wurde durch Benutzer_in oder Autorisierungs-Server verweigert.
credential_flow_not_configured: Das Konto konnte nicht gefunden werden, da Doorkeeper.configure.resource_owner_from_credentials nicht konfiguriert ist.
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_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen oder 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:
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_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:
expired: Der Zugriffs-Token ist abgelaufen
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 1584fddf00..473757a37a 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -110,6 +110,7 @@ eo:
bookmarks: Legosignoj
lists: Listoj
mutes: Silentigitaj
+ reports: Raportoj
search: Serĉi
statuses: Afiŝoj
layouts:
diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index db7c4d01a3..5efa63bc9c 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -60,6 +60,7 @@ fi:
error:
title: Tapahtui virhe
new:
+ prompt_html: "%{client_name} pyytää lupaa käyttää tiliäsi. Se on kolmannen osapuolen sovellus. Jos et luota siihen, sinun ei pitäisi sallia sitä."
review_permissions: Tarkista käyttöoikeudet
title: Valtuutus vaaditaan
show:
@@ -70,6 +71,8 @@ fi:
confirmations:
revoke: Oletko varma?
index:
+ authorized_at: Valtuutettu %{date}
+ description_html: Nämä ovat sovelluksia, jotka voivat käyttää tiliäsi käyttäen API. Jos et tunnista sitä tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden.
last_used_at: Viimeksi käytetty %{date}
never_used: Ei käytetty
scopes: Oikeudet
@@ -116,6 +119,9 @@ fi:
write: Vain kirjoitus
title:
accounts: Tilit
+ admin/accounts: Tilien hallinta
+ admin/all: Kaikki hallinnolliset toiminnot
+ admin/reports: Raporttien hallinta
all: Kaikki
blocks: Torjutut
bookmarks: Kirjanmerkit
@@ -147,6 +153,7 @@ fi:
admin:write: muokata kaikkia tietoja palvelimella
admin:write:accounts: suorita moderointitoiminnot tileillä
admin:write:reports: suorita moderointitoiminnot raporteissa
+ crypto: käytä päästä päähän salausta
follow: seurata, estää, perua eston ja lopettaa tilien seuraaminen
push: vastaanottaa push-ilmoituksesi
read: lukea tilin tietoja
@@ -166,6 +173,7 @@ fi:
write:accounts: muokata profiiliasi
write:blocks: estää tilit ja palvelimet
write:bookmarks: kirjanmerkki viestit
+ write:conversations: mykistä ja poistaa keskustelut
write:favourites: suosikki viestit
write:filters: luoda suodattimia
write:follows: seurata ihmisiä
diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml
index f92a228d10..c4e66aef17 100644
--- a/config/locales/doorkeeper.ku.yml
+++ b/config/locales/doorkeeper.ku.yml
@@ -67,7 +67,7 @@ ku:
title: Destûr hildana vê kodê jê bigire û ji sepanê re pêve bike.
authorized_applications:
buttons:
- revoke: Betal bike
+ revoke: Rake
confirmations:
revoke: Ma tu bawerî?
index:
@@ -149,7 +149,7 @@ ku:
scopes:
admin:read: hemû daneyên li ser rajekar bixwîne
admin:read:accounts: zanyariyên hestiyar yên hemû ajimêran li ser rajekar bixwîne
- admin:read:reports: zanyariyên hestiyar yên hemû gilîyan û ajimêrên gilêkirî li ser rajekar bixwîne
+ admin:read:reports: zanyariyên hestiyar yên hemû ragihandinan û ajimêrên ragihandî li ser rajekar bixwîne
admin:write: hemû daneyên li ser rajekar biguherîne
admin:write:accounts: di ajimêrê de çalakiyên li hev kirî pêk bîne
admin:write:reports: di ragihandinê de çalakiyên li hev kirî pêk bîne
@@ -181,5 +181,5 @@ ku:
write:media: pelên medya bar bike
write:mutes: mirovan û axaftinan bêdeng bike
write:notifications: agahdariyên xwe pak bike
- write:reports: mirovên din gilî bike
+ write:reports: mirovên din ragihîne
write:statuses: şandiyekê biweşîne
diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml
index 789b50f619..d17d38c3f6 100644
--- a/config/locales/doorkeeper.nn.yml
+++ b/config/locales/doorkeeper.nn.yml
@@ -60,6 +60,7 @@ nn:
error:
title: Ein feil har oppstått
new:
+ prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er ein tredjepartsapplikasjon. Dersom du ikkje stolar på den, bør du ikkje autorisere det."
title: Autorisasjon nødvendig
show:
title: Kopier denne autorisasjonskoden og lim den inn i applikasjonen.
@@ -69,6 +70,9 @@ nn:
confirmations:
revoke: Er du sikker?
index:
+ authorized_at: Autorisert den %{date}
+ last_used_at: Sist brukt den %{date}
+ never_used: Aldri brukt
title: Dine autoriserte applikasjonar
errors:
messages:
@@ -104,6 +108,25 @@ nn:
authorized_applications:
destroy:
notice: App avvist.
+ grouped_scopes:
+ title:
+ accounts: Kontoar
+ admin/accounts: Kontoadministrasjon
+ admin/all: Alle administrative funksjonar
+ admin/reports: Rapportadministrasjon
+ all: Alt
+ bookmarks: Bokmerke
+ conversations: Samtalar
+ crypto: Ende-til-ende-kryptering
+ favourites: Favorittar
+ filters: Filter
+ lists: Lister
+ media: Mediavedlegg
+ mutes: Målbindingar
+ notifications: Varsel
+ reports: Rapportar
+ search: Søk
+ statuses: Innlegg
layouts:
admin:
nav:
@@ -118,6 +141,7 @@ nn:
admin:write: modifisere alle data på tjeneren
admin:write:accounts: utføre moderatorhandlinger på kontoer
admin:write:reports: utføre moderatorhandlinger på rapporter
+ crypto: bruk ende-til-ende-kryptering
follow: følg, blokkér, avblokkér, avfølg brukere
push: motta dine varsler
read: lese dine data
@@ -132,12 +156,13 @@ nn:
read:notifications: sjå varsla dine
read:reports: sjå rapportane dine
read:search: søke på dine vegne
- read:statuses: sjå alle statusar
+ read:statuses: sjå alle innlegg
write: poste på dine vegne
- write:accounts: rediger profilen din
+ write:accounts: redigera profilen din
write:blocks: blokker kontoar og domene
write:bookmarks: bokmerk statusar
- write:favourites: merk statusar som favoritt
+ write:conversations: målbind og slett samtalar
+ write:favourites: merk innlegg som favoritt
write:filters: lag filter
write:follows: fylg folk
write:lists: lag lister
@@ -145,4 +170,4 @@ nn:
write:mutes: målbind folk og samtalar
write:notifications: tøm varsla dine
write:reports: rapporter andre folk
- write:statuses: legg ut statusar
+ write:statuses: publiser innlegg
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 7f4cca82b1..86883bf149 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -133,7 +133,7 @@ ru:
follows: Подписки
lists: Списки
media: Медиафайлы
- mutes: Без звука
+ mutes: Игнорирует
notifications: Уведомления
push: Push-уведомления
reports: Обращения
@@ -164,7 +164,7 @@ ru:
read:filters: видеть ваши фильтры
read:follows: видеть ваши подписки
read:lists: видеть ваши списки
- read:mutes: видеть список игнорируемых
+ read:mutes: смотреть список игнорируемых
read:notifications: получать уведомления
read:reports: видеть ваши жалобы
read:search: использовать поиск
@@ -173,12 +173,13 @@ ru:
write:accounts: редактировать ваш профиль
write:blocks: блокировать учётные записи и домены
write:bookmarks: добавлять посты в закладки
+ write:conversations: игнорировать и удалить разговоры
write:favourites: отмечать посты как избранные
write:filters: создавать фильтры
write:follows: подписываться на людей
write:lists: создавать списки
write:media: загружать медиафайлы
- write:mutes: добавлять в игнорируемое людей и обсуждения
+ write:mutes: игнорировать людей и обсуждения
write:notifications: очищать список уведомлений
write:reports: отправлять жалобы на других
write:statuses: публиковать посты
diff --git a/config/locales/doorkeeper.si.yml b/config/locales/doorkeeper.si.yml
index 6416fd0820..4bbfa4e90e 100644
--- a/config/locales/doorkeeper.si.yml
+++ b/config/locales/doorkeeper.si.yml
@@ -4,10 +4,22 @@ si:
attributes:
doorkeeper/application:
name: යෙදුමේ නම
+ redirect_uri: URI යළි-යොමු කරන්න
+ scopes: විෂය පථයන්
website: යෙදුමේ වියමන අඩවිය
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: කොටසක් අඩංගු විය නොහැක.
+ invalid_uri: වලංගු URI එකක් විය යුතුය.
+ relative_uri: නිරපේක්ෂ URI විය යුතුය.
+ secured_uri: HTTPS/SSL URI එකක් විය යුතුය.
doorkeeper:
applications:
buttons:
+ authorize: අවසරලත්
cancel: අවලංගු
destroy: විනාශ කරන්න
edit: සංස්කරණය
@@ -16,11 +28,20 @@ si:
destroy: ඔබට විශ්වාසද?
edit:
title: යෙදුම සංස්කරණය
+ form:
+ error: අපොයි! විය හැකි දෝෂ සඳහා ඔබේ පෝරමය පරීක්ෂා කරන්න
+ help:
+ native_redirect_uri: දේශීය පරීක්ෂණ සඳහා %{native_redirect_uri} භාවිතා කරන්න
+ redirect_uri: URI එකකට එක පේළියක් භාවිතා කරන්න
+ scopes: අවකාශයන් සහිත විෂය පථයන් වෙන් කරන්න. පෙරනිමි විෂය පථ භාවිතා කිරීමට හිස්ව තබන්න.
index:
application: යෙදුම
+ callback_url: ආපසු ඇමතුම් URL
+ delete: මකන්න
empty: ඔබට කිසිම යෙදුමක් නැත.
name: නම
new: නව යෙදුම
+ scopes: විෂය පථයන්
show: පෙන්වන්න
title: ඔබගේ යෙදුම්
new:
@@ -28,33 +49,137 @@ si:
show:
actions: ක්රියාමාර්ග
application_id: අනුග්රාහක යතුර
+ callback_urls: ආපසු ඇමතුම් URL
+ scopes: විෂය පථයන්
secret: අනුග්රාහකයේ රහස
title: 'යෙදුම: %{name}'
authorizations:
buttons:
authorize: සත්යාපනය
+ deny: ප්රතික්ෂේප කරන්න
+ error:
+ title: දෝෂයක් සිදුවී ඇත
+ new:
+ prompt_html: "%{client_name} ඔබගේ ගිණුමට ප්රවේශ වීමට අවසර ලබා ගැනීමට කැමති වේ. එය තෙවන පාර්ශවීය යෙදුමකි. ඔබ එය විශ්වාස නොකරන්නේ නම්, ඔබ එයට අවසර නොදිය යුතුය."
+ review_permissions: අවසර සමාලෝචනය කරන්න
+ title: බලය පැවරීමේ අවශ්ය
+ show:
+ title: මෙම අවසර කේතය පිටපත් කර එය යෙදුමට අලවන්න.
authorized_applications:
+ buttons:
+ revoke: අවලංගු කරන්න
confirmations:
revoke: ඔබට විශ්වාසද?
+ index:
+ authorized_at: "%{date}මත අවසර දී ඇත"
+ description_html: මේවා API භාවිතයෙන් ඔබගේ ගිණුමට ප්රවේශ විය හැකි යෙදුම් වේ. ඔබ මෙහි හඳුනා නොගත් යෙදුම් තිබේ නම්, හෝ යෙදුමක් වැරදි ලෙස හැසිරෙන්නේ නම්, ඔබට එහි ප්රවේශය අවලංගු කළ හැක.
+ last_used_at: අවසන් වරට භාවිතා කළේ %{date}
+ never_used: කවදාවත් පාවිච්චි කළේ නැහැ
+ scopes: අවසර
+ superapp: අභ්යන්තර
+ title: ඔබගේ බලයලත් අයදුම්පත්
+ errors:
+ messages:
+ access_denied: සම්පත් හිමිකරු හෝ අවසර සේවාදායකය ඉල්ලීම ප්රතික්ෂේප කළේය.
+ credential_flow_not_configured: Doorkeeper.configure.resource_owner_from_credentials වින්යාස නොකිරීම හේතුවෙන් සම්පත් හිමිකරුගේ මුරපද අක්තපත්ර ප්රවාහය අසාර්ථක විය.
+ invalid_client: නොදන්නා සේවාලාභියා නිසා සේවාලාභී සත්යාපනය අසාර්ථක විය, සේවාලාභී සත්යාපනය ඇතුළත් කර නැත, හෝ සහය නොදක්වන සත්යාපන ක්රමයක්.
+ invalid_grant: සපයා ඇති අවසර දීමනාව වලංගු නැත, කල් ඉකුත් වී ඇත, අවලංගු කර ඇත, අවසර ඉල්ලීමේ භාවිතා කරන ලද යළි-යොමුවීම් URI සමඟ නොගැලපේ, නැතහොත් වෙනත් සේවාදායකයෙකුට නිකුත් කර ඇත.
+ invalid_redirect_uri: ඇතුළත් කර ඇති යළි-යොමුවීම් uri වලංගු නොවේ.
+ invalid_request:
+ missing_param: 'අවශ්ය පරාමිතිය අස්ථානගත වී ඇත: %{value}.'
+ request_not_authorized: ඉල්ලීම අනුමත කළ යුතුය. අවසර ඉල්ලීම සඳහා අවශ්ය පරාමිතිය අස්ථානගත වී හෝ වලංගු නොවේ.
+ unknown: ඉල්ලීමට අවශ්ය පරාමිතියක් අස්ථානගත වී ඇත, සහය නොදක්වන පරාමිති අගයක් ඇතුළත් වේ, නැතහොත් වෙනත් ආකාරයකින් විකෘති වී ඇත.
+ invalid_resource_owner: සපයන ලද සම්පත් හිමිකරු අක්තපත්ර වලංගු නැත, නැතහොත් සම්පත් හිමිකරු සොයාගත නොහැක
+ invalid_scope: ඉල්ලා සිටින විෂය පථය වලංගු නැත, නොදන්නා, හෝ විකෘති වී ඇත.
+ invalid_token:
+ expired: ප්රවේශ ටෝකනය කල් ඉකුත් විය
+ revoked: ප්රවේශ ටෝකනය අවලංගු කරන ලදී
+ unknown: ප්රවේශ ටෝකනය වලංගු නොවේ
+ resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticator වින්යාසගත නොවීම හේතුවෙන් සම්පත් හිමිකරු සොයා ගැනීම අසාර්ථක විය.
+ server_error: අවසර සේවාදායකයට අනපේක්ෂිත කොන්දේසියක් ඇති වූ අතර එය ඉල්ලීම ඉටු කිරීම වළක්වයි.
+ temporarily_unavailable: තාවකාලික අධි බර පැටවීමක් හෝ සේවාදායකයේ නඩත්තුවක් හේතුවෙන් අවසර සේවාදායකයට ඉල්ලීම හැසිරවීමට දැනට නොහැක.
+ unauthorized_client: මෙම ක්රමය භාවිතයෙන් මෙම ඉල්ලීම ඉටු කිරීමට සේවාදායකයාට අවසර නැත.
+ unsupported_grant_type: අවසර ප්රදාන වර්ගයට බලය පැවරීමේ සේවාදායකය විසින් සහය නොදක්වයි.
+ unsupported_response_type: අවසර සේවාදායකය මෙම ප්රතිචාර වර්ගයට සහය නොදක්වයි.
+ flash:
+ applications:
+ create:
+ notice: යෙදුම නිර්මාණය කරන ලදී.
+ destroy:
+ notice: යෙදුම මකා ඇත.
+ update:
+ notice: යෙදුම යාවත්කාලීන කරන ලදී.
+ authorized_applications:
+ destroy:
+ notice: අයදුම්පත අවලංගු කරන ලදී.
+ grouped_scopes:
+ access:
+ read: කියවීමට පමණක් ප්රවේශය
+ read/write: කියවීමට සහ ලිවීමට ප්රවේශය
+ write: ලිවීමට පමණක් ප්රවේශය
+ title:
+ accounts: ගිණුම්
+ admin/accounts: ගිණුම් පරිපාලනය
+ admin/all: සියලුම පරිපාලන කාර්යයන්
+ admin/reports: වාර්තා පරිපාලනය
+ all: සියල්ල
+ blocks: කුට්ටි
+ bookmarks: පිටු සලකුණු
+ conversations: සංවාද
+ crypto: අන්තයේ සිට අගට සංකේතනය කිරීම
+ favourites: ප්රියතම
+ filters: පෙරහන්
+ follow: සබඳතා
+ follows: පහත සඳහන්
+ lists: ලැයිස්තු
+ media: මාධ්ය ඇමුණුම්
+ mutes: නිහඬ කරයි
+ notifications: දැනුම්දීම්
+ push: තල්ලු දැනුම්දීම්
+ reports: වාර්තා
+ search: සොයන්න
+ statuses: තනතුරු
layouts:
admin:
nav:
applications: යෙදුම්
oauth2_provider: වි.සත්යා.2 (OAuth) සැපයුම්කරු
application:
- title: වි.සත්යා. (OAuth) අනුමැතිය අවශ්යයයි
+ title: වි.සත්යා. (OAuth) තොරතුරු අවශ්යයි
scopes:
admin:read: සේවාදායකයේ ඇති සියලුම දත්ත කියවන්න
admin:read:accounts: සියලුම ගිණුම් වල සංවේදී තොරතුරු කියවන්න
admin:read:reports: සියලුම වාර්තා සහ වාර්තා කළ ගිණුම් වල සංවේදී තොරතුරු කියවන්න
+ admin:write: සේවාදායකයේ සියලුම දත්ත වෙනස් කරන්න
+ admin:write:accounts: ගිණුම් මත මධ්යස්ථ ක්රියා සිදු කරන්න
+ admin:write:reports: වාර්තා මත මධ්යස්ථ ක්රියා සිදු කරන්න
+ crypto: end-to-end encryption භාවිතා කරන්න
+ follow: ගිණුම් සබඳතා වෙනස් කරන්න
+ push: ඔබගේ තල්ලු දැනුම්දීම් ලබා ගන්න
read: ඔබගේ ගිණුමේ සියලුම දත්ත කියවන්න
+ read:accounts: ගිණුම් තොරතුරු බලන්න
+ read:blocks: ඔබගේ වාරණ බලන්න
+ read:bookmarks: ඔබගේ පිටු සලකුණු බලන්න
+ read:favourites: ඔබේ ප්රියතම බලන්න
read:filters: ඔබගේ පෙරහන් බලන්න
+ read:follows: ඔබගේ පහත සඳහන් බලන්න
read:lists: ඔබගේ ලැයිස්තු බලන්න
+ read:mutes: ඔබේ ගොළු බලන්න
read:notifications: ඔබගේ දැනුම්දීම් බලන්න
- read:search: ඔබ වෙනුවට සොයන්න
+ read:reports: ඔබගේ වාර්තා බලන්න
+ read:search: ඔබ වෙනුවෙන් සොයන්න
+ read:statuses: සියලුම පෝස්ට් බලන්න
+ write: ඔබගේ ගිණුමේ සියලුම දත්ත වෙනස් කරන්න
+ write:accounts: ඔබගේ පැතිකඩ වෙනස් කරන්න
write:blocks: ගිණුම් සහ වසම් අවහිර කරන්න
- write:filters: පෙරහන් සාදන්න
+ write:bookmarks: පිටු සලකුණු සටහන්
+ write:conversations: සංවාද නිහඬ කිරීම සහ මකා දැමීම
+ write:favourites: ප්රියතම තනතුරු
+ write:filters: පෙරහන් කරන්න
+ write:follows: මිනිසුන් අනුගමනය කරන්න
+ write:lists: ලැයිස්තු සාදන්න
write:media: මාධ්ය ගොනු උඩුගත කරන්න
- write:mutes: මිනිසුන් සහ සංවාද නිහඬකරන්න
+ write:mutes: මිනිසුන් සහ සංවාද කරන්න
write:notifications: ඔබගේ දැනුම්දීම් හිස්කරන්න
- write:reports: වෙනත් මිනිසුන් වාර්තා කරන්න
+ write:reports: වෙනත් පුද්ගලයින් වාර්තා කරන්න
+ write:statuses: පළ කිරීම් පළ කරන්න
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index 5c1e1582f6..a0913dc92c 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -81,16 +81,25 @@ th:
errors:
messages:
access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ
+ credential_flow_not_configured: โฟลว์ข้อมูลประจำตัวรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_from_credentials
+ invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่มีการรับรองความถูกต้องไคลเอ็นต์ที่รวมอยู่ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ
+ invalid_grant: การให้การรับรองความถูกต้องที่ให้มาไม่ถูกต้อง หมดอายุแล้ว เพิกถอนแล้ว ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการรับรองความถูกต้อง หรือออกให้ไคลเอ็นต์อื่น
invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง
invalid_request:
missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}'
+ request_not_authorized: คำขอจำเป็นต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการอนุญาตคำขอขาดหายไปหรือไม่ถูกต้อง
+ unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือมิฉะนั้นผิดรูปแบบ
+ invalid_resource_owner: ข้อมูลประจำตัวเจ้าของทรัพยากรที่ให้มาไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร
invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ
invalid_token:
expired: โทเคนการเข้าถึงหมดอายุแล้ว
revoked: เพิกถอนโทเคนการเข้าถึงแล้ว
unknown: โทเคนการเข้าถึงไม่ถูกต้อง
resource_owner_authenticator_not_configured: การค้นหาเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_authenticator
+ server_error: เซิร์ฟเวอร์การรับรองความถูกต้องพบเงื่อนไขที่ไม่คาดคิดซึ่งป้องกันไม่ให้เซิร์ฟเวอร์ดำเนินการตามคำขอ
+ temporarily_unavailable: เซิร์ฟเวอร์การรับรองความถูกต้องไม่สามารถจัดการคำขอได้ในปัจจุบันเนื่องจากการทำงานเกินพิกัดชั่วคราวหรือการบำรุงรักษาเซิร์ฟเวอร์
unauthorized_client: ไคลเอ็นต์ไม่ได้รับอนุญาตให้ทำคำขอนี้โดยใช้วิธีการนี้
+ unsupported_grant_type: ชนิดการให้การรับรองความถูกต้องไม่รองรับโดยเซิร์ฟเวอร์การรับรองความถูกต้อง
unsupported_response_type: เซิร์ฟเวอร์การอนุญาตไม่รองรับชนิดการตอบสนองนี้
flash:
applications:
diff --git a/config/locales/doorkeeper.tr.yml b/config/locales/doorkeeper.tr.yml
index 351d271d06..51d0dff085 100644
--- a/config/locales/doorkeeper.tr.yml
+++ b/config/locales/doorkeeper.tr.yml
@@ -81,7 +81,7 @@ tr:
errors:
messages:
access_denied: Kaynak sahibi veya yetkilendirme sunucusu isteği reddetti.
- credential_flow_not_configured: Kaynak Sahibi Şifresi Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu.
+ credential_flow_not_configured: Kaynak Sahibi Parolası Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu.
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.
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 96ec15247a..7b23b5f9f9 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -26,7 +26,7 @@ el:
Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα.
learn_more: Μάθε περισσότερα
logout_before_registering: Είστε ήδη συνδεδεμένοι.
- privacy_policy: Πολιτική απορρήτου
+ privacy_policy: Πολιτική Απορρήτου
rules: Κανόνες διακομιστή
rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:'
see_whats_happening: Μάθε τι συμβαίνει
@@ -37,7 +37,6 @@ el:
other: δημοσιεύσεις
status_count_before: Που έγραψαν
tagline: Αποκεντρωμένο κοινωνικό δίκτυο
- terms: Όροι χρήσης
unavailable_content: Μη διαθέσιμο
unavailable_content_description:
domain: Διακομιστής
@@ -80,10 +79,8 @@ el:
posts_tab_heading: Τουτ
posts_with_replies: Τουτ και απαντήσεις
roles:
- admin: Διαχειριστής
bot: Μποτ (αυτόματος λογαριασμός)
group: Ομάδα
- moderator: Μεσολαβητής
unavailable: Το προφίλ δεν είναι διαθέσιμο
unfollow: Διακοπή παρακολούθησης
admin:
@@ -102,12 +99,15 @@ el:
avatar: Αβατάρ
by_domain: Τομέας
change_email:
- changed_msg: Επιτυχής αλλαγή email λογαριασμού!
current_email: Τρέχον email
label: Αλλαγή email
new_email: Νέο email
submit: Αλλαγή email
title: Αλλαγή email για %{username}
+ change_role:
+ label: Αλλαγή ρόλου
+ no_role: Κανένας ρόλος
+ title: Αλλαγή ρόλου για %{username}
confirm: Επιβεβαίωση
confirmed: Επιβεβαιώθηκε
confirming: Προς επιβεβαίωση
@@ -148,6 +148,7 @@ el:
active: Ενεργός/ή
all: Όλα
pending: Εκκρεμούν
+ silenced: Περιορισμένοι
suspended: Σε αναστολή
title: Μεσολάβηση
moderation_notes: Σημειώσεις μεσολάβησης
@@ -155,6 +156,7 @@ el:
most_recent_ip: Πιο πρόσφατη IP
no_account_selected: Κανείς λογαριασμός δεν ενημερώθηκε αφού κανείς δεν ήταν επιλεγμένος
no_limits_imposed: Χωρίς όρια
+ no_role_assigned: Δεν έχει ανατεθεί ρόλος
not_subscribed: Άνευ συνδρομής
pending: Εκκρεμεί έγκριση
perform_full_suspension: Αναστολή
@@ -177,12 +179,7 @@ el:
reset: Επαναφορά
reset_password: Επαναφορά συνθηματικού
resubscribe: Επανεγγραφή
- role: Δικαιώματα
- roles:
- admin: Διαχειριστής
- moderator: Συντονιστής
- staff: Προσωπικό
- user: Χρήστης
+ role: Ρόλος
search: Αναζήτηση
search_same_email_domain: Άλλοι χρήστες με τον ίδιο τομέα e-mail
search_same_ip: Υπόλοιποι χρήστες με την ίδια διεύθυνση IP
@@ -267,7 +264,6 @@ el:
destroy_instance_html: Ο/Η %{name} εκκαθάρισε τον τομέα %{target}
reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}"
unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}"
- deleted_status: "(διαγραμμένη δημοσίευση)"
empty: Δεν βρέθηκαν αρχεία καταγραφής.
filter_by_action: Φιλτράρισμα ανά ενέργεια
filter_by_user: Φιλτράρισμα ανά χρήστη
@@ -492,6 +488,16 @@ el:
unresolved: Άλυτη
updated_at: Ενημερωμένη
view_profile: Προβολή προφίλ
+ roles:
+ add_new: Προσθήκη ρόλου
+ assigned_users:
+ one: "%{count} χρήστης"
+ other: "%{count} χρήστες"
+ categories:
+ administration: Διαχείριση
+ devops: Devops
+ invites: Προσκλήσεις
+ delete: Διαγραφή
rules:
add_new: Προσθήκη κανόνα
delete: Διαγραφή
@@ -544,9 +550,6 @@ el:
deletion:
desc_html: Επέτρεψε σε οποιονδήποτε να διαγράψει το λογαριασμό του/της
title: Άνοιξε τη διαγραφή λογαριασμού
- min_invite_role:
- disabled: Κανείς
- title: Επέτρεψε προσκλήσεις από
registrations_mode:
modes:
approved: Απαιτείται έγκριση για εγγραφή
@@ -556,9 +559,6 @@ el:
show_known_fediverse_at_about_page:
desc_html: Όταν αντιστραφεί, θα δείχνει τα τουτ από όλο το γνωστό fediverse στην προεπισκόπηση. Διαφορετικά θα δείχνει μόνο τοπικά τουτ.
title: Εμφάνιση του γνωστού fediverse στην προεπισκόπηση ροής
- show_staff_badge:
- desc_html: Δείξε ένα σήμα προσωπικού στη σελίδα ενός χρήστη
- title: Δείξε διακριτικό προσωπικού
site_description:
desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα < a>
και < em>
.
title: Περιγραφή κόμβου
@@ -569,8 +569,8 @@ el:
desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα χρησιμοποιήσει την προκαθορισμένη περιγραφή του κόμβου.
title: Σύντομη περιγραφή του κόμβου
site_terms:
- desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags
- title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας
+ desc_html: Μπορείτε να γράψετε τη δική σας πολιτική απορρήτου. Μπορείτε να χρησιμοποιήσετε ετικέτες HTML
+ title: Προσαρμοσμένη πολιτική απορρήτου
site_title: Όνομα κόμβου
thumbnail:
desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px
@@ -579,9 +579,6 @@ el:
desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα
title: Προεπισκόπιση ροής
title: Ρυθμίσεις ιστότοπου
- trendable_by_default:
- desc_html: Επηρεάζει όσες ετικέτες δεν είχαν απαγορευτεί νωρίτερα
- title: Επέτρεψε στις ετικέτες να εμφανίζονται στις τάσεις χωρίς να χρειάζεται πρώτα έγκριση
trends:
desc_html: Δημόσια εμφάνιση ετικετών που έχουν ήδη εγκριθεί και είναι δημοφιλείς
title: Δημοφιλείς ετικέτες
@@ -820,15 +817,20 @@ el:
public: Δημόσιες ροές
thread: Συζητήσεις
edit:
+ add_keyword: Προσθήκη λέξης-κλειδιού
+ keywords: Λέξεις-κλειδιά
title: Ενημέρωση φίλτρου
errors:
invalid_context: Έδωσες λάθος ή ανύπαρκτο πλαίσιο
- invalid_irreversible: Τα μη αντιστρέψιμα φίλτρα δουλεύουν μόνο στα πλαίσια της αρχικής ροής και των ειδοποιήσεων
index:
+ contexts: Φίλτρα σε %{contexts}
delete: Διαγραφή
empty: Δεν έχεις φίλτρα.
+ expires_in: Λήγει σε %{distance}
+ expires_on: Λήγει στις %{date}
title: Φίλτρα
new:
+ save: Αποθήκευση νέου φίλτρου
title: Πρόσθεσε νέο φίλτρο
footer:
developers: Ανάπτυξη
@@ -935,19 +937,10 @@ el:
copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} υπέβαλε μια αναφορά"
sign_up:
subject: "%{name} έχει εγγραφεί"
- digest:
- action: Δες όλες τις ειδοποιήσεις
- body: Μια σύνοψη των μηνυμάτων που έχασες από την τελευταία επίσκεψή σου στις %{since}
- mention: 'Ο/Η %{name} σε ανέφερε στις:'
- new_followers_summary:
- one: Επίσης, απέκτησες έναν νέο ακόλουθο ενώ ήσουν μακριά!
- other: Επίσης, απέκτησες %{count} νέους ακόλουθους ενώ ήσουν μακριά! Εκπληκτικό!
- subject:
- one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου 🐘"
- other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου 🐘"
- title: Ενώ έλειπες...
favourite:
body: 'Η κατάστασή σου αγαπήθηκε από τον/την %{name}:'
subject: Ο/Η %{name} αγάπησε την κατάστασή σου
@@ -1158,7 +1151,7 @@ el:
tags:
does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα
terms:
- title: Όροι Χρήσης και Πολιτική Απορρήτου του κόμβου %{instance}
+ title: "%{instance} Πολιτική Απορρήτου"
themes:
contrast: Mastodon (Υψηλή αντίθεση)
default: Mastodon (Σκοτεινό)
diff --git a/config/locales/en.yml b/config/locales/en.yml
index beb07ac33d..34f069bb12 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -28,7 +28,7 @@ en:
learn_more: Learn more
logged_in_as_html: You are currently logged in as %{username}.
logout_before_registering: You are already logged in.
- privacy_policy: Privacy policy
+ 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
@@ -39,7 +39,6 @@ en:
other: posts
status_count_before: Who published
tagline: Decentralized social network
- terms: Terms of service
unavailable_content: Moderated servers
unavailable_content_description:
domain: Server
@@ -83,10 +82,8 @@ en:
posts_tab_heading: Posts
posts_with_replies: Posts and replies
roles:
- admin: Admin
bot: Bot
group: Group
- moderator: Mod
unavailable: Profile unavailable
unfollow: Unfollow
admin:
@@ -105,12 +102,17 @@ en:
avatar: Avatar
by_domain: Domain
change_email:
- changed_msg: Account email successfully changed!
+ changed_msg: Email successfully changed!
current_email: Current email
label: Change email
new_email: New email
submit: Change email
title: Change email for %{username}
+ change_role:
+ changed_msg: Role successfully changed!
+ label: Change role
+ no_role: No role
+ title: Change role for %{username}
confirm: Confirm
confirmed: Confirmed
confirming: Confirming
@@ -154,6 +156,7 @@ en:
active: Active
all: All
pending: Pending
+ silenced: Limited
suspended: Suspended
title: Moderation
moderation_notes: Moderation notes
@@ -161,6 +164,7 @@ en:
most_recent_ip: Most recent IP
no_account_selected: No accounts were changed as none were selected
no_limits_imposed: No limits imposed
+ no_role_assigned: No role assigned
not_subscribed: Not subscribed
pending: Pending review
perform_full_suspension: Suspend
@@ -187,12 +191,7 @@ en:
reset: Reset
reset_password: Reset password
resubscribe: Resubscribe
- role: Permissions
- roles:
- admin: Administrator
- moderator: Moderator
- staff: Staff
- user: User
+ role: Role
search: Search
search_same_email_domain: Other users with the same e-mail domain
search_same_ip: Other users with the same IP
@@ -235,17 +234,21 @@ en:
approve_user: Approve User
assigned_to_self_report: Assign Report
change_email_user: Change E-mail for User
+ change_role_user: Change Role of User
confirm_user: Confirm User
create_account_warning: Create Warning
create_announcement: Create Announcement
+ create_canonical_email_block: Create E-mail Block
create_custom_emoji: Create Custom Emoji
create_domain_allow: Create Domain Allow
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
+ create_user_role: Create Role
demote_user: Demote User
destroy_announcement: Delete Announcement
+ destroy_canonical_email_block: Delete E-mail Block
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
@@ -254,6 +257,7 @@ en:
destroy_ip_block: Delete IP rule
destroy_status: Delete Post
destroy_unavailable_domain: Delete Unavailable Domain
+ destroy_user_role: Destroy Role
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
disable_sign_in_token_auth_user: Disable E-mail Token Authentication for User
@@ -280,24 +284,30 @@ en:
update_announcement: Update Announcement
update_custom_emoji: Update Custom Emoji
update_domain_block: Update Domain Block
+ update_ip_block: Update IP rule
update_status: Update Post
+ update_user_role: Update Role
actions:
approve_appeal_html: "%{name} approved moderation decision appeal from %{target}"
approve_user_html: "%{name} approved sign-up from %{target}"
assigned_to_self_report_html: "%{name} assigned report %{target} to themselves"
change_email_user_html: "%{name} changed the e-mail address of user %{target}"
+ change_role_user_html: "%{name} changed role of %{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_canonical_email_block_html: "%{name} blocked e-mail with the hash %{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}"
+ create_user_role_html: "%{name} created %{target} role"
demote_user_html: "%{name} demoted user %{target}"
destroy_announcement_html: "%{name} deleted announcement %{target}"
- destroy_custom_emoji_html: "%{name} destroyed emoji %{target}"
+ destroy_canonical_email_block_html: "%{name} unblocked e-mail with the hash %{target}"
+ destroy_custom_emoji_html: "%{name} deleted 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}"
@@ -305,6 +315,7 @@ en:
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}"
+ destroy_user_role_html: "%{name} deleted %{target} role"
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}"
@@ -331,8 +342,9 @@ en:
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_ip_block_html: "%{name} changed rule for IP %{target}"
update_status_html: "%{name} updated post by %{target}"
- deleted_status: "(deleted post)"
+ update_user_role_html: "%{name} changed %{target} role"
empty: No logs found.
filter_by_action: Filter by action
filter_by_user: Filter by user
@@ -649,6 +661,67 @@ en:
unresolved: Unresolved
updated_at: Updated
view_profile: View profile
+ roles:
+ add_new: Add role
+ assigned_users:
+ one: "%{count} user"
+ other: "%{count} users"
+ categories:
+ administration: Administration
+ devops: Devops
+ invites: Invites
+ moderation: Moderation
+ special: Special
+ delete: Delete
+ description_html: With user roles, you can customize which functions and areas of Mastodon your users can access.
+ edit: Edit '%{name}' role
+ everyone: Default permissions
+ everyone_full_description_html: This is the base role affecting all users, even those without an assigned role. All other roles inherit permissions from it.
+ permissions_count:
+ one: "%{count} permission"
+ other: "%{count} permissions"
+ privileges:
+ administrator: Administrator
+ administrator_description: Users with this permission will bypass every permission
+ delete_user_data: Delete User Data
+ delete_user_data_description: Allows users to delete other users' data without delay
+ invite_users: Invite Users
+ invite_users_description: Allows users to invite new people to the server
+ manage_announcements: Manage Announcements
+ manage_announcements_description: Allows users to manage announcements on the server
+ manage_appeals: Manage Appeals
+ manage_appeals_description: Allows users to review appeals against moderation actions
+ manage_blocks: Manage Blocks
+ manage_blocks_description: Allows users to block e-mail providers and IP addresses
+ manage_custom_emojis: Manage Custom Emojis
+ manage_custom_emojis_description: Allows users to manage custom emojis on the server
+ manage_federation: Manage Federation
+ manage_federation_description: Allows users to block or allow federation with other domains, and control deliverability
+ manage_invites: Manage Invites
+ manage_invites_description: Allows users to browse and deactivate invite links
+ manage_reports: Manage Reports
+ manage_reports_description: Allows users to review reports and perform moderation actions against them
+ manage_roles: Manage Roles
+ manage_roles_description: Allows users to manage and assign roles below theirs
+ manage_rules: Manage Rules
+ manage_rules_description: Allows users to change server rules
+ manage_settings: Manage Settings
+ manage_settings_description: Allows users to change site settings
+ manage_taxonomies: Manage Taxonomies
+ manage_taxonomies_description: Allows users to review trending content and update hashtag settings
+ manage_user_access: Manage User Access
+ manage_user_access_description: Allows users to disable other users' two-factor authentication, change their e-mail address, and reset their password
+ manage_users: Manage Users
+ manage_users_description: Allows users to view other users' details and perform moderation actions against them
+ manage_webhooks: Manage Webhooks
+ manage_webhooks_description: Allows users to set up webhooks for administrative events
+ view_audit_log: View Audit Log
+ view_audit_log_description: Allows users to see a history of administrative actions on the server
+ view_dashboard: View Dashboard
+ view_dashboard_description: Allows users to access the dashboard and various metrics
+ view_devops: Devops
+ view_devops_description: Allows users to access Sidekiq and pgHero dashboards
+ title: Roles
rules:
add_new: Add rule
delete: Delete
@@ -701,9 +774,6 @@ en:
deletion:
desc_html: Allow anyone to delete their account
title: Open account deletion
- min_invite_role:
- disabled: No one
- title: Allow invitations by
require_invite_text:
desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional
title: Require new users to enter a reason to join
@@ -716,9 +786,6 @@ en:
show_known_fediverse_at_about_page:
desc_html: When disabled, restricts the public timeline linked from the landing page to showing only local content
title: Include federated content on unauthenticated public timeline page
- show_staff_badge:
- desc_html: Show a staff badge on a user page
- title: Show staff badge
site_description:
desc_html: Introductory paragraph on the API. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a>
and <em>
.
title: Server description
@@ -729,8 +796,8 @@ en:
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph.
title: Short server description
site_terms:
- 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
+ desc_html: You can write your own privacy policy. You can use HTML tags
+ title: Custom privacy policy
site_title: Server name
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
@@ -1126,6 +1193,8 @@ en:
edit:
add_keyword: Add keyword
keywords: Keywords
+ statuses: Individual posts
+ statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. Review or remove posts from the filter.
title: Edit filter
errors:
deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface.
@@ -1139,10 +1208,23 @@ en:
keywords:
one: "%{count} keyword"
other: "%{count} keywords"
+ statuses:
+ one: "%{count} post"
+ other: "%{count} posts"
+ statuses_long:
+ one: "%{count} individual post hidden"
+ other: "%{count} individual posts hidden"
title: Filters
new:
save: Save new filter
title: Add new filter
+ statuses:
+ back_to_filter: Back to filter
+ batch:
+ remove: Remove from filter
+ index:
+ hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface.
+ title: Filtered posts
footer:
developers: Developers
more: More…
@@ -1150,12 +1232,22 @@ en:
trending_now: Trending now
generic:
all: All
+ all_items_on_page_selected_html:
+ one: "%{count} item on this page is selected."
+ other: All %{count} items on this page are selected.
+ all_matching_items_selected_html:
+ one: "%{count} item matching your search is selected."
+ other: All %{count} items matching your search are selected.
changes_saved_msg: Changes successfully saved!
copy: Copy
delete: Delete
+ deselect: Deselect all
none: None
order_by: Order by
save_changes: Save changes
+ select_all_matching_items:
+ one: Select %{count} item matching your search.
+ other: Select all %{count} items matching your search.
today: today
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -1264,17 +1356,6 @@ en:
subject: "%{name} submitted a report"
sign_up:
subject: "%{name} signed up"
- digest:
- action: View all notifications
- body: Here is a brief summary of the messages you missed since your last visit on %{since}
- mention: "%{name} mentioned you in:"
- new_followers_summary:
- one: Also, you have acquired one new follower while being away! Yay!
- other: Also, you have acquired %{count} new followers while being away! Amazing!
- subject:
- one: "1 new notification since your last visit 🐘"
- other: "%{count} new notifications since your last visit 🐘"
- title: In your absence...
favourite:
body: 'Your post was favourited by %{name}:'
subject: "%{name} favourited your post"
@@ -1643,7 +1724,7 @@ en:
This document is CC-BY-SA. It was last updated May 26, 2022.
Originally adapted from the Discourse privacy policy.
- title: "%{instance} Terms of Service and Privacy Policy"
+ title: "%{instance} Privacy Policy"
themes:
contrast: Mastodon (High contrast)
default: Mastodon (Dark)
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 9e1eaaffa8..c8a7534acc 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -2,19 +2,19 @@
eo:
about:
about_hashtag_html: Ĉi tiuj estas la publikaj mesaĝoj markitaj per #%{hashtag}. Vi povas interagi kun ili se vi havas konton ie ajn en la fediverse.
- about_mastodon_html: Mastodon estas socia reto bazita sur malfermitaj retaj protokoloj kaj sur libera malfermitkoda programo. Ĝi estas sencentra kiel retmesaĝoj.
+ about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!'
about_this: Pri
- active_count_after: aktiva
+ active_count_after: aktivaj
active_footnote: Monate Aktivaj Uzantoj (MAU)
administered_by: 'Administrata de:'
api: API
apps: Poŝtelefonaj aplikaĵoj
- apps_platforms: Uzu Mastodon ĉe iOS, Android kaj aliajn platformojn
- browse_directory: Esplori profilujo kaj filtri per interesoj
+ apps_platforms: Uzu Mastodon de iOS, Android, kaj aliaj substratoj
+ browse_directory: Esplori la profilujon kaj filtri en interesoj
browse_local_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon
browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon
- contact: Kontakti
- contact_missing: Ne elektita
+ contact: Kontakto
+ contact_missing: Ne ŝargita
contact_unavailable: Ne disponebla
continue_to_web: Daŭrigi al la retaplikaĵo
discover_users: Malkovri uzantojn
@@ -22,28 +22,31 @@ eo:
federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter.
get_apps: Provu telefonan aplikaĵon
hosted_on: "%{domain} estas nodo de Mastodon"
- instance_actor_flash: 'Ĉi tiu konto estas virtuala aganto uzata por reprezenti la servilon mem kaj neniun individuan uzanton. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno.
+ instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo, kaj devas ne esti brokita, krom se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno.
'
learn_more: Lerni pli
+ logged_in_as_html: Vi nun salutis kiel %{username}.
logout_before_registering: Vi jam salutis.
- privacy_policy: Privateca politiko
rules: Reguloj de la servilo
see_whats_happening: Vidi kio okazas
- server_stats: Servo statuso
+ server_stats: 'Statistikoj de la servilo:'
source_code: Fontkodo
status_count_after:
one: mesaĝo
other: mesaĝoj
status_count_before: Kie skribiĝis
- terms: Uzkondiĉoj
+ tagline: Malcentrigita socia retejo
unavailable_content: Moderigitaj serviloj
unavailable_content_description:
domain: Servilo
- reason: 'Kialo:'
+ reason: Motivo
+ rejecting_media: 'La aŭdovidaj dosieroj de ĉi tiuj serviloj ne estos prilaboritaj aŭ stokitaj, kaj neniu bildeto estos montrita, do necesas klaki permane por vidi la originalan afiŝon:'
rejecting_media_title: Filtritaj aŭdovidaĵoj
- silenced_title: Silentigitaj serviloj
- suspended_title: Haltigitaj serviloj
+ silenced: 'La mesaĝoj de tiuj serviloj estos kaŝitaj de publikaj templinio kaj konversacioj, kaj la interagoj de la uzantoj donas neniun sciigon, ĝis vi sekvos ilin:'
+ silenced_title: Limigitaj serviloj
+ suspended: 'Neniu datumo de ĉi tiuj serviloj estos prilaboritaj, stokitaj, aŭ interŝanĝitaj, neeble fari interagon aŭ komunikon kun la uzantoj de ĉi tiuj serviloj:'
+ suspended_title: Suspenditaj serviloj
user_count_after:
one: uzanto
other: uzantoj
@@ -56,6 +59,7 @@ eo:
one: Sekvanto
other: Sekvantoj
following: Sekvatoj
+ instance_actor_flash: Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti suspendita.
joined: Aliĝis je %{date}
last_active: laste aktiva
link_verified_on: Proprieto de ĉi tiu ligilo estis kontrolita je %{date}
@@ -73,10 +77,8 @@ eo:
posts_tab_heading: Mesaĝoj
posts_with_replies: Mesaĝoj kaj respondoj
roles:
- admin: Administranto
bot: Roboto
group: Grupo
- moderator: Kontrolanto
unavailable: Profilo ne disponebla
unfollow: Ne plu sekvi
admin:
@@ -91,10 +93,9 @@ eo:
add_email_domain_block: Bloki retadresan domajnon
approve: Aprobi
are_you_sure: Ĉu vi certas?
- avatar: Profilbildo
+ avatar: Rolfiguro
by_domain: Domajno
change_email:
- changed_msg: Konta retadreso sukcese ŝanĝita!
current_email: Nuna retadreso
label: Ŝanĝi retadreson
new_email: Nova retadreso
@@ -107,9 +108,9 @@ eo:
delete: Forigi datumojn
deleted: Forigita
demote: Degradi
- disable: Malebligi
- disable_two_factor_authentication: Malebligi 2FA
- disabled: Malebligita
+ disable: Frostigi
+ disable_two_factor_authentication: Malaktivigi 2FA-n
+ disabled: Frostigita
display_name: Montrata nomo
domain: Domajno
edit: Redakti
@@ -131,14 +132,14 @@ eo:
remote: Foraj
title: Loko
login_status: Ensaluta stato
- media_attachments: Ligitaj aŭdovidaĵoj
+ media_attachments: Aŭdovidaj aldonaĵoj
memorialize: Ŝanĝi al memoro
memorialized: Memorita
moderation:
active: Aktiva
all: Ĉio
pending: Pritraktata
- suspended: Haltigita
+ suspended: Suspendita
title: Moderigado
moderation_notes: Notoj de moderigado
most_recent_activity: Lasta ago
@@ -154,8 +155,9 @@ eo:
push_subscription_expires: Eksvalidiĝo de la abono al PuSH
redownload: Aktualigi profilon
reject: Malakcepti
- remove_avatar: Forigi profilbildon
+ remove_avatar: Forigi la rolfiguron
remove_header: Forigi kapan bildon
+ removed_avatar_msg: La bildo de la rolfiguro de %{username} estas sukcese forigita
resend_confirmation:
already_confirmed: Ĉi tiu uzanto jam estas konfirmita
send: Resendi konfirman retmesaĝon
@@ -163,12 +165,6 @@ eo:
reset: Restarigi
reset_password: Restarigi pasvorton
resubscribe: Reaboni
- role: Permesoj
- roles:
- admin: Administranto
- moderator: Moderigisto
- 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
@@ -179,14 +175,15 @@ eo:
sensitized: markita tikla
shared_inbox_url: URL de kunhavigita leterkesto
show:
- created_reports: Kreitaj raportoj
+ created_reports: Faritaj raportoj
targeted_reports: Raporitaj de alia
- silence: Kaŝi
+ silence: Mutigita
silenced: Silentigita
statuses: Mesaĝoj
subscribe: Aboni
suspend: Haltigu
- suspended: Haltigita
+ suspended: Suspendita
+ suspension_reversible_hint_html: La konto estas suspendita, kaj la datumoj estos komplete forgitaj en la %{date}. Ĝis tiam, la konto povas esti restaŭrita sen malutila efiko. Se vi deziras tuj forigi ĉiujn datumojn de la konto, vi povas fari ĉi-sube.
title: Kontoj
unblock_email: Malbloki retpoŝtadresojn
unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username}
@@ -195,6 +192,7 @@ eo:
undo_silenced: Malfari kaŝon
undo_suspension: Malfari haltigon
unsubscribe: Malaboni
+ unsuspended_msg: La konto de %{username} estas sukcese reaktivigita
username: Uzantnomo
view_domain: Vidi la resumon de la domajno
warn: Averti
@@ -206,7 +204,7 @@ eo:
assigned_to_self_report: Atribui Raporton
change_email_user: Ŝanĝi retadreson de uzanto
confirm_user: Konfermi uzanto
- create_account_warning: Krei Averton
+ create_account_warning: Krei averton
create_announcement: Krei Anoncon
create_custom_emoji: Krei Propran emoĝion
create_domain_allow: Krei Domajnan Permeson
@@ -222,15 +220,16 @@ eo:
destroy_ip_block: Forigi IP-regulon
destroy_status: Forigi mesaĝon
destroy_unavailable_domain: Forigi Nehaveblan Domajnon
- disable_2fa_user: Malebligi 2FA
- disable_custom_emoji: Malebligi Propran Emoĝion
- disable_user: Malebligi uzanton
+ disable_2fa_user: Malaktivigi 2FA-n
+ disable_custom_emoji: Malaktivigi la proprajn emoĝiojn
+ disable_user: Malaktivigi la uzanton
enable_custom_emoji: Ebligi Propran Emoĝion
+ enable_sign_in_token_auth_user: Aktivigi la aŭtentigon de peco per retpoŝto por la uzanto
enable_user: Ebligi uzanton
memorialize_account: Memorigu Konton
promote_user: Promocii Uzanton
reject_user: Malakcepti Uzanton
- remove_avatar_user: Forigi profilbildon
+ remove_avatar_user: Forigi la rolfiguron
reopen_report: Remalfermi signalon
reset_password_user: Restarigi pasvorton
resolve_report: Solvitaj reporto
@@ -260,24 +259,24 @@ eo:
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}"
+ disable_2fa_user_html: "%{name} malaktivigis la postulon de la dufaktora aŭtentigo por la uzanto %{target}"
+ disable_custom_emoji_html: "%{name} neebligis la emoĝion %{target}"
+ disable_user_html: "%{name} neebligis la saluton de la 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}"
reject_user_html: "%{name} malakceptis registriĝon de %{target}"
- remove_avatar_user_html: "%{name} forigis profilbildon de %{target}"
+ remove_avatar_user_html: "%{name} forigis la rolfiguron de %{target}"
reopen_report_html: "%{name} remalfermis signalon %{target}"
+ suspend_account_html: "%{name} suspendis la konton de %{target}"
+ unsuspend_account_html: "%{name} reaktivigis la konton de %{target}"
update_announcement_html: "%{name} ĝisdatigis anoncon %{target}"
- deleted_status: "(forigita mesaĝo)"
empty: Neniu protokolo trovita.
filter_by_action: Filtri per ago
filter_by_user: Filtri per uzanto
@@ -309,9 +308,9 @@ eo:
created_msg: Emoĝio sukcese kreita!
delete: Forigi
destroyed_msg: Emoĝio sukcese forigita!
- disable: Malebligi
- disabled: Malebligita
- disabled_msg: Emoĝio sukcese malebligita
+ disable: Neebligi
+ disabled: Neebligita
+ disabled_msg: La emoĝio sukcese neebligita
emoji: Emoĝio
enable: Ebligi
enabled: Ebligita
@@ -334,7 +333,7 @@ eo:
dashboard:
active_users: aktivaj uzantoj
interactions: interago
- media_storage: Aŭdvidaĵa memorilo
+ media_storage: Memorilo de aŭdovidaĵoj
new_users: novaj uzantoj
opened_reports: raportoj malfermitaj
resolved_reports: raportoj solvitaj
@@ -361,13 +360,13 @@ eo:
severity:
desc_html: "Kaŝi igos la mesaĝojn de la konto nevideblaj al tiuj, kiuj ne sekvas tiun. Haltigi forigos ĉiujn enhavojn, aŭdovidaĵojn kaj datumojn de la konto. Uzu Nenio se vi simple volas malakcepti aŭdovidaĵojn."
noop: Nenio
- silence: Kaŝi
+ silence: Mutigi
suspend: Haltigi
title: Nova domajna blokado
obfuscate: Malklara domajna nomo
private_comment: Privata komento
public_comment: Publika komento
- reject_media: Malakcepti aŭdovidajn dosierojn
+ reject_media: Malakcepti la aŭdovidajn dosierojn
reject_media_hint: Forigas aŭdovidaĵojn loke konservitajn kaj rifuzas alŝuti ajnan estonte. Ne koncernas haltigojn
reject_reports: Malakcepti signalojn
reject_reports_hint: Ignori ĉiujn signalojn el tiu domajno. Ne koncernas haltigojn
@@ -398,6 +397,7 @@ eo:
by_domain: Domajno
content_policies:
policies:
+ reject_media: Malakcepti la aŭdovidaĵojn
reject_reports: Malakcepti raportojn
silence: Kaŝu
policy: Politiko
@@ -406,10 +406,12 @@ eo:
instance_accounts_measure: konservitaj kontoj
instance_followers_measure: niaj sekvantoj tie
instance_follows_measure: iliaj sekvantoj ĉi tie
+ instance_media_attachments_measure: stokitaj aŭdovidaj aldonaĵoj
instance_reports_measure: raportoj pri ili
instance_statuses_measure: konservitaj afiŝoj
delivery:
all: Ĉiuj
+ unavailable: Nedisponebla
delivery_available: Liverado disponeblas
empty: Neniuj domajnoj trovitaj.
moderation:
@@ -454,11 +456,11 @@ eo:
add_new: Aldoni novan ripetilon
delete: Forigi
description_html: "Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj."
- disable: Malebligi
- disabled: Malebligita
+ disable: Neebligi
+ disabled: Neebligita
enable: Ebligi
enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi.
- enabled: Malebligita
+ enabled: Ebligita
inbox_url: URL de la ripetilo
pending: Atendante aprobon de la ripetilo
save_and_enable: Konservi kaj ebligi
@@ -475,6 +477,8 @@ eo:
one: "%{count} noto"
other: "%{count} notoj"
action_taken_by: Ago farita de
+ actions:
+ other_description_html: Vidu pli da elektebloj por kontroli la agadon de la konto kaj personecigi la komunikadon kun la konto pri kiu raporto.
add_to_report: Aldoni pli al raporto
are_you_sure: Ĉu vi certas?
assign_to_self: Asigni al mi
@@ -512,6 +516,10 @@ eo:
unresolved: Nesolvitaj
updated_at: Ĝisdatigita
view_profile: Vidi profilon
+ roles:
+ everyone: Implicitaj permesoj
+ privileges:
+ delete_user_data: Forviŝi la datumojn de la uzanto
rules:
add_new: Aldoni regulon
delete: Forigi
@@ -547,7 +555,7 @@ eo:
desc_html: Nomoj de domajnoj, kiujn ĉi tiu servilo renkontis en la federauniverso
title: Publikigi liston de malkovritaj serviloj
preview_sensitive_media:
- desc_html: Antaŭvido de ligiloj en aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla
+ desc_html: La antaŭmontroj de ligilo al la aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla
title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph
profile_directory:
desc_html: Permesi al uzantoj esti troveblaj
@@ -559,21 +567,15 @@ eo:
deletion:
desc_html: Permesi al iu ajn forigi propran konton
title: Permesi forigi konton
- min_invite_role:
- disabled: Neniu
- title: Permesi invitojn de
registrations_mode:
modes:
approved: Bezonas aprobi por aliĝi
none: Neniu povas aliĝi
open: Iu povas aliĝi
- title: Registrado modo
+ title: Reĝimo de registriĝo
show_known_fediverse_at_about_page:
desc_html: Kiam ŝaltita, ĝi montros mesaĝojn de la tuta konata fediverse antaŭvide. Aliokaze, ĝi montros nur lokajn mesaĝojn.
- title: Montri konatan fediverse en tempolinia antaŭvido
- show_staff_badge:
- desc_html: Montri teaman insignon en paĝo de uzanto
- title: Montri teaman insignon
+ title: Inkluzivi frataran enhavon en la neaŭtentigita publika antaŭmontro de templinio
site_description:
desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel <a>
kaj <em>
.
title: Priskribo de la servilo
@@ -583,16 +585,13 @@ eo:
site_short_description:
desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la servilo estos uzata.
title: Mallonga priskribo de la servilo
- site_terms:
- 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
thumbnail:
desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita
title: Bildeto de la servilo
timeline_preview:
desc_html: Montri publikan templinion en komenca paĝo
- title: Tempolinia antaŭvido
+ title: Permesi la neaŭtentigitan aliron al la publika templinio
title: Retejaj agordoj
trends:
desc_html: Publike montri antaŭe kontrolitajn kradvortojn, kiuj nune furoras
@@ -614,7 +613,8 @@ eo:
strikes:
actions:
delete_statuses: "%{name} forigis afiŝojn de %{target}"
- disable: "%{name} malebligis la konton de %{target}"
+ disable: "%{name} frostigis la konton de %{target}"
+ suspend: "%{name} suspendis la konton de %{target}"
appeal_approved: Apelaciita
system_checks:
database_schema_check:
@@ -639,6 +639,9 @@ eo:
allow_account: Permesi aŭtoron
disallow: Malpermesi afiŝon
disallow_account: Malpermesi aŭtoron
+ shared_by:
+ one: Kundividita kaj aldonita al preferaĵoj unufoje
+ other: Kundividita kaj aldonita al preferaĵoj %{friendly_count}-foje
title: Tendencantaj afiŝoj
tags:
dashboard:
@@ -649,13 +652,13 @@ eo:
title: Tendencoj
warning_presets:
add_new: Aldoni novan
- delete: Forigi
- edit_preset: Redakti avertan antaŭagordon
+ delete: Forviŝi
+ edit_preset: Redakti la antaŭagordojn de averto
title: Administri avertajn antaŭagordojn
admin_mailer:
new_appeal:
actions:
- disable: por malebligi ties konton
+ disable: por frostigi ties konton
new_pending_account:
body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo.
subject: Nova konto atendas por recenzo en %{instance} (%{username})
@@ -710,6 +713,7 @@ eo:
description:
prefix_invited_by_user: "@%{name} invitigi vin aligiĝi ĉi tiu servilo de Mastodon!"
prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ!
+ suffix: Kun konto, vi povos sekvi aliajn homojn, skribi afiŝojn kaj interŝanĝi mesaĝojn kun la uzantoj de iu ajn Mastodon'a servilo kaj multe pli!
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?
@@ -727,7 +731,7 @@ eo:
register: Registriĝi
registration_closed: "%{instance} ne estas akcepti nova uzantojn"
resend_confirmation: Resendi la instrukciojn por konfirmi
- reset_password: Ŝanĝi pasvorton
+ reset_password: Restarigi pasvorton
security: Sekureco
set_new_password: Elekti novan pasvorton
setup:
@@ -759,7 +763,7 @@ eo:
invalid_signature: 올바른 Ed25519 시그니처가 아닙니다
date:
formats:
- default: "%Y-%m-%d "
+ default: "%Y-%b-%d"
with_month_name: "%e-a de %B %Y"
datetime:
distance_in_words:
@@ -846,15 +850,23 @@ eo:
public: Publika templinio
thread: Konversacioj
edit:
+ add_keyword: Aldoni ĉefvorton
+ keywords: Ĉefvortoj
title: Ŝanĝi filtrilojn
errors:
invalid_context: Neniu aŭ nevalida kunteksto donita
- invalid_irreversible: Nemalfarebla filtrado funkcias nur por hejma aŭ sciiga kuntekstoj
index:
+ contexts: Filtriloj en %{contexts}
delete: Forigi
empty: Vi havas neniun filtrilon.
+ expires_in: Eksvalidiĝi en %{distance}
+ expires_on: Eksvalidiĝi je %{date}
+ keywords:
+ one: "%{count} ĉefvorto"
+ other: "%{count} ĉefvortoj"
title: Filtriloj
new:
+ save: Konservi novan filtrilon
title: Aldoni novan filtrilon
footer:
developers: Programistoj
@@ -908,7 +920,7 @@ eo:
one: 1 uzo
other: "%{count} uzoj"
max_uses_prompt: Neniu limo
- prompt: Krei kaj diskonigi ligilojn al aliaj por doni aliron al ĉi tiu servilo
+ prompt: Generi kaj kundividi ligilojn kun aliaj personoj por doni aliron al ĉi tiu servilo
table:
expires_at: Eksvalidiĝas je
uses: Uzoj
@@ -950,17 +962,6 @@ eo:
moderation:
title: Moderigado
notification_mailer:
- digest:
- action: Vidi ĉiujn sciigojn
- body: Jen eta resumo de la mesaĝoj, kiujn vi mistrafis ekde via lasta vizito en %{since}
- mention: "%{name} menciis vin en:"
- new_followers_summary:
- one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej!
- other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde!
- subject:
- one: "1 nova sciigo ekde via lasta vizito 🐘"
- other: "%{count} novaj sciigoj ekde via lasta vizito 🐘"
- title: En via foresto…
favourite:
body: "%{name} stelumis vian mesaĝon:"
subject: "%{name} stelumis vian mesaĝon"
@@ -980,9 +981,9 @@ eo:
subject: "%{name} menciis vin"
title: Nova mencio
reblog:
- body: "%{name} diskonigis vian mesaĝon:"
- subject: "%{name} diskonigis vian mesaĝon"
- title: Nova diskonigo
+ body: 'Via mesaĝo estas suprenigita de %{name}:'
+ subject: "%{name} suprenigis vian mesaĝon"
+ title: Nova suprenigo
status:
subject: "%{name} ĵus afiŝita"
update:
@@ -1010,9 +1011,9 @@ eo:
wrong_code: La enmetita kodo estis nevalida! Ĉu la servila tempo kaj la aparata tempo ĝustas?
pagination:
newer: Pli nova
- next: Sekva
+ next: Antaŭen
older: Malpli nova
- prev: Antaŭa
+ prev: Malantaŭen
truncate: "…"
polls:
errors:
@@ -1027,7 +1028,7 @@ eo:
too_many_options: ne povas enhavi pli da %{max} proponoj
preferences:
other: Aliaj aferoj
- posting_defaults: Afiŝadoj defaŭltoj
+ posting_defaults: Implicitaj agordoj de afiŝado
public_timelines: Publikaj templinioj
reactions:
errors:
@@ -1060,13 +1061,15 @@ eo:
remote_interaction:
favourite:
proceed: Konfirmi la stelumon
- prompt: 'Vi volas stelumi ĉi tiun mesaĝon:'
+ prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:'
reblog:
- proceed: Konfirmi la diskonigon
- prompt: 'Vi volas diskonigi ĉi tiun mesaĝon:'
+ proceed: Procedi pri la suprenigo
+ prompt: 'Vi deziras suprenigi ĉi tiun mesaĝon:'
reply:
proceed: Konfirmi la respondon
prompt: 'Vi volas respondi al ĉi tiu mesaĝo:'
+ rss:
+ content_warning: 'Averto pri enhavo:'
scheduled_statuses:
over_daily_limit: Vi transpasis la limigon al %{limit} samtage planitaj mesaĝoj
over_total_limit: Vi transpasis la limigon al %{limit} planitaj mesaĝoj
@@ -1105,7 +1108,7 @@ eo:
ios: iOS
linux: Linux
mac: Mac
- other: nekonata platformo
+ other: nekonata substrato
windows: Windows
windows_mobile: Windows Mobile
windows_phone: Windows Phone
@@ -1125,7 +1128,7 @@ eo:
export: Eksporti datumojn
featured_tags: Elstarigitaj kradvortoj
import: Importi
- import_and_export: Alporto kaj elporto
+ import_and_export: Enporti kaj elporti
migrate: Konta migrado
notifications: Sciigoj
preferences: Preferoj
@@ -1145,8 +1148,9 @@ eo:
video:
one: "%{count} video"
other: "%{count} videoj"
- boosted_from_html: Diskonigita de %{acct_link}
- content_warning: 'Enhava averto: %{warning}'
+ boosted_from_html: Suprenigita de %{acct_link}
+ content_warning: 'Averto de la enhavo: %{warning}'
+ default_language: Same kiel lingvo de la fasado
disallowed_hashtags:
one: 'enhavas malpermesitan kradvorton: %{tags}'
other: 'enhavis malpermesitan kradvorton: %{tags}'
@@ -1155,7 +1159,7 @@ eo:
pin_errors:
limit: Vi jam atingis la maksimuman nombron de alpinglitaj mesaĝoj
ownership: Mesaĝo de iu alia ne povas esti alpinglita
- reblog: Diskonigo ne povas esti alpinglita
+ reblog: Suprenigo ne povas esti alpinglita
poll:
total_people:
one: "%{count} persono"
@@ -1181,10 +1185,13 @@ eo:
statuses_cleanup:
enabled: Aŭtomate forigi malnovajn postojn
exceptions: Esceptoj
- ignore_favs: Ignori ŝatatajn
- ignore_reblogs: Ignori akcelojn
+ ignore_favs: Ignori la preferaĵojn
+ ignore_reblogs: Ignori la suprenigojn
keep_direct: Konservi rektajn mesaĝojn
keep_direct_hint: Ne forigos viajn rektajn mesagôjn
+ keep_media: Konservi la mesaĝojn kun aŭdovidaj aldonaĵoj
+ keep_media_hint: Ne forviŝi la mesaĝojn kiuj enhavas aŭdovidajn aldonaĵojn
+ keep_self_fav_hint: Ne forviŝi viajn proprajn afiŝojn, se vi aldonis ilin al viaj preferaĵoj
min_age:
'1209600': 2 semajnoj
'15778476': 6 monatoj
@@ -1196,25 +1203,23 @@ eo:
'7889238': 3 monatoj
stream_entries:
pinned: Alpinglita
- reblogged: diskonigita
+ reblogged: suprenigita
sensitive_content: Tikla enhavo
tags:
does_not_match_previous_name: ne kongruas kun la antaŭa nomo
- terms:
- title: Uzkondiĉoj kaj privateca politiko de %{instance}
themes:
contrast: Mastodon (Forta kontrasto)
default: Mastodon (Malluma)
mastodon-light: Mastodon (Luma)
time:
formats:
- default: "%Y-%m-%d %H:%M"
+ default: "%Y.%b.%d, %H:%M"
month: "%b %Y"
time: "%H:%M"
two_factor_authentication:
add: Aldoni
- disable: Malebligi
- disabled_success: Dufaktora aŭtentigo sukcese malebligita
+ disable: Malaktivigi 2FA-n
+ disabled_success: Du-faktora aŭtentigo sukcese malaktivigita
edit: Redakti
enabled: Dufaktora aŭtentigo ebligita
enabled_success: Dufaktora aŭtentigo sukcese ebligita
@@ -1238,15 +1243,15 @@ eo:
disable: Via konto %{acct} estas frostigita
none: Averto por %{acct}
silence: Via konto %{acct} estas limigita
- suspend: Via konto %{acct} estas haltigita
+ suspend: Via konto %{acct} estas suspendita
title:
disable: Konto frostigita
none: Averto
silence: Konto limigita
- suspend: Konto haltigita
+ suspend: Konto suspendita
welcome:
edit_profile_action: Agordi profilon
- edit_profile_step: Vi povas proprigi vian profilon per alŝuto de profilbildo, fonbildo, ŝanĝo de via afiŝita nomo kaj pli. Se vi ŝatus kontroli novajn sekvantojn antaŭ ol ili rajtas sekvi vin, vi povas ŝlosi vian konton.
+ edit_profile_step: Vi povas personecigi vian profilon en alŝuto de rolfiguro, paĝokapa bildo, en ŝanĝo de via vidiga nomo kaj pli. Se vi volas ekzameni novajn sekvantojn antaŭ ol permesi al ili aboni vin, vi povas agordi vian konton kiel privata.
explanation: Jen kelkaj konsiloj por helpi vin komenci
final_action: Ekmesaĝi
final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka templinio kaj en la kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions.'
@@ -1255,9 +1260,9 @@ eo:
review_preferences_action: Ŝanĝi preferojn
review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj.
subject: Bonvenon en Mastodon
- tip_federated_timeline: La federata templinio estas rekta vido de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn via najbaroj abonas, do ĝi ne estas kompleta.
+ tip_federated_timeline: La fratara templinio estas rekta montro de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn viaj najbaroj abonas, do ĝi ne estas kompleta.
tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran templiniojn.
- tip_local_timeline: La loka templinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj!
+ tip_local_timeline: La loka templinio estas rekta montro de personoj ĉe %{instance}. Ĉi tiuj estas viaj senperaj najbaroj!
tip_mobile_webapp: Se via telefona retumilo proponas al vi aldoni Mastodon al via hejma ekrano, vi povas ricevi puŝsciigojn. Tio multmaniere funkcias kiel operaciuma aplikaĵo!
tips: Konsiloj
title: Bonvenon, %{name}!
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 79ae68bf45..469ca27d9c 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -39,7 +39,6 @@ es-AR:
other: mensajes
status_count_before: Que enviaron
tagline: Red social descentralizada
- terms: Términos del servicio
unavailable_content: Servidores moderados
unavailable_content_description:
domain: Servidor
@@ -83,10 +82,8 @@ es-AR:
posts_tab_heading: Mensajes
posts_with_replies: Mensajes y respuestas
roles:
- admin: Administrador
bot: Bot
group: Grupo
- moderator: Moderador
unavailable: Perfil no disponible
unfollow: Dejar de seguir
admin:
@@ -105,12 +102,17 @@ es-AR:
avatar: Avatar
by_domain: Dominio
change_email:
- changed_msg: "¡Correo electrónico de cuenta cambiado exitosamente!"
+ changed_msg: "¡Correo electrónico cambiado exitosamente!"
current_email: Correo electrónico actual
label: Cambiar correo electrónico
new_email: Nuevo correo electrónico
submit: Cambiar correo electrónico
title: Cambiar correo electrónico para %{username}
+ change_role:
+ changed_msg: "¡Rol cambiado exitosamente!"
+ label: Cambiar rol
+ no_role: Sin rol
+ title: Cambiar rol para %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmación
@@ -154,6 +156,7 @@ es-AR:
active: Activas
all: Todas
pending: Pendientes
+ silenced: Limitada
suspended: Suspendidas
title: Moderación
moderation_notes: Notas de moderación
@@ -161,6 +164,7 @@ es-AR:
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
+ no_role_assigned: Sin rol asignado
not_subscribed: No suscripto
pending: Revisión pendiente
perform_full_suspension: Suspender
@@ -187,12 +191,7 @@ es-AR:
reset: Restablecer
reset_password: Cambiar contraseña
resubscribe: Resuscribir
- role: Permisos
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Administración
- user: Usuario
+ role: Rol
search: Buscar
search_same_email_domain: Otros usuarios con el mismo dominio de correo electrónico
search_same_ip: Otros usuarios con la misma dirección IP
@@ -235,17 +234,21 @@ es-AR:
approve_user: Aprobar usuario
assigned_to_self_report: Asignar denuncia
change_email_user: Cambiar correo electrónico del usuario
+ change_role_user: Cambiar rol del usuario
confirm_user: Confirmar usuario
create_account_warning: Crear advertencia
create_announcement: Crear anuncio
+ create_canonical_email_block: Crear bloqueo de correo electrónico
create_custom_emoji: Crear emoji personalizado
create_domain_allow: Crear permiso de dominio
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
+ create_user_role: Crear rol
demote_user: Descender usuario
destroy_announcement: Eliminar anuncio
+ destroy_canonical_email_block: Eliminar bloqueo de correo electrónico
destroy_custom_emoji: Eliminar emoji personalizado
destroy_domain_allow: Eliminar permiso de dominio
destroy_domain_block: Eliminar bloqueo de dominio
@@ -254,6 +257,7 @@ es-AR:
destroy_ip_block: Eliminar regla de dirección IP
destroy_status: Eliminar mensaje
destroy_unavailable_domain: Eliminar dominio no disponible
+ destroy_user_role: Destruir rol
disable_2fa_user: Deshabilitar 2FA
disable_custom_emoji: Deshabilitar emoji personalizado
disable_sign_in_token_auth_user: Deshabilitar autenticación de token por correo electrónico para el usuario
@@ -280,24 +284,30 @@ es-AR:
update_announcement: Actualizar anuncio
update_custom_emoji: Actualizar emoji personalizado
update_domain_block: Actualizar bloque de dominio
+ update_ip_block: Actualizar regla de dirección IP
update_status: Actualizar mensaje
+ update_user_role: Actualizar rol
actions:
approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}"
approve_user_html: "%{name} aprobó el registro de %{target}"
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}"
+ change_role_user_html: "%{name} cambió el rol de %{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_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{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}"
+ create_user_role_html: "%{name} creó el rol %{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_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}"
+ destroy_custom_emoji_html: "%{name} eliminó 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}"
@@ -305,6 +315,7 @@ es-AR:
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}"
+ destroy_user_role_html: "%{name} eliminó el rol %{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_sign_in_token_auth_user_html: "%{name} deshabilitó la autenticación de token por correo electrónico para %{target}"
@@ -331,8 +342,9 @@ es-AR:
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_ip_block_html: "%{name} cambió la regla para la dirección IP %{target}"
update_status_html: "%{name} actualizó el mensaje de %{target}"
- deleted_status: "[mensaje eliminado]"
+ update_user_role_html: "%{name} cambió el rol %{target}"
empty: No se encontraron registros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuario
@@ -649,6 +661,67 @@ es-AR:
unresolved: No resueltas
updated_at: Actualizadas
view_profile: Ver perfil
+ roles:
+ add_new: Agregar rol
+ assigned_users:
+ one: "%{count} usuario"
+ other: "%{count} usuarios"
+ categories:
+ administration: Administración
+ devops: Operadores de desarrollo
+ invites: Invitaciones
+ moderation: Moderación
+ special: Especial
+ delete: Eliminar
+ description_html: Con roles de usuario, podés personalizar las funciones y áreas de Mastodon a las que pueden acceder tus usuarios.
+ edit: Editar rol de «%{name}»
+ everyone: Permisos predeterminados
+ everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él.
+ permissions_count:
+ one: "%{count} permiso"
+ other: "%{count} permisos"
+ privileges:
+ administrator: Administrador
+ administrator_description: Los usuarios con este permiso saltarán todos los permisos
+ delete_user_data: Eliminar datos del usuario
+ delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora
+ invite_users: Invitar usuarios
+ invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor
+ manage_announcements: Administrar anuncios
+ manage_announcements_description: Permite a los usuarios administrar anuncios en el servidor
+ manage_appeals: Administrar apelaciones
+ manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación
+ manage_blocks: Administrar bloqueos
+ manage_blocks_description: Permite a los usuarios bloquear proveedores de correo electrónico y direcciones IP
+ manage_custom_emojis: Administrar emojis personalizados
+ manage_custom_emojis_description: Permite a los usuarios administrar emojis personalizados en el servidor
+ manage_federation: Administrar Federación
+ manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios y controlar las entregas
+ manage_invites: Administrar invitaciones
+ manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación
+ manage_reports: Administrar denuncias
+ manage_reports_description: Permite a los usuarios revisar denuncias y realizar acciones de moderación contra ellas
+ manage_roles: Administrar roles
+ manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos
+ manage_rules: Administrar reglas
+ manage_rules_description: Permite a los usuarios cambiar las reglas del servidor
+ manage_settings: Administrar configuración
+ manage_settings_description: Permite a los usuarios cambiar la configuración del sitio
+ manage_taxonomies: Administrar taxonomías
+ manage_taxonomies_description: Permite a los usuarios revisar el contenido de tendencia y actualizar la configuración de las etiquetas
+ manage_user_access: Administrar acceso de usuario
+ manage_user_access_description: Permite a los usuarios deshabilitar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña
+ manage_users: Administrar usuarios
+ manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos
+ manage_webhooks: Administrar Webhooks
+ manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos
+ view_audit_log: Ver auditoría
+ view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor
+ view_dashboard: Ver panel
+ view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas
+ view_devops: Operadores de desarrollo
+ view_devops_description: Permite a los usuarios acceder a los paneles de Sidekiq y pgHero
+ title: Roles
rules:
add_new: Agregar regla
delete: Eliminar
@@ -701,9 +774,6 @@ es-AR:
deletion:
desc_html: Permitir que cualquiera elimine su cuenta
title: Abrir eliminación de cuenta
- min_invite_role:
- disabled: Nadie
- title: Permitir invitaciones de
require_invite_text:
desc_html: Cuando los registros requieran aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional
title: Requerir que los nuevos usuarios llenen un texto de solicitud de invitación
@@ -716,9 +786,6 @@ es-AR:
show_known_fediverse_at_about_page:
desc_html: Cuando está deshabilitado, restringe la línea temporal pública enlazada desde la página de inicio para mostrar sólo contenido local
title: Incluir contenido federado en la página de línea temporal pública no autenticada
- show_staff_badge:
- desc_html: Mostrar una insignia de administración en la página de un usuario
- title: Mostrar insignia de administración
site_description:
desc_html: Párrafo introductorio en la API. Describe qué hace especial a este servidor de Mastodon y todo lo demás que sea importante. Podés usar etiquetas HTML, en particular <a>
y <em>
.
title: Descripción del servidor
@@ -729,8 +796,8 @@ es-AR:
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 del servicio u otras cuestiones legales. Podés usar etiquetas HTML
- title: Términos del servicio personalizados
+ desc_html: Podés escribir tu propia política de privacidad. Podés usar etiquetas HTML
+ title: Política de privacidad personalizada
site_title: Nombre del servidor
thumbnail:
desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles
@@ -740,8 +807,8 @@ es-AR:
title: Permitir acceso no autorizado a la línea temporal pública
title: Configuración del sitio
trendable_by_default:
- desc_html: Afecta a etiquetas que no fueron rechazadas previamente
- title: Permitir que las etiquetas sean tendencia sin revisión previa
+ desc_html: El contenido de tendencias específicas todavía puede ser explícitamente desactivado
+ title: Permitir tendencias sin revisión previa
trends:
desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente
title: Tendencias
@@ -1124,16 +1191,40 @@ es-AR:
public: Líneas temporales públicas
thread: Conversaciones
edit:
+ add_keyword: Agregar palabra clave
+ keywords: Palabras clave
+ statuses: Mensajes individuales
+ statuses_hint_html: Este filtro se aplica a la selección de mensajes individuales, independientemente de si coinciden con las palabras clave a continuación. Revisar o quitar mensajes del filtro.
title: Editar filtro
errors:
+ deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web.
invalid_context: Se suministró un contexto no válido o vacío
- invalid_irreversible: El filtrado irreversible sólo funciona con los contextos de "Principal" o de "Notificaciones"
index:
+ contexts: Filtros en %{contexts}
delete: Eliminar
empty: No tenés filtros.
+ expires_in: Caduca en %{distance}
+ expires_on: Caduca en %{date}
+ keywords:
+ one: "%{count} palabra clave"
+ other: "%{count} palabras clave"
+ statuses:
+ one: "%{count} mensaje"
+ other: "%{count} mensajes"
+ statuses_long:
+ one: "%{count} mensaje individual oculto"
+ other: "%{count} mensajes individuales ocultos"
title: Filtros
new:
+ save: Guardar nuevo filtro
title: Agregar nuevo filtro
+ statuses:
+ back_to_filter: Volver al filtro
+ batch:
+ remove: Quitar del filtro
+ index:
+ hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web.
+ title: Mensajes filtrados
footer:
developers: Desarrolladores
more: Más…
@@ -1141,12 +1232,22 @@ es-AR:
trending_now: Tendencia ahora
generic:
all: Todas
+ all_items_on_page_selected_html:
+ one: "%{count} elemento en esta página está seleccionado."
+ other: Todos los %{count} elementos en esta página están seleccionados.
+ all_matching_items_selected_html:
+ one: "%{count} elemento que coincide con tu búsqueda está seleccionado."
+ other: Todos los %{count} elementos que coinciden con tu búsqueda están seleccionados.
changes_saved_msg: "¡Cambios guardados exitosamente!"
copy: Copiar
delete: Eliminar
+ deselect: Deseleccionar todo
none: "[Ninguna]"
order_by: Ordenar por
save_changes: Guardar cambios
+ select_all_matching_items:
+ one: Seleccionar %{count} elemento que coincide con tu búsqueda.
+ other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda.
today: hoy
validation_errors:
one: "¡Falta algo! Por favor, revisá el error abajo"
@@ -1251,19 +1352,10 @@ es-AR:
copy_account_note_text: 'Este usuario se mudó desde %{acct}, acá están tus notas previas sobre él/ella:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} envió una denuncia"
sign_up:
subject: Se registró %{name}
- digest:
- action: Ver todas las notificaciones
- body: Acá tenés un resumen de los mensajes que te perdiste desde tu última visita, el %{since}
- mention: "%{name} te mencionó en:"
- new_followers_summary:
- one: Además, ¡ganaste un nuevo seguidor mientras estabas ausente! ¡Esa!
- other: Además, ¡ganaste %{count} nuevos seguidores mientras estabas ausente! ¡Esssa!
- subject:
- one: "1 nueva notificación desde tu última visita 🐘"
- other: "%{count} nuevas notificaciones desde tu última visita 🐘"
- title: En tu ausencia...
favourite:
body: 'Tu mensaje fue marcado como favorito por %{name}:'
subject: "%{name} marcó tu mensaje como favorito"
@@ -1626,7 +1718,7 @@ es-AR:
Este documento se publica bajo la licencia CC-BY-SA (Creative Commons - Atribución - CompartirIgual) y fue actualizado por última vez el 26 de mayo de 2022.
Originalmente adaptado de la Política de privacidad de Discourse.
- title: Términos del servicio y Políticas de privacidad de %{instance}
+ title: Política de privacidad de %{instance}
themes:
contrast: Alto contraste
default: Oscuro
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index f57fb96015..05cfccf443 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -28,7 +28,7 @@ es-MX:
learn_more: Aprende más
logged_in_as_html: Actualmente estás conectado como %{username}.
logout_before_registering: Actualmente ya has iniciado sesión.
- privacy_policy: Política de privacidad
+ 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
@@ -39,7 +39,6 @@ es-MX:
other: estados
status_count_before: Qué han escrito
tagline: Red social descentralizada
- terms: Condiciones de servicio
unavailable_content: Contenido no disponible
unavailable_content_description:
domain: Servidor
@@ -83,10 +82,8 @@ es-MX:
posts_tab_heading: Toots
posts_with_replies: Toots con respuestas
roles:
- admin: Administrador
bot: Bot
group: Grupo
- moderator: Moderador
unavailable: Perfil no disponible
unfollow: Dejar de seguir
admin:
@@ -105,12 +102,17 @@ es-MX:
avatar: Foto de perfil
by_domain: Dominio
change_email:
- changed_msg: "¡El correo electrónico se ha actualizado correctamente!"
+ changed_msg: "¡Email cambiado con éxito!"
current_email: Correo electrónico actual
label: Cambiar el correo electrónico
new_email: Nuevo correo electrónico
submit: Cambiar el correo electrónico
title: Cambiar el correo electrónico de %{username}
+ change_role:
+ changed_msg: "¡Rol cambiado con éxito!"
+ label: Cambiar rol
+ no_role: Sin rol
+ title: Cambiar rol para %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmando
@@ -154,6 +156,7 @@ es-MX:
active: Activo
all: Todos
pending: Pendiente
+ silenced: Limitado
suspended: Suspendidos
title: Moderación
moderation_notes: Notas de moderación
@@ -161,6 +164,7 @@ es-MX:
most_recent_ip: IP más reciente
no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada
no_limits_imposed: Sin límites impuestos
+ no_role_assigned: Ningún rol asignado
not_subscribed: No se está suscrito
pending: Revisión pendiente
perform_full_suspension: Suspender
@@ -187,12 +191,7 @@ es-MX:
reset: Reiniciar
reset_password: Reiniciar contraseña
resubscribe: Re-suscribir
- role: Permisos
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Personal
- user: Usuario
+ role: Rol
search: Buscar
search_same_email_domain: Otros usuarios con el mismo dominio de correo
search_same_ip: Otros usuarios con la misma IP
@@ -235,17 +234,21 @@ es-MX:
approve_user: Aprobar Usuario
assigned_to_self_report: Asignar Reporte
change_email_user: Cambiar Correo Electrónico del Usuario
+ change_role_user: Cambiar Rol de Usuario
confirm_user: Confirmar Usuario
create_account_warning: Crear Advertencia
create_announcement: Crear Anuncio
+ create_canonical_email_block: Crear Bloqueo de Correo Electrónico
create_custom_emoji: Crear Emoji Personalizado
create_domain_allow: Crear Permiso de Dominio
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
+ create_user_role: Crear Rol
demote_user: Degradar Usuario
destroy_announcement: Eliminar Anuncio
+ destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico
destroy_custom_emoji: Eliminar Emoji Personalizado
destroy_domain_allow: Eliminar Permiso de Dominio
destroy_domain_block: Eliminar Bloqueo de Dominio
@@ -254,6 +257,7 @@ es-MX:
destroy_ip_block: Eliminar regla IP
destroy_status: Eliminar Estado
destroy_unavailable_domain: Eliminar Dominio No Disponible
+ destroy_user_role: Destruir Rol
disable_2fa_user: Deshabilitar 2FA
disable_custom_emoji: Deshabilitar Emoji Personalizado
disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario
@@ -280,24 +284,30 @@ es-MX:
update_announcement: Actualizar Anuncio
update_custom_emoji: Actualizar Emoji Personalizado
update_domain_block: Actualizar el Bloqueo de Dominio
+ update_ip_block: Actualizar regla IP
update_status: Actualizar Estado
+ update_user_role: Actualizar Rol
actions:
approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}"
approve_user_html: "%{name} aprobó el registro 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}"
+ change_role_user_html: "%{name} cambió el rol de %{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_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{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}"
+ create_user_role_html: "%{name} creó el rol %{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_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}"
+ destroy_custom_emoji_html: "%{name} eliminó el 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}"
@@ -305,6 +315,7 @@ es-MX:
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}"
+ destroy_user_role_html: "%{name} eliminó el rol %{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_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}"
@@ -331,8 +342,9 @@ es-MX:
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_ip_block_html: "%{name} cambió la regla para la IP %{target}"
update_status_html: "%{name} actualizó el estado de %{target}"
- deleted_status: "(estado borrado)"
+ update_user_role_html: "%{name} cambió el rol %{target}"
empty: No se encontraron registros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuario
@@ -649,6 +661,67 @@ es-MX:
unresolved: No resuelto
updated_at: Actualizado
view_profile: Ver perfil
+ roles:
+ add_new: Añadir rol
+ assigned_users:
+ one: "%{count} usuario"
+ other: "%{count} usuarios"
+ categories:
+ administration: Administración
+ devops: DevOps
+ invites: Invitaciones
+ moderation: Moderación
+ special: Especial
+ delete: Eliminar
+ description_html: Con roles de usuario, puede personalizar las funciones y áreas de Mastodon a las que pueden acceder sus usuarios.
+ edit: Editar rol '%{name}'
+ everyone: Permisos por defecto
+ everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él.
+ permissions_count:
+ one: "%{count} permiso"
+ other: "%{count} permisos"
+ privileges:
+ administrator: Administrador
+ administrator_description: Los usuarios con este permiso saltarán todos los permisos
+ delete_user_data: Borrar Datos de Usuario
+ delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora
+ invite_users: Invitar usuarios
+ invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor
+ manage_announcements: Administrar Anuncios
+ manage_announcements_description: Permite a los usuarios gestionar anuncios en el servidor
+ manage_appeals: Administrar Apelaciones
+ manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación
+ manage_blocks: Administrar Bloqueos
+ manage_blocks_description: Permite a los usuarios bloquear los proveedores de e-mail y las direcciones IP
+ manage_custom_emojis: Administrar Emojis Personalizados
+ manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
+ manage_federation: Administrar Federación
+ manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
+ manage_invites: Administrar Invitaciones
+ manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación
+ manage_reports: Administrar Informes
+ manage_reports_description: Permite a los usuarios revisar informes y realizar acciones de moderación basadas en ellos
+ manage_roles: Administrar Roles
+ manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos
+ manage_rules: Gestionar Reglas
+ manage_rules_description: Permite a los usuarios cambiar las reglas del servidor
+ manage_settings: Administrar Ajustes
+ manage_settings_description: Permite a los usuarios cambiar la configuración del sitio
+ manage_taxonomies: Administrar Taxonomías
+ manage_taxonomies_description: Permite a los usuarios revisar el contenido en tendencia y actualizar la configuración de las etiquetas
+ manage_user_access: Administrar Acceso de Usuarios
+ manage_user_access_description: Permite a los usuarios desactivar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña
+ manage_users: Administrar Usuarios
+ manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos
+ manage_webhooks: Administrar Webhooks
+ manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos
+ view_audit_log: Ver Registro de Auditoría
+ view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor
+ view_dashboard: Ver Panel de Control
+ view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas
+ view_devops: DevOps
+ view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero
+ title: Roles
rules:
add_new: Añadir norma
delete: Eliminar
@@ -701,9 +774,6 @@ es-MX:
deletion:
desc_html: Permite a cualquiera a eliminar su cuenta
title: Eliminación de cuenta abierta
- min_invite_role:
- disabled: Nadie
- title: Permitir invitaciones de
require_invite_text:
desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional
title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación
@@ -716,9 +786,6 @@ es-MX:
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.
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
- title: Mostrar parche de staff
site_description:
desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a>
y <em>
.
title: Descripción de instancia
@@ -729,8 +796,8 @@ es-MX:
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
+ desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML
+ title: Política de privacidad personalizada
site_title: Nombre de instancia
thumbnail:
desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px
@@ -740,8 +807,8 @@ es-MX:
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
+ desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado
+ title: Permitir tendencias sin revisión previa
trends:
desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia
title: Hashtags de tendencia
@@ -852,6 +919,26 @@ es-MX:
edit_preset: Editar aviso predeterminado
empty: Aún no has definido ningún preajuste de advertencia.
title: Editar configuración predeterminada de avisos
+ webhooks:
+ add_new: Añadir endpoint
+ delete: Eliminar
+ description_html: Un webhook permite a Mastodon enviar notificaciones en tiempo real sobre los eventos elegidos a tu propia aplicación, para que tu aplicación pueda lanzar reacciones automáticamente.
+ disable: Deshabilitar
+ disabled: Deshabilitado
+ edit: Editar endpoint
+ empty: Aún no tienes ningún endpoint de webhook configurado.
+ enable: Habilitar
+ enabled: Activo
+ enabled_events:
+ one: 1 evento habilitado
+ other: "%{count} eventos habilitados"
+ events: Eventos
+ new: Nuevo webhook
+ rotate_secret: Rotar secreto
+ secret: Firmando secreto
+ status: Estado
+ title: Webhooks
+ webhook: Webhook
admin_mailer:
new_appeal:
actions:
@@ -1104,16 +1191,40 @@ es-MX:
public: Timeline público
thread: Conversaciones
edit:
+ add_keyword: Añadir palabra clave
+ keywords: Palabras clave
+ statuses: Publicaciones individuales
+ statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro.
title: Editar filtro
errors:
+ deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web.
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:
+ contexts: Filtros en %{contexts}
delete: Borrar
empty: No tienes filtros.
+ expires_in: Caduca en %{distance}
+ expires_on: Expira el %{date}
+ keywords:
+ one: "%{count} palabra clave"
+ other: "%{count} palabras clave"
+ statuses:
+ one: "%{count} publicación"
+ other: "%{count} publicaciones"
+ statuses_long:
+ one: "%{count} publicación individual oculta"
+ other: "%{count} publicaciones individuales ocultas"
title: Filtros
new:
+ save: Guardar nuevo filtro
title: Añadir un nuevo filtro
+ statuses:
+ back_to_filter: Volver a filtrar
+ batch:
+ remove: Eliminar del filtro
+ index:
+ hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web.
+ title: Publicaciones filtradas
footer:
developers: Desarrolladores
more: Mas…
@@ -1121,12 +1232,22 @@ es-MX:
trending_now: Tendencia ahora
generic:
all: Todos
+ all_items_on_page_selected_html:
+ one: "%{count} elemento en esta página está seleccionado."
+ other: Todos los %{count} elementos en esta página están seleccionados.
+ all_matching_items_selected_html:
+ one: "%{count} elemento que coincide con su búsqueda está seleccionado."
+ other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados.
changes_saved_msg: "¡Cambios guardados con éxito!"
copy: Copiar
delete: Eliminar
+ deselect: Deseleccionar todo
none: Nada
order_by: Ordenar por
save_changes: Guardar cambios
+ select_all_matching_items:
+ one: Seleccionar %{count} elemento que coincide con tu búsqueda.
+ other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda.
today: hoy
validation_errors:
one: "¡Algo no está bien! Por favor, revisa el error"
@@ -1231,19 +1352,10 @@ es-MX:
copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} envió un informe"
sign_up:
subject: "%{name} se registró"
- 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 🐘"
- other: "%{count} nuevas notificaciones desde tu última visita 🐘"
- title: En tu ausencia…
favourite:
body: 'Tu estado fue marcado como favorito por %{name}:'
subject: "%{name} marcó como favorito tu estado"
@@ -1573,7 +1685,7 @@ es-MX:
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 26 de mayo de 2022.
Adaptado originalmente desde la política de privacidad de Discourse.
- title: Términos del Servicio y Políticas de Privacidad de %{instance}
+ title: Política de Privacidad de %{instance}
themes:
contrast: Alto contraste
default: Mastodon
@@ -1616,7 +1728,7 @@ es-MX:
change_password: cambies tu contraseña
details: 'Aquí están los detalles del inicio de sesión:'
explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP.
- further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura.
+ further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura.
subject: Tu cuenta ha sido accedida desde una nueva dirección IP
title: Un nuevo inicio de sesión
warning:
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 96d985f530..874f0cc492 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -28,7 +28,7 @@ es:
learn_more: Aprende más
logged_in_as_html: Actualmente has iniciado sesión como %{username}.
logout_before_registering: Ya has iniciado sesión.
- privacy_policy: Política de privacidad
+ 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
@@ -39,7 +39,6 @@ es:
other: estados
status_count_before: Qué han escrito
tagline: Red social descentralizada
- terms: Condiciones de servicio
unavailable_content: Contenido no disponible
unavailable_content_description:
domain: Servidor
@@ -83,10 +82,8 @@ es:
posts_tab_heading: Publicaciones
posts_with_replies: Publicaciones y respuestas
roles:
- admin: Administrador
bot: Bot
group: Grupo
- moderator: Moderador
unavailable: Perfil no disponible
unfollow: Dejar de seguir
admin:
@@ -105,12 +102,17 @@ es:
avatar: Avatar
by_domain: Dominio
change_email:
- changed_msg: "¡El correo electrónico se ha actualizado correctamente!"
+ changed_msg: "¡Email cambiado con éxito!"
current_email: Correo electrónico actual
label: Cambiar el correo electrónico
new_email: Nuevo correo electrónico
submit: Cambiar el correo electrónico
title: Cambiar el correo electrónico de %{username}
+ change_role:
+ changed_msg: "¡Rol cambiado con éxito!"
+ label: Cambiar rol
+ no_role: Sin rol
+ title: Cambiar rol para %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmando
@@ -154,6 +156,7 @@ es:
active: Activo
all: Todos
pending: Pendiente
+ silenced: Limitado
suspended: Suspendidos
title: Moderación
moderation_notes: Notas de moderación
@@ -161,6 +164,7 @@ es:
most_recent_ip: IP más reciente
no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada
no_limits_imposed: Sin límites impuestos
+ no_role_assigned: Ningún rol asignado
not_subscribed: No se está suscrito
pending: Revisión pendiente
perform_full_suspension: Suspender
@@ -187,12 +191,7 @@ es:
reset: Reiniciar
reset_password: Reiniciar contraseña
resubscribe: Re-suscribir
- role: Permisos
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Personal
- user: Usuario
+ role: Rol
search: Buscar
search_same_email_domain: Otros usuarios con el mismo dominio de correo
search_same_ip: Otros usuarios con la misma IP
@@ -235,17 +234,21 @@ es:
approve_user: Aprobar Usuario
assigned_to_self_report: Asignar Reporte
change_email_user: Cambiar Correo Electrónico del Usuario
+ change_role_user: Cambiar Rol de Usuario
confirm_user: Confirmar Usuario
create_account_warning: Crear Advertencia
create_announcement: Crear Anuncio
+ create_canonical_email_block: Crear Bloqueo de Correo Electrónico
create_custom_emoji: Crear Emoji Personalizado
create_domain_allow: Crear Permiso de Dominio
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
+ create_user_role: Crear Rol
demote_user: Degradar Usuario
destroy_announcement: Eliminar Anuncio
+ destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico
destroy_custom_emoji: Eliminar Emoji Personalizado
destroy_domain_allow: Eliminar Permiso de Dominio
destroy_domain_block: Eliminar Bloqueo de Dominio
@@ -254,6 +257,7 @@ es:
destroy_ip_block: Eliminar regla IP
destroy_status: Eliminar Estado
destroy_unavailable_domain: Eliminar Dominio No Disponible
+ destroy_user_role: Destruir Rol
disable_2fa_user: Deshabilitar 2FA
disable_custom_emoji: Deshabilitar Emoji Personalizado
disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario
@@ -280,24 +284,30 @@ es:
update_announcement: Actualizar Anuncio
update_custom_emoji: Actualizar Emoji Personalizado
update_domain_block: Actualizar el Bloqueo de Dominio
+ update_ip_block: Actualizar regla IP
update_status: Actualizar Estado
+ update_user_role: Actualizar Rol
actions:
approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}"
approve_user_html: "%{name} aprobó el registro 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}"
+ change_role_user_html: "%{name} cambió el rol de %{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_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{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}"
+ create_user_role_html: "%{name} creó el rol %{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_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}"
+ destroy_custom_emoji_html: "%{name} eliminó el 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}"
@@ -305,6 +315,7 @@ es:
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}"
+ destroy_user_role_html: "%{name} eliminó el rol %{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_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}"
@@ -331,8 +342,9 @@ es:
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_ip_block_html: "%{name} cambió la regla para la IP %{target}"
update_status_html: "%{name} actualizó el estado de %{target}"
- deleted_status: "(estado borrado)"
+ update_user_role_html: "%{name} cambió el rol %{target}"
empty: No se encontraron registros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuario
@@ -649,6 +661,67 @@ es:
unresolved: No resuelto
updated_at: Actualizado
view_profile: Ver perfil
+ roles:
+ add_new: Añadir rol
+ assigned_users:
+ one: "%{count} usuario"
+ other: "%{count} usuarios"
+ categories:
+ administration: Administración
+ devops: DevOps
+ invites: Invitaciones
+ moderation: Moderación
+ special: Especial
+ delete: Eliminar
+ description_html: Con roles de usuario, puede personalizar las funciones y áreas de Mastodon a las que pueden acceder sus usuarios.
+ edit: Editar rol '%{name}'
+ everyone: Permisos por defecto
+ everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él.
+ permissions_count:
+ one: "%{count} permiso"
+ other: "%{count} permisos"
+ privileges:
+ administrator: Administrador
+ administrator_description: Los usuarios con este permiso saltarán todos los permisos
+ delete_user_data: Borrar Datos de Usuario
+ delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora
+ invite_users: Invitar usuarios
+ invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor
+ manage_announcements: Administrar Anuncios
+ manage_announcements_description: Permite a los usuarios gestionar anuncios en el servidor
+ manage_appeals: Administrar Apelaciones
+ manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación
+ manage_blocks: Administrar Bloqueos
+ manage_blocks_description: Permite a los usuarios bloquear los proveedores de e-mail y las direcciones IP
+ manage_custom_emojis: Administrar Emojis Personalizados
+ manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor
+ manage_federation: Administrar Federación
+ manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad
+ manage_invites: Administrar Invitaciones
+ manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación
+ manage_reports: Administrar Informes
+ manage_reports_description: Permite a los usuarios revisar informes y realizar acciones de moderación basadas en ellos
+ manage_roles: Administrar Roles
+ manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos
+ manage_rules: Gestionar Reglas
+ manage_rules_description: Permite a los usuarios cambiar las reglas del servidor
+ manage_settings: Administrar Ajustes
+ manage_settings_description: Permite a los usuarios cambiar la configuración del sitio
+ manage_taxonomies: Administrar Taxonomías
+ manage_taxonomies_description: Permite a los usuarios revisar el contenido en tendencia y actualizar la configuración de las etiquetas
+ manage_user_access: Administrar Acceso de Usuarios
+ manage_user_access_description: Permite a los usuarios desactivar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña
+ manage_users: Administrar Usuarios
+ manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos
+ manage_webhooks: Administrar Webhooks
+ manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos
+ view_audit_log: Ver Registro de Auditoría
+ view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor
+ view_dashboard: Ver Panel de Control
+ view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas
+ view_devops: DevOps
+ view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero
+ title: Roles
rules:
add_new: Añadir norma
delete: Eliminar
@@ -701,9 +774,6 @@ es:
deletion:
desc_html: Permite a cualquiera a eliminar su cuenta
title: Eliminación de cuenta abierta
- min_invite_role:
- disabled: Nadie
- title: Permitir invitaciones de
require_invite_text:
desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional
title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación
@@ -716,9 +786,6 @@ es:
show_known_fediverse_at_about_page:
desc_html: Cuando esté desactivado, se mostrarán solamente publicaciones locales en la línea temporal pública
title: Incluye contenido federado en la página de línea de tiempo pública no autenticada
- show_staff_badge:
- desc_html: Mostrar un parche de staff en la página de un usuario
- title: Mostrar parche de staff
site_description:
desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a>
y <em>
.
title: Descripción de instancia
@@ -729,8 +796,8 @@ es:
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
+ desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML
+ title: Política de privacidad personalizada
site_title: Nombre de instancia
thumbnail:
desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px
@@ -740,8 +807,8 @@ es:
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
+ desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado
+ title: Permitir tendencias sin revisión previa
trends:
desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia
title: Hashtags de tendencia
@@ -1124,16 +1191,40 @@ es:
public: Líneas de tiempo públicas
thread: Conversaciones
edit:
+ add_keyword: Añadir palabra clave
+ keywords: Palabras clave
+ statuses: Publicaciones individuales
+ statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro.
title: Editar filtro
errors:
+ deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web.
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:
+ contexts: Filtros en %{contexts}
delete: Borrar
empty: No tienes filtros.
+ expires_in: Caduca en %{distance}
+ expires_on: Expira el %{date}
+ keywords:
+ one: "%{count} palabra clave"
+ other: "%{count} palabras clave"
+ statuses:
+ one: "%{count} publicación"
+ other: "%{count} publicaciones"
+ statuses_long:
+ one: "%{count} publicación individual oculta"
+ other: "%{count} publicaciones individuales ocultas"
title: Filtros
new:
+ save: Guardar nuevo filtro
title: Añadir nuevo filtro
+ statuses:
+ back_to_filter: Volver a filtrar
+ batch:
+ remove: Eliminar del filtro
+ index:
+ hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web.
+ title: Publicaciones filtradas
footer:
developers: Desarrolladores
more: Mas…
@@ -1141,12 +1232,22 @@ es:
trending_now: Tendencia ahora
generic:
all: Todos
+ all_items_on_page_selected_html:
+ one: "%{count} elemento en esta página está seleccionado."
+ other: Todos los %{count} elementos en esta página están seleccionados.
+ all_matching_items_selected_html:
+ one: "%{count} elemento que coincide con su búsqueda está seleccionado."
+ other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados.
changes_saved_msg: "¡Cambios guardados con éxito!"
copy: Copiar
delete: Eliminar
+ deselect: Deseleccionar todo
none: Nada
order_by: Ordenar por
save_changes: Guardar cambios
+ select_all_matching_items:
+ one: Seleccionar %{count} elemento que coincide con tu búsqueda.
+ other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda.
today: hoy
validation_errors:
one: "¡Algo no está bien! Por favor, revisa el error"
@@ -1251,19 +1352,10 @@ es:
copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} envió un informe"
sign_up:
subject: "%{name} se registró"
- 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 🐘"
- other: "%{count} nuevas notificaciones desde tu última visita 🐘"
- title: En tu ausencia…
favourite:
body: 'Tu estado fue marcado como favorito por %{name}:'
subject: "%{name} marcó como favorito tu estado"
@@ -1593,7 +1685,7 @@ es:
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 26 de mayo de 2022.
Adaptado originalmente desde la política de privacidad de Discourse.
- title: Términos del Servicio y Políticas de Privacidad de %{instance}
+ title: Política de Privacidad de %{instance}
themes:
contrast: Alto contraste
default: Mastodon
@@ -1636,7 +1728,7 @@ es:
change_password: cambies tu contraseña
details: 'Aquí están los detalles del inicio de sesión:'
explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP.
- further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura.
+ further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura.
subject: Tu cuenta ha sido accedida desde una nueva dirección IP
title: Un nuevo inicio de sesión
warning:
diff --git a/config/locales/et.yml b/config/locales/et.yml
index a551ab4245..f6df72ee01 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -25,7 +25,6 @@ et:
See konto on virtuaalne näitleja, mis esindab tervet serverit ning mitte ühtegi kindlat isikut.
Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist.
learn_more: Lisateave
- privacy_policy: Privaatsuspoliitika
rules: Serveri reeglid
rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:'
see_whats_happening: Vaata, mis toimub
@@ -35,7 +34,6 @@ et:
one: postitust
other: staatuseid
status_count_before: Kes on avaldanud
- terms: Kasutustingimused
unavailable_content: Sisu pole saadaval
unavailable_content_description:
reason: Põhjus
@@ -75,10 +73,8 @@ et:
posts_tab_heading: Postitused
posts_with_replies: Postitused ja vastused
roles:
- admin: Administraator
bot: Robot
group: Grupp
- moderator: Moderaator
unavailable: Profiil pole saadaval
unfollow: Lõpeta jälgimine
admin:
@@ -96,7 +92,6 @@ et:
avatar: Profiilipilt
by_domain: Domeen
change_email:
- changed_msg: Konto e-postiaadress edukalt muudetud!
current_email: Praegune e-postiaadress
label: Muuda e-posti aadressi
new_email: Uus е-posti aadress
@@ -160,12 +155,6 @@ et:
reset: Lähtesta
reset_password: Lähtesta salasõna
resubscribe: Telli taas
- role: Õigused
- roles:
- admin: Administraator
- moderator: Moderaator
- staff: Personal
- user: Kasutaja
search: Otsi
search_same_email_domain: Muud kasutajad sama e-posti domeeniga
search_same_ip: Teised kasutajad, kellel on sama IP
@@ -224,7 +213,6 @@ et:
update_announcement: Uuenda teadaannet
update_custom_emoji: Uuendas kohandatud emotikoni
update_status: Uuendas staatust
- deleted_status: "(kustutatud staatus)"
empty: Logisi ei leitud.
filter_by_action: Filtreeri tegevuse järgi
filter_by_user: Filtreeri kasutaja järgi
@@ -443,9 +431,6 @@ et:
deletion:
desc_html: Luba kasutajatel oma konto kustutada
title: Ava kontode kustutamine
- min_invite_role:
- disabled: Mitte keegi
- title: Luba kutseid
registrations_mode:
modes:
approved: Kinnitus vajalik konto loomisel
@@ -455,9 +440,6 @@ et:
show_known_fediverse_at_about_page:
desc_html: Kui lubatud, näitab kõiki teatud fediversumi tuututusi. Vastasel juhul näidatakse ainult kohalike tuututusi.
title: Näita teatud fediversumit ajajoone eelvaates
- show_staff_badge:
- desc_html: Näita personalimärki kasutaja profiilil
- title: Näita personalimärki
site_description:
desc_html: Sissejuhatuslik lõik API kohta. Kirjelda, mis teeb selle Mastodoni serveri eriliseks ja ka muud tähtsat. Te saate kasutada HTMLi silte, peamiselt <a>
ja <em>
.
title: Serveri kirjeldus
@@ -467,9 +449,6 @@ et:
site_short_description:
desc_html: Kuvatud küljeribal ja metasiltides. Kirjelda, mis on Mastodon ja mis on selles serveris erilist ühes lõigus.
title: Serveri lühikirjeldus
- site_terms:
- desc_html: Te saate kirjutada oma privaatsuspoliitika, kasutustingimused jm seaduslikku infot. Te saate kasutada HTMLi silte
- title: Kasutustingimused
site_title: Serveri nimi
thumbnail:
desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud
@@ -478,9 +457,6 @@ et:
desc_html: Kuva avalikku ajajoont esilehel
title: Ajajoone eelvaade
title: Lehe seaded
- trendable_by_default:
- desc_html: Puudutab silte, mis pole varem keelatud
- title: Luba siltide trendimine ilma eelneva ülevaatuseta
trends:
desc_html: Kuva avalikult eelnevalt üle vaadatud sildid, mis on praegu trendikad
title: Populaarsed sildid praegu
@@ -683,7 +659,6 @@ et:
title: Muuda filtrit
errors:
invalid_context: Puudulik või vale kontekst
- invalid_irreversible: Taastamatu filter töötab ainult kodu või teavituste kontekstis
index:
delete: Kustuta
empty: Teil pole filtreid.
@@ -786,14 +761,6 @@ et:
moderation:
title: Moderatsioon
notification_mailer:
- digest:
- action: Vaata kõiki teateid
- body: Siin on kiire ülevaade sellest, mis sõnumeid Te ei näinud pärast Teie viimast külastust %{since}
- mention: "%{name} mainis Teid postituses:"
- new_followers_summary:
- one: Ja veel, Te saite ühe uue jälgija kui Te olite eemal! Jee!
- other: Ja veel, Te saite %{count} uut jälgijat kui Te olite eemal! Hämmastav!
- title: Teie puudumisel...
favourite:
body: "%{name} lisas Teie staatuse lemmikutesse:"
subject: "%{name} märkis su staatuse lemmikuks"
@@ -966,8 +933,6 @@ et:
sensitive_content: Tundlik sisu
tags:
does_not_match_previous_name: ei ühti eelmise nimega
- terms:
- title: "%{instance} Kasutustingimused ja Privaatsuspoliitika"
themes:
contrast: Mastodon (Kõrge kontrast)
default: Mastodon (Tume)
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index a71cd186d1..9d783724cb 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -26,7 +26,6 @@ eu:
learn_more: Ikasi gehiago
logged_in_as_html: "%{username} bezala saioa hasita zaude."
logout_before_registering: Saioa hasi duzu jada.
- 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
@@ -36,7 +35,6 @@ eu:
one: bidalketa
other: bidalketa
status_count_before: Hauek
- terms: Erabilera baldintzak
unavailable_content: Eduki eskuraezina
unavailable_content_description:
domain: Zerbitzaria
@@ -80,10 +78,8 @@ eu:
posts_tab_heading: Bidalketa
posts_with_replies: Bidalketak eta erantzunak
roles:
- admin: Administratzailea
bot: Bot-a
group: Taldea
- moderator: Moderatzailea
unavailable: Profila ez dago eskuragarri
unfollow: Utzi jarraitzeari
admin:
@@ -102,7 +98,6 @@ eu:
avatar: Abatarra
by_domain: Domeinua
change_email:
- changed_msg: e-mail kontua ongi aldatu da!
current_email: Uneko e-mail helbidea
label: Aldatu e-mail helbidea
new_email: E-mail berria
@@ -184,12 +179,6 @@ eu:
reset: Berrezarri
reset_password: Berrezarri pasahitza
resubscribe: Berriro harpidetu
- role: Baimenak
- roles:
- admin: Administratzailea
- moderator: Moderatzailea
- staff: Langilea
- user: Erabiltzailea
search: Bilatu
search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean
search_same_ip: IP bera duten beste erabiltzaileak
@@ -294,7 +283,6 @@ eu:
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"
@@ -329,7 +317,6 @@ eu:
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
@@ -674,9 +661,6 @@ eu:
deletion:
desc_html: Baimendu edonori bere kontua ezabatzea
title: Ireki kontu ezabaketa
- 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
@@ -689,9 +673,6 @@ eu:
show_known_fediverse_at_about_page:
desc_html: Txandakatzean, fedibertso ezagun osoko tootak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko
title: Erakutsi fedibertsu ezagun osoko denbora-lerroa aurrebistan
- show_staff_badge:
- desc_html: Erakutsi langile banda erabiltzailearen orrian
- title: Erakutsi langile banda
site_description:
desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki <a>
eta <em>
.
title: Zerbitzariaren deskripzioa
@@ -701,9 +682,6 @@ eu:
site_short_description:
desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da.
title: Zerbitzariaren deskripzio laburra
- site_terms:
- 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
thumbnail:
desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da
@@ -712,9 +690,6 @@ eu:
desc_html: Bistaratu denbora-lerro publikoa hasiera orrian
title: Denbora-lerroaren aurrebista
title: Gunearen ezarpenak
- trendable_by_default:
- desc_html: Aurretik debekatu ez diren traola guztiei eragiten dio
- title: Baimendu traolak joera bihurtzea aurretik errebisatu gabe
trends:
desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak
title: Traolak joeran
@@ -1020,7 +995,6 @@ eu:
title: Editatu iragazkia
errors:
invalid_context: Testuinguru baliogabe edo hutsa eman da
- invalid_irreversible: Behin betiko iragazketa hasiera edo jakinarazpenen testuinguruan besterik ez dabil
index:
delete: Ezabatu
empty: Ez duzu iragazkirik.
@@ -1143,14 +1117,6 @@ eu:
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
- body: Hona zure %{since}(e)ko azken bisitatik galdu dituzun mezuen laburpen bat
- mention: "%{name}(e)k aipatu zaitu:"
- new_followers_summary:
- one: Kanpoan zeundela jarraitzaile berri bat gehitu zaizu!
- other: Kanpoan zeundela %{count} jarraitzaile berri bat gehitu zaizkizu!
- title: Kanpoan zeundela...
favourite:
body: "%{name}(e)k zure bidalketa gogoko du:"
subject: "%{name}(e)k zure bidalketa gogoko du"
@@ -1414,8 +1380,6 @@ eu:
sensitive_content: 'Kontuz: Eduki hunkigarria'
tags:
does_not_match_previous_name: ez dator aurreko izenarekin bat
- terms:
- title: "%{instance} instantziaren erabilera baldintzak eta pribatutasun politika"
themes:
contrast: Mastodon (Kontraste altua)
default: Mastodon (Iluna)
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 93b766859a..39424f3d6a 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -28,7 +28,6 @@ fa:
learn_more: بیشتر بدانید
logged_in_as_html: شما هماکنون به عنوان %{username} وارد شدهاید.
logout_before_registering: شما هماکنون وارد شدهاید.
- privacy_policy: سیاست رازداری
rules: قوانین کارساز
rules_html: 'در زیر خلاصهای از قوانینی که در صورت علاقه به داشتن حسابی روی این کارساز ماستودون، باید رعایت کنید آمده است:'
see_whats_happening: ببینید چه خبر است
@@ -38,7 +37,6 @@ fa:
one: چیز نوشتهاند
other: چیز نوشتهاند
status_count_before: که در کنار هم
- terms: شرایط خدمت
unavailable_content: محتوای ناموجود
unavailable_content_description:
domain: کارساز
@@ -82,10 +80,8 @@ fa:
posts_tab_heading: فرستهها
posts_with_replies: فرستهها و پاسخها
roles:
- admin: مدیر
bot: ربات
group: گروه
- moderator: ناظر
unavailable: نمایهٔ ناموجود
unfollow: پایان پیگیری
admin:
@@ -104,7 +100,6 @@ fa:
avatar: تصویر نمایه
by_domain: دامین
change_email:
- changed_msg: نشانی رایانامهٔ این حساب با موفقیت تغییر کرد!
current_email: رایانامهٔ کنونی
label: تغییر رایانامه
new_email: رایانامهٔ جدید
@@ -183,12 +178,6 @@ fa:
reset: بازنشانی
reset_password: بازنشانی رمز
resubscribe: اشتراک دوباره
- role: اجازهها
- roles:
- admin: مدیر
- moderator: ناظر
- staff: کارمند
- user: کاربر
search: جستجو
search_same_email_domain: دیگر کاربران با دامنهٔ رایانامهٔ یکسان
search_same_ip: دیگر کاربران با IP یکسان
@@ -293,7 +282,6 @@ fa:
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} را برداشت"
@@ -328,7 +316,6 @@ fa:
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: پالایش بر اساس کاربر
@@ -654,9 +641,6 @@ fa:
deletion:
desc_html: هر کسی بتواند حساب خود را پاک کند
title: فعالسازی پاککردن حساب
- min_invite_role:
- disabled: هیچ کس
- title: اجازهٔ دعوت به
require_invite_text:
desc_html: زمانی که نامنویسی نیازمند تایید دستی است، متن «چرا میخواهید عضو شود؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید
title: نیازمند پر کردن متن درخواست دعوت توسط کاربران جدید
@@ -669,9 +653,6 @@ fa:
show_known_fediverse_at_about_page:
desc_html: اگر از کار انداخته شود، خطزمانی همگانی را محدود میکند؛ تا فقط محتوای محلّی را نمایش دهد.
title: نمایش سرورهای دیگر در پیشنمایش این سرور
- show_staff_badge:
- desc_html: نمایش علامت همکار روی صفحهٔ کاربر
- title: نمایش علامت همکار
site_description:
desc_html: معرفی کوتاهی دربارهٔ رابط برنامهنویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. میتوانید HTML بنویسید، بهویژه <a>
و <em>
.
title: دربارهٔ این سرور
@@ -681,9 +662,6 @@ fa:
site_short_description:
desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحهها نمایش مییابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد.
title: توضیح کوتاه دربارهٔ سرور
- site_terms:
- desc_html: میتوانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگهای HTML هم مجاز است
- title: شرایط استفادهٔ سفارشی
site_title: نام سرور
thumbnail:
desc_html: برای دیدن با OpenGraph و رابط برنامهنویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل
@@ -692,9 +670,6 @@ fa:
desc_html: نوشتههای عمومی این سرور را در صفحهٔ آغازین نشان دهید
title: پیشنمایش نوشتهها
title: تنظیمات سایت
- trendable_by_default:
- desc_html: روی برچسبهایی که پیش از این ممنوع نشدهاند تأثیر میگذارد
- title: بگذارید که برچسبهای پرطرفدار بدون بازبینی قبلی نمایش داده شوند
trends:
desc_html: برچسبهای عمومی که پیشتر بازبینی شدهاند و هماینک پرطرفدارند
title: پرطرفدارها
@@ -983,7 +958,6 @@ fa:
title: ویرایش پالایه
errors:
invalid_context: زمینهای موجود نیست یا نامعتبر است
- invalid_irreversible: پالایش برگشتناپذیر تنها در زمینهٔ خانه یا آگاهیها کار میکنند
index:
delete: پاککردن
empty: هیچ پالایهای ندارید.
@@ -1109,14 +1083,6 @@ fa:
admin:
sign_up:
subject: "%{name} ثبت نام کرد"
- digest:
- action: دیدن تمامی آگاهیها
- body: خلاصهای از پیغامهایی که از زمان آخرین بازدید شما در %{since} فرستاده شد
- mention: "%{name} اینجا از شما نام برد:"
- new_followers_summary:
- one: در ضمن، وقتی که نبودید یک پیگیر تازه پیدا کردید! ای ول!
- other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی!
- title: در مدتی که نبودید...
favourite:
body: "%{name} این نوشتهٔ شما را پسندید:"
subject: "%{name} نوشتهٔ شما را پسندید"
@@ -1381,8 +1347,6 @@ fa:
sensitive_content: محتوای حساس
tags:
does_not_match_previous_name: با نام پیشین مطابق نیست
- terms:
- title: شرایط استفاده و سیاست رازداری %{instance}
themes:
contrast: ماستودون (سایهروشن بالا)
default: ماستودون (تیره)
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index ff369f2fe7..1416c12501 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -28,7 +28,6 @@ fi:
learn_more: Lisätietoja
logged_in_as_html: Olet kirjautunut sisään nimellä %{username}.
logout_before_registering: Olet jo kirjautunut sisään.
- privacy_policy: Tietosuojakäytäntö
rules: Palvelimen säännöt
rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:'
see_whats_happening: Näe mitä tapahtuu
@@ -38,7 +37,7 @@ fi:
one: julkaisun
other: julkaisua
status_count_before: Julkaistu
- terms: Käyttöehdot
+ tagline: Hajautettu sosiaalinen verkosto
unavailable_content: Moderoidut palvelimet
unavailable_content_description:
domain: Palvelin
@@ -82,10 +81,8 @@ fi:
posts_tab_heading: Julkaisut
posts_with_replies: Julkaisut ja vastaukset
roles:
- admin: Ylläpitäjä
bot: Botti
group: Ryhmä
- moderator: Moderaattori
unavailable: Profiili ei saatavilla
unfollow: Lopeta seuraaminen
admin:
@@ -104,12 +101,17 @@ fi:
avatar: Profiilikuva
by_domain: Verkkotunnus
change_email:
- changed_msg: Tilin sähköposti vaihdettu onnistuneesti!
+ changed_msg: Sähköpostin vaihto onnistui!
current_email: Nykyinen sähköposti
label: Vaihda sähköposti
new_email: Uusi sähköposti
submit: Vaihda sähköposti
title: Vaihda sähköposti käyttäjälle %{username}
+ change_role:
+ changed_msg: Rooli vaihdettu onnistuneesti!
+ label: Vaihda roolia
+ no_role: Ei roolia
+ title: Vaihda roolia käyttäjälle %{username}
confirm: Vahvista
confirmed: Vahvistettu
confirming: Vahvistetaan
@@ -153,6 +155,7 @@ fi:
active: Aktiivinen
all: Kaikki
pending: Odottavat
+ silenced: Rajoitettu
suspended: Jäähyllä
title: Moderointi
moderation_notes: Moderointimerkinnät
@@ -160,10 +163,14 @@ fi:
most_recent_ip: Viimeisin IP
no_account_selected: Yhtään tiliä ei muutettu, koska mitään ei valittu
no_limits_imposed: Rajoituksia ei ole asetettu
+ no_role_assigned: Roolia ei ole määritetty
not_subscribed: Ei tilaaja
pending: Odottaa tarkistusta
perform_full_suspension: Siirrä kokonaan jäähylle
previous_strikes: Aiemmat varoitukset
+ previous_strikes_description_html:
+ one: Tällä tilillä on yksi varoitus.
+ other: Tällä tilillä on %{count} varoitusta.
promote: Ylennä
protocol: Protokolla
public: Julkinen
@@ -183,12 +190,7 @@ fi:
reset: Palauta
reset_password: Palauta salasana
resubscribe: Tilaa uudelleen
- role: Oikeudet
- roles:
- admin: Ylläpitäjä
- moderator: Moderaattori
- staff: Henkilöstö
- user: Käyttäjä
+ role: Rooli
search: Hae
search_same_email_domain: Muut käyttäjät, joilla on sama sähköpostiverkkotunnus
search_same_ip: Muut käyttäjät samalla IP-osoitteella
@@ -231,6 +233,7 @@ fi:
approve_user: Hyväksy käyttäjä
assigned_to_self_report: Määritä raportti
change_email_user: Vaihda sähköposti käyttäjälle
+ change_role_user: Muuta käyttäjän roolia
confirm_user: Vahvista käyttäjä
create_account_warning: Luo varoitus
create_announcement: Luo ilmoitus
@@ -240,6 +243,7 @@ fi:
create_email_domain_block: Estä sähköpostipalvelin
create_ip_block: Luo IP-sääntö
create_unavailable_domain: Luo ei-saatavilla oleva verkkotunnus
+ create_user_role: Luo rooli
demote_user: Alenna käyttäjä
destroy_announcement: Poista ilmoitus
destroy_custom_emoji: Poista mukautettu emoji
@@ -250,6 +254,7 @@ fi:
destroy_ip_block: Poista IP-sääntö
destroy_status: Poista julkaisu
destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus
+ destroy_user_role: Hävitä rooli
disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä
disable_custom_emoji: Estä mukautettu emoji
disable_sign_in_token_auth_user: Estä käyttäjältä sähköpostitunnuksen todennus
@@ -277,11 +282,13 @@ fi:
update_custom_emoji: Päivitä muokattu emoji
update_domain_block: Päivitä verkkotunnuksen esto
update_status: Päivitä viesti
+ update_user_role: Päivitä rooli
actions:
approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}"
approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}"
assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen"
change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen"
+ change_role_user_html: "%{name} muutti roolia %{target}"
confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen"
create_account_warning_html: "%{name} lähetti varoituksen henkilölle %{target}"
create_announcement_html: "%{name} loi uuden ilmoituksen %{target}"
@@ -291,6 +298,7 @@ fi:
create_email_domain_block_html: "%{name} esti sähköpostin %{target}"
create_ip_block_html: "%{name} luonut IP-säännön %{target}"
create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}"
+ create_user_role_html: "%{name} luonut %{target} roolin"
demote_user_html: "%{name} alensi käyttäjän %{target}"
destroy_announcement_html: "%{name} poisti ilmoituksen %{target}"
destroy_custom_emoji_html: "%{name} poisti emojin %{target}"
@@ -301,6 +309,7 @@ fi:
destroy_ip_block_html: "%{name} poisti IP-säännön %{target}"
destroy_status_html: "%{name} poisti viestin %{target}"
destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}"
+ destroy_user_role_html: "%{name} poisti %{target} roolin"
disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheisen todentamiseen"
disable_custom_emoji_html: "%{name} poisti emojin %{target}"
disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksen %{target} todennuksen käytöstä"
@@ -328,7 +337,7 @@ fi:
update_custom_emoji_html: "%{name} päivitti emojin %{target}"
update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}"
update_status_html: "%{name} päivitti viestin %{target}"
- deleted_status: "(poistettu julkaisu)"
+ update_user_role_html: "%{name} muutti roolia %{target}"
empty: Lokeja ei löytynyt.
filter_by_action: Suodata tapahtuman mukaan
filter_by_user: Suodata käyttäjän mukaan
@@ -367,6 +376,7 @@ fi:
enable: Ota käyttöön
enabled: Käytössä
enabled_msg: Emojin käyttöönotto onnistui
+ image_hint: PNG tai GIF enintään %{size}
list: Listaa
listed: Listassa
new:
@@ -423,6 +433,7 @@ fi:
destroyed_msg: Verkkotunnuksen esto on peruttu
domain: Verkkotunnus
edit: Muokkaa verkkotunnuksen estoa
+ existing_domain_block: Olet jo asettanut tiukemmat rajoitukset %{name}.
existing_domain_block_html: Olet jo asettanut %{name} tiukemmat rajat ja sinun täytyy poistaa se ensin.
new:
create: Luo esto
@@ -473,14 +484,46 @@ fi:
title: Noudata suosituksia
unsuppress: Palauta seuraa suositus
instances:
+ availability:
+ description_html:
+ one: Jos toimitus verkkotunnukseen epäonnistuu %{count} päivä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnukselta on vastaanotettu.
+ other: Jos toimitus verkkotunnukselle, epäonnistuu %{count} eri päivänä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnuselta on vastaanotettu.
+ failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}.
+ failures_recorded:
+ one: Epäonnistuneita yrityksiä %{count} päivässä.
+ other: Epäonnistuneita yrityksiä %{count} päivää.
+ no_failures_recorded: Ei epäonnistumisia kirjattu.
+ title: Saatavuus
+ warning: Viimeisin yritys yhdistää yhteys tähän palvelimeen on epäonnistunut
back_to_all: Kaikki
back_to_limited: Rajoitettu
back_to_warning: Varoitus
by_domain: Verkkotunnus
confirm_purge: Oletko varma, että haluat pysyvästi poistaa tiedot tältä verkkotunnukselta?
+ content_policies:
+ comment: Sisäinen huomautus
+ description_html: Voit määrittää sisältökäytännöt, joita sovelletaan kaikkiin tämän verkkotunnuksen ja sen aliverkkotunnuksien tileihin.
+ policies:
+ reject_media: Hylkää media
+ reject_reports: Hylkää raportit
+ silence: Rajoitus
+ suspend: Jäädytä
+ policy: Käytännöt
+ reason: Julkinen syy
+ title: Sisällön toimintatavat
+ dashboard:
+ instance_accounts_dimension: Seuratuimmat tilit
+ instance_accounts_measure: tallennetut tilit
+ instance_followers_measure: seuraajamme siellä
+ instance_follows_measure: heidän seuraajansa täällä
+ instance_languages_dimension: Suosituimmat kielet
+ instance_media_attachments_measure: tallennetut median liitteet
+ instance_reports_measure: niitä koskevat raportit
+ instance_statuses_measure: tallennetut viestit
delivery:
all: Kaikki
clear: Tyhjennä toimitusvirheet
+ failing: Epäonnistuminen
restart: Käynnistä toimitus uudelleen
stop: Lopeta toimitus
unavailable: Ei saatavilla
@@ -489,6 +532,9 @@ fi:
delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi.
destroyed_msg: Tiedot %{domain} on nyt jonossa välitöntä poistoa varten.
empty: Verkkotunnuksia ei löytynyt.
+ known_accounts:
+ one: "%{count} tunnettu tili"
+ other: "%{count} tunnettua tiliä"
moderation:
all: Kaikki
limited: Rajoitettu
@@ -496,12 +542,14 @@ fi:
private_comment: Yksityinen kommentti
public_comment: Julkinen kommentti
purge: Tyhjennä
+ purge_description_html: Jos uskot tämän verkkotunnuksen olevan offline-tilassa, voit poistaa kaikki tilitietueet ja niihin liittyvät tiedot sinun tallennustilasta. Tämä voi kestää jonkin aikaa.
title: Tiedossa olevat instanssit
total_blocked_by_us: Estetty meidän toimesta
total_followed_by_them: Heidän seuraama
total_followed_by_us: Meidän seuraama
total_reported: Niitä koskevat raportit
total_storage: Medialiitteet
+ totals_time_period_hint_html: Alla näkyvät yhteenlasketut tiedot sisältävät koko ajan.
invites:
deactivate_all: Poista kaikki käytöstä
filter:
@@ -556,6 +604,7 @@ fi:
action_taken_by: Toimenpiteen tekijä
actions:
delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista.
+ mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit kärjistää saman tilin tulevia rikkomuksia.
other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi.
resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan.
silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa.
@@ -605,6 +654,67 @@ fi:
unresolved: Ratkaisemattomat
updated_at: Päivitetty
view_profile: Näytä profiili
+ roles:
+ add_new: Lisää rooli
+ assigned_users:
+ one: "%{count} käyttäjä"
+ other: "%{count} käyttäjää"
+ categories:
+ administration: Ylläpito
+ devops: Operaattorit
+ invites: Kutsut
+ moderation: Moderointi
+ special: Erikois
+ delete: Poista
+ description_html: Käyttäjän roolit, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää.
+ edit: Muokkaa "%{name}" roolia
+ everyone: Oletus käyttöoikeudet
+ everyone_full_description_html: Tämä on perusrooli joka vaikuttaa kaikkiin käyttäjiin, jopa ilman määrättyä roolia. Kaikki muut roolit perivät sen käyttöoikeudet.
+ permissions_count:
+ one: "%{count} käyttöoikeus"
+ other: "%{count} käyttöoikeutta"
+ privileges:
+ administrator: Ylläpitäjä
+ administrator_description: Käyttäjät, joilla on tämä käyttöoikeus, ohittavat jokaisen käyttöoikeuden
+ delete_user_data: Poista käyttäjän tiedot
+ delete_user_data_description: Salli käyttäjien poistaa muiden käyttäjien tiedot viipymättä
+ invite_users: Kutsu käyttäjiä
+ invite_users_description: Sallii käyttäjien kutsua uusia ihmisiä palvelimelle
+ manage_announcements: Hallitse Ilmoituksia
+ manage_announcements_description: Salli käyttäjien hallita ilmoituksia palvelimella
+ manage_appeals: Hallitse valituksia
+ manage_appeals_description: Antaa käyttäjien tarkastella valvontatoimia koskevia valituksia
+ manage_blocks: Hallitse lohkoja
+ manage_blocks_description: Sallii käyttäjien estää sähköpostipalvelujen ja IP-osoitteiden käytön
+ manage_custom_emojis: Hallita mukautettuja hymiöitä
+ manage_custom_emojis_description: Salli käyttäjien hallita mukautettuja hymiöitä palvelimella
+ manage_federation: Hallita liitoksia
+ manage_federation_description: Sallii käyttäjien estää tai sallia liitoksen muiden verkkotunnusten kanssa ja hallita toimitusta
+ manage_invites: Hallita kutsuja
+ manage_invites_description: Sallii käyttäjien selata ja poistaa kutsulinkkejä käytöstä
+ manage_reports: Hallita raportteja
+ manage_reports_description: Sallii käyttäjien tarkastella raportteja ja suorittaa valvontatoimia niitä vastaan
+ manage_roles: Hallita rooleja
+ manage_roles_description: Sallii käyttäjien hallita ja määrittää rooleja heidän alapuolellaan
+ manage_rules: Hallita sääntöjä
+ manage_rules_description: Sallii käyttäjien vaihtaa palvelinsääntöjä
+ manage_settings: Hallita asetuksia
+ manage_settings_description: Salli käyttäjien muuttaa sivuston asetuksia
+ manage_taxonomies: Hallita luokittelua
+ manage_taxonomies_description: Sallii käyttäjien tarkistaa trendillisen sisällön ja päivittää hashtag-asetuksia
+ manage_user_access: Hallita käyttäjän oikeuksia
+ manage_user_access_description: Sallii käyttäjien poistaa käytöstä muiden käyttäjien kaksivaiheisen todennuksen, muuttaa heidän sähköpostiosoitettaan ja nollata heidän salasanansa
+ manage_users: Hallita käyttäjiä
+ manage_users_description: Sallii käyttäjien tarkastella muiden käyttäjien tietoja ja suorittaa valvontatoimia heitä vastaan
+ manage_webhooks: Hallita Webhookit
+ manage_webhooks_description: Sallii käyttäjien luoda webhookit hallinnollisiin tapahtumiin
+ view_audit_log: Katsoa valvontalokia
+ view_audit_log_description: Sallii käyttäjien nähdä palvelimen hallinnollisten toimien historian
+ view_dashboard: Näytä koontinäyttö
+ view_dashboard_description: Sallii käyttäjien käyttää kojelautaa ja erilaisia mittareita
+ view_devops: Operaattorit
+ view_devops_description: Sallii käyttäjille oikeuden käyttää Sidekiq ja pgHero dashboardeja
+ title: Roolit
rules:
add_new: Lisää sääntö
delete: Poista
@@ -657,9 +767,6 @@ fi:
deletion:
desc_html: Salli jokaisen poistaa oma tilinsä
title: Avoin tilin poisto
- min_invite_role:
- disabled: Ei kukaan
- title: Salli kutsut käyttäjältä
require_invite_text:
desc_html: Kun rekisteröinnit edellyttävät manuaalista hyväksyntää, tee “Miksi haluat liittyä?” teksti pakolliseksi eikä valinnaiseksi
title: Vaadi uusia käyttäjiä antamaan liittymisen syy
@@ -672,9 +779,6 @@ fi:
show_known_fediverse_at_about_page:
desc_html: Kun tämä on valittu, esikatselussa näytetään tuuttaukset kaikkialta tunnetusta fediversumista. Muutoin näytetään vain paikalliset tuuttaukset.
title: Näytä aikajanan esikatselussa koko tunnettu fediversumi
- show_staff_badge:
- desc_html: Näytä käyttäjäsivulla henkilöstömerkki
- title: Näytä henkilöstömerkki
site_description:
desc_html: Esittelykappale etusivulla ja metatunnisteissa. HTML-tagit käytössä, tärkeimmät ovat <a>
ja <em>
.
title: Instanssin kuvaus
@@ -684,9 +788,6 @@ fi:
site_short_description:
desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen.
title: Lyhyt instanssin kuvaus
- site_terms:
- desc_html: Tähän voit kirjoittaa tietosuojakäytännöistä, käyttöehdoista ja sen sellaisista asioista. Voit käyttää HTML-tageja
- title: Omavalintaiset käyttöehdot
site_title: Instanssin nimi
thumbnail:
desc_html: Käytetään esikatseluissa OpenGraphin ja API:n kautta. Suosituskoko 1200x630 pikseliä
@@ -695,9 +796,6 @@ fi:
desc_html: Näytä julkinen aikajana aloitussivulla
title: Aikajanan esikatselu
title: Sivuston asetukset
- trendable_by_default:
- desc_html: Vaikuttaa hashtageihin, joita ei ole aiemmin poistettu käytöstä
- title: Salli hashtagit ilman tarkistusta ennakkoon
trends:
desc_html: Näytä julkisesti aiemmin tarkistetut hashtagit, jotka ovat tällä hetkellä saatavilla
title: Trendaavat aihetunnisteet
@@ -730,6 +828,11 @@ fi:
system_checks:
database_schema_check:
message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla
+ elasticsearch_running_check:
+ message_html: Ei saatu yhteyttä Elasticsearch. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä
+ elasticsearch_version_check:
+ message_html: 'Yhteensopimaton Elasticsearch versio: %{value}'
+ version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan
rules_check:
action: Hallinnoi palvelimen sääntöjä
message_html: Et ole määrittänyt mitään palvelimen sääntöä.
@@ -749,8 +852,12 @@ fi:
description_html: Nämä ovat linkkejä, joita jaetaan tällä hetkellä paljon tileillä, joilta palvelimesi näkee viestejä. Se voi auttaa käyttäjiäsi saamaan selville, mitä maailmassa tapahtuu. Linkkejä ei näytetä julkisesti, ennen kuin hyväksyt julkaisijan. Voit myös sallia tai hylätä yksittäiset linkit.
disallow: Hylkää linkki
disallow_provider: Estä julkaisija
+ shared_by_over_week:
+ one: Yksi henkilö jakanut viimeisen viikon aikana
+ other: Jakanut %{count} henkilöä viimeisen viikon aikana
title: Suositut linkit
usage_comparison: Jaettu %{today} kertaa tänään verrattuna eilen %{yesterday}
+ only_allowed: Vain sallittu
pending_review: Odottaa tarkistusta
preview_card_providers:
allowed: Tämän julkaisijan linkit voivat trendata
@@ -788,13 +895,37 @@ fi:
trending_rank: 'Nousussa #%{rank}'
usable: Voidaan käyttää
usage_comparison: Käytetty %{today} kertaa tänään, verrattuna %{yesterday} eiliseen
+ used_by_over_week:
+ one: Yhden henkilön käyttämä viime viikon aikana
+ other: Käyttänyt %{count} henkilöä viimeisen viikon aikana
title: Trendit
+ trending: Nousussa
warning_presets:
add_new: Lisää uusi
delete: Poista
edit_preset: Muokkaa varoituksen esiasetusta
empty: Et ole vielä määrittänyt yhtään varoitusesiasetusta.
title: Hallinnoi varoitusesiasetuksia
+ webhooks:
+ add_new: Lisää päätepiste
+ delete: Poista
+ description_html: A webhook mahdollistaa Mastodonin työntää reaaliaikaisia ilmoituksia valituista tapahtumista omaan sovellukseesi, joten sovelluksesi voi laukaista automaattisesti reaktioita.
+ disable: Poista käytöstä
+ disabled: Ei käytössä
+ edit: Muokkaa päätepistettä
+ empty: Sinulla ei ole vielä määritetty webhook-päätepisteitä.
+ enable: Ota käyttöön
+ enabled: Aktiivinen
+ enabled_events:
+ one: 1 aktivoitu tapahtuma
+ other: "%{count} aktivoitua tapahtumaa"
+ events: Tapahtumat
+ new: Uusi webhook
+ rotate_secret: Vaihda salaus
+ secret: Salainen tunnus
+ status: Tila
+ title: Webhookit
+ webhook: Webhook
admin_mailer:
new_appeal:
actions:
@@ -979,10 +1110,12 @@ fi:
appealed_msg: Valituksesi on lähetetty. Jos se hyväksytään, sinulle ilmoitetaan.
appeals:
submit: Lähetä valitus
+ approve_appeal: Hyväksy valitus
associated_report: Liittyvä raportti
created_at: Päivätty
description_html: Nämä ovat tiliäsi koskevia toimia ja varoituksia, jotka %{instance} henkilökunta on lähettänyt sinulle.
recipient: Osoitettu
+ reject_appeal: Hylkää valitus
status: 'Viesti #%{id}'
status_removed: Viesti on jo poistettu järjestelmästä
title: "%{action} alkaen %{date}"
@@ -1045,16 +1178,40 @@ fi:
public: Julkiset aikajanat
thread: Keskustelut
edit:
+ add_keyword: Lisää avainsana
+ keywords: Avainsanat
+ statuses: Yksittäiset postaukset
+ statuses_hint_html: Tämä suodatin koskee yksittäisten postausten valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. Tarkista tai poista viestit suodattimesta.
title: Muokkaa suodatinta
errors:
+ deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai web-käyttöliittymää.
invalid_context: Ei sisältöä tai se on virheellinen
- invalid_irreversible: Sen sijaan suodatus toimii vain kodin tai ilmoitusten yhteydessä
index:
+ contexts: Suodattimet %{contexts}
delete: Poista
empty: Sinulla ei ole suodattimia.
+ expires_in: Vanhenee %{distance}
+ expires_on: Vanhenee %{date}
+ keywords:
+ one: "%{count} avainsana"
+ other: "%{count} avainsanaa"
+ statuses:
+ one: "%{count} viesti"
+ other: "%{count} viestiä"
+ statuses_long:
+ one: "%{count} yksittäinen viesti piilotettu"
+ other: "%{count} yksittäistä viestiä piilotettu"
title: Suodattimet
new:
+ save: Tallenna uusi suodatin
title: Lisää uusi suodatin
+ statuses:
+ back_to_filter: Takaisin suodattimeen
+ batch:
+ remove: Poista suodattimista
+ index:
+ hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä.
+ title: Suodatetut viestit
footer:
developers: Kehittäjille
more: Lisää…
@@ -1172,16 +1329,10 @@ fi:
copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} lähetti raportin"
sign_up:
subject: "%{name} kirjautunut"
- digest:
- action: Näytä kaikki ilmoitukset
- body: Tässä lyhyt yhteenveto viime käyntisi (%{since}) jälkeen tulleista viesteistä
- mention: "%{name} mainitsi sinut:"
- new_followers_summary:
- one: Olet myös saanut yhden uuden seuraajan! Juhuu!
- other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa!
- title: Poissaollessasi…
favourite:
body: "%{name} tykkäsi tilastasi:"
subject: "%{name} tykkäsi tilastasi"
@@ -1294,6 +1445,11 @@ fi:
reports:
errors:
invalid_rules: ei viittaa voimassa oleviin sääntöihin
+ rss:
+ content_warning: 'Sisällön varoitus:'
+ descriptions:
+ account: Julkiset viestit lähettäjältä @%{acct}
+ tag: 'Julkiset viestit merkitty #%{hashtag}'
scheduled_statuses:
over_daily_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan tälle päivälle
over_total_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan
@@ -1381,6 +1537,7 @@ fi:
disallowed_hashtags:
one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}'
other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}'
+ edited_at_html: Muokattu %{date}
errors:
in_reply_not_found: Viesti, johon yrität vastata, ei näytä olevan olemassa.
open_in_web: Avaa selaimessa
@@ -1451,10 +1608,11 @@ fi:
pinned: Kiinnitetty tuuttaus
reblogged: buustasi
sensitive_content: Arkaluontoista sisältöä
+ strikes:
+ errors:
+ too_late: On liian myöhäistä vedota tähän varoitukseen
tags:
does_not_match_previous_name: ei vastaa edellistä nimeä
- terms:
- title: "%{instance}, käyttöehdot ja tietosuojakäytäntö"
themes:
contrast: Mastodon (Korkea kontrasti)
default: Mastodon (Tumma)
@@ -1493,6 +1651,13 @@ fi:
explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen!
subject: Arkisto on valmiina ladattavaksi
title: Arkiston tallennus
+ suspicious_sign_in:
+ change_password: vaihda salasanasi
+ details: 'Tässä on tiedot kirjautumisesta:'
+ explanation: Olemme havainneet kirjautumisen tilillesi uudesta IP-osoitteesta.
+ further_actions_html: Jos et ollut sinä, suosittelemme, että %{action} teet välittömästi ja otat kaksivaiheisen todennuksen käyttöön tilisi turvallisuuden varmistamiseksi.
+ subject: Tiliäsi on käytetty uudesta IP-osoitteesta
+ title: Uusi kirjautuminen
warning:
appeal: Lähetä valitus
appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}.
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 5f74972f95..ff10ff636a 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -28,7 +28,6 @@ fr:
learn_more: En savoir plus
logged_in_as_html: Vous êtes actuellement connecté·e en tant que %{username}.
logout_before_registering: Vous êtes déjà connecté·e.
- 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: Quoi de neuf
@@ -39,7 +38,6 @@ fr:
other: messages
status_count_before: Ayant publié
tagline: Réseau social décentralisé
- terms: Conditions d’utilisation
unavailable_content: Serveurs modérés
unavailable_content_description:
domain: Serveur
@@ -83,10 +81,8 @@ fr:
posts_tab_heading: Messages
posts_with_replies: Messages et réponses
roles:
- admin: Admin
bot: Robot
group: Groupe
- moderator: Modérateur·trice
unavailable: Profil non disponible
unfollow: Ne plus suivre
admin:
@@ -105,12 +101,17 @@ fr:
avatar: Avatar
by_domain: Domaine
change_email:
- changed_msg: Courriel du compte modifié avec succès !
+ changed_msg: Courriel modifié avec succès !
current_email: Courriel actuel
label: Modifier le courriel
new_email: Nouveau courriel
submit: Modifier le courriel
title: Modifier le courriel pour %{username}
+ change_role:
+ changed_msg: Rôle modifié avec succès !
+ label: Modifier le rôle
+ no_role: Aucun rôle
+ title: Modifier le rôle de %{username}
confirm: Confirmer
confirmed: Confirmé
confirming: Confirmation
@@ -154,6 +155,7 @@ fr:
active: Actifs
all: Tous
pending: En cours de traitement
+ silenced: Limité
suspended: Suspendus
title: Modération
moderation_notes: Notes de modération
@@ -161,6 +163,7 @@ fr:
most_recent_ip: Adresse IP la plus récente
no_account_selected: Aucun compte n’a été modifié, car aucun n’a été sélectionné
no_limits_imposed: Aucune limite imposée
+ no_role_assigned: Aucun rôle assigné
not_subscribed: Non abonné
pending: En attente d’approbation
perform_full_suspension: Suspendre
@@ -187,12 +190,7 @@ fr:
reset: Réinitialiser
reset_password: Réinitialiser le mot de passe
resubscribe: Se réabonner
- role: Permissions
- roles:
- admin: Administrateur
- moderator: Modérateur
- staff: Équipe
- user: Utilisateur
+ role: Rôle
search: Rechercher
search_same_email_domain: Autres utilisateurs·trices avec le même domaine de courriel
search_same_ip: Autres utilisateur·rice·s avec la même IP
@@ -234,7 +232,7 @@ fr:
approve_appeal: Approuver l'appel
approve_user: Approuver l’utilisateur
assigned_to_self_report: Affecter le signalement
- change_email_user: Modifier le courriel pour
+ change_email_user: Modifier le courriel pour ce compte
confirm_user: Confirmer l’utilisateur
create_account_warning: Créer une alerte
create_announcement: Créer une annonce
@@ -297,7 +295,6 @@ fr:
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}"
@@ -332,7 +329,6 @@ fr:
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 message de %{target}"
- deleted_status: "(message supprimé)"
empty: Aucun journal trouvé.
filter_by_action: Filtrer par action
filter_by_user: Filtrer par utilisateur·ice
@@ -481,8 +477,8 @@ fr:
instances:
availability:
description_html:
- one: Si la livraison au domaine échoue pendant %{count} jour sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue.
- other: Si la livraison au domaine échoue pendant %{count} jours différents sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue.
+ one: Si la livraison au domaine échoue pendant %{count} jour, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine ne soit reçue.
+ other: Si la livraison au domaine échoue pendant %{count} jours différents, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine ne soit reçue.
failure_threshold_reached: Le seuil de défaillance a été atteint le %{date}.
failures_recorded:
one: Tentative échouée pendant %{count} jour.
@@ -649,6 +645,67 @@ fr:
unresolved: Non résolus
updated_at: Mis à jour
view_profile: Voir le profil
+ roles:
+ add_new: Ajouter un rôle
+ assigned_users:
+ one: "%{count} utilisateur·rice"
+ other: "%{count} utilisateur·rice·s"
+ categories:
+ administration: Administration
+ devops: Devops
+ invites: Invitations
+ moderation: Modération
+ special: Spécial
+ delete: Supprimer
+ description_html: Les rôles utilisateur vous permettent de personnaliser les fonctions et les zones de Mastodon auxquelles vos utilisateur⋅rice⋅s peuvent accéder.
+ edit: Modifier le rôle '%{name}'
+ everyone: Autorisations par défaut
+ everyone_full_description_html: Ceci est le rôle de base qui impacte tou⋅te⋅s les utilisateur⋅rice⋅s, même celleux sans rôle assigné. Tous les autres rôles héritent des autorisations de celui-ci.
+ permissions_count:
+ one: "%{count} autorisation"
+ other: "%{count} autorisations"
+ privileges:
+ administrator: Administrateur·rice
+ administrator_description: Les utilisateur⋅rice⋅s ayant cette autorisation pourront contourner toutes les autorisations
+ delete_user_data: Supprimer les données de l'utilisateur⋅rice
+ delete_user_data_description: Permet aux utilisateur⋅rice⋅s de supprimer sans délai les données des autres utilisateur⋅rice⋅s
+ invite_users: Inviter des utilisateur⋅rice⋅s
+ invite_users_description: Permet aux utilisateur⋅rice⋅s d'inviter de nouvelles personnes sur le serveur
+ manage_announcements: Gérer les annonces
+ manage_announcements_description: Permet aux utilisateur⋅rice⋅s de gérer les annonces sur le serveur
+ manage_appeals: Gérer les contestations
+ manage_appeals_description: Permet aux utilisateur⋅rice⋅s d'examiner les appels contre les actions de modération
+ manage_blocks: Gérer les blocages
+ manage_blocks_description: Permet aux utilisateur⋅rice⋅s de bloquer des fournisseurs de courriel et des adresses IP
+ manage_custom_emojis: Gérer les émojis personnalisés
+ manage_custom_emojis_description: Permet aux utilisateur⋅rice⋅s de gérer les émoticônes personnalisées sur le serveur
+ manage_federation: Gérer de la féderation
+ manage_federation_description: Permet aux utilisateur⋅rice⋅s de bloquer ou d'autoriser la fédération avec d'autres domaines, et de contrôler la capacité de livraison
+ manage_invites: Gérer les invitations
+ manage_invites_description: Permet aux utilisateur⋅rice⋅s de parcourir et de désactiver les liens d'invitation
+ manage_reports: Gérer les rapports
+ manage_reports_description: Permet aux utilisateur⋅rice⋅s d'examiner les signalements et d'effectuer des actions de modération en conséquence
+ manage_roles: Gérer les rôles
+ manage_roles_description: Permet aux utilisateur⋅rice⋅s de gérer et d'assigner des rôles inférieurs au leur
+ manage_rules: Gérer les règles
+ manage_rules_description: Permet aux utilisateur·rice·s de modifier les règles du serveur
+ manage_settings: Gérer les paramètres
+ manage_settings_description: Permet aux utilisateur·rice·s de modifier les paramètres du site
+ manage_taxonomies: Gérer les taxonomies
+ manage_taxonomies_description: Permet aux utilisateur⋅rice⋅s d'examiner les contenus tendance et de mettre à jour les paramètres des hashtags
+ manage_user_access: Gérer l'accès utilisateur
+ manage_user_access_description: Permet aux utilisateur⋅rice⋅s de désactiver l'authentification à deux facteurs, de modifier l'adresse courriel et de réinitialiser le mot de passe des autres utilisateur⋅rice⋅s
+ manage_users: Gérer les utilisateur·rice·s
+ manage_users_description: Permet aux utilisateur⋅rice⋅s de voir les détails des autres utilisateur⋅rice⋅s et d'effectuer des actions de modération en conséquence
+ manage_webhooks: Gérer les points d’ancrage web
+ manage_webhooks_description: Permet aux utilisateur⋅rice⋅s de configurer des webhooks pour des événements d'administration
+ view_audit_log: Afficher le journal d'audit
+ view_audit_log_description: Permet aux utilisateur⋅rice⋅s de voir l'historique des opérations d'administration sur le serveur
+ view_dashboard: Voir le tableau de bord
+ view_dashboard_description: Permet aux utilisateur⋅rice⋅s d'accéder au tableau de bord et à diverses statistiques
+ view_devops: Devops
+ view_devops_description: Permet aux utilisateur⋅rice⋅s d'accéder aux tableaux de bord Sidekiq et pgHero
+ title: Rôles
rules:
add_new: Ajouter une règle
delete: Supprimer
@@ -701,9 +758,6 @@ fr:
deletion:
desc_html: Permettre à tou·te·s les utilisateur·rice·s de supprimer leur compte
title: Autoriser les suppressions de compte
- min_invite_role:
- disabled: Personne
- title: Autoriser les invitations par
require_invite_text:
desc_html: Lorsque les enregistrements nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif
title: Exiger que les nouveaux utilisateurs remplissent un texte de demande d’invitation
@@ -716,9 +770,6 @@ fr:
show_known_fediverse_at_about_page:
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
site_description:
desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a>
et <em>
.
title: Description du serveur
@@ -728,9 +779,6 @@ fr:
site_short_description:
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: 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
thumbnail:
desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé
@@ -739,9 +787,6 @@ fr:
desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API
title: Autoriser la prévisualisation anonyme du fil global
title: Paramètres du serveur
- trendable_by_default:
- desc_html: Affecte les hashtags qui n'ont pas été précédemment non autorisés
- title: Autoriser les hashtags à apparaître dans les tendances sans approbation préalable
trends:
desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment
title: Hashtags populaires
@@ -868,6 +913,7 @@ fr:
events: Événements
new: Nouveau point d’ancrage web
rotate_secret: Effectuer une rotation du secret
+ secret: Jeton de connexion
status: État
title: Points d’ancrage web
webhook: Point d’ancrage web
@@ -1123,15 +1169,24 @@ fr:
public: Fils publics
thread: Discussions
edit:
+ add_keyword: Ajouter un mot-clé
+ keywords: Mots-clés
title: Éditer le filtre
errors:
+ deprecated_api_multiple_keywords: Ces paramètres ne peuvent pas être modifiés depuis cette application, car ils s'appliquent à plus d'un filtre de mot-clé. Utilisez une application plus récente ou l'interface web.
invalid_context: Contexte invalide ou insuffisant
- invalid_irreversible: Le filtrage irréversible ne fonctionne que pour l’accueil et les notifications
index:
+ contexts: Filtres dans %{contexts}
delete: Supprimer
empty: Vous n'avez aucun filtre.
+ expires_in: Expire dans %{distance}
+ expires_on: Expire le %{date}
+ keywords:
+ one: "%{count} mot-clé"
+ other: "%{count} mots-clés"
title: Filtres
new:
+ save: Enregistrer le nouveau filtre
title: Ajouter un nouveau filtre
footer:
developers: Développeurs
@@ -1250,19 +1305,10 @@ fr:
copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :'
notification_mailer:
admin:
+ report:
+ subject: "%{name} a soumis un signalement"
sign_up:
subject: "%{name} s'est inscrit·e"
- digest:
- action: Voir toutes les notifications
- body: Voici un bref résumé des messages que vous avez raté depuis votre dernière visite le %{since}
- mention: "%{name} vous a mentionné⋅e dans :"
- new_followers_summary:
- one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi !
- other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable !
- subject:
- one: "Une nouvelle notification depuis votre dernière visite 🐘"
- other: "%{count} nouvelles notifications depuis votre dernière visite 🐘"
- title: Pendant votre absence…
favourite:
body: "%{name} a ajouté votre message à ses favoris :"
subject: "%{name} a ajouté votre message à ses favoris"
@@ -1544,7 +1590,87 @@ fr:
tags:
does_not_match_previous_name: ne correspond pas au nom précédent
terms:
- title: Conditions d’utilisation et politique de confidentialité de %{instance}
+ body_html: |
+ Politique de confidentialité
+ Quelles informations collectons-nous ?
+
+
+ - Informations de base sur votre compte : si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
+ - Posts, liste d’abonnements et autres informations publiques : la liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonné·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
+ - Posts directs et abonné·e·s uniquement : tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il vous plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages, et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partagez aucune information sensible à l’aide de Mastodon !
+ - IP et autres métadonnées : quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
+
+
+
+
+ Que faisons-nous des informations vous concernant ?
+
+ Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes :
+
+
+ - pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé ;
+ - pour aider à la modération de la communauté : par exemple, comparer votre adresse IP avec d’autres afin de déterminer si un bannissement a été contourné ou si une autre infraction aux règles a été commise ;
+ - l’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyer des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour toutes autres requêtes ou questions.
+
+
+
+
+ Comment protégeons-nous vos informations ?
+
+ 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 protégées par un certificat SSL ; tandis que votre mot de passe est haché à l'aide d'un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.
+
+
+
+ Quelle est notre politique de conservation des données ?
+
+ Nous ferons un effort de bonne foi pour :
+
+
+ - ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur ;
+ - ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
+
+
+ Vous pouvez demander à télécharger une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.
+
+ Vous pouvez supprimer votre compte de manière définitive à tout moment.
+
+
+
+ Utilisons-nous des témoins de connexion ?
+
+ 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’y 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 afin de comprendre et de sauvegarder vos préférences pour vos prochaines visites.
+
+
+
+ Divulguons-nous des informations à des tiers ?
+
+ 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ésident sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement sont 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.
+
+
+
+ Utilisation de ce site par les enfants
+
+ 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é 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 dépend d'une autre juridiction.
+
+
+
+ Modifications de notre politique de confidentialité
+
+ Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.
+
+ Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 26 mai 2022.
+
+ Initialement adapté de la politique de confidentialité de Discourse.
themes:
contrast: Mastodon (Contraste élevé)
default: Mastodon (Sombre)
diff --git a/config/locales/fy.yml b/config/locales/fy.yml
index fa727d6fe4..02f77d7ea0 100644
--- a/config/locales/fy.yml
+++ b/config/locales/fy.yml
@@ -37,8 +37,6 @@ fy:
contexts:
thread: Petearen
notification_mailer:
- digest:
- mention: "%{name} hat jo fermeld yn:"
mention:
action: Beäntwurdzje
body: 'Jo binne fermeld troch %{name} yn:'
diff --git a/config/locales/ga.yml b/config/locales/ga.yml
index 8a280c0012..4656b83db8 100644
--- a/config/locales/ga.yml
+++ b/config/locales/ga.yml
@@ -2,7 +2,6 @@
ga:
about:
api: API
- privacy_policy: Polasaí príobháideachais
unavailable_content_description:
domain: Freastalaí
reason: Fáth
@@ -11,7 +10,6 @@ ga:
roles:
bot: Róbat
group: Grúpa
- moderator: Modhnóir
unfollow: Ná lean
admin:
accounts:
@@ -27,11 +25,6 @@ ga:
all: Uile
public: Poiblí
reject: Diúltaigh
- roles:
- admin: Riarthóir
- moderator: Modhnóir
- staff: Foireann
- user: Úsáideoir
search: Cuardaigh
statuses: Postálacha
title: Cuntais
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index 387ba6c2a3..2f0639990f 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -28,7 +28,6 @@ gd:
learn_more: Barrachd fiosrachaidh
logged_in_as_html: Tha thu air do chlàradh a-steach an-dràsta mar %{username}.
logout_before_registering: Tha thu air clàradh a-steach mu thràth.
- privacy_policy: Poileasaidh prìobhaideachd
rules: Riaghailtean an fhrithealaiche
rules_html: 'Tha geàrr-chunntas air na riaghailtean a dh’fheumas tu gèilleadh riutha ma tha thu airson cunntas fhaighinn air an fhrithealaiche Mastodon seo gu h-ìosal:'
see_whats_happening: Faic dè tha dol
@@ -40,7 +39,7 @@ gd:
other: post
two: phost
status_count_before: A dh’fhoillsich
- terms: Teirmichean na seirbheise
+ tagline: Lìonra sòisealta sgaoilte
unavailable_content: Frithealaichean fo mhaorsainneachd
unavailable_content_description:
domain: Frithealaiche
@@ -90,10 +89,8 @@ gd:
posts_tab_heading: Postaichean
posts_with_replies: Postaichean ’s freagairtean
roles:
- admin: Rianaire
bot: Bot
group: Buidheann
- moderator: Maor
unavailable: Chan eil a’ phròifil ri làimh
unfollow: Na lean tuilleadh
admin:
@@ -112,12 +109,17 @@ gd:
avatar: Avatar
by_domain: Àrainn
change_email:
- changed_msg: Chaidh post-d a’ chunntais atharrachadh!
+ changed_msg: Chaidh am post-d atharrachadh!
current_email: Am post-d làithreach
label: Atharraich am post-d
new_email: Post-d ùr
submit: Atharraich am post-d
title: Atharraich am post-d airson %{username}
+ change_role:
+ changed_msg: Chaidh an dreuchd atharrachadh!
+ label: Atharraich an dreuchd
+ no_role: Gun dreuchd
+ title: Atharraich an dreuchd aig %{username}
confirm: Dearbh
confirmed: Chaidh a dhearbhachadh
confirming: "’Ga dhearbhadh"
@@ -161,6 +163,7 @@ gd:
active: Gnìomhach
all: Na h-uile
pending: Ri dhèiligeadh
+ silenced: Cuingichte
suspended: À rèim
title: Maorsainneachd
moderation_notes: Nòtaichean na maorsainneachd
@@ -168,6 +171,7 @@ gd:
most_recent_ip: An IP as ùire
no_account_selected: Cha deach cunntas sam bith atharrachadh o nach deach gin dhiubh a thaghadh
no_limits_imposed: Cha deach crìoch sam bith a sparradh
+ no_role_assigned: Cha deach dreuchd iomruineadh
not_subscribed: Gun fho-sgrìobhadh
pending: A’ feitheamh air lèirmheas
perform_full_suspension: Cuir à rèim
@@ -196,12 +200,7 @@ gd:
reset: Ath-shuidhich
reset_password: Ath-shuidhich am facal-faire
resubscribe: Fo-sgrìobh a-rithist
- role: Ceadan
- roles:
- admin: Rianaire
- moderator: Maor
- staff: Ball dhen sgioba
- user: Cleachdaiche
+ role: Dreuchd
search: Lorg
search_same_email_domain: Cleachdaichean eile aig a bheil an aon àrainn puist-d
search_same_ip: Cleachdaichean eile aig a bheil an t-aon IP
@@ -306,7 +305,6 @@ gd:
create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target}
demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target}
destroy_announcement_html: Sguab %{name} às am brath-fios %{target}
- destroy_custom_emoji_html: Mhill %{name} an Emoji %{target}
destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target}
destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target}
destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target}
@@ -341,7 +339,6 @@ gd:
update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target}
update_domain_block_html: Dh’ùraich %{name} bacadh na h-àrainne %{target}
update_status_html: Dh’ùraich %{name} post le %{target}
- deleted_status: "(post air a sguabadh às)"
empty: Cha deach loga a lorg.
filter_by_action: Criathraich a-rèir gnìomha
filter_by_user: Criathraich a-rèir cleachdaiche
@@ -676,6 +673,71 @@ gd:
unresolved: Gun fhuasgladh
updated_at: Air ùrachadh
view_profile: Seall a’ phròifil
+ roles:
+ add_new: Cuir dreuchd ris
+ assigned_users:
+ few: "%{count} cleachdaichean"
+ one: "%{count} chleachdaiche"
+ other: "%{count} cleachdaiche"
+ two: "%{count} chleachdaiche"
+ categories:
+ administration: Rianachd
+ devops: DevOps
+ invites: Cuiridhean
+ moderation: Maorsainneachd
+ special: Sònraichte
+ delete: Sguab às
+ description_html: Le dreuchdan chleachdaichean, ’s urrainn dhut gnàthachadh dè na gleusan is raointean de Mhastodon as urrainn dha na cleachdaichean agad inntrigeadh.
+ edit: Deasaich an dreuchd aig “%{name}“
+ everyone: Na ceadan bunaiteach
+ everyone_full_description_html: Seo an dreuchd bhunaiteach a bheir buaidh air gach cleachdaiche, fiù an fheadhainn nach deach dreuchd iomruineadh dhaibh. Gheibh a h-uile dreuch ceadan uaipe mar dhìleab.
+ permissions_count:
+ few: "%{count} ceadan"
+ one: "%{count} chead"
+ other: "%{count} cead"
+ two: "%{count} chead"
+ privileges:
+ administrator: Rianaire
+ administrator_description: Chan eil cuingeachadh sam bith air na cleachdaichean aig bheil an cead seo
+ delete_user_data: Sguab às dàta a’ chleachdaiche
+ delete_user_data_description: Leigidh seo le cleachdaichean dàta chleachdaichean eile a sguabadh às gun dàil
+ invite_users: Thoir cuireadh do chleachdaichean
+ invite_users_description: Leigidh seo le cleachdaichean cuireadh dhan fhrithealaiche a chur gu daoine eile
+ manage_announcements: Stiùireadh nam brathan-fios
+ manage_announcements_description: Leigidh seo le cleachdaichean brathan-fios a stiùireadh air an fhrithealaiche
+ manage_appeals: Stiùireadh ath-thagraidhean
+ manage_appeals_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air ath-thagraidhean an aghaidh gnìomhan mhaor
+ manage_blocks: Stiùireadh nam bacaidhean
+ manage_blocks_description: Leigidh seo le cleachdaichean solaraichean puist-d is seòlaidhean IP a bhacadh
+ manage_custom_emojis: Stiùireadh nan Emojis gnàthaichte
+ manage_custom_emojis_description: Leigidh seo le cleachdaichean Emojis gnàthaichte a stiùireadh air an fhrithealaiche
+ manage_federation: Stiùireadh a’ cho-nasgaidh
+ manage_federation_description: Leigidh seo le cleachdaichean an co-nasgadh le àrainnean eile a bhacadh no a cheadachadh agus stiùireadh dè ghabhas lìbhrigeadh
+ manage_invites: Stiùireadh nan cuiridhean
+ manage_invites_description: Leigidh seo le cleachdaichean ceanglaichean cuiridh a rùrachadh ’s a chur à gnìomh
+ manage_reports: Stiùireadh ghearanan
+ manage_reports_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air gearanan agus gnìomhan maoir a ghabhail ’nan aghaidh
+ manage_roles: Stiùireadh dhreuchdan
+ manage_roles_description: Leigidh seo le cleachdaichean dreuchdan a stiùireadh is iomruineadh do dh’ìochdaran
+ manage_rules: Stiùireadh nan riaghailtean
+ manage_rules_description: Leigidh seo le cleachdaichean riaghailtean an fhrithealaiche atharrachadh
+ manage_settings: Stiùireadh nan roghainnean
+ manage_settings_description: Leigidh seo le cleachdaichean roghainnean na làraich atharrachadh
+ manage_taxonomies: Stiùireadh thacsonamaidhean
+ manage_taxonomies_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air an t-susbaint a tha a’ treandadh agus roghainnean nan tagaichean hais ùrachadh
+ manage_user_access: Stiùireadh inntrigeadh chleachdaichean
+ manage_user_access_description: Leigidh seo le cleachdaichean gun cuir iad à comas dearbhadh dà-cheumnach càich, gun atharraich iad an seòladh puist-d aca is gun ath-shuidhich iad am facal-faire aca
+ manage_users: Stiùireadh chleachdaichean
+ manage_users_description: Leigidh seo le cleachdaichean mion-fhiosrachadh càich a shealltainn agus gnìomhan maoir a ghabhail ’nan aghaidh
+ manage_webhooks: Stiùireadh nan webhooks
+ manage_webhooks_description: Leigidh seo le cleachdaichean webhooks a shuidheachadh do thachartasan na rianachd
+ view_audit_log: Coimhead air an loga sgrùdaidh
+ view_audit_log_description: Leigidh seo le cleachdaichean coimhead air eachdraidh gnìomhan na rianachd air an fhrithealaiche
+ view_dashboard: Coimhead air an deas-bhòrd
+ view_dashboard_description: Leigidh seo le cleachdaichean an deas-bhòrd agus meatrachdan inntrigeadh
+ view_devops: DevOps
+ view_devops_description: Leigidh seo le cleachdaichean na deas-bhùird aig Sidekiq is pgHero inntrigeadh
+ title: Dreuchdan
rules:
add_new: Cuir riaghailt ris
delete: Sguab às
@@ -728,9 +790,6 @@ gd:
deletion:
desc_html: Leig le neach sa bith an cunntas a sguabadh às
title: Fosgail sguabadh às chunntasan
- min_invite_role:
- disabled: Na ceadaich idir
- title: Ceadaich cuiridhean le
require_invite_text:
desc_html: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil
title: Iarr air cleachdaichean ùra gun innis iad carson a tha iad ag iarraidh ballrachd
@@ -743,9 +802,6 @@ gd:
show_known_fediverse_at_about_page:
desc_html: Nuair a bhios seo à comas, cha sheall an loidhne-ama phoblach a thèid a cheangal rithe on duilleag-landaidh ach susbaint ionadail
title: Gabh a-staigh susbaint cho-naisgte air duilleag na loidhne-ama poblaich gun ùghdarrachadh
- show_staff_badge:
- desc_html: Seall bràist sgioba air duilleag cleachdaiche
- title: Seall bràist sgioba
site_description:
desc_html: Earrann tuairisgeil air an API. Mìnich dè tha sònraichte mun fhrithealaiche Mastodon seo agus rud sa bith eile a tha cudromach. ’S urrainn dhut tagaichean HTML a chleachdadh agus <a>
’s <em>
gu sònraichte.
title: Tuairisgeul an fhrithealaiche
@@ -755,9 +811,6 @@ gd:
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
@@ -766,9 +819,6 @@ gd:
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 susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh
title: Treandaichean
@@ -885,6 +935,28 @@ gd:
edit_preset: Deasaich rabhadh ro-shuidhichte
empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast.
title: Stiùirich na rabhaidhean ro-shuidhichte
+ webhooks:
+ add_new: Cuir puing-dheiridh ris
+ delete: Sguab às
+ description_html: Bheir webhook comas do Mhastodon gus brathan fìor-ama a phutadh dhan aplacaid agad fhèin mu na tachartasan a thagh thu ach an adhbharaich an aplacaid agad freagairtean gu fèin-obrachail.
+ disable: Cuir à comas
+ disabled: À comas
+ edit: Deasaich a’ phuing-dheiridh
+ empty: Cha deach puing-deiridh webhook sam bith a rèiteachadh fhathast.
+ enable: Cuir an comas
+ enabled: Gnìomhach
+ enabled_events:
+ few: Tha %{count} tachartasan an comas
+ one: Tha %{count} tachartas an comas
+ other: Tha %{count} tachartas an comas
+ two: Tha %{count} thachartas an comas
+ events: Tachartasan
+ new: Webhook ùr
+ rotate_secret: Cuairtich an rùn
+ secret: Rùn soidhnich
+ status: Staid
+ title: Webhooks
+ webhook: Webhook
admin_mailer:
new_appeal:
actions:
@@ -1009,7 +1081,7 @@ gd:
post_follow:
close: Air neo dùin an uinneag seo.
return: Seall pròifil a’ chleachdaiche
- web: Tadhail air an lìon
+ web: Tadhail air an duilleag-lìn
title: Lean air %{acct}
challenge:
confirm: Lean air adhart
@@ -1137,15 +1209,26 @@ gd:
public: Loidhnichean-ama poblach
thread: Còmhraidhean
edit:
+ add_keyword: Cuir facal-luirg ris
+ keywords: Faclan-luirg
title: Deasaich a’ chriathrag
errors:
+ deprecated_api_multiple_keywords: Cha ghabh na paramadairean seo atharrachadh on aplacaid seo on a bhios iad an sàs air iomadh facal-luirg na criathraige. Cleachd aplacaid nas ùire no an eadar-aghaidh-lìn.
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:
+ contexts: Criathradh am broinn %{contexts}
delete: Sguab às
empty: Chan eil criathrag agad.
+ expires_in: Falbhaidh an ùine air an ceann %{distance}
+ expires_on: Falbhaidh an ùine air %{date}
+ keywords:
+ few: "%{count} faclan-luirg"
+ one: "%{count} fhacal-luirg"
+ other: "%{count} facal-luirg"
+ two: "%{count} fhacal-luirg"
title: Criathragan
new:
+ save: Sàbhail a’ chriathrag ùr
title: Cuir criathrag ùr ris
footer:
developers: Luchd-leasachaidh
@@ -1268,23 +1351,10 @@ gd:
copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:'
notification_mailer:
admin:
+ report:
+ subject: Rinn %{name} gearan
sign_up:
subject: Chlàraich %{name}
- 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 🐘"
- one: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘"
- other: "%{count} brath ùr on tadhal mu dheireadh agad 🐘"
- two: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘"
- 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
@@ -1344,7 +1414,7 @@ gd:
polls:
errors:
already_voted: Chuir thu bhòt sa chunntas-bheachd seo mu thràth
- duplicate_options: " – tha nithean dùblaichte ann"
+ 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
@@ -1673,7 +1743,6 @@ gd:
Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-26mh dhen Chèitean 2022.
Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.
- title: Teirmichean na seirbheise ⁊ poileasaidh prìobhaideachd %{instance}
themes:
contrast: Mastodon (iomsgaradh àrd)
default: Mastodon (dorcha)
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 10454b5fde..23b3d52ae7 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -28,7 +28,7 @@ gl:
learn_more: Saber máis
logged_in_as_html: Entraches como %{username}.
logout_before_registering: Xa iniciaches sesión.
- privacy_policy: Política de privacidade
+ 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: Mira o que acontece
@@ -39,7 +39,6 @@ gl:
other: publicacións
status_count_before: Que publicaron
tagline: Rede social descentralizada
- terms: Termos do servizo
unavailable_content: Contido non dispoñíbel
unavailable_content_description:
domain: Servidor
@@ -83,10 +82,8 @@ gl:
posts_tab_heading: Publicacións
posts_with_replies: Publicacións e respostas
roles:
- admin: Administradora
bot: Bot
group: Grupo
- moderator: Moderadora
unavailable: Perfil non dispoñíbel
unfollow: Deixar de seguir
admin:
@@ -105,12 +102,17 @@ gl:
avatar: Imaxe de perfil
by_domain: Dominio
change_email:
- changed_msg: Email da conta mudado de xeito correcto!
+ changed_msg: Email mudado de xeito correcto!
current_email: Email actual
label: Mudar email
new_email: Novo email
submit: Mudar email
title: Mudar email de %{username}
+ change_role:
+ changed_msg: Rol mudado correctamente!
+ label: Cambiar rol
+ no_role: Sen rol
+ title: Cambiar o rol de %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Estase a confirmar
@@ -154,6 +156,7 @@ gl:
active: Activa
all: Todo
pending: Pendente
+ silenced: Limitada
suspended: Suspendidos
title: Moderación
moderation_notes: Notas de moderación
@@ -161,6 +164,7 @@ gl:
most_recent_ip: IP máis recente
no_account_selected: Ningunha conta mudou porque ningunha foi seleccionada
no_limits_imposed: Sen límites impostos
+ no_role_assigned: Sen rol asignado
not_subscribed: Non subscrita
pending: Revisión pendente
perform_full_suspension: Suspender
@@ -187,12 +191,7 @@ gl:
reset: Restabelecer
reset_password: Restabelecer contrasinal
resubscribe: Resubscribir
- role: Permisos
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Persoal (staff)
- user: Usuaria
+ role: Rol
search: Procurar
search_same_email_domain: Outras usuarias co mesmo dominio de email
search_same_ip: Outras usuarias co mesmo IP
@@ -235,17 +234,21 @@ gl:
approve_user: Aprobar Usuaria
assigned_to_self_report: Asignar denuncia
change_email_user: Editar email da usuaria
+ change_role_user: Cambiar Rol da Usuaria
confirm_user: Confirmar usuaria
create_account_warning: Crear aviso
create_announcement: Crear anuncio
+ create_canonical_email_block: Crear Bloqueo de email
create_custom_emoji: Crear emoticonas personalizadas
create_domain_allow: Crear Dominio Permitido
create_domain_block: Crear bloquedo do 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
+ create_user_role: Crear Rol
demote_user: Degradar usuaria
destroy_announcement: Eliminar anuncio
+ destroy_canonical_email_block: Eliminar Bloqueo de email
destroy_custom_emoji: Eliminar emoticona personalizada
destroy_domain_allow: Eliminar Dominio permitido
destroy_domain_block: Eliminar bloqueo do Dominio
@@ -254,6 +257,7 @@ gl:
destroy_ip_block: Eliminar regra IP
destroy_status: Eliminar publicación
destroy_unavailable_domain: Eliminar dominio Non dispoñible
+ destroy_user_role: Eliminar Rol
disable_2fa_user: Desactivar 2FA
disable_custom_emoji: Desactivar emoticona personalizada
disable_sign_in_token_auth_user: Desactivar Autenticación por token no email para Usuaria
@@ -280,24 +284,30 @@ gl:
update_announcement: Actualizar anuncio
update_custom_emoji: Actualizar emoticona personalizada
update_domain_block: Actualizar bloqueo do dominio
+ update_ip_block: Actualizar regra IP
update_status: Actualizar publicación
+ update_user_role: Actualizar Rol
actions:
approve_appeal_html: "%{name} aprobou a apelación da decisión da moderación de %{target}"
approve_user_html: "%{name} aprobou o rexistro de %{target}"
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}"
+ change_role_user_html: "%{name} cambiou o rol de %{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_canonical_email_block_html: "%{name} bloqueou o email con hash %{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}"
+ create_user_role_html: "%{name} creou o rol %{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_canonical_email_block_html: "%{name} desbloqueou o email con hash %{target}"
+ destroy_custom_emoji_html: "%{name} eliminou 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}"
@@ -305,6 +315,7 @@ gl:
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}"
+ destroy_user_role_html: "%{name} eliminou o rol %{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_sign_in_token_auth_user_html: "%{name} desactivou a autenticación por token no email para %{target}"
@@ -331,8 +342,9 @@ gl:
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_ip_block_html: "%{name} cambiou a regra para IP %{target}"
update_status_html: "%{name} actualizou a publicación de %{target}"
- deleted_status: "(publicación eliminada)"
+ update_user_role_html: "%{name} cambiou o rol %{target}"
empty: Non se atoparon rexistros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuaria
@@ -601,7 +613,7 @@ gl:
delete_description_html: As publicacións denunciadas van ser eliminadas e gárdase un aviso para axudarche a xestionar futuras infraccións desta conta.
mark_as_sensitive_description_html: Os multimedia das publicacións denunciadas serán marcados como sensibles e engadirase un aviso para axudarche a xestionar futuras infraccións da mesma conta.
other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada.
- resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardan avisos, e a denuncia arquivada.
+ resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardarán avisos, e pecharase a denuncia.
silence_description_html: O perfil será visible só para quen xa o está a seguir ou quen o buscou manualmente, limitando moito o seu alcance. Pódese cambiar.
suspend_description_html: O perfil e tódolos seus contidos será inaccesbles e finalmente eliminados. A interacción coa conta non será posible. Reversible durante 30 días.
actions_description_html: Decide que acción tomar respecto desta denuncia. Se tomas accións punitivas contra a conta denunciada, enviaráselles un email coa notificación, excepto se está seleccionada a categoría Spam.
@@ -631,7 +643,7 @@ gl:
placeholder: Describir que accións foron tomadas ou calquera outra novidade sobre esta denuncia...
title: Notas
notes_description_html: Ver e deixar unha nota para ti no futuro e outras moderadoras
- quick_actions_description_html: 'Tomar unha acción rápida ou desprázate abaixo para ver o contido denunciado:'
+ quick_actions_description_html: 'Toma unha acción rápida ou desprázate abaixo para ver o contido denunciado:'
remote_user_placeholder: a usuaria remota desde %{instance}
reopen: Reabrir denuncia
report: 'Denuncia #%{id}'
@@ -649,6 +661,67 @@ gl:
unresolved: Non resolto
updated_at: Actualizado
view_profile: Ver perfil
+ roles:
+ add_new: Engadir rol
+ assigned_users:
+ one: "%{count} usuaria"
+ other: "%{count} usuarias"
+ categories:
+ administration: Administración
+ devops: DevOps
+ invites: Convites
+ moderation: Moderación
+ special: Especial
+ delete: Eliminar
+ description_html: Cos roles das usuarias podes personalizar as funcións e áreas de Mastodon ás que as usuarias poden acceder.
+ edit: Editar rol '%{name}'
+ everyone: Permisos por defecto
+ everyone_full_description_html: Este é o rol básico que afecta a tódalas usuarias, incluso aquelas sen un rol asignado. Tódolos outros roles herdan os seus permisos.
+ permissions_count:
+ one: "%{count} permiso"
+ other: "%{count} permisos"
+ privileges:
+ administrator: Administradora
+ administrator_description: As usuarias con este permiso poderán superar calquera restrición
+ delete_user_data: Eliminar datos de usuarias
+ delete_user_data_description: Permite eliminar datos doutras usuarias sen demoras
+ invite_users: Convidar usuarias
+ invite_users_description: Permite que outras usuarias conviden a xente ao servidor
+ manage_announcements: Xestionar anuncios
+ manage_announcements_description: Permite que xestionen os anuncios publicados no servidor
+ manage_appeals: Xestionar recursos
+ manage_appeals_description: Permite revisar as apelacións contra as accións de moderación
+ manage_blocks: Xestionar bloqueos
+ manage_blocks_description: Permite bloquear provedores de email e enderezos IP
+ manage_custom_emojis: Xestionar Emojis personalizados
+ manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor
+ manage_federation: Xestionar a federación
+ manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas
+ manage_invites: Xestionar Convites
+ manage_invites_description: Permite ver e desactivar ligazóns de convite
+ manage_reports: Xestionar Denuncias
+ manage_reports_description: Permite revisar as denuncias e realizar accións de moderación sobre elas
+ manage_roles: Xestionar Roles
+ manage_roles_description: Permite xestionar e asignar roles a niveis inferiores
+ manage_rules: Xestionar Regras
+ manage_rules_description: Permite cambiar as regras do servidor
+ manage_settings: Xestionar Axustes
+ manage_settings_description: Permite cambiar os axustes do sitio web
+ manage_taxonomies: Xestionar Taxonomías
+ manage_taxonomies_description: Permite revisar o contido en voga e actualizar os axustes dos cancelos
+ manage_user_access: Xestionar Acceso das usuarias
+ manage_user_access_description: Permite desactivar o segundo factor de autenticación doutras usuarias, cambiar o enderezo de email e restablecer o contrasinal
+ manage_users: Xestionar Usuarias
+ manage_users_description: Permite ver os detalles doutras usuarias e realizar accións de moderación sobre elas
+ manage_webhooks: Xestionar Webhooks
+ manage_webhooks_description: Permite establecer webhooks para eventos administrativos
+ view_audit_log: Ver Rexistro de auditoría
+ view_audit_log_description: Permite ver o historial de accións administrativas no servidor
+ view_dashboard: Ver Taboleiro
+ view_dashboard_description: Permite acceder ao taboleiro e varias métricas do servidor
+ view_devops: Devops
+ view_devops_description: Permite acceder aos taboleiros Sidekiq e phHero
+ title: Roles
rules:
add_new: Engadir regra
delete: Eliminar
@@ -701,9 +774,6 @@ gl:
deletion:
desc_html: Permitirlle a calquera que elimine a súa conta
title: Abrir o borrado da conta
- min_invite_role:
- disabled: Ninguén
- title: Permitir convites por
require_invite_text:
desc_html: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo
title: Require que as novas usuarias completen solicitude de texto do convite
@@ -716,9 +786,6 @@ gl:
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: 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
site_description:
desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a>
e <em>
.
title: Descrición do servidor
@@ -729,8 +796,8 @@ gl:
desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor.
title: Descrición curta do servidor
site_terms:
- 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
+ desc_html: Podes escribir a túa propia Política de Privacidade e usar etiquetas HTML
+ title: Política de Privacidade propia
site_title: Nome do servidor
thumbnail:
desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px
@@ -740,8 +807,8 @@ gl:
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
- title: Permite ós cancelos ser tendencia sen revisión previa
+ desc_html: Poderase prohibir igualmente contido en voga específico
+ title: Permitir tendencias sen aprobación previa
trends:
desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia
title: Cancelos en tendencia
@@ -1124,16 +1191,40 @@ gl:
public: Cronoloxías públicas
thread: Conversas
edit:
+ add_keyword: Engadir palabra chave
+ keywords: Palabras chave
+ statuses: Publicacións individuais
+ statuses_hint_html: O filtro aplícase para seleccionar publicacións individuais independentemente de se concorda coas palabras chave indicadas. Revisa ou elimina publicacións do filtro.
title: Editar filtro
errors:
+ deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web.
invalid_context: Non se proporcionou un contexto válido
- invalid_irreversible: O filtrado non reversible só funciona con contexto de avisos ou Inicio
index:
+ contexts: Filtros para %{contexts}
delete: Eliminar
empty: Non tes filtros.
+ expires_in: Caduca en %{distance}
+ expires_on: Caduca o %{date}
+ keywords:
+ one: "%{count} palabra chave"
+ other: "%{count} palabras chave"
+ statuses:
+ one: "%{count} publicación"
+ other: "%{count} publicacións"
+ statuses_long:
+ one: "%{count} publicación individual agochada"
+ other: "%{count} publicacións individuais agochadas"
title: Filtros
new:
+ save: Gardar o novo filtro
title: Engadir novo filtro
+ statuses:
+ back_to_filter: Volver ao filtro
+ batch:
+ remove: Eliminar do filtro
+ index:
+ hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface web.
+ title: Publicacións filtradas
footer:
developers: Desenvolvedoras
more: Máis…
@@ -1141,12 +1232,22 @@ gl:
trending_now: Tendencia agora
generic:
all: Todo
+ all_items_on_page_selected_html:
+ one: "%{count} elemento seleccionado nesta páxina."
+ other: Tódolos %{count} elementos desta páxina están seleccionados.
+ all_matching_items_selected_html:
+ one: "%{count} elemento coincidente coa busca está seleccionado."
+ other: Tódolos %{count} elementos coincidentes coa busca están seleccionados.
changes_saved_msg: Cambios gardados correctamente!!
copy: Copiar
delete: Eliminar
+ deselect: Desmarcar todo
none: Ningún
order_by: Ordenar por
save_changes: Gardar cambios
+ select_all_matching_items:
+ one: Seleccionar %{count} elemento coincidente coa busca.
+ other: Seleccionar tódolos %{count} elementos coincidentes coa busca.
today: hoxe
validation_errors:
one: Algo non está ben de todo! Por favor revise abaixo o erro
@@ -1251,19 +1352,10 @@ gl:
copy_account_note_text: 'Esta usuaria chegou desde %{acct}, aquí están as túas notas previas acerca dela:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} enviou unha denuncia"
sign_up:
subject: "%{name} rexistrouse"
- digest:
- action: Ver todas as notificacións
- body: Aquí ten un breve resumo das mensaxes publicadas desde a súa última visita en %{since}
- mention: "%{name} mencionouna en:"
- new_followers_summary:
- one: Ademáis, ten unha nova seguidora desde entón! Ben!
- other: Ademáis, obtivo %{count} novas seguidoras desde entón! Tremendo!
- subject:
- one: "1 nova notificación desde a última visita 🐘"
- other: "%{count} novas notificacións desde a última visita 🐘"
- title: Na súa ausencia...
favourite:
body: 'A túa publicación foi marcada como favorita por %{name}:'
subject: "%{name} marcou como favorita a túa publicación"
@@ -1279,7 +1371,7 @@ gl:
title: Nova petición de seguimento
mention:
action: Responder
- body: 'Foi mencionada por %{name} en:'
+ body: "%{name} mencionoute en:"
subject: Foches mencionada por %{name}
title: Nova mención
poll:
@@ -1593,7 +1685,7 @@ gl:
Se decidimos cambiar a nosa política de privacidade publicaremos os cambios nesta páxina.
Este documento ten licenza CC-BY-SA. Actualizouse o 26 de maio de 2022.
Adaptado do orixinal política de privacidade de Discourse.
- title: "%{instance} Termos do Servizo e Política de Intimidade"
+ title: Política de Privacidade de %{instance}
themes:
contrast: Mastodon (Alto contraste)
default: Mastodon (Escuro)
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 0400341255..3ec99349ad 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -28,19 +28,18 @@ he:
learn_more: מידע נוסף
logged_in_as_html: הנך מחובר/ת כרגע כ-%{username}.
logout_before_registering: חשבון זה כבר מחובר.
- privacy_policy: מדיניות פרטיות
rules: כללי השרת
rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:'
see_whats_happening: מה קורה כעת
server_stats: 'סטטיסטיקות שרת:'
source_code: קוד מקור
status_count_after:
- many: חצרוצים
- one: חצרוץ
- other: חצרוצים
- two: חצרוצים
+ many: פוסטים
+ one: פוסט
+ other: פוסטים
+ two: פוסטים
status_count_before: שכתבו
- terms: תנאי שימוש
+ tagline: רשת חברתית מבוזרת
unavailable_content: שרתים מוגבלים
unavailable_content_description:
domain: שרת
@@ -83,17 +82,15 @@ he:
pin_errors:
following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו
posts:
- many: חצרוצים
- one: חצרוץ
- other: חצרוצים
- two: חצרוצים
+ many: פוסטים
+ one: פוסט
+ other: פוסטים
+ two: פוסטים
posts_tab_heading: חצרוצים
posts_with_replies: חצרוצים ותגובות
roles:
- admin: מנהל
bot: בוט
group: קבוצה
- moderator: מנחה
unavailable: פרופיל לא זמין
unfollow: הפסקת מעקב
admin:
@@ -112,12 +109,17 @@ he:
avatar: יַצְגָן
by_domain: שם מתחם
change_email:
- changed_msg: כתובת הדוא"ל המשוייכת לחשבון שונתה בהצלחה !
+ changed_msg: דוא"ל שונה בהצלחה
current_email: כתובת דוא"ל נוכחית
label: שינוי כתובת דוא"ל משוייכת לחשבון
new_email: כתובת דוא"ל חדשה
submit: שלחי בקשה לשינוי דוא"ל
title: שינוי כתובת דוא"ל עבור המשתמש.ת %{username}
+ change_role:
+ changed_msg: תפקיד שונה בהצלחה !
+ label: שנה תפקיד
+ no_role: ללא תפקיד
+ title: שינוי תפקיד עבור המשתמש.ת %{username}
confirm: אישור
confirmed: אושר
confirming: המאשר
@@ -161,6 +163,7 @@ he:
active: פעילים
all: הכל
pending: בהמתנה
+ silenced: מוגבלים
suspended: מושהים
title: ניהול קהילה
moderation_notes: הודעות מנחה
@@ -168,6 +171,7 @@ he:
most_recent_ip: כתובות אחרונות
no_account_selected: לא בוצעו שינויים בחשבונות ל שכן לא נבחרו חשבונות
no_limits_imposed: לא הוטלו הגבלות
+ no_role_assigned: ללא תפקיד
not_subscribed: לא רשום
pending: ממתינים לסקירה
perform_full_suspension: ביצוע השעייה מלאה
@@ -194,20 +198,15 @@ he:
send: שלח מחדש דוא"ל אימות
success: הודעת האימייל נשלחה בהצלחה!
reset: איפוס
- reset_password: אתחול סיסמא
+ reset_password: איפוס סיסמה
resubscribe: להרשם מחדש
- role: הרשאות
- roles:
- admin: מנהל מערכת
- moderator: מנחה דיונים
- staff: צוות
- user: משתמש(ת)
+ role: תפקיד
search: חיפוש
search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל
search_same_ip: משתמשים אחרים מאותה כתובת IP
security_measures:
- only_password: סיסמא בלבד
- password_and_2fa: סיסמא ואימות דו-גורמי
+ only_password: סיסמה בלבד
+ password_and_2fa: סיסמה ואימות דו-שלבי
sensitive: מאולצים לרגישות
sensitized: מסומנים כרגישים
shared_inbox_url: תיבה משותפת לדואר נכנס
@@ -244,6 +243,7 @@ he:
approve_user: אישור משתמש
assigned_to_self_report: הקצאת דו"ח
change_email_user: שינוי כתובת דוא"ל למשתמש
+ change_role_user: שינוי תפקיד למשתמש
confirm_user: אשר משתמש
create_account_warning: יצירת אזהרה
create_announcement: יצירת הכרזה
@@ -253,6 +253,7 @@ he:
create_email_domain_block: יצירת חסימת דומיין דוא"ל
create_ip_block: יצירת כלל IP
create_unavailable_domain: יצירת דומיין בלתי זמין
+ create_user_role: יצירת תפקיד
demote_user: הורדת משתמש בדרגה
destroy_announcement: מחיקת הכרזה
destroy_custom_emoji: מחיקת אמוג'י יחודי
@@ -261,8 +262,9 @@ he:
destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל
destroy_instance: טיהור דומיין
destroy_ip_block: מחיקת כלל IP
- destroy_status: מחיקת חצרוץ
+ destroy_status: מחיקת פוסט
destroy_unavailable_domain: מחיקת דומיין בלתי זמין
+ destroy_user_role: מחיקת תפקיד
disable_2fa_user: השעיית זיהוי דו-גורמי
disable_custom_emoji: השעיית אמוג'י מיוחד
disable_sign_in_token_auth_user: השעיית אסימון הזדהות בדוא"ל של משתמש
@@ -276,7 +278,7 @@ he:
reject_user: דחיית משתמש
remove_avatar_user: הסרת תמונת פרופיל
reopen_report: פתיחת דו"ח מחדש
- reset_password_user: איפוס סיסמא
+ reset_password_user: איפוס סיסמה
resolve_report: פתירת דו"ח
sensitive_account: חשבון רגיש לכח
silence_account: הגבלת חשבון
@@ -290,11 +292,13 @@ he:
update_custom_emoji: עדכון סמלון מותאם אישית
update_domain_block: עדכון חסימת שם מתחם
update_status: סטטוס עדכון
+ update_user_role: עדכון תפקיד
actions:
approve_appeal_html: "%{name} אישר/ה ערעור על החלטת מנהלי הקהילה מ-%{target}"
approve_user_html: "%{name} אישר/ה הרשמה מ-%{target}"
assigned_to_self_report_html: '%{name} הקצה/תה דו"ח %{target} לעצמם'
change_email_user_html: '%{name} שינה/תה את כתובת הדוא"ל של המשתמש %{target}'
+ change_role_user_html: "%{name} שינה את התפקיד של %{target}"
confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}'
create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}"
create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}"
@@ -304,16 +308,18 @@ he:
create_email_domain_block_html: '%{name} חסם/ה את דומיין הדוא"ל %{target}'
create_ip_block_html: "%{name} יצר/ה כלל עבור IP %{target}"
create_unavailable_domain_html: "%{name} הפסיק/ה משלוח לדומיין %{target}"
+ create_user_role_html: "%{name} יצר את התפקיד של %{target}"
demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}"
destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}"
- destroy_custom_emoji_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_instance_html: "%{name} טיהר/ה את הדומיין %{target}"
destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}"
- destroy_status_html: "%{name} הסיר/ה חצרוץ מאת %{target}"
+ destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}"
destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}"
+ destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}"
disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}"
disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}"
disable_sign_in_token_auth_user_html: '%{name} השבית/ה את האימות בעזרת אסימון דוא"ל עבור %{target}'
@@ -327,7 +333,7 @@ he:
reject_user_html: "%{name} דחו הרשמה מ-%{target}"
remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}"
reopen_report_html: '%{name} פתח מחדש דו"ח %{target}'
- reset_password_user_html: "%{name} איפס/ה סיסמא עבור המשתמש %{target}"
+ reset_password_user_html: הסיסמה עבור המשתמש %{target} התאפסה על־ידי %{name}
resolve_report_html: '%{name} פתר/ה דו"ח %{target}'
sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש"
silence_account_html: "%{name} הגביל/ה את חשבונו של %{target}"
@@ -340,8 +346,8 @@ he:
update_announcement_html: "%{name} עדכן/ה הכרזה %{target}"
update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}"
update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}"
- update_status_html: "%{name} עדכן/ה חצרוץ של %{target}"
- deleted_status: "(חצרוץ נמחק)"
+ update_status_html: "%{name} עדכן/ה פוסט של %{target}"
+ update_user_role_html: "%{name} שינה את התפקיד של %{target}"
empty: לא נמצאו יומנים.
filter_by_action: סינון לפי פעולה
filter_by_user: סינון לפי משתמש
@@ -445,6 +451,7 @@ he:
destroyed_msg: חסימת שרת בוטלה
domain: שרת
edit: עריכת חסימת שם מתחם
+ existing_domain_block: כבר החלת הגבלות מחמירות יותר על %{name}
existing_domain_block_html: כבר הפעלת הגבלות חמורות יותר על %{name}, עליך ראשית להסיר מעליו/ה את החסימה.
new:
create: יצירת חסימה
@@ -675,6 +682,71 @@ he:
unresolved: לא פתור
updated_at: עודכן
view_profile: צפה בפרופיל
+ roles:
+ add_new: הוספת תפקיד
+ assigned_users:
+ many: "%{count} משתמשים"
+ one: 'משתמש %{count} '
+ other: "%{count} משתמשים"
+ two: "%{count} שני משתמשים"
+ categories:
+ administration: ניהול מערכת
+ devops: פיתוח
+ invites: הזמנות
+ moderation: פיקוח
+ special: מיוחדים
+ delete: מחיקה
+ description_html: באמצעות תפקידי משתמש, תוכלו להתאים אישית לאילו פונקציות ואזורים של מסטודון המשתמשים יוכלו לגשת
+ edit: עריכת התפקיד של %{name}
+ everyone: הרשאות ברירת מחדל
+ everyone_full_description_html: זהו התפקיד הבסיסי שמשפיע על כלל המשתשמשים, אפילו אלו ללא תפקיד. כל התפקידים האחרים יורשים את ההרשאות שלהם ממנו.
+ permissions_count:
+ many: "%{count} הרשאות"
+ one: הרשאה %{count}
+ other: "%{count} הרשאות"
+ two: "%{count} הרשאות"
+ privileges:
+ administrator: מנהל מערכת
+ administrator_description: משתמשים עם הרשאה זו יוכלו לעקוף כל הרשאה
+ delete_user_data: מחיקת כל נתוני המשתמש
+ delete_user_data_description: מאפשר למשתמשים למחוק נתוני משתמשים אחרים ללא דיחוי
+ invite_users: הזמנת משתמשים
+ invite_users_description: מאפשר למשתמשים להזמין אנשים חדשים לשרת
+ manage_announcements: ניהול הכרזות
+ manage_announcements_description: מאפשר למשתמשים לנהל הכרזות של השרת
+ manage_appeals: ניהול ערעורים
+ manage_appeals_description: מאפשר למשתמשים לסקור ערעורים כנגד פעולות מודרציה
+ manage_blocks: ניהול חסימות
+ manage_blocks_description: מאפשר למשתמשים לחסום ספקי דוא"ל וכתובות IP
+ manage_custom_emojis: ניהול סמלונים בהתאמה אישית
+ manage_custom_emojis_description: מאפשר למשתמשים לנהל סמלונים בהתאמה אישית של השרת
+ manage_federation: ניהול פדרציה
+ manage_federation_description: מאפשר למשתמשים לחסום או לאפשר התממשקות עם שמות מתחם אחרים
+ manage_invites: ניהול הזמנות
+ manage_invites_description: מאפשר למשתמשים לעלעל ב ולבטל קישורי הזמנה
+ manage_reports: ניהול דו"חות
+ manage_reports_description: מאפשר למשתמשים לסקור דו"חות ולבצע פעולות מודרציה בהתבסס עליהם
+ manage_roles: ניהול תפקידים
+ manage_roles_description: מאפשר למשתמשים לנהל ולמנות אחרים לתפקידים נמוכים יותר משלהם.
+ manage_rules: ניהול כללים
+ manage_rules_description: מאפשר למשתמשים לנהל את כללי השרת
+ manage_settings: נהל הגדרות
+ manage_settings_description: מאפשר למשתמשים לנהל את הגדרות השרת
+ manage_taxonomies: ניהול טקסונומיות
+ manage_taxonomies_description: מאפשר למשתמשים לסקור תוכן אופנתי (טרנדי) ולעדכן אפשרויות של תגיות.
+ manage_user_access: ניהול גישת משתמשים
+ manage_user_access_description: מאפשר למשתמשים לבטל אימות דו-שלבי של משתמשים אחרים, לשנות את כתובות הדוא"ל שלהם, ולאפס את סיסמתם
+ manage_users: ניהול משתמשים
+ manage_users_description: מאפשר למשתמשים לצפות בפרטים של משתמשים אחרים ולבצע פעולות מודרציה לפיהם
+ manage_webhooks: ניהול Webhooks
+ manage_webhooks_description: מאפשר למשתמשים להגדיר Webhooks לאירועים מנהלתיים
+ view_audit_log: צפייה בלוג ביקורת
+ view_audit_log_description: מאפשר למשתשמשים לצפות בהיסטוריה של פעולות מנהלתיות על השרת
+ view_dashboard: הצג לוח מחוונים
+ view_dashboard_description: אפשר למשתמשים לגשת ללוח המחוונים
+ view_devops: פיתוח
+ view_devops_description: מאפשר למשתמשים לגשת ללוחות המחוונים של Sidekiq ושל pgHero
+ title: תפקידים
rules:
add_new: הוספת כלל
delete: מחיקה
@@ -727,9 +799,6 @@ he:
deletion:
desc_html: הרשאה לכולם למחוק את חשבונם
title: פתיחת מחיקת חשבון
- min_invite_role:
- disabled: אף אחד
- title: אפשר הזמנות לפי
require_invite_text:
desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי
title: אלץ משתמשים חדשים למלא סיבת הצטרפות
@@ -742,9 +811,6 @@ he:
show_known_fediverse_at_about_page:
desc_html: כאשר לא מופעל, מגביל את הפיד הפומבי המקושר מדף הנחיתה להצגת תוכן מקומי בלבד
title: הכללת תוכן פדרטיבי בדף הפיד הפומבי הבלתי מאומת
- show_staff_badge:
- desc_html: הצג תג צוות בדף המשתמש
- title: הצג תג צוות
site_description:
desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a>
ו־ < em>
.
title: תיאור האתר
@@ -754,9 +820,6 @@ he:
site_short_description:
desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת.
title: תאור שרת קצר
- site_terms:
- desc_html: ניתן לכתוב מדיניות פרטיות, תנאי שירות ושאר מסמכים חוקיים בעצמך. ניתן להשתמש בתגי HTML
- title: תנאי שירות יחודיים
site_title: כותרת האתר
thumbnail:
desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px
@@ -765,9 +828,6 @@ he:
desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות
title: הרשאת גישה בלתי מאומתת לפיד הפומבי
title: הגדרות אתר
- trendable_by_default:
- desc_html: משפיע על האשתגיות שלא נאסרו קודם לכן
- title: הרשאה להאשתגיות להופיע בנושאים החמים ללא אישור מוקדם
trends:
desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים
title: נושאים חמים
@@ -840,10 +900,10 @@ he:
title: מפרסמים
rejected: דחוי
statuses:
- allow: הרשאת חצרוץ
+ allow: הרשאת פוסט
allow_account: הרשאת מחבר/ת
description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים.
- disallow: לא לאשר חצרוץ
+ disallow: לדחות פוסט
disallow_account: לא לאשר מחבר/ת
not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים
shared_by:
@@ -885,13 +945,26 @@ he:
empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה.
title: ניהול טקסטים מוכנים מראש לאזהרות
webhooks:
+ add_new: הוספת נקודת קצה
delete: מחיקה
disable: כיבוי
disabled: כבוי
+ edit: עריכת נקודת קצה
+ empty: לא הוגדו נקודות קצה להתליות רשת עדיין.
enable: אפשר
enabled: פעילים
+ enabled_events:
+ many: "%{count} אירועים אופשרו"
+ one: אירוע %{count} מאופשר
+ other: "%{count} אירועים אופשרו"
+ two: "%{count} אירועים אופשרו"
events: אירועים
+ new: Webhook חדש
+ rotate_secret: החלף מפתח
+ secret: מפתח הרשמה
status: סטטוס
+ title: התליות רשת
+ webhook: התליית רשת
admin_mailer:
new_appeal:
actions:
@@ -920,7 +993,7 @@ he:
title: נושאים חמים
new_trending_statuses:
no_approved_statuses: אין כרגע שום חצרוצים חמים מאושרים.
- requirements: כל אחד מהמועמדים האלה עשוי לעבור החצרוץ החם המאושר מדרגה %{rank}, שההא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}.
+ requirements: כל אחד מהמועמדים האלה עשוי לעבור את הפוסט החם המאושר מדרגה %{rank}, שהוא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}.
title: חצרוצים לוהטים
new_trending_tags:
no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות.
@@ -945,14 +1018,14 @@ he:
guide_link: https://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: ישום נמחק בהצלחה
@@ -962,7 +1035,7 @@ he:
your_token: אסימון הגישה שלך
auth:
apply_for_account: בקשת הזמנה
- change_password: סיסמא
+ change_password: סיסמה
checkbox_agreement_html: אני מסכים/ה לכללי השרת ולתנאי השימוש
checkbox_agreement_without_rules_html: אני מסכים/ה לתנאי השימוש
delete_account: מחיקת חשבון
@@ -974,7 +1047,7 @@ he:
didnt_get_confirmation: לא התקבלו הוראות אימות?
dont_have_your_security_key: אין לך מפתח אבטחה?
forgot_password: הנשתכחה סיסמתך?
- invalid_reset_password_token: אסימון איפוס הסיסמא לא תקין או פג תוקף. נא לבקש אחד חדש.
+ invalid_reset_password_token: טוקן איפוס הסיסמה אינו תקין או שפג תוקף. נא לבקש אחד חדש.
link_to_otp: נא להכניס את קוד האימות הדו-גורמי מהטלפון או את קוד האחזור
link_to_webauth: נא להשתמש במכשיר מפתח האבטחה
log_in_with: התחבר באמצעות
@@ -989,9 +1062,9 @@ he:
register: הרשמה
registration_closed: "%{instance} לא מקבל חברים חדשים"
resend_confirmation: שלח הוראות אימות בשנית
- reset_password: איפוס סיסמא
- security: החלפת סיסמא
- set_new_password: שינוי סיסמא
+ reset_password: איפוס סיסמה
+ security: אבטחה
+ set_new_password: סיסמה חדשה
setup:
email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש.
email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון.
@@ -1021,8 +1094,8 @@ he:
challenge:
confirm: המשך
hint_html: "טיפ: לא נבקש את סיסמתך שוב בשעה הקרובה."
- invalid_password: סיסמא שגויה
- prompt: אשר/י סיסמא להמשך
+ invalid_password: סיסמה שגויה
+ prompt: יש לאשר את הסיסמה כדי להמשיך
crypto:
errors:
invalid_key: זהו לא מפתח Ed25519 או Curve25519 קביל
@@ -1047,7 +1120,7 @@ he:
x_seconds: "%{count} שניות"
deletes:
challenge_not_passed: המידע שהכנסת לא היה נכון
- confirm_password: נא להכניס את הסיסמא הנוכחית כדי לוודא את זהותך
+ confirm_password: נא להכניס את הסיסמה הנוכחית כדי לאמת את זהותך
confirm_username: נא להכניס את שם המשתמש כדאי לאשר את הפעולה
proceed: מחיקת חשבון
success_msg: חשבונך נמחק בהצלחה
@@ -1076,15 +1149,17 @@ he:
appealed_msg: הערעור שלך הוגש. במידה ויאושר, תיודע.
appeals:
submit: הגש ערעור
+ approve_appeal: קבלת ערעור
associated_report: הדו"ח המשויך
created_at: מתאריך
description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}.
recipient: הנמען
- status: 'חצרוץ #%{id}'
- status_removed: החצרוץ כבר הוסר מהמערכת
+ reject_appeal: דחיית ערעור
+ status: 'פוסט #%{id}'
+ status_removed: הפוסט כבר הוסר מהמערכת
title: "%{action} מתאריך %{date}"
title_actions:
- delete_statuses: הסרת חצרוץ
+ delete_statuses: הסרת פוסט
disable: הקפאת חשבון
mark_statuses_as_sensitive: סימון חצרוצים כרגישים
none: אזהרה
@@ -1142,16 +1217,35 @@ he:
public: פידים פומביים
thread: שיחות
edit:
+ add_keyword: הוספת מילת מפתח
+ keywords: מילות מפתח
+ statuses: פוסטים יחידים
title: ערוך מסנן
errors:
+ deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי.
invalid_context: לא סופק הקשר או הקשר לא תקין
- invalid_irreversible: סינון בלתי הפיך עובד רק בהקשר פיד הבית או התראות
index:
+ contexts: פילטרים ב %{contexts}
delete: למחוק
empty: אין לך מסננים.
+ expires_in: פג תוקף ב %{distance}
+ expires_on: פג תוקף ב %{date}
+ keywords:
+ many: "%{count} מילות מפתח"
+ one: מילת מפתח %{count}
+ other: "%{count} מילות מפתח"
+ two: "%{count} מילות מפתח"
title: מסננים
new:
+ save: שמירת מסנן חדש
title: הוספת מסנן חדש
+ statuses:
+ back_to_filter: חזרה לפילטר
+ batch:
+ remove: הסרה מפילטר
+ index:
+ hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב.
+ title: פוסטים שסוננו
footer:
developers: מפתחות
more: עוד…
@@ -1162,6 +1256,7 @@ he:
changes_saved_msg: השינויים נשמרו בהצלחה!
copy: להעתיק
delete: למחוק
+ deselect: בטל בחירה של הכל
none: כלום
order_by: מיין לפי
save_changes: שמור שינויים
@@ -1221,7 +1316,7 @@ he:
login_activities:
authentication_methods:
otp: יישומון אימות דו-שלבי
- password: סיסמא
+ password: סיסמה
sign_in_token: קוד אימות בדוא"ל
webauthn: מפתחות אבטחה
description_html: אם את/ה רואה פעילות שאינך מזהה, אנא שנה/י את סיסמתך והפעל/י אימות דו-גורמי.
@@ -1231,7 +1326,7 @@ he:
title: הסטוריית אימותים
media_attachments:
validations:
- images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות
+ images_and_video: לא ניתן להוסיף וידאו לפוסט שכבר מכיל תמונות
not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע!
too_many: לא ניתן להוסיף יותר מארבעה קבצים
migrations:
@@ -1273,23 +1368,10 @@ he:
copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:'
notification_mailer:
admin:
+ report:
+ subject: '%{name} שלח/ה דו"ח'
sign_up:
subject: "%{name} נרשמו"
- digest:
- action: הצגת כל ההתראות
- body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since}
- mention: "%{name} פנה אליך ב:"
- new_followers_summary:
- many: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים!
- one: חוץ מזה, נוסף לך עוקב חדש בזמן שלא היית! הידד!
- other: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים!
- two: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים!
- subject:
- many: "%{count} התראות חדשות מאז ביקורך האחרון 🐘"
- one: "התראה חדשה אחת מאז ביקורך האחרון 🐘"
- other: "%{count} התראות חדשות מאז ביקורך האחרון 🐘"
- two: "%{count} התראות חדשות מאז ביקורך האחרון 🐘"
- title: בהעדרך...
favourite:
body: 'חצרוצך חובב על ידי %{name}:'
subject: חצרוצך חובב על ידי %{name}
@@ -1359,7 +1441,7 @@ he:
too_many_options: לא יכול להכיל יותר מ-%{max} פריטים
preferences:
other: שונות
- posting_defaults: ברירות מחדל לחצרוץ
+ posting_defaults: ברירות מחדל לפוסטים
public_timelines: פידים פומביים
reactions:
errors:
@@ -1392,13 +1474,13 @@ he:
remote_interaction:
favourite:
proceed: המשך לחיבוב
- prompt: 'ברצונך לחבב חצרוץ זה:'
+ prompt: 'ברצונך לחבב פוסט זה:'
reblog:
proceed: המשיכו להדהוד
- prompt: 'ברצונך להדהד חצרוץ זה:'
+ prompt: 'ברצונך להדהד פוסט זה:'
reply:
proceed: המשיבו לתגובה
- prompt: 'ברצונך להשיב לחצרוץ זה:'
+ prompt: 'ברצונך להשיב לפוסט זה:'
reports:
errors:
invalid_rules: לא מתייחס לכללים קבילים
@@ -1504,7 +1586,7 @@ he:
two: 'מכיל את ההאשתגיות האסורות: %{tags}'
edited_at_html: נערך ב-%{date}
errors:
- in_reply_not_found: נראה שהחצרוץ שאת/ה מנסה להגיב לו לא קיים.
+ in_reply_not_found: נראה שהפוסט שאת/ה מנסה להגיב לו לא קיים.
open_in_web: פתח ברשת
over_character_limit: חריגה מגבול התווים של %{max}
pin_errors:
@@ -1574,7 +1656,7 @@ he:
min_reblogs: שמור חצרוצים מהודהדים לפחות
min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו
stream_entries:
- pinned: חצרוץ מוצמד
+ pinned: פוסט נעוץ
reblogged: הודהד
sensitive_content: תוכן רגיש
strikes:
@@ -1583,7 +1665,87 @@ he:
tags:
does_not_match_previous_name: לא תואם את השם האחרון
terms:
- title: תנאי שימוש ומדיניות פרטיות ב-%{instance}
+ body_html: |
+ מדיניות פרטיות
+ איזה מידע אנחנו אוספים ?
+
+
+ - מידע חשבון בסיסי: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
+ - Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
+ - Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
+ - IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
+
+
+
+
+ What do we use your information for?
+
+ Any of the information we collect from you may be used in the following ways:
+
+
+ - To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
+ - To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
+ - The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
+
+
+
+
+ How do we protect your information?
+
+ We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.
+
+
+
+ What is our data retention policy?
+
+ We will make a good faith effort to:
+
+
+ - Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
+ - Retain the IP addresses associated with registered users no more than 12 months.
+
+
+ You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.
+
+ You may irreversibly delete your account at any time.
+
+
+
+ Do we use cookies?
+
+ Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.
+
+ We use cookies to understand and save your preferences for future visits.
+
+
+
+ Do we disclose any information to outside parties?
+
+ We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.
+
+ Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.
+
+ When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.
+
+
+
+ Site usage by children
+
+ If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.
+
+ If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.
+
+ Law requirements can be different if this server is in another jurisdiction.
+
+
+
+ Changes to our Privacy Policy
+
+ If we decide to change our privacy policy, we will post those changes on this page.
+
+ This document is CC-BY-SA. It was last updated May 26, 2022.
+
+ Originally adapted from the Discourse privacy policy.
themes:
contrast: מסטודון (ניגודיות גבוהה)
default: מסטודון (כהה)
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index d0b1082fcd..9a9e3aa7b5 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -5,7 +5,6 @@ hi:
active_count_after: सक्रिय
contact: संपर्क
learn_more: अधिक जानें
- privacy_policy: गोपनीयता नीति
status_count_after:
one: स्थिति
other: स्थितियां
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index fd90a5ac46..89ce1b6255 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -14,11 +14,9 @@ hr:
documentation: Dokumentacija
get_apps: Isprobajte mobilnu aplikaciju
learn_more: Saznajte više
- privacy_policy: Politika privatnosti
server_stats: 'Statistika poslužitelja:'
source_code: Izvorni kôd
status_count_before: Koji su objavili
- terms: Uvjeti pružanja usluga
unavailable_content: Moderirani poslužitelji
accounts:
follow: Prati
@@ -44,7 +42,6 @@ hr:
are_you_sure: Jeste li sigurni?
by_domain: Domena
change_email:
- changed_msg: E-pošta računa uspješno je promijenjena!
current_email: Trenutna e-pošta
label: Promijeni e-poštu
new_email: Nova e-pošta
@@ -72,7 +69,6 @@ hr:
moderation:
all: Sve
action_logs:
- deleted_status: "(izbrisani status)"
empty: Nema pronađenih izvješća.
filter_by_action: Filtriraj prema radnji
filter_by_user: Filtriraj prema korisniku
@@ -163,9 +159,6 @@ hr:
one: 1 korištenje
other: "%{count} korištenja"
notification_mailer:
- digest:
- body: Ovo je kratak sažetak propuštenih poruka od Vašeg prošlog posjeta %{since}
- mention: "%{name} Vas je spomenuo/la:"
favourite:
body: "%{name} je označio/la Vaš status favoritom:"
subject: "%{name} je označio/la Vaš status favoritom"
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 5ee01ea2cf..14afbebd68 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -39,7 +39,6 @@ hu:
other: bejegyzést írt
status_count_before: Eddig
tagline: Decentralizált szociális hálózat
- terms: Felhasználási feltételek
unavailable_content: Kimoderált szerverek
unavailable_content_description:
domain: Szerver
@@ -85,10 +84,8 @@ hu:
posts_tab_heading: Bejegyzés
posts_with_replies: Bejegyzés válaszokkal
roles:
- admin: Adminisztrátor
bot: Bot
group: Csoport
- moderator: Moderátor
unavailable: Nincs ilyen profil
unfollow: Követés vége
admin:
@@ -107,12 +104,17 @@ hu:
avatar: Profilkép
by_domain: Domain
change_email:
- changed_msg: A fiókhoz tartozó e-mailt megváltoztattuk!
+ changed_msg: Az emailt sikeresen megváltoztattuk!
current_email: Jelenlegi e-mail
label: E-mail megváltoztatása
new_email: Új e-mail
submit: E-mail megváltoztatása
title: "%{username} felhasználó e-mail változás"
+ change_role:
+ changed_msg: A szerepet sikeresen megváltoztattuk!
+ label: Szerep megváltoztatása
+ no_role: Nincs szerep
+ title: "%{username} szerepének megváltoztatása"
confirm: Megerősítés
confirmed: Megerősítve
confirming: Megerősítés alatt
@@ -156,6 +158,7 @@ hu:
active: Aktív
all: Összes
pending: Függőben
+ silenced: Korlátozott
suspended: Felfüggesztve
title: Moderáció
moderation_notes: Moderációs bejegyzés
@@ -163,6 +166,7 @@ hu:
most_recent_ip: Legutóbbi IP-cím
no_account_selected: Nem változott meg egy fiók sem, mert semmi sem volt kiválasztva
no_limits_imposed: Nincs korlátozás
+ no_role_assigned: Nincs szerep hozzárendelve
not_subscribed: Nincs feliratkozás
pending: Engedélyezés alatt
perform_full_suspension: Felfüggesztés
@@ -189,12 +193,7 @@ hu:
reset: Visszaállítás
reset_password: Jelszó visszaállítása
resubscribe: Feliratkozás ismét
- role: Engedélyek
- roles:
- admin: Adminisztrátor
- moderator: Moderátor
- staff: Stáb
- user: Felhasználó
+ role: Szerep
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
@@ -237,17 +236,21 @@ hu:
approve_user: Felhasználó Jóváhagyása
assigned_to_self_report: Jelentés hozzárendelése
change_email_user: Felhasználó e-mail címének módosítása
+ change_role_user: Felhasználó szerepkörének módosítása
confirm_user: Felhasználó megerősítése
create_account_warning: Figyelmeztetés létrehozása
create_announcement: Közlemény létrehozása
+ create_canonical_email_block: E-mail tiltás létrehozása
create_custom_emoji: Egyéni emodzsi létrehozása
create_domain_allow: Domain engedélyezés létrehozása
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
+ create_user_role: Szerepkör létrehozása
demote_user: Felhasználó lefokozása
destroy_announcement: Közlemény törlése
+ destroy_canonical_email_block: E-mail tiltás törlése
destroy_custom_emoji: Egyéni emodzsi törlése
destroy_domain_allow: Domain engedélyezés törlése
destroy_domain_block: Domain tiltás törlése
@@ -256,6 +259,7 @@ hu:
destroy_ip_block: IP szabály törlése
destroy_status: Bejegyzés törlése
destroy_unavailable_domain: Elérhetetlen domain törlése
+ destroy_user_role: Szerepkör eltávolítása
disable_2fa_user: Kétlépcsős hitelesítés letiltása
disable_custom_emoji: Egyéni emodzsi letiltása
disable_sign_in_token_auth_user: A felhasználó tokenes e-mail hitelesítésének letiltása
@@ -282,31 +286,38 @@ hu:
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_ip_block: IP-szabály frissítése
update_status: Bejegyzés frissítése
+ update_user_role: Szerepkör frissítése
actions:
approve_appeal_html: "%{name} jóváhagyott egy fellebbezést %{target} moderátori döntéséről"
approve_user_html: "%{name} jóváhagyta %{target} regisztrációját"
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"
+ change_role_user_html: "%{name} módosította %{target} szerepköré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_canonical_email_block_html: "%{name} letiltotta a(z) %{target} hashű e-mailt"
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_ip_block_html: "%{name} létrehozta a(z) %{target} IP-címre vonatkozó szabályt"
create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe"
+ create_user_role_html: "%{name} létrehozta a(z) %{target} szerepkört"
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 az emodzsit: %{target}"
+ destroy_canonical_email_block_html: "%{name} engedélyezte a(z) %{target} hashű e-mailt"
+ destroy_custom_emoji_html: "%{name} törölte a(z) %{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_instance_html: "%{name} véglegesen törölte a(z) %{target} domaint"
- destroy_ip_block_html: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban"
+ destroy_ip_block_html: "%{name} törölte a(z) %{target} IP-címre vonatkozó szabályt"
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"
+ destroy_user_role_html: "%{name} törölte a(z) %{target} szerepkört"
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 az emodzsit: %{target}"
disable_sign_in_token_auth_user_html: "%{name} letiltotta a tokenes e-mail hitelesítést %{target} felhasználóra"
@@ -333,8 +344,9 @@ hu:
update_announcement_html: "%{name} frissítette a %{target} közleményt"
update_custom_emoji_html: "%{name} frissítette az emodzsit: %{target}"
update_domain_block_html: "%{name} frissítette a %{target} domain tiltását"
+ update_ip_block_html: "%{name} módosította a(z) %{target} IP-címre vonatkozó szabályt"
update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését"
- deleted_status: "(törölt bejegyzés)"
+ update_user_role_html: "%{name} módosította a(z) %{target} szerepkört"
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
@@ -651,6 +663,67 @@ hu:
unresolved: Megoldatlan
updated_at: Frissítve
view_profile: Profil megtekintése
+ roles:
+ add_new: Szerep hozzáadása
+ assigned_users:
+ one: "%{count} felhasználó"
+ other: "%{count} felhasználó"
+ categories:
+ administration: Adminisztráció
+ devops: Devops
+ invites: Meghívások
+ moderation: Moderáció
+ special: Speciális
+ delete: Törlés
+ description_html: A felhasználói szerepekkel testreszabhatod, hogy a felhasználóid milyen Mastodon funkciókat és területeket érjenek el.
+ edit: "'%{name}' szerep szerkesztése"
+ everyone: Alapértelmezett engedélyek
+ everyone_full_description_html: Ez az alap szerep, mely minden felhasználóra kihat, azokra is, akiknek nincs hozzárendelt szerepük. Minden más szerep ebből örökli az engedélyeit.
+ permissions_count:
+ one: "%{count} engedély"
+ other: "%{count} engedély"
+ privileges:
+ administrator: Adminisztrátor
+ administrator_description: A felhasználók ezzel a szereppel minden jogosultsággal rendelkeznek
+ delete_user_data: Felhasználói adatok törlése
+ delete_user_data_description: Lehetővé teszi a felhasználónak, hogy azonnal törölhesse más felhasználó adatait
+ invite_users: Felhasználók meghívása
+ invite_users_description: Lehetővé teszi a felhasználónak, hogy új embereket hívjon meg a kiszolgálóra
+ manage_announcements: Hirdetmények kezelése
+ manage_announcements_description: Lehetővé teszi a felhasználónak, hogy a kiszolgáló hirdetményeit kezelje
+ manage_appeals: Fellebbezések kezelése
+ manage_appeals_description: Lehetővé teszi, hogy a felhasználó átnézze a moderációval kapcsolatos fellebbezéseket
+ manage_blocks: Letiltások kezelése
+ manage_blocks_description: Lehetővé teszi, hogy a felhasználó letiltson email szolgáltatókat és IP címeket
+ manage_custom_emojis: Egyedi emodzsik kezelése
+ manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyedi emodzsiait kezelje
+ manage_federation: Föderáció kezelése
+ manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést
+ manage_invites: Meghívások kezelése
+ manage_invites_description: Lehetővé teszi a felhasználó számára, hogy böngéssze és deaktiválja a meghívási hivatkozásokat
+ manage_reports: Bejelentések kezelése
+ manage_reports_description: Lehetővé teszi a felhasználó számára, hogy átnézze a bejelentéseket és moderáljon ezek alapján
+ manage_roles: Szerepek kezelése
+ manage_roles_description: Lehetővé teszi a felhasználó számára, hogy a sajátjánál alacsonyabb rangú szerepeket kezeljen és hozzárendeljen másokhoz
+ manage_rules: Szabályok kezelése
+ manage_rules_description: Lehetővé teszi a felhasználó számára, hogy megváltoztassa a kiszolgáló szabályait
+ manage_settings: Beállítások kezelése
+ manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait
+ manage_taxonomies: Taxonómiák kezelése
+ manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtagek beállításait
+ manage_user_access: Felhasználói hozzáférések kezelése
+ manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat
+ manage_users: Felhasználók kezelése
+ manage_users_description: Lehetővé teszi, hogy a felhasználó megtekintse mások részletes adatait és moderálja őket
+ manage_webhooks: Webhookok kezelése
+ manage_webhooks_description: Lehetővé teszi, hogy a felhasználó webhookokat állítson be adminisztratív eseményekhez
+ view_audit_log: Audit napló megtekintése
+ view_audit_log_description: Lehetővé teszi, hogy a felhasználó megtekintse a kiszolgáló adminisztratív eseményeinek történetét
+ view_dashboard: Irányítópult megtekintése
+ view_dashboard_description: Lehetővé teszi, hogy a felhasználó elérje az irányítópultot és vele számos metrikát
+ view_devops: Devops
+ view_devops_description: Lehetővé teszi, hogy a felhasználó elérje a Sidekiq és pgHero irányítópultjait
+ title: Szerepek
rules:
add_new: Szabály hozzáadása
delete: Törlés
@@ -703,9 +776,6 @@ hu:
deletion:
desc_html: Engedélyezed a felhasználóknak, hogy töröljék fiókjukat
title: Fiók törlésének engedélyezése
- min_invite_role:
- disabled: Senki
- title: Meghívások engedélyezése
require_invite_text:
desc_html: Ha a regisztrációhoz kézi jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális
title: Az új felhasználóktól legyen megkövetelve a meghívási kérés szövegének kitöltése
@@ -718,9 +788,6 @@ hu:
show_known_fediverse_at_about_page:
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
- title: Stáb-jelvény megjelenítése
site_description:
desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a>
és <em>
HTML tageket.
title: Kiszolgáló leírása
@@ -731,19 +798,19 @@ hu:
desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben.
title: Rövid leírás
site_terms:
- 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: Egyéni felhasználási feltételek
+ desc_html: Megírhatod a saját adatvédelmi szabályzatodat. Használhatsz HTML címkéket.
+ title: Egyéni adatvédelmi szabályzat
site_title: A szerver neve
thumbnail:
desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont.
title: A szerver bélyegképe
timeline_preview:
desc_html: Nyilvános idővonal megjelenítése a főoldalon
- title: Idővonal előnézete
+ title: A nyilvános idővonal hitelesítés nélküli elérésének engedélyezése
title: Webhely beállításai
trendable_by_default:
- desc_html: Azokra a hashtagekere hat, melyet előzőleg nem tiltottak le
- title: Felkapott hashtagek engedélyezése előzetes ellenőrzés nélkül
+ desc_html: Az egyes felkapott tartalmak továbbra is explicit módon tilthatók
+ title: Trendek engedélyezése előzetes ellenőrzés nélkül
trends:
desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése
title: Felkapott hashtagek
@@ -1126,16 +1193,40 @@ hu:
public: Nyilvános idővonalak
thread: Beszélgetések
edit:
+ add_keyword: Kulcsszó hozzáadása
+ keywords: Kulcsszavak
+ statuses: Egyedi bejegyzések
+ statuses_hint_html: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik, függetlenül attól, hogy megfelelnek-e a lenti kulcsszavaknak. Engedélyezze vagy távolítsa el a bejegyzéseket a szűrőből.
title: Szűrő szerkesztése
errors:
+ deprecated_api_multiple_keywords: Ezek a paraméterek nem módosíthatóak az alkalmazásból, mert több mint egy szűrőkulcsszóra is hatással vannak. Használd az alkalmazás vagy a webes felület újabb verzióját.
invalid_context: A megadott kontextus hamis vagy hiányzik
- invalid_irreversible: Visszafordíthatatlan szűrést csak saját idővonalon vagy értesítéseken lehet végezni
index:
+ contexts: 'Szűrés helye: %{contexts}'
delete: Törlés
empty: Nincs szűrés.
+ expires_in: 'Ennyi idő múlva jár le: %{distance}'
+ expires_on: 'Lejárat ideje: %{date}'
+ keywords:
+ one: "%{count} kulcsszó"
+ other: "%{count} kulcsszó"
+ statuses:
+ one: "%{count} bejegyzés"
+ other: "%{count} bejegyzés"
+ statuses_long:
+ one: "%{count} egyedi bejegyzés elrejtve"
+ other: "%{count} egyedi bejegyzés elrejtve"
title: Szűrők
new:
+ save: Új szűrő mentése
title: Új szűrő hozzáadása
+ statuses:
+ back_to_filter: Vissza a szűrőhöz
+ batch:
+ remove: Eltávolítás a szűrőből
+ index:
+ hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül.
+ title: Megszűrt bejegyzések
footer:
developers: Fejlesztőknek
more: Többet…
@@ -1143,12 +1234,22 @@ hu:
trending_now: Most felkapott
generic:
all: Mind
+ all_items_on_page_selected_html:
+ one: "%{count} elem kiválasztva ezen az oldalon."
+ other: Mind a(z) %{count} elem kiválasztva ezen az oldalon.
+ all_matching_items_selected_html:
+ one: "%{count}, a keresésnek megfelelő elem kiválasztva."
+ other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztva.
changes_saved_msg: A változásokat elmentettük!
copy: Másolás
delete: Törlés
+ deselect: Összes kiválasztás megszüntetése
none: Nincs
order_by: Rendezés
save_changes: Változások mentése
+ select_all_matching_items:
+ one: "%{count}, a keresésnek megfelelő elem kiválasztása."
+ other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztása.
today: ma
validation_errors:
one: Valami nincs rendjén! Tekintsd meg a hibát lent
@@ -1253,19 +1354,10 @@ hu:
copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} bejelentést küldött"
sign_up:
subject: "%{name} feliratkozott"
- digest:
- action: Összes értesítés megtekintése
- body: Itt a legutóbbi látogatásod (%{since}) óta írott üzenetek rövid összefoglalása
- mention: "%{name} megemlített itt:"
- new_followers_summary:
- one: Sőt, egy új követőd is lett, amióta nem jártál itt. Hurrá!
- other: Sőt, %{count} új követőd is lett, amióta nem jártál itt. Hihetetlen!
- subject:
- one: "1 új értesítés az utolsó látogatásod óta 🐘"
- other: "%{count} új értesítés az utolsó látogatásod óta 🐘"
- title: Amíg távol voltál…
favourite:
body: 'A bejegyzésedet kedvencnek jelölte %{name}:'
subject: "%{name} kedvencnek jelölte a bejegyzésedet"
@@ -1628,7 +1720,7 @@ hu:
Ez a dokumentum CC-BY-SA. Utoljára 2022.05.26-án frissült.
Eredetileg innen adaptálva Discourse privacy policy.
- title: "%{instance} Felhasználási feltételek és Adatkezelési nyilatkozat"
+ title: "%{instance} adatvédelmi szabályzata"
themes:
contrast: Mastodon (Nagy kontrasztú)
default: Mastodon (Sötét)
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index 831ca66216..164bafbbe2 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -23,7 +23,6 @@ hy:
hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում
instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n"
learn_more: Իմանալ ավելին
- privacy_policy: Գաղտնիության քաղաքականություն
rules: Սերուերի կանոնները
rules_html: Այս սերուերում հաշիւ ունենալու համար անհրաժեշտ է պահպանել ստորեւ նշուած կանոնները։
see_whats_happening: Տես ինչ կը կատարուի
@@ -33,7 +32,6 @@ hy:
one: գրառում
other: ստատուս
status_count_before: Որոնք արել են՝
- terms: Ծառայութեան պայմանները
unavailable_content: Մոդերացուող սպասարկիչներ
unavailable_content_description:
domain: Սպասարկիչ
@@ -77,10 +75,8 @@ hy:
posts_tab_heading: Գրառումներ
posts_with_replies: Գրառումներ եւ պատասխաններ
roles:
- admin: Ադմինիստրատոր
bot: Բոտ
group: Խումբ
- moderator: Մոդերատոր
unavailable: Պրոֆիլը հասանելի չի
unfollow: Չհետևել
admin:
@@ -99,7 +95,6 @@ hy:
avatar: Աւատար
by_domain: Դոմէն
change_email:
- changed_msg: Հաշուի էլ․ հասցէն բարեյաջող փոփոխուեց
current_email: Ներկայիս էլ․ հասցէ
label: Փոխել էլ. հասցէն
new_email: Նոր էլ․ փոստ
@@ -174,12 +169,6 @@ hy:
reset: Վերականգնել
reset_password: Վերականգնել գաղտանաբառը
resubscribe: Կրկին բաժանորդագրուել
- role: Թոյլտուութիւններ
- roles:
- admin: Ադմինիստրատոր
- moderator: Մոդերատոր
- staff: Անձնակազմ
- user: Oգտատէր
search: Որոնել
search_same_email_domain: Այլ օգտատէրեր նոյն էլ․ փոստի դոմէյնով
search_same_ip: Այլ օգտատէրեր նոյն IP֊ով
@@ -254,7 +243,6 @@ hy:
update_custom_emoji: Թարմացնել սեփական էմոջիները
update_domain_block: Թարմացնել տիրոյթի արգելափակումը
update_status: Թարմացնել գրառումը
- deleted_status: "(ջնջուած գրառում)"
empty: Ոչ մի գրառում չկայ։
filter_by_action: Զտել ըստ գործողութեան
filter_by_user: Զտել ըստ օգտատիրոջ
@@ -466,25 +454,16 @@ hy:
deletion:
desc_html: Բոլորին թոյլատրել ջնջել իրենց հաշիւը
title: Բացել հաշուի ջնջումը
- min_invite_role:
- disabled: Ոչ ոք
- title: Թոյլատրել հրաւէրներ
registrations_mode:
modes:
approved: Գրանցման համար անհրաժեշտ է հաստատում
none: Ոչ ոք չի կարող գրանցուել
open: Բոլորը կարող են գրանցուել
title: Գրանցումային ռեժիմ
- show_staff_badge:
- desc_html: Ցուցադրել անձնակազմի անդամի նշանը օգտատիրոջ էջում
- title: Ցուցադրել անձնակազմի անդամի նշանը
site_description:
title: Կայքի նկարագրութիւն
site_short_description:
title: Կայքի հակիրճ նկարագրութիւն
- site_terms:
- desc_html: Դու կարող ես գրել քո սեփական գաղտնիութեան քաղաքականութիւնը, օգտագործման պայմանները եւ այլ կանոններ։ Կարող ես օգտագործել HTML թեգեր
- title: Սեփական օգտագործման կանոնները
site_title: Սպասարկչի անուն
thumbnail:
title: Հանգոյցի նկարը
@@ -748,10 +727,6 @@ hy:
admin:
sign_up:
subject: "%{name}-ը գրանցուած է"
- digest:
- action: Դիտել բոլոր ծանուցումները
- mention: "%{name} նշել է քեզ՝"
- title: Երբ բացակայ էիր...
favourite:
body: Քո գրառումը հաւանել է %{name}-ը։
subject: "%{name} հաւանեց գրառումդ"
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 368b21add1..516ba321ac 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -26,7 +26,6 @@ id:
learn_more: Pelajari selengkapnya
logged_in_as_html: Anda sedang masuk sebagai %{username}.
logout_before_registering: Anda sudah masuk.
- 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
@@ -36,7 +35,6 @@ id:
other: status
status_count_before: Yang telah menulis
tagline: Jejaring sosial terdesentralisasi
- terms: Kebijakan layanan
unavailable_content: Konten tak tersedia
unavailable_content_description:
domain: Server
@@ -77,10 +75,8 @@ id:
posts_tab_heading: Toot
posts_with_replies: Toot dan balasan
roles:
- admin: Admin
bot: Bot
group: Grup
- moderator: Moderator
unavailable: Profil tidak tersedia
unfollow: Berhenti mengikuti
admin:
@@ -99,12 +95,14 @@ id:
avatar: Avatar
by_domain: Domian
change_email:
- changed_msg: Email akun ini berhasil diubah!
+ changed_msg: כתובת דוא"ל שונתה בהצלחה !
current_email: Email saat ini
label: Ganti email
new_email: Email baru
submit: Ganti email
title: Ganti email untuk %{username}
+ change_role:
+ changed_msg: תפקיד שונה בהצלחה !
confirm: Konfirmasi
confirmed: Dikonfirmasi
confirming: Mengkonfirmasi
@@ -180,12 +178,6 @@ id:
reset: Atur ulang
reset_password: Reset kata sandi
resubscribe: Langganan ulang
- role: Hak akses
- roles:
- admin: Administrator
- moderator: Moderator
- staff: Staf
- user: Pengguna
search: Cari
search_same_email_domain: Pengguna lain dengan domain email yang sama
search_same_ip: Pengguna lain dengan IP yang sama
@@ -290,7 +282,6 @@ id:
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}"
@@ -325,7 +316,6 @@ id:
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
filter_by_user: Filter berdasarkan pengguna
@@ -633,6 +623,8 @@ id:
unresolved: Belum Terseleseikan
updated_at: Diperbarui
view_profile: Lihat profil
+ roles:
+ edit: ערכי את התפקיד של '%{name}'
rules:
add_new: Tambah aturan
delete: Hapus
@@ -685,9 +677,6 @@ id:
deletion:
desc_html: Izinkan siapapun untuk menghapus akun miliknya
title: Buka penghapusan akun
- min_invite_role:
- disabled: Tidak ada satu pun
- title: Izinkan undangan oleh
require_invite_text:
desc_html: Saat pendaftaran harus disetujui manual, buat input teks "Mengapa Anda ingin bergabung?" sebagai hal wajib bukan opsional
title: Pengguna baru harus memasukkan alasan bergabung
@@ -700,9 +689,6 @@ id:
show_known_fediverse_at_about_page:
desc_html: Ketika dimatikan, batasi linimasa publik yang ditautkan dari halaman landas untuk menampilkan konten lokal saja
title: Masukkan konten gabungan di halaman linimasa publik tanpa autentifikasi
- show_staff_badge:
- desc_html: Tampilkan lencana staf pada halaman pengguna
- title: Tampilkan lencana staf
site_description:
desc_html: Ditampilkan sebagai sebuah paragraf di halaman depan dan digunakan sebagai tag meta.
Anda bisa menggunakan tag HTML, khususnya <a>
dan <em>
.
title: Deskripsi situs
@@ -712,9 +698,6 @@ id:
site_short_description:
desc_html: Ditampilkan pada bilah samping dan tag meta. Jelaskan apa itu Mastodon dan yang membuat server ini spesial dalam satu paragraf.
title: Deskripsi server pendek
- site_terms:
- 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
thumbnail:
desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px
@@ -723,9 +706,6 @@ id:
desc_html: Tampilkan tautan ke linimasa publik pada halaman landas dan izinkan API mengakses linimasa publik tanpa autentifikasi
title: Izinkan akses linimasa publik tanpa autentifikasi
title: Pengaturan situs
- trendable_by_default:
- desc_html: Memengaruhi tagar yang belum pernah diizinkan
- title: Izinkan tagar masuk tren tanpa peninjauan
trends:
desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren
title: Tagar sedang tren
@@ -1103,7 +1083,6 @@ id:
title: Ubah saringan
errors:
invalid_context: Konteks tidak ada atau invalid
- invalid_irreversible: Penyaringan yang tidak dapat dipulihkan hanya bekerja di beranda atau konteks notifikasi
index:
delete: Hapus
empty: Anda tidak memiliki filter.
@@ -1227,15 +1206,6 @@ id:
admin:
sign_up:
subject: "%{name} mendaftar"
- digest:
- action: Lihat semua notifikasi
- body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}
- mention: "%{name} menyebut anda di:"
- new_followers_summary:
- other: Anda mendapatkan %{count} pengikut baru! Luar biasa!
- subject:
- other: "%{count} notifikasi baru sejak kunjungan Anda terakhir 🐘"
- title: Saat Anda tidak muncul...
favourite:
body: 'Status anda disukai oleh %{name}:'
subject: "%{name} menyukai status anda"
@@ -1510,8 +1480,6 @@ id:
too_late: Terlambat untuk mengajukan banding hukuman ini
tags:
does_not_match_previous_name: tidak cocok dengan nama sebelumnya
- terms:
- title: "%{instance} Ketentuan Layanan dan Kebijakan Privasi"
themes:
contrast: Mastodon (Kontras tinggi)
default: Mastodon (Gelap)
diff --git a/config/locales/io.yml b/config/locales/io.yml
index 7cf253089e..6cb06d2497 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -39,7 +39,6 @@ io:
other: posti
status_count_before: Qua publikigis
tagline: Necentralizita sociala reto
- terms: Serveskondicioni
unavailable_content: Jerata servili
unavailable_content_description:
domain: Servilo
@@ -83,10 +82,8 @@ io:
posts_tab_heading: Posti
posts_with_replies: Posti e respondi
roles:
- admin: Administrero
bot: Boto
group: Grupo
- moderator: Jerero
unavailable: Profilo esas nedisponebla
unfollow: Dessequar
admin:
@@ -111,6 +108,11 @@ io:
new_email: Nova retposto
submit: Chanjez retposto
title: Chanjez retposto por %{username}
+ change_role:
+ changed_msg: Rolo sucesoze chanjesis!
+ label: Chanjez rolo
+ no_role: Nula rolo
+ title: Chanjez rolo por %{username}
confirm: Konfirmez
confirmed: Konfirmita
confirming: Ankore konfirmesas
@@ -154,6 +156,7 @@ io:
active: Aktiva
all: Omna
pending: Vartanta
+ silenced: Limitizita
suspended: Restriktita
title: Jero
moderation_notes: Jernoti
@@ -161,6 +164,7 @@ io:
most_recent_ip: Maxim recenta IP
no_account_selected: Nula konti chanjesis pro ke nulo selektesis
no_limits_imposed: Limiti ne fixesis
+ no_role_assigned: Nula rolo
not_subscribed: Ne abonita
pending: Vartar kontrolo
perform_full_suspension: Perform full suspension
@@ -187,12 +191,7 @@ io:
reset: Richanjez
reset_password: Richanjez pasvorto
resubscribe: Riabonez
- role: Permisi
- roles:
- admin: Administrero
- moderator: Jerero
- staff: Laborero
- user: Uzanto
+ role: Rolo
search: Trovez
search_same_email_domain: Altra uzanti kun sama retpostodomeno
search_same_ip: Altra uzanti kun sama IP
@@ -235,17 +234,21 @@ io:
approve_user: Aprobez uzanto
assigned_to_self_report: Taskigez raporto
change_email_user: Chanjez retposto por uzanto
+ change_role_user: Chanjez rolo di uzanto
confirm_user: Konfirmez uzanto
create_account_warning: Kreez averto
create_announcement: Kreez anunco
+ create_canonical_email_block: Kreez domenobstrukto
create_custom_emoji: Kreez kustumizita emocimajo
create_domain_allow: Kreez domenpermiso
create_domain_block: Kreez domenobstrukto
create_email_domain_block: Kreez retpostodomenobstrukto
create_ip_block: Kreez IP-regulo
create_unavailable_domain: Kreez nedisponebla domeno
+ create_user_role: Kreez rolo
demote_user: Despromocez uzanto
destroy_announcement: Efacez anunco
+ destroy_canonical_email_block: Efacez domenobstrukto
destroy_custom_emoji: Efacez kustumizita emocimajo
destroy_domain_allow: Efacez domenpermiso
destroy_domain_block: Efacez domenobstrukto
@@ -254,6 +257,7 @@ io:
destroy_ip_block: Efacez IP-regulo
destroy_status: Efacez posto
destroy_unavailable_domain: Efacez nedisponebla domeno
+ destroy_user_role: Destruktez rolo
disable_2fa_user: Desaktivigez 2FA
disable_custom_emoji: Desaktivigez kustumizita emocimajo
disable_sign_in_token_auth_user: Desaktivigez retpostofichyurizo por uzanto
@@ -280,24 +284,30 @@ io:
update_announcement: Novigez anunco
update_custom_emoji: Novigez kustumizita emocimajo
update_domain_block: Novigez domenobstrukto
+ update_ip_block: Kreez IP-regulo
update_status: Novigez posto
+ update_user_role: Novigez rolo
actions:
approve_appeal_html: "%{name} aprobis jerdecidapelo de %{target}"
approve_user_html: "%{name} aprobis registro de %{target}"
assigned_to_self_report_html: "%{name} taskigis raporto %{target} a su"
change_email_user_html: "%{name} chanjis retpostoadreso di uzanto %{target}"
+ change_role_user_html: "%{name} chanjis rolo di %{target}"
confirm_user_html: "%{name} konfirmis retpostoadreso di uzanto %{target}"
create_account_warning_html: "%{name} sendis averto a %{target}"
create_announcement_html: "%{name} kreis nova anunco %{target}"
+ create_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}"
create_custom_emoji_html: "%{name} adchargis nova emocimajo %{target}"
create_domain_allow_html: "%{name} permisis federato kun domeno %{target}"
create_domain_block_html: "%{name} obstruktis domeno %{target}"
create_email_domain_block_html: "%{name} obstruktis retpostodomeno %{target}"
create_ip_block_html: "%{name} kreis regulo por IP %{target}"
create_unavailable_domain_html: "%{name} cesis sendo a domeno %{target}"
+ create_user_role_html: "%{name} kreis rolo di %{target}"
demote_user_html: "%{name} despromocis uzanto %{target}"
destroy_announcement_html: "%{name} efacis anunco %{target}"
- destroy_custom_emoji_html: "%{name} destruktis emocimajo %{target}"
+ destroy_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}"
+ destroy_custom_emoji_html: "%{name} efacis emocimajo %{target}"
destroy_domain_allow_html: "%{name} despermisis federato kun domeno %{target}"
destroy_domain_block_html: "%{name} deobstruktis domeno %{target}"
destroy_email_domain_block_html: "%{name} deobstruktis retpostodomeno %{target}"
@@ -305,6 +315,7 @@ io:
destroy_ip_block_html: "%{name} efacis regulo por IP %{target}"
destroy_status_html: "%{name} efacis posto da %{target}"
destroy_unavailable_domain_html: "%{name} durigis sendo a domeno %{target}"
+ destroy_user_role_html: "%{name} efacis rolo di %{target}"
disable_2fa_user_html: "%{name} desaktivigis 2-faktorbezono por uzanto %{target}"
disable_custom_emoji_html: "%{name} desaktivigis emocimajo %{target}"
disable_sign_in_token_auth_user_html: "%{name} desaktivigis retpostofichyurizo por %{target}"
@@ -331,8 +342,9 @@ io:
update_announcement_html: "%{name} novigis anunco %{target}"
update_custom_emoji_html: "%{name} novigis emocimajo %{target}"
update_domain_block_html: "%{name} novigis domenobstrukto por %{target}"
+ update_ip_block_html: "%{name} kreis regulo por IP %{target}"
update_status_html: "%{name} novigis posto da %{target}"
- deleted_status: "(efacita posto)"
+ update_user_role_html: "%{name} chanjis rolo di %{target}"
empty: Nula logi.
filter_by_action: Filtrez segun ago
filter_by_user: Filtrez segun uzanto
@@ -649,6 +661,67 @@ io:
unresolved: Nerezolvita
updated_at: Novigesis
view_profile: Videz profilo
+ roles:
+ add_new: Insertez rolo
+ assigned_users:
+ one: "%{count} uzanto"
+ other: "%{count} uzanti"
+ categories:
+ administration: Administro
+ devops: Developeri
+ invites: Inviti
+ moderation: Jero
+ special: Specala
+ delete: Efacez
+ description_html: Per uzantoroli, vu povas kustumizar funciono e siti di Mastodon quon vua uzanti povas uzar.
+ edit: Modifikez rolo di '%{name}'
+ everyone: Originala permisi
+ everyone_full_description_html: Co esas bazrolo quo efektigas omna uzanti, mem personi sen rolo. Omna altra roli ganas sama permisi de ol.
+ permissions_count:
+ one: "%{count} permiso"
+ other: "%{count} permisi"
+ privileges:
+ administrator: Administrero
+ administrator_description: Uzanti kun ca permiso ignoros singla permiso
+ delete_user_data: Efacez uzantinformi
+ delete_user_data_description: Permisez uzanti efacar informi di altra uzanti sen varto
+ invite_users: Invitez uzanti
+ invite_users_description: Permisez uzanti invitar nova personi a la servilo
+ manage_announcements: Jerez anunci
+ manage_announcements_description: Permisez uzanti jerar anunci en la servilo
+ manage_appeals: Jerez apeli
+ manage_appeals_description: Permisez uzanti kontrolar apeli kontra jero
+ manage_blocks: Jerez obstrukti
+ manage_blocks_description: Permisez uzanti obstruktar retpostoservilo e adresi di IP
+ manage_custom_emojis: Jerez kustumizita emocimaji
+ manage_custom_emojis_description: Permisez uzanti jerar kustumizita emocimaji en la servilo
+ manage_federation: Jerez federo
+ manage_federation_description: Permisez uzanti obstruktar o permisez federo kun altra domeni, e dominacar sendebleso
+ manage_invites: Jerez inviti
+ manage_invites_description: Permisez uzanti vidar e desaktivigar invitligili
+ manage_reports: Jerez raporti
+ manage_reports_description: Permisez uzanti kontrolar raporti e jerez kontra oli
+ manage_roles: Jerez roli
+ manage_roles_description: Permisez uzanti jerar e ajustar plu basa roli di olia
+ manage_rules: Jerez reguli
+ manage_rules_description: Permisez uzanti chanjar servilreguli
+ manage_settings: Jerez opcioni
+ manage_settings_description: Permisez uzanti chanjar sitopcioni
+ manage_taxonomies: Jerez nomkategorii
+ manage_taxonomies_description: Permisez uzanti kontrolar tendencoza kontenajo e novigar hashtagopcioni
+ manage_user_access: Jerez uzantoeniro
+ manage_user_access_description: Permisez uzanti desaktivigar 2-faktoryurizeso di altra uzanti, chanjar olia retpostoadreso e richanjar olia pasvorto
+ manage_users: Jerez uzanti
+ manage_users_description: Permisez uzanti vidar detali di altra uzanti e jerar kontra oli
+ manage_webhooks: Jerez interrethoki
+ manage_webhooks_description: Permisez uzanti igas interrethoki por administrala eventi
+ view_audit_log: Videz kontrollogo
+ view_audit_log_description: Permisez uzanti vidar historio di administrala agi en la servilo
+ view_dashboard: Videz chefpanelo
+ view_dashboard_description: Permisez uzanti uzar chefpanelo e diversa opcioni
+ view_devops: Developeri
+ view_devops_description: Permisez uzanti uzar chefpaneli Sidekiq e pgHero
+ title: Roli
rules:
add_new: Insertez regulo
delete: Efacez
@@ -701,9 +774,6 @@ io:
deletion:
desc_html: Permisez irgu efacar sua konto
title: Apertez kontoefaco
- min_invite_role:
- disabled: Nulu
- title: Permisez inviti da
require_invite_text:
desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata
title: Bezonez nova uzanti insertar motivo por juntar
@@ -716,9 +786,6 @@ io:
show_known_fediverse_at_about_page:
desc_html: Se desaktivigesis, co permisas publika tempolineo quo ligesas de atingopagino montrar nur lokala kontenajo
title: Inkluzez federatita kontenajo che neyurizita publika tempolineopagino
- show_staff_badge:
- desc_html: Montrez laborerinsigno che uzantopagino
- title: Montrez laborerinsigno
site_description:
desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
You can use HTML tags, in particular <a>
and <em>
.
title: Site description
@@ -729,8 +796,8 @@ io:
desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo.
title: Kurta servildeskripto
site_terms:
- desc_html: Vu povas skribar sua privatesguidilo, serveskondicioni e altra legi. Vu povas uzar HTML-tagi
- title: Kustumizita serveskondicioni
+ desc_html: Vu povas adjuntar sua privatesguidilo. Vu povas uzar tagi di HTML
+ title: Kustumizita privatesguidilo
site_title: Site title
thumbnail:
desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas
@@ -740,7 +807,7 @@ io:
title: Permisez neyurizita aceso a publika tempolineo
title: Site Settings
trendable_by_default:
- desc_html: Efektigas hashtagi quo ante nepermisesis
+ desc_html: Partikulara trendoza kontenajo povas ankore videbla nepermisesar
title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo
trends:
desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza
@@ -1124,16 +1191,40 @@ io:
public: Publika tempolinei
thread: Konversi
edit:
+ add_keyword: Insertez klefvorto
+ keywords: Klefvorti
+ statuses: Individuala posti
+ statuses_hint_html: Ca filtrilo aplikesas a selektita posti ne segun kad oli parigesas kun basa klefvorti. Kontrolez o efacez posti de la filtrilo.
title: Modifikez filtrilo
errors:
+ deprecated_api_multiple_keywords: Ca parametri ne povas chanjesar per ca softwaro pro quo oli efektigas plu kam 1 filtrilklefvorto. Uzez plu recenta softwaro o interretintervizajo.
invalid_context: Nula o nevalida kuntexto donesis
- invalid_irreversible: Neinversigebla filtro nur funcionas kun hemo- e aviz- kuntexto
index:
+ contexts: Filtrili kun %{contexts}
delete: Efacez
empty: Vu ne havas filtrili.
+ expires_in: Expiras ye %{distance}
+ expires_on: Expiras ye %{date}
+ keywords:
+ one: "%{count} klefvorto"
+ other: "%{count} klefvorti"
+ statuses:
+ one: "%{count} posto"
+ other: "%{count} posti"
+ statuses_long:
+ one: "%{count} posto celesas"
+ other: "%{count} posti celesas"
title: Filtrili
new:
+ save: Salvez nova filtrilo
title: Insertez nova filtrilo
+ statuses:
+ back_to_filter: Retrovenez a filtrilo
+ batch:
+ remove: Efacez de filtrilo
+ index:
+ hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo.
+ title: Filtrita posti
footer:
developers: Developeri
more: Pluse…
@@ -1141,12 +1232,22 @@ io:
trending_now: Nuna tendenco
generic:
all: Omna
+ all_items_on_page_selected_html:
+ one: "%{count} kozo sur ca sito selektesas."
+ other: Omna %{count} kozi sur ca sito selektesas.
+ all_matching_items_selected_html:
+ one: "%{count} kozo quo parigesas kun vua trovato selektesas."
+ other: Omna %{count} kozi quo parigesas kun vua trovato selektesas.
changes_saved_msg: Chanji senprobleme konservita!
copy: Kopiez
delete: Efacez
+ deselect: Deselektez omno
none: Nulo
order_by: Asortez quale
save_changes: Konservar la chanji
+ select_all_matching_items:
+ one: Selektez %{count} kozo quo parigesas kun vua trovato.
+ other: Selektez omna %{count} kozi quo parigesas kun vua trovato.
today: hodie
validation_errors:
one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto
@@ -1251,19 +1352,10 @@ io:
copy_account_note_text: 'Ca uzanti transferesis de %{acct}, co esas vua antea noti pri ol:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} sendis raporto"
sign_up:
subject: "%{name} registris"
- digest:
- action: Videz omna avizi
- body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}
- mention: "%{name} mencionis tu en:"
- new_followers_summary:
- one: Tu obtenis nova sequanto! Yey!
- other: Tu obtenis %{count} nova sequanti! Astonive!
- subject:
- one: "1 nova avizo de pos vua antea vizito 🐘"
- other: "%{count} nova avizi de pos vua antea vizito 🐘"
- title: Dum vua neprezenteso...
favourite:
body: "%{name} favoris tua mesajo:"
subject: "%{name} favoris tua mesajo"
@@ -1627,7 +1719,7 @@ io:
Ca dokumento esas CC-BY-SA.
Tradukesis e modifikesis de Angla de Discourse privacy policy.
- title: Serveskondiconi e Privatesguidilo di %{instance}
+ title: Privatesguidilo di %{instance}
themes:
contrast: Mastodon (Alta kontrasteso)
default: Mastodon (Obskura)
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 5978ac41c3..2448647fa6 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -39,7 +39,6 @@ is:
other: færslur
status_count_before: Sem stóðu fyrir
tagline: Dreift samfélagsnet
- terms: Þjónustuskilmálar
unavailable_content: Ekki tiltækt efni
unavailable_content_description:
domain: Vefþjónn
@@ -83,10 +82,8 @@ is:
posts_tab_heading: Færslur
posts_with_replies: Færslur og svör
roles:
- admin: Stjóri
bot: Róbót
group: Hópur
- moderator: Umsjón
unavailable: Notandasnið ekki tiltækt
unfollow: Hætta að fylgja
admin:
@@ -105,12 +102,17 @@ is:
avatar: Auðkennismynd
by_domain: Lén
change_email:
- changed_msg: Tölvupóstfangi notandaaðgangsins hefur verið breytt!
+ changed_msg: Tókst að breyta tölvupóstfangi!
current_email: Núverandi tölvupóstfang
label: Breyta tölvupóstfangi
new_email: Nýr tölvupóstur
submit: Breyta tölvupóstfangi
title: Breyta tölvupóstfangi fyrir %{username}
+ change_role:
+ changed_msg: Tókst að breyta hlutverki!
+ label: Breyta hlutverki
+ no_role: Ekkert hlutverk
+ title: Breyta hlutverki fyrir %{username}
confirm: Staðfesta
confirmed: Staðfest
confirming: Staðfesti
@@ -154,6 +156,7 @@ is:
active: Virkur
all: Allt
pending: Í bið
+ silenced: Takmarkað
suspended: Í bið
title: Umsjón
moderation_notes: Minnispunktar umsjónarmanna
@@ -161,6 +164,7 @@ is:
most_recent_ip: Nýjasta IP-vistfang
no_account_selected: Engum aðgöngum var breytt þar sem engir voru valdir
no_limits_imposed: Engra takmarka krafist
+ no_role_assigned: Engu hlutverki úthlutað
not_subscribed: Ekki í áskrift
pending: Bíður eftir yfirlestri
perform_full_suspension: Setja í bið
@@ -187,12 +191,7 @@ is:
reset: Endurstilla
reset_password: Endurstilla lykilorð
resubscribe: Gerast áskrifandi aftur
- role: Heimildir
- roles:
- admin: Stjórnandi
- moderator: Umsjónarmaður
- staff: Starfsmaður
- user: Notandi
+ role: Hlutverk
search: Leita
search_same_email_domain: Aðra notendur með sama tölvupóstlén
search_same_ip: Aðrir notendur með sama IP-vistfang
@@ -235,17 +234,21 @@ is:
approve_user: Samþykkja notanda
assigned_to_self_report: Úthluta kæru
change_email_user: Skipta um tölvupóstfang notanda
+ change_role_user: Breyta hlutverki notanda
confirm_user: Staðfesta notanda
create_account_warning: Útbúa aðvörun
create_announcement: Búa til tilkynningu
+ create_canonical_email_block: Búa til útilokunarblokk tölvupósts
create_custom_emoji: Búa til sérsniðið tjáningartákn
create_domain_allow: Búa til lén leyft
create_domain_block: Búa til útilokun léns
create_email_domain_block: Búa til útilokun tölvupóstléns
create_ip_block: Búa til IP-reglu
create_unavailable_domain: Útbúa lén sem ekki er tiltækt
+ create_user_role: Útbúa hlutverk
demote_user: Lækka notanda í tign
destroy_announcement: Eyða tilkynningu
+ destroy_canonical_email_block: Eyða útilokunarblokk tölvupósts
destroy_custom_emoji: Eyða sérsniðnu tjáningartákni
destroy_domain_allow: Eyða léni leyft
destroy_domain_block: Eyða útilokun léns
@@ -254,6 +257,7 @@ is:
destroy_ip_block: Eyða IP-reglu
destroy_status: Eyða færslu
destroy_unavailable_domain: Eyða léni sem ekki er tiltækt
+ destroy_user_role: Eyða hlutverki
disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka
disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt
disable_sign_in_token_auth_user: Gera óvirka auðkenningu með teikni í tölvupósti fyrir notandann
@@ -280,24 +284,30 @@ is:
update_announcement: Uppfæra tilkynningu
update_custom_emoji: Uppfæra sérsniðið tjáningartákn
update_domain_block: Uppfæra útilokun léns
+ update_ip_block: Uppfæra reglu IP-vistfangs
update_status: Uppfæra færslu
+ update_user_role: Uppfæra hlutverk
actions:
approve_appeal_html: "%{name} samþykkti áfrýjun á ákvörðun umsjónarmanns frá %{target}"
approve_user_html: "%{name} samþykkti nýskráningu 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}"
+ change_role_user_html: "%{name} breytti hlutverki %{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_canonical_email_block_html: "%{name} útilokaði tölvupóst með tætigildið %{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}"
+ create_user_role_html: "%{name} útbjó %{target} hlutverk"
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_canonical_email_block_html: "%{name} tók af útilokun á tölvupósti með tætigildið %{target}"
+ destroy_custom_emoji_html: "%{name} eyddi emoji-tákni %{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}"
@@ -305,6 +315,7 @@ is:
destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}"
destroy_status_html: "%{name} fjarlægði færslu frá %{target}"
destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}"
+ destroy_user_role_html: "%{name} eyddi hlutverki %{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_sign_in_token_auth_user_html: "%{name} gerði óvirka auðkenningu með teikni í tölvupósti fyrir %{target}"
@@ -331,8 +342,9 @@ is:
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 útilokun lénsins %{target}"
+ update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}"
update_status_html: "%{name} uppfærði færslu frá %{target}"
- deleted_status: "(eydd færsla)"
+ update_user_role_html: "%{name} breytti hlutverki %{target}"
empty: Engar atvikaskrár fundust.
filter_by_action: Sía eftir aðgerð
filter_by_user: Sía eftir notanda
@@ -538,7 +550,7 @@ is:
public_comment: Opinber athugasemd
purge: Henda
purge_description_html: Ef þú heldur að þetta lén sé farið endanlega af netinu, geturðu eytt öllum færslum aðganga og tengdum gögnum frá þessu léni úr gagnageymslum þínum. Þetta gæti tekið þó nokkra stund.
- title: Samband
+ title: Netþjónasambönd
total_blocked_by_us: Útilokað af okkur
total_followed_by_them: Fylgt af þeim
total_followed_by_us: Fylgt af okkur
@@ -649,6 +661,67 @@ is:
unresolved: Óleyst
updated_at: Uppfært
view_profile: Skoða notandasnið
+ roles:
+ add_new: Bæta við hlutverki
+ assigned_users:
+ one: "%{count} notandi"
+ other: "%{count} notendur"
+ categories:
+ administration: Stjórnun
+ devops: Kerfisstjórar
+ invites: Boðsgestir
+ moderation: Umsjón
+ special: Sérstakt
+ delete: Eyða
+ description_html: Með hlutverkum notenda geturðu sérsniðið að hvaða aðgerðum og hvaða svæðum í Mastodon notendurnir þínir hafa aðgang.
+ edit: Breyta hlutverki fyrir '%{name}'
+ everyone: Sjálfgefnar heimildir
+ everyone_full_description_html: Þetta er grunnhlutverk sem allir notendur fá, líka þeir sem ekki hafa fengið neitt sérstakt hlutverk. Öll önnur hlutverk erfa heimildir frá þessu.
+ permissions_count:
+ one: "%{count} heimild"
+ other: "%{count} heimildir"
+ privileges:
+ administrator: Stjórnandi
+ administrator_description: Notendur með þessa heimild fara framhjá öllum öðrum heimildum
+ delete_user_data: Eyða gögnum notanda
+ delete_user_data_description: Leyfir notendum að eyða gögnum annarra notenda án tafar
+ invite_users: Bjóða notendum
+ invite_users_description: Leyfir notendum að bjóða nýju fólki inn á netþjóninn
+ manage_announcements: Sýsla með tilkynningar
+ manage_announcements_description: Leyfir notendum að sýsla með tilkynningar á netþjóninum
+ manage_appeals: Sýsla með áfrýanir
+ manage_appeals_description: Leyfir notendum að yfirfara áfrýjanir vegna aðgerða umsjónarfólks
+ manage_blocks: Sýsla með útilokanir
+ manage_blocks_description: Leyfir notendum að loka á tölvupóstþjónustur og IP-vistföng
+ manage_custom_emojis: Sýsla með sérsniðin tjáningartákn
+ manage_custom_emojis_description: Leyfir notendum að sýsla með sérsniðin tjáningartákn á netþjóninum
+ manage_federation: Sýsla með netþjónasambönd
+ manage_federation_description: Leyfir notendum að loka á eða leyfa samþættingu við önnur lén (federation) og stýra afhendingu skilaboða
+ manage_invites: Sýsla með boðsgesti
+ manage_invites_description: Leyfir notendum að vafra um og gera boðstengla óvirka
+ manage_reports: Sýsla með kærur
+ manage_reports_description: Leyfir notendum að yfirfara kærur og framkvæma umsýsluaðgerðir sem byggjast á þeim
+ manage_roles: Sýsla með hlutverk
+ manage_roles_description: Leyfir notendum að sýsla með hlutverk og úthluta hlutverkum sem eru réttminni en þeirra eigið
+ manage_rules: Sýsla með reglur
+ manage_rules_description: Leyfir notendum að breyta reglum á netþjóninum
+ manage_settings: Sýsla með stillingar
+ manage_settings_description: Leyfir notendum að breyta stillingum vefsvæðisins
+ manage_taxonomies: Sýsla með vægi efnis
+ manage_taxonomies_description: Leyfir notendum að yfirfara vinsælt efni og uppfæra stillingar myllumerkja
+ manage_user_access: Sýsla með notendaaðgang
+ manage_user_access_description: Leyfir notendum að gera tveggja-þátta auðkenningu annarra notenda óvirka, breyta tölvupóstfangi þeirra og endurstilla lykilorð
+ manage_users: Sýsla með notendur
+ manage_users_description: Leyfir notendum að sýsla með nánari upplýsingar um aðra notendur og framkvæma umsýsluaðgerðir gagnvart þeim
+ manage_webhooks: Sýsla með Webhook-vefkrækjur
+ manage_webhooks_description: Leyfir notendum að setja upp webhook-vefkrækjur vagna stjórnunartengdra atburða
+ view_audit_log: Skoða atvikaskráningu
+ view_audit_log_description: Leyfir notendum að skoða feril stjórnunaraðgerða á netþjóninum
+ view_dashboard: Skoða stjórnborð
+ view_dashboard_description: Leyfir notendum að skoða stjórnborðið og sjá ýmsar mælingar
+ view_devops: Kerfisstjórar
+ view_devops_description: Leyfir notendum að skoða Sidekiq og pgHero stjórnborð
+ title: Hlutverk
rules:
add_new: Skrá reglu
delete: Eyða
@@ -701,9 +774,6 @@ is:
deletion:
desc_html: Leyfa öllum að eyða aðgangnum sínum
title: Opna eyðingu á notandaaðgangi
- min_invite_role:
- disabled: Enginn
- title: Leyfa boð frá
require_invite_text:
desc_html: Þegar nýskráningar krefjast handvirks samþykkis, skal gera "Hvers vegna viltu taka þátt?" boðstexta að skyldu fremur en valkvæðan
title: Krefja nýja notendur um að fylla út boðstexta
@@ -716,9 +786,6 @@ is:
show_known_fediverse_at_about_page:
desc_html: Þegar þetta er óvirkt, takmarkast opinbera tímalínan sem tengt er í af upphafssíðunni við að birta einungis staðvært efni (af sama vefþjóni)
title: Hafa með efni úr skýjasambandi á síðu fyrir óauðkennda opinbera tímalínu
- show_staff_badge:
- desc_html: Sýna starfsmannamerki á síðu notandans
- title: Sýna starfsmannamerki
site_description:
desc_html: Kynningarmálsgrein í API. Lýstu því hvað það er sem geri þennan Mastodon-þjón sérstakan, auk annarra mikilvægra upplýsinga. Þú getur notað HTML-einindi, sér í lagi <a>
og <em>
.
title: Lýsing á vefþjóni
@@ -729,8 +796,8 @@ is:
desc_html: Birt á hliðarspjaldi og í lýsigögnum. Lýstu því hvað Mastodon gerir og hvað það er sem geri þennan vefþjón sérstakan, í einni málsgrein.
title: Stutt lýsing á netþjóninum
site_terms:
- 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
+ desc_html: Þú getur skrifað þína eigin persónuverndarstefnu. Nota má HTML-einindi
+ title: Sérsniðin persónuverndarstefna
site_title: Heiti vefþjóns
thumbnail:
desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum
@@ -740,11 +807,11 @@ is:
title: Leyfa óauðkenndan aðgang að opinberri tímalínu
title: Stillingar vefsvæðis
trendable_by_default:
- desc_html: Hefur áhrif á myllumerki sem ekki hafa áður verið gerð óleyfileg
- title: Leyfa myllumerkjum að fara í umræðuna án þess að þau séu fyrst yfirfarin
+ desc_html: Sérstakt vinsælt efni er eftir sem áður hægt að banna sérstaklega
+ title: Leyfa vinsælt efni án undanfarandi yfirferðar
trends:
desc_html: Birta opinberlega þau áður yfirförnu myllumerki sem eru núna í umræðunni
- title: Myllumerki í umræðunni
+ title: Vinsælt
site_uploads:
delete: Eyða innsendri skrá
destroyed_msg: Það tókst að eyða innsendingu á vefsvæði!
@@ -1124,16 +1191,40 @@ is:
public: Opinberar tímalínur
thread: Samtöl
edit:
+ add_keyword: Bæta við stikkorði
+ keywords: Stikkorð
+ statuses: Einstakar færslur
+ statuses_hint_html: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Yfirfarðu eða fjarlægðu færslur úr síunni.
title: Breyta síu
errors:
+ deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið.
invalid_context: Ekkert eða ógilt samhengi var gefið
- invalid_irreversible: Óendurkræf síun virkar bara í sambandi við heimasvæði eða tilkynningar
index:
+ contexts: Síur í %{contexts}
delete: Eyða
empty: Þú ert ekki með neinar síur.
+ expires_in: Rennur út %{distance}
+ expires_on: Rennur út þann %{date}
+ keywords:
+ one: "%{count} stikkorð"
+ other: "%{count} stikkorð"
+ statuses:
+ one: "%{count} færsla"
+ other: "%{count} færslur"
+ statuses_long:
+ one: "%{count} stök færsla falin"
+ other: "%{count} stakar færslur faldar"
title: Síur
new:
+ save: Vista nýja síu
title: Bæta við nýrri síu
+ statuses:
+ back_to_filter: Til baka í síu
+ batch:
+ remove: Fjarlægja úr síu
+ index:
+ hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu.
+ title: Síaðar færslur
footer:
developers: Forritarar
more: Meira…
@@ -1141,12 +1232,22 @@ is:
trending_now: Í umræðunni núna
generic:
all: Allt
+ all_items_on_page_selected_html:
+ one: "%{count} atriði á þessari síðu er valið."
+ other: Öll %{count} atriðin á þessari síðu eru valin.
+ all_matching_items_selected_html:
+ one: "%{count} atriði sem samsvarar leitinni þinni er valið."
+ other: Öll %{count} atriðin sem samsvara leitinni þinni eru valin.
changes_saved_msg: Það tókst að vista breytingarnar!
copy: Afrita
delete: Eyða
+ deselect: Afvelja allt
none: Ekkert
order_by: Raða eftir
save_changes: Vista breytingar
+ select_all_matching_items:
+ one: Veldu %{count} atriði sem samsvarar leitinni þinni.
+ other: Veldu öll %{count} atriðin sem samsvara leitinni þinni.
today: í dag
validation_errors:
one: Ennþá er ekk alvegi allt í lagi! Skoðaðu vel villuna hér fyrir neðan
@@ -1251,19 +1352,10 @@ is:
copy_account_note_text: 'Þessi notandi fluttist frá %{acct}, hér eru fyrri minnispunktar þínir um hann:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} sendi inn kæru"
sign_up:
subject: "%{name} nýskráði sig"
- digest:
- action: Skoða allar tilkynningar
- body: Hér er stutt yfirlit yfir þau skilaboð sem þú gætir hafa misst af síðan þú leist inn síðast %{since}
- mention: "%{name} minntist á þig í:"
- new_followers_summary:
- one: Að auki, þú hefur fengið einn nýjan fylgjanda á meðan þú varst fjarverandi! Húh!
- other: Að auki, þú hefur fengið %{count} nýja fylgjendur á meðan þú varst fjarverandi! Frábært!
- subject:
- one: "1 ný tilkynning síðan þú leist inn síðast 🐘"
- other: "%{count} nýjar tilkynningar síðan þú leist inn síðast 🐘"
- title: Á meðan þú varst fjarverandi...
favourite:
body: 'Færslan þín var sett í eftirlæti af %{name}:'
subject: "%{name} setti færsluna þína í eftirlæti"
@@ -1626,7 +1718,7 @@ is:
Þetta skjal er CC-BY-SA nptkunarleyfi. Það var síðast uppfært 26. maí 2022.
Upphaflega aðlagað frá persónuverndarstefnu Discourse.
- title: "%{instance} - Þjónustuskilmálar og persónuverndarstefna"
+ title: Persónuverndarstefna á %{instance}
themes:
contrast: Mastodon (mikil birtuskil)
default: Mastodon (dökkt)
diff --git a/config/locales/it.yml b/config/locales/it.yml
index f97779d26c..5e670cb077 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -28,7 +28,7 @@ it:
learn_more: Scopri altro
logged_in_as_html: Sei correntemente connesso come %{username}.
logout_before_registering: Hai già effettuato l'accesso.
- privacy_policy: Politica della privacy
+ privacy_policy: Politica sulla 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
@@ -39,7 +39,6 @@ it:
other: stati
status_count_before: Che hanno pubblicato
tagline: Social network decentralizzato
- terms: Termini di Servizio
unavailable_content: Server moderati
unavailable_content_description:
domain: Server
@@ -83,10 +82,8 @@ it:
posts_tab_heading: Toot
posts_with_replies: Toot e risposte
roles:
- admin: Amministratore
bot: Bot
group: Gruppo
- moderator: Moderatore
unavailable: Profilo non disponibile
unfollow: Non seguire più
admin:
@@ -105,12 +102,17 @@ it:
avatar: Immagine di profilo
by_domain: Dominio
change_email:
- changed_msg: Account email cambiato con successo!
+ changed_msg: Email modificata!
current_email: Email attuale
label: Cambia email
new_email: Nuova email
submit: Cambia email
title: Cambia email per %{username}
+ change_role:
+ changed_msg: Ruolo modificato correttamente!
+ label: Cambia ruolo
+ no_role: Nessun ruolo
+ title: Cambia ruolo per %{username}
confirm: Conferma
confirmed: Confermato
confirming: Confermando
@@ -154,6 +156,7 @@ it:
active: Attivo
all: Tutto
pending: In attesa
+ silenced: Limitato
suspended: Sospesi
title: Moderazione
moderation_notes: Note di moderazione
@@ -161,6 +164,7 @@ it:
most_recent_ip: IP più recente
no_account_selected: Nessun account è stato modificato visto che non ne è stato selezionato nessuno
no_limits_imposed: Nessun limite imposto
+ no_role_assigned: Nessun ruolo assegnato
not_subscribed: Non sottoscritto
pending: Revisioni in attesa
perform_full_suspension: Sospendi
@@ -187,12 +191,7 @@ it:
reset: Reimposta
reset_password: Reimposta password
resubscribe: Riscriversi
- role: Permessi
- roles:
- admin: Amministratore
- moderator: Moderatore
- staff: Personale
- user: Utente
+ role: Ruolo
search: Cerca
search_same_email_domain: Altri utenti con lo stesso dominio e-mail
search_same_ip: Altri utenti con lo stesso IP
@@ -235,17 +234,21 @@ it:
approve_user: Approva Utente
assigned_to_self_report: Assegna report
change_email_user: Cambia l'e-mail per l'utente
+ change_role_user: Cambia il Ruolo dell'Utente
confirm_user: Conferma utente
create_account_warning: Crea avviso
create_announcement: Crea un annuncio
+ create_canonical_email_block: Crea Blocco E-mail
create_custom_emoji: Crea emoji personalizzata
create_domain_allow: Crea permesso di dominio
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
+ create_user_role: Crea Ruolo
demote_user: Degrada l'utente
destroy_announcement: Cancella annuncio
+ destroy_canonical_email_block: Elimina Blocco E-mail
destroy_custom_emoji: Cancella emoji personalizzata
destroy_domain_allow: Cancella permesso di dominio
destroy_domain_block: Cancella blocco di dominio
@@ -254,6 +257,7 @@ it:
destroy_ip_block: Elimina regola IP
destroy_status: Cancella stato
destroy_unavailable_domain: Elimina dominio non disponibile
+ destroy_user_role: Distruggi Ruolo
disable_2fa_user: Disabilita l'autenticazione a due fattori
disable_custom_emoji: Disabilita emoji personalizzata
disable_sign_in_token_auth_user: Disabilita autenticazione con codice via email per l'utente
@@ -280,24 +284,30 @@ it:
update_announcement: Aggiorna annuncio
update_custom_emoji: Aggiorna emoji personalizzata
update_domain_block: Aggiorna blocco di dominio
+ update_ip_block: Aggiorna regola IP
update_status: Aggiorna stato
+ update_user_role: Aggiorna Ruolo
actions:
approve_appeal_html: "%{name} ha approvato il ricorso contro la decisione di moderazione da %{target}"
approve_user_html: "%{name} ha approvato la registrazione 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}"
+ change_role_user_html: "%{name} ha cambiato il ruolo di %{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_canonical_email_block_html: "%{name} ha bloccato l'e-mail con l'hash %{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}"
+ create_user_role_html: "%{name} ha creato il ruolo %{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_canonical_email_block_html: "%{name} ha sbloccato l'email con l'hash %{target}"
+ destroy_custom_emoji_html: "%{name} ha eliminato l'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}"
@@ -305,6 +315,7 @@ it:
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}"
+ destroy_user_role_html: "%{name} ha eliminato il ruolo %{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_sign_in_token_auth_user_html: "%{name} ha disabilitato l'autenticazione con codice via email per %{target}"
@@ -331,8 +342,9 @@ it:
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_ip_block_html: "%{name} ha cambiato la regola per l'IP %{target}"
update_status_html: "%{name} ha aggiornato lo status di %{target}"
- deleted_status: "(stato cancellato)"
+ update_user_role_html: "%{name} ha modificato il ruolo %{target}"
empty: Nessun log trovato.
filter_by_action: Filtra per azione
filter_by_user: Filtra per utente
@@ -649,6 +661,67 @@ it:
unresolved: Non risolto
updated_at: Aggiornato
view_profile: Visualizza profilo
+ roles:
+ add_new: Aggiungi ruolo
+ assigned_users:
+ one: "%{count} utente"
+ other: "%{count} utenti"
+ categories:
+ administration: Amministrazione
+ devops: Devops
+ invites: Inviti
+ moderation: Moderazione
+ special: Speciale
+ delete: Cancella
+ description_html: Con i ruoli utente, puoi personalizzare a quali funzioni e aree di Mastodon i tuoi utenti possono accedere.
+ edit: Modifica il ruolo '%{name}'
+ everyone: Permessi predefiniti
+ everyone_full_description_html: Questo è il ruolo base che influenza tutti gli utenti, anche quelli senza un ruolo assegnato. Tutti gli altri ruoli ereditano i permessi da esso.
+ permissions_count:
+ one: "%{count} permesso"
+ other: "%{count} permessi"
+ privileges:
+ administrator: Amministratore
+ administrator_description: Gli utenti con questo permesso saranno esentati da ogni permesso
+ delete_user_data: Cancella dati utente
+ delete_user_data_description: Consente agli utenti di eliminare subito i dati degli altri utenti
+ invite_users: Invita Utenti
+ invite_users_description: Consente agli utenti di invitare nuove persone su questo server
+ manage_announcements: Gestisci Annunci
+ manage_announcements_description: Consente agli utenti di gestire gli annunci sul server
+ manage_appeals: Gestisci appelli
+ manage_appeals_description: Consente agli utenti di esaminare i ricorsi contro le azioni di moderazione
+ manage_blocks: Gestisci Blocchi
+ manage_blocks_description: Consente agli utenti di bloccare provider e-mail e indirizzi IP
+ manage_custom_emojis: Gestisci emoji personalizzate
+ manage_custom_emojis_description: Consente agli utenti di gestire emoji personalizzate sul server
+ manage_federation: Gestisci Federazione
+ manage_federation_description: Consente agli utenti di bloccare o consentire la federazione con altri domini e controllare la consegnabilità
+ manage_invites: Gestisci Inviti
+ manage_invites_description: Consente agli utenti di esaminare e disattivare i link di invito
+ manage_reports: Gestisci report
+ manage_reports_description: Consente agli utenti di esaminare i report ed eseguire azioni di moderazione su di essi
+ manage_roles: Gestisci Ruoli
+ manage_roles_description: Consente agli utenti di gestire e assegnare i ruoli inferiori al loro
+ manage_rules: Gestisci Regole
+ manage_rules_description: Consente agli utenti di modificare le regole del server
+ manage_settings: Gestisci impostazioni
+ manage_settings_description: Consente agli utenti di modificare le impostazioni del sito
+ manage_taxonomies: Gestisci Tassonomie
+ manage_taxonomies_description: Consente agli utenti di esaminare i contenuti di tendenza e aggiornare le impostazioni degli hashtag
+ manage_user_access: Gestisci accesso utenti
+ manage_user_access_description: Consente agli utenti di disabilitare l'autenticazione a due fattori degli altri utenti, modificare il loro indirizzo e-mail e reimpostare la password
+ manage_users: Gestisci utenti
+ manage_users_description: Consente agli utenti di visualizzare le informazioni sugli altri utenti ed eseguire azioni di moderazione contro di loro
+ manage_webhooks: Gestisci Webhook
+ manage_webhooks_description: Consente agli utenti di impostare webhook per eventi amministrativi
+ view_audit_log: Visualizza Registro Attività
+ view_audit_log_description: Consente agli utenti di vedere una cronologia delle azioni amministrative sul server
+ view_dashboard: Mostra dashboard
+ view_dashboard_description: Consente agli utenti di accedere alla dashboard e alle varie metriche
+ view_devops: Devops
+ view_devops_description: Consente agli utenti di accedere alle dashboard Sidekiq e pgHero
+ title: Ruoli
rules:
add_new: Aggiungi regola
delete: Cancella
@@ -701,9 +774,6 @@ it:
deletion:
desc_html: Consenti a chiunque di cancellare il proprio account
title: Apri la cancellazione dell'account
- min_invite_role:
- disabled: Nessuno
- title: Permetti inviti da
require_invite_text:
desc_html: Quando le iscrizioni richiedono l'approvazione manuale, rendere la richiesta “Perché si desidera iscriversi?” obbligatoria invece che opzionale
title: Richiedi ai nuovi utenti di rispondere alla richiesta di motivazione per l'iscrizione
@@ -716,9 +786,6 @@ it:
show_known_fediverse_at_about_page:
desc_html: Quando attivato, mostra nell'anteprima i toot da tutte le istanze conosciute. Altrimenti mostra solo i toot locali.
title: Mostra la fediverse conosciuta nell'anteprima della timeline
- show_staff_badge:
- desc_html: Mostra un distintivo dello staff sulla pagina dell'utente
- title: Mostra badge staff
site_description:
desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a>
e <em>
.
title: Descrizione del server
@@ -729,8 +796,8 @@ it:
desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita del server.
title: Breve descrizione del server
site_terms:
- 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
+ desc_html: Puoi scrivere la tua politica sulla privacy. Puoi usare i tag HTML
+ title: Politica sulla privacy personalizzata
site_title: Nome del server
thumbnail:
desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati
@@ -740,8 +807,8 @@ it:
title: Anteprima timeline
title: Impostazioni sito
trendable_by_default:
- desc_html: Interessa gli hashtag che non sono stati precedentemente disattivati
- title: Permetti agli hashtag di comparire nei trend senza prima controllarli
+ desc_html: I contenuti di tendenza specifici possono ancora essere esplicitamente vietati
+ title: Consenti tendenze senza controllo preliminare
trends:
desc_html: Visualizza pubblicamente gli hashtag precedentemente esaminati che sono attualmente in tendenza
title: Hashtag di tendenza
@@ -1126,16 +1193,40 @@ it:
public: Timeline pubbliche
thread: Conversazioni
edit:
+ add_keyword: Aggiungi parola chiave
+ keywords: Parole chiave
+ statuses: Post singoli
+ statuses_hint_html: Questo filtro si applica a singoli post indipendentemente dal fatto che corrispondano alle parole chiave qui sotto. Rivedi o rimuovi i post dal filtro.
title: Modifica filtro
errors:
+ deprecated_api_multiple_keywords: Questi parametri non possono essere modificati da questa applicazione perché si applicano a più di una parola chiave che fa da filtro. Utilizzare un'applicazione più recente o l'interfaccia web.
invalid_context: Contesto mancante o non valido
- invalid_irreversible: Il filtraggio irreversibile funziona solo nei contesti di home o notifiche
index:
+ contexts: Filtri in %{contexts}
delete: Cancella
empty: Non hai alcun filtro.
+ expires_in: Scade tra %{distance}
+ expires_on: Scade il %{date}
+ keywords:
+ one: "%{count} parola chiave"
+ other: "%{count} parole chiave"
+ statuses:
+ one: "%{count} post"
+ other: "%{count} post"
+ statuses_long:
+ one: "%{count} singolo post nascosto"
+ other: "%{count} singoli post nascosti"
title: Filtri
new:
+ save: Salva nuovo filtro
title: Aggiungi filtro
+ statuses:
+ back_to_filter: Torna al filtro
+ batch:
+ remove: Togli dal filtro
+ index:
+ hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web.
+ title: Post filtrati
footer:
developers: Sviluppatori
more: Altro…
@@ -1143,12 +1234,22 @@ it:
trending_now: Di tendenza ora
generic:
all: Tutto
+ all_items_on_page_selected_html:
+ one: "%{count} elemento su questa pagina è selezionato."
+ other: Tutti i %{count} elementi su questa pagina sono selezionati.
+ all_matching_items_selected_html:
+ one: "%{count} elemento corrispondente alla tua ricerca è selezionato."
+ other: Tutti i %{count} elementi corrispondenti alla tua ricerca sono selezionati.
changes_saved_msg: Modifiche effettuate con successo!
copy: Copia
delete: Cancella
+ deselect: Deseleziona tutto
none: Nessuno
order_by: Ordina per
save_changes: Salva modifiche
+ select_all_matching_items:
+ one: Seleziona %{count} elemento corrispondente alla tua ricerca.
+ other: Seleziona tutti gli elementi %{count} corrispondenti alla tua ricerca.
today: oggi
validation_errors:
one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto
@@ -1253,19 +1354,10 @@ it:
copy_account_note_text: 'Questo utente si è spostato da %{acct}, ecco le tue note precedenti su di loro:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} ha inviato una segnalazione"
sign_up:
subject: "%{name} si è iscritto"
- digest:
- action: Vedi tutte le notifiche
- body: Ecco un breve riassunto di quello che ti sei perso dalla tua ultima visita del %{since}
- mention: "%{name} ti ha menzionato:"
- new_followers_summary:
- one: E inoltre hai ricevuto un nuovo seguace mentre eri assente! Urrà!
- other: Inoltre, hai acquisito %{count} nuovi seguaci mentre eri assente! Incredibile!
- subject:
- one: "1 nuova notifica dalla tua ultima visita 🐘"
- other: "%{count} nuove notifiche dalla tua ultima visita 🐘"
- title: In tua assenza…
favourite:
body: 'Il tuo status è stato apprezzato da %{name}:'
subject: "%{name} ha apprezzato il tuo status"
@@ -1628,7 +1720,7 @@ it:
Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 26 maggio 2022.
Adattato originalmente dal Discorso Politica della Privacy.
- title: "%{instance} Termini di servizio e politica della privacy"
+ title: Politica sulla privacy di %{instance}
themes:
contrast: Mastodon (contrasto elevato)
default: Mastodon (scuro)
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index b7139523b5..ae71d99249 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -36,7 +36,6 @@ ja:
other: 投稿
status_count_before: 投稿数
tagline: 分散型ソーシャルネットワーク
- terms: 利用規約
unavailable_content: 制限中のサーバー
unavailable_content_description:
domain: サーバー
@@ -77,10 +76,8 @@ ja:
posts_tab_heading: 投稿
posts_with_replies: 投稿と返信
roles:
- admin: Admin
bot: Bot
group: Group
- moderator: Mod
unavailable: プロフィールは利用できません
unfollow: フォロー解除
admin:
@@ -99,12 +96,17 @@ ja:
avatar: アイコン
by_domain: ドメイン
change_email:
- changed_msg: メールアドレスの変更に成功しました!
+ changed_msg: メールアドレスを変更しました!
current_email: 現在のメールアドレス
label: メールアドレスを変更
new_email: 新しいメールアドレス
submit: メールアドレスの変更
title: "%{username}さんのメールアドレスを変更"
+ change_role:
+ changed_msg: ロールを変更しました!
+ label: ロールを変更
+ no_role: ロールがありません
+ title: "%{username}さんのロールを変更"
confirm: 確認
confirmed: 確認済み
confirming: 確認中
@@ -148,6 +150,7 @@ ja:
active: アクティブ
all: すべて
pending: 承認待ち
+ silenced: 制限
suspended: 停止済み
title: モデレーション
moderation_notes: モデレーションメモ
@@ -155,6 +158,7 @@ ja:
most_recent_ip: 直近のIP
no_account_selected: 何も選択されていないため、変更されていません
no_limits_imposed: 制限なし
+ no_role_assigned: ロールが割り当てられていません
not_subscribed: 購読していない
pending: 承認待ち
perform_full_suspension: 活動を完全に停止させる
@@ -180,12 +184,7 @@ ja:
reset: リセット
reset_password: パスワード再設定
resubscribe: 再講読
- role: 役割
- roles:
- admin: 管理者
- moderator: モデレーター
- staff: スタッフ
- user: ユーザー
+ role: ロール
search: 検索
search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー
search_same_ip: 同じIPのユーザーを検索
@@ -228,17 +227,21 @@ ja:
approve_user: ユーザーの承認
assigned_to_self_report: 通報の担当者に設定
change_email_user: ユーザーのメールアドレスを変更
+ change_role_user: ユーザーのロールを変更
confirm_user: ユーザーの確認
create_account_warning: 警告を作成
create_announcement: お知らせを作成
+ create_canonical_email_block: メールブロックを作成
create_custom_emoji: カスタム絵文字を作成
create_domain_allow: 連合を許可
create_domain_block: ドメインブロックを作成
create_email_domain_block: メールドメインブロックを作成
create_ip_block: IPルールを作成
create_unavailable_domain: 配送できないドメインを作成
+ create_user_role: ロールを作成
demote_user: ユーザーを降格
destroy_announcement: お知らせを削除
+ destroy_canonical_email_block: メールブロックを削除
destroy_custom_emoji: カスタム絵文字を削除
destroy_domain_allow: 連合許可を外す
destroy_domain_block: ドメインブロックを削除
@@ -247,6 +250,7 @@ ja:
destroy_ip_block: IPルールを削除
destroy_status: 投稿を削除
destroy_unavailable_domain: 配送できないドメインを削除
+ destroy_user_role: ロールを削除
disable_2fa_user: 二要素認証を無効化
disable_custom_emoji: カスタム絵文字を無効化
disable_sign_in_token_auth_user: ユーザーのメールトークン認証を無効にする
@@ -273,7 +277,9 @@ ja:
update_announcement: お知らせを更新
update_custom_emoji: カスタム絵文字を更新
update_domain_block: ドメインブロックを更新
+ update_ip_block: IPルールを更新
update_status: 投稿を更新
+ update_user_role: ロールを更新
actions:
approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました"
approve_user_html: "%{target}から登録された%{name}さんを承認しました"
@@ -290,7 +296,6 @@ ja:
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}をメールドメインブロックから外しました"
@@ -325,7 +330,6 @@ ja:
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: ユーザーでフィルター
@@ -629,6 +633,60 @@ ja:
unresolved: 未解決
updated_at: 更新日時
view_profile: プロフィールを表示
+ roles:
+ add_new: ロールを追加
+ assigned_users:
+ other: "%{count}人"
+ categories:
+ administration: 管理
+ devops: 開発者
+ invites: 招待
+ moderation: モデレーション
+ delete: 削除
+ description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。"
+ edit: "『%{name}』のロールを編集"
+ everyone: デフォルトの権限
+ everyone_full_description_html: これは、割り当てられたロールを持っていないものであっても、 すべてのユーザー に影響を与える 基本ロールです。 他のすべてのロールは、そこから権限を継承します。
+ permissions_count:
+ other: "%{count}件の権限"
+ privileges:
+ administrator: 管理者
+ administrator_description: この権限を持つユーザーはすべての権限をバイパスします
+ delete_user_data: ユーザーデータの削除
+ delete_user_data_description: ユーザーは、遅滞なく他のユーザーのデータを削除することができます
+ invite_users: ユーザーを招待
+ invite_users_description: ユーザーが新しい人を招待できるようにします
+ manage_announcements: お知らせの管理
+ manage_announcements_description: ユーザーがアナウンスを管理できるようにします
+ manage_appeals: 抗議の管理
+ manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます
+ manage_blocks: ブロックの管理
+ manage_blocks_description: ユーザーがメールプロバイダとIPアドレスをブロックできるようにします
+ manage_custom_emojis: カスタム絵文字を管理
+ manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします
+ manage_federation: 連合の管理
+ manage_federation_description: ユーザーが他のドメインとの連合をブロックまたは許可したり、配信を制御したりできます。
+ manage_invites: 招待を管理
+ manage_reports: レポートの管理
+ manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。
+ manage_roles: ロールの管理
+ manage_rules: ルールの管理
+ manage_rules_description: ユーザーがサーバールールを変更できるようにします
+ manage_settings: 設定の管理
+ manage_settings_description: ユーザーがサイト設定を変更できるようにします
+ manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新
+ manage_user_access: アクセス権を管理
+ manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。
+ manage_users: ユーザーの管理
+ manage_webhooks: Webhookの管理
+ manage_webhooks_description: 管理者イベントのWebhookを設定できます。
+ view_audit_log: 監査ログの表示
+ view_audit_log_description: ユーザーがサーバー上で管理アクションの履歴を表示できるようにします
+ view_dashboard: ダッシュボードの表示
+ view_dashboard_description: ユーザーがダッシュボードやさまざまなメトリクスにアクセスできるようにします
+ view_devops: 開発者
+ view_devops_description: Sidekiq と pgHero ダッシュボードにアクセスできるようにします
+ title: ロール
rules:
add_new: ルールを追加
delete: 削除
@@ -681,9 +739,6 @@ ja:
deletion:
desc_html: 誰でも自分のアカウントを削除できるようにします
title: アカウント削除を受け付ける
- min_invite_role:
- disabled: 誰にも許可しない
- title: 招待の作成を許可
require_invite_text:
desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする
title: 新規ユーザー登録時の理由を必須入力にする
@@ -696,9 +751,6 @@ ja:
show_known_fediverse_at_about_page:
desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開投稿のみ表示します。
title: 公開タイムラインに連合先のコンテンツも表示する
- show_staff_badge:
- desc_html: ユーザーページにスタッフのバッジを表示します
- title: スタッフバッジを表示する
site_description:
desc_html: フロントページへの表示に使用される紹介文です。このMastodonサーバーを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に<a>
と <em>
が使えます。
title: サーバーの説明
@@ -709,8 +761,7 @@ ja:
desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。
title: 短いサーバーの説明
site_terms:
- desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます
- title: カスタム利用規約
+ title: カスタムプライバシーポリシー
site_title: サーバーの名前
thumbnail:
desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です
@@ -719,9 +770,6 @@ ja:
desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します
title: 公開タイムラインへの未認証のアクセスを許可する
title: サイト設定
- trendable_by_default:
- desc_html: 表示を拒否していないハッシュタグに影響します
- title: 審査前のハッシュタグのトレンドへの表示を許可する
trends:
desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します
title: トレンドタグを有効にする
@@ -835,6 +883,7 @@ ja:
enabled: アクティブ
events: イベント
new: 新しいwebhook
+ status: ステータス
title: Webhooks
webhook: Webhook
admin_mailer:
@@ -1085,15 +1134,24 @@ ja:
public: 公開タイムライン
thread: 会話
edit:
+ add_keyword: キーワードを追加
+ keywords: キーワード
title: フィルターを編集
errors:
invalid_context: 対象がないか無効です
- invalid_irreversible: この機能はホームタイムラインまたは通知と一緒に指定する場合のみ機能します
index:
+ contexts: "%{contexts}のフィルター"
delete: 削除
empty: フィルターはありません。
+ expires_in: "%{distance}で期限切れ"
+ expires_on: 有効期限 %{date}
+ keywords:
+ other: "%{count}件のキーワード"
+ statuses:
+ other: "%{count}件の投稿"
title: フィルター
new:
+ save: 新規フィルターを保存
title: 新規フィルターを追加
footer:
developers: 開発者向け
@@ -1210,17 +1268,10 @@ ja:
copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。
notification_mailer:
admin:
+ report:
+ subject: "%{name}さんがレポートを送信しました"
sign_up:
subject: "%{name}さんがサインアップしました"
- digest:
- action: 全ての通知を表示
- body: '最後のログイン(%{since})からの出来事:'
- mention: "%{name}さんがあなたに返信しました:"
- new_followers_summary:
- other: また、離れている間に%{count}人の新たなフォロワーを獲得しました!
- subject:
- other: "前回の訪問から%{count}件の新しい通知 🐘"
- title: 不在の間に…
favourite:
body: "%{name}さんにお気に入り登録された、あなたの投稿があります:"
subject: "%{name}さんにお気に入りに登録されました"
@@ -1574,7 +1625,7 @@ ja:
この文章のライセンスはCC-BY-SAです。最終更新日は2021年6月1日です。
オリジナルの出典: Discourse privacy policy
- title: "%{instance} 利用規約・プライバシーポリシー"
+ title: "%{instance}のプライバシーポリシー"
themes:
contrast: Mastodon (ハイコントラスト)
default: Mastodon (ダーク)
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index bd02b0f8de..64b0419ed2 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -13,10 +13,8 @@ ka:
documentation: დოკუმენტაცია
hosted_on: მასტოდონს მასპინძლობს %{domain}
learn_more: გაიგე მეტი
- privacy_policy: კონფიდენციალურობის პოლიტიკა
source_code: კოდი
status_count_before: ვინც უავტორა
- terms: მომსახურების პირობები
user_count_before: სახლი
what_is_mastodon: რა არის მასტოდონი?
accounts:
@@ -34,9 +32,7 @@ ka:
following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ
posts_with_replies: ტუტები და პასუხები
roles:
- admin: ადმინისტრატორი
bot: ბოტი
- moderator: მოდერატორი
unfollow: ნუღარ მიჰყვები
admin:
account_moderation_notes:
@@ -48,7 +44,6 @@ ka:
avatar: ავატარი
by_domain: დომენი
change_email:
- changed_msg: ანგარიშის ელ-ფოსტა წარმატებით შეიცვალა!
current_email: მიმდინარე ელ-ფოსტა
label: ელ-ფოსტის შეცვლა
new_email: ახალი ელ-ფოსტა
@@ -102,12 +97,6 @@ ka:
reset: გადატვირთვა
reset_password: პაროლის გადატვირთვა
resubscribe: ხელახალი გამოწერა
- role: უფლებები
- roles:
- admin: ადმინისტრატორი
- moderator: მოდერატორი
- staff: სტაფი
- user: მომხმარებელი
search: ძებნა
shared_inbox_url: გაზიარებული ინბოქსის ურლ
show:
@@ -124,7 +113,6 @@ ka:
username: მომხმარებლის სახელი
web: ვები
action_logs:
- deleted_status: "(გაუქმებული სტატუსი)"
title: აუდიტის ლოგი
custom_emojis:
by_domain: დომენი
@@ -254,15 +242,9 @@ ka:
deletion:
desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში
title: ღია ანგარიშის გაუქმება
- min_invite_role:
- disabled: არავინ
- title: ნება დაერთოს მოწვეევებს
show_known_fediverse_at_about_page:
desc_html: ჩართვისას, ეს გამოაჩენს ტუტებს ყველა ცნობილი ფედივერსისგან პრევიუზე. სხვა შემთხვევაში, გამოაჩენს მხოლოდ ლოკალურ ტუტებს.
title: გამოჩნდეს ცნობილი ვედივერსი თაიმლაინ პრევიუში
- show_staff_badge:
- desc_html: გამოჩნდეს სტაფის ნიშანი მომხმარებლის გვერდზე
- title: სტაფის ნიშნის გამოჩენა
site_description:
desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a>
და <em>
.
title: ინსტანციის აღწერილობა
@@ -272,9 +254,6 @@ ka:
site_short_description:
desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა.
title: აჩვენეთ ინსტანციის აღწერილობა
- site_terms:
- desc_html: შეგიძლიათ დაწეროთ საკუთარი კონფიდენციალურობის პოლიტიკა, მომსახურების პირობები ან სხვა იურიდიული დოკუმენტი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
- title: პერსონალიზირებული მომსახურების პირობები
site_title: ინსტანციის სახელი
thumbnail:
desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული
@@ -395,7 +374,6 @@ ka:
title: ფილტრის ცვლილება
errors:
invalid_context: მოწოდებულია არასწორი ან ცარიელი კონტექსტი
- invalid_irreversible: დაუბრუნებელი ფილტრაცია მუშაობს მხოლოდ სახლის ან ნოტიფიკაციის კონტექსტში
index:
delete: გაუქმება
title: ფილტრები
@@ -454,14 +432,6 @@ ka:
moderation:
title: მოდერაცია
notification_mailer:
- digest:
- action: ყველა შეტყობინების ჩვენება
- body: 'აქ მოკლე შინაარსია წერილების, რომლებიც გამოგეპარათ წინა სტუმრობის შემდეგ: %{since}'
- mention: "%{name}-მა დაგასახელათ:"
- new_followers_summary:
- one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი!
- other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია!
- title: თქვენს არყოფნაში...
favourite:
body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:'
subject: "%{name}-მა თქვენი სტატუსი გახადა ფავორიტი"
@@ -592,8 +562,6 @@ ka:
pinned: აპინული ტუტი
reblogged: გაზრდილი
sensitive_content: მგრძნობიარე კონტენტი
- terms:
- title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა"
themes:
contrast: მაღალი კონტრასტი
default: მასტოდონი
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 0db4e1c9dc..cda77cb6e1 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -20,7 +20,6 @@ kab:
get_apps: Ɛreḍ asnas aziraz
hosted_on: Maṣṭudun yersen deg %{domain}
learn_more: Issin ugar
- privacy_policy: Tasertit tabaḍnit
rules: Ilugan n uqeddac
see_whats_happening: Ẓer d acu i iḍerrun
server_stats: 'Tidaddanin n uqeddac:'
@@ -29,7 +28,6 @@ kab:
one: n tsuffeɣt
other: n tsuffiɣin
status_count_before: I d-yessuffɣen
- terms: Tiwetlin n useqdec
unavailable_content: Ulac agbur
unavailable_content_description:
domain: Aqeddac
@@ -63,10 +61,8 @@ kab:
posts_tab_heading: Tijewwiqin
posts_with_replies: Tijewwaqin akked tririyin
roles:
- admin: Anedbal
bot: Aṛubut
group: Agraw
- moderator: Atrar
unavailable: Ur nufi ara amaɣnu-a
unfollow: Ur ṭṭafaṛ ara
admin:
@@ -81,7 +77,6 @@ kab:
avatar: Tugna n umaɣnu
by_domain: Taɣult
change_email:
- changed_msg: Imayl n umiḍan yettwabeddel mebla ugur!
current_email: Imayl n tura
label: Beddel imayl
new_email: Imayl amaynut
@@ -152,12 +147,6 @@ kab:
reset: Wennez
reset_password: Beddel awal uffir
resubscribe: Ales ajerred
- role: Tisirag
- roles:
- admin: Anedbal
- moderator: Aseɣyad
- staff: Tarbaɛt
- user: Amseqdac
search: Nadi
search_same_email_domain: Iseqdacen-nniḍen s yiwet n taɣult n yimayl
search_same_ip: Imseqdacen-nniḍen s tansa IP am tinn-ik
@@ -232,7 +221,6 @@ kab:
create_unavailable_domain_html: "%{name} iseḥbes asiweḍ ɣer taɣult %{target}"
demote_user_html: "%{name} iṣubb-d deg usellun aseqdac %{target}"
destroy_announcement_html: "%{name} yekkes taselɣut %{target}"
- destroy_custom_emoji_html: "%{name} ihudd imuji %{target}"
destroy_domain_allow_html: "%{name} yekkes taɣult %{target} seg tebdart tamellalt"
destroy_domain_block_html: "%{name} yekkes aseḥbes n taɣult %{target}"
destroy_email_domain_block_html: "%{name} yekkes asewḥel i taɣult n imayl %{target}"
@@ -256,7 +244,6 @@ kab:
update_custom_emoji_html: "%{name} ileqqem imuji %{target}"
update_domain_block_html: "%{name} ileqqem iḥder n taɣult i %{target}"
update_status_html: "%{name} ileqqem tasufeɣt n %{target}"
- deleted_status: "(tasuffeɣt tettwakkes)"
empty: Ulac iɣmisen i yellan.
filter_by_action: Fren s tigawt
filter_by_user: Sizdeg s useqdac
@@ -446,9 +433,6 @@ kab:
users: Γef yimseqdacen idiganen i yeqqnen
profile_directory:
title: Rmed akaram n imaγnuten
- registrations:
- min_invite_role:
- disabled: Ula yiwen·t
registrations_mode:
modes:
none: Yiwen·t ur yzmir ad izeddi
@@ -644,9 +628,6 @@ kab:
incoming_migrations: Tusiḍ-d seg umiḍan nniḍen
proceed_with_move: Awid imeḍfaṛen-ik
notification_mailer:
- digest:
- action: Wali akk tilγa
- mention: 'Yuder-ik-id %{name} deg:'
favourite:
subject: "%{name} yesmenyaf addad-ik·im"
follow:
@@ -806,8 +787,6 @@ kab:
stream_entries:
pinned: Tijewwiqt yettwasentḍen
sensitive_content: Agbur amḥulfu
- terms:
- title: Tiwtilin n useqdec akked tsertit tabaḍnit n %{instance}
themes:
contrast: Maṣṭudun (agnil awriran)
default: Maṣṭudun (Aberkan)
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 406f7e3c87..939e3c5201 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -24,7 +24,6 @@ kk:
Бұл аккаунт кез-келген жеке пайдаланушыны емес, сервердің өзін көрсету үшін қолданылатын виртуалды актер.
Ол федерация мақсаттарында қолданылады және сіз барлығын бұғаттағыңыз келмейінше, бұғатталмауы керек, бұл жағдайда сіз домен блогын қолданған жөн.
learn_more: Көбірек білу
- privacy_policy: Құпиялылық саясаты
see_whats_happening: Не болып жатқанын қараңыз
server_stats: 'Сервер статистикасы:'
source_code: Ашық коды
@@ -32,7 +31,6 @@ kk:
one: жазба
other: жазба
status_count_before: Барлығы
- terms: Қолдану шарттары
unavailable_content: Қолжетімсіз контент
unavailable_content_description:
domain: Сервер
@@ -72,10 +70,8 @@ kk:
posts_tab_heading: Жазба
posts_with_replies: Жазбалар және жауаптар
roles:
- admin: Админ
bot: Бот
group: Топ
- moderator: Мод
unavailable: Профиль қолжетімді емес
unfollow: Оқымау
admin:
@@ -92,7 +88,6 @@ kk:
avatar: Аватар
by_domain: Домен
change_email:
- changed_msg: Аккаунт email-і сәтті өзгертілді!
current_email: Қазіргі email
label: email өзгерту
new_email: Жаңа email
@@ -157,12 +152,6 @@ kk:
reset: Қалпына келтіру
reset_password: Құпиясөзді қалпына келтіру
resubscribe: Resubscribе
- role: Рұқсаттар
- roles:
- admin: Админ
- moderator: Модератор
- staff: Қызметкерлер
- user: Қолданушы
search: Іздеу
search_same_ip: Осы ІРмен кірген басқа қолданушылар
shared_inbox_url: Бөлісілген инбокс URL
@@ -184,7 +173,6 @@ kk:
web: Веб
whitelisted: Рұқсат тізімі
action_logs:
- deleted_status: "(өшірілген жазба)"
title: Аудит логы
announcements:
destroyed_msg: Анонс сәтті өшірілді!
@@ -385,9 +373,6 @@ kk:
deletion:
desc_html: Allow anyone to delete their аккаунт
title: Open аккаунт deletion
- min_invite_role:
- disabled: Ешкім
- title: Allow шақырулар by
registrations_mode:
modes:
approved: Тіркелу үшін мақұлдау қажет
@@ -397,9 +382,6 @@ kk:
show_known_fediverse_at_about_page:
desc_html: When toggled, it will show toots from all the known fediverse on preview. Otherwise it will only show жергілікті toots.
title: Show known fediverse on timeline превью
- show_staff_badge:
- desc_html: Show a staff badge on a user бет
- title: Көрсет staff badge
site_description:
desc_html: Introductory paragraph on the басты бет. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a>
and <em>
.
title: Сервер туралы
@@ -409,9 +391,6 @@ kk:
site_short_description:
desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to сервер description.
title: Short сервер description
- site_terms:
- desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML тег
- title: Қолдану шарттары мен ережелер
site_title: Сервер аты
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді
@@ -420,9 +399,6 @@ kk:
desc_html: Display public timeline on лендинг пейдж
title: Таймлайн превьюі
title: Сайт баптаулары
- trendable_by_default:
- desc_html: Бұрын тыйым салынбаған хэштегтерге әсер етеді
- title: Хэштегтерге алдын-ала шолусыз тренд беруге рұқсат етіңіз
trends:
desc_html: Бұрын қарастырылған хэштегтерді қазіргі уақытта трендте көпшілікке көрсету
title: Тренд хештегтер
@@ -618,7 +594,6 @@ kk:
title: Фильтр өңдеу
errors:
invalid_context: Жоқ немесе жарамсыз контекст берілген
- invalid_irreversible: Қайтарылмайтын сүзгі тек ішкі немесе ескертпелер контекстімен жұмыс істейді
index:
delete: Өшіру
empty: Сізде ешқандай фильтр жоқ.
@@ -701,14 +676,6 @@ kk:
moderation:
title: Модерация
notification_mailer:
- digest:
- action: Барлық ескертпелер
- body: Міне, соңғы кірген уақыттан кейін келген хаттардың қысқаша мазмұны %{since}
- mention: "%{name} сізді атап өтіпті:"
- new_followers_summary:
- one: Сондай-ақ, сіз бір жаңа оқырман таптыңыз! Алақай!
- other: Сондай-ақ, сіз %{count} жаңа оқырман таптыңыз! Керемет!
- title: Сіз жоқ кезде...
favourite:
body: 'Жазбаңызды ұнатып, таңдаулыға қосты %{name}:'
subject: "%{name} жазбаңызды таңдаулыға қосты"
@@ -908,8 +875,6 @@ kk:
sensitive_content: Нәзік мазмұн
tags:
does_not_match_previous_name: алдыңғы атқа сәйкес келмейді
- terms:
- title: "%{instance} Қызмет көрсету шарттары және Құпиялылық саясаты"
themes:
contrast: Mastodon (Жоғары контраст)
default: Mastodon (Қою)
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 2397b63e58..946784a038 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -28,7 +28,7 @@ ko:
learn_more: 자세히
logged_in_as_html: 현재 %{username}으로 로그인 했습니다.
logout_before_registering: 이미 로그인 했습니다.
- privacy_policy: 개인정보 정책
+ privacy_policy: 개인정보 처리방침
rules: 서버 규칙
rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:'
see_whats_happening: 무슨 일이 일어나는 지 보기
@@ -38,7 +38,6 @@ ko:
other: 개
status_count_before: 게시물 수
tagline: 분산화된 소셜 네트워크
- terms: 이용약관
unavailable_content: 이용 불가능한 컨텐츠
unavailable_content_description:
domain: 서버
@@ -79,10 +78,8 @@ ko:
posts_tab_heading: 게시물
posts_with_replies: 게시물과 답장
roles:
- admin: 관리자
bot: 봇
group: 그룹
- moderator: 중재자
unavailable: 프로필 사용 불가
unfollow: 팔로우 해제
admin:
@@ -101,12 +98,17 @@ ko:
avatar: 아바타
by_domain: 도메인
change_email:
- changed_msg: 이메일이 성공적으로 바뀌었습니다!
+ changed_msg: 이메일이 성공적으로 변경되었습니다!
current_email: 현재 이메일 주소
label: 이메일 주소 변경
new_email: 새 이메일 주소
submit: 이메일 주소 변경
title: "%{username}의 이메일 주소 변경"
+ change_role:
+ changed_msg: 역할이 성공적으로 변경되었습니다!
+ label: 역할 변경
+ no_role: 역할 없음
+ title: "%{username}의 역할 변경"
confirm: 확인
confirmed: 확인됨
confirming: 확인 중
@@ -150,6 +152,7 @@ ko:
active: 활동
all: 전체
pending: 대기중
+ silenced: 제한됨
suspended: 정지 중
title: 중재
moderation_notes: 중재 기록
@@ -157,6 +160,7 @@ ko:
most_recent_ip: 최근 IP
no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다
no_limits_imposed: 제한 없음
+ no_role_assigned: 할당된 역할 없음
not_subscribed: 구독하지 않음
pending: 심사 대기
perform_full_suspension: 정지시키기
@@ -182,12 +186,7 @@ ko:
reset: 초기화
reset_password: 암호 초기화
resubscribe: 다시 구독
- role: 권한
- roles:
- admin: 관리자
- moderator: 중재자
- staff: 스태프
- user: 사용자
+ role: 역할
search: 검색
search_same_email_domain: 같은 이메일 도메인을 가진 다른 사용자들
search_same_ip: 같은 IP의 다른 사용자들
@@ -230,17 +229,21 @@ ko:
approve_user: 사용자 승인
assigned_to_self_report: 신고 맡기
change_email_user: 사용자의 이메일 변경
+ change_role_user: 사용자 역할 변경
confirm_user: 사용자 확인
create_account_warning: 경고 생성
create_announcement: 공지사항 생성
+ create_canonical_email_block: 이메일 차단 생성
create_custom_emoji: 커스텀 에모지 생성
create_domain_allow: 도메인 허용 생성
create_domain_block: 도메인 차단 추가
create_email_domain_block: 이메일 도메인 차단 생성
create_ip_block: IP 규칙 만들기
create_unavailable_domain: 사용 불가능한 도메인 생성
+ create_user_role: 역할 생성
demote_user: 사용자 강등
destroy_announcement: 공지사항 삭제
+ destroy_canonical_email_block: 이메일 차단 삭제
destroy_custom_emoji: 커스텀 에모지 삭제
destroy_domain_allow: 도메인 허용 삭제
destroy_domain_block: 도메인 차단 삭제
@@ -249,6 +252,7 @@ ko:
destroy_ip_block: IP 규칙 삭제
destroy_status: 게시물 삭제
destroy_unavailable_domain: 사용 불가능한 도메인 제거
+ destroy_user_role: 역할 삭제
disable_2fa_user: 2단계 인증 비활성화
disable_custom_emoji: 커스텀 에모지 비활성화
disable_sign_in_token_auth_user: 사용자에 대한 이메일 토큰 인증 비활성화
@@ -275,24 +279,30 @@ ko:
update_announcement: 공지사항 업데이트
update_custom_emoji: 커스텀 에모지 업데이트
update_domain_block: 도메인 차단 갱신
+ update_ip_block: IP 규칙 수정
update_status: 게시물 게시
+ update_user_role: 역할 수정
actions:
approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 승인했습니다"
approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다"
assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다"
change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다"
+ change_role_user_html: "%{name} 님이 %{target} 님의 역할을 수정했습니다"
confirm_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 승인했습니다"
create_account_warning_html: "%{name} 님이 %{target}에게 경고를 보냈습니다"
create_announcement_html: "%{name} 님이 새 공지 %{target}을 만들었습니다"
+ create_canonical_email_block_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}에 대한 전달을 중지했습니다"
+ create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다"
demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다"
destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다"
- destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다"
+ destroy_canonical_email_block_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}을 차단 해제하였습니다"
@@ -300,6 +310,7 @@ ko:
destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다"
destroy_status_html: "%{name} 님이 %{target}의 게시물을 삭제했습니다"
destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개"
+ destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다"
disable_2fa_user_html: "%{name} 님이 사용자 %{target}의 2FA를 비활성화 했습니다"
disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화 했습니다"
disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화 했습니다"
@@ -326,8 +337,9 @@ ko:
update_announcement_html: "%{name} 님이 공지사항 %{target}을 갱신했습니다"
update_custom_emoji_html: "%{name} 님이 에모지 %{target}를 업데이트 했습니다"
update_domain_block_html: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다"
+ update_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 수정했습니다"
update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다"
- deleted_status: "(삭제된 게시물)"
+ update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다"
empty: 로그를 찾을 수 없습니다
filter_by_action: 행동으로 거르기
filter_by_user: 사용자로 거르기
@@ -637,6 +649,65 @@ ko:
unresolved: 미해결
updated_at: 업데이트 시각
view_profile: 프로필 보기
+ roles:
+ add_new: 역할 추가
+ assigned_users:
+ other: "%{count} 명의 사용자"
+ categories:
+ administration: 관리
+ devops: 데브옵스
+ invites: 초대
+ moderation: 중재
+ special: 특수
+ delete: 삭제
+ description_html: "사용자 역할을 통해, 사용자들이 마스토돈의 어떤 기능과 영역에 접근할 수 있을지 설정할 수 있습니다."
+ edit: "%{name} 역할 수정"
+ everyone: 기본 권한
+ everyone_full_description_html: 이것은 모든 사용자에게 적용될 기본 역할이며, 역할을 지정하지 않아도 적용됩니다. 다른 모든 역할들은 여기에서 권한을 상속합니다.
+ permissions_count:
+ other: "%{count} 개의 권한"
+ privileges:
+ administrator: 관리자
+ administrator_description: 이 권한을 가진 사용자는 모든 권한을 우회합니다
+ delete_user_data: 사용자 데이터 삭제
+ delete_user_data_description: 사용자가 다른 사용자의 데이터를 지체 없이 삭제할 수 있도록 허용
+ invite_users: 사용자 초대
+ invite_users_description: 사용자가 다른 사람들을 서버에 초대할 수 있도록 허용
+ manage_announcements: 공지 관리
+ manage_announcements_description: 사용자가 서버의 공지사항을 관리할 수 있도록 허용
+ manage_appeals: 이의제기 관리
+ manage_appeals_description: 사용자가 중재에 대한 이의제기를 리뷰할 수 있도록 허용
+ manage_blocks: 차단 관리
+ manage_blocks_description: 사용자가 이메일 제공자와 IP 주소를 차단할 수 있도록 허용
+ manage_custom_emojis: 커스텀 에모지 관리
+ manage_custom_emojis_description: 사용자가 서버의 커스텀 에모지를 관리할 수 있도록 허용
+ manage_federation: 연합 관리
+ manage_federation_description: 사용자가 다른 도메인과의 연합을 차단하거나 허용할 수 있도록 하고, 전달 가능 여부를 조정할 수 있도록 허용
+ manage_invites: 초대 관리
+ manage_invites_description: 사용자가 초대 링크를 보고 비활성화 할 수 있도록 허용
+ manage_reports: 신고 관리
+ manage_reports_description: 사용자가 신고를 리뷰하고 해당 사용자에 대한 중재활동을 수행할 수 있도록 허용
+ manage_roles: 역할 관리
+ manage_roles_description: 사용자가 그들 이하의 권한에 대해 관리하고 할당할 수 있도록 허용
+ manage_rules: 규칙 관리
+ manage_rules_description: 사용자가 서버 규칙을 수정할 수 있도록 허용합니다
+ manage_settings: 설정 관리
+ manage_settings_description: 사용자가 서버 설정을 수정할 수 있도록 허용합니다
+ manage_taxonomies: 분류 관리
+ manage_taxonomies_description: 사용자가 트렌드를 리뷰하고 해시태그 설정을 수정할 수 있도록 허용합니다
+ manage_user_access: 사용자 접근 관리
+ manage_user_access_description: 사용자가 다른 사용자의 2차 인증을 비활성화 하거나, 이메일 주소를 바꾸거나, 암호를 초기화 할 수 있도록 허용
+ manage_users: 사용자 관리
+ manage_users_description: 사용자가 다른 사용자의 상세정보를 보고 해당 사용자에 대한 중재활동을 할 수 있도록 허용
+ manage_webhooks: 웹훅 관리
+ manage_webhooks_description: 사용자가 관리용 웹훅을 설정할 수 있도록 허용
+ view_audit_log: 감사 기록 보기
+ view_audit_log_description: 사용자가 서버의 감사 기록을 볼 수 있도록 허용
+ view_dashboard: 대시보드 보기
+ view_dashboard_description: 사용자가 여러 통계정보를 볼 수 있는 대시보드에 접근할 수 있도록 허용
+ view_devops: 데브옵스
+ view_devops_description: Sidekiq과 pgHero 대시보드에 접근할 수 있도록 허용
+ title: 역할
rules:
add_new: 규칙 추가
delete: 삭제
@@ -689,9 +760,6 @@ ko:
deletion:
desc_html: 사용자가 자신의 계정을 삭제할 수 있도록 허용합니다
title: 계정 삭제를 허가함
- min_invite_role:
- disabled: 아무도 못 하게
- title: 초대링크를 만들 수 있는 권한
require_invite_text:
desc_html: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다
title: 새 사용자가 초대 요청 글을 작성해야 하도록
@@ -704,9 +772,6 @@ ko:
show_known_fediverse_at_about_page:
desc_html: 활성화 되면 프리뷰 페이지에서 페디버스의 모든 게시물을 표시합니다. 비활성화시 로컬에 있는 게시물만 표시 됩니다.
title: 타임라인 프리뷰에 알려진 페디버스 표시하기
- show_staff_badge:
- desc_html: 사용자 페이지에 스태프 배지를 표시합니다
- title: 스태프 배지 표시
site_description:
desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>
, <em>
같은 것을 사용 가능합니다.
title: 서버 설명
@@ -717,8 +782,8 @@ ko:
desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요.
title: 짧은 서버 설명
site_terms:
- desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. HTML태그를 사용할 수 있습니다
- title: 커스텀 서비스 이용 약관
+ desc_html: 자신만의 개인정보 처리방침을 작성할 수 있습니다. HTML 태그를 사용할 수 있습니다
+ title: 사용자 지정 개인정보 처리방침
site_title: 서버 이름
thumbnail:
desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다
@@ -728,8 +793,8 @@ ko:
title: 타임라인 프리뷰
title: 사이트 설정
trendable_by_default:
- desc_html: 이전에 거부되지 않은 해시태그들에 영향을 미칩니다
- title: 해시태그가 사전 리뷰 없이 트렌드에 올라갈 수 있도록 허용
+ desc_html: 특정 트렌드를 허용시키지 않는 것은 여전히 가능합니다
+ title: 사전 리뷰 없이 트렌드에 오르는 것을 허용
trends:
desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다
title: 유행하는 해시태그
@@ -1108,16 +1173,37 @@ ko:
public: 퍼블릭 타임라인
thread: 대화
edit:
+ add_keyword: 키워드 추가
+ keywords: 키워드
+ statuses: 개별 게시물
+ statuses_hint_html: 이 필터는 아래의 키워드에 매칭되는지 여부와 관계 없이 몇몇개의 게시물들에 별개로 적용되었습니다. 검토하거나 필터에서 삭제하세요
title: 필터 편집
errors:
+ deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요.
invalid_context: 컨텍스트가 없거나 올바르지 않습니다
- invalid_irreversible: 되돌릴 수 없는 필터링은 홈 타임라인과 알림에서만 동작합니다
index:
+ contexts: "%{contexts}에 대한 필터"
delete: 삭제
empty: 필터가 없습니다.
+ expires_in: "%{distance} 안에 만료됨"
+ expires_on: "%{date}에 만료됨"
+ keywords:
+ other: "%{count}개의 키워드"
+ statuses:
+ other: "%{count}개의 게시물"
+ statuses_long:
+ other: "%{count}개의 개별적인 게시물 숨겨짐"
title: 필터
new:
+ save: 새 필터 저장
title: 필터 추가
+ statuses:
+ back_to_filter: 필터로 돌아가기
+ batch:
+ remove: 필터에서 제거
+ index:
+ hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다.
+ title: 필터링된 게시물
footer:
developers: 개발자
more: 더 보기…
@@ -1125,12 +1211,19 @@ ko:
trending_now: 지금 유행중
generic:
all: 모두
+ all_items_on_page_selected_html:
+ other: 현재 페이지에서 %{count} 개의 항목이 선택되었습니다
+ all_matching_items_selected_html:
+ other: 검색에 잡히는 %{count} 개의 항목이 선택되었습니다
changes_saved_msg: 정상적으로 변경되었습니다!
copy: 복사
delete: 삭제
+ deselect: 전체 선택 해제
none: 없음
order_by: 순서
save_changes: 변경 사항을 저장
+ select_all_matching_items:
+ other: 검색에 잡힌 %{count} 개의 항목을 모두 선택하기
today: 오늘
validation_errors:
other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오
@@ -1233,17 +1326,10 @@ ko:
copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} 님이 신고를 제출했습니다"
sign_up:
subject: "%{name} 님이 가입했습니다"
- digest:
- action: 모든 알림 보기
- body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약
- mention: "%{name} 님이 나를 언급했습니다:"
- new_followers_summary:
- other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다!
- subject:
- other: 마지막 방문 이후로 %{count} 건의 새로운 알림
- title: 당신이 없는 동안에...
favourite:
body: '당신의 게시물을 %{name} 님이 마음에 들어했습니다:'
subject: "%{name} 님이 내 게시물을 마음에 들어했습니다"
@@ -1600,7 +1686,7 @@ ko:
이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2012년 5월 26일입니다.
Originally adapted from the Discourse privacy policy.
- title: "%{instance} 이용약관과 개인정보 취급 방침"
+ title: "%{instance} 개인정보 처리방침"
themes:
contrast: 마스토돈 (고대비)
default: 마스토돈 (어두움)
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
index a157dbb4e4..2dcba64ddb 100644
--- a/config/locales/ku.yml
+++ b/config/locales/ku.yml
@@ -19,16 +19,16 @@ ku:
continue_to_web: Bo malpera sepanê bidomîne
discover_users: Bikarhêneran keşf bike
documentation: Pelbend
- federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên rajekar û li derveyî mastodonê bişopînî.
+ federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên ji her kîjan rajekarê mastodonê bişopînî.
get_apps: Sepaneke mobîl bicerbîne
hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin
- instance_actor_flash: 'Ev ajimêr aktorekî aşopî ye ji bo rajekar were temsîl kirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca federasyonê dixebite û divê ney asteng kirin heta ku te xwest hemû nimûneyan asteng bikî, di vir de ger tu blogek navper bikarbînî.
+ instance_actor_flash: 'Ev ajimêr şanogereke aşopî ye ji bo rajekar were naskirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca giştî dixebite û divê neye astengkirin heya ku te xwest hemû mînakan asteng bikî, di vir de ku tu navpereke astengiyê bi kar bînî.
'
learn_more: Bêtir fêr bibe
logged_in_as_html: Tu niha wekî %{username} têketî ye.
logout_before_registering: Jixwe te berê têketin kiriye.
- privacy_policy: Polîtikaya nihêniyê
+ privacy_policy: Politîka taybetiyê
rules: Rêbazên rajekar
rules_html: 'Heger tu bixwazî ajimêrekî li ser rajekarê mastodon vebikî, li jêrê de kurtasî ya qaîdeyên ku tu guh bidî heye:'
see_whats_happening: Binêre ka çi diqewime
@@ -39,7 +39,6 @@ ku:
other: şandî
status_count_before: Hatin weşan
tagline: Tora civakî ya nenavendî
- terms: Peyama mercan
unavailable_content: Rajekarên li hev kirî
unavailable_content_description:
domain: Rajekar
@@ -58,14 +57,14 @@ ku:
what_is_mastodon: Mastodon çi ye?
accounts:
choices_html: 'Hilbijartina %{name}:'
- endorsements_hint: Tu dikarî kesên ku di navrûyê wep de dişopînî bipejirînî û ew li vir were nîşan kirin.
- featured_tags_hint: Tu dikarî hashtagên teybetî li vir tê nîşan kirin di pê de derxî.
+ endorsements_hint: Tu dikarî kesên ku di navrûya tevnê de dişopînî bipejirînî û ew ê li vir were nîşankirin.
+ featured_tags_hint: Tu dikarî hashtagên taybet ên ku wê li vir werin nîşandan bibînî.
follow: Bişopîne
followers:
one: Şopîner
other: Şopîner
following: Dişopîne
- instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên yekbûyî tê bikaranîn û divê neyê rawestandin.
+ instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên giştî tê bikaranîn û divê neyê rawestandin.
joined: Di %{date} de tevlî bû
last_active: çalakiya dawî
link_verified_on: Xwedaniya li vê girêdanê di %{date} de hatiye kontrolkirin
@@ -73,7 +72,7 @@ ku:
moved_html: "%{name} bar kire %{new_profile_link}:"
network_hidden: Ev zanyarî berdest nîne
nothing_here: Li vir tiştek tune ye!
- people_followed_by: Kesên ku%{name} wan dişopîne
+ people_followed_by: Kesên ku %{name} wan dişopîne
people_who_follow: Kesên%{name} dişopîne
pin_errors:
following: Kesê ku tu dixwazî bipejirînî jixwe tu vê dişopînî
@@ -83,10 +82,8 @@ ku:
posts_tab_heading: Şandî
posts_with_replies: Şandî û bersiv
roles:
- admin: Rêvebir
bot: Bot
group: Kom
- moderator: Moderator
unavailable: Profîl nay bikaranîn
unfollow: Neşopîne
admin:
@@ -105,12 +102,17 @@ ku:
avatar: Wêne
by_domain: Navper
change_email:
- changed_msg: E-nameya ajimêr bi awayekî serkeftî hate guhertin!
+ changed_msg: E-name bi awayekî serkeftî hate guhertin!
current_email: E-nameya heyî
label: E-nameyê biguherîne
new_email: E-nameya nû
submit: E-nameyê biguherîne
title: E-nameyê biguherîne bo %{username}
+ change_role:
+ changed_msg: Rol bi awayekî serkeftî hate guhertin!
+ label: Rolê biguherîne
+ no_role: Rol tune
+ title: Rolê biguherîne ji bo %{username}
confirm: Bipejirîne
confirmed: Hate pejirandin
confirming: Tê pejirandin
@@ -154,6 +156,7 @@ ku:
active: Çalak
all: Hemû
pending: Tê nirxandin
+ silenced: Sînorkirî
suspended: Sekinandî
title: Çavdêrî
moderation_notes: Nîşeyên Rêvebirinê
@@ -161,6 +164,7 @@ ku:
most_recent_ip: IP' a dawî
no_account_selected: Tu ajimêr nehat hilbijartin ji ber vê tu ajimêr nehat guhertin
no_limits_imposed: Sînor nay danîn
+ no_role_assigned: Ti rol nehatin diyarkirin
not_subscribed: Beşdar nebû
pending: Li benda nirxandinê ye
perform_full_suspension: Sekinî
@@ -187,12 +191,7 @@ ku:
reset: Ji nû ve saz bike
reset_password: Borînpeyvê ji nû ve saz bike
resubscribe: Dîsa beşdar bibe
- role: Maf
- roles:
- admin: Rêvebir
- moderator: Çavdêr
- staff: Xebatkar
- user: Bikarhêner
+ role: Rol
search: Bigere
search_same_email_domain: Bikarhênerên din ên bi heman navpera e-nameyê
search_same_ip: Bikarhênerên din ên xwedî heman IP
@@ -228,24 +227,28 @@ ku:
view_domain: Kurte ji bo navperê bide nîşan
warn: Hişyarî
web: Tevn
- whitelisted: Ji bona yekbûyînê maf tê dayîn
+ whitelisted: Ji bo demnameya giştî maf hate dayin
action_logs:
action_types:
approve_appeal: Îtîrazê bipejirîne
approve_user: Bikarhêner bipejirîne
assigned_to_self_report: Ragihandinê diyar bike
change_email_user: E-nameya bikarhêner biguherîne
+ change_role_user: Rola bikarhêner biguherîne
confirm_user: Bikarhêner bipejirîne
create_account_warning: Hişyariyekê çê bike
create_announcement: Daxûyaniyekê çê bike
+ create_canonical_email_block: Astengkirina e-nameyê biafirîne
create_custom_emoji: Emojiyên kesanekirî çê bike
create_domain_allow: Navpera ku destûr standiye peyda bike
create_domain_block: Navpera ku asteng bûye ava bike
create_email_domain_block: Navpera e-name yê de asteng kirinê peyda bike
create_ip_block: Rêziknameya IPyê saz bike
create_unavailable_domain: Navpera ku nayê bikaranîn pêk bîne
+ create_user_role: Rolê biafirîne
demote_user: Bikarhênerê kaşê jêr bike
destroy_announcement: Daxûyanîyê jê bibe
+ destroy_canonical_email_block: Astengkirina e-nameyê jê bibe
destroy_custom_emoji: Emojîya kesanekirî jê bibe
destroy_domain_allow: Navperên mafdayî jê bibe
destroy_domain_block: Navperên astengkirî jê bibe
@@ -254,6 +257,7 @@ ku:
destroy_ip_block: Tomara IPyê jêbibe
destroy_status: Şandiyê jê bibe
destroy_unavailable_domain: Navperên tuneyî jê bibe
+ destroy_user_role: Rolê hilweşîne
disable_2fa_user: 2FA neçalak bike
disable_custom_emoji: Emojîya kesanekirî neçalak bike
disable_sign_in_token_auth_user: Ji bo bikarhênerê piştrastkirina navnîşana e-name yê ya token neçalak bike
@@ -280,31 +284,38 @@ ku:
update_announcement: Daxûyaniyê rojane bike
update_custom_emoji: Emojîya kesanekirî rojane bike
update_domain_block: Navperên astengkirî rojane bike
+ update_ip_block: Rolê IP rojane bike
update_status: Şandiyê rojane bike
+ update_user_role: Rolê rojane bike
actions:
approve_appeal_html: "%{name} îtiraza biryara çavdêriyê ji %{target} pejirand"
approve_user_html: "%{name} tomarkirina ji %{target} pejirand"
assigned_to_self_report_html: "%{name} ji xwe re ragihandinek %{target} hilda"
change_email_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} guherand"
+ change_role_user_html: "%{name} rolê %{target} guhert"
confirm_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} piştrast kir"
create_account_warning_html: "%{name} ji bo %{target} hişyariyek şand"
create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}"
+ create_canonical_email_block_html: "%{name} bi riya dabeşkirinê e-nameya %{target} asteng kir"
create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir"
- create_domain_allow_html: "%{name} bi navperê %{target} re maf da federeyê"
+ create_domain_allow_html: "%{name} bi navperê %{target} re maf da demnameya giştî"
create_domain_block_html: "%{name} navpera %{target} asteng kir"
create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir"
create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir"
create_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê rawestand"
+ create_user_role_html: "%{name} rola %{target} afirand"
demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir"
destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir"
- destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir"
- destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda federeyê"
+ destroy_canonical_email_block_html: "%{name} bi riya dabeşkirinê astengiya li ser e-nameya %{target} rakir"
+ destroy_custom_emoji_html: "%{name} emojiya %{target} jê bir"
+ destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda demnameya giştî"
destroy_domain_block_html: "%{name} navpera %{target} asteng kir"
destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir"
destroy_instance_html: "%{name} navpera %{target} asteng kir"
destroy_ip_block_html: "%{name}, ji bo IPya %{target} rêziknameyê jêbir"
destroy_status_html: "%{name} ji alîyê %{target} ve şandiyê rakir"
destroy_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê berdewam kir"
+ destroy_user_role_html: "%{name} rola %{target} jê bir"
disable_2fa_user_html: "%{name} ji bo bikarhênerê %{target} du faktorî neçalak kir"
disable_custom_emoji_html: "%{name} emojiya %{target} neçalak kir"
disable_sign_in_token_auth_user_html: "%{name} ji bo %{target} nîşana mafdayîna e-nameya ne çalak kir"
@@ -331,8 +342,9 @@ ku:
update_announcement_html: "%{name} daxûyaniya %{target} rojane kir"
update_custom_emoji_html: "%{name} emojiya %{target} rojane kir"
update_domain_block_html: "%{name} ji bo navpera %{target} astengkirin rojane kir"
+ update_ip_block_html: "%{name} rolê %{target} guhert ji bo IP"
update_status_html: "%{name} şandiya bikarhêner %{target} rojane kir"
- deleted_status: "(şandiyeke jêbirî)"
+ update_user_role_html: "%{name} rola %{target} guherand"
empty: Tomarkirin nehate dîtin.
filter_by_action: Li gorî çalakiyê biparzinîne
filter_by_user: Li gorî bikarhênerê biparzinîne
@@ -418,10 +430,10 @@ ku:
empty: Îtîraz nehatin dîtin.
title: Îtîraz
domain_allows:
- add_new: Maf bide navpera federasyonê
- created_msg: Ji bo federasyonê maf dayîna navperê bi serkeftî hate dayîn
- destroyed_msg: Ji bo federasyonê maf dayîna navperê nehat dayîn
- undo: Maf nede navpera federasyonê
+ add_new: Mafê bide navpera demnameya giştî
+ created_msg: Ji bo demnameya giştî mafdayîna navperê bi serkeftî hate dayîn
+ destroyed_msg: Ji bo demnameya giştî mafdayîna navperê nehat dayîn
+ undo: Mafê nede navpera demnameya giştî
domain_blocks:
add_new: Astengkirina navpera nû
created_msg: Navpera asteng kirinê nû hat şixulandin
@@ -515,7 +527,7 @@ ku:
instance_follows_measure: şopînerên wan li vir
instance_languages_dimension: Zimanên pir tên bikaranîn
instance_media_attachments_measure: pêvekên medyayê tomarkirî
- instance_reports_measure: giliyên derbarê wan de
+ instance_reports_measure: ragehandinên di derbarê wan de
instance_statuses_measure: şandiyên tomarkirî
delivery:
all: Hemû
@@ -544,7 +556,7 @@ ku:
total_blocked_by_us: Ji aliyê me ve hatiye astengkirin
total_followed_by_them: Ji aliyê wan ve hatiye şopandin
total_followed_by_us: Ji aliyê me ve hatiye şopandin
- total_reported: Giliyên derheqê wan de
+ total_reported: Ragehandinên di derbarê wan de
total_storage: Pêvekên medyayê
totals_time_period_hint_html: Tevahiyên ku li jêr têne xuyakirin daneyên hemû deman dihewîne.
invites:
@@ -575,7 +587,7 @@ ku:
relays:
add_new: Guhêrkerê nû tevlê bike
delete: Jê bibe
- description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fendiverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin."
+ description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fediverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin."
disable: Neçalak bike
disabled: Neçalakkirî
enable: Çalak bike
@@ -585,7 +597,7 @@ ku:
pending: Li benda pêjirandina guhêrker e
save_and_enable: Tomar û çalak bike
setup: Girêdanekê guhêrker saz bike
- signatures_not_enabled: Dema ku moda ewle ya jî moda rêzoka spî çalak be guhêrker wê birêkûpêk nexebite
+ signatures_not_enabled: Dema ku moda ewle yan jî moda demnameya giştî çalak be guhêrker wê birêkûpêk nexebite
status: Rewş
title: Guhêrker
report_notes:
@@ -651,6 +663,67 @@ ku:
unresolved: Neçareserkirî
updated_at: Rojanekirî
view_profile: Profîlê nîşan bide
+ roles:
+ add_new: Rolê tevlî bike
+ assigned_users:
+ one: "%{count} bikarhêner"
+ other: "%{count} bikarhêner"
+ categories:
+ administration: Rêvebirî
+ devops: Devops
+ invites: Vexwendin
+ moderation: Çavdêrî
+ special: Taybet
+ delete: Jê bibe
+ description_html: Bi rolên bikarhêner, tu dikarî fonksiyon û deverên Mastodon ku bikarhênerên wê dikarin xwe bigihînin kesane bikî.
+ edit: Rolê '%{name}' serrast bike
+ everyone: Mafdayînên berdest
+ everyone_full_description_html: Ev rola bingehîn bandorê li hemû bikarhêneran dike, tevî yên bêyî rolek diyarkirî jî. Hemû rolên din mafdayînan jê digirin.
+ permissions_count:
+ one: "%{count} mafdayîn"
+ other: "%{count} mafdayîn"
+ privileges:
+ administrator: Rêvebir
+ administrator_description: Bikarhênerên xwediyê vê mafdayînan wê her mafdayîn derbas bike
+ delete_user_data: Daneyên bikarhêner jê bibe
+ delete_user_data_description: Mafê dide bikarhêneran ku daneyên bikarhênerên din bêyî derengxisitn jê bibin
+ invite_users: Bikarhêneran vexwîne
+ invite_users_description: Mafê dide bikarhêneran ku mirovên nû vexwîne bo rajekarê
+ manage_announcements: Reklaman bi rê be bibe
+ manage_announcements_description: Mafê dide bikarhêneran ku reklaman bi rê ve bibin li ser vê rajekarê
+ manage_appeals: Îtîrazan bi rê ve bibe
+ manage_appeals_description: Mafê dide bikarhêneran ku îtîrazan binirxînin li dijî çalakiyên çavdêriyê
+ manage_blocks: Astengkirinan bi rê ve bibe
+ manage_blocks_description: Mafê dide bikarhêneran ku peydakarê e-nameyê û navnîşanên IP asteng bike
+ manage_custom_emojis: Emojiyên kesane bi rêve bibe
+ manage_custom_emojis_description: Mafê dide bikarhêneran ku îmojî kesane bikin li ser vê rajekarê
+ manage_federation: Demnameya giştî bi rê ve bibe
+ manage_federation_description: Mafê dide bikarhêneran ku demnameya giştî bi navparên din re asteng bikin û radestkirinê kontrol bikin
+ manage_invites: Vexwendinan bi rêve bibe
+ manage_invites_description: Mafê dide bikarhêneran ku li girêdanên vexwendinê bigerin û neçalak bikin
+ manage_reports: Ragihandinan bi rê ve bibe
+ manage_reports_description: Mafê dide bikarhêneran ku ragihandinan binirxînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin
+ manage_roles: Rolan bi rêve bibe
+ manage_roles_description: Mafê dide bikarhêneran ku rolên li jêr ên xwe birêve bibin û nîşan bikin
+ manage_rules: Rolan bi rêve bibe
+ manage_rules_description: Mafê dide bikarhêneran ku rêzikên rajekarê biguherînin
+ manage_settings: Sazkariyan bi rê ve bibe
+ manage_settings_description: Mafê dide bikarhêneran ku sazkariyên malperê biguherînin
+ manage_taxonomies: Beşan bi rê ve bibe
+ manage_taxonomies_description: Mafê dide bikarhêneran ku naveroka rojevê binirxînin û sazkariyên hashtagê rojane bikin
+ manage_user_access: Gihiştinê bikarhêner bi rê ve bibe
+ manage_user_access_description: Mafê dide bikarhêneran ku piştrastkirina du-gavî ya bikarhênerên din neçalak bikin, navnîşana e-nameya xwe biguherînin û borînpeyva xwe ji nû ve bikin
+ manage_users: Bikarhêneran bi rêve bibe
+ manage_users_description: Mafê dide bikarhêneran ku hûrguliyên bikarhênerên din bibînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin
+ manage_webhooks: Webhook bi rê ve bibe
+ manage_webhooks_description: Mafê dide bikarhêneran ku ji bo bûyerên rêveberî yên webhook saz bikin
+ view_audit_log: Têketinên kontrolê nîşan bide
+ view_audit_log_description: Mafê dide bikarhêneran ku dîroka çalakiyên rêveberî yên li ser rajekarê bibînin
+ view_dashboard: Destgehê nîşan bide
+ view_dashboard_description: Mafê dide bikarhêneran ku bigihîjin destgehê û pîvanên cuda
+ view_devops: Pêşdebir
+ view_devops_description: Mafê dide bikarhêneran ku bigihîjin destgehên Sidekiq û pgHero
+ title: Rol
rules:
add_new: Rêbazekê tevlî bike
delete: Jê bibe
@@ -703,9 +776,6 @@ ku:
deletion:
desc_html: Maf bide ku herkes bikaribe ajimêrê te jê bibe
title: Jê birina ajimêrê vekek
- min_invite_role:
- disabled: Ne yek
- title: Maf bide vexwendinên ji alîyê
require_invite_text:
desc_html: Gava ku tomarkirin pêdiviya pejirandina destan dike, Têketina nivîsê "Tu çima dixwazî beşdar bibî?" Bibe sereke ji devla vebijêrkî be
title: Ji bo bikarhênerên nû divê ku sedemek tevlêbûnê binivîsinin
@@ -718,9 +788,6 @@ ku:
show_known_fediverse_at_about_page:
desc_html: Dema ku neçalak be, demnameya gerdûnî ya ku ji rûpela zeviyê ve hatî girêdan tenê bi nîşandana naveroka herêmî tên sînorkirin
title: Li ser rûpela demnameya ne naskirî naveroka giştî nîşan bide
- show_staff_badge:
- desc_html: Di rûpela bikarhêner da rozeta xebatkaran nîşan bike
- title: Rozeta xebatkara nîşan bike
site_description:
desc_html: Paragrafa destpêkê li ser API. Dide nasîn ka çi ev rajekarê Mastodon taybet dike û tiştên din ên girîn. Tu dikarî hashtagên HTML-ê, bi kar bîne di <a>
û <em>
de.
title: Danasîna rajekar
@@ -731,8 +798,8 @@ ku:
desc_html: Ew di alavdanka kêlekê û tagên meta de tên xuyakirin. Di yek paragrafê de rave bike ka Mastodon çi ye û ya ku ev rajekar taybetî dike.
title: Danasîna rajekarê kurt
site_terms:
- desc_html: Tu dikarî polîtika nihêniyê xwe, mercên karûbar an nameyên din binvisîne. Tu dikarî nîşanên HTML-ê bi kar bîne
- title: Mercên bikaranîn a kesanekirî
+ desc_html: Tu dikarî politîkaya taybetiyê ya xwe binivîsînî. Tu dikarî tagên HTML bi kar bînî
+ title: Politîka taybetiyê ya kesane
site_title: Navê rajekar
thumbnail:
desc_html: Ji bo pêşdîtinên bi riya OpenGraph û API-yê têne bikaranîn. 1200x630px tê pêşniyar kirin
@@ -742,8 +809,8 @@ ku:
title: Mafê bide gihîştina ne naskirî bo demnameya gelemperî
title: Sazkariyên malperê
trendable_by_default:
- desc_html: Hashtagên ku berê hatibûn qedexekirin bandor dike
- title: Bihêle ku hashtag bêyî nirxandinek pêşîn bibe rojev
+ desc_html: Naveroka rojevê nîşankirî dikare were qedexekirin
+ title: Mafê bide rojevê bêyî ku were nirxandin
trends:
desc_html: Hashtagên ku berê hatibûn nirxandin ên ku niha rojev in bi gelemperî bide xuyakirin
title: Hashtagên rojevê
@@ -918,7 +985,7 @@ ku:
remove: Girêdana nûçikê rake
appearance:
advanced_web_interface: Navrûya tevnê yê pêşketî
- advanced_web_interface_hint: 'Heke tu bixwazin tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.'
+ advanced_web_interface_hint: 'Ku tu bixwazî tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.'
animations_and_accessibility: Anîmasyon û gihînî
confirmation_dialogs: Gotûbêjên piştrastkirî
discovery: Vedîtin
@@ -1126,16 +1193,40 @@ ku:
public: Demnameya gelemperî
thread: Axaftin
edit:
+ add_keyword: Kilîtpeyv tevî bike
+ keywords: Peyvkilît
+ statuses: Şandiyên kesane
+ statuses_hint_html: Ev parzûn ji bo hibijartina şandiyên kesane tê sepandin bêyî ku ew bi peyvkilîtên jêrîn re lihevhatî bin. Şandiyan binirxîne an jî ji parzûnê rake.
title: Parzûnê serrast bike
errors:
+ deprecated_api_multiple_keywords: Van parameteran ji vê sepanê nayên guhertin ji ber ku ew li ser bêtirî yek kilîtpeyvên parzûnkirî têne sepandin. Sepaneke nûtir an navrûya bikarhêneriyê ya malperê bi kar bîne.
invalid_context: Naverok tune ye yan jî nederbasdar tê peydakirin
- invalid_irreversible: Tenê qadên agahdarkirinê û serrûpel bi parzûna bêveger re dixebitin
index:
+ contexts: Parzûnên di %{contexts} de
delete: Jê bibe
empty: Parzûnên te tune ne.
+ expires_in: Di %{distance} de diqede
+ expires_on: Di %{date} de diqede
+ keywords:
+ one: "%{count} kilîtpeyv"
+ other: "%{count} kilîtpeyv"
+ statuses:
+ one: "%{count} şandî"
+ other: "%{count} şandî"
+ statuses_long:
+ one: "%{count} şandiyê kesane yê veşartî"
+ other: "%{count} şandiyê kesane yê veşartî"
title: Parzûn
new:
+ save: Parzûna nû tomar bike
title: Parzûnek nû li zêde bike
+ statuses:
+ back_to_filter: Vegere bo parzûnê
+ batch:
+ remove: Ji parzûnê rake
+ index:
+ hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî.
+ title: Şandiyên parzûnkirî
footer:
developers: Pêşdebir
more: Bêtir…
@@ -1143,12 +1234,22 @@ ku:
trending_now: Niha rojevê de
generic:
all: Hemû
+ all_items_on_page_selected_html:
+ one: Berhemê %{count} li ser vê rûpelê hatiye hilbijartin.
+ other: Hemû berhemên %{count} li ser vê rûpelê hatine hilbijartin.
+ all_matching_items_selected_html:
+ one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hatiye hilbijartin.
+ other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hatine hilbijartin.
changes_saved_msg: Guhertin bi serkeftî tomar bû!
copy: Jê bigire
delete: Jê bibe
+ deselect: Hemûyan hilnebijêre
none: Ne yek
order_by: Rêz bike bi
save_changes: Guhertinan tomar bike
+ select_all_matching_items:
+ one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hilbijêre.
+ other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hilbijêre.
today: îro
validation_errors:
one: Tiştek hîn ne rast e! Ji kerema xwe çewtiya li jêr di ber çavan re derbas bike
@@ -1204,7 +1305,7 @@ ku:
password: borînpeyv
sign_in_token: koda ewlehiyê bo e-nameyê
webauthn: kilîtên ewlehiyê
- description_html: Heke çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî.
+ description_html: Çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî.
empty: Dîroka piştrastkirinê tune ye
failed_sign_in_html: Hewldana têketinê ser neket bi%{method} ji %{ip} (%{browser}) de
successful_sign_in_html: Bi serkeftî têketin bi %{method} ji %{ip}(%{browser}) çêbû
@@ -1253,19 +1354,10 @@ ku:
copy_account_note_text: 'Ev bikarhêner ji %{acct} livî ye, li vir nîşeyên te yên berê ku te di derbarê wî/ê de nivîsandiye:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} ragihandinek şand"
sign_up:
subject: "%{name} tomar bû"
- digest:
- action: Hemû agahdariyan nîşan bide
- body: Li vir kurteyeke peyamên ku li te derbasbûnd ji serdana te ya dawîn di %{since} de
- mention: "%{name} behsa te kir:"
- new_followers_summary:
- one: Herwiha, dema tu dûr bûyî te şopînerek nû bi dest xist! Bijî!
- other: Herwiha, dema tu dûr bûyî te %{count} şopînerek nû bi dest xist! Bijî!
- subject:
- one: "1 agahdarî ji serdana te ya herî dawî 🐘"
- other: "%{count} agahdarî ji serdana te ya herî dawî 🐘"
- title: Di tunebûna te de...
favourite:
body: 'Şandiya te hate bijartin ji alî %{name} ve:'
subject: "%{name} şandiya te hez kir"
@@ -1628,7 +1720,7 @@ ku:
This document is CC-BY-SA. It was last updated May 26, 2022.
Originally adapted from the Discourse privacy policy.
- title: "%{instance} mercên bikaranîn û politîkayên nehêniyê"
+ title: Politîka taybetiyê ya %{instance}
themes:
contrast: Mastodon (Dijberiya bilind)
default: Mastodon (Tarî)
@@ -1671,7 +1763,7 @@ ku:
change_password: borînpeyva xwe biguherîne
details: 'Li vir hûrgiliyên hewldanên têketinê hene:'
explanation: Me têketineke nû ji ajimêra te ji navnîşaneke IP ya nû dît.
- further_actions_html: Ku ev ne tu bû, em ji te re pêşniyar dikin ku tu di tavilê de %{action} bikî û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne.
+ further_actions_html: Ku ev ne tu ye, em pêşniyar dikin ku tu di tavilê de %{action} û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne.
subject: Ajimêra te ji navnîşaneke IP ya nû ve hatiye gihîştin
title: Têketineke nû
warning:
@@ -1717,7 +1809,7 @@ ku:
review_preferences_step: Pê bawer be ku vebijêrkên xwe saz bikî, wek mînak kîjan e-nameyên ku tu dixwaziî wergirîne, an tu dixwazî weşanên te ji kîjan astê nehêniyê de kesanekirî bin. Heke nexweşiya te ya tevgerê tune be, tu dikarî hilbijêrî ku GIF ya xweser çalak bibe.
subject: Tu bi xêr hatî Mastodon
tip_federated_timeline: Demnameya giştî dimenêke gelemperî a Mastodon e. Lê tenê kesên ku ciranên te endamên wê ne dihewîne, ji ber vê yekê ew hemû nîne.
- tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û federasyonî kontrol bike.
+ tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û giştî kontrol bike.
tip_local_timeline: Demnameya herêmî, dimenêke bi giştî ye li ser %{instance} e. Ev ciranên te yên herî nêzik in!
tip_mobile_webapp: Ger geroka te ya desta pêşkêşî te bike ku tu Mastodon li ser ekrana xwe ya malê lê zêde bikî, tu dikarî agahdariyên push bistînî. Ew bi gelek awayan mîna serîlêdanek xwemalî tevdigere!
tips: Serbend
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 5846f7d5d4..56bcccf673 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -11,10 +11,8 @@ lt:
documentation: Dokumentacija
hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu
learn_more: Daugiau
- privacy_policy: Privatumo Politika
source_code: Šaltinio kodas
status_count_before: Autorius
- terms: Naudojimo sąlygos
user_count_before: Namai
what_is_mastodon: Kas tai, Mastodon?
accounts:
@@ -35,9 +33,7 @@ lt:
posts_tab_heading: Tootai
posts_with_replies: Tootai ir atsakymai
roles:
- admin: Administratorius
bot: Bot'as
- moderator: Moderatorius
unfollow: Nesekti
admin:
account_actions:
@@ -52,7 +48,6 @@ lt:
avatar: Profilio nuotrauka
by_domain: Domenas
change_email:
- changed_msg: Paskyros el paštas sėkmingai pakeistas!
current_email: Dabartinis el paštas
label: Pakeisti el pašto adresą
new_email: Naujas el pašto adresas
@@ -112,12 +107,6 @@ lt:
reset: Iš naujo
reset_password: Atkurti slaptažodį
resubscribe: Per prenumeruoti
- role: Leidimai
- roles:
- admin: Administratorius
- moderator: Moderatorius
- staff: Personalas
- user: Vartotojas
search: Ieškoti
shared_inbox_url: Bendroji gautųjų URL
show:
@@ -136,7 +125,6 @@ lt:
username: Slapyvardis
warn: Įspėti
action_logs:
- deleted_status: "(panaikintas statusas)"
title: Audito žurnalas
custom_emojis:
by_domain: Domenas
@@ -297,15 +285,9 @@ lt:
deletion:
desc_html: Leisti visiems ištrinti savo paskyrą
title: Atidaryti paskyros trynimą
- min_invite_role:
- disabled: Nei vienas
- title: Leisti pakvietimus
show_known_fediverse_at_about_page:
desc_html: Kai įjungta, rodys įrašus iš visos žinomos fedi-visatos. Kitokiu atvėju, rodys tik lokalius įrašus.
title: Rodyti žinoma fedi-visatos laiko juosta peržiūroje
- show_staff_badge:
- desc_html: Rodyti personalo ženklelį vartotojo puslapyje
- title: Rodyti personalo ženklelį
site_description:
desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a >
bei <em>
.
title: Serverio apibūdinimas
@@ -315,9 +297,6 @@ lt:
site_short_description:
desc_html: Rodoma šoniniame meniu ir meta žymėse. Apibūdink kas yra Mastodon, ir kas daro šį serverį išskirtiniu, vienu paragrafu. Jeigu tuščias, naudojamas numatytasis tekstas.
title: Trumpas serverio apibūdinimas
- site_terms:
- desc_html: Jūs galite parašyti savo pačio privatumo politika, naudojimo sąlygas ar kita informacija. Galite naudoti HTML žymes
- title: Išskirtinės naudojimosi taisyklės
site_title: Serverio pavadinimas
thumbnail:
desc_html: Naudojama OpenGraph peržiūroms ir API. Rekomenduojama 1200x630px
@@ -449,7 +428,6 @@ lt:
title: Keisti filtrą
errors:
invalid_context: Jokio arba netinkamas pateiktas kontekstas
- invalid_irreversible: Negrąžinamas filtras veikia tik namų ir priminimų kontekste
index:
delete: Ištrinti
title: Filtrai
@@ -509,11 +487,6 @@ lt:
moderation:
title: Moderacija
notification_mailer:
- digest:
- action: Peržiurėti visus pranešimus
- body: Čia yra trumpa santrauka žinutės, kurią jūs praleidote nuo jūsų paskutinio apsilankymo %{since}
- mention: "%{name} paminėjo jus:"
- title: Kol jūsų nebuvo...
favourite:
body: 'Jūsų statusą pamėgo %{name}:'
subject: "%{name} pamėgo Jūsų statusą"
@@ -614,8 +587,6 @@ lt:
pinned: Prisegtas toot'as
reblogged: pakeltas
sensitive_content: Jautrus turinys
- terms:
- title: "%{instance} Naudojimosi Sąlygos ir Privatumo Politika"
themes:
contrast: Mastodon (Didelio Kontrasto)
default: Mastodon (Tamsus)
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 2ceec30b22..c645539c8a 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -28,7 +28,7 @@ lv:
learn_more: Uzzināt vairāk
logged_in_as_html: Tu pašlaik esi pieteicies kā %{username}.
logout_before_registering: Tu jau esi pieteicies.
- privacy_policy: Privātuma politika
+ privacy_policy: Privātuma Politika
rules: Servera noteikumi
rules_html: 'Tālāk ir sniegts noteikumu kopsavilkums, kas jāievēro, ja vēlies izveidot kontu šajā Mastodon serverī:'
see_whats_happening: Redzēt, kas notiek
@@ -40,13 +40,12 @@ lv:
zero: nav
status_count_before: Kurš publicējis
tagline: Decentralizēts sociālais tīkls
- terms: Pakalpojuma noteikumi
unavailable_content: Moderētie serveri
unavailable_content_description:
domain: Serveris
reason: Iemesls
- rejecting_media: 's faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:'
- rejecting_media_title: Filtrēts saturs
+ rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:'
+ rejecting_media_title: Filtrēta multivide
silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:'
silenced_title: Ierobežoti serveri
suspended: 'Nekādi dati no šiem serveriem netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu jebkādu mijiedarbību vai saziņu ar lietotājiem no šiem serveriem:'
@@ -62,7 +61,7 @@ lv:
choices_html: "%{name} izvēles:"
endorsements_hint: Jūs varat apstiprināt cilvēkus, kuriem sekojat no tīmekļa saskarnes, un viņi tiks parādīti šeit.
featured_tags_hint: Šeit vari norādīt īpašus tēmturus, kuri tiks parādīti šeit.
- follow: Seko
+ follow: Sekot
followers:
one: Sekotājs
other: Sekotāji
@@ -87,10 +86,8 @@ lv:
posts_tab_heading: Ziņas
posts_with_replies: Ziņas un atbildes
roles:
- admin: Admins
bot: Bots
group: Grupa
- moderator: Moder
unavailable: Profils nav pieejams
unfollow: Pārstāt sekot
admin:
@@ -109,12 +106,17 @@ lv:
avatar: Avatars
by_domain: Domēns
change_email:
- changed_msg: Konta e-pasts veiksmīgi nomainīts!
+ changed_msg: E-pasts veiksmīgi nomainīts!
current_email: Pašreizējais e-pasts
label: Mainīt e-pastu
new_email: Jaunā e-pasta adrese
submit: Mainīt e-pastu
title: Mainīt e-pastu %{username}
+ change_role:
+ changed_msg: Loma veiksmīgi nomainīta!
+ label: Mainīt lomu
+ no_role: Nav lomas
+ title: Mainīt lomu %{username}
confirm: Apstiprināt
confirmed: Apstiprināts
confirming: Apstiprina
@@ -150,7 +152,7 @@ lv:
remote: Attālinātie
title: Atrašanās vieta
login_status: Pieteikšanās statuss
- media_attachments: Mediju pielikumi
+ media_attachments: Multivides pielikumi
memorialize: Pārvērst atmiņās
memorialized: Piemiņa saglabāta
memorialized_msg: "%{username} veiksmīgi pārvērsts par piemiņas kontu"
@@ -158,6 +160,7 @@ lv:
active: Aktīvie
all: Visi
pending: Gaida
+ silenced: Ierobežotie
suspended: Apturētie
title: Moderācija
moderation_notes: Moderācijas piezīmes
@@ -165,6 +168,7 @@ lv:
most_recent_ip: Pati pēdējā IP
no_account_selected: Neviens konts netika mainīts, jo neviens netika atlasīts
no_limits_imposed: Nav noteikti ierobežojumi
+ no_role_assigned: Loma nav piešķirta
not_subscribed: Nav abonēts
pending: Gaida pārskatīšanu
perform_full_suspension: Apturēt
@@ -192,12 +196,7 @@ lv:
reset: Atiestatīt
reset_password: Atiestatīt paroli
resubscribe: Pieteikties vēlreiz
- role: Privilēģijas
- roles:
- admin: Administrators
- moderator: Moderators
- staff: Personāls
- user: Lietotājs
+ role: Loma
search: Meklēt
search_same_email_domain: Citi lietotāji ar tādu pašu e-pasta domēnu
search_same_ip: Citi lietotāji ar tādu pašu IP
@@ -240,17 +239,21 @@ lv:
approve_user: Apstiprināt lietotāju
assigned_to_self_report: Piešķirt Pārskatu
change_email_user: Mainīt e-pastu lietotājam
+ change_role_user: Mainīt lietotāja lomu
confirm_user: Apstiprināt lietotāju
create_account_warning: Izveidot Brīdinājumu
create_announcement: Izveidot Paziņojumu
+ create_canonical_email_block: Izveidot E-pasta Bloku
create_custom_emoji: Izveidot pielāgotu emocijzīmi
create_domain_allow: Izveidot Domēna Atļauju
create_domain_block: Izveidot Domēna Bloku
create_email_domain_block: Izveidot E-pasta Domēna Bloku
create_ip_block: Izveidot IP noteikumu
create_unavailable_domain: Izveidot Nepieejamu Domēnu
+ create_user_role: Izveidot lomu
demote_user: Pazemināt Lietotāju
destroy_announcement: Dzēst Paziņojumu
+ destroy_canonical_email_block: Dzēst E-pasta Bloku
destroy_custom_emoji: Dzēst pielāgoto emocijzīmi
destroy_domain_allow: Dzēst Domēna Atļauju
destroy_domain_block: Dzēst Domēna Bloku
@@ -259,6 +262,7 @@ lv:
destroy_ip_block: Dzēst IP noteikumu
destroy_status: Izdzēst Rakstu
destroy_unavailable_domain: Dzēst Nepieejamu Domēnu
+ destroy_user_role: Iznīcināt lomu
disable_2fa_user: Atspējot 2FA
disable_custom_emoji: Atspējot pielāgotu emocijzīmi
disable_sign_in_token_auth_user: Atspējoja e-pasta marķiera autentifikāciju lietotājam
@@ -285,24 +289,30 @@ lv:
update_announcement: Atjaunināt Paziņojumu
update_custom_emoji: Atjaunināt pielāgoto emocijzīmi
update_domain_block: Atjaunināt Domēna Bloku
+ update_ip_block: Atjaunināt IP noteikumu
update_status: Atjaunināt ziņu
+ update_user_role: Atjaunināt lomu
actions:
approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}"
approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}"
assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev"
change_email_user_html: "%{name} nomainīja e-pasta adresi lietotājam %{target}"
+ change_role_user_html: "%{name} nomainīja lomu uz %{target}"
confirm_user_html: "%{name} apstiprināja e-pasta adresi lietotājam %{target}"
create_account_warning_html: "%{name} nosūtīja brīdinājumu %{target}"
create_announcement_html: "%{name} izveidoja jaunu paziņojumu %{target}"
+ create_canonical_email_block_html: "%{name} bloķēja e-pastu ar hešu %{target}"
create_custom_emoji_html: "%{name} augšupielādēja jaunu emocijzīmi %{target}"
create_domain_allow_html: "%{name} atļāva federāciju ar domēnu %{target}"
create_domain_block_html: "%{name} bloķēja domēnu %{target}"
create_email_domain_block_html: "%{name} bloķēja e-pasta domēnu %{target}"
create_ip_block_html: "%{name} izveidoja nosacījumu priekš IP %{target}"
create_unavailable_domain_html: "%{name} apturēja piegādi uz domēnu %{target}"
+ create_user_role_html: "%{name} nomainīja %{target} lomu"
demote_user_html: "%{name} pazemināja lietotāju %{target}"
destroy_announcement_html: "%{name} izdzēsa paziņojumu %{target}"
- destroy_custom_emoji_html: "%{name} iznīcināja emocijzīmi %{target}"
+ destroy_canonical_email_block_html: "%{name} atbloķēja e-pastu ar hešu %{target}"
+ destroy_custom_emoji_html: "%{name} izdzēsa emocijzīmi %{target}"
destroy_domain_allow_html: "%{name} neatļāva federāciju ar domēnu %{target}"
destroy_domain_block_html: "%{name} atbloķēja domēnu %{target}"
destroy_email_domain_block_html: "%{name} atbloķēja e-pasta domēnu %{target}"
@@ -310,6 +320,7 @@ lv:
destroy_ip_block_html: "%{name} izdzēsa nosacījumu priekš IP %{target}"
destroy_status_html: "%{name} noņēma ziņu %{target}"
destroy_unavailable_domain_html: "%{name} atjaunoja piegādi uz domēnu %{target}"
+ destroy_user_role_html: "%{name} izdzēsa %{target} lomu"
disable_2fa_user_html: "%{name} atspējoja divfaktoru prasības lietotājam %{target}"
disable_custom_emoji_html: "%{name} atspējoja emocijzīmi %{target}"
disable_sign_in_token_auth_user_html: "%{name} atspējoja e-pasta marķiera autentifikāciju %{target}"
@@ -336,8 +347,9 @@ lv:
update_announcement_html: "%{name} atjaunināja paziņojumu %{target}"
update_custom_emoji_html: "%{name} atjaunināja emocijzīmi %{target}"
update_domain_block_html: "%{name} atjaunināja domēna bloku %{target}"
+ update_ip_block_html: "%{name} mainīja nosacījumu priekš IP %{target}"
update_status_html: "%{name} atjaunināja ziņu %{target}"
- deleted_status: "(dzēsta ziņa)"
+ update_user_role_html: "%{name} nomainīja %{target} lomu"
empty: Žurnāli nav atrasti.
filter_by_action: Filtrēt pēc darbības
filter_by_user: Filtrēt pēc lietotāja
@@ -663,6 +675,69 @@ lv:
unresolved: Neatrisinātie
updated_at: Atjaunināts
view_profile: Skatīt profilu
+ roles:
+ add_new: Pievienot lomu
+ assigned_users:
+ one: "%{count} lietotājs"
+ other: "%{count} lietotāji"
+ zero: "%{count} lietotāju"
+ categories:
+ administration: Administrēšana
+ devops: Izstrādātāji
+ invites: Uzaicinājumi
+ moderation: Moderācija
+ special: Īpašās
+ delete: Dzēst
+ description_html: Izmantojot lietotāju lomas, vari pielāgot, kurām Mastodon funkcijām un apgabaliem var piekļūt tavi lietotāji.
+ edit: Rediģēt lomu '%{name}'
+ everyone: Noklusētās atļaujas
+ everyone_full_description_html: Šī ir pamata loma, kas ietekmē visus lietotājus, pat tos, kuriem nav piešķirta loma. Visas pārējās lomas manto atļaujas no šīs.
+ permissions_count:
+ one: "%{count} atļauja"
+ other: "%{count} atļaujas"
+ zero: "%{count} atļauju"
+ privileges:
+ administrator: Administrators
+ administrator_description: Lietotāji ar šo atļauju apies visas atļaujas
+ delete_user_data: Dzēst Lietotāja Datus
+ delete_user_data_description: Ļauj lietotājiem bez kavēšanās dzēst citu lietotāju datus
+ invite_users: Uzaicināt Lietotājus
+ invite_users_description: Ļauj lietotājiem uzaicināt jaunus cilvēkus uz šo serveri
+ manage_announcements: Pārvaldīt Paziņojumus
+ manage_announcements_description: Ļauj lietotājiem pārvaldīt paziņojumus serverī
+ manage_appeals: Pārvaldīt Pārsūdzības
+ manage_appeals_description: Ļauj lietotājiem izskatīt apelācijas pret regulēšanas darbībām
+ manage_blocks: Pārvaldīt Bloķus
+ manage_blocks_description: Ļauj lietotājiem bloķēt e-pasta pakalpojumu sniedzējus un IP adreses
+ manage_custom_emojis: Pārvaldīt Pielāgotās Emocijzīmes
+ manage_custom_emojis_description: Ļauj lietotājiem pārvaldīt pielāgotās emocijzīmes serverī
+ manage_federation: Pārvaldīt Federāciju
+ manage_federation_description: Ļauj lietotājiem bloķēt vai atļaut federāciju ar citiem domēniem un kontrolēt piegādi
+ manage_invites: Pārvaldīt Uzaicinājumus
+ manage_invites_description: Ļauj lietotājiem pārlūkot un deaktivizēt uzaicinājuma saites
+ manage_reports: Pārvaldīt Pārskatus
+ manage_reports_description: Ļauj lietotājiem pārskatīt pārskatus un veikt pret tiem regulēšanas darbības
+ manage_roles: Pārvaldīt Lomas
+ manage_roles_description: Ļauj lietotājiem pārvaldīt un piešķirt lomas, kas ir zemākas par viņu lomu
+ manage_rules: Pārvaldīt Noteikumus
+ manage_rules_description: Ļauj lietotājiem mainīt servera noteikumus
+ manage_settings: Pārvaldīt Iestatījumus
+ manage_settings_description: Ļauj lietotājiem mainīt vietnes uzstādījumus
+ manage_taxonomies: Pārvaldīt Taksonomijas
+ manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālo saturu un atjaunināt atsauces iestatījumus
+ manage_user_access: Pārvaldīt Lietotāju Piekļuves
+ manage_user_access_description: Ļauj lietotājiem atspējot citu lietotāju divu faktoru autentifikāciju, mainīt savu e-pasta adresi un atiestatīt paroli
+ manage_users: Pārvaldīt Lietotājus
+ manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem regulēšanas darbības
+ manage_webhooks: Pārvaldīt Tīmekļa Aizķeres
+ manage_webhooks_description: Ļauj lietotājiem iestatīt tīmekļa aizķeres administratīviem pasākumiem
+ view_audit_log: Skatīt Audita Žurnālu
+ view_audit_log_description: Ļauj lietotājiem redzēt serverī veikto administratīvo darbību vēsturi
+ view_dashboard: Skatīt Informācijas Paneli
+ view_dashboard_description: Ļauj lietotājiem piekļūt informācijas panelim un dažādiem rādītājiem
+ view_devops: Izstrādātāji
+ view_devops_description: Ļauj lietotājiem piekļūt Sidekiq un pgHero informācijas paneļiem
+ title: Lomas
rules:
add_new: Pievienot noteikumu
delete: Dzēst
@@ -715,9 +790,6 @@ lv:
deletion:
desc_html: Atļaut ikvienam dzēst savu kontu
title: Atvērt konta dzēšanu
- min_invite_role:
- disabled: Nevienam
- title: Atļaut uzaicinājumus
require_invite_text:
desc_html: 'Ja reģistrācijai nepieciešama manuāla apstiprināšana, izdari, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis neobligāts'
title: Pieprasīt jauniem lietotājiem ievadīt pievienošanās iemeslu
@@ -730,9 +802,6 @@ lv:
show_known_fediverse_at_about_page:
desc_html: Ja šī funkcija ir atspējota, tā ierobežo publisko ziņu lentu, kas ir saistīta ar galveno lapu, lai parādītu tikai vietējo saturu
title: Iekļaut federēto saturu neautentificētā publiskā ziņu lentas lapā
- show_staff_badge:
- desc_html: Parāda personāla emblēmu lietotāja lapā
- title: Parādīt personāla emblēmu
site_description:
desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <a>
un <em>
.
title: Servera apraksts
@@ -743,8 +812,8 @@ lv:
desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs.
title: Īss servera apraksts
site_terms:
- desc_html: Tu vari uzrakstīt savu privātuma politiku, pakalpojumu sniegšanas noteikumus vai citu likumīgu. Tu vari izmantot HTML tagus
- title: Pielāgoti pakalpojuma sniegšanas noteikumi
+ desc_html: Tu vari uzrakstīt pats savu privātuma politiku. Vari izmantot HTML tagus
+ title: Pielāgot privātuma politiku
site_title: Servera nosaukums
thumbnail:
desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi
@@ -754,8 +823,8 @@ lv:
title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai
title: Vietnes iestatījumi
trendable_by_default:
- desc_html: Ietekmē tēmturus, kas iepriekš nav bijuši aizliegti
- title: Ļaujiet tēmturiem mainīties bez iepriekšējas pārskatīšanas
+ desc_html: Konkrētais populārais saturs joprojām var būt nepārprotami aizliegts
+ title: Atļaut tendences bez iepriekšējas pārskatīšanas
trends:
desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri
title: Populārākie tēmturi
@@ -945,9 +1014,9 @@ lv:
sensitive_content: Sensitīvs saturs
toot_layout: Ziņas izskats
application_mailer:
- notification_preferences: Mainīt e-pasta preferences
+ notification_preferences: Mainīt e-pasta uztādījumus
salutation: "%{name},"
- settings: 'Mainīt e-pasta preferences: %{link}'
+ settings: 'Mainīt e-pasta uztādījumus: %{link}'
view: 'Skatījums:'
view_profile: Skatīt profilu
view_status: Skatīt ziņu
@@ -1142,16 +1211,43 @@ lv:
public: Publiskās ziņu lentas
thread: Sarunas
edit:
+ add_keyword: Pievienot atslēgvārdu
+ keywords: Atslēgvārdi
+ statuses: Individuālās ziņas
+ statuses_hint_html: Šis filtrs attiecas uz atsevišķām ziņām neatkarīgi no tā, vai tās atbilst tālāk norādītajiem atslēgvārdiem. Pārskatīt vai noņemt ziņas no filtra.
title: Rediģēt filtru
errors:
+ deprecated_api_multiple_keywords: Šos parametrus šajā lietojumprogrammā nevar mainīt, jo tie attiecas uz vairāk nekā vienu filtra atslēgvārdu. Izmanto jaunāku lietojumprogrammu vai tīmekļa saskarni.
invalid_context: Nav, vai piegādāts nederīgs konteksts
- invalid_irreversible: Neatgriezeniskā filtrēšana darbojas tikai sākuma vai paziņojumu kontekstā
index:
+ contexts: Filtri %{contexts}
delete: Dzēst
empty: Tev nav filtru.
+ expires_in: Beidzas %{distance}
+ expires_on: Beidzas %{date}
+ keywords:
+ one: "%{count} atsēgvārds"
+ other: "%{count} atslēgvārdi"
+ zero: "%{count} atslēgvārdu"
+ statuses:
+ one: "%{count} ziņa"
+ other: "%{count} ziņas"
+ zero: "%{count} ziņu"
+ statuses_long:
+ one: paslēpta %{count} individuālā ziņa
+ other: slēptas %{count} individuālās ziņas
+ zero: "%{count} paslēptu ziņu"
title: Filtri
new:
+ save: Saglabāt jauno filtru
title: Pievienot jaunu filtru
+ statuses:
+ back_to_filter: Atpakaļ pie filtra
+ batch:
+ remove: Noņemt no filtra
+ index:
+ hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni.
+ title: Filtrētās ziņas
footer:
developers: Izstrādātāji
more: Vairāk…
@@ -1159,12 +1255,25 @@ lv:
trending_now: Šobrīd tendences
generic:
all: Visi
+ all_items_on_page_selected_html:
+ one: Šajā lapā ir atlasīts %{count} vienums.
+ other: Šajā lapā ir atlasīti %{count} vienumi.
+ zero: Šajā lapā ir atlasīts %{count} vienumu.
+ all_matching_items_selected_html:
+ one: Atlasīts %{count} vienums, kas atbilst tavam meklēšanas vaicājumam.
+ other: Atlasīti visi %{count} vienumi, kas atbilst tavam meklēšanas vaicājumam.
+ zero: Atlasīts %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam.
changes_saved_msg: Izmaiņas veiksmīgi saglabātas!
copy: Kopēt
delete: Dzēst
+ deselect: Atcelt visu atlasi
none: Neviens
order_by: Kārtot pēc
save_changes: Saglabāt izmaiņas
+ select_all_matching_items:
+ one: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam.
+ other: Atlasi visus %{count} vienumus, kas atbilst tavam meklēšanas vaicājumam.
+ zero: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam.
today: šodien
validation_errors:
one: Kaut kas vēl nav īsti kārtībā! Lūdzu, pārskati zemāk norādīto kļūdu
@@ -1271,21 +1380,10 @@ lv:
copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} iesniedza ziņojumu"
sign_up:
subject: "%{name} ir pierakstījies"
- digest:
- action: Rādīt visus paziņojumus
- body: Šeit ir īss kopsavilkums par ziņojumiem, kurus tu esi palaidis garām kopš pēdējā apmeklējuma %{since}
- mention: "%{name} pieminēja tevi:"
- new_followers_summary:
- one: Tāpat, atrodoties prom, esi ieguvis vienu jaunu sekotāju! Jip!
- other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami!
- zero: "%{count} jaunu sekotāju!"
- subject:
- one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma 🐘"
- other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma 🐘"
- zero: "%{count} jaunu paziņojumu kopš tava pēdējā apmeklējuma"
- title: Tavas prombūtnes laikā...
favourite:
body: 'Tavu ziņu izlasei pievienoja %{name}:'
subject: "%{name} pievienoja tavu ziņu izlasei"
@@ -1623,7 +1721,7 @@ lv:
Jā. Sīkfaili ir nelieli faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.
- Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu preferences turpmākiem apmeklējumiem.
+ Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu uztādījumus turpmākiem apmeklējumiem.
@@ -1654,7 +1752,7 @@ lv:
Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2022. gada 26. maijā.
Sākotnēji adaptēts no Discourse konfidencialitātes politikas.
- title: "%{instance} Pakalpojuma Noteikumi un Privātuma Politika"
+ title: "%{instance} Privātuma Politika"
themes:
contrast: Mastodon (Augsts kontrasts)
default: Mastodon (Tumšs)
@@ -1739,8 +1837,8 @@ lv:
final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā un atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.'
full_handle: Tavs pilnais rokturis
full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera.
- review_preferences_action: Mainīt preferences
- review_preferences_step: Noteikti iestati savas preferences, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu.
+ review_preferences_action: Mainīt uztādījumus
+ review_preferences_step: Noteikti iestati savas uztādījumus, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu.
subject: Laipni lūgts Mastodon
tip_federated_timeline: Apvienotā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz Mastodon tīklu. Bet tajā ir iekļauti tikai tie cilvēki, kurus abonē tavi kaimiņi, tāpēc tas nav pilnīgs.
tip_following: Pēc noklusējuma tu seko sava servera administratoram(-iem). Lai atrastu vairāk interesantu cilvēku, pārbaudi vietējās un federālās ziņu lentas.
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index f035633ca9..df5be9c1ec 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -11,11 +11,9 @@ ml:
documentation: വിവരണം
get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക
learn_more: കൂടുതൽ പഠിക്കുക
- privacy_policy: സ്വകാര്യതാ നയം
see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക
source_code: സോഴ്സ് കോഡ്
status_count_before: ആരാൽ എഴുതപ്പെട്ടു
- terms: സേവന വ്യവസ്ഥകൾ
unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം
unavailable_content_description:
domain: സെർവർ
@@ -35,7 +33,6 @@ ml:
posts_tab_heading: ടൂട്ടുകൾ
posts_with_replies: ടൂട്ടുകളും മറുപടികളും
roles:
- admin: അഡ്മിന്
bot: ബോട്ട്
group: ഗ്രൂപ്പ്
unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല
@@ -47,7 +44,6 @@ ml:
avatar: അവതാർ
by_domain: മേഖല
change_email:
- changed_msg: അംഗത്തിന്റെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം വിജയകരമായി മാറ്റിയിരിക്കുന്നു!
current_email: ഇപ്പോഴത്തെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം
label: മാറിയ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം
new_email: പുതിയ ഇലക്ട്രോണിക് കത്ത്
@@ -83,9 +79,6 @@ ml:
success: സ്ഥിരീകരണ ഇമെയിൽ വിജയകരമായി അയച്ചു!
reset: പുനഃക്രമീകരിക്കുക
reset_password: പാസ്വേഡ് പുനഃക്രമീകരിക്കുക
- role: അനുമതികൾ
- roles:
- user: ഉപയോക്താവ്
search: തിരയുക
title: അക്കൗണ്ടുകൾ
unconfirmed_email: സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ
@@ -132,8 +125,6 @@ ml:
generic:
all: എല്ലാം
notification_mailer:
- digest:
- action: എല്ലാ അറിയിപ്പുകളും കാണിക്കുക
follow:
body: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു!"
subject: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു"
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index d400d3256a..7f090b00d5 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -25,7 +25,6 @@ ms:
Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukannya mana-mana pengguna individu.
Ia digunakan untuk tujuan persekutuan dan tidak patut disekat melainkan anda ingin menyekat keseluruhan tika, yang mana anda sepatutnya gunakan sekatan domain.
learn_more: Ketahui lebih lanjut
- privacy_policy: Polisi privasi
rules: Peraturan pelayan
rules_html: 'Di bawah ini ringkasan peraturan yang anda perlu ikuti jika anda ingin mempunyai akaun di pelayan Mastodon yang ini:'
see_whats_happening: Lihat apa yang sedang berlaku
@@ -34,7 +33,6 @@ ms:
status_count_after:
other: hantaran
status_count_before: Siapa terbitkan
- terms: Terma perkhidmatan
unavailable_content: Pelayan disederhanakan
unavailable_content_description:
domain: Pelayan
@@ -75,10 +73,8 @@ ms:
posts_tab_heading: Hantaran
posts_with_replies: Hantaran dan balasan
roles:
- admin: Pentadbir
bot: Bot
group: Kumpulan
- moderator: Penyederhana
unavailable: Profil tidak tersedia
unfollow: Nyahikut
admin:
@@ -97,7 +93,6 @@ ms:
avatar: Avatar
by_domain: Domain
change_email:
- changed_msg: E-mel akaun telah berjaya ditukar!
current_email: E-mel semasa
label: Ubah e-mel
new_email: E-mel baharu
@@ -172,12 +167,6 @@ ms:
reset: Tetapkan semula
reset_password: Tetapkan semula kata laluan
resubscribe: Langgan semula
- role: Kebenaran
- roles:
- admin: Pentadbir
- moderator: Penyederhana
- staff: Kakitangan
- user: Pengguna
search: Cari
search_same_email_domain: Pengguna lain dengan domain e-mel yang sama
search_same_ip: Pengguna lain dengan alamat IP yang sama
@@ -265,7 +254,6 @@ ms:
create_unavailable_domain_html: "%{name} telah menghentikan penghantaran ke domain %{target}"
demote_user_html: "%{name} telah menurunkan taraf pengguna %{target}"
destroy_announcement_html: "%{name} telah memadamkan pengumuman %{target}"
- destroy_custom_emoji_html: "%{name} telah memusnahkan emoji %{target}"
destroy_domain_allow_html: "%{name} telah membuang kebenaran persekutuan dengan domain %{target}"
destroy_domain_block_html: "%{name} telah menyahsekat domain %{target}"
destroy_email_domain_block_html: "%{name} telah menyahsekat domain e-mel %{target}"
@@ -294,7 +282,6 @@ ms:
update_custom_emoji_html: "%{name} telah mengemaskini emoji %{target}"
update_domain_block_html: "%{name} telah mengemaskini penyekatan domain untuk %{target}"
update_status_html: "%{name} telah mengemaskini hantaran oleh %{target}"
- deleted_status: "(hantaran telah dipadam)"
empty: Tiada log dijumpai.
filter_by_action: Tapis mengikut tindakan
filter_by_user: Tapis mengikut pengguna
@@ -529,9 +516,6 @@ ms:
deletion:
desc_html: Benarkan sesiapapun memadamkan akaun mereka
title: Buka pemadaman akaun
- min_invite_role:
- disabled: Tiada sesiapa
- title: Benarkan jemputan dari
require_invite_text:
desc_html: Apabila pendaftaran memerlukan kelulusan manual, tandakan input teks "Kenapa anda mahu menyertai?" sebagai wajib, bukan pilihan
title: Memerlukan alasan bagi pengguna baru untuk menyertai
@@ -554,8 +538,5 @@ ms:
exports:
archive_takeout:
in_progress: Mengkompil arkib anda...
- notification_mailer:
- digest:
- title: Ketika anda tiada di sini...
users:
follow_limit_reached: Anda tidak boleh mengikut lebih daripada %{limit} orang
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index b5040153e1..2be2928661 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -37,7 +37,6 @@ nl:
other: berichten
status_count_before: Zij schreven
tagline: Decentraal sociaal netwerk
- terms: Gebruiksvoorwaarden
unavailable_content: Gemodereerde servers
unavailable_content_description:
domain: Server
@@ -81,10 +80,8 @@ nl:
posts_tab_heading: Berichten
posts_with_replies: Berichten en reacties
roles:
- admin: Beheerder
bot: Bot
group: Groep
- moderator: Moderator
unavailable: Profiel niet beschikbaar
unfollow: Ontvolgen
admin:
@@ -103,12 +100,17 @@ nl:
avatar: Avatar
by_domain: Domein
change_email:
- changed_msg: E-mailadres van account succesvol veranderd!
+ changed_msg: E-mailadres succesvol veranderd!
current_email: Huidig e-mailadres
label: E-mailadres wijzigen
new_email: Nieuw e-mailadres
submit: E-mailadres veranderen
title: E-mailadres wijzigen voor %{username}
+ change_role:
+ changed_msg: Rol succesvol veranderd!
+ label: Rol veranderen
+ no_role: Geen rol
+ title: Rol van %{username} veranderen
confirm: Bevestigen
confirmed: Bevestigd
confirming: Bevestiging
@@ -135,7 +137,7 @@ nl:
invite_request_text: Redenen om te registreren
invited_by: Uitgenodigd door
ip: IP
- joined: Geregistreerd in
+ joined: Geregistreerd
location:
all: Alles
local: Lokaal
@@ -150,6 +152,7 @@ nl:
active: Actief
all: Alles
pending: In afwachting
+ silenced: Beperkt
suspended: Opgeschort
title: Moderatie
moderation_notes: Opmerkingen voor moderatoren
@@ -157,10 +160,11 @@ nl:
most_recent_ip: Laatst gebruikt IP-adres
no_account_selected: Er zijn geen accounts veranderd, omdat er geen een was geselecteerd
no_limits_imposed: Geen limieten ingesteld
+ no_role_assigned: Geen rol toegewezen
not_subscribed: Niet geabonneerd
pending: Moet nog beoordeeld worden
perform_full_suspension: Opschorten
- previous_strikes: Vorige overtredingen
+ previous_strikes: Eerdere overtredingen
previous_strikes_description_html:
one: Dit account heeft één overtreding.
other: Dit account heeft %{count} overtredingen.
@@ -170,7 +174,7 @@ nl:
push_subscription_expires: PuSH-abonnement verloopt op
redownload: Profiel vernieuwen
redownloaded_msg: Het herstellen van het oorspronkelijke profiel van %{username} is geslaagd
- reject: Afkeuren
+ reject: Afwijzen
rejected_msg: Het afwijzen van het registratieverzoek van %{username} is geslaagd
remove_avatar: Avatar verwijderen
remove_header: Omslagfoto verwijderen
@@ -183,15 +187,13 @@ nl:
reset: Opnieuw
reset_password: Wachtwoord opnieuw instellen
resubscribe: Opnieuw abonneren
- role: Bevoegdheden
- roles:
- admin: Beheerder
- moderator: Moderator
- staff: Medewerkers
- user: Gebruiker
+ role: Rol
search: Zoeken
search_same_email_domain: Andere gebruikers met hetzelfde e-maildomein
search_same_ip: Andere gebruikers met hetzelfde IP-adres
+ security_measures:
+ only_password: Alleen wachtwoord
+ password_and_2fa: Wachtwoord en tweestapsverificatie
sensitive: Gevoelig forceren
sensitized: als gevoelig gemarkeerd
shared_inbox_url: Gedeelde inbox-URL
@@ -201,11 +203,15 @@ nl:
silence: Beperken
silenced: Beperkt
statuses: Berichten
+ strikes: Eerdere overtredingen
subscribe: Abonneren
+ suspend: Opschorten
suspended: Opgeschort
suspension_irreversible: De gegevens van dit account zijn onomkeerbaar verwijderd. Je kunt het opschorten van dit account ongedaan maken zodat het weer valt te gebruiken, maar de verwijderde gegevens worden hiermee niet hersteld.
suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen.
title: Accounts
+ unblock_email: E-mailadres deblokkeren
+ unblocked_email_msg: Het e-mailadres van %{username} is gedeblokkeerd
unconfirmed_email: Onbevestigd e-mailadres
undo_sensitized: Niet meer als gevoelig forceren
undo_silenced: Niet langer beperken
@@ -220,11 +226,15 @@ nl:
whitelisted: Goedgekeurd voor federatie
action_logs:
action_types:
+ approve_appeal: Bezwaar goedkeuren
+ approve_user: Gebruiker goedkeuren
assigned_to_self_report: Rapportage toewijzen
change_email_user: E-mailadres van gebruiker wijzigen
+ change_role_user: Gebruikersrol wijzigen
confirm_user: Gebruiker bevestigen
create_account_warning: Waarschuwing aanmaken
create_announcement: Mededeling aanmaken
+ create_canonical_email_block: E-mailblokkade aanmaken
create_custom_emoji: Lokale emoji aanmaken
create_domain_allow: Domeingoedkeuring aanmaken
create_domain_block: Domeinblokkade aanmaken
@@ -233,10 +243,12 @@ nl:
create_unavailable_domain: Niet beschikbaar domein aanmaken
demote_user: Gebruiker degraderen
destroy_announcement: Mededeling verwijderen
+ destroy_canonical_email_block: E-mailblokkade verwijderen
destroy_custom_emoji: Lokale emoji verwijderen
destroy_domain_allow: Domeingoedkeuring verwijderen
destroy_domain_block: Domeinblokkade verwijderen
destroy_email_domain_block: Blokkade van e-maildomein verwijderen
+ destroy_instance: Domein volledig verwijderen
destroy_ip_block: IP-regel verwijderen
destroy_status: Toot verwijderen
destroy_unavailable_domain: Niet beschikbaar domein verwijderen
@@ -247,6 +259,8 @@ nl:
enable_user: Gebruiker inschakelen
memorialize_account: Het account in een In memoriam veranderen
promote_user: Gebruiker promoveren
+ reject_appeal: Bezwaar afwijzen
+ reject_user: Gebruiker afwijzen
remove_avatar_user: Avatar verwijderen
reopen_report: Rapportage heropenen
reset_password_user: Wachtwoord opnieuw instellen
@@ -255,19 +269,23 @@ nl:
silence_account: Account beperken
suspend_account: Account opschorten
unassigned_report: Rapportage niet langer toewijzen
+ unblock_email_account: E-mailadres deblokkeren
unsensitive_account: De media in jouw account niet langer als gevoelig markeren
unsilence_account: Account niet langer beperken
unsuspend_account: Account niet langer opschorten
update_announcement: Mededeling bijwerken
update_custom_emoji: Lokale emoji bijwerken
update_domain_block: Domeinblokkade bijwerken
+ update_ip_block: IP-regel bijwerken
update_status: Bericht bijwerken
actions:
+ approve_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} goedgekeurd"
assigned_to_self_report_html: "%{name} heeft rapportage %{target} aan zichzelf toegewezen"
change_email_user_html: "%{name} veranderde het e-mailadres van gebruiker %{target}"
confirm_user_html: E-mailadres van gebruiker %{target} is door %{name} bevestigd
create_account_warning_html: "%{name} verzond een waarschuwing naar %{target}"
create_announcement_html: "%{name} heeft de nieuwe mededeling %{target} aangemaakt"
+ create_canonical_email_block_html: "%{name} blokkeerde e-mail met de hash %{target}"
create_custom_emoji_html: Nieuwe emoji %{target} is door %{name} geüpload
create_domain_allow_html: "%{name} heeft de federatie met het domein %{target} goedgekeurd"
create_domain_block_html: Domein %{target} is door %{name} geblokkeerd
@@ -276,7 +294,7 @@ nl:
create_unavailable_domain_html: "%{name} heeft de bezorging voor domein %{target} beëindigd"
demote_user_html: Gebruiker %{target} is door %{name} gedegradeerd
destroy_announcement_html: "%{name} heeft de mededeling %{target} verwijderd"
- destroy_custom_emoji_html: "%{name} verwijderde emoji %{target}"
+ destroy_canonical_email_block_html: "%{name} deblokkeerde e-mail met de hash %{target}"
destroy_domain_allow_html: "%{name} heeft de federatie met het domein %{target} afgekeurd"
destroy_domain_block_html: Domein %{target} is door %{name} gedeblokkeerd
destroy_email_domain_block_html: "%{name} heeft het e-maildomein %{target} gedeblokkeerd"
@@ -290,6 +308,8 @@ nl:
enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld
memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd
promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd
+ reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} afgewezen"
+ reject_user_html: "%{name} heeft de registratie van %{target} afgewezen"
remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}"
reopen_report_html: "%{name} heeft rapportage %{target} heropend"
reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld
@@ -304,8 +324,8 @@ nl:
update_announcement_html: "%{name} heeft de mededeling %{target} bijgewerkt"
update_custom_emoji_html: Emoji %{target} is door %{name} bijgewerkt
update_domain_block_html: "%{name} heeft de domeinblokkade bijgewerkt voor %{target}"
+ update_ip_block_html: "%{name} wijzigde de IP-regel voor %{target}"
update_status_html: "%{name} heeft de berichten van %{target} bijgewerkt"
- deleted_status: "(verwijderd bericht}"
empty: Geen logs gevonden.
filter_by_action: Op actie filteren
filter_by_user: Op gebruiker filteren
@@ -360,9 +380,35 @@ nl:
updated_msg: Bijwerken van emoji is geslaagd!
upload: Uploaden
dashboard:
+ active_users: actieve gebruikers
+ interactions: interacties
+ media_storage: Opgeslagen mediabestanden
+ new_users: nieuwe gebruikers
+ opened_reports: aangemaakte rapportages
+ pending_appeals_html:
+ one: "%{count} bezwaar te beoordelen"
+ other: "%{count} bezwaren te beoordelen"
+ pending_reports_html:
+ one: "%{count} openstaande rapportage"
+ other: "%{count} openstaande rapportages"
+ pending_tags_html:
+ one: "%{count} hashtag te beoordelen"
+ other: "%{count} hashtags te beoordelen"
+ pending_users_html:
+ one: "%{count} nieuwe gebruiker te beoordelen"
+ other: "%{count} nieuwe gebruikers te beoordelen"
+ resolved_reports: opgeloste rapportages
software: Software
+ sources: Locatie van registratie
space: Ruimtegebruik
title: Dashboard
+ top_languages: Meest actieve talen
+ top_servers: Meest actieve servers
+ website: Website
+ disputes:
+ appeals:
+ empty: Geen bezwaren gevonden.
+ title: Bezwaren
domain_allows:
add_new: Federatie met domein goedkeuren
created_msg: Federatie met domein is succesvol goedgekeurd
@@ -400,6 +446,9 @@ nl:
add_new: Nieuwe toevoegen
created_msg: Blokkeren e-maildomein geslaagd
delete: Verwijderen
+ dns:
+ types:
+ mx: MX-record
domain: Domein
new:
create: Blokkeren
@@ -414,13 +463,37 @@ nl:
title: Aanbevolen accounts
unsuppress: Account weer aanbevelen
instances:
+ availability:
+ title: Beschikbaarheid
+ warning: De laatste poging om met deze server te verbinden was onsuccesvol
back_to_all: Alles
back_to_limited: Beperkt
back_to_warning: Waarschuwing
by_domain: Domein
+ content_policies:
+ comment: Interne reden
+ description_html: Je kunt het beleid bepalen dat op de accounts van dit domein en alle subdomeinen van toepassing is.
+ policies:
+ reject_media: Mediabestanden weigeren
+ reject_reports: Rapportages weigeren
+ silence: Beperkt
+ suspend: Opgeschort
+ policy: Zwaarte
+ reason: Publieke reden
+ title: Beleid
+ dashboard:
+ instance_accounts_dimension: Meest door ons gevolgde accounts
+ instance_accounts_measure: opgeslagen accounts
+ instance_followers_measure: daar ons daar gevolgd
+ instance_follows_measure: door hun hier gevolgd
+ instance_languages_dimension: Meest actieve talen
+ instance_media_attachments_measure: opgeslagen mediabestanden
+ instance_reports_measure: rapportages over hun
+ instance_statuses_measure: opgeslagen berichten
delivery:
all: Alles
clear: Bezorgfouten weghalen
+ failing: Problemen
restart: Bezorging herstarten
stop: Bezorging beëindigen
unavailable: Niet beschikbaar
@@ -428,12 +501,16 @@ nl:
delivery_error_days: Dagen met bezorgfouten
delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd.
empty: Geen domeinen gevonden.
+ known_accounts:
+ one: "%{count} bekend account"
+ other: "%{count} bekende accounts"
moderation:
all: Alles
limited: Beperkt
title: Moderatie
private_comment: Privé-opmerking
public_comment: Openbare opmerking
+ purge: Volledig verwijderen
title: Federatie
total_blocked_by_us: Door ons geblokkeerd
total_followed_by_them: Door hun gevolgd
@@ -489,14 +566,17 @@ nl:
notes:
one: "%{count} opmerking"
other: "%{count} opmerkingen"
+ action_log: Auditlog
action_taken_by: Actie uitgevoerd door
are_you_sure: Weet je het zeker?
assign_to_self: Aan mij toewijzen
assigned: Toegewezen moderator
by_target_domain: Domein van gerapporteerde account
+ category: Category
comment:
none: Geen
created_at: Gerapporteerd op
+ delete_and_resolve: Bericht verwijderen
forwarded: Doorgestuurd
forwarded_to: Doorgestuurd naar %{domain}
mark_as_resolved: Markeer als opgelost
@@ -507,17 +587,61 @@ nl:
create_and_unresolve: Heropenen met opmerking
delete: Verwijderen
placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen…
+ title: Opmerkingen
reopen: Rapportage heropenen
report: 'Rapportage #%{id}'
reported_account: Gerapporteerde account
reported_by: Gerapporteerd door
resolved: Opgelost
resolved_msg: Rapportage succesvol opgelost!
- status: Bericht
+ skip_to_actions: Ga direct naar de acties
+ status: Rapportages
+ statuses: Gerapporteerde inhoud
+ target_origin: Herkomst van de gerapporteerde accounts
title: Rapportages
unassign: Niet langer toewijzen
unresolved: Onopgelost
updated_at: Bijgewerkt
+ view_profile: Profiel bekijken
+ roles:
+ add_new: Rol toevoegen
+ assigned_users:
+ one: "%{count} gebruiker"
+ other: "%{count} gebruikers"
+ categories:
+ administration: Beheer
+ devops: Devops
+ invites: Uitnodigingen
+ moderation: Moderatie
+ special: Speciaal
+ delete: Verwijderen
+ everyone: Standaardrechten
+ everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum.
+ permissions_count:
+ one: "%{count} recht"
+ other: "%{count} rechten"
+ privileges:
+ administrator: Beheerder
+ delete_user_data: Gebruikersgegevens verwijderen
+ invite_users: Gebruikers uitnodigen
+ manage_announcements: Aankondigingen beheren
+ manage_appeals: Bezwaren afhandelen
+ manage_blocks: Blokkades beheren
+ manage_custom_emojis: Lokale emoji's beheren
+ manage_federation: Federatie beheren
+ manage_invites: Uitnodigingen beheren
+ manage_reports: Rapportages afhandelen
+ manage_roles: Rollen beheren
+ manage_rules: Serverregels wijzigen
+ manage_settings: Server-instellingen wijzigen
+ manage_taxonomies: Trends en hashtags beheren
+ manage_user_access: Gebruikerstoegang beheren
+ manage_users: Gebruikers beheren
+ manage_webhooks: Webhooks beheren
+ view_audit_log: Auditlog bekijken
+ view_dashboard: Dashboard bekijken
+ view_devops: Devops
+ title: Rollen
rules:
add_new: Regel toevoegen
delete: Verwijderen
@@ -570,9 +694,6 @@ nl:
deletion:
desc_html: Toestaan dat iedereen diens eigen account kan verwijderen
title: Verwijderen account toestaan
- min_invite_role:
- disabled: Niemand
- title: Uitnodigingen toestaan door
require_invite_text:
desc_html: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd
title: Nieuwe gebruikers moeten een reden invullen waarom ze zich willen registreren
@@ -585,21 +706,18 @@ nl:
show_known_fediverse_at_about_page:
desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdlijn
title: De globale tijdlijn op de openbare tijdlijnpagina tonen
- show_staff_badge:
- desc_html: Medewerkersbadge op profielpagina tonen
- title: Medewerkersbadge tonen
site_description:
- desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kan HTML gebruiken, zoals <a>
en <em>
.
+ desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kunt HTML gebruiken, zoals <a>
en <em>
.
title: Omschrijving Mastodonserver (API)
site_description_extended:
- desc_html: Een goede plek voor je gedragscode, regels, richtlijnen en andere zaken die jouw server uniek maken. Je kan ook hier HTML gebruiken
+ desc_html: Een goede plek voor je gedragscode, regels, richtlijnen en andere zaken die jouw server uniek maken. Je kunt ook hier HTML gebruiken
title: Uitgebreide omschrijving Mastodonserver
site_short_description:
desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt.
title: Omschrijving Mastodonserver (website)
site_terms:
- desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken
- title: Aangepaste gebruiksvoorwaarden
+ desc_html: Je kunt jouw eigen privacybeleid hier kwijt. Je kunt HTML gebruiken
+ title: Aangepast privacybeleid
site_title: Naam Mastodonserver
thumbnail:
desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen
@@ -609,8 +727,8 @@ nl:
title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan
title: Server-instellingen
trendable_by_default:
- desc_html: Heeft invloed op hashtags die nog niet eerder niet zijn toegestaan
- title: Hashtags toestaan om trending te worden zonder voorafgaande beoordeling
+ desc_html: Specifieke trends kunnen nog steeds expliciet worden afgekeurd
+ title: Trends toestaan zonder voorafgaande beoordeling
trends:
desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen
title: Trends
@@ -619,12 +737,20 @@ nl:
destroyed_msg: Verwijderen website-upload geslaagd!
statuses:
back_to_account: Terug naar accountpagina
+ batch:
+ report: Rapportage
deleted: Verwijderd
media:
title: Media
no_status_selected: Er werden geen berichten gewijzigd, omdat er geen enkele werd geselecteerd
title: Berichten van account
with_media: Met media
+ strikes:
+ actions:
+ silence: "%{name} beperkte het account %{target}"
+ suspend: "%{name} schortte het account %{target} op"
+ appeal_approved: Bezwaar ingediend
+ appeal_pending: Bezwaar in behandeling
system_checks:
database_schema_check:
message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort
@@ -637,6 +763,34 @@ nl:
review: Status beoordelen
updated_msg: Instellingen hashtag succesvol bijgewerkt
title: Beheer
+ trends:
+ allow: Toestaan
+ approved: Toegestaan
+ disallow: Weigeren
+ links:
+ allow: Link toestaan
+ allow_provider: Uitgever toestaan
+ disallow: Link toestaan
+ disallow_provider: Website toestaan
+ title: Trending links
+ only_allowed: Alleen toegestaan
+ pending_review: In afwachting van beoordeling
+ preview_card_providers:
+ allowed: Links van deze website kunnen trending worden
+ rejected: Links van deze website kunnen niet trending worden
+ title: Uitgevers
+ rejected: Afgewezen
+ statuses:
+ allow: Bericht toestaan
+ allow_account: Gebruiker toestaan
+ disallow: Bericht niet toestaan
+ disallow_account: Gebruiker niet toestaan
+ not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn
+ title: Trending berichten
+ tags:
+ dashboard:
+ tag_languages_dimension: Populaire talen
+ tag_servers_dimension: Populaire servers
warning_presets:
add_new: Nieuwe toevoegen
delete: Verwijderen
@@ -644,8 +798,20 @@ nl:
empty: Je hebt nog geen presets voor waarschuwingen toegevoegd.
title: Presets voor waarschuwingen beheren
admin_mailer:
+ new_appeal:
+ actions:
+ delete_statuses: het verwijderen van diens berichten
+ disable: het bevriezen van diens account
+ mark_statuses_as_sensitive: het markeren van diens berichten als gevoelig
+ none: een waarschuwing
+ sensitive: het gevoelig forceren van diens account
+ silence: het beperken van diens account
+ suspend: het opschorten van diens account
+ body: "%{target} maakt bezwaar tegen een moderatie-actie door %{action_taken_by} op %{date}, betreffende %{type}. De gebruiker schrijft:"
+ next_steps: Je kunt het bezwaar goedkeuren om daarmee de moderatie-actie ongedaan te maken, of je kunt het verwerpen.
+ subject: "%{username} maakt bezwaar tegen een moderatie-actie op %{instance}"
new_pending_account:
- body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afkeuren.
+ body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afwijzen.
subject: Er dient een nieuw account op %{instance} te worden beoordeeld (%{username})
new_report:
body: "%{reporter} heeft %{target} gerapporteerd"
@@ -701,6 +867,7 @@ nl:
invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan.
link_to_otp: Voer een tweestapsverificatiecode van je telefoon of een herstelcode in
link_to_webauth: Jouw apparaat met de authenticatie-app gebruiken
+ log_in_with: Inloggen met
login: Inloggen
logout: Uitloggen
migrate_account: Naar een ander account verhuizen
@@ -722,6 +889,7 @@ nl:
status:
account_status: Accountstatus
confirming: Aan het wachten totdat de e-mail is bevestigd.
+ functional: Jouw account kan in diens geheel gebruikt worden.
pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd.
redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}.
too_fast: Formulier is te snel ingediend. Probeer het nogmaals.
@@ -735,7 +903,7 @@ nl:
follow_request: 'Jij hebt een volgverzoek ingediend bij:'
following: 'Succes! Jij volgt nu:'
post_follow:
- close: Of je kan dit venster gewoon sluiten.
+ close: Of je kunt dit venster gewoon sluiten.
return: Profiel van deze gebruiker tonen
web: Ga naar de webapp
title: Volg %{acct}
@@ -789,14 +957,26 @@ nl:
explore_mastodon: "%{title} verkennen"
disputes:
strikes:
- appeal: Beroep
- appeal_approved: Het aangetekende beroep is goedgekeurd en deze overtreding is niet langer geldig
- appeal_rejected: Het aangetekende beroep is afgewezen
- appeal_submitted_at: Beroep aangetekend
- appealed_msg: Jouw aangetekende beroep is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht.
+ appeal: Bezwaar
+ appeal_approved: Het ingediende bezwaar is goedgekeurd en de eerder vastgestelde overtreding is niet langer geldig
+ appeal_rejected: Het ingediende bezwaar is afgewezen
+ appeal_submitted_at: Bezwaar ingediend
+ appealed_msg: Jouw bezwaar is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht.
appeals:
- submit: Beroep aantekenen
- approve_appeal: Beroep goedkeuren
+ submit: Bezwaar indienen
+ approve_appeal: Bezwaar goedkeuren
+ reject_appeal: Bezwaar afgewezen
+ title_actions:
+ delete_statuses: Verwijdering bericht
+ disable: Bevriezen van account
+ mark_statuses_as_sensitive: Berichten als gevoelig markeren
+ none: Waarschuwing
+ sensitive: Volledige account als gevoelig markeren
+ silence: Beperking account
+ suspend: Opschorting account
+ your_appeal_approved: Jouw bezwaar is goedgekeurd
+ your_appeal_pending: Je hebt een bezwaar ingediend
+ your_appeal_rejected: Jouw bezwaar is afgewezen
domain_validator:
invalid_domain: is een ongeldige domeinnaam
errors:
@@ -845,16 +1025,38 @@ nl:
public: Openbare tijdlijnen
thread: Gesprekken
edit:
+ add_keyword: Trefwoord toevoegen
+ keywords: Trefwoorden
+ statuses: Individuele berichten
title: Filter bewerken
errors:
+ deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving.
invalid_context: Geen of ongeldige context verstrekt
- invalid_irreversible: Onomkeerbaar filteren werkt alleen met de starttijdlijn en meldingen
index:
+ contexts: Filters in %{contexts}
delete: Verwijderen
empty: Je hebt geen filters aangemaakt.
+ expires_in: Vervalt na %{distance}
+ expires_on: Vervalt op %{date}
+ keywords:
+ one: "%{count} trefwoord"
+ other: "%{count} trefwoorden"
+ statuses:
+ one: "%{count} bericht"
+ other: "%{count} berichten"
+ statuses_long:
+ one: "%{count} individueel bericht verborgen"
+ other: "%{count} individuele berichten verborgen"
title: Filters
new:
+ save: Nieuwe filter opslaan
title: Nieuw filter toevoegen
+ statuses:
+ back_to_filter: Terug naar het filter
+ batch:
+ remove: Uit het filter verwijderen
+ index:
+ title: Gefilterde berichten
footer:
developers: Ontwikkelaars
more: Meer…
@@ -862,12 +1064,22 @@ nl:
trending_now: Trends
generic:
all: Alles
+ all_items_on_page_selected_html:
+ one: "%{count} item op deze pagina is geselecteerd."
+ other: Alle %{count} items op deze pagina zijn geselecteerd.
+ all_matching_items_selected_html:
+ one: "%{count} item dat met jouw zoekopdracht overeenkomt is geselecteerd."
+ other: Alle %{count} items die met jouw zoekopdracht overeenkomen zijn geselecteerd.
changes_saved_msg: Wijzigingen succesvol opgeslagen!
copy: Kopiëren
delete: Verwijderen
+ deselect: Alles deselecteren
none: Geen
order_by: Sorteer op
save_changes: Wijzigingen opslaan
+ select_all_matching_items:
+ one: "%{count} item dat met jouw zoekopdracht overeenkomt selecteren."
+ other: Alle %{count} items die met jouw zoekopdracht overeenkomen selecteren.
today: vandaag
validation_errors:
one: Er is iets niet helemaal goed! Bekijk onderstaande fout
@@ -917,6 +1129,12 @@ nl:
lists:
errors:
limit: Je hebt het maximaal aantal lijsten bereikt
+ login_activities:
+ authentication_methods:
+ otp: tweestapsverificatie-app
+ password: wachtwoord
+ sign_in_token: beveiligingscode via e-mail
+ webauthn: beveiligingssleutels
media_attachments:
validations:
images_and_video: Een video kan niet aan een bericht met afbeeldingen worden gekoppeld
@@ -960,17 +1178,12 @@ nl:
carry_mutes_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account genegeerd.
copy_account_note_text: 'Deze gebruiker is verhuisd vanaf %{acct}. Je hebt de volgende opmerkingen over dat account gemaakt:'
notification_mailer:
- digest:
- action: Alle meldingen bekijken
- body: Hier is een korte samenvatting van de berichten die je sinds jouw laatste bezoek op %{since} hebt gemist
- mention: "%{name} vermeldde jou in:"
- new_followers_summary:
- one: Je hebt trouwens sinds je weg was er ook een nieuwe volger bijgekregen! Hoera!
- other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch!
- title: Tijdens jouw afwezigheid...
+ admin:
+ report:
+ subject: "%{name} heeft een rapportage ingediend"
favourite:
- body: 'Jouw bericht werd door %{name} aan diens favorieten toegevoegd:'
- subject: "%{name} voegde jouw bericht als favoriet toe"
+ body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:'
+ subject: "%{name} markeerde jouw bericht als favoriet"
title: Nieuwe favoriet
follow:
body: "%{name} volgt jou nu!"
@@ -994,6 +1207,8 @@ nl:
title: Nieuwe boost
status:
subject: "%{name} heeft zojuist een bericht geplaatst"
+ update:
+ subject: "%{name} bewerkte een bericht"
notifications:
email_events: E-mailmeldingen voor gebeurtenissen
email_events_hint: 'Selecteer gebeurtenissen waarvoor je meldingen wilt ontvangen:'
@@ -1067,8 +1282,8 @@ nl:
reason_html: " Waarom is deze extra stap nodig? %{instance}
is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server."
remote_interaction:
favourite:
- proceed: Doorgaan met toevoegen aan jouw favorieten
- prompt: 'Je wilt het volgende bericht aan jouw favorieten toevoegen:'
+ proceed: Doorgaan met het markeren als favoriet
+ prompt: 'Je wilt het volgende bericht als favoriet markeren:'
reblog:
proceed: Doorgaan met boosten
prompt: 'Je wilt het volgende bericht boosten:'
@@ -1158,6 +1373,7 @@ nl:
disallowed_hashtags:
one: 'bevatte een niet toegestane hashtag: %{tags}'
other: 'bevatte niet toegestane hashtags: %{tags}'
+ edited_at_html: Bewerkt op %{date}
errors:
in_reply_not_found: Het bericht waarop je probeert te reageren lijkt niet te bestaan.
open_in_web: In de webapp openen
@@ -1188,10 +1404,28 @@ nl:
public_long: Aan iedereen tonen, ook op openbare tijdlijnen
unlisted: Minder openbaar
unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen
+ statuses_cleanup:
+ ignore_favs: Favorieten negeren
+ ignore_reblogs: Boosts negeren
+ keep_direct: Directe berichten behouden
+ keep_media: Berichten met mediabijlagen behouden
+ keep_pinned: Vastgemaakte berichten behouden
+ min_age:
+ '1209600': 2 weken
+ '15778476': 6 maanden
+ '2629746': 1 maand
+ '31556952': 1 jaar
+ '5259492': 2 maanden
+ '604800': 1 week
+ '63113904': 2 jaar
+ '7889238': 3 maanden
stream_entries:
pinned: Vastgemaakt bericht
reblogged: boostte
sensitive_content: Gevoelige inhoud
+ strikes:
+ errors:
+ too_late: De periode dat je bezwaar kon maken is verstreken
tags:
does_not_match_previous_name: komt niet overeen met de vorige naam
terms:
@@ -1276,7 +1510,7 @@ nl:
This document is CC-BY-SA. It was last updated May 26, 2022.
Originally adapted from the Discourse privacy policy.
- title: Gebruiksvoorwaarden en privacybeleid van %{instance}
+ title: Privacybeleid van %{instance}
themes:
contrast: Mastodon (hoog contrast)
default: Mastodon (donker)
@@ -1301,22 +1535,41 @@ nl:
recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account. Zorg ervoor dat je de herstelcodes op een veilige plek bewaard. Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren.
webauthn: Beveiligingssleutels
user_mailer:
+ appeal_approved:
+ action: Ga naar je account
+ explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is goedgekeurd. De eerder vastgestelde overtreding is hierbij niet langer geldig.
+ subject: Jouw bezwaar van %{date} is goedgekeurd
+ title: Bezwaar goedgekeurd
+ appeal_rejected:
+ explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is afgewezen. De vastgestelde overtreding blijft daarom ongewijzigd.
+ subject: Jouw bezwaar van %{date} is afgewezen
+ title: Bezwaar afgewezen
backup_ready:
explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload!
subject: Jouw archief staat klaar om te worden gedownload
title: Archief ophalen
+ suspicious_sign_in:
+ title: Een nieuwe registratie
warning:
+ appeal: Bezwaar indienen
+ appeal_description: Wanneer je denkt dat dit een fout is, kun je een bezwaar indienen bij de medewerkers van %{instance}.
+ categories:
+ spam: Spam
explanation:
mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren.
sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing.
+ reason: 'Reden:'
+ statuses: 'Gerapporteerde berichten:'
subject:
disable: Jouw account %{acct} is bevroren
none: Waarschuwing voor %{acct}
silence: Jouw account %{acct} is nu beperkt
suspend: Jouw account %{acct} is opgeschort
title:
+ delete_statuses: Berichten verwijderd
disable: Account bevroren
none: Waarschuwing
+ sensitive: Account is als gevoelig gemarkeerd
silence: Account beperkt
suspend: Account opgeschort
welcome:
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 5218270da4..baf20ad723 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -23,14 +23,14 @@ nn:
hosted_on: "%{domain} er vert for Mastodon"
instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n"
learn_more: Lær meir
- privacy_policy: Personvernsreglar
- rules: Server regler
- rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:'
+ logout_before_registering: Du er allereie logga inn.
+ rules: Tenarreglar
+ rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:'
see_whats_happening: Sjå kva som skjer
server_stats: 'Tenarstatistikk:'
source_code: Kjeldekode
status_count_before: Som skreiv
- terms: Brukarvilkår
+ tagline: Desentralisert sosialt nettverk
unavailable_content: Utilgjengeleg innhald
unavailable_content_description:
domain: Sørvar
@@ -74,10 +74,8 @@ nn:
posts_tab_heading: Tut
posts_with_replies: Tut og svar
roles:
- admin: Administrator
bot: Robot
group: Gruppe
- moderator: Moderator
unavailable: Profil ikkje tilgjengeleg
unfollow: Slutt å fylgja
admin:
@@ -96,12 +94,15 @@ nn:
avatar: Bilete
by_domain: Domene
change_email:
- changed_msg: Konto-e-posten er endra!
current_email: Noverande e-post
label: Byt e-post
new_email: Ny e-post
submit: Byt e-post
title: Byt e-post for %{username}
+ change_role:
+ label: Endre rolle
+ no_role: Inga rolle
+ title: Endre rolle for %{username}
confirm: Stadfest
confirmed: Stadfesta
confirming: Stadfestar
@@ -173,17 +174,12 @@ nn:
reset: Attstill
reset_password: Attstill passord
resubscribe: Ting på nytt
- role: Løyve
- roles:
- admin: Administrator
- moderator: Ordstyrer
- staff: Personell
- user: Brukar
+ role: Rolle
search: Søk
search_same_email_domain: Andre brukarar med same e-postdomene
search_same_ip: Andre brukarar med same IP
security_measures:
- only_password: Bare passord
+ only_password: Kun passord
password_and_2fa: Passord og 2FA
sensitized: Merket som følsom
shared_inbox_url: Delt Innboks URL
@@ -256,7 +252,6 @@ nn:
create_ip_block_html: "%{name} opprettet regel for IP %{target}"
reject_user_html: "%{name} avslo registrering fra %{target}"
silence_account_html: "%{name} begrenset %{target} sin konto"
- deleted_status: "(sletta status)"
empty: Ingen loggar funne.
filter_by_action: Sorter etter handling
filter_by_user: Sorter etter brukar
@@ -529,9 +524,6 @@ nn:
deletion:
desc_html: Tillat alle å sletta kontoen sin
title: Åpne kontosletting
- min_invite_role:
- disabled: Ingen
- title: Tillat innbydingar frå
require_invite_text:
desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt
title: Krev nye brukere for å oppgi en grunn for å delta
@@ -543,9 +535,6 @@ nn:
title: Registreringsmodus
show_known_fediverse_at_about_page:
desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold
- show_staff_badge:
- desc_html: Vis personalmerke på ei brukarside
- title: Vis personalmerke
site_description:
desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a>
og <em>
.
title: Tenarskilding
@@ -555,9 +544,6 @@ nn:
site_short_description:
desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf.
title: Stutt om tenaren
- site_terms:
- desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger
- title: Eigne brukarvilkår
site_title: Tenarnamn
thumbnail:
desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales
@@ -566,9 +552,6 @@ nn:
desc_html: Vis offentlig tidslinje på landingssiden
title: Tillat uautentisert tilgang til offentleg tidsline
title: Sideinnstillingar
- trendable_by_default:
- desc_html: Påverkar emneknaggar som ikkje har vore tillatne tidlegare
- title: Tillat emneknaggar å verta populære utan gjennomgang på førehand
trends:
title: Populære emneknaggar
site_uploads:
@@ -896,14 +879,6 @@ nn:
carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet.
copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:'
notification_mailer:
- digest:
- action: Sjå alle varsel
- body: Her er ei kort samanfatting av meldingane du gjekk glepp av sidan siste gong du var innom %{since}
- mention: "%{name} nemnde deg i:"
- new_followers_summary:
- one: Du har forresten fått deg ein ny fylgjar mens du var borte! Hurra!
- other: Du har forresten fått deg %{count} nye fylgjarar mens du var borte! Hurra!
- title: Mens du var borte...
favourite:
body: 'Statusen din vart merkt som favoritt av %{name}:'
subject: "%{name} merkte statusen din som favoritt"
@@ -1124,8 +1099,6 @@ nn:
sensitive_content: Følsomt innhold
tags:
does_not_match_previous_name: stemmar ikkje med det førre namnet
- terms:
- title: Tenestevilkår og personvernsvilkår for %{instance}
themes:
contrast: Mastodon (Høg kontrast)
default: Mastodon (Mørkt)
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 30b7a56fb7..b93bd0a2cc 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -23,7 +23,6 @@
hosted_on: Mastodon driftet på %{domain}
instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n"
learn_more: Lær mer
- privacy_policy: Privatlivsretningslinjer
rules: Server regler
rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:'
see_whats_happening: Se hva som skjer
@@ -33,7 +32,6 @@
one: innlegg
other: statuser
status_count_before: Som skrev
- terms: Bruksvilkår
unavailable_content: Utilgjengelig innhold
unavailable_content_description:
domain: Tjener
@@ -77,10 +75,8 @@
posts_tab_heading: Tuter
posts_with_replies: Tuter med svar
roles:
- admin: Administrator
bot: Bot
group: Gruppe
- moderator: Moderere
unavailable: Profilen er utilgjengelig
unfollow: Slutt å følge
admin:
@@ -99,7 +95,6 @@
avatar: Profilbilde
by_domain: Domene
change_email:
- changed_msg: Konto-E-postadressen ble vellykket endret!
current_email: Nåværende E-post
label: Endre e-post
new_email: Ny E-post
@@ -176,12 +171,6 @@
reset: Tilbakestill
reset_password: Nullstill passord
resubscribe: Abonner på nytt
- role: Rettigheter
- roles:
- admin: Administrator
- moderator: Ordstyrer
- staff: Personale
- user: Bruker
search: Søk
search_same_email_domain: Andre brukere med samme E-postdomene
search_same_ip: Andre brukere med den samme IP-en
@@ -256,7 +245,6 @@
create_ip_block_html: "%{name} opprettet regel for IP %{target}"
reject_user_html: "%{name} avslo registrering fra %{target}"
silence_account_html: "%{name} begrenset %{target} sin konto"
- deleted_status: "(statusen er slettet)"
empty: Ingen loggføringer ble funnet.
filter_by_action: Sorter etter handling
filter_by_user: Sorter etter bruker
@@ -529,9 +517,6 @@
deletion:
desc_html: Tillat alle å slette sin konto
title: Åpne kontosletting
- min_invite_role:
- disabled: Ingen
- title: Tillat invitasjoner fra
require_invite_text:
desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt
title: Krev nye brukere for å oppgi en grunn for å delta
@@ -543,9 +528,6 @@
title: Registreringsmodus
show_known_fediverse_at_about_page:
desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold
- show_staff_badge:
- desc_html: Vis personalemerke på brukersiden
- title: Vis personalemerke
site_description:
desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a>
og <em>
.
title: Nettstedsbeskrivelse
@@ -555,9 +537,6 @@
site_short_description:
desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf.
title: Kort tjenerbeskrivelse
- site_terms:
- desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger
- title: Skreddersydde bruksvilkår
site_title: Nettstedstittel
thumbnail:
desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales
@@ -566,9 +545,6 @@
desc_html: Vis offentlig tidslinje på landingssiden
title: Forhandsvis tidslinjen
title: Nettstedsinnstillinger
- trendable_by_default:
- desc_html: Påvirker hashtags som ikke har blitt nektet tidligere
- title: Tillat hashtags for trend uten foregående vurdering
trends:
title: Trendende emneknagger
site_uploads:
@@ -883,14 +859,6 @@
carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet.
copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:'
notification_mailer:
- digest:
- action: Vis alle varslinger
- body: Her er en kort oppsummering av hva du har gått glipp av siden du sist logget inn den %{since}
- mention: "%{name} nevnte deg i:"
- new_followers_summary:
- one: I tillegg har du fått en ny følger mens du var borte. Hurra!
- other: I tillegg har du har fått %{count} nye følgere mens du var borte! Imponerende!
- title: I ditt fravær…
favourite:
body: 'Statusen din ble likt av %{name}:'
subject: "%{name} likte statusen din"
@@ -1114,8 +1082,6 @@
sensitive_content: Følsomt innhold
tags:
does_not_match_previous_name: samsvarer ikke med det forrige navnet
- terms:
- title: "%{instance} Personvern og villkår for bruk av nettstedet"
themes:
contrast: Mastodon (Høykontrast)
default: Mastodon
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 57cecbdc40..6fbe1c9c3e 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -22,7 +22,6 @@ oc:
get_apps: Ensajatz una aplicacion mobil
hosted_on: Mastodon albergat sus %{domain}
learn_more: Ne saber mai
- privacy_policy: Politica de confidencialitat
rules: Règlas del servidor
see_whats_happening: Agachatz çò qu’arriba
server_stats: 'Estatisticas del servidor :'
@@ -31,7 +30,6 @@ oc:
one: estatut
other: estatuts
status_count_before: qu’an escrich
- terms: Condicions d’utilizacion
unavailable_content: Contengut pas disponible
unavailable_content_description:
domain: Servidor
@@ -71,10 +69,8 @@ oc:
posts_tab_heading: Tuts
posts_with_replies: Tuts e responsas
roles:
- admin: Admin
bot: Robòt
group: Grop
- moderator: Moderador
unavailable: Perfil indisponible
unfollow: Quitar de sègre
admin:
@@ -92,7 +88,6 @@ oc:
avatar: Avatar
by_domain: Domeni
change_email:
- changed_msg: Adreça corrèctament cambiada !
current_email: Adreça actuala
label: Cambiar d’adreça
new_email: Novèla adreça
@@ -160,12 +155,6 @@ oc:
reset: Reïnicializar
reset_password: Reïnicializar lo senhal
resubscribe: Se tornar abonar
- role: Autorizacions
- roles:
- admin: Administrator
- moderator: Moderador
- staff: Personnal
- user: Uitlizaire
search: Cercar
search_same_ip: Autres utilizaires amb la meteissa IP
security_measures:
@@ -225,7 +214,6 @@ oc:
update_announcement: Actualizar l’anóncia
update_custom_emoji: Actualizar l’emoji personalizat
update_status: Actualizar l’estatut
- deleted_status: "(estatut suprimit)"
empty: Cap de jornal pas trobat.
filter_by_action: Filtrar per accion
filter_by_user: Filtrar per utilizaire
@@ -475,9 +463,6 @@ oc:
deletion:
desc_html: Autorizar lo monde a suprimir lor compte
title: Possibilitat de suprimir lo compte
- min_invite_role:
- disabled: Degun
- title: Autorizat amb invitacions
registrations_mode:
modes:
approved: Validacion necessària per s’inscriure
@@ -487,9 +472,6 @@ oc:
show_known_fediverse_at_about_page:
desc_html: Un còp activat mostrarà los tuts de totes los fediverse dins l’apercebut. Autrament mostrarà pas que los tuts locals.
title: Mostrar los fediverse coneguts dins l’apercebut del flux
- show_staff_badge:
- desc_html: Mostrar lo badge Personal sus la pagina de perfil
- title: Mostrar lo badge personal
site_description:
desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular <a>
e<em>
.
title: Descripcion del servidor
@@ -499,9 +481,6 @@ oc:
site_short_description:
desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion del servidor.
title: Descripcion corta del servidor
- site_terms:
- desc_html: Afichada sus la pagina de las condicions d’utilizacion
Podètz utilizar de balisas HTML
- title: Politica de confidencialitat del site
site_title: Títol del servidor
thumbnail:
desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada
@@ -711,7 +690,6 @@ oc:
title: Modificar lo filtre
errors:
invalid_context: Cap de contèxte o contèxte invalid fornit
- invalid_irreversible: Lo filtratge irreversible fonciona pas qu’amb lo flux d’actualitat o en contèxte de notificacion
index:
delete: Suprimir
empty: Avètz pas cap de filtre.
@@ -809,14 +787,6 @@ oc:
moderation:
title: Moderacion
notification_mailer:
- digest:
- action: Veire totas las notificacions
- body: Trobatz aquí un resumit dels messatges qu’avètz mancats dempuèi vòstra darrièra visita lo %{since}
- mention: "%{name} vos a mencionat dins :"
- new_followers_summary:
- one: Avètz un nòu seguidor dempuèi vòstra darrièra visita ! Ouà !
- other: Avètz %{count} nòus seguidors dempuèi vòstra darrièra visita ! Qué crane !
- title: Pendent vòstra abséncia…
favourite:
body: "%{name} a mes vòstre estatut en favorit :"
subject: "%{name} a mes vòstre estatut en favorit"
@@ -1039,8 +1009,6 @@ oc:
sensitive_content: Contengut sensible
tags:
does_not_match_previous_name: correspond pas al nom precedent
- terms:
- title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
themes:
contrast: Mastodon (Fòrt contrast)
default: Mastodon (Escur)
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 7557ab83f1..a45e8d4134 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -40,7 +40,7 @@ pl:
one: wpisu
other: wpisów
status_count_before: Są autorami
- terms: Zasady użytkowania
+ tagline: Zdecentralizowana sieć społecznościowa
unavailable_content: Niedostępne treści
unavailable_content_description:
domain: Serwer
@@ -90,10 +90,8 @@ pl:
posts_tab_heading: Wpisy
posts_with_replies: Wpisy z odpowiedziami
roles:
- admin: Administrator
bot: Bot
group: Grupa
- moderator: Moderator
unavailable: Profil niedostępny
unfollow: Przestań śledzić
admin:
@@ -112,12 +110,17 @@ pl:
avatar: Awatar
by_domain: Domena
change_email:
- changed_msg: Pomyślnie zmieniono adres e-mail konta!
+ changed_msg: Pomyślnie zmieniono adres e-mail!
current_email: Obecny adres e-mail
label: Zmień adres e-mail
new_email: Nowy adres e-mail
submit: Zmień adres e-mail
title: Zmień adres e-mail dla %{username}
+ change_role:
+ changed_msg: Pomyślnie zmieniono rolę!
+ label: Zmień rolę
+ no_role: Brak roli
+ title: Zmień rolę dla %{username}
confirm: Potwierdź
confirmed: Potwierdzono
confirming: Potwierdzanie
@@ -161,6 +164,7 @@ pl:
active: Aktywne
all: Wszystkie
pending: Oczekujące
+ silenced: Ograniczone
suspended: Zawieszone
title: Moderacja
moderation_notes: Notatki moderacyjne
@@ -168,6 +172,7 @@ pl:
most_recent_ip: Ostatnie IP
no_account_selected: Żadne konto nie zostało zmienione, bo żadne nie zostało wybrane
no_limits_imposed: Nie nałożono ograniczeń
+ no_role_assigned: Nie przypisano żadnej roli
not_subscribed: Nie zasubskrybowano
pending: Oczekuje na przegląd
perform_full_suspension: Zawieś
@@ -196,12 +201,7 @@ pl:
reset: Resetuj
reset_password: Resetuj hasło
resubscribe: Ponów subskrypcję
- role: Uprawnienia
- roles:
- admin: Administrator
- moderator: Moderator
- staff: Ekipa
- user: Użytkownik
+ role: Rola
search: Szukaj
search_same_email_domain: Inni użytkownicy z e-mail w tej domenie
search_same_ip: Inni użytkownicy z tym samym IP
@@ -244,6 +244,7 @@ pl:
approve_user: Zatwierdź użytkownika
assigned_to_self_report: Przypisz zgłoszenie
change_email_user: Zmień adres e-mail użytkownika
+ change_role_user: Zmień rolę użytkownika
confirm_user: Potwierdź użytkownika
create_account_warning: Utwórz ostrzeżenie
create_announcement: Utwórz ogłoszenie
@@ -253,6 +254,7 @@ pl:
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ę
+ create_user_role: Utwórz rolę
demote_user: Zdegraduj użytkownika
destroy_announcement: Usuń ogłoszenie
destroy_custom_emoji: Usuń niestandardowe emoji
@@ -263,6 +265,7 @@ pl:
destroy_ip_block: Usuń regułę IP
destroy_status: Usuń wpis
destroy_unavailable_domain: Usuń niedostępną domenę
+ destroy_user_role: Zlikwiduj rolę
disable_2fa_user: Wyłącz 2FA
disable_custom_emoji: Wyłącz niestandardowe emoji
disable_sign_in_token_auth_user: Wyłącz uwierzytelnianie tokenu e-mail dla użytkownika
@@ -289,12 +292,15 @@ pl:
update_announcement: Aktualizuj ogłoszenie
update_custom_emoji: Aktualizuj niestandardowe emoji
update_domain_block: Zaktualizuj blokadę domeny
+ update_ip_block: Aktualizuj regułę IP
update_status: Aktualizuj wpis
+ update_user_role: Aktualizuj rolę
actions:
approve_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}"
approve_user_html: "%{name} zatwierdził rejestrację od %{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}"
+ change_role_user_html: "%{name} zmienił rolę %{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}"
@@ -304,9 +310,10 @@ pl:
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}"
+ create_user_role_html: "%{name} utworzył rolę %{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_custom_emoji_html: "%{name} usunął 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"
@@ -314,6 +321,7 @@ pl:
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}"
+ destroy_user_role_html: "%{name} usunął rolę %{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_sign_in_token_auth_user_html: "%{name} wyłączył/a uwierzytelnianie tokenem e-mail dla %{target}"
@@ -341,7 +349,7 @@ pl:
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)"
+ update_user_role_html: "%{name} zmienił rolę %{target}"
empty: Nie znaleziono aktywności w dzienniku.
filter_by_action: Filtruj według działania
filter_by_user: Filtruj według użytkownika
@@ -499,6 +507,11 @@ pl:
unsuppress: Przywróć polecenie śledzenia konta
instances:
availability:
+ description_html:
+ few: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny.
+ many: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny.
+ one: Jeśli dostarczenie do domeny nie powiedzie się %{count} dzień bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny.
+ other: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny.
failure_threshold_reached: Próg niepowodzenia osiągnięty dnia %{date}.
failures_recorded:
few: Nieudane próby w %{count} różnych dniach.
@@ -671,6 +684,71 @@ pl:
unresolved: Nierozwiązane
updated_at: Zaktualizowano
view_profile: Wyświetl profil
+ roles:
+ add_new: Dodaj rolę
+ assigned_users:
+ few: "%{count} użytkowników"
+ many: "%{count} użytkowników"
+ one: "%{count} użytkownik"
+ other: "%{count} użytkowników"
+ categories:
+ administration: Administracja
+ devops: DevOps
+ invites: Zaproszenia
+ moderation: Moderacja
+ special: Specjalne
+ delete: Usuń
+ description_html: Za pomocą ról użytkownikówmożesz dostosowywać funkcje i obszary Mastodon, do których użytkownicy mogą uzyskać dostęp.
+ edit: Edytuj rolę '%{name}'
+ everyone: Domyślnie uprawnienia
+ everyone_full_description_html: To jest rola podstawowa wpływająca na wszystkich użytkowników, nawet tych, którzy nie mają przypisanej roli. Wszystkie inne role dziedziczą z niej uprawnienia.
+ permissions_count:
+ few: "%{count} uprawnień"
+ many: "%{count} uprawnień"
+ one: "%{count} uprawnienie"
+ other: "%{count} uprawnień"
+ privileges:
+ administrator: Administrator
+ administrator_description: Użytkownicy z tym uprawnieniem omijają każde uprawnienie
+ delete_user_data: Usuń dane użytkownika
+ delete_user_data_description: Pozwala użytkownikom na bezzwłoczne usuwanie danych innych użytkowników
+ invite_users: Zaproś użytkowników
+ invite_users_description: Pozwala użytkownikom zapraszać nowych ludzi na serwer
+ manage_announcements: Zarządzaj ogłoszeniami
+ manage_announcements_description: Pozwala użytkownikom zarządzać ogłoszeniami na serwerze
+ manage_appeals: Zarządzaj odwołaniami
+ manage_appeals_description: Pozwala użytkownikom przeglądać odwołania od działań moderacyjnych
+ manage_blocks: Zarządzaj blokami
+ manage_blocks_description: Pozwala użytkownikom na blokowanie dostawców poczty elektronicznej i adresów IP
+ manage_custom_emojis: Zarządzaj niestandardowymi emoji
+ manage_custom_emojis_description: Pozwala użytkownikom zarządzać niestandardowymi emoji na serwerze
+ manage_federation: Zarządzaj federacją
+ manage_federation_description: Pozwala użytkownikom na blokowanie lub zezwalanie federacji z innymi domenami i kontrolowanie doręczania
+ manage_invites: Zarządzaj zaproszeniami
+ manage_invites_description: Pozwala użytkownikom przeglądać i dezaktywować linki z zaproszeniami
+ manage_reports: Zarządzaj raportami
+ manage_reports_description: Pozwala użytkownikom przeglądać raporty i wykonywać przeciwko nim działania moderacyjne
+ manage_roles: Zarządzaj rolami
+ manage_roles_description: Pozwala użytkownikom zarządzać rolami i przypisywać role poniżej ich własnych
+ manage_rules: Zarządzaj regułami
+ manage_rules_description: Pozwala użytkownikom na zmianę reguł serwera
+ manage_settings: Zarządzaj ustawieniami
+ manage_settings_description: Pozwala użytkownikom na zmianę ustawień witryny
+ manage_taxonomies: Zarządzaj taksonomiami
+ manage_taxonomies_description: Pozwala użytkownikom przeglądać najpopularniejsze treści i aktualizować ustawienia hasztagów
+ manage_user_access: Zarządzaj dostępem użytkownika
+ manage_user_access_description: Pozwala użytkownikom na wyłączenie uwierzytelniania dwuskładnikowego innych użytkowników, zmianę adresu e-mail i zresetowanie hasła
+ manage_users: Zarządzanie użytkownikami
+ manage_users_description: Pozwala użytkownikom na oglądanie szczegółów innych użytkowników i wykonywanie na ich kontach działań moderacyjnych
+ manage_webhooks: Zarządzanie webhookami
+ manage_webhooks_description: Pozwala użytkownikom na konfigurację webhooków dla wydarzeń administracyjnych
+ view_audit_log: Wyświetl dziennik zdarzeń
+ view_audit_log_description: Pozwala użytkownikom zobaczyć historię działań administracyjnych na serwerze
+ view_dashboard: Wyświetl panel
+ view_dashboard_description: Pozwala użytkownikom na dostęp do panelu i różnych metryk
+ view_devops: Devops
+ view_devops_description: Pozwala użytkownikom na dostęp do paneli Sidekiq i pgHero
+ title: Role
rules:
add_new: Dodaj zasadę
delete: Usuń
@@ -723,9 +801,6 @@ pl:
deletion:
desc_html: Pozwól każdemu na usunięcie konta
title: Możliwość usunięcia
- min_invite_role:
- disabled: Nikt
- title: Kto może zapraszać użytkowników
require_invite_text:
desc_html: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne
title: Wymagaj od nowych użytkowników wypełnienia tekstu prośby o zaproszenie
@@ -738,9 +813,6 @@ pl:
show_known_fediverse_at_about_page:
desc_html: Jeśli włączone, podgląd instancji będzie wyświetlał wpisy z całego Fediwersum. W innym przypadku, będą wyświetlane tylko lokalne wpisy.
title: Pokazuj wszystkie znane wpisy na podglądzie instancji
- show_staff_badge:
- desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika
- title: Pokazuj odznakę administracji
site_description:
desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności <a>
i <em>
.
title: Opis serwera
@@ -751,8 +823,8 @@ pl:
desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz w jednym akapicie, czym jest Mastodon i czym wyróżnia się ten serwer. Jeżeli pusty, zostanie użyty opis serwera.
title: Krótki opis serwera
site_terms:
- 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
+ desc_html: Możesz stworzyć własną politykę prywatności. Możesz używać tagów HTML
+ title: Własna polityka prywatności
site_title: Nazwa serwera
thumbnail:
desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli'
@@ -762,8 +834,8 @@ pl:
title: Podgląd osi czasu
title: Ustawienia strony
trendable_by_default:
- desc_html: Wpływa na hashtagi, które nie były wcześniej niedozwolone
- title: Hashtagi mogą pojawiać się w trendach bez wcześniejszego zatwierdzenia
+ desc_html: Pewne treści trendu nadal mogą być bezpośrednio zabronione
+ title: Zezwalaj na trendy bez ich uprzedniego przejrzenia
trends:
desc_html: Wyświetlaj publicznie wcześniej sprawdzone hashtagi, które są obecnie na czasie
title: Popularne hashtagi
@@ -820,6 +892,11 @@ pl:
description_html: Są to linki, które są obecnie często udostępniane przez konta, z których Twój serwer widzi posty. Może to pomóc Twoim użytkownikom dowiedzieć się, co dzieje się na świecie. Żadne linki nie są wyświetlane publicznie dopóki nie zaakceptujesz wydawcy. Możesz również zezwolić lub odrzucić indywidualne linki.
disallow: Nie zezwalaj na link
disallow_provider: Nie zezwalaj na wydawcę
+ shared_by_over_week:
+ few: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia
+ many: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia
+ one: Udostępnione przez jedną osobę w ciągu ostatniego tygodnia
+ other: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia
title: Popularne linki
usage_comparison: Udostępnione %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj
only_allowed: Tylko dozwolone
@@ -837,6 +914,11 @@ pl:
disallow: Nie zezwalaj na post
disallow_account: Nie zezwalaj na autora
not_discoverable: Autor nie włączył opcji, by być wyświetlany w katalogu
+ shared_by:
+ few: Udostępnione i dodane do ulubionych %{friendly_count} razy
+ many: Udostępnione i dodane do ulubionych %{friendly_count} razy
+ one: Udostępnione lub dodane do ulubionych jednorazowo
+ other: Udostępnione i dodane do ulubionych %{friendly_count} razy
title: Popularne teraz
tags:
current_score: Bieżący wynik %{score}
@@ -1144,16 +1226,46 @@ pl:
public: Publiczne osie czasu
thread: Konwersacje
edit:
+ add_keyword: Dodaj słowo kluczowe
+ keywords: Słowa kluczowe
+ statuses: Pojedyncze wpisy
+ statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Przejrzyj lub usuń wpisy z filtra.
title: Edytuj filtr
errors:
+ deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego.
invalid_context: Nie podano lub podano nieprawidłową treść
- invalid_irreversible: Nieodwracalne filtrowanie działa tylko na stronie głównej i w powiadomieniach
index:
+ contexts: Filtry w %{contexts}
delete: Usuń
empty: Nie masz żadnych filtrów.
+ expires_in: Wygasa za %{distance}
+ expires_on: Wygasa %{date}
+ keywords:
+ few: "%{count} słowa kluczowe"
+ many: "%{count} słów kluczowych"
+ one: "%{count} słowo kluczowe"
+ other: "%{count} słów kluczowych"
+ statuses:
+ few: "%{count} posty"
+ many: "%{count} postów"
+ one: "%{count} post"
+ other: "%{count} postów"
+ statuses_long:
+ few: "%{count} ukryte posty"
+ many: "%{count} ukrytych postów"
+ one: "%{count} ukryty post"
+ other: "%{count} postów ukrytych"
title: Filtry
new:
+ save: Zapisz jako nowy filtr
title: Dodaj nowy filtr
+ statuses:
+ back_to_filter: Powrót do filtra
+ batch:
+ remove: Usuń z filtra
+ index:
+ hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego.
+ title: Filtrowane posty
footer:
developers: Dla programistów
more: Więcej…
@@ -1161,9 +1273,15 @@ pl:
trending_now: Obecnie na czasie
generic:
all: Wszystkie
+ all_items_on_page_selected_html:
+ few: "%{count} elementy na tej stronie są wybrane."
+ many: "%{count} elementów na tej stronie jest wybrane."
+ one: "%{count} element na tej stronie jest wybrany."
+ other: "%{count} elementów na tej stronie jest wybrane."
changes_saved_msg: Ustawienia zapisane!
copy: Kopiuj
delete: Usuń
+ deselect: Odznacz wszystkie
none: Żaden
order_by: Uporządkuj według
save_changes: Zapisz zmiany
@@ -1275,23 +1393,10 @@ pl:
copy_account_note_text: 'Ten użytkownik przeniósł się z konta %{acct}, oto Twoje poprzednie notatki o nim:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} wysłał raport"
sign_up:
subject: "%{name} zarejestrował(-a) się"
- digest:
- action: Wyświetl wszystkie powiadomienia
- body: Oto krótkie podsumowanie wiadomości, które ominęły Cię od Twojej ostatniej wizyty (%{since})
- mention: "%{name} wspomniał o Tobie w:"
- new_followers_summary:
- few: "(%{count}) nowe osoby śledzą Cię!"
- many: "(%{count}) nowych osób Cię śledzi! Wspaniale!"
- one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje!
- other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale!
- subject:
- few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘"
- many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘"
- one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘"
- other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘"
- title: W trakcie Twojej nieobecności…
favourite:
body: 'Twój wpis został polubiony przez %{name}:'
subject: "%{name} lubi Twój wpis"
@@ -1665,7 +1770,7 @@ pl:
Ten dokument jest CC-BY-SA. Data ostatniej aktualizacji: 26 maja 2022.
Oryginalnie zaadaptowany z Discourse privacy policy.
- title: Zasady korzystania i polityka prywatności %{instance}
+ title: Polityka prywatności %{instance}
themes:
contrast: Mastodon (Wysoki kontrast)
default: Mastodon (Ciemny)
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 7661df9a0d..b6da1a3ff1 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -28,7 +28,6 @@ pt-BR:
learn_more: Saiba mais
logged_in_as_html: Você está atualmente logado como %{username}.
logout_before_registering: Já está logado.
- 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
@@ -38,7 +37,7 @@ pt-BR:
one: toot
other: toots
status_count_before: Autores de
- terms: Termos de serviço
+ tagline: Rede social descentralizada
unavailable_content: Conteúdo indisponível
unavailable_content_description:
domain: Instância
@@ -82,10 +81,8 @@ pt-BR:
posts_tab_heading: Toots
posts_with_replies: Toots e respostas
roles:
- admin: Admin
bot: Robô
group: Grupo
- moderator: Moderador
unavailable: Perfil indisponível
unfollow: Deixar de seguir
admin:
@@ -104,12 +101,17 @@ pt-BR:
avatar: Imagem de perfil
by_domain: Domínio
change_email:
- changed_msg: E-mail da conta alterado com sucesso!
+ changed_msg: E-mail alterado com sucesso!
current_email: E-mail atual
label: Alterar e-mail
new_email: Novo e-mail
submit: Alterar e-mail
title: Alterar e-mail para %{username}
+ change_role:
+ changed_msg: Função alterada com sucesso!
+ label: Alterar função
+ no_role: Nenhuma função
+ title: Alterar função para %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmando
@@ -153,6 +155,7 @@ pt-BR:
active: Ativo
all: Todos
pending: Pendente
+ silenced: Limitado
suspended: Banidos
title: Moderação
moderation_notes: Notas de moderação
@@ -160,6 +163,7 @@ pt-BR:
most_recent_ip: IP mais recente
no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada
no_limits_imposed: Nenhum limite imposto
+ no_role_assigned: Nenhuma função atribuída
not_subscribed: Não inscrito
pending: Revisão pendente
perform_full_suspension: Banir
@@ -186,12 +190,7 @@ pt-BR:
reset: Redefinir
reset_password: Redefinir senha
resubscribe: Reinscrever-se
- role: Permissões
- roles:
- admin: Administrador
- moderator: Moderador
- staff: Equipe
- user: Usuário
+ role: Função
search: Pesquisar
search_same_email_domain: Outros usuários com o mesmo domínio de e-mail
search_same_ip: Outros usuários com o mesmo IP
@@ -234,6 +233,7 @@ pt-BR:
approve_user: Aprovar Usuário
assigned_to_self_report: Adicionar relatório
change_email_user: Editar e-mail do usuário
+ change_role_user: Alteração de Função do Usuário
confirm_user: Confirmar Usuário
create_account_warning: Criar Aviso
create_announcement: Criar Anúncio
@@ -243,6 +243,7 @@ pt-BR:
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
+ create_user_role: Criar Função
demote_user: Rebaixar usuário
destroy_announcement: Excluir anúncio
destroy_custom_emoji: Excluir emoji personalizado
@@ -253,6 +254,7 @@ pt-BR:
destroy_ip_block: Excluir regra de IP
destroy_status: Excluir Status
destroy_unavailable_domain: Deletar domínio indisponível
+ destroy_user_role: Destruir Função
disable_2fa_user: Desativar autenticação de dois fatores
disable_custom_emoji: Desativar Emoji Personalizado
disable_sign_in_token_auth_user: Desativar autenticação via token por email para Usuário
@@ -280,11 +282,13 @@ pt-BR:
update_custom_emoji: Editar Emoji Personalizado
update_domain_block: Atualizar bloqueio de domínio
update_status: Editar Status
+ update_user_role: Atualizar função
actions:
approve_appeal_html: "%{name} aprovou o recurso de decisão de moderação de %{target}"
approve_user_html: "%{name} aprovado inscrição de %{target}"
assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si"
change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}"
+ change_role_user_html: "%{name} alterou a função de %{target}"
confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}"
create_account_warning_html: "%{name} enviou um aviso para %{target}"
create_announcement_html: "%{name} criou o novo anúncio %{target}"
@@ -294,9 +298,9 @@ pt-BR:
create_email_domain_block_html: "%{name} bloqueou do 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}"
+ create_user_role_html: "%{name} criou a função %{target}"
demote_user_html: "%{name} rebaixou o usuário %{target}"
destroy_announcement_html: "%{name} excluiu o anúncio %{target}"
- destroy_custom_emoji_html: "%{name} excluiu emoji %{target}"
destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}"
destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}"
destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca"
@@ -304,6 +308,7 @@ pt-BR:
destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}"
destroy_status_html: "%{name} excluiu post de %{target}"
destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}"
+ destroy_user_role_html: "%{name} excluiu a função %{target}"
disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}"
disable_custom_emoji_html: "%{name} desativou o emoji %{target}"
disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por email para %{target}"
@@ -331,7 +336,7 @@ pt-BR:
update_custom_emoji_html: "%{name} atualizou o emoji %{target}"
update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}"
update_status_html: "%{name} atualizou a publicação de %{target}"
- deleted_status: "(status excluído)"
+ update_user_role_html: "%{name} alterou a função %{target}"
empty: Nenhum registro encontrado.
filter_by_action: Filtrar por ação
filter_by_user: Filtrar por usuário
@@ -643,6 +648,54 @@ pt-BR:
unresolved: Não resolvido
updated_at: Atualizado
view_profile: Ver perfil
+ roles:
+ add_new: Adicionar função
+ assigned_users:
+ one: "%{count} usuário"
+ other: "%{count} usuários"
+ categories:
+ administration: Administração
+ invites: Convites
+ moderation: Moderação
+ special: Especial
+ delete: Excluir
+ description_html: Com as funções de usuário, você pode personalizar quais funções e áreas do Mastodon seus usuários podem acessar.
+ edit: Editar função de '%{name}'
+ everyone: Permissões padrão
+ everyone_full_description_html: Esta é a função base que afeta todos os usuários, mesmo aqueles sem uma função atribuída. Todas as outras funções dela herdam as suas permissões.
+ privileges:
+ administrator: Administrador
+ administrator_description: Usuários com essa permissão irão ignorar todas as permissões
+ invite_users: Convidar Usuários
+ invite_users_description: Permite que os usuários convidem novas pessoas para o servidor
+ manage_announcements: Gerenciar Avisos
+ manage_announcements_description: Permite aos usuários gerenciar anúncios no servidor
+ manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP
+ manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor
+ manage_federation: Gerenciar Federação
+ manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade
+ manage_invites: Gerenciar convites
+ manage_invites_description: Permite que os usuários naveguem e desativem os links de convites
+ manage_reports: Gerenciar relatórios
+ manage_roles: Gerenciar Funções
+ manage_roles_description: Permitir que os usuários gerenciem e atribuam papéis abaixo deles
+ manage_rules: Gerenciar Regras
+ manage_rules_description: Permite que os usuários alterarem as regras do servidor
+ manage_settings: Gerenciar Configurações
+ manage_settings_description: Permite que os usuários alterem as configurações do site
+ manage_taxonomies: Gerenciar taxonomias
+ manage_taxonomies_description: Permite aos usuários rever o conteúdo em alta e atualizar as configurações de hashtag
+ manage_user_access: Gerenciar Acesso de Usuário
+ manage_user_access_description: Permite aos usuários desativar a autenticação de dois fatores de outros usuários, alterar seu endereço de e-mail e redefinir sua senha
+ manage_users: Gerenciar usuários
+ manage_users_description: Permite aos usuários ver os detalhes de outros usuários e executar ações de moderação contra eles
+ manage_webhooks: Gerenciar Webhooks
+ manage_webhooks_description: Permite aos usuários configurar webhooks para eventos administrativos
+ view_audit_log: Ver o registro de auditoria
+ view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor
+ view_dashboard: Ver painel
+ view_dashboard_description: Permite que os usuários acessem o painel e várias métricas
+ title: Funções
rules:
add_new: Adicionar regra
delete: Deletar
@@ -695,9 +748,6 @@ pt-BR:
deletion:
desc_html: Permitir que qualquer um exclua a própria conta
title: Exclusão aberta de contas
- min_invite_role:
- disabled: Ninguém
- title: Permitir convites de
require_invite_text:
desc_html: Quando o cadastro de novas contas exigir aprovação manual, tornar obrigatório, ao invés de opcional, o texto de solicitação de convite em "Por que você deseja criar uma conta aqui?"
title: Exigir que novos usuários preencham um texto de solicitação de convite
@@ -710,9 +760,6 @@ pt-BR:
show_known_fediverse_at_about_page:
desc_html: Quando ativado, mostra toots globais na prévia da linha, se não, mostra somente toots locais
title: Mostrar toots globais na prévia da linha
- show_staff_badge:
- desc_html: Mostrar uma insígnia de Equipe na página de usuário
- title: Mostrar insígnia de equipe
site_description:
desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial <a>
e <em>
.
title: Descrição da instância
@@ -722,9 +769,6 @@ pt-BR:
site_short_description:
desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que é o Mastodon e o que torna esta instância especial num único parágrafo. Se deixada em branco, é substituído pela descrição da instância.
title: Descrição curta da instância
- site_terms:
- 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
thumbnail:
desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px
@@ -733,9 +777,6 @@ pt-BR:
desc_html: Mostra a linha do tempo pública na página inicial e permite acesso da API à mesma sem autenticação
title: Permitir acesso não autenticado à linha pública
title: Configurações do site
- trendable_by_default:
- desc_html: Afeta as hashtags que não foram reprovadas anteriormente
- title: Permitir que hashtags fiquem em alta sem revisão prévia
trends:
desc_html: Mostrar publicamente hashtags previamente revisadas que estão em alta
title: Hashtags em alta
@@ -746,6 +787,7 @@ pt-BR:
back_to_account: Voltar para página da conta
back_to_report: Voltar às denúncias
batch:
+ remove_from_report: Remover do relatório
report: Denunciar
deleted: Excluídos
media:
@@ -753,9 +795,16 @@ pt-BR:
no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado
title: Toots da conta
with_media: Com mídia
+ strikes:
+ appeal_approved: Apelado
+ appeal_pending: Recurso pendente
system_checks:
database_schema_check:
message_html: Existem migrações de banco de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado
+ elasticsearch_running_check:
+ message_html: Não foi possível conectar ao Elasticsearch. Por favor, verifique se está em execução, ou desabilite a pesquisa de texto completo
+ elasticsearch_version_check:
+ message_html: 'Versão de Elasticsearch incompatível: %{value}'
rules_check:
action: Gerenciar regras do servidor
message_html: Você não definiu nenhuma regra de servidor.
@@ -774,15 +823,18 @@ pt-BR:
disallow_provider: Anular editor
title: Em alta no momento
usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem
+ only_allowed: Somente permitido
pending_review: Revisão pendente
preview_card_providers:
allowed: Links deste editor podem tender
+ description_html: Estes são domínios a partir dos quais links são comumente compartilhados em seu servidor. Links não tenderão publicamente a menos que o domínio do link seja aprovado. Sua aprovação (ou rejeição) estende-se aos subdomínios.
rejected: Links deste editor não vão tender
title: Editor
rejected: Rejeitado
statuses:
allow: Permitir postagem
allow_account: Permitir autor
+ description_html: Estes são posts que seu servidor sabe que estão sendo muito compartilhados e favorecidos no momento. Isso pode ajudar seus usuários, novos e retornantes, a encontrar mais pessoas para seguir. Nenhum post é exibido publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar postagens individuais.
title: Publicações em alta
tags:
current_score: Pontuação atual %{score}
@@ -808,6 +860,14 @@ pt-BR:
edit_preset: Editar o aviso pré-definido
empty: Você ainda não definiu nenhuma predefinição de alerta.
title: Gerenciar os avisos pré-definidos
+ webhooks:
+ delete: Excluir
+ disable: Desabilitar
+ disabled: Desativado
+ enable: Habilitar
+ enabled: Ativo
+ events: Eventos
+ status: Status
admin_mailer:
new_appeal:
actions:
@@ -979,10 +1039,12 @@ pt-BR:
appealed_msg: Seu recurso foi enviado. Se ele for aprovado, você será notificado.
appeals:
submit: Enviar recurso
+ approve_appeal: Aprovar recurso
associated_report: Relatório associado
created_at: Datado
description_html: Estas são ações tomadas contra sua conta e avisos que foram enviados a você pela equipe de %{instance}.
recipient: Endereçado para
+ reject_appeal: Rejeitar recurso
status: 'Postagem #%{id}'
status_removed: Postagem já removida do sistema
title: "%{action} de %{date}"
@@ -1045,15 +1107,18 @@ pt-BR:
public: Linhas públicas
thread: Conversas
edit:
+ add_keyword: Adicionar palavra-chave
+ keywords: Palavras-chave
+ statuses: Postagens individuais
title: Editar filtro
errors:
invalid_context: Contexto inválido ou nenhum contexto informado
- invalid_irreversible: O filtro irreversível só funciona com os contextos página inicial e notificações
index:
delete: Remover
empty: Sem filtros.
title: Filtros
new:
+ save: Salvar novo filtro
title: Adicionar filtro
footer:
developers: Desenvolvedores
@@ -1172,19 +1237,10 @@ pt-BR:
copy_account_note_text: 'Este usuário saiu de %{acct}, aqui estão suas notas anteriores sobre ele:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} enviou uma denúncia"
sign_up:
subject: "%{name} se inscreveu"
- digest:
- action: Ver todas as notificações
- body: Aqui está um breve resumo das mensagens que você perdeu desde o seu último acesso em %{since}
- mention: "%{name} te mencionou em:"
- new_followers_summary:
- one: Você tem um novo seguidor! Uia!
- other: Você tem %{count} novos seguidores! AÊÊÊ!
- subject:
- one: "Uma nova notificação desde o seu último acesso 🐘"
- other: "%{count} novas notificações desde o seu último acesso 🐘"
- title: Enquanto você estava ausente...
favourite:
body: "%{name} favoritou seu toot:"
subject: "%{name} favoritou seu toot"
@@ -1297,6 +1353,8 @@ pt-BR:
reports:
errors:
invalid_rules: não faz referência a regras válidas
+ rss:
+ content_warning: 'Aviso de conteúdo:'
scheduled_statuses:
over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia
over_total_limit: Você excedeu o limite de %{limit} toots agendados
@@ -1457,8 +1515,6 @@ pt-BR:
sensitive_content: Conteúdo sensível
tags:
does_not_match_previous_name: não corresponde ao nome anterior
- terms:
- title: Termos de Serviço e Política de Privacidade de %{instance}
themes:
contrast: Mastodon (Alto contraste)
default: Mastodon (Noturno)
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 9607762bbd..1493e3be2c 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -28,7 +28,7 @@ pt-PT:
learn_more: Saber mais
logged_in_as_html: Está de momento ligado como %{username}.
logout_before_registering: Já tem sessão iniciada.
- privacy_policy: Política de privacidade
+ 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
@@ -39,7 +39,6 @@ pt-PT:
other: publicações
status_count_before: Que fizeram
tagline: Rede social descentralizada
- terms: Termos de serviço
unavailable_content: Conteúdo indisponível
unavailable_content_description:
domain: Instância
@@ -83,10 +82,8 @@ pt-PT:
posts_tab_heading: Publicações
posts_with_replies: Posts e Respostas
roles:
- admin: Administrador(a)
bot: Robô
group: Grupo
- moderator: Moderador
unavailable: Perfil indisponível
unfollow: Deixar de seguir
admin:
@@ -105,12 +102,17 @@ pt-PT:
avatar: Imagem de Perfil
by_domain: Domínio
change_email:
- changed_msg: E-mail da conta alterado com sucesso!
+ changed_msg: E-mail alterado com sucesso!
current_email: E-mail atual
label: Alterar e-mail
new_email: Novo e-mail
submit: Alterar e-mail
title: Alterar e-mail para %{username}
+ change_role:
+ changed_msg: Função alterada com sucesso!
+ label: Alterar função
+ no_role: Nenhuma função
+ title: Alterar a função de %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: A confirmar
@@ -154,6 +156,7 @@ pt-PT:
active: Activo
all: Todos
pending: Pendente
+ silenced: Limitadas
suspended: Supensos
title: Moderação
moderation_notes: Notas de moderação
@@ -161,6 +164,7 @@ pt-PT:
most_recent_ip: IP mais recente
no_account_selected: Nenhuma conta foi alterada porque nenhuma foi selecionada
no_limits_imposed: Sem limites impostos
+ no_role_assigned: Nenhuma função atribuída
not_subscribed: Não inscrito
pending: Pendente de revisão
perform_full_suspension: Fazer suspensão completa
@@ -187,12 +191,7 @@ pt-PT:
reset: Restaurar
reset_password: Reset palavra-passe
resubscribe: Reinscrever
- role: Permissões
- roles:
- admin: Administrador(a)
- moderator: Moderador
- staff: Equipa
- user: Utilizador
+ role: Função
search: Pesquisar
search_same_email_domain: Outros utilizadores com o mesmo domínio de e-mail
search_same_ip: Outros utilizadores com o mesmo IP
@@ -235,17 +234,21 @@ pt-PT:
approve_user: Aprovar Utilizador
assigned_to_self_report: Atribuir Denúncia
change_email_user: Alterar E-mail do Utilizador
+ change_role_user: Alterar Função do Utilizador
confirm_user: Confirmar Utilizador
create_account_warning: Criar Aviso
create_announcement: Criar Anúncio
+ create_canonical_email_block: Criar Bloqueio de E-mail
create_custom_emoji: Criar Emoji Personalizado
create_domain_allow: Criar Permissão de Domínio
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
+ create_user_role: Criar Função
demote_user: Despromover Utilizador
destroy_announcement: Eliminar Anúncio
+ destroy_canonical_email_block: Eliminar Bloqueio de E-mail
destroy_custom_emoji: Eliminar Emoji Personalizado
destroy_domain_allow: Eliminar Permissão de Domínio
destroy_domain_block: Eliminar Bloqueio de Domínio
@@ -254,6 +257,7 @@ pt-PT:
destroy_ip_block: Eliminar regra de IP
destroy_status: Eliminar Publicação
destroy_unavailable_domain: Eliminar Domínio Indisponível
+ destroy_user_role: Eliminar Função
disable_2fa_user: Desativar 2FA
disable_custom_emoji: Desativar Emoji Personalizado
disable_sign_in_token_auth_user: Desativar token de autenticação por e-mail para Utilizador
@@ -280,24 +284,30 @@ pt-PT:
update_announcement: Atualizar Anúncio
update_custom_emoji: Atualizar Emoji Personalizado
update_domain_block: Atualizar Bloqueio de Domínio
+ update_ip_block: Atualizar regra de IP
update_status: Atualizar Estado
+ update_user_role: Atualizar Função
actions:
approve_appeal_html: "%{name} aprovou recurso da decisão de moderação de %{target}"
approve_user_html: "%{name} aprovou a inscrição de %{target}"
assigned_to_self_report_html: "%{name} atribuiu a denúncia %{target} a si próprio"
change_email_user_html: "%{name} alterou o endereço de e-mail do utilizador %{target}"
+ change_role_user_html: "%{name} alterou a função de %{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_canonical_email_block_html: "%{name} bloqueou o e-mail com a hash %{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}"
+ create_user_role_html: "%{name} criou a função %{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_canonical_email_block_html: "%{name} desbloqueou o e-mail com a hash %{target}"
+ destroy_custom_emoji_html: "%{name} eliminou 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}"
@@ -305,6 +315,7 @@ pt-PT:
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}"
+ destroy_user_role_html: "%{name} eliminou a função %{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_sign_in_token_auth_user_html: "%{name} desativou token de autenticação por e-mail para %{target}"
@@ -331,8 +342,9 @@ pt-PT:
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_ip_block_html: "%{name} alterou regra para IP %{target}"
update_status_html: "%{name} atualizou o estado de %{target}"
- deleted_status: "(publicação eliminada)"
+ update_user_role_html: "%{name} alterou a função %{target}"
empty: Não foram encontrados registos.
filter_by_action: Filtrar por ação
filter_by_user: Filtrar por utilizador
@@ -649,6 +661,67 @@ pt-PT:
unresolved: Por resolver
updated_at: Atualizado
view_profile: Ver perfil
+ roles:
+ add_new: Adicionar função
+ assigned_users:
+ one: "%{count} utilizador"
+ other: "%{count} utilizadores"
+ categories:
+ administration: Administração
+ devops: DevOps
+ invites: Convites
+ moderation: Moderação
+ special: Especiais
+ delete: Eliminar
+ description_html: Com as funções de utilizador, pode personalizar quais funções e áreas do Mastodon os seus utilizadores podem aceder.
+ edit: Editar função '%{name}'
+ everyone: Permissões padrão
+ everyone_full_description_html: Esta é a função base que afeta todos os utilizadores, mesmo aqueles sem uma função atribuída. Todas as outras funções herdam as permissões desta.
+ permissions_count:
+ one: "%{count} permissão"
+ other: "%{count} permissões"
+ privileges:
+ administrator: Administrador
+ administrator_description: Utilizadores com esta permissão irão contornar todas as permissões
+ delete_user_data: Eliminar Dados de Utilizador
+ delete_user_data_description: Permite que os utilizadores eliminem os dados de outros utilizadores sem atraso
+ invite_users: Convidar Utilizadores
+ invite_users_description: Permite aos utilizadores convidar pessoas novas para o servidor
+ manage_announcements: Gerir Anúncios
+ manage_announcements_description: Permite aos utilizadores gerir anúncios no servidor
+ manage_appeals: Gerir Recursos
+ manage_appeals_description: Permite aos utilizadores rever recursos de moderação
+ manage_blocks: Gerir Bloqueios
+ manage_blocks_description: Permite aos utilizadores bloquear provedores de e-mail e endereços IP
+ manage_custom_emojis: Gerir Emojis Personalizados
+ manage_custom_emojis_description: Permite aos utilizadores gerir os emojis personalizados do servidor
+ manage_federation: Gerir Federação
+ manage_federation_description: Permite aos utilizadores bloquear ou permitir federação com outros domínios e controlar a entregabilidade
+ manage_invites: Gerir Convites
+ manage_invites_description: Permite aos utilizadores pesquisar e desativar links de convite
+ manage_reports: Gerir Relatórios
+ manage_reports_description: Permite aos utilizadores rever relatórios e executar ações de moderação contra eles
+ manage_roles: Gerir Funções
+ manage_roles_description: Permite aos usuários gerir e atribuir funções abaixo das deles
+ manage_rules: Gerir Regras
+ manage_rules_description: Permite aos utilizadores alterar as regras do servidor
+ manage_settings: Gerir Configurações
+ manage_settings_description: Permite aos utilizadores alterar as configurações do site
+ manage_taxonomies: Gerir Taxonomias
+ manage_taxonomies_description: Permite aos utilizadores rever o conteúdo em tendência e atualizar as configurações de hashtag
+ manage_user_access: Gerir Acesso de Utilizador
+ manage_user_access_description: Permite aos utilizadores desativar a autenticação em duas etapas de outros utilizadores, alterar o seu endereço de e-mail e redefinir a sua palavra-passe
+ manage_users: Gerir Utilizadores
+ manage_users_description: Permite aos utilizadores ver os detalhes de outros utilizadores e executar ações de moderação contra eles
+ manage_webhooks: Gerir Webhooks
+ manage_webhooks_description: Permite aos utilizadores configurar webhooks para eventos administrativos
+ view_audit_log: Ver Registo de Auditoria
+ view_audit_log_description: Permite aos utilizadores ver um histórico de ações administrativas no servidor
+ view_dashboard: Ver Painel de Controlo
+ view_dashboard_description: Permite aos utilizadores aceder ao painel de controlo e várias métricas
+ view_devops: DevOps
+ view_devops_description: Permite aos utilizadores aceder aos painéis de controlo do Sidekiq e pgHero
+ title: Funções
rules:
add_new: Adicionar regra
delete: Eliminar
@@ -701,9 +774,6 @@ pt-PT:
deletion:
desc_html: Permitir a qualquer utilizador eliminar a sua conta
title: Permitir eliminar contas
- min_invite_role:
- disabled: Ninguém
- title: Permitir convites de
require_invite_text:
desc_html: Quando os registos exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite obrigatório, em vez de opcional
title: Exigir que novos utilizadores preencham um texto de solicitação de convite
@@ -716,9 +786,6 @@ pt-PT:
show_known_fediverse_at_about_page:
desc_html: Quando comutado, irá mostrar a previsualização de publicações de todo o fediverse conhecido. De outro modo só mostrará publicações locais.
title: Mostrar o fediverse conhecido na previsualização da cronologia
- show_staff_badge:
- desc_html: Mostrar um crachá da equipa na página de utilizador
- title: Mostrar crachá da equipa
site_description:
desc_html: Mostrar como parágrafo na página inicial e usado como meta tag.Podes usar tags HTML, em particular <a>
e <em>
.
title: Descrição do site
@@ -729,8 +796,8 @@ pt-PT:
desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância.
title: Breve descrição da instância
site_terms:
- 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
+ desc_html: Pode escrever a sua própria política de privacidade. Pode utilizar código HTML
+ title: Política de privacidade personalizada
site_title: Título do site
thumbnail:
desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px
@@ -740,8 +807,8 @@ pt-PT:
title: Visualização da linha temporal
title: Configurações do site
trendable_by_default:
- desc_html: Afecta as hashtags que ainda não tenham sido proibidas
- title: Permitir hashtags em tendência sem revisão prévia
+ desc_html: Conteúdo específico em tendência pode mesmo assim ser explicitamente rejeitado
+ title: Permitir tendências sem revisão prévia
trends:
desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente
title: Hashtags em destaque
@@ -1124,16 +1191,40 @@ pt-PT:
public: Cronologias públicas
thread: Conversações
edit:
+ add_keyword: Adicionar palavra-chave
+ keywords: Palavras-chave
+ statuses: Publicações individuais
+ statuses_hint_html: Este filtro aplica-se a publicações individuais selecionadas independentemente de estas corresponderem às palavras-chave abaixo. Reveja ou remova publicações do filtro.
title: Editar filtros
errors:
+ deprecated_api_multiple_keywords: Estes parâmetros não podem ser alterados a partir deste aplicativo porque se aplicam a mais de um filtro de palavra-chave. Use um aplicativo mais recente ou a interface web.
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:
+ contexts: Filtros em %{contexts}
delete: Eliminar
empty: Não tem filtros.
+ expires_in: Expira em %{distance}
+ expires_on: Expira em %{date}
+ keywords:
+ one: "%{count} palavra-chave"
+ other: "%{count} palavras-chaves"
+ statuses:
+ one: "%{count} publicação"
+ other: "%{count} publicações"
+ statuses_long:
+ one: "%{count} publicação individual ocultada"
+ other: "%{count} publicações individuais ocultadas"
title: Filtros
new:
+ save: Salvar novo filtro
title: Adicionar novo filtro
+ statuses:
+ back_to_filter: Voltar ao filtro
+ batch:
+ remove: Remover do filtro
+ index:
+ hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web.
+ title: Publicações filtradas
footer:
developers: Responsáveis pelo desenvolvimento
more: Mais…
@@ -1141,12 +1232,22 @@ pt-PT:
trending_now: Tendências atuais
generic:
all: Tudo
+ all_items_on_page_selected_html:
+ one: "%{count} item nesta página está selecionado."
+ other: Todo os %{count} items nesta página estão selecionados.
+ all_matching_items_selected_html:
+ one: "%{count} item que corresponde à sua pesquisa está selecionado."
+ other: Todos os %{count} items que correspondem à sua pesquisa estão selecionados.
changes_saved_msg: Alterações guardadas!
copy: Copiar
delete: Eliminar
+ deselect: Desmarcar todos
none: Nenhum
order_by: Ordenar por
save_changes: Guardar alterações
+ select_all_matching_items:
+ one: Selecione %{count} item que corresponde à sua pesquisa.
+ other: Selecione todos os %{count} items que correspondem à sua pesquisa.
today: hoje
validation_errors:
one: Algo não está correcto. Por favor vê o erro abaixo
@@ -1251,19 +1352,10 @@ pt-PT:
copy_account_note_text: 'Este utilizador migrou de %{acct}, aqui estão as suas notas anteriores sobre ele:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} submeteu uma denúncia"
sign_up:
subject: "%{name} inscreveu-se"
- digest:
- action: Ver todas as notificações
- body: Aqui tens um breve resumo do que perdeste desde o último acesso a %{since}
- mention: "%{name} mencionou-te em:"
- new_followers_summary:
- one: Tens um novo seguidor! Boa!
- other: Tens %{count} novos seguidores! Fantástico!
- subject:
- one: "1 nova notificação desde o seu último acesso 🐘"
- other: "%{count} novas notificações desde o seu último acesso 🐘"
- title: Enquanto estiveste ausente…
favourite:
body: 'O teu post foi adicionado aos favoritos por %{name}:'
subject: "%{name} adicionou o teu post aos favoritos"
@@ -1545,7 +1637,88 @@ pt-PT:
tags:
does_not_match_previous_name: não coincide com o nome anterior
terms:
- title: "%{instance} Termos de Serviço e Política de Privacidade"
+ body_html: |
+ Política de privacidade
+ Que informação nós recolhemos?
+
+
+ - Informação básica da conta: Ao registar-se neste servidor, pode ser-lhe pedido que indique um nome de utilizador, um endereço de e-mail e uma palavra-chave. Pode ainda incluir informações adicionais no seu perfil, tais como um nome a exibir e biografia, e carregar uma imagem de perfil e imagem de cabeçalho. O nome de utilizador, nome a exibir, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.
+ - Publicações, seguimento e outra informação pública: A lista de pessoas que segue é pública, o mesmo é verdade para os seus seguidores. Quando publica uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos de media, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando destaca uma publicação no seu perfil, isso é também informação disponível publicamente. As suas publicações são enviadas aos seus seguidores, em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando elimina publicações, isso também é enviado para os teus seguidores. A ação de partilhar ou adicionar uma publicação aos favoritos é sempre pública.
+ - Publicações diretas e exclusivas para seguidores: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para os utilizadores nelas mencionados. As publicações diretas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que são enviadas para diferentes servidores onde são guardadas cópias. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objetivo. Por isso, deve rever os servidores a que os seus seguidores pertencem. Pode ativar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. Por favor, tenha em mente que os gestores do seu servidor e qualquer servidor que receba a publicação pode lê-la e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. Não partilhe qualquer informação sensível no Mastodon.
+ - IPs e outros metadados: Quando inicia sessão, nós guardamos o endereço de IP a partir do qual inicou sessão, tal como o nome do seu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.
+
+
+
+
+ Para que utilizamos a sua informação?
+
+ Qualquer informação que recolhemos sobre sí pode ser utilizada dos seguintes modos:
+
+
+ - Para prover a funcionalidade central do Mastodon. Só pode interagir com o conteúdo de outras pessoas e publicar o seu próprio conteúdo depois de ter iniciado sessão. Por exemplo, pode seguir outras pessoas para veres as suas publicações na sua cronologia inicial personalizada.
+ - Para ajudar na moderação da comunidade, por exemplo, para comparar o seu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.
+ - O endereço de e-mail que fornece pode ser utilizado para lhe enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o seu conteúdo ou a enviar-lhe mensagens, para responder a inquéritos e/ou outros pedidos ou questões.
+
+
+
+
+ Como protegemos a sua informação?
+
+ Implementamos uma variedade de medidas para garantir a segurança da sua informação pessoal quando introduz, submete ou acede à mesma. Entre outras coisas, a sua sessão de navegação, tal como o tráfego entre as tuas aplicações e a API, estão seguras por SSL e a sua palavra-passe é codificada utilizando um forte algoritmo de sentido único. Pode activar a autenticação em duas etapas para aumentar ainda mais a segurança do acesso à sua conta.
+
+
+
+ >Qual é a nossa política de retenção de dados?
+
+ Faremos o nosso melhor esforço para:
+
+
+ - Reter registos do servidor contendo o endereço de IP de todos os pedidos feitos a este servidor, considerando que estes registos não sejam guardados por mais de 90 dias.
+ - Reter os endereços de IP associados aos utilizadores registados durante um período que não ultrapasse os 12 meses.
+
+
+ Pode requer e descarregar um ficheiro com o seu conteúdo, incluindo as suas publicações, os ficheiros multimédia, a imagem de perfil e a imagem de cabeçalho.
+
+ Pode eliminar a sua conta de modo irreversível a qualquer momento.
+
+
+
+ Utilizamos cookies?
+
+ Sim. Cookies são pequenos ficheiros que um site ou o seu fornecedor de serviço transfere para o disco rígido do seu computador através do seu navegador (se você o permitir). Esses cookies possibilitam ao site reconhecer o seu navegador e, se você tiver uma conta registada, associá-lo a ela.
+
+ Nós usamos os cookies para compreender e guardar as suas preferências para visitas futuras.
+
+
+
+ Divulgamos alguma informação para entidades externas?
+
+ Nós não vendemos, trocamos ou transferimos de qualquer modo a sua informação pessoal que seja identificável para qualquer entidade externa. Isto não inclui entindades terceiras de confiança que nos ajudam a manter o nosso site, conduzir o nosso negócio ou prestar-lhe este serviço, desde que essas entendidades concordem em manter essa informação confidencial. Poderemos também revelar a sua informação quando acreditarmos que isso é o apropriado para cumprir a lei, forçar a aplicação dos nossos termos de serviço ou proteger os direitos, propriedade e segurança, nossos e de outrem.
+
+ O seu conteúdo público pode ser descarregado por outros servidores na rede. As suas publicações públicas e exclusivas para os seus seguidores são enviadas para os servidores onde os seus seguidores residem e as mensagens diretas são entregues aos servidores dos seus destinatários, no caso desses seguidores ou destinatários residirem num servidor diferente deste.
+
+ Quando autoriza uma aplicação a utilizar a sua conta, dependendo da abrangência das permissões que aprova, ela pode ter acesso à informação pública do seu perfil, à lista de quem segue, aos seus seguidores, às suas listas, a todas as suas publicações e aos seus favoritos. As aplicações nunca terão acesso ao seu endereço de e-mail ou à sua palavra-passe.
+
+
+
+ Utilização do site por crianças
+
+ Se este servidor estiver na UE ou no EEE: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 16 anos de idade. Se você tem menos de 16 anos de idade, em concordância com os requisitos da GDPR (General Data Protection Regulation) não utilize este site.
+
+ Se este servidor estiver nos EUA: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 13 anos de idade. Se você tem menos de 13 anos de idade, em concordância com os requisitos da COPPA (Children's Online Privacy Protection Act) não utilize este site.
+
+ Os requisitos legais poderão ser diferentes se este servidor estiver noutra jurisdição.
+
+
+
+ Alterações à nossa Política de Privacidade
+
+ Se decidirmos alterar a nossa política de privacidade, iremos publicar essas alterações nesta página.
+
+ Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 26 de Maio 2022.
+
+ Originalmente adaptado de Discourse privacy policy.
+ title: Política de Privacidade de %{instance}
themes:
contrast: Mastodon (Elevado contraste)
default: Mastodon
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 3203e9178b..8f7d42fd40 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -25,7 +25,6 @@ ro:
Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual.
Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu.
learn_more: Află mai multe
- privacy_policy: Politica de confidenţialitate
rules: Regulile serverului
rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:'
see_whats_happening: Vezi ce se întâmplă
@@ -36,7 +35,6 @@ ro:
one: stare
other: de stări
status_count_before: Care au postat
- terms: Termeni de serviciu
unavailable_content: Conținut indisponibil
unavailable_content_description:
domain: Server
@@ -83,10 +81,8 @@ ro:
posts_tab_heading: Postări
posts_with_replies: Postări și răspunsuri
roles:
- admin: Admin
bot: Robot
group: Grup
- moderator: Moderator
unavailable: Profil indisponibil
unfollow: Nu mai urmării
admin:
@@ -105,7 +101,6 @@ ro:
avatar: Poză de profil
by_domain: Domeniu
change_email:
- changed_msg: E-mail de cont schimbat cu succes!
current_email: E-mailul curent
label: Schimbă adresa de email
new_email: E-mail nou
@@ -183,12 +178,6 @@ ro:
reset: Resetează
reset_password: Resetează parola
resubscribe: Resubscrie-te
- role: Permisiuni
- roles:
- admin: Administrator
- moderator: Moderator
- staff: Personal
- user: Utilizator
search: Caută
search_same_email_domain: Alţi utilizatori cu acelaşi domeniu de e-mail
search_same_ip: Alţi utilizatori cu acelaşi IP
@@ -417,7 +406,6 @@ ro:
title: Editează filtru
errors:
invalid_context: Lipsa conținut sau acesta este invalid
- invalid_irreversible: Filtrarea ireversibilă funcționează dor cu context din fluxul Acasă și notificări
index:
delete: Șterge
title: Filtre
@@ -602,8 +590,6 @@ ro:
sensitive_content: Conținut sensibil
tags:
does_not_match_previous_name: nu se potrivește cu numele anterior
- terms:
- title: "%{instance} Termeni de utilizare și Politica de confidențialitate"
themes:
contrast: Mastodon (contrast mare)
default: Mastodon (Întunecat)
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 47f944129d..4d5c6dfe89 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -41,7 +41,6 @@ ru:
other: поста
status_count_before: И опубликовано
tagline: Децентрализованная социальная сеть
- terms: Условия использования
unavailable_content: Недоступный контент
unavailable_content_description:
domain: Сервер
@@ -91,10 +90,8 @@ ru:
posts_tab_heading: Посты
posts_with_replies: Посты с ответами
roles:
- admin: Администратор
bot: Бот
group: Группа
- moderator: Модератор
unavailable: Профиль недоступен
unfollow: Отписаться
admin:
@@ -113,12 +110,17 @@ ru:
avatar: Аватар
by_domain: Домен
change_email:
- changed_msg: E-mail учётной записи успешно изменён!
+ changed_msg: Адрес эл. почты успешно изменен!
current_email: Текущий e-mail
label: Сменить e-mail
new_email: Новый e-mail
submit: Сменить e-mail
title: Сменить e-mail для %{username}
+ change_role:
+ changed_msg: Роль успешно изменена!
+ label: Изменить роль
+ no_role: Нет роли
+ title: Изменить роль %{username}
confirm: Подтвердить
confirmed: Подтверждено
confirming: Подтверждение
@@ -162,6 +164,7 @@ ru:
active: Действующие
all: Все
pending: В ожидании
+ silenced: Ограниченные
suspended: Заблокированные
title: Модерация
moderation_notes: Заметки модератора
@@ -169,6 +172,7 @@ ru:
most_recent_ip: Последний IP
no_account_selected: Ничего не изменилось, так как ни одна учётная запись не была выделена
no_limits_imposed: Без ограничений
+ no_role_assigned: Роль не присвоена
not_subscribed: Не подписаны
pending: Ожидает рассмотрения
perform_full_suspension: Блокировка
@@ -197,12 +201,7 @@ ru:
reset: Сбросить
reset_password: Сбросить пароль
resubscribe: Переподписаться
- role: Разрешения
- roles:
- admin: Администратор
- moderator: Модератор
- staff: Персонал
- user: Пользователь
+ role: Роль
search: Поиск
search_same_email_domain: Другие пользователи с тем же доменом электронной почты
search_same_ip: Другие пользователи с таким же IP
@@ -245,17 +244,21 @@ ru:
approve_user: Утвердить
assigned_to_self_report: Присвоение жалоб
change_email_user: Изменение эл. почты пользователя
+ change_role_user: Изменить роль пользователя
confirm_user: Подтверждение пользователей
create_account_warning: Выдача предупреждения
create_announcement: Создание объявлений
+ create_canonical_email_block: Создать блокировку эл. почты
create_custom_emoji: Добавление эмодзи
create_domain_allow: Разрешение доменов
create_domain_block: Блокировка доменов
create_email_domain_block: Блокировка e-mail доменов
create_ip_block: Создание правил для IP-адресов
create_unavailable_domain: Добавление домена в список недоступных
+ create_user_role: Создать роль
demote_user: Разжалование пользователей
destroy_announcement: Удаление объявлений
+ destroy_canonical_email_block: Удалить блокировку эл. почты
destroy_custom_emoji: Удаление эмодзи
destroy_domain_allow: Отзыв разрешений для доменов
destroy_domain_block: Разблокировка доменов
@@ -264,6 +267,7 @@ ru:
destroy_ip_block: Удаление правил для IP-адресов
destroy_status: Удаление постов
destroy_unavailable_domain: Исключение доменов из списка недоступных
+ destroy_user_role: Удалить роль
disable_2fa_user: Отключение 2FA
disable_custom_emoji: Отключение эмодзи
disable_sign_in_token_auth_user: Отключение аутентификации по e-mail кодам у пользователей
@@ -290,21 +294,26 @@ ru:
update_announcement: Обновление объявлений
update_custom_emoji: Обновление эмодзи
update_domain_block: Изменение блокировки домена
+ update_ip_block: Обновить правило для IP-адреса
update_status: Изменение постов
+ update_user_role: Обновить роль
actions:
approve_appeal_html: "%{name} одобрил апелляцию на умеренное решение от %{target}"
approve_user_html: "%{name} утвердил(а) регистрацию %{target}"
assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}"
change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}"
+ change_role_user_html: "%{name} изменил(а) роль %{target}"
confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
create_account_warning_html: "%{name} выдал(а) предупреждение %{target}"
create_announcement_html: "%{name} создал(а) новое объявление %{target}"
+ create_canonical_email_block_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}"
+ create_user_role_html: "%{name} создал(а) роль %{target}"
demote_user_html: "%{name} разжаловал(а) пользователя %{target}"
destroy_announcement_html: "%{name} удалил(а) объявление %{target}"
destroy_custom_emoji_html: "%{name} удалил(а) эмодзи %{target}"
@@ -315,6 +324,7 @@ ru:
destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}"
destroy_status_html: "%{name} удалил(а) пост пользователя %{target}"
destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}"
+ destroy_user_role_html: "%{name} удалил(а) роль %{target}"
disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}"
disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}"
disable_sign_in_token_auth_user_html: "%{name} отключил(а) аутентификацию по e-mail кодам для %{target}"
@@ -342,7 +352,6 @@ ru:
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: Фильтр по пользователю
@@ -408,6 +417,11 @@ ru:
many: "%{count} ожидающих отчетов"
one: "%{count} ожидающий отчет"
other: "%{count} ожидающих отчетов"
+ pending_tags_html:
+ few: "%{count} ожидающих хэштега"
+ many: "%{count} ожидающих хэштегов"
+ one: "%{count} ожидающий хэштег"
+ other: "%{count} ожидающих хэштегов"
pending_users_html:
few: "%{count} ожидающих пользователя"
many: "%{count} ожидающих пользователей"
@@ -494,6 +508,11 @@ ru:
unsuppress: Восстановить рекомендацию
instances:
availability:
+ failures_recorded:
+ few: Попытки неудачны уже %{count} дня.
+ many: Попытки неудачны уже %{count} дней.
+ one: Попытки неудачны %{count} день.
+ other: Попытки неудачны уже %{count} дней.
no_failures_recorded: Сбоев в записи нет.
title: Доступность
warning: Последняя попытка подключения к этому серверу не удалась
@@ -506,6 +525,7 @@ ru:
comment: Внутренняя заметка
policies:
reject_media: Отклонить медиа
+ reject_reports: Отклонять жалобы
silence: Лимит
suspend: Приостановить
policy: Политика
@@ -650,6 +670,40 @@ ru:
unresolved: Нерешённые
updated_at: Обновлена
view_profile: Открыть профиль
+ roles:
+ add_new: Добавить роль
+ assigned_users:
+ few: "%{count} пользователя"
+ many: "%{count} пользователей"
+ one: "%{count} пользователь"
+ other: "%{count} пользователей"
+ categories:
+ administration: Администрация
+ devops: DevOps
+ invites: Приглашения
+ moderation: Модерация
+ special: Особые
+ delete: Удалить
+ description_html: С помощью ролей пользователей вы можете настроить, к каким функциям и областям Mastodon у ваших пользователей будет доступ.
+ edit: Изменить роль '%{name}' '
+ everyone: Разрешения по умолчанию
+ everyone_full_description_html: Это базовая роль, касающаяся всех пользователей, даже тех, кто не имеет назначенной роли. Все другие роли наследуют разрешения от нее.
+ permissions_count:
+ few: "%{count} разрешения"
+ many: "%{count} разрешений"
+ one: "%{count} разрешение"
+ other: "%{count} разрешений"
+ privileges:
+ administrator: Администратор
+ delete_user_data: Удалить пользовательские данные
+ delete_user_data_description: Позволяет пользователям удалять данные других пользователей без задержки
+ invite_users: Пригласить пользователей
+ invite_users_description: Позволяет пользователям приглашать новых людей на сервер
+ manage_announcements: Управление объявлениями
+ manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере
+ view_dashboard: Открыть панель управления
+ view_devops: DevOps
+ title: Роли
rules:
add_new: Добавить правило
delete: Удалить
@@ -702,9 +756,6 @@ ru:
deletion:
desc_html: Позволяет всем удалять собственные учётные записи
title: Разрешить удаление учётных записей
- min_invite_role:
- disabled: Никого
- title: Разрешать приглашения от
require_invite_text:
desc_html: Когда регистрация требует ручного подтверждения, сделать ответ на вопрос "Почему вы хотите присоединиться?" обязательным, а не опциональным
title: Обязать новых пользователей заполнять текст запроса на приглашение
@@ -717,9 +768,6 @@ ru:
show_known_fediverse_at_about_page:
desc_html: Если включено, показывает посты со всех известных узлов в предпросмотре ленты. В противном случае отображаются только локальные посты.
title: Показывать контент со всей федерации в публичной ленте неавторизованным пользователям
- show_staff_badge:
- desc_html: Показывать метку персонала на странице пользователя
- title: Показывать метку персонала
site_description:
desc_html: Отображается в качестве параграфа на титульной странице и используется в качестве мета-тега.
Можно использовать HTML-теги, в особенности <a>
и <em>
.
title: Описание сайта
@@ -730,8 +778,8 @@ ru:
desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию.
title: Краткое описание узла
site_terms:
- desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML
- title: Условия использования
+ desc_html: Вы можете написать собственную политику конфиденциальности. Вы можете использовать теги HTML
+ title: Собственная политика конфиденциальности
site_title: Название сайта
thumbnail:
desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px
@@ -740,9 +788,6 @@ ru:
desc_html: Показывать публичную ленту на приветственной странице
title: Предпросмотр ленты
title: Настройки сайта
- trendable_by_default:
- desc_html: Влияет на хэштеги, которые не были ранее запрещены
- title: Разрешить добавление хештегов в список актульных без предварительной проверки
trends:
desc_html: Публично отобразить проверенные хэштеги, актуальные на данный момент
title: Популярные хэштеги
@@ -816,6 +861,11 @@ ru:
allow_account: Разрешить автора
disallow: Запретить пост
disallow_account: Запретить автора
+ shared_by:
+ few: Поделились или добавили в избранное %{friendly_count} раза
+ many: Поделились или добавили в избранное %{friendly_count} раз
+ one: Поделились или добавили в избранное один раз
+ other: Поделились или добавили в избранное %{friendly_count} раз
title: Популярные посты
tags:
current_score: Текущий счет %{score}
@@ -893,6 +943,7 @@ ru:
new_trending_tags:
no_approved_tags: На данный момент популярные подтвержденные хэштеги отсутствуют.
title: Популярные хэштеги
+ subject: Новые тренды для проверки на %{instance}
aliases:
add_new: Создать псевдоним
created_msg: Новый псевдоним установлен. Теперь мы можете начать миграцию со старой учётной записи.
@@ -1094,7 +1145,7 @@ ru:
csv: CSV
domain_blocks: Доменные блокировки
lists: Списки
- mutes: Ваши игнорируемые
+ mutes: Ваши игнорируете
storage: Ваши файлы
featured_tags:
add_new: Добавить
@@ -1109,16 +1160,32 @@ ru:
public: Публичные ленты
thread: Диалоги
edit:
+ add_keyword: Добавить ключевое слово
+ keywords: Ключевые слова
+ statuses: Отдельные сообщения
title: Изменить фильтр
errors:
+ deprecated_api_multiple_keywords: Эти параметры нельзя изменить из этого приложения, так как применяются к более чем одному ключевому слову фильтра. Используйте более последнее приложение или веб-интерфейс.
invalid_context: Некорректный контекст или ничего
- invalid_irreversible: Необратимая фильтрация работает только с лентой уведомлений и домашней лентой
index:
+ contexts: Фильтры по %{contexts}
delete: Удалить
empty: У вас пока нет фильтров.
+ expires_in: Истекает через %{distance}
+ expires_on: Истекает %{date}
+ keywords:
+ few: "%{count} ключевых слова"
+ many: "%{count} ключевых слов"
+ one: "%{count} ключевое слово"
+ other: "%{count} ключевых слов"
title: Фильтры
new:
+ save: Сохранить новый фильтр
title: Добавить фильтр
+ statuses:
+ back_to_filter: Вернуться к фильтру
+ batch:
+ remove: Удалить из фильтра
footer:
developers: Разработчикам
more: Ещё…
@@ -1236,27 +1303,14 @@ ru:
title: Модерация
move_handler:
carry_blocks_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы заблокировали.
- carry_mutes_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы добавили в список игнорирования.
+ carry_mutes_over_text: Этот пользователь перешёл с учётной записи %{acct}, которую вы игнорируете.
copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} отправил жалобу"
sign_up:
subject: "%{name} зарегистрирован"
- digest:
- action: Просмотреть все уведомления
- body: Вот краткая сводка сообщений, которые вы пропустили с последнего захода %{since}
- mention: "%{name} упомянул(а) Вас в:"
- new_followers_summary:
- few: У вас появилось %{count} новых подписчика! Отлично!
- many: У вас появилось %{count} новых подписчиков! Отлично!
- one: Также, пока вас не было, у вас появился новый подписчик! Ура!
- other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично!
- subject:
- few: "%{count} новых уведомления с вашего последнего посещения 🐘"
- many: "%{count} новых уведомлений с вашего последнего посещения 🐘"
- one: "1 новое уведомление с вашего последнего посещения 🐘"
- other: "%{count} новых уведомлений с вашего последнего посещения 🐘"
- title: В ваше отсутствие…
favourite:
body: "%{name} добавил(а) ваш пост в избранное:"
subject: "%{name} добавил(а) ваш пост в избранное"
@@ -1510,7 +1564,7 @@ ru:
enabled_hint: Автоматически удаляет ваши посты после того, как они достигли определённого возрастного порога, за некоторыми исключениями ниже.
exceptions: Исключения
explanation: Из-за того, что удаление постов — это ресурсоёмкий процесс, оно производится медленно со временем, когда сервер менее всего загружен. По этой причине, посты могут удаляться не сразу, а спустя определённое время, по достижению возрастного порога.
- ignore_favs: Игнорировать отметки «избранного»
+ ignore_favs: Игнорировать избранное
ignore_reblogs: Игнорировать продвижения
interaction_exceptions: Исключения на основе взаимодействий
interaction_exceptions_explanation: 'Обратите внимание: нет никаких гарантий, что посты будут удалены, после того, как они единожды перешли порог по отметкам «избранного» или продвижений.'
@@ -1550,7 +1604,7 @@ ru:
tags:
does_not_match_previous_name: не совпадает с предыдущим именем
terms:
- title: Условия обслуживания и политика конфиденциальности %{instance}
+ title: Политика конфиденциальности %{instance}
themes:
contrast: Mastodon (высококонтрастная)
default: Mastodon (тёмная)
diff --git a/config/locales/sc.yml b/config/locales/sc.yml
index 4906541437..a031b27add 100644
--- a/config/locales/sc.yml
+++ b/config/locales/sc.yml
@@ -25,7 +25,6 @@ sc:
'
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
@@ -35,7 +34,6 @@ sc:
one: istadu
other: istados
status_count_before: Atributzione de
- terms: Cunditziones de su servìtziu
unavailable_content: Serbidores moderados
unavailable_content_description:
domain: Serbidore
@@ -79,10 +77,8 @@ sc:
posts_tab_heading: Tuts
posts_with_replies: Tuts e rispostas
roles:
- admin: Admin
bot: Bot
group: Grupu
- moderator: Moderatzione
unavailable: Su profilu no est a disponimentu
unfollow: Non sigas prus
admin:
@@ -101,7 +97,6 @@ sc:
avatar: Immàgine de profilu
by_domain: Domìniu
change_email:
- changed_msg: As cambiadu s'indiritzu eletrònicu.
current_email: Indiritzu eletrònicu atuale
label: Muda s'indiritzu eletrònicu
new_email: Indiritzu eletrònicu nou
@@ -176,12 +171,6 @@ sc:
reset: Reseta
reset_password: Reseta sa crae
resubscribe: Torra a sutascrìere
- role: Permissos
- roles:
- admin: Amministratzione
- moderator: Moderatzione
- staff: Personale
- user: Utente
search: Chirca
search_same_email_domain: Àteras persones cun su pròpiu domìniu de posta
search_same_ip: Àteras persones cun sa pròpiu IP
@@ -266,7 +255,6 @@ sc:
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}"
@@ -294,7 +282,6 @@ sc:
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
filter_by_user: Filtra pro utente
@@ -548,9 +535,6 @@ sc:
deletion:
desc_html: Permite a chie si siat de cantzellare su contu suo
title: Aberi s'eliminatzione de su contu
- min_invite_role:
- 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
@@ -563,9 +547,6 @@ sc:
show_known_fediverse_at_about_page:
desc_html: Cando ativu, ammustrat in sa previsualizatzione is tuts de totu is istàntzias connòschidas. Si nono, ammustrat isceti is cuntenutos locales
title: Include su cuntenutu federadu in sa pàgina no autenticada de sa lìnia de tempus pùblica
- show_staff_badge:
- 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 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
@@ -575,9 +556,6 @@ sc:
site_short_description:
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 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
thumbnail:
desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px
@@ -586,9 +564,6 @@ sc:
desc_html: Ammustra su ligàmene a sa lìnia de tempus pùblica in sa pàgina initziale e permite s'atzessu pro mèdiu de s'API a sa lìnia de tempus pùblica sena autenticatzione
title: Permite s'atzessu no autenticadu a sa lìnia de tempus pùblica
title: Cunfiguratzione de su logu
- trendable_by_default:
- desc_html: Tocat a is etichetas chi non siant istadas refudadas prima
- title: Permite chi is etichetas divenant tendèntzia sena revisione pretzedente
trends:
desc_html: Ammustra in pùblicu is etichetas chi siant istadas revisionadas in passadu e chi oe siant in tendèntzia
title: Etichetas de tendèntzia
@@ -816,7 +791,6 @@ sc:
title: Modìfica filtru
errors:
invalid_context: Cuntestu mancante o non vàlidu
- invalid_irreversible: Su filtràgiu non reversìbile funtzionat isceti in is cuntestos printzipale o de notìficas
index:
delete: Cantzella
empty: Non tenes perunu filtru.
@@ -926,14 +900,6 @@ sc:
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
- body: Custu est unu resumu de su chi ti est sutzèdidu dae sa visita ùrtima tua su %{since}
- mention: "%{name} t'at mentovadu in:"
- new_followers_summary:
- one: In prus, %{count} persone noa ti sighit dae cando fias assente. Incredìbile!
- other: In prus, %{count} persones noas ti sighint dae cando fias assente. Incredìbile!
- title: Durante s'ausèntzia tua...
favourite:
body: "%{name} at marcadu comente a preferidu s'istadu tuo:"
subject: "%{name} at marcadu comente a preferidu s'istadu tuo"
@@ -1170,8 +1136,6 @@ sc:
sensitive_content: Cuntenutu sensìbile
tags:
does_not_match_previous_name: non cointzidet cun su nòmine anteriore
- terms:
- title: "%{instance} Cunditziones de su servìtziu e polìtica de riservadesa"
themes:
contrast: Mastodon (cuntrastu artu)
default: Mastodon (iscuru)
diff --git a/config/locales/si.yml b/config/locales/si.yml
index de029aa501..1806801eb2 100644
--- a/config/locales/si.yml
+++ b/config/locales/si.yml
@@ -1,66 +1,138 @@
---
si:
about:
+ about_hashtag_html: මේවා #%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම් වේ. ඔබට fediverse හි ඕනෑම තැනක ගිණුමක් තිබේ නම් ඔබට ඔවුන් සමඟ අන්තර් ක්රියා කළ හැක.
+ about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!'
about_this: පිලිබඳව
active_count_after: සක්රීයයි
active_footnote: මාසික ක්රියාකාරී පරිශීලකයින් (මාක්රිප)
+ administered_by: 'පරිපාලනය කරන්නේ:'
api: යෙ.ක්ර. මු. (API)
apps: ජංගම යෙදුම්
+ apps_platforms: iOS, Android සහ වෙනත් වේදිකා වලින් Mastodon භාවිතා කරන්න
+ browse_directory: පැතිකඩ නාමාවලියක් පිරික්සන්න සහ රුචිකත්වයන් අනුව පෙරහන් කරන්න
+ browse_local_posts: මෙම සේවාදායකයෙන් පොදු පළ කිරීම් වල සජීවී ප්රවාහයක් බ්රවුස් කරන්න
+ browse_public_posts: Mastodon හි පොදු පළ කිරීම් වල සජීවී ප්රවාහයක් බ්රවුස් කරන්න
contact: සබඳතාව
- contact_missing: සකසා නැත
+ contact_missing: සකස් කර නැත
contact_unavailable: අ/නොවේ
+ continue_to_web: වෙබ් යෙදුම වෙත ඉදිරියට යන්න
+ discover_users: පරිශීලකයන් සොයා ගන්න
documentation: ප්රලේඛනය
+ federation_hint_html: "%{instance} හි ගිණුමක් සමඟින් ඔබට ඕනෑම Mastodon සේවාදායකයක සහ ඉන් ඔබ්බෙහි පුද්ගලයින් අනුගමනය කිරීමට හැකි වනු ඇත."
get_apps: ජංගම යෙදුමක් උත්සාහ කරන්න
+ hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි
+ instance_actor_flash: |
+ මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ.
+ එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර ඔබට සම්පූර්ණ අවස්ථාව අවහිර කිරීමට අවශ්ය නම් මිස අවහිර නොකළ යුතුය, මෙම අවස්ථාවේදී ඔබ ඩොමේන් බ්ලොක් එකක් භාවිතා කළ යුතුය.
learn_more: තව දැනගන්න
- privacy_policy: රහස්යතා ප්රතිපත්තිය
+ logged_in_as_html: ඔබ දැනට %{username}ලෙස පුරනය වී ඇත.
+ logout_before_registering: ඔබ දැනටමත් පුරනය වී ඇත.
rules: සේවාදායකයේ නීති
+ rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:'
+ see_whats_happening: මොකද වෙන්නේ කියලා බලන්න
+ server_stats: 'සේවාදායක සංඛ්යාලේඛන:'
source_code: මූල කේතය
status_count_after:
- one: තත්වය
- other: තත්වයන්
- terms: සේවාවේ කොන්දේසි
+ one: තත්ත්වය
+ other: තත්ත්වයන්
+ status_count_before: කවුද පළ කළේ
+ tagline: විමධ්යගත සමාජ ජාලය
+ unavailable_content: මධ්යස්ථ සේවාදායකයන්
unavailable_content_description:
domain: සේවාදායකය
reason: හේතුව
+ rejecting_media: 'මෙම සේවාදායකයන්ගෙන් මාධ්ය ගොනු සැකසීම හෝ ගබඩා කිරීම සිදු නොවනු ඇති අතර, මුල් ගොනුව වෙත අතින් ක්ලික් කිරීම අවශ්ය වන, සිඟිති රූ නොපෙන්වනු ඇත:'
+ rejecting_media_title: පෙරූ මාධ්ය
+ silenced: 'මෙම සේවාදායකයන්ගෙන් පළ කිරීම් පොදු කාලරේඛා සහ සංවාදවල සඟවනු ඇති අතර, ඔබ ඒවා අනුගමනය කරන්නේ නම් මිස, ඔවුන්ගේ පරිශීලක අන්තර්ක්රියාවලින් කිසිදු දැනුම්දීමක් ජනනය නොවේ:'
silenced_title: සීමාසහිත සේවාදායක
+ suspended: 'මෙම සේවාදායකයන්ගෙන් කිසිදු දත්තයක් සැකසීම, ගබඩා කිරීම හෝ හුවමාරු කිරීම සිදු නොවනු ඇත, මෙම සේවාදායකයන්ගෙන් පරිශීලකයින් සමඟ කිසියම් අන්තර්ක්රියා හෝ සන්නිවේදනයක් කළ නොහැක:'
suspended_title: අත්හිටවූ සේවාදායකයන්
+ unavailable_content_html: Mastodon සාමාන්යයෙන් ඔබට ෆෙඩිවර්ස් හි වෙනත් ඕනෑම සේවාදායකයකින් අන්තර්ගතය බැලීමට සහ පරිශීලකයින් සමඟ අන්තර් ක්රියා කිරීමට ඉඩ සලසයි. මෙම විශේෂිත සේවාදායකයේ සිදු කර ඇති ව්යතිරේක මේවාය.
user_count_after:
one: පරිශීලක
other: පරිශීලකයින්
+ user_count_before: ගෙදරට
what_is_mastodon: මාස්ටඩන් යනු කුමක්ද?
accounts:
+ choices_html: "%{name}හි තේරීම්:"
+ endorsements_hint: ඔබට වෙබ් අතුරු මුහුණතෙන් ඔබ අනුගමනය කරන පුද්ගලයින් අනුමත කළ හැකි අතර, ඔවුන් මෙහි පෙන්වනු ඇත.
+ featured_tags_hint: ඔබට මෙහි සංදර්ශන කෙරෙන විශේෂිත හැෂ් ටැග් විශේෂාංගගත කළ හැක.
+ follow: අනුගමනය කරන්න
+ followers:
+ one: අනුගාමිකයා
+ other: අනුගාමිකයින්
+ following: අනුගමනය
+ instance_actor_flash: මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර අත්හිටුවිය යුතු නොවේ.
joined: "%{date} එක් වී ඇත"
+ last_active: අවසාන ක්රියාකාරී
+ link_verified_on: මෙම සබැඳියේ හිමිකාරිත්වය %{date}හි පරීක්ෂා කරන ලදී
media: මාධ්යය
+ moved_html: "%{name} %{new_profile_link}මාරු වී ඇත:"
+ network_hidden: මෙම තොරතුරු ලබා ගත නොහැක
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: සමූහය
+ unavailable: පැතිකඩ නොමැත
+ unfollow: අනුගමනය නොකරන්න
admin:
+ account_actions:
+ action: ක්රියාව සිදු කරන්න
+ title: "%{acct}මත මධ්යස්ථ ක්රියාව සිදු කරන්න"
account_moderation_notes:
create: සටහන හැරයන්න
+ created_msg: මධ්යස්ථ සටහන සාර්ථකව සාදන ලදී!
+ destroyed_msg: මධ්යස්ථ සටහන සාර්ථකව විනාශ විය!
accounts:
add_email_domain_block: වි-තැපැල් වසම අවහිර කරන්න
approve: අනුමත කරන්න
+ approved_msg: "%{username}හි ලියාපදිංචි වීමේ යෙදුම සාර්ථකව අනුමත කරන ලදී"
are_you_sure: ඔබට විශ්වාසද?
+ avatar: අවතාරය
by_domain: වසම
change_email:
- changed_msg: ගිණුමේ වි-තැපෑල සාර්ථකව වෙනස් කෙරිණි!
current_email: වත්මන් වි-තැපෑල
label: වි-තැපෑල වෙනස් කරන්න
new_email: නව විද්යුත් තැපෑල
submit: වි-තැපෑල වෙනස් කරන්න
title: "%{username} සඳහා වි-තැපෑල වෙනස් කරන්න"
confirm: සනාථ කරන්න
- confirmed: සනාථ කර ඇත
+ confirmed: තහවුරු කර ඇත
confirming: සනාථ කරමින්
+ custom: අභිරුචි
+ delete: දත්ත මකන්න
+ deleted: මකා දමන ලදී
+ demote: පහත් කරන්න
+ destroyed_msg: "%{username}හි දත්ත ඉක්මනින් මකා දැමීමට පෝලිම් කර ඇත"
+ disable: කැටි කරන්න
+ disable_sign_in_token_auth: ඊමේල් ටෝකන් සත්යාපනය අක්රීය කරන්න
+ disable_two_factor_authentication: 2FA අබල කරන්න
+ disabled: ශීත කළ
+ display_name: ප්රදර්ශන නාමය
domain: වසම
edit: සංස්කරණය
email: විද්යුත් තැපෑල
email_status: වි-තැපෑලෙහි තත්වය
+ enable: කැටි කිරීම ඉවත් කරන්න
+ enable_sign_in_token_auth: විද්යුත් තැපෑල ටෝකන් සත්යාපනය සබල කරන්න
enabled: සබල කර ඇත
+ enabled_msg: "%{username}ගේ ගිණුම සාර්ථකව අත්හිටුවා ඇත"
+ followers: අනුගාමිකයින්
+ follows: පහත සඳහන්
header: ශීර්ෂය
- invite_request_text: එක්වීම සඳහා හේතුව
+ inbox_url: එන ලිපි URL
+ invite_request_text: එක්වීම සඳහා
+ invited_by: විසින් ආරාධනා කරන ලදී
ip: අ.ජා. කෙ. (IP)
joined: එක් වී ඇත
location:
@@ -70,110 +142,408 @@ si:
title: ස්ථානය
login_status: පිවිසීමේ තත්වය
media_attachments: මාධ්ය ඇමුණුම්
+ memorialize: මතක සටහන් බවට පත් කරන්න
+ memorialized: අනුස්මරණය කරන ලදී
+ memorialized_msg: සාර්ථක ලෙස %{username} අනුස්මරණ ගිණුමක් බවට පත් කරන ලදී
moderation:
active: සක්රීයයි
all: සියල්ල
+ pending: පොරොත්තුවෙන්
suspended: අත්හිටුවන ලදි
- most_recent_ip: වඩා මෑත අ.ජා.කෙ.(IP)
+ title: මධ්යස්ථභාවය
+ moderation_notes: මධ්යස්ථ සටහන්
+ most_recent_activity: වඩාත්ම මෑත ක්රියාකාරිත්වය
+ most_recent_ip: ඊට වඩා අ.ජා.කේ.(IP)
+ no_account_selected: කිසිවක් තෝරා නොගත් බැවින් ගිණුම් කිසිවක් වෙනස් කර නැත
+ no_limits_imposed: සීමාවන් පනවා නැත
+ not_subscribed: දායක වී නැත
+ pending: පොරොත්තු සමාලෝචනය
perform_full_suspension: අත්හිටුවන්න
+ previous_strikes: පෙර වැඩ වර්ජන
+ previous_strikes_description_html:
+ one: මෙම ගිණුමට එක වර්ජනයක් ඇත.
+ other: මෙම ගිණුමේ වර්ජන %{count} ඇත.
+ promote: ප්රවර්ධනය කරන්න
protocol: කෙටුම්පත
- public: ප්රසිද්ධ
+ public: ප්රසිද්ධ
+ push_subscription_expires: පුෂ් දායකත්වය කල් ඉකුත් වේ
redownload: පැතිකඩ නැවුම්කරන්න
+ redownloaded_msg: මූලාරම්භයේ සිට %{username}හි පැතිකඩ සාර්ථකව නැවුම් කරන ලදී
reject: ප්රතික්ෂේප
+ rejected_msg: "%{username}හි ලියාපදිංචි වීමේ අයදුම්පත සාර්ථකව ප්රතික්ෂේප විය"
+ remove_avatar: අවතාරය ඉවත් කරන්න
remove_header: ශීර්ෂය ඉවත්කරන්න
+ removed_avatar_msg: "%{username}ගේ අවතාර රූපය සාර්ථකව ඉවත් කරන ලදී"
+ removed_header_msg: "%{username}හි ශීර්ෂ රූපය සාර්ථකව ඉවත් කරන ලදී"
+ resend_confirmation:
+ already_confirmed: මෙම පරිශීලකයා දැනටමත් තහවුරු කර ඇත
+ send: තහවුරුකිරීමේ විද්යුත් තැපැල් පණිවිඩය නැවත එවන්න
+ success: තහවුරු කිරීමේ විද්යුත් තැපෑල සාර්ථකව යවා ඇත!
reset: නැවත සකසන්න
reset_password: මුරපදය නැවතසකසන්න
- role: අවසරයන්
- roles:
- admin: පරිපාලක
- staff: කාර්ය මණ්ඩලය
- user: පරිශීලක
+ resubscribe: නැවත දායක වන්න
search: සොයන්න
+ search_same_email_domain: එකම විද්යුත් තැපැල් වසම සහිත වෙනත් පරිශීලකයන්
+ search_same_ip: එකම IP සහිත වෙනත් පරිශීලකයන්
security_measures:
only_password: මුරපදය පමණි
+ password_and_2fa: මුරපදය සහ 2FA
sensitive: සංවේදී
+ sensitized: සංවේදී ලෙස සලකුණු කර ඇත
+ shared_inbox_url: බෙදාගත් එන ලිපි URL
+ show:
+ created_reports: වාර්තා හැදුවා
+ targeted_reports: වෙනත් අය විසින් වාර්තා කරන ලදී
silence: සීමාව
silenced: සීමාසහිත
- statuses: තත්වයන්
+ statuses: තත්ත්වයන්
+ strikes: පෙර වැඩ වර්ජන
+ subscribe: දායක වන්න
+ suspend: අත්හිටුවන්න
suspended: අත්හිටුවන ලදි
+ suspension_irreversible: මෙම ගිණුමේ දත්ත ආපසු හැරවිය නොහැකි ලෙස මකා ඇත. ඔබට එය භාවිතා කළ හැකි බවට පත් කිරීම සඳහා ගිණුම අත්හිටුවිය හැක නමුත් එය පෙර තිබූ දත්ත කිසිවක් ප්රතිසාධනය නොකරයි.
+ suspension_reversible_hint_html: ගිණුම අත්හිටුවා ඇති අතර, දත්ත සම්පූර්ණයෙන්ම %{date}දින ඉවත් කරනු ලැබේ. එතෙක් කිසිදු අයහපත් ප්රතිඵලයකින් තොරව ගිණුම යථා තත්ත්වයට පත් කළ හැක. ඔබට ගිණුමේ සියලුම දත්ත වහාම ඉවත් කිරීමට අවශ්ය නම්, ඔබට එය පහතින් කළ හැක.
title: ගිණුම්
+ unblock_email: ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන්න
+ unblocked_email_msg: "%{username}ගේ විද්යුත් තැපැල් ලිපිනය අවහිර කිරීම සාර්ථකව ඉවත් කරන ලදී"
+ unconfirmed_email: තහවුරු නොකළ ඊමේල්
+ undo_sensitized: බල සංවේදී අහෝසි කරන්න
+ undo_silenced: සීමාව අහෝසි කරන්න
+ undo_suspension: අත්හිටුවීම අහෝසි කරන්න
+ unsilenced_msg: "%{username}ගිණුමේ සීමාව සාර්ථකව ඉවත් කරන ලදී"
+ unsubscribe: දායක නොවන්න
+ unsuspended_msg: "%{username}ගිණුම සාර්ථකව අත්හිටුවන ලදී"
username: පරිශීලක නාමය
+ view_domain: වසම සඳහා සාරාංශය බලන්න
warn: අවවාද
web: වියමන
+ whitelisted: ෆෙඩරේෂන් සඳහා අවසර ඇත
action_logs:
action_types:
- change_email_user: පරිශීලකට වි-තැපෑල වෙනස් කරන්න
+ approve_appeal: අභියාචනය අනුමත කරන්න
+ approve_user: පරිශීලක අනුමත කරන්න
+ assigned_to_self_report: වාර්තාව පැවරීම
+ change_email_user: පරිශීලකයින්ට වි-තැපෑල වෙනස් කරන්න
+ confirm_user: පරිශීලක තහවුරු කරන්න
create_account_warning: අවවාදයක් සාදන්න
create_announcement: නිවේදනය සාදන්න
+ create_custom_emoji: අභිරුචි ඉමොජි සාදන්න
create_domain_allow: වසම් ඉඩදීමක් සාදන්න
create_domain_block: වසම් අවහිරයක් සාදන්න
+ create_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එකක් සාදන්න
create_ip_block: අ.ජා. කෙ. (IP) නීතියක් සාදන්න
- disable_user: පරිශීලක අබල කරන්න
+ create_unavailable_domain: ලබා ගත නොහැකි වසම සාදන්න
+ demote_user: පරිශීලකයා පහත් කරන්න
+ destroy_announcement: නිවේදනය මකන්න
+ destroy_custom_emoji: අභිරුචි ඉමොජි මකන්න
+ destroy_domain_allow: වසම මකන්න ඉඩ දෙන්න
+ destroy_domain_block: වසම් වාරණය මකන්න
+ destroy_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එක මකන්න
+ destroy_instance: වසම පිරිසිදු කරන්න
+ destroy_ip_block: IP රීතිය මකන්න
+ destroy_status: පළ කිරීම මකන්න
+ destroy_unavailable_domain: ලබා ගත නොහැකි වසම මකන්න
+ disable_2fa_user: 2FA අබල කරන්න
+ disable_custom_emoji: අභිරුචි ඉමොජි අබල කරන්න
+ disable_sign_in_token_auth_user: පරිශීලකයා සඳහා ඊමේල් ටෝකන් සත්යාපනය අක්රීය කරන්න
+ disable_user: පරිශීලනය කරන්න
+ enable_custom_emoji: අභිරුචි ඉමොජි සබල කරන්න
+ enable_sign_in_token_auth_user: පරිශීලකයා සඳහා විද්යුත් තැපෑල ටෝකන් සත්යාපනය සක්රීය කරන්න
enable_user: පරිශීලක සබල කරන්න
+ memorialize_account: ගිණුම අනුස්මරණ කරන්න
+ promote_user: පරිශීලක ප්රවර්ධනය කරන්න
+ reject_appeal: අභියාචනය ප්රතික්ෂේප කරන්න
+ reject_user: පරිශීලක ප්රතික්ෂේප කරන්න
+ remove_avatar_user: Avatar ඉවත් කරන්න
reopen_report: වාර්තාව නැවත විවෘත කරන්න
reset_password_user: මුරපදය නැවතසකසන්න
- suspend_account: ගිණුම අත්හිටුවන්න
+ resolve_report: වාර්තාව විසඳන්න
+ sensitive_account: බල සංවේදී ගිණුම
+ silence_account: ගිණුම සීමා කරන්න
+ suspend_account: සැලකිය යුතු
+ unassigned_report: වාර්තාව පැවරීම ඉවත් කරන්න
+ unblock_email_account: ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන්න
+ unsensitive_account: බල සංවේදී ගිණුම අහෝසි කරන්න
+ unsilence_account: සීමාව ගිණුම අහෝසි කරන්න
+ unsuspend_account: ගිණුම අත්හිටුවීම
update_announcement: නිවේදනය යාවත්කාල කරන්න
- filter_by_action: ක්රියාමාර්ගය අනුව පෙරන්න
+ update_custom_emoji: අභිරුචි ඉමොජි යාවත්කාලීන කරන්න
+ update_domain_block: ඩොමේන් බ්ලොක් යාවත්කාලීන කරන්න
+ update_status: පළ කිරීම යාවත්කාලීන කරන්න
+ actions:
+ approve_appeal_html: "%{name} අනුමත මධ්යස්ථ තීරණ අභියාචනය %{target}සිට"
+ approve_user_html: "%{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_domain_allow_html: වසම %{target}සමඟ %{name} අවසර නොදුන් සම්මේලනය
+ destroy_domain_block_html: "%{name} අවහිර නොකළ වසම %{target}"
+ destroy_email_domain_block_html: "%{name} අවහිර නොකළ විද්යුත් තැපැල් වසම %{target}"
+ destroy_instance_html: "%{name} පිරිසිදු කරන ලද වසම %{target}"
+ destroy_ip_block_html: IP %{target}සඳහා %{name} මකා දැමූ රීතිය
+ destroy_status_html: "%{name} පෝස්ට් %{target}විසින් ඉවත් කරන ලදී"
+ destroy_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවත ආරම්භ විය"
+ disable_2fa_user_html: "%{name} පරිශීලක %{target}සඳහා සාධක දෙකක අවශ්යතාවය අක්රීය කර ඇත"
+ disable_custom_emoji_html: "%{name} ආබාධිත ඉමොජි %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} අක්රීය කරන ලද විද්යුත් තැපෑල ටෝකන් සත්යාපනය සඳහා %{target}"
+ disable_user_html: "%{name} පරිශීලක %{target}සඳහා අබල කළ පිවිසුම"
+ enable_custom_emoji_html: "%{name} සක්රීය ඉමොජි %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} %{target}විද්යුත් තැපෑල ටෝකන් සත්යාපනය සක්රීය කර ඇත"
+ enable_user_html: පරිශීලක %{target}සඳහා %{name} සක්රීය පුරනය වීම
+ memorialize_account_html: "%{name} %{target}ගේ ගිණුම සිහිවටන පිටුවක් බවට පත් කළේය"
+ promote_user_html: "%{name} උසස් පරිශීලක %{target}"
+ reject_appeal_html: "%{name} %{target}සිට මධ්යස්ථ තීරණ අභියාචනය ප්රතික්ෂේප කරන ලදී"
+ reject_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}"
+ unblock_email_account_html: "%{name} %{target}ගේ ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන ලදී"
+ unsensitive_account_html: "%{name} සලකුණු නොකළ %{target}ගේ මාධ්ය සංවේදී ලෙස"
+ unsilence_account_html: "%{target}ගිණුමේ %{name} undid සීමාව"
+ unsuspend_account_html: "%{name} අත්හිටුවන ලද %{target}ගිණුම"
+ update_announcement_html: "%{name} යාවත්කාලීන නිවේදනය %{target}"
+ update_custom_emoji_html: "%{name} යාවත්කාලීන කළ ඉමොජි %{target}"
+ update_domain_block_html: "%{target}සඳහා %{name} යාවත්කාලීන කරන ලද වසම් වාරණ"
+ update_status_html: "%{name} %{target}යාවත්කාලීන කරන ලද පළ කිරීම"
+ empty: ලඝු-සටහන් හමු නොවිණි.
+ filter_by_action: ක්රියාව අනුව පෙරන්න
filter_by_user: පරිශීලක අනුව පෙරන්න
+ title: විගණන සටහන
announcements:
+ destroyed_msg: නිවේදනය සාර්ථකව මකා ඇත!
edit:
title: නිවේදනය සංස්කරණය
+ empty: නිවේදන කිසිවක් හමු නොවීය.
live: සජීවී
new:
create: නිවේදනය සාදන්න
title: නව නිවේදනය
+ publish: ප්රකාශ කරන්න
published_msg: නිවේදනය සාර්ථකව ප්රකාශයට පත් කරන ලදි!
+ scheduled_for: "%{time}සඳහා සැලසුම් කර ඇත"
+ scheduled_msg: නිවේදනය නිකුත් කිරීමට නියමිතයි!
title: නිවේදන
+ unpublish: ප්රකාශනය ඉවත් කරන්න
+ unpublished_msg: නිවේදනය සාර්ථකව ප්රකාශයට පත් නොකළේය!
+ updated_msg: නිවේදනය සාර්ථකව යාවත්කාලීන කරන ලදී!
custom_emojis:
+ assign_category: කාණ්ඩය පැවරීම
by_domain: වසම
+ copied_msg: ඉමොජි වල දේශීය පිටපත සාර්ථකව සාදන ලදී
copy: පිටපත්
+ copy_failed_msg: එම ඉමොජියේ දේශීය පිටපතක් සෑදීමට නොහැකි විය
create_new_category: නව ප්රවර්ගයක් සාදන්න
+ created_msg: ඉමොජි සාර්ථකව නිර්මාණය කළා!
+ delete: මකන්න
+ destroyed_msg: Emojo සාර්ථකව විනාශ විය!
disable: අබල කරන්න
disabled: අබල කර ඇත
+ disabled_msg: එම ඉමොජිය සාර්ථකව අබල කරන ලදී
+ emoji: ඉමොජි
enable: සබල කරන්න
enabled: සබල කර ඇත
+ enabled_msg: එම ඉමොජි සාර්ථකව සබල කරන ලදී
+ image_hint: PNG හෝ GIF %{size}දක්වා
list: ලැයිස්තුව
+ listed: ලැයිස්තුගත කර ඇත
+ new:
+ title: නව අභිරුචි ඉමොජි එක් කරන්න
+ not_permitted: මෙම ක්රියාව සිදු කිරීමට ඔබට අවසර නැත
+ overwrite: උඩින් ලියන්න
shortcode: කෙටිකේතය
+ shortcode_hint: අවම වශයෙන් අක්ෂර 2 ක්, අක්ෂරාංක අක්ෂර සහ යටි ඉරි පමණි
+ title: අභිරුචි ඉමෝජි
+ uncategorized: වර්ගීකරණය නොකළ
+ unlist: ලැයිස්තුගත නොකරන්න
+ unlisted: ලැයිස්තුගත නොකළ
+ update_failed_msg: එම ඉමොජි යාවත්කාලීන කළ නොහැකි විය
+ updated_msg: ඉමොජි සාර්ථකව යාවත්කාලීන කරන ලදී!
upload: උඩුගත කරන්න
dashboard:
+ active_users: ක්රියාකාරී පරිශීලකයන්
+ interactions: අන්තර්ක්රියා
+ media_storage: මාධ්ය ගබඩාව
+ new_users: නව පරිශීලකයන්
+ opened_reports: වාර්තා විවෘත විය
+ pending_appeals_html:
+ one: "%{count} අභියාචනයක් බලාපොරොත්තු වේ"
+ other: "%{count} අභියාචනා පොරොත්තු"
+ pending_reports_html:
+ one: "%{count} පොරොත්තු වාර්තාව"
+ other: "%{count} පොරොත්තු වාර්තා"
+ pending_tags_html:
+ one: "%{count} පොරොත්තු හැෂ් ටැගය"
+ other: "%{count} පොරොත්තු හැෂ් ටැග්"
+ pending_users_html:
+ one: "%{count} අපේක්ෂිත පරිශීලකයා"
+ other: "%{count} අපේක්ෂිත පරිශීලකයින්"
+ resolved_reports: වාර්තා විසඳා ඇත
software: මෘදුකාංගය
+ sources: ලියාපදිංචි මූලාශ්ර
+ space: අවකාශය භාවිතය
title: උපකරණ පුවරුව
+ top_languages: ඉහළම ක්රියාකාරී භාෂා
+ top_servers: ඉහළම ක්රියාකාරී සේවාදායකයන්
+ website: වෙබ් අඩවිය
+ disputes:
+ appeals:
+ empty: අභියාචනා හමු නොවීය.
+ title: අභියාචනා
+ domain_allows:
+ add_new: වසම සමඟ සම්මේලනයට ඉඩ දෙන්න
+ created_msg: ෆෙඩරේෂන් සඳහා වසම සාර්ථකව අවසර දී ඇත
+ destroyed_msg: ෆෙඩරේෂන් වෙතින් වසම අනුමත කර නැත
+ undo: වසම සමඟ සම්මේලනයට ඉඩ නොදෙන්න
domain_blocks:
+ add_new: නව වසම් වාරණ එක් කරන්න
+ created_msg: වසම් අවහිර කිරීම දැන් සකසමින් පවතී
+ destroyed_msg: වසම් අවහිර කිරීම ඉවත් කර ඇත
domain: වසම
+ edit: වසම් වාරණය සංස්කරණය කරන්න
+ existing_domain_block: ඔබ දැනටමත් %{name}මත දැඩි සීමාවන් පනවා ඇත.
+ existing_domain_block_html: ඔබ දැනටමත් %{name}මත දැඩි සීමාවන් පනවා ඇත, ඔබට එය අවහිර කිරීම ඉවත් කිරීමට අවශ්යයි.
new:
+ create: බ්ලොක් එකක් සාදන්න
+ hint: ඩොමේන් බ්ලොක් එක දත්ත සමුදාය තුල ගිණුම් ඇතුලත් කිරීම් නිර්මාණය වීම වලක්වන්නේ නැත, නමුත් එම ගිණුම් වලට ප්රතික්රියාශීලීව සහ ස්වයංක්රීයව විශේෂිත මධ්යස්ථ ක්රම යොදනු ඇත.
severity:
+ desc_html: "Silence ගිණුමේ පළ කිරීම් ඒවා අනුගමනය නොකරන ඕනෑම කෙනෙකුට නොපෙනී යයි. අත්හිටුවීම ගිණුමේ අන්තර්ගතය, මාධ්ය සහ පැතිකඩ දත්ත සියල්ල ඉවත් කරයි. ඔබට මාධ්ය ගොනු ප්රතික්ෂේප කිරීමට අවශ්ය නම් None භාවිතා කරන්න."
noop: කිසිවක් නැත
+ 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: මෙම වසමෙන් එන සියලුම වාර්තා නොසලකා හරින්න. අත්හිටුවීම් සඳහා අදාළ නොවේ
+ undo: වසම් අවහිර කිරීම අහෝසි කරන්න
+ view: වසම් වාරණය බලන්න
email_domain_blocks:
+ add_new: අලුතින් එකතු කරන්න
+ attempts_over_week:
+ one: පසුගිය සතිය පුරා %{count} උත්සාහයක්
+ other: පසුගිය සතියේ ලියාපදිංචි වීමේ උත්සාහයන් %{count} ක්
+ created_msg: විද්යුත් තැපැල් වසම සාර්ථකව අවහිර කරන ලදී
+ delete: මකන්න
+ dns:
+ types:
+ mx: MX වාර්තාව
domain: වසම
new:
create: වසම එකතු කරන්න
+ resolve: වසම විසඳන්න
+ title: නව විද්යුත් තැපැල් වසම අවහිර කරන්න
+ no_email_domain_block_selected: කිසිවක් තෝරා නොගත් බැවින් විද්යුත් තැපැල් වසම් වාරණ කිසිවක් වෙනස් කර නැත
+ resolved_dns_records_hint_html: ඩොමේන් නාමය පහත දැක්වෙන MX වසම් වලට විසඳයි, ඒවා අවසානයේ ඊමේල් පිළිගැනීම සඳහා වගකිව යුතුය. MX වසමක් අවහිර කිරීම දෘශ්ය වසම් නාමය වෙනස් වුවද, එකම MX වසම භාවිතා කරන ඕනෑම විද්යුත් තැපැල් ලිපිනයකින් ලියාපදිංචි වීම අවහිර කරයි. ප්රධාන විද්යුත් තැපැල් සපයන්නන් අවහිර නොකිරීමට ප්රවේශම් වන්න.
+ resolved_through_html: "%{domain}හරහා විසඳා ඇත"
title: අවහිර කළ වි-තැපැල් වසම්
follow_recommendations:
+ description_html: "නව පරිශීලකයින්ට රසවත් අන්තර්ගතයන් ඉක්මනින් සොයා ගැනීමට උපකාර වන නිර්දේශ අනුගමනය කරන්න. පෞද්ගලීකරණය කළ පසු විපරම් නිර්දේශ සැකසීමට තරම් පරිශීලකයෙකු අන් අය සමඟ අන්තර් ක්රියා කර නොමැති විට, ඒ වෙනුවට මෙම ගිණුම් නිර්දේශ කෙරේ. දී ඇති භාෂාවක් සඳහා ඉහළම මෑත කාලීන නියැලීම් සහ ඉහළම දේශීය අනුගාමික සංඛ්යාව සහිත ගිණුම් මිශ්රණයකින් ඒවා දෛනික පදනමින් නැවත ගණනය කෙරේ."
language: භාෂාව සඳහා
- status: තත්වය
+ status: තත්ත්වය
+ suppress: අනුගමනය නිර්දේශය යටපත් කරන්න
+ suppressed: යටපත් කළා
+ title: නිර්දේශ අනුගමනය කරන්න
+ unsuppress: නිර්දේශ පිළිපැදීම ප්රතිසාධනය කරන්න
instances:
+ availability:
+ description_html:
+ one: වසම වෙත බෙදා හැරීම සාර්ථක නොවී දින %{count} අසාර්ථක වුවහොත්, වසම න් බෙදා හැරීමක් ලැබෙන්නේ නම් මිස වැඩිදුර බෙදා හැරීමේ උත්සාහයන් සිදු නොකෙරේ.
+ other: වසම වෙත බෙදා හැරීම සාර්ථක නොවී %{count} වෙනස් දින අසාර්ථක වුවහොත්, වසම සිට බෙදා හැරීමක් නොලැබුනේ නම්, තවදුරටත් බෙදා හැරීමේ උත්සාහයන් සිදු නොකෙරේ.
+ failure_threshold_reached: අසාර්ථක වීමේ සීමාව %{date}ට ළඟා විය.
+ failures_recorded:
+ one: දින %{count} කින් අසාර්ථක උත්සාහයක්.
+ other: විවිධ දින %{count} ක අසාර්ථක උත්සාහයන්.
+ no_failures_recorded: වාර්තාගත අසාර්ථක වීම් නොමැත.
+ title: පවතින බව
+ warning: මෙම සේවාදායකයට සම්බන්ධ වීමට ගත් අවසන් උත්සාහය අසාර්ථක විය
back_to_all: සියල්ල
+ back_to_limited: සීමා සහිතයි
back_to_warning: අවවාදයයි
by_domain: වසම
+ confirm_purge: ඔබට මෙම වසමෙන් දත්ත ස්ථිරවම මැකීමට අවශ්ය බව විශ්වාසද?
+ content_policies:
+ comment: අභ්යන්තර සටහන
+ description_html: ඔබට මෙම වසම සහ එහි ඕනෑම උප වසමකින් සියලුම ගිණුම් වලට අදාළ වන අන්තර්ගත ප්රතිපත්ති නිර්වචනය කළ හැක.
+ policies:
+ reject_media: මාධ්ය ප්රතික්ෂේප කරන්න
+ reject_reports: වාර්තා ප්රතික්ෂේප කරන්න
+ silence: සීමාව
+ suspend: අත්හිටුවන්න
+ policy: ප්රතිපත්ති
+ reason: පොදු හේතුව
+ title: අන්තර්ගත ප්රතිපත්ති
+ dashboard:
+ instance_accounts_dimension: වැඩිපුරම අනුගමනය කරන ගිණුම්
+ instance_accounts_measure: ගබඩා කර ඇති ගිණුම්
+ instance_followers_measure: එතන අපේ අනුගාමිකයෝ
+ instance_follows_measure: ඔවුන්ගේ අනුගාමිකයන් මෙහි
+ instance_languages_dimension: ඉහළම භාෂා
+ instance_media_attachments_measure: ගබඩා කළ මාධ්ය ඇමුණුම්
+ instance_reports_measure: ඔවුන් ගැන වාර්තා
+ instance_statuses_measure: ගබඩා කළ තනතුරු
delivery:
all: සියල්ල
+ clear: බෙදා හැරීමේ දෝෂ ඉවත් කරන්න
+ failing: අසාර්ථක වෙනවා
+ restart: බෙදා හැරීම නැවත ආරම්භ කරන්න
+ stop: බෙදා හැරීම නවත්වන්න
+ unavailable: ලබා ගත නොහැක
+ delivery_available: බෙදා හැරීම ලබා ගත හැකිය
+ delivery_error_days: බෙදා හැරීමේ දෝෂ සහිත දින
+ delivery_error_hint: දින %{count} ක් සඳහා බෙදා හැරීම කළ නොහැකි නම්, එය ස්වයංක්රීයව බෙදා හැරිය නොහැකි ලෙස ලකුණු කරනු ලැබේ.
+ destroyed_msg: "%{domain} සිට දත්ත දැන් ආසන්න මකාදැමීම සඳහා පෝලිම් කර ඇත."
+ empty: වසම් කිසිවක් හමු නොවීය.
+ known_accounts:
+ one: "%{count} දන්නා ගිණුම්"
+ other: දන්නා ගිණුම් %{count} ක්
moderation:
all: සියල්ල
+ limited: සීමා සහිතයි
+ title: මධ්යස්ථභාවය
private_comment: පුද්ගලික අදහස
public_comment: ප්රසිද්ධ අදහස
+ purge: පිරිසිදු කරන්න
+ purge_description_html: මෙම වසම යහපත සඳහා නොබැඳි බව ඔබ විශ්වාස කරන්නේ නම්, ඔබට ඔබගේ ගබඩාවෙන් මෙම වසමෙන් සියලුම ගිණුම් වාර්තා සහ ආශ්රිත දත්ත මකා දැමිය හැක. මෙයට යම් කාලයක් ගත විය හැක.
+ title: සම්මේලනය
+ total_blocked_by_us: අප විසින් අවහිර කරන ලදී
+ total_followed_by_them: ඔවුන් විසින් අනුගමනය කරන ලදී
+ total_followed_by_us: අප විසින් අනුගමනය කරන ලදී
+ total_reported: ඔවුන් ගැන වාර්තා
+ total_storage: මාධ්ය ඇමුණුම්
+ totals_time_period_hint_html: පහත දැක්වෙන එකතුවෙහි සියලු කාලය සඳහා දත්ත ඇතුළත් වේ.
invites:
+ deactivate_all: සියල්ල අක්රිය කරන්න
filter:
all: සියල්ල
+ available: පවතින
expired: කල් ඉකුත් වී ඇත
title: පෙරහන
title: ඇරයුම්
ip_blocks:
add_new: නීතිය සාදන්න
+ created_msg: නව IP රීතිය සාර්ථකව එක් කරන ලදී
+ delete: මකන්න
expires_in:
'1209600': සති 2
'15778476': මාස 6
@@ -183,146 +553,806 @@ si:
'94670856': අවුරුදු 3
new:
title: නව අ.ජා. කෙ.(IP) නීතියක් සාදන්න
+ no_ip_block_selected: IP රීති කිසිවක් තෝරා නොගත් බැවින් වෙනස් කර නැත
title: අ.ජා. කෙ. (IP) නීති
+ relationships:
+ title: "%{acct}හි සබඳතා"
relays:
+ add_new: නව රිලේ එක් කරන්න
+ delete: මකන්න
+ description_html: "ෆෙඩරේෂන් රිලේ යනු එයට දායක වී ප්රකාශයට පත් කරන සේවාදායකයන් අතර විශාල ප්රසිද්ධ පළ කිරීම් හුවමාරු කරන අතරමැදි සේවාදායකයකි. එය කුඩා සහ මධ්යම සේවාදායකයන්ට fediverseවෙතින් අන්තර්ගතය සොයා ගැනීමට උදවු කළ හැකි අතර, එසේ නොමැති නම් දේශීය පරිශීලකයින්ට දුරස්ථ සේවාදායකයන් මත වෙනත් පුද්ගලයින් හස්තීයව අනුගමනය කිරීම අවශ්ය වේ."
disable: අබල කරන්න
disabled: අබල කර ඇත
enable: සබල කරන්න
+ enable_hint: සක්රිය කළ පසු, ඔබේ සේවාදායකය මෙම රිලේ වෙතින් සියලුම පොදු පළ කිරීම් සඳහා දායක වන අතර, මෙම සේවාදායකයේ පොදු පළ කිරීම් එයට යැවීම ආරම්භ කරනු ඇත.
enabled: සබල කර ඇත
+ inbox_url: රිලේ URL
+ pending: රිලේ අනුමැතිය සඳහා රැඳී සිටිමින්
+ save_and_enable: සුරකින්න සහ සක්රිය කරන්න
+ setup: රිලේ සම්බන්ධතාවයක් සකසන්න
+ signatures_not_enabled: ආරක්ෂිත මාදිලිය හෝ සීමිත ෆෙඩරේෂන් මාදිලිය සබල කර ඇති අතර රිලේ නිවැරදිව ක්රියා නොකරනු ඇත
status: තත්වය
+ title: රිලේස්
+ report_notes:
+ created_msg: වාර්තා සටහන සාර්ථකව සාදන ලදී!
+ destroyed_msg: වාර්තා සටහන සාර්ථකව මකා ඇත!
+ today_at: අද %{time}ට
reports:
+ account:
+ notes:
+ one: "%{count} සටහන"
+ other: "%{count} සටහන්"
+ action_log: විගණන සටහන
+ action_taken_by: විසින් ගන්නා ලද පියවර
+ actions:
+ delete_description_html: වාර්තා කරන ලද පළ කිරීම් මකා දැමෙනු ඇති අතර එම ගිණුමේම අනාගත උල්ලංඝනයන් තීව්ර කිරීමට ඔබට උදවු කිරීමට වර්ජනයක් වාර්තා කරනු ඇත.
+ mark_as_sensitive_description_html: වාර්තා කරන ලද පළ කිරීම් වල මාධ්ය සංවේදී ලෙස සලකුණු කරනු ලබන අතර එම ගිණුම මගින් අනාගත උල්ලංඝනයන් උත්සන්න කිරීමට ඔබට උපකාර කිරීමට වර්ජනයක් වාර්තා කරනු ඇත.
+ other_description_html: ගිණුමේ හැසිරීම පාලනය කිරීම සහ වාර්තා කළ ගිණුමට සන්නිවේදනය අභිරුචිකරණය කිරීම සඳහා තවත් විකල්ප බලන්න.
+ resolve_description_html: වාර්තා කරන ලද ගිණුමට එරෙහිව කිසිදු ක්රියාමාර්ගයක් නොගනු ඇත, වැඩ වර්ජනයක් වාර්තා නොකෙරේ, වාර්තාව වසා දමනු ඇත.
+ silence_description_html: පැතිකඩ දෘශ්යමාන වනු ඇත්තේ දැනටමත් එය අනුගමනය කරන හෝ අතින් බලන අයට පමණක් වන අතර, එහි ළඟාවීම දැඩි ලෙස සීමා කරයි. සෑම විටම ආපසු හැරවිය හැක.
+ suspend_description_html: එය අවසානයේ මකා දමන තුරු පැතිකඩ සහ එහි සියලුම අන්තර්ගතයන් ප්රවේශ විය නොහැකි වනු ඇත. ගිණුම සමඟ අන්තර් ක්රියා කිරීම කළ නොහැකි වනු ඇත. දින 30 ක් ඇතුළත ආපසු හැරවිය හැකිය.
+ actions_description_html: මෙම වාර්තාව විසඳීමට ගත යුතු ක්රියාමාර්ගය තීරණය කරන්න. ඔබ වාර්තා කරන ලද ගිණුමට එරෙහිව දණ්ඩනීය ක්රියාමාර්ගයක් ගන්නේ නම්, Spam කාණ්ඩය තෝරාගත් විට හැර, ඔවුන්ට විද්යුත් තැපෑලෙන් දැනුම්දීමක් යවනු ලැබේ.
+ add_to_report: වාර්තා කිරීමට තවත් එක් කරන්න
are_you_sure: ඔබට විශ්වාසද?
+ assign_to_self: මට පවරන්න
+ assigned: පවරා ඇති උපපරිපාලක
by_target_domain: වාර්තා කළ ගිණුමෙහි වසම
+ category: වර්ගය
+ category_description_html: මෙම ගිණුම සහ/හෝ අන්තර්ගතය වාර්තා කළ හේතුව වාර්තා කළ ගිණුම සමඟ සන්නිවේදනයේ සඳහන් කරනු ඇත
comment:
none: කිසිවක් නැත
+ comment_description_html: 'වැඩි විස්තර සැපයීම සඳහා, %{name} ලිවීය:'
+ created_at: වාර්තා කර ඇත
+ delete_and_resolve: පළ කිරීම් මකන්න
+ forwarded: යොමු කළා
+ forwarded_to: "%{domain}වෙත යොමු කරන ලදී"
+ mark_as_resolved: විසඳා ඇති ලෙස ලකුණු කරන්න
+ mark_as_sensitive: සංවේදී ලෙස ලකුණු කරන්න
+ mark_as_unresolved: නොවිසඳුනු ලෙස ලකුණු කරන්න
+ no_one_assigned: කිසි කෙනෙක නැහැ
notes:
create: සටහන එකතු කරන්න
+ create_and_resolve: සටහන සමඟ විසඳන්න
+ create_and_unresolve: සටහනක් සමඟ නැවත විවෘත කරන්න
+ delete: මකන්න
+ placeholder: ගෙන ඇති ක්රියාමාර්ග, හෝ වෙනත් අදාළ යාවත්කාලීන විස්තර කරන්න...
+ title: සටහන්
+ notes_description_html: අනෙකුත් උපපරිපාලකයින්ට සහ ඔබේ අනාගතයට සටහන් බලන්න සහ තබන්න
+ quick_actions_description_html: 'වාර්තා කළ අන්තර්ගතය බැලීමට ඉක්මන් ක්රියාමාර්ගයක් ගන්න හෝ පහළට අනුචලනය කරන්න:'
+ remote_user_placeholder: "%{instance}සිට දුරස්ථ පරිශීලකයා"
reopen: වාර්තාව නැවත විවෘත කරන්න
report: "@%{id} වාර්තා කරන්න"
reported_account: වාර්තා කළ ගිණුම
+ reported_by: විසින් වාර්තා
+ resolved: විසඳා ඇත
+ resolved_msg: වාර්තාව සාර්ථකව විසඳා ඇත!
+ skip_to_actions: ක්රියාවන් වෙත යන්න
status: තත්වය
+ statuses: වාර්තා කළ අන්තර්ගතය
+ statuses_description_html: වාර්තා කරන ලද ගිණුම සමඟ සන්නිවේදනය කිරීමේදී වැරදි අන්තර්ගතයන් උපුටා දක්වනු ඇත
+ target_origin: වාර්තා කළ ගිණුමේ ආරම්භය
title: වාර්තා
+ unassign: පැවරීම ඉවත් කරන්න
+ unresolved: නොවිසඳී ඇත
+ updated_at: යාවත්කාලීන කරන ලදී
+ view_profile: පැතිකඩ බලන්න
rules:
add_new: නීතිය එකතු කරන්න
+ delete: මකන්න
+ description_html: බොහෝ දෙනා සේවා කොන්දේසි කියවා එකඟ වූ බව ප්රකාශ කරන අතර, සාමාන්යයෙන් මිනිසුන් ගැටලුවක් පැනනඟින තුරු කියවා නොගනිති. පැතලි බුලට් පොයින්ට් ලිස්ට් එකකින් ඒවා ලබා දීමෙන් බැලූ බැල්මට ඔබේ සේවාදායකයේ නීති බැලීම පහසු කරන්න. තනි නීති කෙටි හා සරලව තබා ගැනීමට උත්සාහ කරන්න, නමුත් ඒවා විවිධ අයිතම වලට බෙදීමට උත්සාහ නොකරන්න.
edit: නීතිය සංස්කරණය කරන්න
+ empty: තවමත් සේවාදායක රීති නිර්වචනය කර නොමැත.
title: සේවාදායකයේ නීති
settings:
+ activity_api_enabled:
+ desc_html: සතිපතා බාල්දිවල දේශීයව ප්රකාශිත පළ කිරීම්, ක්රියාකාරී පරිශීලකයින් සහ නව ලියාපදිංචි කිරීම් ගණන
+ title: API හි පරිශීලක ක්රියාකාරකම් පිළිබඳ සමස්ත සංඛ්යාලේඛන ප්රකාශයට පත් කරන්න
+ bootstrap_timeline_accounts:
+ desc_html: බහු පරිශීලක නාම කොමාවෙන් වෙන් කරන්න. මෙම ගිණුම් පහත සඳහන් නිර්දේශවල පෙන්වීමට සහතික වනු ඇත
+ title: නව පරිශීලකයින්ට මෙම ගිණුම් නිර්දේශ කරන්න
contact_information:
email: ව්යාපාරික වි-තැපෑල
+ username: පරිශීලක නාමය අමතන්න
+ custom_css:
+ desc_html: සෑම පිටුවකම පටවා ඇති CSS සමඟ පෙනුම වෙනස් කරන්න
+ title: අභිරුචි CSS
+ default_noindex:
+ desc_html: මෙම සැකසුම තමන් විසින්ම වෙනස් කර නොමැති සියලුම පරිශීලකයින්ට බලපායි
+ title: පෙරනිමියෙන් සෙවුම් යන්ත්ර සුචිගත කිරීමෙන් පරිශීලකයින් ඉවත් කරන්න
+ domain_blocks:
+ all: හැමෝටම
+ disabled: කාටවත් නෑ
+ title: වසම් වාරණ පෙන්වන්න
+ users: පුරනය වී ඇති දේශීය පරිශීලකයින් වෙත
+ domain_blocks_rationale:
+ title: තාර්කිකත්වය පෙන්වන්න
+ hero:
+ desc_html: මුල් පිටුවේ ප්රදර්ශනය කෙරේ. අවම වශයෙන් 600x100px නිර්දේශිතයි. සකසා නොමැති විට, සේවාදායක සිඟිති රුව වෙත ආපසු වැටේ
+ title: වීර රූපය
+ mascot:
+ desc_html: පිටු කිහිපයක ප්රදර්ශනය කෙරේ. අවම වශයෙන් 293×205px නිර්දේශිතයි. සකසා නොමැති විට, පෙරනිමි මැස්කොට් වෙත ආපසු වැටේ
+ title: මැස්කොට් රූපය
+ peers_api_enabled:
+ desc_html: මෙම සේවාදායකය fediverse තුළ හමු වූ වසම් නම්
+ title: API හි සොයාගත් සේවාදායක ලැයිස්තුවක් ප්රකාශයට පත් කරන්න
+ preview_sensitive_media:
+ desc_html: මාධ්ය සංවේදී ලෙස සලකුණු කළත් වෙනත් වෙබ් අඩවිවල සබැඳි පෙරදසුන් සිඟිති රූපයක් පෙන්වයි
+ title: OpenGraph පෙරදසුන් තුළ සංවේදී මාධ්ය පෙන්වන්න
+ profile_directory:
+ desc_html: පරිශීලකයින්ට සොයාගත හැකි වීමට ඉඩ දෙන්න
+ title: පැතිකඩ නාමාවලිය සබල කරන්න
+ registrations:
+ closed_message:
+ desc_html: ලියාපදිංචිය වසා ඇති විට මුල් පිටුවේ ප්රදර්ශනය කෙරේ. ඔබට HTML ටැග් භාවිතා කළ හැකිය
+ title: සංවෘත ලියාපදිංචි පණිවිඩය
+ deletion:
+ desc_html: ඕනෑම කෙනෙකුට තම ගිණුම මකා දැමීමට ඉඩ දෙන්න
+ title: ගිණුම් මකාදැමීම විවෘත කරන්න
+ require_invite_text:
+ desc_html: ලියාපදිංචිය සඳහා අතින් අනුමැතිය අවශ්ය වූ විට, "ඔබට සම්බන්ධ වීමට අවශ්ය වන්නේ ඇයි?" විකල්ප වෙනුවට පෙළ ආදානය අනිවාර්ය වේ
+ title: සම්බන්ධ වීමට හේතුවක් ඇතුළත් කිරීමට නව පරිශීලකයින්ට අවශ්ය වේ
+ registrations_mode:
+ modes:
+ approved: ලියාපදිංචි වීමට අනුමැතිය අවශ්යයි
+ none: කිසිවෙකුට ලියාපදිංචි විය නොහැක
+ open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක
+ title: ලියාපදිංචි කිරීමේ මාදිලිය
+ show_known_fediverse_at_about_page:
+ desc_html: අබල කළ විට, ගොඩබෑමේ පිටුවෙන් සම්බන්ධ කර ඇති පොදු කාලරාමුව දේශීය අන්තර්ගතය පමණක් පෙන්වීමට සීමා කරයි
+ title: සත්යාපනය නොකළ පොදු කාලරේඛා පිටුවේ ෆෙඩරේටඩ් අන්තර්ගතය ඇතුළත් කරන්න
site_description:
+ desc_html: API හි හඳුන්වාදීමේ ඡේදය. මෙම Mastodon සේවාදායකය විශේෂ වන්නේ කුමක්ද සහ වෙනත් වැදගත් දෙයක් විස්තර කරන්න. ඔබට HTML ටැග් භාවිතා කළ හැකිය, විශේෂයෙන් <a>
සහ <em>
.
title: සේවාදායකයේ සවිස්තරය
+ site_description_extended:
+ desc_html: ඔබේ චර්යාධර්ම සංග්රහය, රීති, මාර්ගෝපදේශ සහ ඔබේ සේවාදායකය වෙන් කරන වෙනත් දේවල් සඳහා හොඳ තැනක්. ඔබට HTML ටැග් භාවිතා කළ හැකිය
+ title: අභිරුචි දීර්ඝ තොරතුරු
site_short_description:
+ desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න.
title: සේවාදායකයේ කෙටි සවිස්තරය
site_title: සේවාදායකයේ නම
+ thumbnail:
+ desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි
+ title: සේවාදායක සිඟිති රුව
+ timeline_preview:
+ desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්රවේශයට ඉඩ දෙන්න
+ title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න
title: අඩවියේ සැකසුම්
+ trends:
+ desc_html: දැනට ප්රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්රසිද්ධියේ සංදර්ශන කරන්න
+ title: ප්රවණතා
+ site_uploads:
+ delete: උඩුගත කළ ගොනුව මකන්න
+ destroyed_msg: අඩවිය උඩුගත කිරීම සාර්ථකව මකා ඇත!
statuses:
back_to_account: ගිණුම් පිටුවට ආපසු යන්න
+ back_to_report: වාර්තා පිටුවට ආපසු යන්න
+ batch:
+ remove_from_report: වාර්තාවෙන් ඉවත් කරන්න
+ report: වාර්තාව
+ deleted: මකා දමන ලදී
media:
title: මාධ්යය
- with_media: මාධ්ය සමඟ
+ no_status_selected: කිසිවක් තෝරා නොගත් බැවින් තනතුරු කිසිවක් වෙනස් කර නැත
+ title: ගිණුම් තනතුරු
+ with_media: මාධ්ය දායකත්වය
+ strikes:
+ actions:
+ delete_statuses: "%{target}ගේ පළ කිරීම් %{name} මකා දමන ලදී"
+ disable: "%{name} %{target}ගේ ගිණුම නිශ්චල කළේය"
+ mark_statuses_as_sensitive: "%{name} %{target}ගේ පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත"
+ none: "%{name} %{target}අනතුරු ඇඟවීමක් යවා ඇත"
+ sensitive: "%{name} %{target}ගේ ගිණුම සංවේදී ලෙස ලකුණු කර ඇත"
+ silence: "%{name} සීමිත %{target}ගිණුමක්"
+ suspend: "%{name} %{target}ගේ ගිණුම අත්හිටුවා ඇත"
+ appeal_approved: අභියාචනා කළා
+ appeal_pending: අභියාචනය පොරොත්තුවෙන්
+ system_checks:
+ database_schema_check:
+ message_html: පොරොත්තු දත්ත සමුදා සංක්රමණයන් ඇත. යෙදුම අපේක්ෂිත පරිදි ක්රියා කරන බව සහතික කිරීමට කරුණාකර ඒවා ධාවනය කරන්න
+ elasticsearch_running_check:
+ message_html: Elasticsearch වෙත සම්බන්ධ වීමට නොහැකි විය. කරුණාකර එය ක්රියාත්මක වන බව පරීක්ෂා කරන්න, නැතහොත් සම්පූර්ණ පෙළ සෙවීම අක්රීය කරන්න
+ elasticsearch_version_check:
+ message_html: 'නොගැලපෙන ඉලාස්ටික් සෙවුම් අනුවාදය: %{value}'
+ version_comparison: Elasticsearch %{running_version} ක්රියාත්මක වන අතර %{required_version} අවශ්ය වේ
+ rules_check:
+ action: සේවාදායක නීති කළමනාකරණය කරන්න
+ message_html: ඔබ සේවාදායක රීති කිසිවක් නිර්වචනය කර නැත.
+ sidekiq_process_check:
+ message_html: "%{value} පෝලිම්(ය) සඳහා Sidekiq ක්රියාවලියක් ක්රියාත්මක නොවේ. කරුණාකර ඔබේ Sidekiq වින්යාසය සමාලෝචනය කරන්න"
+ tags:
+ review: තත්ත්වය සමාලෝචනය කරන්න
+ updated_msg: Hashtag සැකසුම් සාර්ථකව යාවත්කාලීන කරන ලදී
title: පරිපාලනය
+ trends:
+ allow: ඉඩ දෙන්න
+ approved: අනුමත කළා
+ disallow: අවසර නොදෙන්න
+ links:
+ allow: සබැඳියට ඉඩ දෙන්න
+ allow_provider: ප්රකාශකයාට ඉඩ දෙන්න
+ description_html: මේවා ඔබගේ සේවාදායකය විසින් පළ කිරීම් දකින ගිණුම් මගින් දැනට බොහෝ සෙයින් බෙදා ගන්නා සබැඳි වේ. එය ඔබගේ පරිශීලකයින්ට ලෝකයේ සිදුවෙමින් පවතින දේ සොයා ගැනීමට උදවු කළ හැක. ඔබ ප්රකාශකයා අනුමත කරන තුරු සබැඳි කිසිවක් ප්රසිද්ධියේ ප්රදර්ශනය නොවේ. ඔබට තනි සබැඳිවලට ඉඩ දීමට හෝ ප්රතික්ෂේප කිරීමටද හැකිය.
+ disallow: සබැඳියට ඉඩ නොදෙන්න
+ disallow_provider: ප්රකාශකයාට ඉඩ නොදෙන්න
+ shared_by_over_week:
+ one: පසුගිය සතිය පුරා එක් පුද්ගලයෙකු විසින් බෙදා ගන්නා ලදී
+ other: පසුගිය සතිය පුරා පුද්ගලයින් %{count} දෙනෙකු විසින් බෙදා ගන්නා ලදී
+ title: නැඟී එන සබැඳි
+ usage_comparison: ඊයේ %{yesterday} හා සසඳන විට අද %{today} වරක් බෙදා ගන්නා ලදී
+ only_allowed: අවසර දී ඇත
+ pending_review: පොරොත්තු සමාලෝචනය
+ preview_card_providers:
+ allowed: මෙම ප්රකාශකයාගේ සබැඳි නැඹුරු විය හැක
+ description_html: මේවා බොහෝ විට ඔබගේ සේවාදායකයේ සබැඳි බෙදා ගන්නා වසම් වේ. සබැඳියේ වසම අනුමත කරන්නේ නම් මිස සබැඳි ප්රසිද්ධියේ නැඹුරු නොවේ. ඔබගේ අනුමැතිය (හෝ ප්රතික්ෂේප කිරීම) උපවසම් දක්වා විහිදේ.
+ rejected: මෙම ප්රකාශකයාගේ සබැඳි නැඹුරු නොවනු ඇත
+ title: ප්රකාශකයන්
+ rejected: ප්රතික්ෂේප කළා
+ statuses:
+ allow: පළ කිරීමට ඉඩ දෙන්න
+ allow_account: කතුවරයාට ඉඩ දෙන්න
+ description_html: මේ වන විට ඔබේ සේවාදායකය දන්නා පෝස්ට් මේ වන විට බොහෝ බෙදාහරින සහ මේ මොහොතේ වැඩි කැමැත්තක් දක්වයි. එය ඔබගේ නව සහ නැවත පැමිණෙන පරිශීලකයින්ට අනුගමනය කිරීමට තවත් පුද්ගලයින් සොයා ගැනීමට උදවු කළ හැක. ඔබ කර්තෘ අනුමත කරන තෙක් පළ කිරීම් කිසිවක් ප්රසිද්ධියේ නොපෙන්වන අතර, කර්තෘ තම ගිණුම අන් අයට යෝජනා කිරීමට ඉඩ දෙයි. ඔබට තනි පළ කිරීම්වලට ඉඩ දීමට හෝ ප්රතික්ෂේප කිරීමටද හැකිය.
+ disallow: පළ කිරීමට ඉඩ නොදෙන්න
+ disallow_account: කතුවරයාට ඉඩ නොදෙන්න
+ not_discoverable: කර්තෘ සොයා ගත හැකි බව තෝරාගෙන නැත
+ shared_by:
+ one: එක් වරක් බෙදාගත් හෝ ප්රිය කරන ලදී
+ other: "%{friendly_count} වරක් බෙදාගෙන ප්රිය කරන ලදී"
+ title: ප්රවණතා පළ කිරීම්
+ tags:
+ current_score: වත්මන් ලකුණු %{score}
+ dashboard:
+ tag_accounts_measure: අද්විතීය භාවිතයන්
+ tag_languages_dimension: ඉහළම භාෂා
+ tag_servers_dimension: ඉහළම සේවාදායකයන්
+ tag_servers_measure: විවිධ සේවාදායකයන්
+ tag_uses_measure: සම්පූර්ණ භාවිතය
+ description_html: මේවා දැනට ඔබගේ සේවාදායකය දකින බොහෝ පළ කිරීම් වල දිස්වන හැෂ් ටැග් වේ. මේ මොහොතේ මිනිසුන් වැඩිපුරම කතා කරන්නේ කුමක් දැයි සොයා ගැනීමට එය ඔබගේ පරිශීලකයින්ට උදවු කළ හැක. ඔබ ඒවා අනුමත කරන තුරු හෑෂ් ටැග් ප්රසිද්ධියේ නොපෙන්වයි.
+ listable: යෝජනා කළ හැක
+ not_listable: යෝජනා නොකරනු ඇත
+ not_trendable: ප්රවණතා යටතේ දිස් නොවනු ඇත
+ not_usable: භාවිතා කළ නොහැක
+ peaked_on_and_decaying: "%{date}හි උච්චතම, දැන් දිරාපත් වෙමින් පවතී"
+ title: ප්රවණතා හැෂ් ටැග්
+ trendable: ප්රවණතා යටතේ පෙනී සිටිය හැක
+ trending_rank: 'නැඹුරු #%{rank}'
+ usable: භාවිතා කළ හැක
+ usage_comparison: ඊයේ %{yesterday} හා සසඳන විට අද %{today} වරක් භාවිතා වේ
+ used_by_over_week:
+ one: පසුගිය සතිය පුරා එක් පුද්ගලයෙකු විසින් භාවිතා කරන ලදී
+ other: පසුගිය සතිය පුරා පුද්ගලයින් %{count} දෙනෙකු විසින් භාවිතා කරන ලදී
+ title: ප්රවණතා
+ trending: ප්රවණතා
+ warning_presets:
+ add_new: අලුතින් එකතු කරන්න
+ delete: මකන්න
+ edit_preset: අනතුරු ඇඟවීමේ පෙර සැකසුම සංස්කරණය කරන්න
+ empty: ඔබ තවම කිසිදු අනතුරු ඇඟවීමේ පෙරසිටුවක් නිර්වචනය කර නැත.
+ title: අනතුරු ඇඟවීමේ පෙරසිටුවීම් කළමනාකරණය කරන්න
+ webhooks:
+ add_new: අන්ත ලක්ෂ්යය එක් කරන්න
+ delete: මකන්න
+ description_html: A webhook Mastodon හට තෝරාගත් සිදුවීම් පිළිබඳ තත්ය කාලීන දැනුම්දීම් ක් ඔබේම යෙදුමට තල්ලු කිරීමට හැකියාව ලබා දෙයි, එම නිසා ඔබේ යෙදුමට ස්වයංක්රීයව ප්රතික්රියා අවුලුවාලීමට හැකිය.
+ disable: අක්රිය කරන්න
+ disabled: ආබාධිතයි
+ edit: අන්ත ලක්ෂ්යය සංස්කරණය කරන්න
+ empty: ඔබට තවම වින්යාස කර ඇති කිසිදු webhook අන්ත ලක්ෂ්යයක් නොමැත.
+ enable: සබල කරන්න
+ enabled: ක්රියාකාරී
+ enabled_events:
+ one: 1 සබල කළ සිදුවීමක්
+ other: "%{count} සබල කළ සිදුවීම්"
+ events: සිදුවීම්
+ new: නව webhook
+ rotate_secret: රහස කරකවන්න
+ secret: අත්සන් කිරීමේ රහස
+ status: තත්ත්වය
+ webhook: වෙබ්හුක්
+ admin_mailer:
+ new_appeal:
+ actions:
+ delete_statuses: ඔවුන්ගේ පළ කිරීම් මකා දැමීමට
+ disable: ඔවුන්ගේ ගිණුම කැටි කිරීමට
+ mark_statuses_as_sensitive: ඔවුන්ගේ තනතුරු සංවේදී ලෙස සලකුණු කිරීමට
+ none: අනතුරු ඇඟවීමක්
+ sensitive: ඔවුන්ගේ ගිණුම සංවේදී ලෙස සලකුණු කිරීමට
+ silence: ඔවුන්ගේ ගිණුම සීමා කිරීමට
+ suspend: ඔවුන්ගේ ගිණුම අත්හිටුවීමට
+ body: "%{target} යනු %{type}ක් වූ %{date}සිට %{action_taken_by} කින් මධ්යස්ථ තීරණයක් අභියාචනා කරයි. ඔවුන් මෙසේ ලිවීය."
+ next_steps: ඔබට මධ්යස්ථ තීරණය අවලංගු කිරීමට අභියාචනය අනුමත කළ හැකිය, නැතහොත් එය නොසලකා හරින්න.
+ subject: "%{username} යනු %{instance}හි මධ්යස්ථ තීරණයකට අභියාචනා කරයි"
+ new_pending_account:
+ body: නව ගිණුමේ විස්තර පහතින්. ඔබට මෙම යෙදුම අනුමත කිරීමට හෝ ප්රතික්ෂේප කිරීමට හැකිය.
+ subject: නව ගිණුම සමාලෝචනය සඳහා %{instance} (%{username})
+ new_report:
+ body: "%{reporter} %{target}වාර්තා කර ඇත"
+ body_remote: "%{domain} සිට යමෙක් %{target}වාර්තා කර ඇත"
+ subject: "%{instance} සඳහා නව වාර්තාව (#%{id})"
+ new_trends:
+ body: 'පහත අයිතම ප්රසිද්ධියේ ප්රදර්ශනය කිරීමට පෙර සමාලෝචනයක් අවශ්ය වේ:'
+ new_trending_links:
+ no_approved_links: දැනට අනුමත නැඹුරු සබැඳි නොමැත.
+ requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්රවණතා සබැඳිය ඉක්මවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_link_score}ක් සමඟින් "%{lowest_link_title}" වේ.'
+ title: නැඟී එන සබැඳි
+ new_trending_statuses:
+ no_approved_statuses: දැනට අනුමත ප්රවණතා පළ කිරීම් නොමැත.
+ requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්රවණතා පළ කිරීම අභිබවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_status_score}ක් සමඟින් %{lowest_status_url} වේ.'
+ title: ප්රවණතා පළ කිරීම්
+ new_trending_tags:
+ no_approved_tags: දැනට අනුමත ප්රවණතා හැෂ් ටැග් නොමැත.
+ requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්රවණතා හැෂ් ටැගය අභිබවා යා හැකිය, එය දැනට ලකුණු %{lowest_tag_score}ක් සමඟ #%{lowest_tag_name} වේ.'
+ title: ප්රවණතා හැෂ් ටැග්
+ subject: "%{instance}හි සමාලෝචනය සඳහා නව ප්රවණතා"
+ 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 ස්වේච්ඡා සේවකයන් විසින් පරිවර්තනය කර ඇත.
guide_link: https://crowdin.com/project/mastodon
- sensitive_content: සංවේදී අන්තර්ගතයකි
+ guide_link_text: සෑම කෙනෙකුටම දායක විය හැකිය.
+ sensitive_content: සංවේදී අන්තර්ගතය
+ toot_layout: පෝස්ට් පිරිසැලසුම
application_mailer:
+ notification_preferences: ඊමේල් මනාප වෙනස් කරන්න
salutation: "%{name},"
+ settings: 'ඊමේල් මනාප වෙනස් කරන්න: %{link}'
+ view: 'දැක්ම:'
+ view_profile: පැතිකඩ බලන්න
+ view_status: පළ කිරීම බලන්න
+ applications:
+ created: යෙදුම සාර්ථකව නිර්මාණය කරන ලදී
+ destroyed: යෙදුම සාර්ථකව මකා ඇත
+ regenerate_token: ප්රවේශ ටෝකනය නැවත උත්පාදනය කරන්න
+ token_regenerated: ප්රවේශ ටෝකනය සාර්ථකව ප්රතිජනනය කරන ලදී
+ warning: මෙම දත්ත සමඟ ඉතා ප්රවේශම් වන්න. එය කිසි විටෙක කිසිවෙකු සමඟ බෙදා නොගන්න!
+ your_token: ඔබේ ප්රවේශ ටෝකනය
auth:
+ apply_for_account: ආරාධනාවක් ඉල්ලන්න
change_password: මුර පදය
+ checkbox_agreement_html: මම සේවාදායක රීති සහ සේවා නියමට එකඟ වෙමි
+ checkbox_agreement_without_rules_html: මම සේවා කොන්දේසි එකඟ වෙමි
+ delete_account: ගිණුම මකන්න
+ delete_account_html: ඔබට ඔබගේ ගිණුම මකා දැමීමට අවශ්ය නම්, ඔබට මෙතැනින් ඉදිරියට යා හැක. තහවුරු කිරීම සඳහා ඔබෙන් අසනු ඇත.
+ description:
+ prefix_invited_by_user: "@%{name} ඔබට Mastodon හි මෙම සේවාදායකයට සම්බන්ධ වීමට ආරාධනා කරයි!"
+ prefix_sign_up: අදම Mastodon හි ලියාපදිංචි වන්න!
+ suffix: ගිණුමක් සමඟ, ඔබට ඕනෑම Mastodon සේවාදායකයකින් සහ තවත් බොහෝ දේ භාවිතා කරන්නන් සමඟ පුද්ගලයින් අනුගමනය කිරීමට, යාවත්කාලීන කිරීම් පළ කිරීමට සහ පණිවිඩ හුවමාරු කර ගැනීමට හැකි වනු ඇත!
+ didnt_get_confirmation: තහවුරු කිරීමේ උපදෙස් ලැබුණේ නැද්ද?
+ dont_have_your_security_key: ඔබගේ ආරක්ෂක යතුර නොමැතිද?
+ forgot_password: මුරපදය අමතක වුනාද?
+ invalid_reset_password_token: මුරපද යළි පිහිටුවීමේ ටෝකනය අවලංගු හෝ කල් ඉකුත් වී ඇත. කරුණාකර අලුත් එකක් ඉල්ලන්න.
+ link_to_otp: ඔබගේ දුරකථනයෙන් ද්වි සාධක කේතයක් හෝ ප්රතිසාධන කේතයක් ඇතුළු කරන්න
+ link_to_webauth: ඔබගේ ආරක්ෂක යතුරු උපාංගය භාවිතා කරන්න
+ log_in_with: සමඟ ලොග් වන්න
login: පිවිසෙන්න
logout: නික්මෙන්න
- or_log_in_with: හෝ සමඟ පිවිසෙන්න
+ migrate_account: වෙනත් ගිණුමකට යන්න
+ migrate_account_html: ඔබට මෙම ගිණුම වෙනත් එකකට හරවා යැවීමට අවශ්ය නම්, ඔබට එය මෙහි වින්යාසගත කළ හැක.
+ or_log_in_with: හෝ සමඟින් පිවිසෙන්න
+ register: ලියාපදිංචි වන්න
+ registration_closed: "%{instance} නව සාමාජිකයින් පිළිගන්නේ නැත"
+ resend_confirmation: තහවුරු කිරීමේ උපදෙස් නැවත යවන්න
+ reset_password: මුරපදය නැවත සකසන්න
security: ආරක්ෂාව
+ set_new_password: නව මුරපදය සකසන්න
+ setup:
+ email_below_hint_html: පහත විද්යුත් තැපැල් ලිපිනය වැරදි නම්, ඔබට එය මෙතැනින් වෙනස් කර නව තහවුරු කිරීමේ විද්යුත් තැපෑලක් ලබා ගත හැක.
+ email_settings_hint_html: තහවුරු කිරීමේ විද්යුත් තැපෑල %{email}වෙත යවන ලදී. එම විද්යුත් තැපැල් ලිපිනය නිවැරදි නොවේ නම්, ඔබට එය ගිණුම් සැකසුම් තුළ වෙනස් කළ හැක.
+ title: සැලසුම
status:
account_status: ගිණුමේ තත්වය
+ confirming: විද්යුත් තැපෑල තහවුරු කිරීම සම්පූර්ණ කිරීම සඳහා රැඳී සිටිමින්.
+ functional: ඔබගේ ගිණුම සම්පුර්ණයෙන්ම ක්රියාත්මකයි.
+ pending: ඔබගේ අයදුම්පත අපගේ කාර්ය මණ්ඩලය විසින් සමාලෝචනය කිරීමට බලාපොරොත්තු වේ. මෙය යම් කාලයක් ගත විය හැක. ඔබගේ අයදුම්පත අනුමත වුවහොත් ඔබට විද්යුත් තැපෑලක් ලැබෙනු ඇත.
+ redirecting_to: එය දැනට %{acct}වෙත හරවා යවන බැවින් ඔබගේ ගිණුම අක්රියයි.
+ view_strikes: ඔබගේ ගිණුමට එරෙහිව පසුගිය වර්ජන බලන්න
+ too_fast: පෝරමය ඉතා වේගයෙන් ඉදිරිපත් කර ඇත, නැවත උත්සාහ කරන්න.
+ trouble_logging_in: පුරනය වීමේ ගැටලුවක්ද?
+ use_security_key: ආරක්ෂක යතුර භාවිතා කරන්න
authorize_follow:
+ already_following: ඔබ දැනටමත් මෙම ගිණුම අනුගමනය කරයි
+ already_requested: ඔබ දැනටමත් එම ගිණුමට අනුගමනය ඉල්ලීමක් යවා ඇත
+ error: අවාසනාවකට, දුරස්ථ ගිණුම සෙවීමේදී දෝෂයක් ඇති විය
+ follow: අනුගමනය කරන්න
+ follow_request: 'ඔබ පහත ඉල්ලීමක් යවා ඇත:'
+ following: 'සාර්ථකත්වය! ඔබ දැන් පහත දැක්වේ:'
post_follow:
close: හෝ ඔබට මෙම කවුළුව වසාදැමිය හැකිය.
return: පරිශීලකගේ පැතිකඩ පෙන්වන්න
web: වියමන ට යන්න
+ title: "%{acct}අනුගමනය කරන්න"
challenge:
confirm: ඉදිරියට
- invalid_password: අවලංගු නොවන මුරපදයකි
+ hint_html: "ඉඟිය: අපි ඉදිරි පැය සඳහා නැවත ඔබගේ මුරපදය ඔබෙන් නොඉල්ලමු."
+ invalid_password: නොවන මුරපදයකි
+ prompt: ඉදිරියට යාමට මුරපදය තහවුරු කරන්න
+ crypto:
+ 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}
+ about_x_months: මාස %{count}
+ half_a_minute: මේ දැන්
+ less_than_x_minutes: මීටර් %{count}
less_than_x_seconds: මේ දැන්
+ x_minutes: මීටර් %{count}
+ 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}ගවේෂණය කරන්න"
+ disputes:
+ strikes:
+ action_taken: පියවර ගත්තා
+ appeal: අභියාචනය
+ appeal_approved: මෙම වර්ජනය සාර්ථකව අභියාචනා කර ඇති අතර එය තවදුරටත් වලංගු නොවේ
+ appeal_rejected: අභියාචනය ප්රතික්ෂේප කර ඇත
+ appeal_submitted_at: අභියාචනය ඉදිරිපත් කරන ලදී
+ appealed_msg: ඔබගේ අභියාචනය ඉදිරිපත් කර ඇත. එය අනුමත වුවහොත්, ඔබට දැනුම් දෙනු ලැබේ.
+ appeals:
+ submit: අභියාචනය ඉදිරිපත් කරන්න
+ approve_appeal: අභියාචනය අනුමත කරන්න
+ associated_report: ආශ්රිත වාර්තාව
+ created_at: දිනැති
+ description_html: මේවා ඔබගේ ගිණුමට එරෙහිව ගන්නා ලද ක්රියා සහ %{instance}හි කාර්ය මණ්ඩලය විසින් ඔබට එවා ඇති අනතුරු ඇඟවීම් වේ.
+ recipient: වෙත යොමු කරන ලදී
+ reject_appeal: අභියාචනය ප්රතික්ෂේප කරන්න
+ status: 'පළ කිරීම #%{id}'
+ status_removed: පළ කිරීම දැනටමත් පද්ධතියෙන් ඉවත් කර ඇත
+ title: "%{action} සිට %{date}"
+ title_actions:
+ delete_statuses: පසු ඉවත් කිරීම
+ disable: ගිණුම කැටි කිරීම
+ mark_statuses_as_sensitive: තනතුරු සංවේදී ලෙස සලකුණු කිරීම
+ none: අවවාදයයි
+ sensitive: ගිණුම සංවේදී ලෙස සලකුණු කිරීම
+ silence: ගිණුම සීමා කිරීම
+ suspend: ගිණුම අත්හිටුවීම
+ your_appeal_approved: ඔබගේ අභියාචනය අනුමත කර ඇත
+ your_appeal_pending: ඔබ අභියාචනයක් ඉදිරිපත් කර ඇත
+ your_appeal_rejected: ඔබගේ අභියාචනය ප්රතික්ෂේප කර ඇත
+ domain_validator:
+ invalid_domain: වලංගු ඩොමේන් නාමයක් නොවේ
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.
+ '400': ඔබ ඉදිරිපත් කළ ඉල්ලීම අවලංගු හෝ විකෘති විය.
+ '403': ඔබට මෙම පිටුව බැලීමට අවසර නැත.
+ '404': ඔබ සොයන පිටුව මෙහි නොමැත.
+ '406': මෙම පිටුව ඉල්ලන ලද ආකෘතියෙන් නොමැත.
+ '410': ඔබ සොයන පිටුව තවදුරටත් මෙහි නොමැත.
+ '422':
+ content: ආරක්ෂක සත්යාපනය අසාර්ථක විය. ඔබ කුකීස් අවහිර කරනවාද?
+ title: ආරක්ෂක සත්යාපනය අසාර්ථක විය
+ '429': ඉල්ලීම් වැඩියි
+ '500':
+ content: අපට කණගාටුයි, නමුත් අපගේ පැත්තෙන් යමක් වැරදී ඇත.
+ title: මෙම පිටුව නිවැරදි නොවේ
+ '503': තාවකාලික සේවාදායකයේ අසාර්ථක වීමක් හේතුවෙන් පිටුව සේවය කිරීමට නොහැකි විය.
+ noscript_html: Mastodon වෙබ් යෙදුම භාවිතා කිරීමට, කරුණාකර JavaScript සක්රීය කරන්න. විකල්පයක් ලෙස, ඔබේ වේදිකාව සඳහා එකක් උත්සාහ කරන්න.
+ existing_username_validator:
+ not_found: එම පරිශීලක නාමය සහිත දේශීය පරිශීලකයෙකු සොයා ගැනීමට නොහැකි විය
+ not_found_multiple: "%{usernames}සොයා ගැනීමට නොහැකි විය"
exports:
archive_takeout:
date: දිනය
- download: ඔබගේ සංරක්ෂිතය බාගන්න
+ download: ඔබගේ සුරක්ෂිතභාවය බාගන්න
+ hint_html: ඔබට ඔබගේ පළ කිරීම් සහ උඩුගත කළ මාධ්යහි සංරක්ෂිතයක් ඉල්ලා සිටිය හැක. නිර්යාත කළ දත්ත ActivityPub ආකෘතියෙන්, ඕනෑම අනුකූල මෘදුකාංගයකට කියවිය හැකිය. ඔබට දින 7කට වරක් ලේඛනාගාරයක් ඉල්ලා සිටිය හැක.
+ in_progress: ඔබගේ සංරක්ෂිතය සම්පාදනය කරමින්...
+ request: ඔබගේ සංරක්ෂිතය ඉල්ලන්න
size: ප්රමාණය
- bookmarks: පොත් යොමු
- lists: ලැයිස්තු
+ blocks: ඔබ අවහිර කරන්න
+ bookmarks: පොත් යොමු කරන්න
+ domain_blocks: වසම් අවහිර කිරීම්
+ lists: ලැයිස්තුව
+ mutes: ඔබ නිහඬ කරන්න
storage: මාධ්ය ගබඩාව
+ featured_tags:
+ add_new: අලුතින් එකතු කරන්න
+ errors:
+ limit: ඔබ දැනටමත් උපරිම හෑෂ් ටැග් ප්රමාණය විශේෂාංග කර ඇත
+ hint_html: "විශේෂාංගගත හැෂ් ටැග් මොනවාද? ඒවා ඔබේ පොදු පැතිකඩෙහි ප්රමුඛව ප්රදර්ශනය වන අතර එම හැෂ් ටැග් යටතේ ඔබේ පොදු පළ කිරීම් බ්රවුස් කිරීමට මිනිසුන්ට ඉඩ සලසයි. නිර්මාණාත්මක කෘති හෝ දිගු කාලීන ව්යාපෘති පිළිබඳ වාර්තාවක් තබා ගැනීම සඳහා ඔවුන් විශිෂ්ට මෙවලමක් වේ."
filters:
contexts:
account: පැතිකඩයන්
+ home: නිවස සහ ලැයිස්තු
notifications: දැනුම්දීම්
+ public: පොදු කාලරේඛා
thread: සංවාද
edit:
+ add_keyword: මූල පදය එක් කරන්න
+ keywords: මූල පද
title: පෙරහන සංස්කරණය
+ errors:
+ deprecated_api_multiple_keywords: මෙම පරාමිති පෙරහන් මූල පද එකකට වඩා අදාළ වන බැවින් මෙම යෙදුමෙන් වෙනස් කළ නොහැක. වඩාත් මෑත යෙදුමක් හෝ වෙබ් අතුරු මුහුණතක් භාවිතා කරන්න.
+ invalid_context: කිසිවක් හෝ වලංගු නොවන සන්දර්භයක් සපයා නැත
index:
+ contexts: "%{contexts}හි පෙරහන්"
+ delete: මකන්න
+ empty: ඔබට පෙරහන් නොමැත.
+ expires_in: "%{distance}කින් කල් ඉකුත් වේ"
+ expires_on: "%{date}දින කල් ඉකුත් වේ"
+ keywords:
+ one: "%{count} මූල පදය"
+ other: "%{count} මූල පද"
title: පෙරහන්
new:
+ save: නව පෙරහන සුරකින්න
title: නව පෙරහනක් එකතු කරන්න
footer:
developers: සංවර්ධකයින්
more: තව…
resources: සම්පත්
+ trending_now: දැන් ප්රවණතාවය
generic:
all: සියල්ල
+ changes_saved_msg: වෙනස්කම් සාර්ථකව සුරකින ලදී!
copy: පිටපත්
+ delete: මකන්න
+ none: කිසිවක් නැත
+ order_by: විසින් ඇණවුම් කරන්න
save_changes: වෙනස්කම් සුරකින්න
+ today: අද
+ validation_errors:
+ one: යමක් තවමත් හරි නැත! කරුණාකර පහත දෝෂය සමාලෝචනය කරන්න
+ other: යමක් තවමත් හරි නැත! කරුණාකර පහත දෝෂ %{count} ක් සමාලෝචනය කරන්න
+ html_validator:
+ invalid_markup: 'වලංගු නොවන HTML සලකුණු අඩංගු වේ: %{error}'
imports:
+ errors:
+ over_rows_processing_limit: පේළි %{count} කට වඩා අඩංගු වේ
+ modes:
+ merge: ඒකාබද්ධ කරන්න
+ merge_long: පවතින වාර්තා තබා නව ඒවා එකතු කරන්න
+ overwrite: උඩින් ලියන්න
+ overwrite_long: වත්මන් වාර්තා නව ඒවා සමඟ ප්රතිස්ථාපනය කරන්න
+ preface: ඔබ අනුගමන කරන හෝ අවහිර කරන පුද්ගලයින්ගේ ලැයිස්තුවක් වැනි වෙනත් සේවාදායකයකින් ඔබ නිර්යාත කර ඇති දත්ත ඔබට ආයාත කළ හැක.
+ success: ඔබගේ දත්ත සාර්ථකව උඩුගත කර ඇති අතර නියමිත වේලාවට සැකසෙනු ඇත
types:
- bookmarks: පොත් යොමු
+ blocking: අවහිර කිරීමේ ලැයිස්තුව
+ bookmarks: පොත් යොමු කරන්න
+ domain_blocking: වසම් අවහිර කිරීමේ ලැයිස්තුව
+ following: පහත ලැයිස්තුව
+ muting: නිහඬ කිරීමේ ලැයිස්තුව
upload: උඩුගත කරන්න
+ in_memoriam_html: මතකය තුළ.
invites:
+ delete: අක්රිය කරන්න
+ expired: කල් ඉකුත් වී ඇත
expires_in:
'1800': විනාඩි 30
- '21600': හෝරා 6
- '3600': හෝරා 1
- '43200': හෝරා 12
+ '21600': පැය 6
+ '3600': පැය 1
+ '43200': පැය 12
'604800': සති 1
'86400': දවස් 1
+ expires_in_prompt: කවදාවත් නැහැ
+ generate: ආරාධනා සබැඳිය උත්පාදනය කරන්න
+ invited_by: 'ඔබට ආරාධනා කළේ:'
+ max_uses:
+ one: 1 භාවිතය
+ other: "%{count} භාවිතා කරයි"
+ max_uses_prompt: සීමාවක් නැත
+ prompt: මෙම සේවාදායකයට ප්රවේශය ලබා දීමට අන් අය සමඟ සබැඳි ජනනය කර බෙදා ගන්න
+ table:
+ expires_at: කල් ඉකුත් වේ
+ uses: භාවිතා කරයි
title: මිනිසුන්ට ආරාධනා කරන්න
+ lists:
+ errors:
+ limit: ඔබ උපරිම ලැයිස්තු ප්රමාණයට ළඟා වී ඇත
login_activities:
authentication_methods:
+ otp: ද්වි-සාධක සත්යාපන යෙදුම
password: මුර පදය
+ sign_in_token: ඊමේල් ආරක්ෂක කේතය
+ webauthn: ආරක්ෂක යතුරු
+ description_html: ඔබ හඳුනා නොගත් ක්රියාකාරකම් ඔබ දුටුවහොත්, ඔබේ මුරපදය වෙනස් කිරීම සහ ද්වි-සාධක සත්යාපනය සක්රීය කිරීම සලකා බලන්න.
+ empty: සත්යාපන ඉතිහාසයක් නොමැත
+ failed_sign_in_html: "%{ip} (%{browser}) සිට %{method} සමඟ අසාර්ථක පුරනය වීමේ උත්සාහය"
+ successful_sign_in_html: "%{ip} (%{browser}) සිට %{method} සමඟ සාර්ථක පුරනය වීම"
+ title: සත්යාපන ඉතිහාසය
+ 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: ඔබ සිසිලනය මත සිටී
+ followers_count: චලනය වන අවස්ථාවේ අනුගාමිකයන්
+ incoming_migrations: වෙනත් ගිණුමකින් මාරු වීම
+ incoming_migrations_html: වෙනත් ගිණුමකින් මෙම ගිණුමට මාරු වීමට, පළමුව ඔබ අන්වර්ථගිණුමක් සෑදිය යුතුය.
+ moved_msg: ඔබගේ ගිණුම දැන් %{acct} වෙත හරවා යවනු ලබන අතර ඔබගේ අනුගාමිකයින් එහා මෙහා ගෙන යමින් පවතී.
+ not_redirecting: ඔබගේ ගිණුම දැනට වෙනත් කිසිදු ගිණුමකට හරවා යවන්නේ නැත.
+ on_cooldown: ඔබ මෑතකදී ඔබගේ ගිණුම සංක්රමණය කර ඇත. මෙම කාර්යය දින %{count} කින් නැවත ලබා ගත හැකි වනු ඇත.
+ past_migrations: අතීත සංක්රමණ
+ proceed_with_move: අනුගාමිකයන් මාරු කරන්න
+ redirected_msg: ඔබගේ ගිණුම දැන් %{acct}වෙත හරවා යවනු ලැබේ.
+ 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:
+ admin:
+ report:
+ subject: "%{name} වාර්තාවක් ඉදිරිපත් කළේය"
+ sign_up:
+ subject: "%{name} අත්සන් කර ඇත"
+ favourite:
+ body: 'ඔබේ පළ කිරීම %{name}විසින් ප්රිය කරන ලදී:'
+ subject: "%{name} ඔබගේ පළ කිරීම ප්රිය කරන ලදී"
+ title: නව ප්රියතම
+ follow:
+ body: "%{name} දැන් ඔබව අනුගමනය කරයි!"
+ subject: "%{name} දැන් ඔබව අනුගමනය කරයි"
+ title: නව අනුගාමිකයෙක්
+ follow_request:
+ action: අනුගමනය කරන ඉල්ලීම් කළමනාකරණය කරන්න
+ body: "%{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත"
+ subject: 'පොරොත්තු අනුගාමිකයා: %{name}'
+ title: නව අනුගමනය ඉල්ලීම
mention:
action: පිළිතුර
+ body: 'ඔබව මෙහි %{name} කින් සඳහන් කර ඇත:'
+ subject: ඔබව %{name}මගින් සඳහන් කර ඇත
title: නව සඳැහුම
+ poll:
+ subject: "%{name} න් මත විමසුමක් අවසන් විය"
+ reblog:
+ body: 'ඔබේ පළ කිරීම %{name}කින් වැඩි කරන ලදී:'
+ subject: "%{name} ඔබේ පළ කිරීම ඉහළ නැංවීය"
+ title: නව තල්ලුවක්
+ status:
+ subject: "%{name} දැන් පළ කළා"
+ update:
+ subject: "%{name} පළ කිරීමක් සංස්කරණය කළා"
notifications:
+ email_events: ඊමේල් දැනුම්දීම් සඳහා සිදුවීම්
+ email_events_hint: 'ඔබට දැනුම්දීම් ලැබීමට අවශ්ය සිදුවීම් තෝරන්න:'
other_settings: වෙනත් දැනුම්දීම් සැකසුම්
number:
human:
decimal_units:
format: "%n%u"
+ units:
+ billion: බී
+ million: එම්
+ quadrillion: ප්රශ්නය
+ thousand: කේ
+ trillion: ටී
otp_authentication:
+ code_hint: තහවුරු කිරීමට ඔබගේ සත්යාපන යෙදුම මගින් ජනනය කරන ලද කේතය ඇතුළු කරන්න
+ description_html: ඔබ සත්යාපන යෙදුමක් භාවිතයෙන් ද්වි-සාධක සත්යාපනය සක්රීය කරන්නේ නම්, ලොගින් වීමේදී ඔබට ඔබගේ දුරකථනය සන්තකයේ තබා ගැනීමට අවශ්ය වනු ඇත, එය ඔබට ඇතුළු වීමට ටෝකන ජනනය කරයි.
enable: සබල කරන්න
+ instructions_html: "මෙම QR කේතය ඔබගේ දුරකථනයේ Google Authenticator හෝ එවැනිම TOTP යෙදුමකට පරිලෝකනය කරන්න. මෙතැන් සිට, එම යෙදුම ඔබට ලොග් වීමේදී ඇතුළත් කළ යුතු ටෝකන ජනනය කරයි."
+ manual_instructions: 'ඔබට QR කේතය පරිලෝකනය කළ නොහැකි නම් සහ එය අතින් ඇතුල් කිරීමට අවශ්ය නම්, මෙන්න සරල පෙළ රහස:'
+ setup: සැලසුම
+ wrong_code: ඇතුළත් කළ කේතය අවලංගුයි! සේවාදායක වේලාව සහ උපාංග වේලාව නිවැරදිද?
pagination:
- next: ඊළඟ
+ newer: අලුත්
+ next: සඳහා
+ older: වැඩිහිටි
+ prev: පෙර
truncate: "…"
+ polls:
+ errors:
+ already_voted: ඔබ දැනටමත් මෙම මත විමසුමට ඡන්දය දී ඇත
+ duplicate_options: අනුපිටපත් අයිතම අඩංගු වේ
+ duration_too_long: අනාගතයට බොහෝ දුරයි
+ duration_too_short: ඉතා ඉක්මනින් වේ
+ expired: මත විමසුම දැනටමත් අවසන් වී ඇත
+ invalid_choice: තෝරාගත් ඡන්ද විකල්පය නොපවතී
+ over_character_limit: එක් එක් අක්ෂර %{max} ට වඩා දිගු විය නොහැක
+ too_few_options: එක් අයිතමයකට වඩා තිබිය යුතුය
+ too_many_options: අයිතම %{max} කට වඩා අඩංගු විය නොහැක
+ preferences:
+ other: වෙනත්
+ posting_defaults: පෙරනිමි පළ කිරීම
+ public_timelines: පොදු කාලරේඛා
+ reactions:
+ errors:
+ limit_reached: විවිධ ප්රතික්රියා වල සීමාව ළඟා විය
+ unrecognized_emoji: පිළිගත් ඉමොජියක් නොවේ
relationships:
activity: ගිණුමේ ක්රියාකාරකම්
- status: ගිණුමේ තත්වය
+ dormant: නිදිමතයි
+ follow_selected_followers: තෝරාගත් අනුගාමිකයින් අනුගමනය කරන්න
+ followers: අනුගාමිකයින්
+ following: අනුගමනය
+ invited: ආරාධනා කළා
+ last_active: අවසන් වරට ක්රියාකාරී
+ most_recent: මෑතකාලීන
+ moved: මාරු කළා
+ mutual: අන්යෝන්ය
+ primary: ප්රාථමික
+ relationship: සම්බන්ධතාවය
+ remove_selected_domains: තෝරාගත් වසම් වලින් සියලුම අනුගාමිකයින් ඉවත් කරන්න
+ remove_selected_followers: තෝරාගත් අනුගාමිකයින් ඉවත් කරන්න
+ remove_selected_follows: තෝරාගත් පරිශීලකයින් අනුගමනය නොකරන්න
+ status: ගිණුමේ තත්ත්වය
+ remote_follow:
+ acct: ඔබට ක්රියා කිරීමට අවශ්ය ඔබගේ username@domain ඇතුලත් කරන්න
+ missing_resource: ඔබගේ ගිණුම සඳහා අවශ්ය යළි-යොමුවීම් URL එක සොයා ගැනීමට නොහැකි විය
+ no_account_html: ගිණුමක් නැද්ද? ඔබට මෙහි ලියාපදිංචි විය හැක
+ proceed: අනුගමනය කිරීමට ඉදිරියට යන්න
+ prompt: 'ඔබ අනුගමනය කිරීමට යන්නේ:'
+ reason_html: "මෙම පියවර අවශ්ය වන්නේ ඇයි? %{instance}
ඔබ ලියාපදිංචි වී ඇති සේවාදායකය නොවිය හැක, එබැවින් අපට පළමුව ඔබව ඔබගේ නිවසේ සේවාදායකය වෙත හරවා යැවිය යුතුය."
+ remote_interaction:
+ favourite:
+ proceed: ප්රියතම වෙත ඉදිරියට යන්න
+ prompt: 'ඔබට මෙම පෝස්ටය ප්රියතම කිරීමට අවශ්යයි:'
+ reblog:
+ proceed: වැඩි කිරීමට ඉදිරියට යන්න
+ prompt: 'ඔබට මෙම පළ කිරීම වැඩි කිරීමට අවශ්යයි:'
+ reply:
+ proceed: පිළිතුරු දීමට ඉදිරියට යන්න
+ prompt: 'ඔබට මෙම පළ කිරීමට පිළිතුරු දීමට අවශ්යයි:'
+ reports:
+ errors:
+ invalid_rules: වලංගු නීති සඳහන් නොකරයි
+ rss:
+ content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම:'
+ descriptions:
+ account: "@%{acct}සිට පොදු පළ කිරීම්"
+ tag: "#%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම්"
+ scheduled_statuses:
+ over_daily_limit: ඔබ අද දිනට නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත
+ over_total_limit: ඔබ නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත
+ too_soon: නියමිත දිනය අනාගතයේ විය යුතුය
sessions:
+ activity: අවසාන ක්රියාකාරකම
browser: අතිරික්සුව
browsers:
alipay: අලිපේ
@@ -334,41 +1364,262 @@ si:
generic: නොදන්නා අතිරික්සුවකි
ie: ඉන්ටර්නෙට් එක්ස්ප්ලෝරර්
micro_messenger: මයික්රොමැසෙන්ජර්
+ nokia: Nokia S40 Ovi බ්රව්සරය
opera: ඔපෙරා
otter: ඔටර්
qq: කියුකියු අතිරික්සුව
safari: සෆාරි
uc_browser: යූසී අතිරික්සුව
weibo: වෙයිබො
+ current_session: වත්මන් සැසිය
+ description: "%{browser} මත %{platform}"
+ explanation: මේවා දැනට ඔබගේ Mastodon ගිණුමට ලොග් වී ඇති වෙබ් බ්රව්සර් වේ.
ip: අ.ජා. කෙ. (IP)
platforms:
adobe_air: ඇඩෝබි එයාර්
android: ඇන්ඩ්රොයිඩ්
blackberry: බ්ලැක්බෙරි
- chrome_os: ක්රෝම් ඕඑස්
+ chrome_os: ක්රෝම්ස්
firefox_os: ෆයර්ෆොක්ස් ඕඑස්
ios: අයිඕඑස්
linux: ලිනක්ස්
mac: මැක්ඕඑස්
+ other: නොදන්නා වේදිකාව
windows: වින්ඩෝස්
windows_mobile: වින්ඩෝස් මොබයිල්
windows_phone: වින්ඩෝස් පෝන්
+ revoke: අවලංගු කරන්න
+ revoke_success: සැසිය සාර්ථකව අවලංගු කරන ලදී
+ title: සැසිවාර
+ view_authentication_history: ඔබගේ ගිණුමේ සත්යාපන ඉතිහාසය බලන්න
settings:
account: ගිණුම
account_settings: ගිණුමේ සැකසුම්
+ aliases: ගිණුම් අන්වර්ථ නාමයන්
+ appearance: පෙනුම
+ authorized_apps: අවසර ලත් යෙදුම්
+ back: Mastodon වෙත නැවත යන්න
+ delete: ගිණුම මකා දැමීම
+ development: සංවර්ධනය
edit_profile: පැතිකඩ සංස්කරණය
export: දත්ත නිර්යාත
- import: ආයාත කරන්න
+ featured_tags: විශේෂාංගගත හැෂ් ටැග්
+ import: ආයත කරන්න
import_and_export: ආයාත සහ නිර්යාත
+ migrate: ගිණුම් සංක්රමණය
notifications: දැනුම්දීම්
+ preferences: මනාප
profile: පැතිකඩ
+ relationships: අනුගාමිකයින් සහ අනුගාමිකයින්
+ statuses_cleanup: ස්වයංක්රීය පළ කිරීම් මකාදැමීම
+ strikes: මධ්යස්ථ වැඩ වර්ජන
+ two_factor_authentication: ද්වි සාධක Aut
+ webauthn_authentication: ආරක්ෂක යතුරු
statuses:
+ attached:
+ audio:
+ one: "%{count} ශ්රව්ය"
+ other: "%{count} ශ්රව්ය"
+ description: 'අමුණා ඇත: %{attached}'
+ image:
+ one: "%{count} රූපය"
+ other: පින්තූර %{count}
+ video:
+ one: "%{count} වීඩියෝ"
+ other: වීඩියෝ %{count}
+ boosted_from_html: "%{acct_link}සිට වැඩි කරන ලදී"
+ content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම: %{warning}'
+ default_language: අතුරු මුහුණත් භාෂාවට සමානයි
+ disallowed_hashtags:
+ one: 'අනුමත නොකළ හැෂ් ටැගයක් අඩංගු විය: %{tags}'
+ other: 'අනුමත නොකළ හැෂ් ටැග් අඩංගු විය: %{tags}'
+ edited_at_html: සංස්කරණය %{date}
+ errors:
+ in_reply_not_found: ඔබ පිළිතුරු දීමට උත්සාහ කරන පළ කිරීම පවතින බවක් නොපෙනේ.
+ open_in_web: වෙබයේ විවෘත කරන්න
+ over_character_limit: අක්ෂර සීමාව %{max} ඉක්මවා ඇත
+ pin_errors:
+ direct: සඳහන් කළ පරිශීලකයින්ට පමණක් පෙනෙන පළ කිරීම් ඇමිණිය නොහැක
+ limit: ඔබ දැනටමත් උපරිම පළ කිරීම් සංඛ්යාව අමුණා ඇත
+ ownership: වෙනත් කෙනෙකුගේ පළ කිරීමක් ඇමිණිය නොහැක
+ reblog: බූස්ට් එකක් ඇලවිය නොහැක
+ poll:
+ total_people:
+ one: "%{count} පුද්ගලයෙක්"
+ other: පුද්ගලයන් %{count}
+ total_votes:
+ one: "%{count} ඡන්ද"
+ other: ඡන්ද %{count} යි
+ vote: ඡන්දය දෙන්න
show_more: තව පෙන්වන්න
+ show_newer: අලුත්ම පෙන්වන්න
+ show_older: පැරණි පෙන්වන්න
+ show_thread: නූල් පෙන්වන්න
+ sign_in_to_participate: සංවාදයට සහභාගී වීමට පුරන්න
title: '%{name}: "%{quote}"'
visibilities:
- public: ප්රසිද්ධ
+ direct: සෘජු
+ private: අනුගාමිකයින්-පමණි
+ private_long: අනුගාමිකයින්ට පමණක් පෙන්වන්න
+ public: ප්රසිද්ධ
+ public_long: හැමෝටම පේනවා
+ unlisted: ලැයිස්තුගත නොකළ
+ unlisted_long: සෑම කෙනෙකුටම දැකිය හැක, නමුත් පොදු කාලරාමුවෙහි ලැයිස්තුගත කර නොමැත
+ statuses_cleanup:
+ enabled: පැරණි පළ කිරීම් ස්වයංක්රීයව මකන්න
+ enabled_hint: ඔබේ පළ කිරීම් පහත ව්යතිරේකවලින් එකකට ගැලපෙන්නේ නම් මිස, ඒවා නිශ්චිත වයස් සීමාවකට ළඟා වූ පසු ස්වයංක්රීයව මකයි
+ exceptions: ව්යතිරේක
+ explanation: පළ කිරීම් මකා දැමීම මිල අධික මෙහෙයුමක් වන බැවින්, සේවාදායකය වෙනත් ආකාරයකින් කාර්යබහුල නොවන විට කාලයත් සමඟ මෙය සෙමින් සිදු කෙරේ. මෙම හේතුව නිසා, ඔබේ පළ කිරීම් වයස් සීමාවට ළඟා වූ පසු ටික වේලාවකට පසුව මකා දැමිය හැක.
+ ignore_favs: ප්රියතමයන් නොසලකා හරින්න
+ ignore_reblogs: වැඩි කිරීම් නොසලකා හරින්න
+ interaction_exceptions: අන්තර්ක්රියා මත පදනම් වූ ව්යතිරේක
+ interaction_exceptions_explanation: පළ කිරීම් වරක් ඒවා ඉක්මවා ගිය පසු ප්රියතම හෝ බූස්ට් සීමාවට පහළින් ගියහොත් ඒවා මැකීමට සහතිකයක් නොමැති බව සලකන්න.
+ keep_direct: සෘජු පණිවිඩ තබා ගන්න
+ keep_direct_hint: ඔබගේ සෘජු පණිවිඩ කිසිවක් මකන්නේ නැත
+ keep_media: මාධ්ය ඇමුණුම් සමඟ පළ කිරීම් තබා ගන්න
+ keep_media_hint: මාධ්ය ඇමුණුම් ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත
+ keep_pinned: පින් කළ පළ කිරීම් තබා ගන්න
+ keep_pinned_hint: ඔබගේ පින් කළ පළ කිරීම් කිසිවක් මකන්නේ නැත
+ keep_polls: ඡන්ද තබා ගන්න
+ keep_polls_hint: ඔබගේ ඡන්ද විමසීම් කිසිවක් මකන්නේ නැත
+ keep_self_bookmark: ඔබ පිටු සලකුණු කළ පළ කිරීම් තබා ගන්න
+ keep_self_bookmark_hint: ඔබ ඔබේම පළ කිරීම් පිටු සලකුණු කර ඇත්නම් ඒවා මකා නොදමන්න
+ keep_self_fav: ඔබ කැමති පළ කිරීම් තබා ගන්න
+ keep_self_fav_hint: ඔබ ඒවාට කැමති නම් ඔබේම පළ කිරීම් මකා නොදමන්න
+ min_age:
+ '1209600': සති 2 යි
+ '15778476': මාස 6 යි
+ '2629746': මාස 1 යි
+ '31556952': වසර 1 යි
+ '5259492': මාස 2 ක්
+ '604800': 1 සතිය
+ '63113904': අවුරුදු 2 ක්
+ '7889238': මාස 3 යි
+ min_age_label: වයස් සීමාව
+ min_favs: අඩුම තරමින් පෝස්ට් ප්රිය කරන ලෙස තබා ගන්න
+ min_favs_hint: අවම වශයෙන් මෙම ප්රියතම ප්රමාණය ලබා ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත. ඔවුන්ගේ ප්රියතමයන් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න
+ min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න
+ min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න
stream_entries:
- sensitive_content: සංවේදී අන්තර්ගතයකි
+ pinned: පින් කළ පළ කිරීම
+ reblogged: ඉහල නැංවීය
+ sensitive_content: සංවේදී අන්තර්ගතය
+ strikes:
+ errors:
+ too_late: මෙම වර්ජනයට අභියාචනයක් ඉදිරිපත් කිරීමට ප්රමාද වැඩියි
+ tags:
+ does_not_match_previous_name: පෙර නමට නොගැලපේ
+ themes:
+ contrast: Mastodon (ඉහළ වෙනස)
+ default: මැස්ටෝඩන් (අඳුරු)
+ mastodon-light: මැස්ටෝඩන් (ආලෝකය)
two_factor_authentication:
+ add: එකතු කරන්න
+ disable: 2FA අබල කරන්න
+ disabled_success: ද්වි-සාධක සත්යාපනය සාර්ථකව අබල කර ඇත
edit: සංස්කරණය
+ enabled: ද්වි-සාධක සත්යාපනය සක්රීය කර ඇත
+ enabled_success: ද්වි-සාධක සත්යාපනය සාර්ථකව සබල කර ඇත
+ generate_recovery_codes: ප්රතිසාධන කේත ජනනය කරන්න
+ lost_recovery_codes: ඔබගේ දුරකථනය නැති වුවහොත් ඔබගේ ගිණුමට ප්රවේශය නැවත ලබා ගැනීමට ප්රතිසාධන කේත ඔබට ඉඩ සලසයි. ඔබට ඔබේ ප්රතිසාධන කේත නැති වී ඇත්නම්, ඔබට ඒවා මෙහි නැවත උත්පාදනය කළ හැක. ඔබගේ පැරණි ප්රතිසාධන කේත අවලංගු වනු ඇත.
+ methods: ද්වි සාධක ක්රම
+ otp: Authenticator යෙදුම
+ recovery_codes: උපස්ථ ප්රතිසාධන කේත
+ recovery_codes_regenerated: ප්රතිසාධන කේත සාර්ථකව ප්රතිජනනය කරන ලදී
+ recovery_instructions_html: ඔබට කවදා හෝ ඔබගේ දුරකථනයට ප්රවේශය අහිමි වුවහොත්, ඔබගේ ගිණුමට ප්රවේශය නැවත ලබා ගැනීමට පහත ප්රතිසාධන කේත වලින් එකක් භාවිතා කළ හැක. ප්රතිසාධන කේත ආරක්ෂිතව තබා ගන්න. උදාහරණයක් ලෙස, ඔබට ඒවා මුද්රණය කර වෙනත් වැදගත් ලේඛන සමඟ ගබඩා කළ හැකිය.
webauthn: ආරක්ෂණ යතුරු
+ user_mailer:
+ appeal_approved:
+ action: ඔබගේ ගිණුමට යන්න
+ explanation: ඔබ %{appeal_date} දින ඉදිරිපත් කළ %{strike_date} හි ඔබේ ගිණුමට එරෙහි වර්ජනයේ අභියාචනය අනුමත කර ඇත. ඔබගේ ගිණුම නැවත වරක් හොඳ තත්වයක පවතී.
+ subject: "%{date} සිට ඔබගේ අභියාචනය අනුමත කර ඇත"
+ title: අභියාචනය අනුමත කර ඇත
+ appeal_rejected:
+ explanation: "%{strike_date} දින ඔබේ ගිණුමට එරෙහිව ඔබ %{appeal_date} දින ඉදිරිපත් කළ වර්ජනයේ අභියාචනය ප්රතික්ෂේප කර ඇත."
+ subject: "%{date} සිට ඔබගේ අභියාචනය ප්රතික්ෂේප කර ඇත"
+ title: අභියාචනය ප්රතික්ෂේප විය
+ backup_ready:
+ explanation: ඔබ ඔබේ Mastodon ගිණුමේ සම්පූර්ණ උපස්ථයක් ඉල්ලා ඇත. එය දැන් බාගත කිරීම සඳහා සූදානම්!
+ subject: ඔබගේ සංරක්ෂිතය බාගැනීමට සූදානම්ය
+ title: සංරක්ෂිත රැගෙන යාම
+ suspicious_sign_in:
+ change_password: ඔබගේ මුරපදය වෙනස් කරන්න
+ details: 'පුරනය වීමේ විස්තර මෙන්න:'
+ explanation: අපි නව IP ලිපිනයකින් ඔබගේ ගිණුමට පුරනය වීමක් අනාවරණය කරගෙන ඇත.
+ further_actions_html: මෙය ඔබ නොවේ නම්, අපි ඔබට වහාම %{action} ලෙස නිර්දේශ කර ඔබගේ ගිණුම සුරක්ෂිතව තබා ගැනීමට සාධක දෙකක සත්යාපනය සබල කරන්න.
+ subject: ඔබගේ ගිණුම නව IP ලිපිනයකින් ප්රවේශ වී ඇත
+ title: නව පුරනය වීමක්
+ warning:
+ appeal: අභියාචනයක් ඉදිරිපත් කරන්න
+ appeal_description: මෙය දෝෂයක් බව ඔබ විශ්වාස කරන්නේ නම්, ඔබට %{instance}හි කාර්ය මණ්ඩලයට අභියාචනයක් ඉදිරිපත් කළ හැක.
+ categories:
+ spam: ආයාචිත තැපැල්
+ violation: අන්තර්ගතය පහත ප්රජා මාර්ගෝපදේශ උල්ලංඝනය කරයි
+ explanation:
+ delete_statuses: ඔබගේ සමහර පළ කිරීම් ප්රජා මාර්ගෝපදේශ එකක් හෝ කිහිපයක් උල්ලංඝනය කරන බව සොයා ගෙන ඇති අතර පසුව %{instance}හි උපපරිපාලකයින් විසින් ඉවත් කර ඇත.
+ disable: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැක, නමුත් ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත නොවෙනස්ව පවතී. ඔබට ඔබගේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට, ගිණුම් සැකසීම් වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට හැකිය.
+ mark_statuses_as_sensitive: ඔබගේ සමහර පළ කිරීම් %{instance}හි පරිපාලකයින් විසින් සංවේදී ලෙස සලකුණු කර ඇත. මෙයින් අදහස් කරන්නේ පෙරදසුනක් දර්ශනය වීමට පෙර පුද්ගලයින්ට පළ කිරීම් වල මාධ්ය තට්ටු කිරීමට අවශ්ය වනු ඇති බවයි. අනාගතයේදී පළ කිරීමේදී ඔබට මාධ්ය සංවේදී ලෙස සලකුණු කළ හැක.
+ sensitive: මෙතැන් සිට, ඔබගේ උඩුගත කරන ලද සියලුම මාධ්ය ගොනු සංවේදී ලෙස සලකුණු කර ක්ලික්-හරහා අනතුරු ඇඟවීමක් පිටුපස සඟවනු ඇත.
+ silence: ඔබට තවමත් ඔබගේ ගිණුම භාවිතා කළ හැකි නමුත් දැනටමත් ඔබව අනුගමනය කරන පුද්ගලයින් පමණක් මෙම සේවාදායකයේ ඔබගේ පළ කිරීම් දකිනු ඇති අතර, විවිධ සොයාගැනීම් විශේෂාංග වලින් ඔබව බැහැර කරනු ලැබිය හැක. කෙසේ වෙතත්, අනෙක් අය තවමත් ඔබව අතින් අනුගමනය කළ හැක.
+ suspend: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැකි අතර, ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත තවදුරටත් ප්රවේශ විය නොහැක. දින 30කින් පමණ දත්ත සම්පූර්ණයෙන් ඉවත් කරන තෙක් ඔබට තවමත් ඔබේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට පුරනය විය හැක, නමුත් ඔබව අත්හිටුවීම මගහැර යාම වැළැක්වීමට අපි මූලික දත්ත කිහිපයක් රඳවා ගන්නෙමු.
+ reason: 'හේතුව:'
+ statuses: 'උපුටා දක්වන ලද පළ කිරීම්:'
+ subject:
+ delete_statuses: "%{acct} හි ඔබගේ පළ කිරීම් ඉවත් කර ඇත"
+ disable: ඔබගේ ගිණුම %{acct} කර ඇත
+ mark_statuses_as_sensitive: "%{acct} හි ඔබගේ පළ කිරීම් සංවේදී ලෙස සලකුණු කර ඇත"
+ none: "%{acct}සඳහා අනතුරු ඇඟවීම"
+ sensitive: "%{acct} හි ඔබගේ පළ කිරීම් මෙතැන් සිට සංවේදී ලෙස සලකුණු කෙරේ"
+ silence: ඔබගේ ගිණුම %{acct} සීමා කර ඇත
+ suspend: ඔබගේ ගිණුම %{acct} අත්හිටුවා ඇත
+ title:
+ delete_statuses: පළ කිරීම් ඉවත් කරන ලදී
+ disable: ගිණුම නිශ්චල කර ඇත
+ mark_statuses_as_sensitive: පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත
+ none: අවවාදයයි
+ sensitive: ගිණුම සංවේදී ලෙස ලකුණු කර ඇත
+ silence: ගිණුම සීමා සහිතයි
+ suspend: ගිණුම අත්හිටුවා ඇත
+ welcome:
+ edit_profile_action: සැකසුම් පැතිකඩ
+ edit_profile_step: ඔබට අවතාරයක්, ශීර්ෂයක් උඩුගත කිරීමෙන්, ඔබේ සංදර්ශක නම වෙනස් කිරීමෙන් සහ තවත් දේ මඟින් ඔබේ පැතිකඩ අභිරුචිකරණය කළ හැකිය. නව අනුගාමිකයින්ට ඔබව අනුගමනය කිරීමට ඉඩ දීමට පෙර ඔවුන් සමාලෝචනය කිරීමට ඔබ කැමති නම්, ඔබට ඔබගේ ගිණුම අගුළු දැමිය හැක.
+ explanation: ඔබ ආරම්භ කිරීමට උපදෙස් කිහිපයක් මෙන්න
+ final_action: පළ කිරීම ආරම්භ කරන්න
+ final_step: 'පළ කිරීම ආරම්භ කරන්න! අනුගාමිකයින් නොමැතිව වුවද, ඔබගේ පොදු පළ කිරීම් වෙනත් අය විසින් දැකිය හැකිය, උදාහරණයක් ලෙස දේශීය කාලරේඛාවේ සහ හැෂ් ටැග් වල. ඔබට #introductions හැෂ් ටැගය මත ඔබව හඳුන්වා දීමට අවශ්ය විය හැක.'
+ full_handle: ඔබේ සම්පූර්ණ හසුරුව
+ full_handle_hint: මෙය ඔබ ඔබේ මිතුරන්ට පවසනු ඇත, එවිට ඔවුන්ට වෙනත් සේවාදායකයකින් ඔබට පණිවිඩ යැවීමට හෝ අනුගමනය කිරීමට හැකිය.
+ review_preferences_action: මනාප වෙනස් කරන්න
+ review_preferences_step: ඔබට ලැබීමට කැමති ඊමේල්, හෝ ඔබේ පළ කිරීම් පෙරනිමි කිරීමට ඔබ කැමති පුද්ගලිකත්ව මට්ටම වැනි ඔබේ මනාප සැකසීමට වග බලා ගන්න. ඔබට චලන අසනීපයක් නොමැති නම්, ඔබට GIF ස්වයංක්රීය ධාවනය සබල කිරීමට තෝරා ගත හැකිය.
+ subject: Mastodon වෙත සාදරයෙන් පිළිගනිමු
+ tip_federated_timeline: ෆෙඩරේටඩ් කාලරාමුව යනු මැස්ටෝඩන් ජාලයේ ගිනි හෝස් දසුනකි. නමුත් එයට ඇතුළත් වන්නේ ඔබේ අසල්වැසියන් දායක වී ඇති පුද්ගලයින් පමණි, එබැවින් එය සම්පූර්ණ නොවේ.
+ tip_following: ඔබ පෙරනිමියෙන් ඔබගේ සේවාදායකයේ පරිපාලක(න්) අනුගමනය කරයි. වඩාත් සිත්ගන්නා පුද්ගලයින් සොයා ගැනීමට, දේශීය සහ ෆෙඩරල් කාලරේඛා පරීක්ෂා කරන්න.
+ tip_local_timeline: ප්රාදේශීය කාලරේඛාව යනු %{instance}හි පුද්ගලයින්ගේ ගිනි හෝස් දසුනකි. මේ ඔබේ ආසන්න අසල්වැසියන්!
+ tip_mobile_webapp: ඔබගේ ජංගම බ්රවුසරය ඔබගේ මුල් තිරයට Mastodon එක් කිරීමට ඉදිරිපත් කරන්නේ නම්, ඔබට තල්ලු දැනුම්දීම් ලැබිය හැක. එය බොහෝ ආකාරවලින් ස්වදේශීය යෙදුමක් ලෙස ක්රියා කරයි!
+ tips: ඉඟි
+ title: නැවට සාදරයෙන් පිළිගනිමු, %{name}!
+ users:
+ follow_limit_reached: ඔබට පුද්ගලයින් %{limit} කට වඩා අනුගමනය කළ නොහැක
+ invalid_otp_token: වලංගු නොවන ද්වි-සාධක කේතය
+ otp_lost_help_html: ඔබට දෙකටම ප්රවේශය අහිමි වුවහොත්, ඔබට %{email}සමඟ සම්බන්ධ විය හැක
+ seamless_external_login: ඔබ බාහිර සේවාවක් හරහා ලොග් වී ඇත, එබැවින් මුරපදය සහ ඊමේල් සැකසුම් නොමැත.
+ signed_in_as: 'මෙසේ පුරනය වී ඇත:'
+ verification:
+ explanation_html: 'ඔබගේ පැතිකඩ පාරදත්තහි ඇති සබැඳි වල හිමිකරු ලෙස ඔබට සත්යාපනය කළ හැක. ඒ සඳහා, සම්බන්ධිත වෙබ් අඩවියේ ඔබේ Mastodon පැතිකඩ වෙත ආපසු සබැඳියක් තිබිය යුතුය. සබැඳිය ආපසු යුතුය. සබැඳියේ පෙළ අන්තර්ගතය වැදගත් නොවේ. මෙන්න උදාහරණයක්:'
+ 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/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index c989139851..b41e6404b3 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -96,6 +96,10 @@ ast:
reblog: Daquién compartió dalgún estáu de to
tag:
name: Etiqueta
+ user_role:
+ name: Nome
+ permissions_as_keys: Permisos
+ position: Prioridá
'no': Non
recommended: Aconséyase
required:
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index ccbb902823..559185c2cd 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -68,6 +68,11 @@ ca:
with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra
featured_tag:
name: 'És possible que vulguis utilitzar una d''aquestes:'
+ filters:
+ action: Tria quina acció cal executar quan una publicació coincideixi amb el filtre
+ actions:
+ hide: Ocultar completament el contingut filtrat, comportant-se com si no existís
+ warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre
form_challenge:
current_password: Estàs entrant en una àrea segura
imports:
@@ -80,6 +85,7 @@ ca:
ip: Introdueix una adreça IPv4 o IPv6. Pots bloquejar rangs complets amb la sintaxi CIDR. Ves a compte no et bloquegis a tu mateix!
severities:
no_access: Bloqueja l’accés a tots els recursos
+ sign_up_block: Els nous registres no seran possibles
sign_up_requires_approval: Els nous registres requeriran la teva aprovació
severity: Tria què passarà amb les sol·licituds des d’aquesta IP
rule:
@@ -91,6 +97,13 @@ ca:
name: Només pots canviar la caixa de les lletres, per exemple, per fer-la més llegible
user:
chosen_languages: Quan estigui marcat, només es mostraran les publicacions en les llengües seleccionades en les línies de temps públiques
+ role: El rol controla quines permissions té l'usuari
+ user_role:
+ color: Color que s'utilitzarà per al rol a tota la interfície d'usuari, com a RGB en format hexadecimal
+ highlighted: Això torno el rol visibile publicament
+ name: Nom públic del rol, si el rol està configurat per a ser mostrat com a insígnia
+ permissions_as_keys: Els usuaris amb aquest rol tingran accés a...
+ position: El rol superior decideix la resolució de conflictes en certes situacions. Certes accions només es poden realitzar amb rols amb menor prioritat
webhook:
events: Selecciona esdeveniments a enviar
url: On els esdeveniments seran enviats
@@ -181,6 +194,7 @@ ca:
setting_use_pending_items: Mode lent
severity: Severitat
sign_in_token_attempt: Codi de seguretat
+ title: Títol
type: Importa el tipus
username: Nom d'usuari
username_or_email: Nom d'usuari o adreça electrònica
@@ -189,6 +203,10 @@ ca:
with_dns_records: Incloure registres MX i IP del domini
featured_tag:
name: Etiqueta
+ filters:
+ actions:
+ hide: Oculta completament
+ warn: Oculta amb un avís
interactions:
must_be_follower: Bloqueja les notificacions de persones que no em segueixen
must_be_following: Bloqueja les notificacions de persones no seguides
@@ -202,6 +220,7 @@ ca:
ip: IP
severities:
no_access: Bloquejar l’accés
+ sign_up_block: Bloqueja registres
sign_up_requires_approval: Limitar els registres
severity: Regla
notification_emails:
@@ -222,10 +241,19 @@ ca:
name: Etiqueta
trendable: Permet que aquesta etiqueta aparegui en les tendències
usable: Permetre a les publicacions emprar aquesta etiqueta
+ user:
+ role: Rol
+ user_role:
+ color: Color de la insígnia
+ highlighted: Motra el rol com a insígnia en el perfil dels usuaris
+ name: Nom
+ permissions_as_keys: Permisos
+ position: Prioritat
webhook:
events: Esdeveniments activats
url: URL del extrem
'no': 'No'
+ not_recommended: No recomanat
recommended: Recomanat
required:
mark: "*"
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 789b328b59..abbe91160d 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -68,6 +68,11 @@ cs:
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:'
+ filters:
+ action: Vyberte jakou akci provést, když příspěvek odpovídá filtru
+ actions:
+ hide: Úplně schovat filtrovaný obsah tak, jako by neexistoval
+ warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru
form_challenge:
current_password: Vstupujete do zabezpečeného prostoru
imports:
@@ -80,6 +85,7 @@ cs:
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_block: Nové přihlášení nebude možné
sign_up_requires_approval: Nové registrace budou vyžadovat schválení
severity: Zvolte, jak naložit s požadavky z dané IP
rule:
@@ -91,6 +97,13 @@ cs:
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 příspěvky ve zvolených jazycích
+ role: Role určuje, která oprávnění má uživatel
+ user_role:
+ color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu
+ highlighted: Toto roli učiní veřejně viditelnou
+ name: Veřejný název role, pokud má být role zobrazena jako odznak
+ permissions_as_keys: Uživatelé s touto rolí budou moci...
+ position: Vyšší role rozhoduje o řešení konfliktů v určitých situacích. Některé akce lze provádět pouze na rolích s nižší prioritou
webhook:
events: Zvolte odesílané události
url: Kam budou události odesílány
@@ -181,6 +194,7 @@ cs:
setting_use_pending_items: Pomalý režim
severity: Vážnost
sign_in_token_attempt: Bezpečnostní kód
+ title: Název
type: Typ importu
username: Uživatelské jméno
username_or_email: Uživatelské jméno nebo e-mail
@@ -189,6 +203,10 @@ cs:
with_dns_records: Zahrnout MX záznamy a IP adresy domény
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Zcela skrýt
+ warn: Skrýt s varováním
interactions:
must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují
must_be_following: Blokovat oznámení od lidí, které nesledujete
@@ -202,6 +220,7 @@ cs:
ip: IP
severities:
no_access: Blokovat přístup
+ sign_up_block: Blokovat registrace
sign_up_requires_approval: Omezit registrace
severity: Pravidlo
notification_emails:
@@ -222,10 +241,19 @@ cs:
name: Hashtag
trendable: Povolit zobrazení tohoto hashtagu mezi populárními
usable: Povolit používat tento hashtag v příspěvcích
+ user:
+ role: Role
+ user_role:
+ color: Barva odznaku
+ highlighted: Zobrazit roli jako odznak na profilech uživatelů
+ name: Název
+ permissions_as_keys: Oprávnění
+ position: Priorita
webhook:
events: Zapnuté události
url: URL koncového bodu
'no': Ne
+ not_recommended: Nedoporučuje se
recommended: Doporučeno
required:
mark: "*"
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index 77b46ad2b3..b0217cfe30 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -73,6 +73,7 @@ cy:
labels:
account:
fields:
+ name: Label
value: Cynnwys
account_alias:
acct: Enw'r hen gyfrif
@@ -89,6 +90,7 @@ cy:
types:
disable: Analluogi
none: Gwneud dim
+ sensitive: Sensitif
silence: Tawelwch
suspend: Dileu data cyfrif
warning_preset_id: Defnyddiwch ragnod rhag rhybudd
@@ -107,6 +109,7 @@ 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
@@ -149,6 +152,7 @@ cy:
setting_use_pending_items: Modd araf
severity: Difrifoldeb
sign_in_token_attempt: Cod dioelwch
+ title: Teitl
type: Modd mewnforio
username: Enw defnyddiwr
username_or_email: Enw defnyddiwr neu e-bost
@@ -166,6 +170,8 @@ cy:
invite_request:
text: Pam hoffech ymuno?
ip_block:
+ comment: Sylw
+ ip: IP
severity: Rheol
notification_emails:
digest: Anfonwch e-byst crynhoi
@@ -183,6 +189,11 @@ cy:
name: Hashnod
trendable: Gadewch i'r hashnod hwn ymddangos o dan dueddiadau
usable: Caniatáu i tŵtiau ddefnyddio'r hashnod hwn
+ user:
+ role: Rôl
+ user_role:
+ name: Enw
+ permissions_as_keys: Caniatâd
'no': Na
recommended: Argymhellwyd
required:
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 84450c768d..5de688e128 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -68,6 +68,11 @@ da:
with_dns_records: Et forsøg på at opløse det givne domænes DNS-poster foretages, og resultaterne blokeres ligeledes
featured_tag:
name: 'Et af flg. ønskes måske anvendt:'
+ filters:
+ action: Vælg handlingen til eksekvering, når et indlæg matcher filteret
+ actions:
+ hide: Skjul filtreret indhold helt (adfærd som om, det ikke fandtes)
+ warn: Skjul filtreret indhold bag en advarsel, der nævner filterets titel
form_challenge:
current_password: Du bevæger dig ind på et sikkert område
imports:
@@ -80,6 +85,7 @@ da:
ip: Angiv en IPv4- eller IPv6-adresse. Hele intervaller kan blokeres vha. CIDR-syntaksen. Pas på med ikke selv at blive låst ude!
severities:
no_access: Blokér adgang til alle ressourcer
+ sign_up_block: Nye tilmeldinger vil ikke være mulige
sign_up_requires_approval: Nye tilmeldinger kræver din godkendelse
severity: Afgør, hvordan forespørgsler fra denne IP behandles
rule:
@@ -91,6 +97,13 @@ da:
name: Kun bogstavtyper (store/små) kan ændres, eksempelvis for at gøre det mere læsbart
user:
chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer
+ role: Rollen styrer, hvilke tilladelser brugeren har
+ user_role:
+ color: Farven, i RGB hex-format, der skal bruges til rollen i hele UI'en
+ highlighted: Dette gør rollen offentligt synlig
+ name: Offentligt rollennavn, hvis rollen er opsat til fremstå som et badge
+ permissions_as_keys: Brugere med denne rolle vil kunne tilgå...
+ position: Højere rolle bestemmer konfliktløsning i visse situationer. Visse handlinger kan kun udføres på roller med lavere prioritet
webhook:
events: Vælg begivenheder at sende
url: Hvor begivenheder sendes til
@@ -181,6 +194,7 @@ da:
setting_use_pending_items: Langsom tilstand
severity: Alvorlighed
sign_in_token_attempt: Sikkerhedskode
+ title: Titel
type: Importtype
username: Brugernavn
username_or_email: Brugernavn eller e-mail
@@ -189,6 +203,10 @@ da:
with_dns_records: Inkludér domænets MX-poster og IP'er
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Skjul helt
+ warn: Skjul bag en advarsel
interactions:
must_be_follower: Blokér notifikationer fra ikke-følgere
must_be_following: Blokér notifikationer fra folk, som ikke følges
@@ -202,6 +220,7 @@ da:
ip: IP
severities:
no_access: Blokér adgang
+ sign_up_block: Blokér tilmeldinger
sign_up_requires_approval: Begræns tilmeldinger
severity: Regel
notification_emails:
@@ -222,10 +241,19 @@ da:
name: Hashtag
trendable: Tillad visning af dette hashtag under trends
usable: Tillad indlæg at benytte dette hashtag
+ user:
+ role: Rolle
+ user_role:
+ color: Badge-farve
+ highlighted: Vis rolle som badge på brugerprofiler
+ name: Navn
+ permissions_as_keys: Tilladelser
+ position: Prioritet
webhook:
events: Aktive begivenheder
url: Endepunkts-URL
'no': Nej
+ not_recommended: Ikke anbefalet
recommended: Anbefalet
required:
mark: "*"
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 46472cdcfd..0d712bf5f2 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -22,9 +22,9 @@ de:
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
+ all_day: Wenn aktiviert, werden nur die Daten des Zeitraums angezeigt
ends_at: Optional. Die Ankündigung wird zu diesem Zeitpunkt automatisch zurückgezogen
- scheduled_at: Leer lassen um die Ankündigung sofort zu veröffentlichen
+ scheduled_at: Leer lassen, um die Ankündigung sofort zu veröffentlichen
starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist
text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird
appeal:
@@ -37,7 +37,7 @@ de:
current_password: Aus Sicherheitsgründen gib bitte das Passwort des aktuellen Kontos ein
current_username: Um das zu bestätigen, gib den Benutzernamen des aktuellen Kontos ein
digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast
- discoverable: Erlaube deinem Konto durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden
+ discoverable: Erlaube deinem Konto, durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden
email: Du wirst eine Bestätigungs-E-Mail erhalten
fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden
header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert
@@ -58,16 +58,21 @@ de:
setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge
setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt
setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details
- setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken anstatt automatisch zu scrollen
+ setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen
username: Dein Benutzername wird auf %{domain} einzigartig sein
whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht
domain_allow:
- domain: Diese Domain kann Daten von diesem Server abrufen und eingehende Daten werden verarbeitet und gespeichert
+ domain: Diese Domain kann Daten von diesem Server abrufen, und eingehende Daten werden verarbeitet und gespeichert
email_domain_block:
domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft.
- with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt
+ with_dns_records: Ein Versuch, die DNS-Einträge der Domain aufzulösen, wurde unternommen, und diese Ergebnisse werden unter anderem auch blockiert
featured_tag:
name: 'Du möchtest vielleicht einen von diesen benutzen:'
+ filters:
+ action: Wählen Sie, welche Aktion ausgeführt werden soll, wenn ein Beitrag dem Filter entspricht
+ actions:
+ hide: Den gefilterten Inhalt vollständig ausblenden, als hätte er nie existiert
+ warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet
form_challenge:
current_password: Du betrittst einen sicheren Bereich
imports:
@@ -77,9 +82,10 @@ de:
ip_block:
comment: Optional. Denke daran, warum du diese Regel hinzugefügt hast.
expires_in: IP-Adressen sind eine endliche Ressource, sie werden manchmal geteilt und werden ab und zu ausgetauscht. Aus diesem Grund werden unbestimmte IP-Blöcke nicht empfohlen.
- ip: Gebe eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst!
+ ip: Gib eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst!
severities:
no_access: Zugriff auf alle Ressourcen blockieren
+ sign_up_block: Neue Anmeldungen werden nicht möglich sein
sign_up_requires_approval: Neue Anmeldungen erfordern deine Zustimmung
severity: Wähle aus, was mit Anfragen aus dieser IP passiert
rule:
@@ -91,6 +97,13 @@ de:
name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen
user:
chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt
+ role: Die Rolle kontrolliert welche Berechtigungen ein Benutzer hat
+ user_role:
+ color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat
+ highlighted: Dies macht die Rolle öffentlich sichtbar
+ name: Öffentlicher Name der Rolle, wenn die Rolle als Abzeichen angezeigt werden soll
+ permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf...
+ position: Die höhere Rolle entscheidet über die Konfliktlösung in bestimmten Situationen. Bestimmte Aktionen können nur in Rollen mit geringerer Priorität ausgeführt werden
webhook:
events: Zu sendende Ereignisse auswählen
url: Wo Ereignisse hingesendet werden
@@ -172,7 +185,7 @@ de:
setting_hide_network: Netzwerk ausblenden
setting_noindex: Suchmaschinen-Indexierung verhindern
setting_reduce_motion: Bewegung in Animationen verringern
- setting_show_application: Anwendung preisgeben, die benutzt wurde um Beiträge zu versenden
+ setting_show_application: Anwendung preisgeben, die benutzt wurde, um Beiträge zu versenden
setting_system_font_ui: Standardschriftart des Systems verwenden
setting_theme: Theme
setting_trends: Heutige Trends anzeigen
@@ -181,14 +194,19 @@ de:
setting_use_pending_items: Langsamer Modus
severity: Schweregrad
sign_in_token_attempt: Sicherheitscode
+ title: Titel
type: Art des Imports
username: Profilname
username_or_email: Profilname oder E-Mail
whole_word: Ganzes Wort
email_domain_block:
- with_dns_records: MX-Einträge und IPs der Domain einbeziehen
+ with_dns_records: MX-Einträge und IP-Adressen der Domain einbeziehen
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Komplett ausblenden
+ warn: Mit einer Warnung ausblenden
interactions:
must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen
must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
@@ -202,10 +220,11 @@ de:
ip: IP-Adresse
severities:
no_access: Zugriff sperren
+ sign_up_block: Anmeldungen blockieren
sign_up_requires_approval: Anmeldungen begrenzen
severity: Regel
notification_emails:
- appeal: Jemand hat Einspruch an eine Moderatorentscheidung
+ appeal: Jemand hat Einspruch gegen eine Moderatorentscheidung eingelegt
digest: Kurzfassungen über E-Mail senden
favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert
follow: E-Mail senden, wenn mir jemand folgt
@@ -218,19 +237,28 @@ de:
rule:
text: Regel
tag:
- listable: Erlaube diesem Hashtag im Profilverzeichnis zu erscheinen
+ listable: Erlaube diesem Hashtag, im Profilverzeichnis zu erscheinen
name: Hashtag
- trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen
- usable: Beiträge erlauben, diesen Hashtag zu verwenden
+ trendable: Erlaube es, diesen Hashtag in den Trends erscheinen zu lassen
+ usable: Beiträgen erlauben, diesen Hashtag zu verwenden
+ user:
+ role: Rolle
+ user_role:
+ color: Abzeichenfarbe
+ highlighted: Rolle als Abzeichen in Benutzerprofilen anzeigen
+ name: Name
+ permissions_as_keys: Berechtigungen
+ position: Priorität
webhook:
events: Aktivierte Ereignisse
url: Endpunkt-URL
'no': Nein
+ not_recommended: Nicht empfohlen
recommended: Empfohlen
required:
mark: "*"
text: Pflichtfeld
title:
sessions:
- webauthn: Verwende einer deiner Sicherheitsschlüssel zum Anmelden
+ webauthn: Verwende einen deiner Sicherheitsschlüssel zum Anmelden
'yes': Ja
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 89ddae0cbe..9e1464a4ff 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -76,6 +76,7 @@ el:
ip: Εισάγετε μια διεύθυνση IPv4 ή IPv6. Μπορείτε να αποκλείσετε ολόκληρο το εύρος χρησιμοποιώντας τη σύνταξη CIDR. Προσέξτε να μην κλειδώσετε τον εαυτό σας!
severities:
no_access: Αποκλεισμός πρόσβασης σε όλους τους πόρους
+ sign_up_block: Νέες εγγραφές δεν θα είναι δυνατές
sign_up_requires_approval: Νέες εγγραφές θα απαιτούν την έγκριση σας
severity: Επιλέξτε τι θα γίνεται με αιτήσεις από αυτήν την διεύθυνση IP
rule:
@@ -172,6 +173,7 @@ el:
setting_use_pending_items: Αργή λειτουργία
severity: Αυστηρότητα
sign_in_token_attempt: Κωδικός ασφαλείας
+ title: Τίτλος
type: Τύπος εισαγωγής
username: Όνομα χρηστη
username_or_email: Όνομα ή διεύθυνση email χρήστη
@@ -180,6 +182,10 @@ el:
with_dns_records: Συμπερίληψη εγγραφών MX και διευθύνσεων IP του τομέα
featured_tag:
name: Ετικέτα
+ filters:
+ actions:
+ hide: Πλήρης απόκρυψη
+ warn: Απόκρυψη με προειδοποίηση
interactions:
must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν
must_be_following: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς
@@ -193,6 +199,7 @@ el:
ip: Διεύθυνση IP
severities:
no_access: Αποκλεισμός πρόσβασης
+ sign_up_block: Αποκλεισμός εγγραφών
sign_up_requires_approval: Περιορισμός εγγραφών
severity: Κανόνας
notification_emails:
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index ea4f68562a..ec4c445e85 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -73,6 +73,10 @@ en:
actions:
hide: Completely hide the filtered content, behaving as if it did not exist
warn: Hide the filtered content behind a warning mentioning the filter's title
+ form_admin_settings:
+ backups_retention_period: Keep generated user archives for the specified number of days.
+ content_cache_retention_period: Posts from other servers will be deleted after the specified number of days when set to a positive value. This may be irreversible.
+ media_cache_retention_period: Downloaded media files will be deleted after the specified number of days when set to a positive value, and re-downloaded on demand.
form_challenge:
current_password: You are entering a secure area
imports:
@@ -85,6 +89,7 @@ en:
ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out!
severities:
no_access: Block access to all resources
+ sign_up_block: New sign-ups will not be possible
sign_up_requires_approval: New sign-ups will require your approval
severity: Choose what will happen with requests from this IP
rule:
@@ -96,6 +101,13 @@ en:
name: You can only change the casing of the letters, for example, to make it more readable
user:
chosen_languages: When checked, only posts in selected languages will be displayed in public timelines
+ role: The role controls which permissions the user has
+ user_role:
+ color: Color to be used for the role throughout the UI, as RGB in hex format
+ highlighted: This makes the role publicly visible
+ name: Public name of the role, if role is set to be displayed as a badge
+ permissions_as_keys: Users with this role will have access to...
+ position: Higher role decides conflict resolution in certain situations. Certain actions can only be performed on roles with a lower priority
webhook:
events: Select events to send
url: Where events will be sent to
@@ -199,6 +211,10 @@ en:
actions:
hide: Hide completely
warn: Hide with a warning
+ form_admin_settings:
+ backups_retention_period: User archive retention period
+ content_cache_retention_period: Content cache retention period
+ media_cache_retention_period: Media cache retention period
interactions:
must_be_follower: Block notifications from non-followers
must_be_following: Block notifications from people you don't follow
@@ -212,6 +228,7 @@ en:
ip: IP
severities:
no_access: Block access
+ sign_up_block: Block sign-ups
sign_up_requires_approval: Limit sign-ups
severity: Rule
notification_emails:
@@ -232,6 +249,14 @@ en:
name: Hashtag
trendable: Allow this hashtag to appear under trends
usable: Allow posts to use this hashtag
+ user:
+ role: Role
+ user_role:
+ color: Badge color
+ highlighted: Display role as badge on user profiles
+ name: Name
+ permissions_as_keys: Permissions
+ position: Priority
webhook:
events: Enabled events
url: Endpoint URL
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 47ec6559db..5076506746 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -10,7 +10,7 @@ eo:
text: Vi povas uzi skribmanierojn de mesaĝoj, kiel URL-ojn, kradvortojn kaj menciojn
title: Laŭvola. Ne videbla por la ricevanto
admin_account_action:
- include_statuses: La uzanto vidos, kiujn afiŝojn estas kaŭzintaj la moderigan agon aŭ averton
+ include_statuses: La uzanto vidos, kiujn afiŝojn kaŭzis la agon de moderigo aŭ de averto
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}
@@ -35,32 +35,36 @@ eo:
current_password: Pro sekuraj kialoj, bonvolu enigi la pasvorton de la nuna konto
current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto
digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto
- email: Vi ricevos konfirman retmesaĝon
+ email: Vi ricevos retpoŝtaĵon de konfirmo
fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo
header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi
- irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita
- locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj
+ irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo poste estas forigita
+ locale: La lingvo de la fasado, de retpoŝtaĵoj, kaj de sciigoj
locked: Vi devos aprobi ĉiun peton de sekvado mane
password: Uzu almenaŭ 8 signojn
phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
- setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj)
- setting_default_sensitive: Tiklaj aŭdovidaĵoj estas defaŭlte kaŝita kaj povas esti malkiŝita per klako
- setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj
- setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn
- setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj
- setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo
+ setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj)
+ setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive
+ setting_default_sensitive: La tiklaj aŭdovidaĵoj estas kaŝitaj implicite, kaj povas esti montritaj per klako
+ setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tikla
+ setting_display_media_hide_all: Ĉiam kaŝi la aŭdovidaĵojn
+ setting_display_media_show_all: Ĉiam montri la aŭdovidaĵojn
+ setting_hide_network: Tiuj kiujn vi sekvas, kaj tiuj kiuj sekvas vin estos kaŝitaj en via profilo
setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn
setting_show_application: La aplikaĵo, kiun vi uzas por afiŝi, estos montrita en la detala vido de viaj mesaĝoj
setting_use_blurhash: Transirojn estas bazita sur la koloroj de la kaŝitaj aŭdovidaĵoj sed ne montri iun ajn detalon
setting_use_pending_items: Kaŝi tempoliniajn ĝisdatigojn malantaŭ klako anstataŭ aŭtomate rulumi la fluon
- username: Via uzantnomo estos unika ĉe %{domain}
+ username: Via uzantnomo estos unika en %{domain}
whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
domain_allow:
domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita
featured_tag:
name: 'Vi povus uzi iun el la jenaj:'
+ filters:
+ actions:
+ warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro
form_challenge:
current_password: Vi eniras sekuran areon
imports:
@@ -114,7 +118,7 @@ eo:
text: Anonco
defaults:
autofollow: Inviti al sekvi vian konton
- avatar: Profilbildo
+ avatar: Rolfiguro
bot: Tio estas robota konto
chosen_languages: Filtri lingvojn
confirm_new_password: Konfirmi novan pasvorton
@@ -138,9 +142,10 @@ eo:
note: Sinprezento
otp_attempt: Kodo de dufaktora aŭtentigo
password: Pasvorto
- phrase: Vorto aŭ frazo
+ phrase: Ĉefvorto aŭ frazo
setting_advanced_layout: Ebligi altnivelan retpaĝan interfacon
setting_aggregate_reblogs: Grupigi diskonigojn en templinioj
+ setting_always_send_emails: Ĉiam sendi la sciigojn per retpoŝto
setting_auto_play_gif: Aŭtomate ekigi GIF-ojn
setting_boost_modal: Montri konfirman fenestron antaŭ ol diskonigi mesaĝon
setting_crop_images: Stuci bildojn en negrandigitaj mesaĝoj al 16x9
@@ -150,7 +155,7 @@ eo:
setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon
setting_disable_swiping: Malebligi svingajn movojn
setting_display_media: Aŭdovidaĵa montrado
- setting_display_media_default: Dekomenca
+ setting_display_media_default: Implicita
setting_display_media_hide_all: Kaŝi ĉiujn
setting_display_media_show_all: Montri ĉiujn
setting_expand_spoilers: Ĉiam malfoldas mesaĝojn markitajn per averto pri enhavo
@@ -159,19 +164,24 @@ eo:
setting_reduce_motion: Redukti la movecojn de la animacioj
setting_show_application: Publikigi la aplikaĵon uzatan por sendi mesaĝojn
setting_system_font_ui: Uzi la dekomencan tiparon de la sistemo
- setting_theme: Reteja etoso
+ setting_theme: Etoso de la retejo
setting_trends: Montri hodiaŭajn furoraĵojn
setting_unfollow_modal: Montri konfirman fenestron antaŭ ol ĉesi sekvi iun
setting_use_blurhash: Montri buntajn transirojn por kaŝitaj aŭdovidaĵoj
setting_use_pending_items: Malrapida modo
severity: Graveco
sign_in_token_attempt: Sekureca kodo
+ title: Titolo
type: Importa tipo
username: Uzantnomo
username_or_email: Uzantnomo aŭ Retadreso
whole_word: Tuta vorto
featured_tag:
name: Kradvorto
+ filters:
+ actions:
+ hide: Kaŝi komplete
+ warn: Kaŝi malantaŭ averto
interactions:
must_be_follower: Bloki sciigojn de nesekvantoj
must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas
diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml
index 8f30266e36..e116925168 100644
--- a/config/locales/simple_form.es-AR.yml
+++ b/config/locales/simple_form.es-AR.yml
@@ -68,6 +68,11 @@ es-AR:
with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también bloqueados
featured_tag:
name: 'Puede que quieras usar una de estas:'
+ filters:
+ action: Elegir qué acción realizar cuando un mensaje coincide con el filtro
+ actions:
+ hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera
+ warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro
form_challenge:
current_password: Estás ingresando en un área segura
imports:
@@ -80,6 +85,7 @@ es-AR:
ip: Ingresá una dirección IPv4 ó IPv6. Podés bloquear rangos completos usando la sintaxis CIDR. ¡Tené cuidado de no bloquearte vos mismo!
severities:
no_access: Bloquear acceso a todos los recursos
+ sign_up_block: Los nuevos registros se deshabilitarán
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:
@@ -91,6 +97,13 @@ es-AR:
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én marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas
+ role: El rol controla qué permisos tiene el usuario
+ user_role:
+ color: Color que se utilizará para el rol a lo largo de la interface de usuario, como RGB en formato hexadecimal
+ highlighted: Esto hace que el rol sea públicamente visible
+ name: Nombre público del rol, si el rol se establece para que se muestre como una insignia
+ permissions_as_keys: Los usuarios con este rol tendrán acceso a…
+ position: Un rol más alto decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con prioridad inferior
webhook:
events: Seleccionar eventos para enviar
url: Adónde serán enviados los eventos
@@ -181,6 +194,7 @@ es-AR:
setting_use_pending_items: Modo lento
severity: Severidad
sign_in_token_attempt: Código de seguridad
+ title: Título
type: Tipo de importación
username: Nombre de usuario
username_or_email: Nombre de usuario o correo electrónico
@@ -189,6 +203,10 @@ es-AR:
with_dns_records: Incluir los registros MX y las direcciones IP del dominio
featured_tag:
name: Etiqueta
+ filters:
+ actions:
+ hide: Ocultar completamente
+ warn: Ocultar con una advertencia
interactions:
must_be_follower: Bloquear notificaciones de cuentas que no te siguen
must_be_following: Bloquear notificaciones de cuentas que no seguís
@@ -202,6 +220,7 @@ es-AR:
ip: Dirección IP
severities:
no_access: Bloquear acceso
+ sign_up_block: Bloquear registros
sign_up_requires_approval: Limitar registros
severity: Regla
notification_emails:
@@ -222,10 +241,19 @@ es-AR:
name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias
usable: Permitir a los mensajes usar esta etiqueta
+ user:
+ role: Rol
+ user_role:
+ color: Color de Insignia
+ highlighted: Mostrar rol como insignia en perfiles de usuario
+ name: Nombre
+ permissions_as_keys: Permisos
+ position: Prioridad
webhook:
events: Eventos habilitados
url: Dirección web del punto final
'no': 'No'
+ not_recommended: No recomendado
recommended: Opción recomendada
required:
mark: "*"
diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml
index 66efd68abc..3278159274 100644
--- a/config/locales/simple_form.es-MX.yml
+++ b/config/locales/simple_form.es-MX.yml
@@ -68,6 +68,11 @@ es-MX:
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:'
+ filters:
+ action: Elegir qué acción realizar cuando una publicación coincide con el filtro
+ actions:
+ hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera
+ warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro
form_challenge:
current_password: Estás entrando en un área segura
imports:
@@ -80,6 +85,7 @@ es-MX:
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_block: Los nuevos registros se deshabilitarán
sign_up_requires_approval: Nuevos registros requerirán su aprobación
severity: Elegir lo que pasará con las peticiones desde esta IP
rule:
@@ -91,6 +97,16 @@ es-MX:
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
+ role: El rol controla qué permisos tiene el usuario
+ user_role:
+ color: Color que se utilizará para el rol a lo largo de la interfaz de usuario, como RGB en formato hexadecimal
+ highlighted: Esto hace que el rol sea públicamente visible
+ name: Nombre público del rol, si el rol se establece para que se muestre como una insignia
+ permissions_as_keys: Los usuarios con este rol tendrán acceso a...
+ position: Un rol superior decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con menor prioridad
+ webhook:
+ events: Seleccionar eventos para enviar
+ url: Donde los eventos serán enviados
labels:
account:
fields:
@@ -178,6 +194,7 @@ es-MX:
setting_use_pending_items: Modo lento
severity: Severidad
sign_in_token_attempt: Código de seguridad
+ title: Título
type: Importar tipo
username: Nombre de usuario
username_or_email: Usuario o Email
@@ -186,6 +203,10 @@ es-MX:
with_dns_records: Incluye los registros MX y las IP del dominio
featured_tag:
name: Etiqueta
+ filters:
+ actions:
+ hide: Ocultar completamente
+ warn: Ocultar con una advertencia
interactions:
must_be_follower: Bloquear notificaciones de personas que no te siguen
must_be_following: Bloquear notificaciones de personas que no sigues
@@ -199,6 +220,7 @@ es-MX:
ip: IP
severities:
no_access: Bloquear acceso
+ sign_up_block: Bloquear registros
sign_up_requires_approval: Limitar registros
severity: Regla
notification_emails:
@@ -219,6 +241,17 @@ es-MX:
name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias
usable: Permitir a los toots usar esta etiqueta
+ user:
+ role: Rol
+ user_role:
+ color: Color de insignia
+ highlighted: Mostrar rol como insignia en perfiles de usuario
+ name: Nombre
+ permissions_as_keys: Permisos
+ position: Prioridad
+ webhook:
+ events: Eventos habilitados
+ url: URL de Endpoint
'no': 'No'
recommended: Recomendado
required:
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 53863ba311..03357e44b3 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -68,6 +68,11 @@ es:
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:'
+ filters:
+ action: Elegir qué acción realizar cuando una publicación coincide con el filtro
+ actions:
+ hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera
+ warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro
form_challenge:
current_password: Estás entrando en un área segura
imports:
@@ -80,6 +85,7 @@ es:
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_block: Los nuevos registros se deshabilitarán
sign_up_requires_approval: Nuevos registros requerirán su aprobación
severity: Elegir lo que pasará con las peticiones desde esta IP
rule:
@@ -91,6 +97,13 @@ es:
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 las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas
+ role: El rol controla qué permisos tiene el usuario
+ user_role:
+ color: Color que se utilizará para el rol a lo largo de la interfaz de usuario, como RGB en formato hexadecimal
+ highlighted: Esto hace que el rol sea públicamente visible
+ name: Nombre público del rol, si el rol se establece para que se muestre como una insignia
+ permissions_as_keys: Los usuarios con este rol tendrán acceso a...
+ position: Un rol superior decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con menor prioridad
webhook:
events: Seleccionar eventos para enviar
url: Donde los eventos serán enviados
@@ -181,6 +194,7 @@ es:
setting_use_pending_items: Modo lento
severity: Severidad
sign_in_token_attempt: Código de seguridad
+ title: Título
type: Importar tipo
username: Nombre de usuario
username_or_email: Usuario o Email
@@ -189,6 +203,10 @@ es:
with_dns_records: Incluye los registros MX y las IP del dominio
featured_tag:
name: Etiqueta
+ filters:
+ actions:
+ hide: Ocultar completamente
+ warn: Ocultar con una advertencia
interactions:
must_be_follower: Bloquear notificaciones de personas que no te siguen
must_be_following: Bloquear notificaciones de personas que no sigues
@@ -202,6 +220,7 @@ es:
ip: IP
severities:
no_access: Bloquear acceso
+ sign_up_block: Bloquear registros
sign_up_requires_approval: Limitar registros
severity: Regla
notification_emails:
@@ -222,10 +241,19 @@ es:
name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias
usable: Permitir a las publicaciones usar esta etiqueta
+ user:
+ role: Rol
+ user_role:
+ color: Color de insignia
+ highlighted: Mostrar rol como insignia en perfiles de usuario
+ name: Nombre
+ permissions_as_keys: Permisos
+ position: Prioridad
webhook:
events: Eventos habilitados
url: URL de Endpoint
'no': 'No'
+ not_recommended: No recomendado
recommended: Recomendado
required:
mark: "*"
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 678ce72912..53e6a52b3b 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -37,6 +37,7 @@ fi:
current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana
current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus
digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana
+ discoverable: Salli tuntemattomien löytää tilisi suositusten, trendien ja muiden ominaisuuksien kautta
email: Sinulle lähetetään vahvistussähköposti
fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa
header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
@@ -48,6 +49,7 @@ fi:
phrase: Täytetään riippumatta julkaisun kirjainkoon tai sisällön varoituksesta
scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä.
setting_aggregate_reblogs: Älä näytä uusia tehosteita viesteille, joita on äskettäin tehostettu (koskee vain äskettäin saatuja tehosteita)
+ setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät aktiivisesti Mastodonia
setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella
setting_display_media_default: Piilota arkaluonteiseksi merkitty media
setting_display_media_hide_all: Piilota aina kaikki media
@@ -66,6 +68,11 @@ fi:
with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään
featured_tag:
name: 'Voit halutessasi käyttää jotakin näistä:'
+ filters:
+ action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta
+ actions:
+ hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa
+ warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko
form_challenge:
current_password: Olet menossa suojatulle alueelle
imports:
@@ -78,6 +85,7 @@ fi:
ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia alueita käyttämällä CIDR-syntaksia. Varo, että et lukitse itseäsi!
severities:
no_access: Estä pääsy kaikkiin resursseihin
+ sign_up_block: Uudet kirjautumiset eivät ole mahdollisia
sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi
severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille
rule:
@@ -89,6 +97,16 @@ fi:
name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi
user:
chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla
+ role: Rooli määrää, mitkä käyttöoikeudet käyttäjällä on
+ user_role:
+ color: Väri, jota käytetään roolin koko käyttöliittymässä, RGB heksamuodossa
+ highlighted: Tämä tekee roolista julkisesti näkyvän
+ name: Roolin julkinen nimi, jos rooli on asetettu näytettäväksi mekkinä
+ permissions_as_keys: Käyttäjillä, joilla on tämä rooli, on käyttöoikeus...
+ position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimintoja voidaan suorittaa vain rooleille, joiden prioriteetti on pienempi
+ webhook:
+ events: Valitse lähetettävät tapahtumat
+ url: Mihin tapahtumat lähetetään
labels:
account:
fields:
@@ -150,6 +168,7 @@ fi:
phrase: Avainsana tai lause
setting_advanced_layout: Ota käyttöön edistynyt web käyttöliittymä
setting_aggregate_reblogs: Ryhmitä boostaukset aikajanalla
+ setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia
setting_auto_play_gif: Toista GIF-animaatiot automaattisesti
setting_boost_modal: Kysy vahvistusta ennen buustausta
setting_crop_images: Rajaa kuvat avaamattomissa tuuttauksissa 16:9 kuvasuhteeseen
@@ -175,6 +194,7 @@ fi:
setting_use_pending_items: Hidastila
severity: Vakavuus
sign_in_token_attempt: Turvakoodi
+ title: Otsikko
type: Tietojen laji
username: Käyttäjänimi
username_or_email: Käyttäjänimi tai sähköposti
@@ -183,6 +203,10 @@ fi:
with_dns_records: Sisällytä toimialueen MX tietueet ja IP-osoite
featured_tag:
name: Aihetunniste
+ filters:
+ actions:
+ hide: Piilota kokonaan
+ warn: Piilota varoituksella
interactions:
must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua
must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa
@@ -196,6 +220,7 @@ fi:
ip: IP
severities:
no_access: Estä pääsy
+ sign_up_block: Estä kirjautumiset
sign_up_requires_approval: Rajoita rekisteröitymisiä
severity: Sääntö
notification_emails:
@@ -216,6 +241,17 @@ fi:
name: Aihetunniste
trendable: Salli tämän aihetunnisteen näkyä trendeissä
usable: Salli postauksien käyttää tätä aihetunnistetta
+ user:
+ role: Rooli
+ user_role:
+ color: Merkin väri
+ highlighted: Näyttä rooli merkkinä käyttäjäprofiileissa
+ name: Nimi
+ permissions_as_keys: Oikeudet
+ position: Prioriteetti
+ webhook:
+ events: Tapahtumat käytössä
+ url: Päätepisteen URL
'no': Ei
recommended: Suositeltu
required:
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index c4fd49040d..d942382428 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -68,6 +68,11 @@ fr:
with_dns_records: Une tentative de résolution des enregistrements DNS du domaine donné sera effectuée et les résultats seront également mis sur liste noire
featured_tag:
name: 'Vous pourriez vouloir utiliser l’un d’entre eux :'
+ filters:
+ action: Choisir l'action à effectuer quand un message correspond au filtre
+ actions:
+ hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas
+ warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre
form_challenge:
current_password: Vous entrez une zone sécurisée
imports:
@@ -91,6 +96,13 @@ fr:
name: Vous ne pouvez modifier que la casse des lettres, par exemple, pour le rendre plus lisible
user:
chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics
+ role: Le rôle définit quelles autorisations a l'utilisateur⋅rice
+ user_role:
+ color: Couleur à attribuer au rôle dans l'interface, au format hexadécimal RVB
+ highlighted: Cela rend le rôle visible publiquement
+ name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge
+ permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à …
+ position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure
webhook:
events: Sélectionnez les événements à envoyer
url: Là où les événements seront envoyés
@@ -181,6 +193,7 @@ fr:
setting_use_pending_items: Mode lent
severity: Sévérité
sign_in_token_attempt: Code de sécurité
+ title: Nom
type: Type d’import
username: Identifiant
username_or_email: Nom d’utilisateur·rice ou courriel
@@ -189,6 +202,10 @@ fr:
with_dns_records: Inclure les enregistrements MX et IP du domaine
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Cacher complètement
+ warn: Cacher derrière un avertissement
interactions:
must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas
must_be_following: Bloquer les notifications des personnes que vous ne suivez pas
@@ -222,6 +239,14 @@ fr:
name: Hashtag
trendable: Autoriser ce hashtag à apparaitre dans les tendances
usable: Autoriser les messages à utiliser ce hashtag
+ user:
+ role: Rôle
+ user_role:
+ color: Couleur du badge
+ highlighted: Afficher le rôle avec un badge sur les profils des utilisateur·rice·s
+ name: Nom
+ permissions_as_keys: Autorisations
+ position: Priorité
webhook:
events: Événements activés
url: URL du point de terminaison
diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml
index 63199e2cdc..7165cb2435 100644
--- a/config/locales/simple_form.gd.yml
+++ b/config/locales/simple_form.gd.yml
@@ -68,6 +68,11 @@ gd:
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:'
+ filters:
+ action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige
+ actions:
+ hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir
+ warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dh’innseas tiotal na criathraige
form_challenge:
current_password: Tha thu a’ tighinn a-steach gu raon tèarainte
imports:
@@ -91,6 +96,16 @@ gd:
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
+ role: Stiùiridh an dreuchd dè na ceadan a bhios aig cleachdaiche
+ user_role:
+ color: An datha a bhios air an dreuchd air feadh na h-eadar-aghaidh, ’na RGB san fhòrmat sia-dheicheach
+ highlighted: Le seo, chithear an dreuchd gu poblach
+ name: Ainm poblach na dreuchd ma chaidh a suidheachadh gun nochd i na baidse
+ permissions_as_keys: Gheibh na cleachdaichean aig a bheil an dreuchd seo inntrigeadh dha…
+ position: Ma tha còmhstri ann, buannaichidh an dreuchd as àirde ann an cuid a shuidheachaidhean. Tha gnìomhan sònraichte ann nach urrainn ach dreuchdan le prìomhachas ìosail a ghabhail
+ webhook:
+ events: Tagh na tachartasan a thèid a chur
+ url: Far an dèid na tachartasan a chur
labels:
account:
fields:
@@ -178,6 +193,7 @@ gd:
setting_use_pending_items: Am modh slaodach
severity: Donad
sign_in_token_attempt: Còd-tèarainteachd
+ title: Tiotal
type: Seòrsa an ion-phortaidh
username: Ainm-cleachdaiche
username_or_email: Ainm-cleachdaiche no post-d
@@ -186,6 +202,10 @@ gd:
with_dns_records: Gabh a-steach clàran MX agus IPan na h-àrainne
featured_tag:
name: Taga hais
+ filters:
+ actions:
+ hide: Falaich uile gu lèir
+ warn: Falaich le rabhadh
interactions:
must_be_follower: Bac na brathan nach eil o luchd-leantainn
must_be_following: Bac na brathan o dhaoine air nach lean thu
@@ -219,6 +239,17 @@ gd:
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
+ user:
+ role: Dreuchd
+ user_role:
+ color: Dathan na baidse
+ highlighted: Seall an dreuchd ’na baidse air pròifilean nan cleachdaichean
+ name: Ainm
+ permissions_as_keys: Ceadan
+ position: Prìomhachas
+ webhook:
+ events: Na tachartas an comas
+ url: URL na puinge-deiridh
'no': Chan eil
recommended: Molta
required:
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index e7fc36c647..3b050eeee3 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -49,7 +49,7 @@ gl:
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 publicacións que foron promovidas recentemente (só afecta a promocións recén recibidas)
- setting_always_send_emails: Como norma xeral non che enviamos emails se usas activamente Mastodon
+ setting_always_send_emails: Como norma xeral non che enviamos correos electrónicos se usas activamente Mastodon
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
@@ -68,6 +68,11 @@ gl:
with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo
featured_tag:
name: 'Poderías usar algún destos:'
+ filters:
+ action: Elixe a acción a realizar cando algunha publicación coincida co filtro
+ actions:
+ hide: Agochar todo o contido filtrado, facer coma se non existise
+ warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro
form_challenge:
current_password: Estás entrando nun área segura
imports:
@@ -80,6 +85,7 @@ gl:
ip: Escribe un enderezo IPv4 ou IPv6. Podes bloquear rangos completos usando a sintaxe CIDR. Ten coidado e non te bloquees a ti mesma!
severities:
no_access: Bloquear acceso a tódolos recursos
+ sign_up_block: Non se poderán rexistrar novas contas
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:
@@ -91,9 +97,16 @@ gl:
name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade
user:
chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas
+ role: O control dos roles adxudicados ás usuarias
+ user_role:
+ color: Cor que se usará para o rol a través da IU, como RGB en formato hex
+ highlighted: Esto fai o rol públicamente visible
+ name: Nome público do rol, se o rol se mostra como unha insignia
+ permissions_as_keys: As usuarias con este rol terá acceso a...
+ position: O rol superior decide nos conflitos en certas situacións. Algunhas accións só poden aplicarse sobre roles cunha prioridade menor
webhook:
- events: Elexir eventos a enviar
- url: Cando serán enviados os eventos
+ events: Elixir eventos a enviar
+ url: A onde se enviarán os eventos
labels:
account:
fields:
@@ -108,7 +121,7 @@ gl:
title: Título
admin_account_action:
include_statuses: Incluír no correo as publicacións denunciadas
- send_email_notification: Notificar a usuaria por correo-e
+ send_email_notification: Notificar á usuaria por email
text: Aviso personalizado
type: Acción
types:
@@ -155,7 +168,7 @@ gl:
phrase: Palabra chave ou frase
setting_advanced_layout: Activar interface web avanzada
setting_aggregate_reblogs: Agrupar promocións nas cronoloxías
- setting_always_send_emails: Enviar sempre notificacións por email
+ setting_always_send_emails: Enviar sempre notificacións por correo electrónico
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 publicacións non despregadas
@@ -181,14 +194,19 @@ gl:
setting_use_pending_items: Modo lento
severity: Severidade
sign_in_token_attempt: Código de seguridade
+ title: Título
type: Tipo de importación
username: Nome de usuaria
- username_or_email: Nome de usuaria ou Correo-e
+ username_or_email: Identificador ou Email
whole_word: Palabra completa
email_domain_block:
with_dns_records: Incluír rexistros MX e IPs do dominio
featured_tag:
name: Cancelo
+ filters:
+ actions:
+ hide: Agochar completamente
+ warn: Agochar tras un aviso
interactions:
must_be_follower: Bloquear as notificacións de non-seguidoras
must_be_following: Bloquea as notificacións de persoas que non segues
@@ -202,6 +220,7 @@ gl:
ip: IP
severities:
no_access: Bloquear acceso
+ sign_up_block: Bloquear novos rexistros
sign_up_requires_approval: Limitar o rexistro
severity: Regra
notification_emails:
@@ -222,10 +241,19 @@ gl:
name: Cancelo
trendable: Permitir que este cancelo apareza en tendencias
usable: Permitir que as publicacións utilicen este cancelo
+ user:
+ role: Rol
+ user_role:
+ color: Cor da insignia
+ highlighted: Mostrar rol como insignia en perfís de usuarias
+ name: Nome
+ permissions_as_keys: Permisos
+ position: Prioridade
webhook:
events: Eventos activados
url: URL do extremo
'no': Non
+ not_recommended: Non é recomendable
recommended: Recomendado
required:
mark: "*"
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index c7fe6026cb..22b5d84807 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -46,7 +46,7 @@ he:
locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה
locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
password: נא להשתמש בלפחות 8 תוים
- phrase: התאמה תמצא ללא תלות באזהרת תוכן בחצרוץ
+ phrase: התאמה תמצא ללא תלות באזהרת תוכן בפוסט
scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים.
setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן)
setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון
@@ -56,7 +56,7 @@ he:
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}
@@ -68,6 +68,11 @@ he:
with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן
featured_tag:
name: 'אולי תרצה/י להשתמש באחד מאלה:'
+ filters:
+ action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן
+ actions:
+ hide: הסתר את התוכן המסונן, כאילו לא היה קיים
+ warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן
form_challenge:
current_password: את.ה נכנס. ת לאזור מאובטח
imports:
@@ -80,6 +85,7 @@ he:
ip: נא להכניס כתובת IPv4 או IPv6. ניתן לחסום תחומים שלמים על ידי שימוש בתחביר CIDR. זהירות לא לנעול את עצמכם בחוץ!
severities:
no_access: חסימת גישה לכל המשאבים
+ sign_up_block: הרשמות חדשות לא יאופשרו
sign_up_requires_approval: הרשמות חדשות ידרשו את אישורך
severity: נא לבחור מה יקרה לבקשות מכתובת IP זו
rule:
@@ -91,8 +97,16 @@ he:
name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות
user:
chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים
+ role: התפקיד שולט על אילו הרשאות יש למשתמש
+ user_role:
+ color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי
+ highlighted: מאפשר נראות ציבורית של התפקיד
+ name: שם ציבורי של התפקיד, במידה והתפקיד מוגדר ככזה שמופיע כתג
+ permissions_as_keys: למשתמשים בתפקיד זה תהיה גישה ל...
+ position: תפקיד גבוה יותר מכריע בחילוקי דעות במצבים מסוימים. פעולות מסוימות יכולות להתבצע רק על תפקידים בדרגה נמוכה יותר
webhook:
events: בחר אירועים לשליחה
+ url: היעד שאליו יישלחו אירועים
labels:
account:
fields:
@@ -158,7 +172,7 @@ he:
setting_auto_play_gif: ניגון אוטומטי של גיפים
setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד
setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9
- setting_default_language: שפת חצרוץ
+ setting_default_language: שפת ברירת מחדל לפוסט
setting_default_privacy: פרטיות ההודעות
setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה
setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ
@@ -171,7 +185,7 @@ he:
setting_hide_network: להחביא את הגרף החברתי שלך
setting_noindex: לבקש הסתרה ממנועי חיפוש
setting_reduce_motion: הפחתת תנועה בהנפשות
- setting_show_application: הצגת הישום ששימש לחצרוץ
+ setting_show_application: הצגת הישום ששימש לפרסום הפוסט
setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת
setting_theme: ערכת העיצוב של האתר
setting_trends: הצגת הנושאים החמים
@@ -180,6 +194,7 @@ he:
setting_use_pending_items: מצב איטי
severity: חומרה
sign_in_token_attempt: קוד אבטחה
+ title: כותרת
type: סוג יבוא
username: שם משתמש
username_or_email: שם משתמש או דוא"ל
@@ -188,6 +203,10 @@ he:
with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין
featured_tag:
name: האשתג
+ filters:
+ actions:
+ hide: הסתרה כוללת
+ warn: הסתרה עם אזהרה
interactions:
must_be_follower: חסימת התראות משאינם עוקבים
must_be_following: חסימת התראות משאינם נעקבים
@@ -201,17 +220,18 @@ he:
ip: IP
severities:
no_access: חסימת גישה
+ sign_up_block: חסימת הרשמות
sign_up_requires_approval: הגבלת הרשמות
severity: כלל
notification_emails:
appeal: מישהם מערערים על החלטת מנהל קהילה
digest: שליחת הודעות דוא"ל מסכמות
- favourite: שליחת דוא"ל כשמחבבים חצרוץ
+ favourite: שליחת דוא"ל כשמחבבים פוסט
follow: שליחת דוא"ל כשנוספות עוקבות
follow_request: שליחת דוא"ל כשמבקשים לעקוב
mention: שליחת דוא"ל כשפונים אלייך
pending_account: נדרשת סקירה של חשבון חדש
- reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך
+ reblog: שליחת דוא"ל כשמהדהדים פוסט שלך
report: דו"ח חדש הוגש
trending_tag: נושאים חמים חדשים דורשים סקירה
rule:
@@ -221,7 +241,19 @@ he:
name: האשתג
trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים
usable: הרשה/י לחצרוצים להכיל האשתג זה
+ user:
+ role: תפקיד
+ user_role:
+ color: צבע תג
+ highlighted: הצג תפקיד כתג בפרופיל משתמש
+ name: שם
+ permissions_as_keys: הרשאות
+ position: עדיפות
+ webhook:
+ events: אירועים מאופשרים
+ url: כתובת URL של נקודת הקצה
'no': לא
+ not_recommended: לא מומלצים
recommended: מומלץ
required:
mark: "*"
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 3aba339954..16465ff793 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -68,6 +68,11 @@ hu:
with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához
featured_tag:
name: 'Ezeket esetleg használhatod:'
+ filters:
+ action: A végrehajtandó műveletet, ha a bejegyzés megfelel a szűrőnek
+ actions:
+ hide: A szűrt tartalom teljes elrejtése, mintha nem is létezne
+ warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése
form_challenge:
current_password: Beléptél egy biztonsági térben
imports:
@@ -75,11 +80,12 @@ hu:
invite_request:
text: Ez segít nekünk átnézni a jelentkezésedet
ip_block:
- comment: Opcionális. Emlékeztető, hogy miért is vetted fel ezt a szabályt.
+ comment: Nem kötelező. Emlékeztető, hogy miért is vetted fel ezt a szabályt.
expires_in: Az IP címek korlátos erőforrások, ezért néha meg vannak osztva és gyakran gazdát is cserélnek. Ezért a korlátlan IP tiltások használatát nem javasoljuk.
ip: Írj be egy IPv4 vagy IPv6 címet. A CIDR formátum használatával teljes tartományokat tilthatsz ki. Légy óvatos, hogy magadat véletlenül se zárd ki!
severities:
no_access: Elérés tiltása minden erőforráshoz
+ sign_up_block: Új feliratkozások nem lesznek lehetségesek
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:
@@ -91,6 +97,13 @@ hu:
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ű bejegyzések jelennek majd meg a nyilvános idővonalon
+ role: A szerep szabályozza, hogy a felhasználó milyen jogosultságokkal rendelkezik
+ user_role:
+ color: A szerephez használandó szín mindenhol a felhasználói felületen, hexa RGB formátumban
+ highlighted: Ez nyilvánosan láthatóvá teszi a szerepet
+ name: A szerep nyilvános neve, ha a szerepet úgy állították be, hogy jelvényként látható legyen
+ permissions_as_keys: A felhasználók ezzel a szereppel elérhetik a...
+ position: A magasabb szerepkör oldja fel az ütközéseket bizonyos helyzetekben. Bizonyos műveleteket csak alacsonyabb prioritású szerepkörrel lehet elvégezni.
webhook:
events: Válaszd ki a küldendő eseményeket
url: Ahová az eseményket küldjük
@@ -181,6 +194,7 @@ hu:
setting_use_pending_items: Lassú mód
severity: Súlyosság
sign_in_token_attempt: Biztonsági kód
+ title: Cím
type: Importálás típusa
username: Felhasználónév
username_or_email: Felhasználónév vagy e-mail cím
@@ -189,6 +203,10 @@ hu:
with_dns_records: Domain MX rekordjainak és IP-címeinek hozzávétele
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Teljes elrejtés
+ warn: Elrejtés figyelmeztetéssel
interactions:
must_be_follower: Nem követőidtől érkező értesítések tiltása
must_be_following: Nem követettjeidtől érkező értesítések tiltása
@@ -202,6 +220,7 @@ hu:
ip: IP
severities:
no_access: Elérés letiltása
+ sign_up_block: Feliratkozások letiltása
sign_up_requires_approval: Regisztrációk korlátozása
severity: Szabály
notification_emails:
@@ -222,10 +241,19 @@ hu:
name: Hashtag
trendable: A hashtag megjelenhet a felkapottak között
usable: Bejegyzések használhatják ezt a hashtaget
+ user:
+ role: Szerep
+ user_role:
+ color: Jelvény színe
+ highlighted: Szerep megjelenítése jelvényként a felhasználói profilokon
+ name: Név
+ permissions_as_keys: Engedélyek
+ position: Prioritás
webhook:
events: Engedélyezett események
url: Végponti URL
'no': Nem
+ not_recommended: Nem ajánlott
recommended: Ajánlott
required:
mark: "*"
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index dfc4902aba..41114ef0dc 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -178,6 +178,7 @@ id:
setting_use_pending_items: Mode pelan
severity: Keparahan
sign_in_token_attempt: Kode keamanan
+ title: Judul
type: Tipe impor
username: Nama pengguna
username_or_email: Nama pengguna atau Email
@@ -186,6 +187,10 @@ id:
with_dns_records: Termasuk data MX dan IP domain
featured_tag:
name: Tagar
+ filters:
+ actions:
+ hide: Sembunyikan seluruhnya
+ warn: Sembunyikan dengan peringatan
interactions:
must_be_follower: Blokir notifikasi dari non-pengikut
must_be_following: Blokir notifikasi dari orang yang tidak anda ikuti
@@ -219,6 +224,8 @@ id:
name: Tagar
trendable: Izinkan tagar ini muncul di bawah tren
usable: Izinkan toot memakai tagar ini
+ webhook:
+ events: Acara yang diaktifkan
'no': Tidak
recommended: Direkomendasikan
required:
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index 5f72276b7c..bb54524717 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -68,6 +68,11 @@ io:
with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos
featured_tag:
name: 'Vu forsan volas uzar 1 de co:'
+ filters:
+ action: Selektez ago kande posto parigas filtrilo
+ actions:
+ hide: Komplete celez filtrita kontenajo quale ol ne existas
+ warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo
form_challenge:
current_password: Vu eniras sekura areo
imports:
@@ -80,6 +85,7 @@ io:
ip: Tipez adreso di IPv4 o IPv6. Vu povas restrikar tota porteo per sintaxo CIDR. Sorgemez por ke vu ne klefklozas su!
severities:
no_access: Restriktez aceso a omna moyeni
+ sign_up_block: Nova registrago ne esos posibla
sign_up_requires_approval: Nova registro bezonos vua aprobo
severity: Selektez quo eventos kun demandi de ca IP
rule:
@@ -91,6 +97,13 @@ io:
name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla
user:
chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei
+ role: Rolo dominacas permisi quon uzanto havas
+ user_role:
+ color: Koloro quo uzesas por rolo en tota UI, quale RGB kun hexformato
+ highlighted: Co kauzigas rolo divenar publike videbla
+ name: Publika nomo di ca rolo, se rolo ajustesas quale montresas quale insigno
+ permissions_as_keys: Uzanti kun ca rolo povas...
+ position: Plu alta rolo decidas problemsolvo en kelka situeso. Kelka agi povas nur eventar a roli kun plu basa prioreso
webhook:
events: Selektigez eventi por sendar
url: Ibe eventi sendesos
@@ -181,6 +194,7 @@ io:
setting_use_pending_items: Modo lenta
severity: Severeso
sign_in_token_attempt: Sekureskodexo
+ title: Titulo
type: Tipo di importaco
username: Uzernomo
username_or_email: Uzantonomo o retposto
@@ -189,6 +203,10 @@ io:
with_dns_records: Inkluzez registraji MX e IPi di domeno
featured_tag:
name: Hashtago
+ filters:
+ actions:
+ hide: Tote celez
+ warn: Celez kun averto
interactions:
must_be_follower: Celar la savigi da homi, qui ne sequas tu
must_be_following: Celar la savigi da homi, quin tu ne sequas
@@ -202,6 +220,7 @@ io:
ip: IP
severities:
no_access: Depermisez aceso
+ sign_up_block: Obstruktez registragi
sign_up_requires_approval: Limitigez registri
severity: Regulo
notification_emails:
@@ -222,10 +241,19 @@ io:
name: Hashtago
trendable: Permisez ca hashtago aparar che tendenci
usable: Permisez posti uzar ca hashtago
+ user:
+ role: Rolo
+ user_role:
+ color: Insignokoloro
+ highlighted: Montrez rolo quale insigno en uzantoprofili
+ name: Nomo
+ permissions_as_keys: Permisi
+ position: Prioreso
webhook:
events: Aktivigita eventi
url: URL di finpunto
'no': Ne
+ not_recommended: Ne rekomendesas
recommended: Rekomendito
required:
mark: "*"
diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml
index 638458dae8..bdc9c03803 100644
--- a/config/locales/simple_form.is.yml
+++ b/config/locales/simple_form.is.yml
@@ -68,6 +68,11 @@ is:
with_dns_records: Tilraun verður gerð til að leysa DNS-færslur uppgefins léns og munu niðurstöðurnar einnig verða útilokaðar
featured_tag:
name: 'Þú gætir viljað nota eitt af þessum:'
+ filters:
+ action: Veldu hvaða aðgerð á að framkvæma þegar færsla samsvarar síunni
+ actions:
+ hide: Fela síað efni algerlega, rétt eins og það sé ekki til staðar
+ warn: Fela síað efni á bakvið aðvörun sem tekur fram titil síunnar
form_challenge:
current_password: Þú ert að fara inn á öryggissvæði
imports:
@@ -80,6 +85,7 @@ is:
ip: Settu inn IPv4 eða IPv6 vistfang. Þú getur lokað á svið vistfanga með því að nota CIDR-framsetningu. Gættu þess að loka ekki sjálfa/n þig úti!
severities:
no_access: Loka á aðgang að öllum tilföngum
+ sign_up_block: Nýskráningar verða ekki mögulegar
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:
@@ -91,6 +97,13 @@ is:
name: Þú getur aðeins breytt stafstöði mill há-/lágstafa, til gæmis til að gera þetta læsilegra
user:
chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum
+ role: Hlutverk stýrir hvaða heimildir notandinn hefur
+ user_role:
+ color: Litur sem notaður er fyrir hlutverkið allsstaðar í viðmótinu, sem RGB-gildi á hex-sniði
+ highlighted: Þetta gerir hlutverk sýnilegt opinberlega
+ name: Opinbert heiti hlutverks, ef birta á hlutverk sem merki
+ permissions_as_keys: Notendur með þetta hlutverk munu hafa aðgang að...
+ position: Rétthærra hlutverk ákvarðar lausn árekstra í ákveðnum tilfellum. Sumar aðgerðir er aðeins hægt að framkvæma á hlutverk með lægri forgangi
webhook:
events: Veldu atburði sem á að senda
url: Hvert atburðir verða sendir
@@ -181,6 +194,7 @@ is:
setting_use_pending_items: Rólegur hamur
severity: Mikilvægi
sign_in_token_attempt: Öryggiskóði
+ title: Titill
type: Tegund innflutnings
username: Notandanafn
username_or_email: Notandanafn eða tölvupóstfang
@@ -189,6 +203,10 @@ is:
with_dns_records: Hafa með MX-færslur og IP-vistföng lénsins
featured_tag:
name: Myllumerki
+ filters:
+ actions:
+ hide: Fela alveg
+ warn: Fela með aðvörun
interactions:
must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur
must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með
@@ -202,6 +220,7 @@ is:
ip: IP-vistfang
severities:
no_access: Loka á aðgang
+ sign_up_block: Loka á nýskráningar
sign_up_requires_approval: Takmarka nýskráningar
severity: Regla
notification_emails:
@@ -214,18 +233,27 @@ is:
pending_account: Nýr notandaaðgangur þarfnast yfirferðar
reblog: Einhver endurbirti færsluna þína
report: Ný kæra hefur verið send inn
- trending_tag: Ný tilhneiging krefst yfirferðar
+ trending_tag: Nýtt vinsælt efni krefst yfirferðar
rule:
text: Regla
tag:
listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni
name: Myllumerki
- trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum
+ trendable: Leyfa þessu myllumerki að birtast undir vinsælu efni
usable: Leyfa færslum að nota þetta myllumerki
+ user:
+ role: Hlutverk
+ user_role:
+ color: Litur merkis
+ highlighted: Birta hlutverk sem merki á notandaauðkenni
+ name: Nafn
+ permissions_as_keys: Heimildir
+ position: Forgangur
webhook:
events: Virkjaðir atburðir
url: Slóð á endapunkt
'no': Nei
+ not_recommended: Ekki mælt með þessu
recommended: Mælt með
required:
mark: "*"
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 4d86f24dfe..aeabbcdfd4 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -68,6 +68,11 @@ it:
with_dns_records: Sarà effettuato un tentativo di risolvere i record DNS del dominio in questione e i risultati saranno inseriti anche nella blacklist
featured_tag:
name: 'Eccone alcuni che potresti usare:'
+ filters:
+ action: Scegli quale azione eseguire quando un post corrisponde al filtro
+ actions:
+ hide: Nascondi completamente il contenuto filtrato, come se non esistesse
+ warn: Nascondi il contenuto filtrato e mostra invece un avviso, citando il titolo del filtro
form_challenge:
current_password: Stai entrando in un'area sicura
imports:
@@ -80,6 +85,7 @@ it:
ip: Inserisci un indirizzo IPv4 o IPv6. Puoi bloccare interi intervalli usando la sintassi CIDR. Fai attenzione a non bloccare te stesso!
severities:
no_access: Blocca l'accesso a tutte le risorse
+ sign_up_block: Le nuove iscrizioni non saranno possibili
sign_up_requires_approval: Le nuove iscrizioni richiederanno la tua approvazione
severity: Scegli cosa accadrà con le richieste da questo IP
rule:
@@ -91,6 +97,13 @@ it:
name: Puoi cambiare solo il minuscolo/maiuscolo delle lettere, ad esempio, per renderlo più leggibile
user:
chosen_languages: Quando una o più lingue sono contrassegnate, nelle timeline pubbliche vengono mostrati solo i toot nelle lingue selezionate
+ role: Il ruolo controlla quali permessi ha l'utente
+ user_role:
+ color: Colore da usare per il ruolo in tutta l'UI, come RGB in formato esadecimale
+ highlighted: Rende il ruolo visibile
+ name: Nome pubblico del ruolo, se il ruolo è impostato per essere visualizzato come distintivo
+ permissions_as_keys: Gli utenti con questo ruolo avranno accesso a...
+ position: Un ruolo più alto decide la risoluzione dei conflitti in determinate situazioni. Alcune azioni possono essere eseguite solo su ruoli con priorità più bassa
webhook:
events: Seleziona eventi da inviare
url: Dove gli eventi saranno inviati
@@ -181,6 +194,7 @@ it:
setting_use_pending_items: Modalità lenta
severity: Severità
sign_in_token_attempt: Codice di sicurezza
+ title: Titolo
type: Tipo importazione
username: Nome utente
username_or_email: Nome utente o email
@@ -189,6 +203,10 @@ it:
with_dns_records: Includi record MX e indirizzi IP del dominio
featured_tag:
name: Etichetta
+ filters:
+ actions:
+ hide: Nascondi completamente
+ warn: Nascondi con avviso
interactions:
must_be_follower: Blocca notifiche da chi non ti segue
must_be_following: Blocca notifiche dalle persone che non segui
@@ -202,6 +220,7 @@ it:
ip: IP
severities:
no_access: Blocca accesso
+ sign_up_block: Blocca iscrizioni
sign_up_requires_approval: Limita iscrizioni
severity: Regola
notification_emails:
@@ -222,10 +241,19 @@ it:
name: Hashtag
trendable: Permetti a questo hashtag di apparire nelle tendenze
usable: Permetti ai post di usare questo hashtag
+ user:
+ role: Ruolo
+ user_role:
+ color: Colore distintivo
+ highlighted: Mostra il ruolo come distintivo sui profili utente
+ name: Nome
+ permissions_as_keys: Permessi
+ position: Priorità
webhook:
events: Eventi abilitati
url: URL endpoint
'no': 'No'
+ not_recommended: Non consigliato
recommended: Consigliato
required:
mark: "*"
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index cde47dbd04..5e8ef67b4c 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -91,6 +91,10 @@ ja:
name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます
user:
chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります
+ user_role:
+ highlighted: これにより、役割が公開されます。
+ name: 役割をバッジ表示する際の表示名
+ permissions_as_keys: この役割を持つユーザーは次の機能にアクセスできます
labels:
account:
fields:
@@ -178,6 +182,7 @@ ja:
setting_use_pending_items: 手動更新モード
severity: 重大性
sign_in_token_attempt: セキュリティコード
+ title: タイトル
type: インポートする項目
username: ユーザー名
username_or_email: ユーザー名またはメールアドレス
@@ -219,6 +224,14 @@ ja:
name: ハッシュタグ
trendable: トレンドへの表示を許可する
usable: 投稿への使用を許可する
+ user:
+ role: 役割
+ user_role:
+ color: バッジの色
+ highlighted: プロフィールに役割のバッジを表示する
+ name: 名前
+ permissions_as_keys: 権限
+ position: 優先度
webhook:
events: 有効なイベント
url: エンドポイントURL
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index d79b795130..fe8e010cf5 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -68,6 +68,11 @@ ko:
with_dns_records: 입력한 도메인의 DNS를 조회를 시도하여 나온 값도 차단됩니다
featured_tag:
name: '이것들을 사용하면 좋을 것 같습니다:'
+ filters:
+ action: 게시물이 필터에 걸러질 때 어떤 동작을 수행할 지 고르세요
+ actions:
+ hide: 필터에 걸러진 글을 처음부터 없었던 것처럼 완전히 가리기
+ warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기
form_challenge:
current_password: 당신은 보안 구역에 진입하고 있습니다
imports:
@@ -80,6 +85,7 @@ ko:
ip: IPv4 또는 IPv6 주소를 입력하세요. CIDR 문법을 사용해서 모든 범위를 차단할 수도 있습니다. 자기 자신을 잠가버리지 않도록 주의하세요!
severities:
no_access: 모든 자원에 대한 접근 차단
+ sign_up_block: 새 가입이 불가능하게 됩니다
sign_up_requires_approval: 새 가입이 승인을 필요로 하도록 합니다
severity: 해당 IP로부터의 요청에 대해 무엇이 일어나게 할 지 고르세요
rule:
@@ -91,6 +97,13 @@ ko:
name: 읽기 쉽게하기 위한 글자의 대소문자만 변경할 수 있습니다.
user:
chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다
+ role: 역할은 사용자가 어떤 권한을 가지게 될 지 결정합니다
+ user_role:
+ color: 색상은 사용자 인터페이스에서 역할을 나타내기 위해 사용되며, RGB 16진수 형식입니다
+ highlighted: 이 역할이 공개적으로 보이도록 설정합니다
+ name: 역할이 배지로 표시될 경우, 그 역할에 대한 공개적인 이름입니다
+ permissions_as_keys: 이 역할을 가진 사용자는 다음에 접근할 수 있게 됩니다...
+ position: 특정 상황에서 충돌이 발생할 경우 더 높은 역할이 충돌을 해결합니다. 특정 작업은 우선순위가 낮은 역할에 대해서만 수행될 수 있습니다
webhook:
events: 전송할 이벤트를 선택하세요
url: 이벤트가 어디로 전송될 지
@@ -181,6 +194,7 @@ ko:
setting_use_pending_items: 느린 모드
severity: 심각도
sign_in_token_attempt: 보안 코드
+ title: 제목
type: 불러오기 종류
username: 사용자명
username_or_email: 사용자명 또는 이메일
@@ -189,6 +203,10 @@ ko:
with_dns_records: 도메인의 IP와 MX 레코드 값을 포함
featured_tag:
name: 해시태그
+ filters:
+ actions:
+ hide: 완전히 숨기기
+ warn: 경고와 함께 숨기기
interactions:
must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단
must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단
@@ -202,6 +220,7 @@ ko:
ip: IP
severities:
no_access: 접근 차단
+ sign_up_block: 가입 차단
sign_up_requires_approval: 가입 제한
severity: 규칙
notification_emails:
@@ -222,10 +241,19 @@ ko:
name: 해시태그
trendable: 이 해시태그가 유행에 보여지도록 허용
usable: 이 해시태그를 게시물에 사용 가능하도록 허용
+ user:
+ role: 역할
+ user_role:
+ color: 배지 색상
+ highlighted: 역할 배지를 사용자 프로필에 표시
+ name: 이름
+ permissions_as_keys: 권한
+ position: 우선순위
webhook:
events: 활성화된 이벤트
url: 엔드포인트 URL
'no': 아니오
+ not_recommended: 추천하지 않음
recommended: 추천함
required:
mark: "*"
diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml
index 9cfe371b55..e4b0f07596 100644
--- a/config/locales/simple_form.ku.yml
+++ b/config/locales/simple_form.ku.yml
@@ -44,7 +44,7 @@ ku:
inbox_url: URLyê di rûpela pêşî de guhêrkerê ku tu dixwazî bi kar bînî jê bigire
irreversible: Şandiyên parzûnkirî êdî bê veger wenda bibe, heger parzûn paşê were rakirin jî nabe
locale: Zimanê navrûyê bikarhêner, agahdarîyên e-name û pêl kirin
- locked: Bi destan daxwazên şopê hilbijêrîne da ku kî bikaribe te bişopîne
+ locked: Bi pejirandina daxwazên şopandinê, kî dikare te bişopîne bi destan kontrol bike
password: Herî kêm 8 tîpan bi kar bîne
phrase: Ji rewşa nivîsê tîpên girdek/hûrdek an jî ji hişyariya naveroka ya şandiyê wek serbixwe wê were hevbeş kirin
scopes: |-
@@ -70,6 +70,11 @@ ku:
with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin
featured_tag:
name: 'Belkî tu yekê bi kar bînî çi van:'
+ filters:
+ action: Hilbijêre ku dema şandiyek bi parzûnê re lihevhatî be bila kîjan çalakî were pêkanîn
+ actions:
+ hide: Naveroka parzûnkirî bi tevahî veşêre, mîna ku ew tune be tevbigere
+ warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre
form_challenge:
current_password: Tu dikevî qadeke ewledar
imports:
@@ -82,6 +87,7 @@ ku:
ip: Têkeve navnîşana IPv4 an jî IPv6'yek. Tu dikarî bi hevoksazî ya CIDR re hemî valahîyan asteng bikî. Hay ji xwe hebe ku xwe derve nehêle!
severities:
no_access: Gihîştina hemî çavkaniyan asteng bike
+ sign_up_block: Tomarkirinên nû wê ne pêkan bin
sign_up_requires_approval: Tomarkirinên nû de pejirandina te pêwîste
severity: Daxwazên ku ji vê IPyê tên dê çi bibe hilbijêre
rule:
@@ -93,6 +99,13 @@ ku:
name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî
user:
chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan
+ role: Rola kîjan mafdayînên bikarhêner heye kontrol dike
+ user_role:
+ color: Renga ku were bikaranîn ji bo rola li seranserê navrûya bikarhêneriyê, wekî RGB di forma hex
+ highlighted: Ev rola xwe ji raya giştî re xuya dike
+ name: Navê giştî yê rolê, ku rol wekî nîşanekê were nîşankirin
+ permissions_as_keys: Bikarhênerên bi vê rolê wê bigihîjin...
+ position: Rola bilind di hinek rewşan de biryara çareserkirina nakokiyan dide. Hinej çalakî tenê dikarin li ser rolên bi pêşanînek kêmtir bêne kirin
webhook:
events: Bûyeran hilbijêre bo şandinê
url: Cihê ku bûyer wê werin şandin
@@ -183,6 +196,7 @@ ku:
setting_use_pending_items: Awayê hêdî
severity: Asta girîngiyê
sign_in_token_attempt: Koda ewlehiyê
+ title: Sernav
type: Cureya têxistinê
username: Navê bikarhêneriyê
username_or_email: Navê bikarhêner an jî e-name
@@ -191,6 +205,10 @@ ku:
with_dns_records: Tomarên MX û IP yên hundirê navper lê zêde bike
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Bi tevahî veşêre
+ warn: Bi hişyariyekê veşêre
interactions:
must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike
must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî
@@ -204,6 +222,7 @@ ku:
ip: IP
severities:
no_access: Gihîştinê asteng bike
+ sign_up_block: Tomarkirinan asteng bike
sign_up_requires_approval: Tomaran sînordar bike
severity: Rêbaz
notification_emails:
@@ -224,10 +243,19 @@ ku:
name: Hashtag
trendable: Bihêle ku ev hashtag werê xuyakirin di bin rojevê de
usable: Bihêle ku şandî ev hashtag bi kar bînin
+ user:
+ role: Rol
+ user_role:
+ color: Rengê nîşanê
+ highlighted: Li ser profîlên bikarhêner rola wekî nîşan bide nîşankirin
+ name: Nav
+ permissions_as_keys: Maf
+ position: Pêşikî
webhook:
events: Bûyerên çalakkirî
url: Girêdana xala dawîbûnê
'no': Na
+ not_recommended: Nayê pêşniyarkirin
recommended: Pêşniyarkirî
required:
mark: "*"
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index 97fa2bff4d..cff70297e3 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -68,6 +68,11 @@ lv:
with_dns_records: Tiks mēģināts atrisināt dotā domēna DNS ierakstus, un rezultāti arī tiks bloķēti
featured_tag:
name: 'Iespējams, vēlēsies izmantot kādu no šīm:'
+ filters:
+ action: Izvēlies, kuru darbību veikt, ja ziņa atbilst filtram
+ actions:
+ hide: Paslēp filtrēto saturu pilnībā, izturoties tā, it kā tas neeksistētu
+ warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums
form_challenge:
current_password: Tu ieej drošā zonā
imports:
@@ -80,6 +85,7 @@ lv:
ip: Ievadi IPv4 vai IPv6 adresi. Izmantojot CIDR sintaksi, tu vari bloķēt visus diapazonus. Esi piesardzīgs un neizslēdz pats sevi!
severities:
no_access: Bloķēt piekļuvi visiem resursiem
+ sign_up_block: Jaunas pieteikšanās nebūs iespējamas
sign_up_requires_approval: Jaunām reģistrācijām būs nepieciešams tavs apstiprinājums
severity: Izvēlies, kas notiks ar pieprasījumiem no šīs IP adreses
rule:
@@ -91,6 +97,13 @@ lv:
name: Tu vari mainīt tikai burtu lielumu, piemēram, lai tie būtu vieglāk lasāmi
user:
chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās
+ role: Loma kontrolē, kādas atļaujas ir lietotājam
+ user_role:
+ color: Krāsa, kas jāizmanto lomai visā lietotāja interfeisā, kā RGB hex formātā
+ highlighted: Tas padara lomu publiski redzamu
+ name: Lomas publiskais nosaukums, ja loma ir iestatīta rādīšanai kā emblēma
+ permissions_as_keys: Lietotājiem ar šo lomu būs piekļuve...
+ position: What is "alower"?
webhook:
events: Atlasi nosūtāmos notikums
url: Kur notikumi tiks nosūtīti
@@ -181,6 +194,7 @@ lv:
setting_use_pending_items: Lēnais režīms
severity: Smagums
sign_in_token_attempt: Drošības kods
+ title: Virsraksts
type: Importa veids
username: Lietotājvārds
username_or_email: Lietotājvārds vai e-pasts
@@ -189,6 +203,10 @@ lv:
with_dns_records: Ietvert domēna MX ierakstus un IP adreses
featured_tag:
name: Tēmturis
+ filters:
+ actions:
+ hide: Paslēpt pilnībā
+ warn: Paslēpt ar brīdinājumu
interactions:
must_be_follower: Bloķēt paziņojumus no ne-sekotājiem
must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko
@@ -202,6 +220,7 @@ lv:
ip: IP
severities:
no_access: Bloķēt piekļuvi
+ sign_up_block: Bloķēt pieteikšanās
sign_up_requires_approval: Ierobežot reģistrēšanos
severity: Noteikumi
notification_emails:
@@ -222,10 +241,19 @@ lv:
name: Tēmturis
trendable: Atļaut šim tēmturim parādīties zem tendencēm
usable: Atļaut lietot ziņās šo tēmturi
+ user:
+ role: Loma
+ user_role:
+ color: Emblēmas krāsa
+ highlighted: Atainot lomu kā emblēmu lietotāju profilos
+ name: Nosaukums
+ permissions_as_keys: Atļaujas
+ position: Prioritāte
webhook:
events: Iespējotie notikumi
url: Galapunkta URL
'no': Nē
+ not_recommended: Nav ieteicams
recommended: Ieteicams
required:
mark: "*"
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 09dd2bd1bb..0beed91734 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -27,6 +27,8 @@ nl:
scheduled_at: Laat leeg om de mededeling meteen te publiceren
starts_at: Optioneel. In het geval dat jouw mededeling aan een bepaald tijdvak is gebonden
text: Je kunt specifieke tekst voor berichten gebruiken. Let op de ruimte die de mededeling op het scherm van de gebruiker inneemt
+ appeal:
+ text: Je kunt maar eenmalig bezwaar indienen tegen een vastgestelde overtreding
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
@@ -35,8 +37,9 @@ nl:
current_password: Voer voor veiligheidsredenen het wachtwoord van je huidige account in
current_username: Voer ter bevestiging de gebruikersnaam van je huidige account in
digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen
+ discoverable: Toestaan dat jouw account vindbaar is voor onbekenden, via aanbevelingen, trends en op andere manieren
email: Je krijgt een bevestigingsmail
- fields: Je kan maximaal 4 items als een tabel op je profiel weergeven
+ fields: Je kunt maximaal 4 items als een tabel op je profiel weergeven
header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken
irreversible: Gefilterde berichten verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd
@@ -63,6 +66,11 @@ nl:
with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd
featured_tag:
name: 'Je wilt misschien een van deze gebruiken:'
+ filters:
+ action: Kies welke acties uitgevoerd moeten wanneer een bericht overeenkomt met het filter
+ actions:
+ hide: Verberg de gefilterde inhoud volledig, alsof het niet bestaat
+ warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst
form_challenge:
current_password: Je betreedt een veilige omgeving
imports:
@@ -75,6 +83,7 @@ nl:
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_block: Nieuwe registraties zijn niet mogelijk
sign_up_requires_approval: Nieuwe registraties vereisen jouw goedkeuring
severity: Kies wat er moet gebeuren met aanvragen van dit IP-adres
rule:
@@ -86,6 +95,9 @@ nl:
name: Je kunt elk woord met een hoofdletter beginnen, om zo bijvoorbeeld de tekst leesbaarder te maken
user:
chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond
+ role: De rol bepaalt welke rechten een gebruiker heeft
+ user_role:
+ permissions_as_keys: Gebruikers met deze rol hebben toegang tot...
labels:
account:
fields:
@@ -116,6 +128,8 @@ nl:
scheduled_at: Mededeling inplannen
starts_at: Begint
text: Mededeling
+ appeal:
+ text: Leg uit waarom deze beslissing volgens jou teruggedraaid moet worden
defaults:
autofollow: Uitnodigen om jouw account te volgen
avatar: Avatar
@@ -145,6 +159,7 @@ nl:
phrase: Trefwoord of zinsdeel
setting_advanced_layout: Geavanceerde webomgeving inschakelen
setting_aggregate_reblogs: Boosts in tijdlijnen groeperen
+ setting_always_send_emails: Altijd e-mailmeldingen verzenden
setting_auto_play_gif: Speel geanimeerde GIF's automatisch af
setting_boost_modal: Vraag voor het boosten van een bericht een bevestiging
setting_crop_images: Afbeeldingen bijsnijden tot 16x9 in berichten op tijdlijnen
@@ -170,6 +185,7 @@ nl:
setting_use_pending_items: Langzame modus
severity: Zwaarte
sign_in_token_attempt: Beveiligingscode
+ title: Titel
type: Importtype
username: Gebruikersnaam
username_or_email: Gebruikersnaam of e-mailadres
@@ -178,6 +194,10 @@ nl:
with_dns_records: MX-records en IP-adressen van het domein toevoegen
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Volledig verbergen
+ warn: Met een waarschuwing verbergen
interactions:
must_be_follower: Meldingen van mensen die jou niet volgen blokkeren
must_be_following: Meldingen van mensen die jij niet volgt blokkeren
@@ -191,11 +211,13 @@ nl:
ip: IP
severities:
no_access: Toegang blokkeren
+ sign_up_block: Registraties blokkeren
sign_up_requires_approval: Registraties beperken
severity: Regel
notification_emails:
+ appeal: Iemand heeft bezwaar ingediend tegen een beslissing van een moderator
digest: Periodiek e-mails met een samenvatting versturen
- favourite: Wanneer iemand jouw bericht aan diens favorieten heeft toegevoegd
+ favourite: Wanneer iemand jouw bericht als favoriet markeert
follow: Wanneer iemand jou is gaan volgen
follow_request: Wanneer iemand jou wil volgen
mention: Wanneer iemand jou heeft vermeld
@@ -210,9 +232,17 @@ nl:
name: Hashtag
trendable: Toestaan dat deze hashtag onder trends te zien valt
usable: Toestaan dat deze hashtag in berichten gebruikt mag worden
+ user:
+ role: Rol
+ user_role:
+ color: Kleur van badge
+ name: Naam
+ permissions_as_keys: Rechten
+ position: Prioriteit
webhook:
url: Eindpunt URL
'no': Nee
+ not_recommended: Niet aanbevolen
recommended: Aanbevolen
required:
mark: "*"
diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml
index 0e99886543..71734509bc 100644
--- a/config/locales/simple_form.nn.yml
+++ b/config/locales/simple_form.nn.yml
@@ -85,6 +85,10 @@ nn:
name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg
user:
chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner
+ role: Rolla kontrollerer kva tilgangar brukaren har
+ user_role:
+ highlighted: Dette gjer rolla synleg offentleg
+ permissions_as_keys: Brukarar med denne rolla vil ha tilgang til...
labels:
account:
fields:
@@ -144,6 +148,7 @@ nn:
phrase: Nykelord eller frase
setting_advanced_layout: Skruv på det avanserte nettgrensesnittet
setting_aggregate_reblogs: Gruppeframhevingar på tidsliner
+ setting_always_send_emails: Alltid send epostvarsel
setting_auto_play_gif: Spel av animerte GIF-ar automatisk
setting_boost_modal: Vis stadfesting før framheving
setting_crop_images: Skjer bilete i ikkje-utvida tut til 16x9
@@ -169,6 +174,7 @@ nn:
setting_use_pending_items: Saktemodus
severity: Alvorsgrad
sign_in_token_attempt: Trygdenykel
+ title: Tittel
type: Importtype
username: Brukarnamn
username_or_email: Brukarnamn eller E-post
@@ -177,6 +183,10 @@ nn:
with_dns_records: Ha med MX-recordar og IP-ar til domenet
featured_tag:
name: Emneknagg
+ filters:
+ actions:
+ hide: Gøym totalt
+ warn: Gøym med ei advarsel
interactions:
must_be_follower: Gøym varslingar frå folk som ikkje fylgjer deg
must_be_following: Gøym varslingar frå folk du ikkje fylgjer
@@ -200,6 +210,7 @@ nn:
mention: Send e-post når nokon nemner deg
pending_account: Send e-post når ein ny konto treng gjennomgang
reblog: Send e-post når nokon framhevar statusen din
+ report: Ny rapport er sendt
rule:
text: Regler
tag:
@@ -207,6 +218,13 @@ nn:
name: Emneknagg
trendable: Tillat denne emneknaggen til å synast under trendar
usable: Gje tut lov til å nytta denne emneknaggen
+ user:
+ role: Rolle
+ user_role:
+ name: Namn
+ position: Prioritet
+ webhook:
+ url: Endepunkts-URL
'no': Nei
recommended: Tilrådt
required:
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index b0373fbc62..665ac6af13 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -68,6 +68,11 @@ pl:
with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę
featured_tag:
name: 'Sugerujemy użycie jednego z następujących:'
+ filters:
+ action: Wybierz akcję do wykonania, gdy post pasuje do filtra
+ actions:
+ hide: Całkowicie ukryj przefiltrowaną zawartość, jakby nie istniała
+ warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra
form_challenge:
current_password: Wchodzisz w strefę bezpieczną
imports:
@@ -80,6 +85,7 @@ pl:
ip: Wprowadź adres IPv4 lub IPv6. Możesz zablokować całe zakresy za pomocą składni CIDR. Uważaj, aby się nie zablokować!
severities:
no_access: Zablokuj dostęp do wszystkich zasobów
+ sign_up_block: Nowe rejestracje nie będą możliwe
sign_up_requires_approval: Nowe rejestracje będą wymagać twojej zgody
severity: Wybierz co ma się stać z żadaniami z tego adresu IP
rule:
@@ -91,6 +97,13 @@ pl:
name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
user:
chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
+ role: Rola kontroluje uprawnienia użytkownika
+ user_role:
+ color: Kolor używany dla roli w całym interfejsie użytkownika, wyrażony jako RGB w formacie szesnastkowym
+ highlighted: To sprawia, że rola jest widoczna publicznie
+ name: Publiczna nazwa roli, jeśli włączone jest wyświetlanie odznaki
+ permissions_as_keys: Użytkownicy z tą rolą będą mieli dostęp do...
+ position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem
webhook:
events: Wybierz zdarzenia do wysłania
url: Dokąd będą wysłane zdarzenia
@@ -181,6 +194,7 @@ pl:
setting_use_pending_items: Tryb spowolniony
severity: Priorytet
sign_in_token_attempt: Kod zabezpieczający
+ title: Tytuł
type: Importowane dane
username: Nazwa użytkownika
username_or_email: Nazwa użytkownika lub adres e-mail
@@ -189,6 +203,10 @@ pl:
with_dns_records: Uwzględnij rekordy MX i adresy IP domeny
featured_tag:
name: Hasztag
+ filters:
+ actions:
+ hide: Ukryj całkowicie
+ warn: Ukryj z ostrzeżeniem
interactions:
must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą
must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz
@@ -202,6 +220,7 @@ pl:
ip: Adres IP
severities:
no_access: Zablokuj dostęp
+ sign_up_block: Zablokuj nowe rejestracje
sign_up_requires_approval: Ogranicz rejestracje
severity: Reguła
notification_emails:
@@ -222,10 +241,19 @@ pl:
name: Hashtag
trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie”
usable: Pozwól na umieszczanie tego hashtagu we wpisach
+ user:
+ role: Rola
+ user_role:
+ color: Kolor odznaki
+ highlighted: Wyświetl rolę jako odznakę na profilach użytkowników
+ name: Nazwa
+ permissions_as_keys: Uprawnienia
+ position: Priorytet
webhook:
events: Włączone zdarzenia
url: Endpoint URL
'no': Nie
+ not_recommended: Niezalecane
recommended: Polecane
required:
mark: "*"
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index b96952e965..9bbc6b4d75 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -27,6 +27,8 @@ pt-BR:
scheduled_at: Deixe em branco para publicar o comunicado agora
starts_at: Opcional. Caso o comunicado esteja vinculado a um período específico
text: Você pode usar a sintaxe do toot. Considere o espaço que o comunicado ocupará na tela do usuário
+ appeal:
+ text: Você só pode recorrer uma vez
defaults:
autofollow: Pessoas que criarem conta através de seu convite te seguirão automaticamente
avatar: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px
@@ -35,6 +37,7 @@ pt-BR:
current_password: Para fins de segurança, por favor, digite a senha da conta atual
current_username: Para confirmar, por favor, digite o nome de usuário da conta atual
digest: Enviado apenas após um longo período de inatividade com um resumo das menções recebidas durante ausência
+ discoverable: Permita que a sua conta seja descoberta por estranhos através de recomendações, tendências e outros recursos
email: Você receberá um e-mail de confirmação
fields: Você pode ter até 4 itens mostrados em forma de tabela no seu perfil
header: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px
@@ -46,6 +49,7 @@ pt-BR:
phrase: Corresponderá independente de maiúsculas ou minúsculas, no texto ou no Aviso de Conteúdo de um toot
scopes: Quais APIs o aplicativo vai ter permissão de acessar. Se você selecionar uma autorização de alto nível, você não precisa selecionar individualmente os outros.
setting_aggregate_reblogs: Não mostra novos boosts para toots que receberam boost recentemente (afeta somente os boosts mais recentes)
+ setting_always_send_emails: Normalmente, as notificações por e-mail não serão enviadas enquanto você estiver usando ativamente o Mastodon
setting_default_sensitive: Mídia sensível está oculta por padrão e pode ser revelada com um clique
setting_display_media_default: Sempre ocultar mídia sensível
setting_display_media_hide_all: Sempre ocultar todas as mídias
@@ -64,6 +68,11 @@ pt-BR:
with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra
featured_tag:
name: 'Você pode querer usar um destes:'
+ filters:
+ action: Escolher qual ação executar quando um post corresponder ao filtro
+ actions:
+ hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse
+ warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro
form_challenge:
current_password: Você está entrando em uma área segura
imports:
@@ -87,6 +96,9 @@ pt-BR:
name: Você pode mudar a capitalização das letras, por exemplo, para torná-la mais legível
user:
chosen_languages: Apenas toots dos idiomas selecionados serão mostrados nas linhas públicas
+ webhook:
+ events: Selecione eventos para enviar
+ url: Aonde os eventos serão enviados
labels:
account:
fields:
@@ -148,6 +160,7 @@ pt-BR:
phrase: Palavra-chave ou frase
setting_advanced_layout: Ativar interface web avançada
setting_aggregate_reblogs: Agrupar boosts nas linhas
+ setting_always_send_emails: Sempre enviar notificações por e-mail
setting_auto_play_gif: Reproduzir GIFs automaticamente
setting_boost_modal: Solicitar confirmação antes de dar boost
setting_crop_images: Cortar imagens no formato 16x9 em toots não expandidos
@@ -173,6 +186,7 @@ pt-BR:
setting_use_pending_items: Modo lento
severity: Gravidade
sign_in_token_attempt: Código de segurança
+ title: Título
type: Tipo de importação
username: Nome de usuário
username_or_email: Nome de usuário ou e-mail
@@ -181,6 +195,10 @@ pt-BR:
with_dns_records: Incluir registros MX e IPs do domínio
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Ocultar completamente
+ warn: Ocultar com um aviso
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de não-seguidos
@@ -197,6 +215,7 @@ pt-BR:
sign_up_requires_approval: Limitar novas contas
severity: Regra
notification_emails:
+ appeal: Alguém recorre de uma decisão moderadora
digest: Enviar e-mails de resumo
favourite: Enviar e-mail quando alguém favoritar teus toots
follow: Enviar e-mail quando alguém te seguir
@@ -213,6 +232,9 @@ pt-BR:
name: Hashtag
trendable: Permitir que esta hashtag fique em alta
usable: Permitir que toots usem esta hashtag
+ webhook:
+ events: Eventos habilitados
+ url: URL do Endpoint
'no': Não
recommended: Recomendado
required:
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index 16972ca6ab..8c56bd2d27 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -68,6 +68,11 @@ pt-PT:
with_dns_records: Será feita uma tentativa de resolver os registos DNS do domínio em questão e os resultados também serão colocados na lista negra
featured_tag:
name: 'Poderás querer usar um destes:'
+ filters:
+ action: Escolha qual a ação a executar quando uma publicação corresponde ao filtro
+ actions:
+ hide: Ocultar completamente o conteúdo filtrado, comportando-se como se não existisse
+ warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro
form_challenge:
current_password: Está a entrar numa área restrita
imports:
@@ -80,6 +85,7 @@ pt-PT:
ip: Introduza um endereço IPv4 ou IPv6. Pode bloquear intervalos inteiros usando a sintaxe CIDR. Tenha cuidado para não se bloquear a sí mesmo!
severities:
no_access: Bloquear o acesso a todos os recursos
+ sign_up_block: Não serão possíveis novas inscrições
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:
@@ -91,6 +97,13 @@ pt-PT:
name: Só pode alterar a capitalização das letras, por exemplo, para torná-las mais legíveis
user:
chosen_languages: Quando seleccionado, só publicações nas línguas escolhidas serão mostradas nas cronologias públicas
+ role: A função controla que permissões o utilizador tem
+ user_role:
+ color: Cor a ser utilizada para a função em toda a interface de utilizador, como RGB no formato hexadecimal
+ highlighted: Isto torna a função visível publicamente
+ name: Nome público da função, se a função for definida para ser exibida como um distintivo
+ permissions_as_keys: Utilizadores com esta função terão acesso a...
+ position: Função mais alta decidem a resolução de conflitos em certas situações. Certas ações só podem ser executadas em funções com uma menor prioridade
webhook:
events: Selecione os eventos a enviar
url: Para onde os eventos serão enviados
@@ -181,6 +194,7 @@ pt-PT:
setting_use_pending_items: Modo lento
severity: Gravidade
sign_in_token_attempt: Código de segurança
+ title: Título
type: Tipo de importação
username: Nome de utilizador
username_or_email: Nome de utilizador ou e-mail
@@ -189,6 +203,10 @@ pt-PT:
with_dns_records: Incluir registos MX e IPs do domínio
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Ocultar por completo
+ warn: Ocultar com um aviso
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que não segues
@@ -202,6 +220,7 @@ pt-PT:
ip: IP
severities:
no_access: Bloquear acesso
+ sign_up_block: Bloquear inscrições
sign_up_requires_approval: Limitar inscrições
severity: Regra
notification_emails:
@@ -222,10 +241,19 @@ pt-PT:
name: Hashtag
trendable: Permitir que esta hashtag apareça em destaque
usable: Permitir que toots utilizem esta hashtag
+ user:
+ role: Função
+ user_role:
+ color: Cor do distintivo
+ highlighted: Exibir a função como distintivo nos perfis de utilizador
+ name: Nome
+ permissions_as_keys: Permissões
+ position: Prioridade
webhook:
events: Eventos ativados
url: URL do Endpoint
'no': Não
+ not_recommended: Não recomendado
recommended: Recomendado
required:
mark: "*"
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 571411c096..a9042b25d0 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -3,7 +3,7 @@ ru:
simple_form:
hints:
account_alias:
- acct: Укажите имя_пользователя@домен учётной записи, с которой вы собираетесь мигрировать
+ acct: Укажите ник@домен учётной записи, с которой вы собираетесь мигрировать
account_migration:
acct: Укажите имя_пользователя@домен учётной записи, на которую вы собираетесь мигрировать
account_warning_preset:
@@ -44,7 +44,7 @@ ru:
inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать
irreversible: Отфильтрованные посты будут утеряны навсегда, даже если в будущем фильтр будет убран
locale: Язык интерфейса, e-mail писем и push-уведомлений
- locked: Подписчиков нужно будет подтверждать вручную.
+ locked: Вручную контролируйте, кто может подписываться на вас, утверждая запросы на подписку
password: Укажите не менее 8 символов.
phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста
scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически.
@@ -68,6 +68,11 @@ ru:
with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список
featured_tag:
name: 'Возможно, вы захотите добавить что-то из этого:'
+ filters:
+ action: Выберите действие, которое нужно выполнить, когда сообщение соответствует фильтру
+ actions:
+ hide: Полностью скрыть отфильтрованный контент так, как будто его не существует
+ warn: Скрыть отфильтрованный контент за предупреждением с указанием названия фильтра
form_challenge:
current_password: Вы переходите к настройкам безопасности
imports:
@@ -80,6 +85,7 @@ ru:
ip: Введите IPv4 или IPv6 адрес. Вы можете блокировать целые диапазоны, используя синтаксис CIDR. Будьте осторожны, не заблокируйте самого себя!
severities:
no_access: Заблокировать доступ ко всем ресурсам
+ sign_up_block: Новые регистрации будут невозможны
sign_up_requires_approval: Новые регистрации потребуют вашего одобрения
severity: Выберите, что будет происходить с запросами с этого IP
rule:
@@ -91,6 +97,13 @@ ru:
name: Вы можете изменить только регистр букв чтобы, например, сделать тег более читаемым
user:
chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках.
+ role: Роль определяет, какие разрешения есть у пользователя
+ user_role:
+ color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX
+ highlighted: Это действие сделает роль публичной
+ name: Публичное имя роли, если роль настроена на отображение в виде значка
+ permissions_as_keys: Пользователи с этой ролью будут иметь доступ...
+ position: Повышение роли разрешают конфликты интересов в некоторых ситуациях. Некоторые действия могут выполняться только на ролях с более низким приоритетом
webhook:
events: Выберите события для отправки
url: Куда события будут отправляться
@@ -181,6 +194,7 @@ ru:
setting_use_pending_items: Медленный режим
severity: Накладываемые ограничения
sign_in_token_attempt: Код безопасности
+ title: Название
type: Тип импорта
username: Имя пользователя
username_or_email: Имя пользователя или e-mail
@@ -189,6 +203,10 @@ ru:
with_dns_records: Включить MX-записи и IP-адреса домена
featured_tag:
name: Добавить хэштег
+ filters:
+ actions:
+ hide: Скрыть полностью
+ warn: Скрыть с предупреждением
interactions:
must_be_follower: Присылать уведомления только от подписчиков
must_be_following: Присылать уведомления только от людей на которых вы подписаны
@@ -202,6 +220,7 @@ ru:
ip: IP
severities:
no_access: Блокировать доступ
+ sign_up_block: Заблокировать регистрацию
sign_up_requires_approval: Ограничить регистрации
severity: Правило
notification_emails:
@@ -222,10 +241,19 @@ ru:
name: Хэштег
trendable: Разрешить показ хэштега в трендах
usable: Разрешить использовать этот хэштег в постах
+ user:
+ role: Роль
+ user_role:
+ color: Цвет значка
+ highlighted: Отображать роль в качестве значка в профилях пользователей
+ name: Название
+ permissions_as_keys: Разрешения
+ position: Приоритет
webhook:
events: Включенные события
url: Endpoint URL
'no': Нет
+ not_recommended: Не рекомендуется
recommended: Рекомендуем
required:
mark: "*"
diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml
index 9f2e0ee312..4df9f619bf 100644
--- a/config/locales/simple_form.si.yml
+++ b/config/locales/simple_form.si.yml
@@ -1,38 +1,246 @@
---
si:
simple_form:
+ hints:
+ account_alias:
+ acct: ඔබට ගෙන යාමට අවශ්ය ගිණුමේ username@domain සඳහන් කරන්න
+ account_migration:
+ acct: ඔබට යාමට අවශ්ය ගිණුමේ username@domain සඳහන් කරන්න
+ account_warning_preset:
+ text: ඔබට URL, හෑෂ් ටැග් සහ සඳහන් කිරීම් වැනි පෝස්ට් සින්ටැක්ස් භාවිතා කළ හැක
+ title: විකල්ප. ලබන්නාට නොපෙනේ
+ admin_account_action:
+ include_statuses: මධ්යස්ථ ක්රියාව හෝ අනතුරු ඇඟවීමට හේතු වී ඇත්තේ කුමන පළ කිරීම්දැයි පරිශීලකයා දකිනු ඇත
+ send_email_notification: පරිශීලකයාට ඔවුන්ගේ ගිණුම සමඟ සිදු වූ දේ පිළිබඳ පැහැදිලි කිරීමක් ලැබෙනු ඇත
+ text_html: විකල්ප. ඔබට post syntax භාවිතා කළ හැක. කාලය ඉතිරි කර ගැනීම සඳහා ඔබට අනතුරු ඇඟවීමේ කළ හැක
+ type_html: "%{acct}සමඟ කළ යුතු දේ තෝරන්න"
+ types:
+ disable: පරිශීලකයාගේ ගිණුම භාවිතා කිරීමෙන් වළක්වන්න, නමුත් ඔවුන්ගේ අන්තර්ගතය මකා දැමීම හෝ සඟවන්න එපා.
+ none: වෙනත් ක්රියාවක් අවුලුවාලීමකින් තොරව, පරිශීලකයාට අනතුරු ඇඟවීමක් යැවීමට මෙය භාවිතා කරන්න.
+ sensitive: මෙම පරිශීලකයාගේ සියලුම මාධ්ය ඇමුණුම් සංවේදී ලෙස සලකුණු කිරීමට බල කරන්න.
+ silence: පරිශීලකයාට පොදු දෘශ්යතාව සමඟ පළ කිරීමට හැකි වීම වළක්වන්න, ඔවුන් අනුගමනය නොකරන පුද්ගලයින්ගෙන් ඔවුන්ගේ පළ කිරීම් සහ දැනුම්දීම් සඟවන්න.
+ suspend: මෙම ගිණුමෙන් හෝ මෙම ගිණුමට යම් අන්තර්ක්රියා වළක්වා එහි අන්තර්ගතය මකා දමන්න. දින 30 ක් ඇතුළත ආපසු හැරවිය හැකිය.
+ warning_preset_id: විකල්ප. ඔබට තවමත් පෙරසිටුවීමේ අවසානයට අභිරුචි පෙළ එක් කළ හැක
+ announcement:
+ all_day: පරීක්ෂා කළ විට, කාල පරාසයේ දින පමණක් දර්ශනය වනු ඇත
+ ends_at: විකල්ප. මෙම අවස්ථාවේදී නිවේදනය ස්වයංක්රීයව ප්රකාශනය කිරීමෙන් ඉවත් වනු ඇත
+ scheduled_at: නිවේදනය වහාම ප්රකාශයට පත් කිරීමට හිස්ව තබන්න
+ starts_at: විකල්ප. ඔබගේ නිවේදනය නිශ්චිත කාල පරාසයකට බැඳී ඇත්නම්
+ text: ඔබට post syntax භාවිතා කළ හැක. කරුණාකර පරිශීලකයාගේ තිරය මත නිවේදනය ලබා ගන්නා ඉඩ ගැන සැලකිලිමත් වන්න
+ appeal:
+ text: ඔබට වර්ජනයකට අභියාචනා කළ හැක්කේ එක් වරක් පමණි
+ defaults:
+ autofollow: ආරාධනාව හරහා ලියාපදිංචි වන පුද්ගලයින් ස්වයංක්රීයව ඔබව අනුගමනය කරනු ඇත
+ avatar: PNG, GIF හෝ JPG. වැඩිම %{size}. %{dimensions}px දක්වා අඩු කරනු ඇත
+ bot: ගිණුම ප්රධාන වශයෙන් ස්වයංක්රීය ක්රියා සිදු කරන බවත් නිරීක්ෂණය නොකළ හැකි බවත් අන් අයට සංඥා කරන්න
+ context: පෙරහන යෙදිය යුතු සන්දර්භ එකක් හෝ කිහිපයක්
+ current_password: ආරක්ෂක අරමුණු සඳහා කරුණාකර ජංගම ගිණුමේ මුරපදය ඇතුළත් කරන්න
+ current_username: තහවුරු කිරීමට, කරුණාකර වත්මන් ගිණුමේ පරිශීලක නාමය ඇතුළත් කරන්න
+ digest: දිගු කාලයක් අක්රියව සිටීමෙන් පසුව පමණක් යවන ලද අතර ඔබ නොමැති විට ඔබට කිසියම් පුද්ගලික පණිවිඩයක් ලැබී ඇත්නම් පමණි
+ discoverable: නිර්දේශ, ප්රවණතා සහ වෙනත් විශේෂාංග හරහා ඔබේ ගිණුම ආගන්තුකයන්ට සොයා ගැනීමට ඉඩ දෙන්න
+ email: ඔබට තහවුරු කිරීමේ විද්යුත් තැපෑලක් එවනු ලැබේ
+ fields: ඔබට ඔබගේ පැතිකඩෙහි වගුවක් ලෙස අයිතම 4ක් දක්වා පෙන්විය හැක
+ header: PNG, GIF හෝ JPG. වැඩිම %{size}. %{dimensions}px දක්වා අඩු කරනු ඇත
+ inbox_url: ඔබට භාවිතා කිරීමට අවශ්ය රිලේ හි මුල් පිටුවෙන් URL එක පිටපත් කරන්න
+ irreversible: පෙරහන පසුව ඉවත් කළද, පෙරූ පළ කිරීම් ආපසු හැරවිය නොහැකි ලෙස අතුරුදහන් වනු ඇත
+ locale: පරිශීලක අතුරුමුහුණතේ භාෂාව, ඊමේල් සහ තල්ලු දැනුම්දීම්
+ locked: අනුගමන ඉල්ලීම් අනුමත කිරීමෙන් ඔබව අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව පාලනය කරන්න
+ password: අවම වශයෙන් අක්ෂර 8 ක් භාවිතා කරන්න
+ phrase: පළ කිරීමක පෙළ හෝ අන්තර්ගත අනතුරු ඇඟවීම නොසලකා ගැලපේ
+ scopes: යෙදුමට ප්රවේශ වීමට ඉඩ දෙන්නේ කුමන API වලටද. ඔබ ඉහළ මට්ටමේ විෂය පථයක් තෝරා ගන්නේ නම්, ඔබට තනි ඒවා තෝරා ගැනීමට අවශ්ය නොවේ.
+ setting_aggregate_reblogs: මෑතකදී බූස්ට් කරන ලද පළ කිරීම් සඳහා නව බූස්ට් පෙන්වන්න එපා (අලුතින් ලැබුණු බූස්ට් වලට පමණක් බලපායි)
+ setting_always_send_emails: සාමාන්යයෙන් ඔබ Mastodon සක්රියව භාවිතා කරන විට විද්යුත් තැපැල් දැනුම්දීම් නොයවනු ඇත
+ 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_use_blurhash: අනුක්රමණ සැඟවුණු දෘශ්යවල වර්ණ මත පදනම් වන නමුත් ඕනෑම විස්තරයක් අපැහැදිලි කරයි
+ setting_use_pending_items: සංග්රහය ස්වයංක්රීයව අනුචලනය කරනවා වෙනුවට ක්ලික් කිරීමක් පිටුපස කාලරේඛා යාවත්කාලීන සඟවන්න
+ username: ඔබගේ පරිශීලක නාමය %{domain}හි අද්විතීය වනු ඇත
+ whole_word: මූල පදය හෝ වාක්ය ඛණ්ඩය අක්ෂරාංක පමණක් වන විට, එය යෙදෙන්නේ එය සම්පූර්ණ වචනයට ගැලපේ නම් පමණි
+ domain_allow:
+ domain: මෙම වසමට මෙම සේවාදායකයෙන් දත්ත ලබා ගැනීමට හැකි වන අතර එයින් ලැබෙන දත්ත සකස් කර ගබඩා කරනු ලැබේ
+ email_domain_block:
+ domain: මෙය විද්යුත් තැපැල් ලිපිනයේ හෝ එය භාවිතා කරන MX වාර්තාවේ පෙන්වන ඩොමේන් නාමය විය හැක. ලියාපදිංචි වූ පසු ඒවා පරීක්ෂා කරනු ලැබේ.
+ with_dns_records: ලබා දී ඇති වසමේ DNS වාර්තා විසඳීමට උත්සාහ කරන අතර ප්රතිඵල ද අවහිර කරනු ලැබේ
+ featured_tag:
+ name: 'ඔබට මේවායින් එකක් භාවිතා කිරීමට අවශ්ය විය හැකිය:'
+ filters:
+ action: පළ කිරීමක් පෙරහනට ගැළපෙන විට සිදු කළ යුතු ක්රියාව තෝරන්න
+ actions:
+ hide: පෙරහන් කළ අන්තර්ගතය සම්පූර්ණයෙන්ම සඟවන්න, එය නොපවතින ලෙස හැසිරෙන්න
+ warn: පෙරහන මාතෘකාව සඳහන් කරන අනතුරු ඇඟවීමක් පිටුපස පෙරූ අන්තර්ගතය සඟවන්න
+ form_challenge:
+ current_password: ඔබ ආරක්ෂිත ප්රදේශයකට ඇතුල් වේ
+ imports:
+ 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 යතුරක් නම්, එය ඇතුළු කිරීමට වග බලා ගන්න, අවශ්ය නම්, එය තට්ටු කරන්න.
+ tag:
+ name: ඔබට අකුරු වල ආවරණය පමණක් වෙනස් කළ හැකිය, උදාහරණයක් ලෙස, එය වඩාත් කියවිය හැකි කිරීමට
+ user:
+ chosen_languages: පරීක්ෂා කළ විට, තෝරාගත් භාෂාවලින් පළ කිරීම් පමණක් පොදු කාලරේඛා තුළ සංදර්ශන කෙරේ
+ webhook:
+ events: යැවීමට සිදුවීම් තෝරන්න
+ url: සිදුවීම් යවනු ලබන ස්ථානය
labels:
+ account:
+ fields:
+ name: නම්පත
+ value: අන්තර්ගතය
+ account_alias:
+ acct: පැරණි ගිණුමේ හැසිරවීම
+ account_migration:
+ acct: නව ගිණුමේ හැසිරවීම
+ account_warning_preset:
+ text: පෙර සැකසූ පෙළ
+ title: ශීර්ෂය
admin_account_action:
- type: ක්රියාමාර්ගය
+ include_statuses: විද්යුත් තැපෑලෙහි වාර්තා කරන ලද පළ කිරීම් ඇතුළත් කරන්න
+ send_email_notification: විද්යුත් තැපෑලෙන් පරිශීලකයාට දැනුම් දෙන්න
+ text: අභිරුචි අනතුරු ඇඟවීම
+ type: ක්රියාව
types:
- sensitive: සංවේදීතාව
- suspend: අත්හිටුවන්න
+ disable: කැටි කරන්න
+ none: අනතුරු ඇඟවීමක් යවන්න
+ sensitive: පවතී
+ silence: සීමාව
+ suspend: අවශ්ය
+ warning_preset_id: අනතුරු ඇඟවීමේ පෙරසිටුවක් භාවිතා කරන්න
+ announcement:
+ all_day: දවස පුරා සිදුවීම
+ ends_at: සිදුවීමේ අවසානය
+ scheduled_at: උපලේඛන ප්රකාශනය
+ starts_at: සිදුවීමේ ආරම්භය
+ text: නිවේදනය
+ appeal:
+ text: මෙම තීරණය ආපසු හැරවිය යුත්තේ මන්දැයි පැහැදිලි කරන්න
defaults:
+ autofollow: ඔබගේ ගිණුම අනුගමනය කිරීමට ආරාධනා කරන්න
+ avatar: අවතාරය
bot: මෙය ස්වයං ක්රමලේඛගත ගිණුමකි
+ chosen_languages: භාෂා පෙරහන් කරන්න
confirm_new_password: නව මුර පදය තහවුරු කරන්න
- confirm_password: මුරපදය තහවුරු කරන්න
+ confirm_password: මුරපදය තහවුරු කර ඇත
+ context: සන්දර්භ පෙරහන් කරන්න
+ current_password: වත්මන් මුර පදය
data: දත්ත
+ discoverable: අන් අයට ගිණුමක් යෝජනා කරන්න
+ display_name: ප්රදර්ශන නාමය
email: වි-තැපැල් ලිපිනය
+ expires_in: පසු කල් ඉකුත් වේ
+ fields: පැතිකඩ පාරදත්ත
+ header: ශීර්ෂකය
+ honeypot: "%{label} (පුරවන්න එපා)"
+ inbox_url: රිලේ එන ලිපි URL
+ irreversible: සැඟවීම වෙනුවට අතහරින්න
+ locale: අතුරු මුහුණත භාෂාව
+ locked: ඉල්ලීම් අනුගමනය කිරීම අවශ්ය වේ
+ max_uses: උපරිම භාවිත ගණන
new_password: නව මුරපදය
+ note: ජෛව
+ otp_attempt: ද්වි සාධක කේතය
password: මුර පදය
+ phrase: මූල පදය හෝ වාක්ය ඛණ්ඩය
+ setting_advanced_layout: උසස් වෙබ් අතුරු මුහුණත සබල කරන්න
+ setting_aggregate_reblogs: කණ්ඩායම් කාලරේඛාව වැඩි කරයි
+ setting_always_send_emails: සෑම විටම විද්යුත් තැපැල් දැනුම්දීම් යවන්න
+ setting_auto_play_gif: සජීවිකරණ GIF ස්වයංක්රීයව ධාවනය කරන්න
+ setting_boost_modal: වැඩි කිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න
+ setting_crop_images: ප්රසාරණය නොකළ පළ කිරීම් වල පින්තූර 16x9 දක්වා කප්පාදු කරන්න
+ setting_default_language: පළ කිරීමේ භාෂාව
+ setting_default_privacy: පුද්ගලිකත්වය පළ කිරීම
+ setting_default_sensitive: සෑම විටම මාධ්ය සංවේදී ලෙස සලකුණු කරන්න
+ 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_theme: අඩවියේ තේමාව
- sign_in_token_attempt: ආරක්ෂණ කේතය
+ setting_noindex: සෙවුම් යන්ත්ර සුචිගත කිරීමෙන් ඉවත් වීම
+ setting_reduce_motion: සජීවිකරණවල චලනය අඩු කරන්න
+ setting_show_application: පළ කිරීම් යැවීමට භාවිතා කරන යෙදුම හෙළි කරන්න
+ setting_system_font_ui: පද්ධතියේ පෙරනිමි අකුරු භාවිතා කරන්න
+ setting_theme: අඩවියේ මාතෘකාව
+ setting_trends: අද ප්රවණතා පෙන්වන්න
+ setting_unfollow_modal: යමෙකු අනුගමනය නොකිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න
+ setting_use_blurhash: සැඟවුණු මාධ්ය සඳහා වර්ණවත් අනුක්රමික පෙන්වන්න
+ setting_use_pending_items: මන්දගාමී මාදිලිය
+ severity: බරපතලකම
+ sign_in_token_attempt: ආරක්ෂණ කේතය
+ title: ශීර්ෂය
+ type: ආයාත වර්ගය
username: පරිශීලක නාමය
username_or_email: පරිශීලක නාමය හෝ වි-තැපෑල
whole_word: සමස්ත වචනය
+ email_domain_block:
+ with_dns_records: වසමෙහි MX වාර්තා සහ IP ඇතුළත් කරන්න
+ featured_tag:
+ name: හෑෂ් ටැගය
+ filters:
+ actions:
+ hide: සම්පූර්ණයෙන්ම සඟවන්න
+ warn: අනතුරු ඇඟවීමක් සමඟ සඟවන්න
+ interactions:
+ must_be_follower: අනුගාමිකයින් නොවන අයගේ දැනුම්දීම් අවහිර කරන්න
+ must_be_following: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගේ දැනුම්දීම් අවහිර කරන්න
+ must_be_following_dm: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගෙන් සෘජු පණිවිඩ අවහිර කරන්න
invite:
comment: අදහස
+ invite_request:
+ text: ඔබට එක් වීමට අවශ්ය ඇයි?
ip_block:
comment: අදහස
ip: අ.ජා. කෙ. (IP)
severities:
- no_access: ප්රවේශය අවහිර කරන්න
+ no_access: ප්රවේශය අවහිර කරන්න
+ sign_up_requires_approval: ලියාපදිංචි වීම සීමා කරන්න
severity: නීතිය
+ notification_emails:
+ appeal: යමෙක් උපපරිපාලක තීරණයකට අභියාචනා කරයි
+ digest: digest ඊමේල් යවන්න
+ favourite: කවුරුහරි ඔබේ පළ කිරීම ප්රිය කළා
+ follow: කවුරුහරි ඔබව අනුගමනය කළා
+ follow_request: කවුරුහරි ඔබව අනුගමනය කරන ලෙස ඉල්ලා සිටියේය
+ mention: කවුරුහරි ඔබව සඳහන් කළා
+ pending_account: නව ගිණුම සමාලෝචනය අවශ්යයි
+ reblog: කවුරුහරි ඔබේ පළ කිරීම වැඩි කළා
+ report: නව වාර්තාවක් ඉදිරිපත් කෙරේ
+ trending_tag: නව ප්රවණතාවයට සමාලෝචනයක් අවශ්ය වේ
+ rule:
+ text: නීතිය
+ tag:
+ listable: මෙම හැෂ් ටැගය සෙවීම් සහ යෝජනා වල දිස් වීමට ඉඩ දෙන්න
+ name: හෑෂ් ටැගය
+ trendable: මෙම හැෂ් ටැගය ප්රවණතා යටතේ දිස් වීමට ඉඩ දෙන්න
+ usable: මෙම හැෂ් ටැගය භාවිතා කිරීමට පළ කිරීම් වලට ඉඩ දෙන්න
+ webhook:
+ events: සබල කළ සිදුවීම්
+ url: අන්ත ලක්ෂ්ය URL
+ 'no': නැත
recommended: නිර්දේශිත
required:
mark: "*"
- text: අවශ්යයි
+ text: අවශ්යයි
+ title:
+ sessions:
+ webauthn: පුරනය වීමට ඔබගේ ආරක්ෂක යතුරු වලින් එකක් භාවිතා කරන්න
'yes': ඔව්
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 04df4eb496..2724b1727f 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -68,6 +68,11 @@ sl:
with_dns_records: Poskus razrešitve zapisov DNS danih domen bo izveden in rezultati bodo prav tako blokirani
featured_tag:
name: 'Morda boste želeli uporabiti eno od teh:'
+ filters:
+ action: Izberite, kako naj se program vede, ko se objava sklada s filtrom
+ actions:
+ hide: Povsem skrij filtrirano vsebino, kot da ne bi obstajala
+ warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra
form_challenge:
current_password: Vstopate v varovano območje
imports:
@@ -80,6 +85,7 @@ sl:
ip: Vnesite naslov IPv4 oz. IPv6. S skladnjo CIDR lahko blokirate celotne obsege. Pazite, da se ne zaklenete ven!
severities:
no_access: Blokiraj dostop do vseh virov
+ sign_up_block: Nove registracije ne bodo možne
sign_up_requires_approval: Za nove registracije bo potrebna vaša odobritev
severity: Izberite, kaj se bo zgodilo z zahtevami iz tega IP-naslova
rule:
@@ -91,6 +97,13 @@ sl:
name: Spremenite lahko le npr. velikost črk (velike/male), da je bolj berljivo
user:
chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih
+ role: Vloga nadzira, katere pravice ima uporabnik
+ user_role:
+ color: Barva, uporabljena za vlogo po celem up. vmesniku, podana v šestnajstiškem zapisu RGB
+ highlighted: S tem je vloga javno vidna
+ name: Javno ime vloge, če naj bo vloga prikazana kot priponka
+ permissions_as_keys: Uporabniki s to vlogo bodo imeli dostop do ...
+ position: Višja vloga se odloča o razrešitvi sporov v določenih situacijah. Določena dejanja lahko izvede le na vlogah z nižjo prioriteto
webhook:
events: Izberite dogodke za pošiljanje
url: Kam bodo poslani dogodki
@@ -181,6 +194,7 @@ sl:
setting_use_pending_items: Počasen način
severity: Strogost
sign_in_token_attempt: Varnostna koda
+ title: Naslov
type: Vrsta uvoza
username: Uporabniško ime
username_or_email: Uporabniško ime ali E-pošta
@@ -189,6 +203,10 @@ sl:
with_dns_records: Vključi zapise MX in IP-številke domene
featured_tag:
name: Ključnik
+ filters:
+ actions:
+ hide: Povsem skrij
+ warn: Skrij z opozorilom
interactions:
must_be_follower: Blokiraj obvestila nesledilcev
must_be_following: Blokiraj obvestila oseb, ki jim ne sledite
@@ -202,6 +220,7 @@ sl:
ip: IP
severities:
no_access: Blokiraj dostop
+ sign_up_block: Blokiraj registracije
sign_up_requires_approval: Omeji število prijav
severity: Pravilo
notification_emails:
@@ -222,10 +241,19 @@ sl:
name: Ključnik
trendable: Dovoli, da se ta ključnik pojavi med trendi
usable: Dovoli, da objave uporabljajo ta ključnik
+ user:
+ role: Vloga
+ user_role:
+ color: Barva značke
+ highlighted: Prikaži vlogo kot značko na uporabniškem profilu
+ name: Ime
+ permissions_as_keys: Pravice
+ position: Prioriteta
webhook:
events: Omogočeni dogodki
url: URL končne točke
'no': Ne
+ not_recommended: Ni priporočeno
recommended: Priporočeno
required:
mark: "*"
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index 0e2fb4ab88..0c0cd49985 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -68,6 +68,11 @@ sq:
with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet
featured_tag:
name: 'Mund të doni të përdorni një nga këto:'
+ filters:
+ action: Zgjidhni cili veprim të kryhet, kur një postim ka përputhje me një filtër
+ actions:
+ hide: Fshihe plotësisht lëndën e filtruar, duke u sjellë sikur të mos ekzistonte
+ warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit
form_challenge:
current_password: Po hyni në një zonë të sigurt
imports:
@@ -80,6 +85,7 @@ sq:
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_block: S’do të jenë të mundur regjistrime të reja
sign_up_requires_approval: Regjistrime të reja do të duan miratimin tuaj
severity: Zgjidhni ç’do të ndodhë me kërkesa nga kjo IP
rule:
@@ -91,6 +97,13 @@ sq:
name: Mund të ndryshoni shkronjat vetëm nga të mëdha në të vogla ose anasjelltas, për shembull, për t’i bërë më të lexueshme
user:
chosen_languages: Në iu vëntë shenjë, te rrjedha kohore publike do të shfaqen vetëm mesazhe në gjuhët e përzgjedhura
+ role: Roli kontrollon cilat leje ka përdoruesi
+ user_role:
+ color: Ngjyrë për t’u përdorur për rolin nëpër UI, si RGB në format gjashtëmbëdhjetësh
+ highlighted: Kjo e bën rolin të dukshëm publikisht
+ name: Emër publik për rolin, nëse roli është ujdisur të shfaqet si një stemë
+ permissions_as_keys: Përdoruest me këtë rol do të mund të…
+ position: Role më të lartë vendosin zgjidhje përplasje në disa raste. Disa veprime mund të kryhen vetëm mbi role të një shkalle më të ulët
webhook:
events: Përzgjidhni akte për dërgim
url: Ku do të dërgohen aktet
@@ -181,6 +194,7 @@ sq:
setting_use_pending_items: Mënyra ngadalë
severity: Rëndësi
sign_in_token_attempt: Kod sigurie
+ title: Titull
type: Lloj importimi
username: Emër përdoruesi
username_or_email: Emër përdoruesi ose Email
@@ -189,6 +203,10 @@ sq:
with_dns_records: Përfshi zëra MX dhe IP-ra të përkatësisë
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Fshihe plotësisht
+ warn: Fshihe me një sinjalizim
interactions:
must_be_follower: Blloko njoftime nga jo-ndjekës
must_be_following: Blloko njoftime nga persona që s’i ndiqni
@@ -202,6 +220,7 @@ sq:
ip: IP
severities:
no_access: Bllokoji hyrjen
+ sign_up_block: Blloko regjistrime
sign_up_requires_approval: Kufizo regjistrime
severity: Rregull
notification_emails:
@@ -222,10 +241,19 @@ sq:
name: Hashtag
trendable: Lejoje këtë hashtag të shfaqet në prirje
usable: Lejoji mesazhet të përdorin këtë hashtag
+ user:
+ role: Rol
+ user_role:
+ color: Ngjyrë steme
+ highlighted: Shfaqe rolin si një stemë në profile përdoruesish
+ name: Emër
+ permissions_as_keys: Leje
+ position: Përparësi
webhook:
events: Akte të aktivizuar
url: URL pikëmbarimi
'no': Jo
+ not_recommended: Jo e këshilluar
recommended: E rekomanduar
required:
mark: "*"
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index c311eb1893..a90c3bce9b 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -60,6 +60,7 @@ sv:
ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv!
severities:
no_access: Blockera åtkomst till alla resurser
+ sign_up_block: Nya registreringar inte möjligt
sign_up_requires_approval: Nya registreringar kräver ditt godkännande
severity: Välj vad som ska hända med förfrågningar från denna IP
rule:
@@ -176,6 +177,7 @@ sv:
ip: IP
severities:
no_access: Blockera åtkomst
+ sign_up_block: Blockera registreringar
sign_up_requires_approval: Begränsa registreringar
severity: Regel
notification_emails:
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index a33e87593d..27ad0abd58 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -64,9 +64,15 @@ th:
domain_allow:
domain: โดเมนนี้จะสามารถดึงข้อมูลจากเซิร์ฟเวอร์นี้และจะประมวลผลและจัดเก็บข้อมูลขาเข้าจากโดเมน
email_domain_block:
+ domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน
with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน
featured_tag:
name: 'คุณอาจต้องการใช้หนึ่งในนี้:'
+ filters:
+ action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง
+ actions:
+ hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่
+ warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง
form_challenge:
current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย
imports:
@@ -75,21 +81,32 @@ th:
text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ
ip_block:
comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้
+ expires_in: ที่อยู่ IP เป็นทรัพยากรที่มีจำกัด บางครั้งที่อยู่ใช้ร่วมกันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ การปิดกั้น IP แบบไม่มีกำหนดจึงไม่แนะนำ
ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก!
severities:
no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด
+ sign_up_block: จะไม่สามารถทำการลงทะเบียนใหม่
sign_up_requires_approval: การลงทะเบียนใหม่จะต้องมีการอนุมัติของคุณ
severity: เลือกสิ่งที่จะเกิดขึ้นกับคำขอจาก IP นี้
rule:
text: อธิบายกฎหรือข้อกำหนดสำหรับผู้ใช้ในเซิร์ฟเวอร์นี้ พยายามทำให้กฎหรือข้อกำหนดสั้นและเรียบง่าย
sessions:
otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:'
+ webauthn: หากกุญแจความปลอดภัยเป็นกุญแจ USB ตรวจสอบให้แน่ใจว่าได้เสียบกุญแจ และหากจำเป็น ให้แตะกุญแจ
tag:
name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น
user:
chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น
+ role: บทบาทควบคุมว่าสิทธิอนุญาตใดที่ผู้ใช้มี
+ user_role:
+ color: สีที่ใช้สำหรับบทบาททั่วทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก
+ highlighted: สิ่งนี้ทำให้บทบาทปรากฏเป็นสาธารณะ
+ name: ชื่อสาธารณะของบทบาท หากมีการตั้งบทบาทให้แสดงเป็นป้าย
+ permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะสามารถเข้าถึง...
+ position: บทบาทที่สูงขึ้นตัดสินใจการแก้ปัญหาข้อขัดแย้งในบางสถานการณ์ การกระทำบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีระดับความสำคัญต่ำกว่าเท่านั้น
webhook:
events: เลือกเหตุการณ์ที่จะส่ง
+ url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง
labels:
account:
fields:
@@ -120,6 +137,8 @@ th:
scheduled_at: จัดกำหนดการเผยแพร่
starts_at: การเริ่มต้นเหตุการณ์
text: ประกาศ
+ appeal:
+ text: อธิบายเหตุผลที่ควรกลับการตัดสินใจนี้
defaults:
autofollow: เชิญให้ติดตามบัญชีของคุณ
avatar: ภาพประจำตัว
@@ -175,6 +194,7 @@ th:
setting_use_pending_items: โหมดช้า
severity: ความรุนแรง
sign_in_token_attempt: รหัสความปลอดภัย
+ title: ชื่อเรื่อง
type: ชนิดการนำเข้า
username: ชื่อผู้ใช้
username_or_email: ชื่อผู้ใช้หรืออีเมล
@@ -183,6 +203,10 @@ th:
with_dns_records: รวมระเบียน MX และ IP ของโดเมน
featured_tag:
name: แฮชแท็ก
+ filters:
+ actions:
+ hide: ซ่อนอย่างสมบูรณ์
+ warn: ซ่อนด้วยคำเตือน
interactions:
must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม
must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม
@@ -196,6 +220,7 @@ th:
ip: IP
severities:
no_access: ปิดกั้นการเข้าถึง
+ sign_up_block: ปิดกั้นการลงทะเบียน
sign_up_requires_approval: จำกัดการลงทะเบียน
severity: กฎ
notification_emails:
@@ -216,9 +241,19 @@ th:
name: แฮชแท็ก
trendable: อนุญาตให้แฮชแท็กนี้ปรากฏภายใต้แนวโน้ม
usable: อนุญาตให้โพสต์ใช้แฮชแท็กนี้
+ user:
+ role: บทบาท
+ user_role:
+ color: สีป้าย
+ highlighted: แสดงบทบาทเป็นป้ายในโปรไฟล์ผู้ใช้
+ name: ชื่อ
+ permissions_as_keys: สิทธิอนุญาต
+ position: ระดับความสำคัญ
webhook:
+ events: เหตุการณ์ที่เปิดใช้งาน
url: URL ปลายทาง
'no': ไม่
+ not_recommended: ไม่แนะนำ
recommended: แนะนำ
required:
mark: "*"
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 9942130659..20bb03cd48 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -68,6 +68,11 @@ tr:
with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek
featured_tag:
name: 'Bunlardan birini kullanmak isteyebilirsiniz:'
+ filters:
+ action: Bir gönderi filtreyle eşleştiğinde hangi eylemin yapılacağını seçin
+ actions:
+ hide: Filtrelenmiş içeriği tamamen gizle, sanki varolmamış gibi
+ warn: Filtrelenmiş içeriği, filtrenin başlığından söz eden bir uyarının arkasında gizle
form_challenge:
current_password: Güvenli bir bölgeye giriyorsunuz
imports:
@@ -80,6 +85,7 @@ tr:
ip: Bir IPv4 veya IPv6 adresi girin. CIDR sözdizimini kullanarak tüm aralıkları engelleyebilirsiniz. Kendinizi dışarıda bırakmamaya dikkat edin!
severities:
no_access: Tüm kaynaklara erişimi engelle
+ sign_up_block: Yeni kayıtlar mümkün olmayacaktır
sign_up_requires_approval: Yeni kayıt onayınızı gerektirir
severity: Bu IP'den gelen isteklere ne olacağını seçin
rule:
@@ -91,6 +97,13 @@ tr:
name: Harflerin, örneğin daha okunabilir yapmak için, sadece büyük/küçük harf durumlarını değiştirebilirsiniz
user:
chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki tootlar genel zaman çizelgelerinde görüntülenir
+ role: Rol, kullanıcıların sahip olduğu izinleri denetler
+ user_role:
+ color: Arayüz boyunca rol için kullanılacak olan renk, hex biçiminde RGB
+ highlighted: Bu rolü herkese açık hale getirir
+ name: Rolün, eğer rozet olarak görüntülenmesi ayarlandıysa kullanılacak herkese açık ismi
+ permissions_as_keys: Bu role sahip kullanıcıların şunlara erişimi var...
+ position: Belirli durumlarda çatışmayı çözmek için daha yüksek rol belirleyicidir. Bazı eylemler ancak daha düşük öncelikteki rollere uygulanabilir
webhook:
events: Gönderilecek etkinlikleri seçin
url: Olayların gönderileceği yer
@@ -181,6 +194,7 @@ tr:
setting_use_pending_items: Yavaş mod
severity: Önem derecesi
sign_in_token_attempt: Güvenlik kodu
+ title: Başlık
type: İçeri aktarma türü
username: Kullanıcı adı
username_or_email: Kullanıcı adı ya da e-posta
@@ -189,6 +203,10 @@ tr:
with_dns_records: Alan adının MX kayıtlarını ve IP'lerini ekleyin
featured_tag:
name: Etiket
+ filters:
+ actions:
+ hide: Tamamen gizle
+ warn: Uyarıyla gizle
interactions:
must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle
must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle
@@ -202,6 +220,7 @@ tr:
ip: IP
severities:
no_access: Erişimi engelle
+ sign_up_block: Kayıt olmayı engelle
sign_up_requires_approval: Kayıtları sınırla
severity: Kural
notification_emails:
@@ -222,10 +241,19 @@ tr:
name: Etiket
trendable: Bu etiketin gündem altında görünmesine izin ver
usable: Tootların bu etiketi kullanmasına izin ver
+ user:
+ role: Rol
+ user_role:
+ color: Rozet rengi
+ highlighted: Rolü kullanıcıların profilinde rozet olarak görüntüle
+ name: Ad
+ permissions_as_keys: İzinler
+ position: Öncelik
webhook:
events: Etkin olaylar
url: Uç nokta URL’si
'no': Hayır
+ not_recommended: Önerilmez
recommended: Önerilen
required:
mark: "*"
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 9b8ecb5734..3f12b6d6e7 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -68,6 +68,11 @@ uk:
with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку
featured_tag:
name: 'Можливо, ви захочете використовувати один з цих:'
+ filters:
+ action: Виберіть дію для виконання коли допис збігається з фільтром
+ actions:
+ hide: Повністю сховати фільтрований вміст, ніби його не існує
+ warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра
form_challenge:
current_password: Ви входите до безпечної зони
imports:
@@ -80,6 +85,7 @@ uk:
ip: Введіть адресу IPv4 або IPv6. Ви можете блокувати цілі діапазони, використовуючи синтаксис CIDR. Будьте обережні, щоб не заблокувати себе!
severities:
no_access: Заблокувати доступ до всіх ресурсів
+ sign_up_block: Нові реєстрації будуть неможливі
sign_up_requires_approval: Нові реєстрації потребуватимуть затвердження вами
severity: Виберіть, що буде відбуватися з запитами з цієї IP
rule:
@@ -91,6 +97,13 @@ uk:
name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність
user:
chosen_languages: У глобальних стрічках будуть відображатися дмухи тільки обраними мовами
+ role: Роль визначає права користувача
+ user_role:
+ color: Колір, який буде використовуватися для ролі у всьому інтерфейсі, як RGB у форматі hex
+ highlighted: Це робить роль видимою всім
+ name: Загальнодоступна назва ролі, якщо роль налаштована бути показаною у вигляді відзнаки
+ permissions_as_keys: Користувачі з цією роллю матимуть доступ до...
+ position: Вища роль розв'язує конфлікти у певних ситуаціях. Певні дії можуть бути виконані лише щодо ролей з нижчим пріоритетом
webhook:
events: Оберіть події для надсилання
url: Куди надсилатимуться події
@@ -181,6 +194,7 @@ uk:
setting_use_pending_items: Повільний режим
severity: Серйозність
sign_in_token_attempt: Код безпеки
+ title: Заголовок
type: Тип імпорту
username: Ім'я користувача
username_or_email: Ім'я користувача або електронна пошта
@@ -189,6 +203,10 @@ uk:
with_dns_records: Включити MX записи та IP-адреси домену
featured_tag:
name: Хештеґ
+ filters:
+ actions:
+ hide: Сховати повністю
+ warn: Сховати за попередженням
interactions:
must_be_follower: Блокувати сповіщення від непідписаних людей
must_be_following: Блокувати сповіщення від людей, на яких ви не підписані
@@ -202,6 +220,7 @@ uk:
ip: IP
severities:
no_access: Заборонити доступ
+ sign_up_block: Блокувати реєстрацію
sign_up_requires_approval: Обмеження реєстрації
severity: Правило
notification_emails:
@@ -222,10 +241,19 @@ uk:
name: Хештеґ
trendable: Дозволити появу цього хештеґа у списку популярних хештеґів
usable: Дозволити дмухам використовувати цей хештеґ
+ user:
+ role: Роль
+ user_role:
+ color: Колір відзнаки
+ highlighted: Показувати роль у вигляді відзнаки у профілях користувачів
+ name: Назва
+ permissions_as_keys: Дозволи
+ position: Пріоритет
webhook:
events: Увімкнені події
url: URL кінцевої точки
'no': Ні
+ not_recommended: Не рекомендовано
recommended: Рекомендовано
required:
mark: "*"
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index 729be66348..502bc55194 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -20,7 +20,7 @@ vi:
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 và xóa sạch dữ liệu của tài khoản này. Có thể khôi phục trước 30 ngày.
- warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm ghi chú riêng
+ warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm chú thích riêng
announcement:
all_day: Chỉ có khoảng thời gian được đánh dấu mới hiển thị
ends_at: Tùy chọn. Thông báo sẽ tự động hủy vào lúc này
@@ -68,6 +68,11 @@ vi:
with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm
featured_tag:
name: 'Những hashtag gợi ý cho bạn:'
+ filters:
+ action: Chọn hành động sẽ thực hiện khi một tút khớp với bộ lọc
+ actions:
+ hide: Ẩn hoàn toàn nội dung đã lọc, hoạt động như thể nó không tồn tại
+ warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc
form_challenge:
current_password: Biểu mẫu này an toàn
imports:
@@ -80,6 +85,7 @@ vi:
ip: Nhập một địa chỉ IPv4 hoặc IPv6. Bạn cũng có thể chặn toàn bộ dãy IP bằng cú pháp CIDR. Hãy cẩn thận đừng chặn nhầm toàn bộ!
severities:
no_access: Chặn truy cập từ tất cả IP này
+ sign_up_block: Không chấp nhận đăng ký mới
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:
@@ -91,6 +97,13 @@ vi:
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ỉ hiển thị những tút viết bằng các ngôn ngữ được chọn sau
+ role: Vai trò kiểm soát những quyền mà người dùng có
+ user_role:
+ color: Màu được sử dụng cho vai trò trong toàn bộ giao diện người dùng, dưới dạng RGB ở định dạng hex
+ highlighted: Vai trò sẽ hiển thị công khai
+ name: Tên công khai của vai trò, nếu vai trò được đặt để hiển thị dưới dạng huy hiệu
+ permissions_as_keys: Người dùng có vai trò này sẽ có quyền truy cập vào...
+ position: Vai trò cao hơn sẽ có quyền quyết định xung đột trong các tình huống. Các vai trò có mức độ ưu tiên thấp hơn chỉ có thể thực hiện một số hành động nhất định
webhook:
events: Chọn sự kiện để gửi
url: Nơi những sự kiện được gửi đến
@@ -109,11 +122,11 @@ vi:
admin_account_action:
include_statuses: Đính kèm những tút bị báo cáo trong e-mail
send_email_notification: Thông báo cho người này qua email
- text: Ghi chú riêng
+ text: Chú thích riêng
type: Hành động
types:
disable: Khóa
- none: Nhắc nhở
+ none: Cảnh cáo
sensitive: Nhạy cảm
silence: Hạn chế
suspend: Vô hiệu hóa
@@ -181,6 +194,7 @@ vi:
setting_use_pending_items: Không tự động cập nhật bảng tin
severity: Mức độ nghiêm trọng
sign_in_token_attempt: Mã an toàn
+ title: Tựa đề
type: Kiểu nhập
username: Tên người dùng
username_or_email: Tên người dùng hoặc email
@@ -189,6 +203,10 @@ vi:
with_dns_records: Bao gồm bản ghi MX và địa chỉ IP của máy chủ
featured_tag:
name: Hashtag
+ filters:
+ actions:
+ hide: Ẩn toàn bộ
+ warn: Ẩn kèm theo cảnh báo
interactions:
must_be_follower: Chặn thông báo từ những người không theo dõi bạn
must_be_following: Chặn thông báo từ những người bạn không theo dõi
@@ -202,6 +220,7 @@ vi:
ip: IP
severities:
no_access: Chặn truy cập
+ sign_up_block: Chặn đăng ký
sign_up_requires_approval: Giới hạn đăng ký
severity: Mức độ
notification_emails:
@@ -222,10 +241,19 @@ vi:
name: Hashtag
trendable: Cho phép xuất hiện trong xu hướng
usable: Cho phép dùng trong tút
+ user:
+ role: Vai trò
+ user_role:
+ color: Màu huy hiệu
+ highlighted: Hiển thị huy hiệu vai trò trên hồ sơ người dùng
+ name: Tên
+ permissions_as_keys: Quyền
+ position: Mức độ ưu tiên
webhook:
events: Những sự kiện đã bật
url: URL endpoint
'no': Tắt
+ not_recommended: Không đề xuất
recommended: Đề xuất
required:
mark: "*"
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 33602885c7..e8bddf3321 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -33,7 +33,7 @@ zh-CN:
autofollow: 通过邀请链接注册的用户将会自动关注你
avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控
- context: 过滤器的应用场景
+ context: 过滤器的应用环境
current_password: 为了安全起见,请输入当前账号的密码
current_username: 请输入当前账号的用户名以确认
digest: 仅在你长时间未登录,且收到了私信时发送
@@ -68,6 +68,11 @@ zh-CN:
with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁
featured_tag:
name: 你可能想要使用以下之一:
+ filters:
+ action: 选择在帖子匹配过滤器时要执行的操作
+ actions:
+ hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般
+ warn: 在警告中提及过滤器标题后,隐藏过滤内容
form_challenge:
current_password: 你正在进入安全区域
imports:
@@ -80,6 +85,7 @@ zh-CN:
ip: 输入 IPv4 或 IPv6 地址。你可以使用 CIDR 语法屏蔽 IP 段。小心不要屏蔽自己!
severities:
no_access: 阻止访问所有资源
+ sign_up_block: 无法进行新的账号注册
sign_up_requires_approval: 新注册需要你的批准
severity: 选择如何处理来自此 IP 的请求。
rule:
@@ -91,6 +97,16 @@ zh-CN:
name: 你只能改变字母的大小写,让它更易读
user:
chosen_languages: 仅选中语言的嘟文会出现在公共时间轴上(全不选则显示所有语言的嘟文)
+ role: 角色决定该用户拥有的权限
+ user_role:
+ color: 整个用户界面中,该角色使用的颜色,以RGB 十六进制格式
+ highlighted: 这使角色公开可见
+ name: 角色的公开名称,如果角色设置为展示的徽章
+ permissions_as_keys: 具有此角色的用户将有权访问...
+ position: 较高的角色决定在某些情况下解决冲突。某些行动只能对优先级较低的角色执行
+ webhook:
+ events: 选择要发送的事件
+ url: 事件将发送到哪个地点
labels:
account:
fields:
@@ -130,7 +146,7 @@ zh-CN:
chosen_languages: 语言过滤
confirm_new_password: 确认新密码
confirm_password: 确认密码
- context: 过滤器场景
+ context: 过滤器环境
current_password: 当前密码
data: 数据文件
discoverable: 在本站用户目录中收录此账号
@@ -178,6 +194,7 @@ zh-CN:
setting_use_pending_items: 慢速模式
severity: 级别
sign_in_token_attempt: 安全码
+ title: 标题
type: 导入数据类型
username: 用户名
username_or_email: 用户名或电子邮件地址
@@ -186,6 +203,10 @@ zh-CN:
with_dns_records: 包括该域名的 MX 记录和 IP 地址
featured_tag:
name: 话题标签
+ filters:
+ actions:
+ hide: 完全隐藏
+ warn: 隐藏时显示警告信息
interactions:
must_be_follower: 屏蔽来自未关注我的用户的通知
must_be_following: 屏蔽来自我未关注的用户的通知
@@ -199,6 +220,7 @@ zh-CN:
ip: IP 地址
severities:
no_access: 阻止访问
+ sign_up_block: 阻止账号注册
sign_up_requires_approval: 限制注册
severity: 规则
notification_emails:
@@ -219,7 +241,19 @@ zh-CN:
name: 话题标签
trendable: 允许在热门下显示此话题
usable: 允许嘟文使用此话题标签
+ user:
+ role: 角色
+ user_role:
+ color: 徽章颜色
+ highlighted: 用户配置中以徽章显示角色
+ name: 名称
+ permissions_as_keys: 权限设置
+ position: 优先权
+ webhook:
+ events: 已启用事件
+ url: 端点网址
'no': 否
+ not_recommended: 不推荐
recommended: 推荐
required:
mark: "*"
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 4cc6af416c..b5eb3e8c1f 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -68,6 +68,11 @@ zh-TW:
with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,解析結果一致者將一併封鎖
featured_tag:
name: 您可能想使用其中一個:
+ filters:
+ action: 請選擇當嘟文符合該過濾器時將被執行之動作
+ actions:
+ hide: 完全隱藏過濾內容,當作它似乎不曾存在過
+ warn: 隱藏過濾內容於過濾器標題之警告後
form_challenge:
current_password: 您正要進入安全區域
imports:
@@ -80,6 +85,7 @@ zh-TW:
ip: 請輸入 IPv4 或 IPv6 位址,亦可以用 CIDR 語法以封鎖整個 IP 區段。小心不要把自己給一併封鎖掉囉!
severities:
no_access: 封鎖對所有資源存取
+ sign_up_block: 無法註冊新帳號
sign_up_requires_approval: 新註冊申請需要先經過您的審核
severity: 請選擇將如何處理來自這個 IP 位址的請求
rule:
@@ -91,6 +97,13 @@ zh-TW:
name: 您只能變更大小寫,例如,以使其更易讀。
user:
chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示
+ role: 角色控制使用者有哪些權限
+ user_role:
+ color: 在整個使用者介面中用於角色的顏色,十六進位格式的 RGB
+ highlighted: 這會讓角色公開可見
+ name: 角色的公開名稱,如果角色設定為顯示為徽章
+ permissions_as_keys: 有此角色的使用者將有權存取……
+ position: 在某些情況下,衝突的解決方式由更高階的角色決定。某些動作只能由優先程度較低的角色執行
webhook:
events: 請選擇要傳送的事件
url: 事件會被傳送至何處
@@ -181,6 +194,7 @@ zh-TW:
setting_use_pending_items: 限速模式
severity: 優先級
sign_in_token_attempt: 安全代碼
+ title: 標題
type: 匯入類型
username: 使用者名稱
username_or_email: 使用者名稱或電子信箱地址
@@ -189,6 +203,10 @@ zh-TW:
with_dns_records: 包括網域的 MX 記錄和 IP 位址
featured_tag:
name: "「#」標籤"
+ filters:
+ actions:
+ hide: 完全隱藏
+ warn: 隱藏於警告之後
interactions:
must_be_follower: 封鎖非跟隨者的通知
must_be_following: 封鎖您未跟隨之使用者的通知
@@ -202,6 +220,7 @@ zh-TW:
ip: IP 位址
severities:
no_access: 封鎖
+ sign_up_block: 禁止註冊新帳號
sign_up_requires_approval: 限制註冊
severity: 規則
notification_emails:
@@ -222,10 +241,19 @@ zh-TW:
name: 主題標籤
trendable: 允許此主題標籤在趨勢下顯示
usable: 允許嘟文使用此主題標籤
+ user:
+ role: 角色
+ user_role:
+ color: 識別顏色
+ highlighted: 在使用者個人資料上將角色顯示為徽章
+ name: 名稱
+ permissions_as_keys: 權限
+ position: 優先權
webhook:
events: 已啟用的事件
url: 端點 URL
'no': 否
+ not_recommended: 不建議
recommended: 建議
required:
mark: "*"
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 1f64c78c72..6c12a07f45 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -27,7 +27,6 @@ sk:
learn_more: Zisti viac
logged_in_as_html: Práve si prihlásený/á ako %{username}.
logout_before_registering: Už si prihlásený/á.
- privacy_policy: Zásady súkromia
rules: Serverové pravidlá
see_whats_happening: Pozoruj, čo sa deje
server_stats: 'Serverové štatistiky:'
@@ -39,7 +38,6 @@ sk:
other: príspevky
status_count_before: Ktorí napísali
tagline: Decentralizovaná sociálna sieť
- terms: Podmienky užitia
unavailable_content: Nedostupný obsah
unavailable_content_description:
reason: 'Dôvod:'
@@ -87,9 +85,7 @@ sk:
posts_tab_heading: Príspevky
posts_with_replies: Príspevky s odpoveďami
roles:
- admin: Správca
group: Skupina
- moderator: Moderátor
unavailable: Profil nieje dostupný
unfollow: Prestaň sledovať
admin:
@@ -107,12 +103,16 @@ sk:
avatar: Maskot
by_domain: Doména
change_email:
- changed_msg: Email pre tento účet bol úspešne zmenený!
current_email: Súčasný email
label: Zmeň email
new_email: Nový email
submit: Zmeň email
title: Zmeň email pre %{username}
+ change_role:
+ changed_msg: Postavenie úspešne zmenené!
+ label: Zmeň pozíciu
+ no_role: Žiadna pozícia
+ title: Zmeň pozíciu pre %{username}
confirm: Potvrď
confirmed: Potvrdený
confirming: Potvrdzujúci
@@ -149,6 +149,7 @@ sk:
active: Aktívny/a
all: Všetko
pending: Čakajúci
+ silenced: Obmedzený
suspended: Vylúčený/á
title: Moderácia
moderation_notes: Moderátorské poznámky
@@ -156,6 +157,7 @@ sk:
most_recent_ip: Posledná IP adresa
no_account_selected: Nedošlo k žiadnému pozmeneniu účtov, keďže žiadne neboli vybrané
no_limits_imposed: Nie sú stanovené žiadné obmedzenia
+ no_role_assigned: Žiadne postavenie nepriradené
not_subscribed: Neodoberá
pending: Vyžaduje posúdenie
perform_full_suspension: Vylúč
@@ -174,12 +176,7 @@ sk:
reset: Resetuj
reset_password: Obnov heslo
resubscribe: Znovu odoberaj
- role: Oprávnenia
- roles:
- admin: Správca
- moderator: Moderátor
- staff: Člen
- user: Užívateľ
+ role: Postavenie
search: Hľadaj
search_same_email_domain: Iní užívatelia s tou istou emailovou doménou
search_same_ip: Ostatní užívatelia s rovnakou IP adresou
@@ -256,7 +253,6 @@ sk:
change_email_user_html: "%{name} zmenil/a emailovú adresu užívateľa %{target}"
confirm_user_html: "%{name} potvrdil/a emailovú adresu používateľa %{target}"
create_account_warning_html: "%{name} poslal/a upozornenie užívateľovi %{target}"
- deleted_status: "(zmazaný príspevok)"
filter_by_action: Filtruj podľa úkonu
filter_by_user: Trieď podľa užívateľa
title: Kontrólny záznam
@@ -356,7 +352,9 @@ sk:
domain: Doména
new:
create: Pridaj doménu
+ resolve: Preveď doménu
title: Nový email na zablokovanie
+ resolved_through_html: Prevedená cez %{domain}
title: Blokované emailové adresy
follow_recommendations:
description_html: "Odporúčania na sledovanie pomáhaju novým užívateľom rýchlo nájsť zaujímavý obsah. Ak užívateľ zatiaľ nedostatočne interagoval s ostatnými aby si vyformoval personalizované odporúčania na sledovanie, tak mu budú odporúčané tieto účty. Sú prepočítavané na dennej báze z mixu účtov s nedávnym najvyšším záujmom a najvyšším počtom lokálnych sledujúcich pre daný jazyk."
@@ -374,8 +372,15 @@ sk:
back_to_warning: Upozornenie
by_domain: Doména
content_policies:
+ comment: Interná poznámka
policies:
+ reject_media: Zamietni médiá
suspend: Vylúč
+ policy: Zásady
+ reason: Verejné odôvodnenie
+ title: Zásady o obsahu
+ dashboard:
+ instance_accounts_dimension: Najsledovanejšie účty
delivery:
all: Všetko
unavailable: Nedostupné
@@ -473,6 +478,26 @@ sk:
unassign: Odober
unresolved: Nevyriešené
updated_at: Aktualizované
+ view_profile: Zobraz profil
+ roles:
+ add_new: Pridaj postavenie
+ assigned_users:
+ few: "%{count} užívateľov"
+ many: "%{count} užívateľov"
+ one: "%{count} užívateľ"
+ other: "%{count} užívatelia"
+ categories:
+ administration: Spravovanie
+ invites: Pozvánky
+ edit: Uprav postavenie %{name}
+ privileges:
+ administrator: Správca
+ invite_users: Pozvi užívateľov
+ manage_roles: Spravuj postavenia
+ title: Postavenia
+ rules:
+ empty: Žiadne pravidlá servera ešte neboli určené.
+ title: Serverové pravidlá
settings:
activity_api_enabled:
desc_html: Sčítanie miestne uverejnených príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch
@@ -518,9 +543,6 @@ sk:
deletion:
desc_html: Dovoľ každému, aby si mohli vymazať svok účet
title: Sprístupni možnosť vymazať si účet
- min_invite_role:
- disabled: Nikto
- title: Povoľ pozvánky od
registrations_mode:
modes:
approved: Pre registráciu je nutné povolenie
@@ -530,9 +552,6 @@ sk:
show_known_fediverse_at_about_page:
desc_html: Ak je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi.
title: Ukáž celé známe fediverse na náhľade osi
- show_staff_badge:
- desc_html: Ukáž moderátorsky odznak na užívateľovom profile
- title: Ukáž značku moderátora
site_description:
desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a>
a <em>
.
title: Popis servera
@@ -542,9 +561,6 @@ sk:
site_short_description:
desc_html: Zobrazené na bočnom paneli a pri meta tagoch. Popíš čo je Mastodon, a čo robí tento server iným, v jednom paragrafe. Pokiaľ toto necháš prázdne, bude tu zobrazený základný popis servera.
title: Krátky popis serveru
- site_terms:
- 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
thumbnail:
desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px
@@ -553,9 +569,6 @@ sk:
desc_html: Zobraziť verejnú nástenku na hlavnej stránke
title: Náhľad nástenky
title: Nastavenia stránky
- trendable_by_default:
- desc_html: Ovplyvňuje haštagy ktoré predtým neboli zakázané
- title: Dovoľ haštagom zobrazovať sa ako populárne, bez predchodzieho posudzovania
trends:
desc_html: Verejne zobraz už schválené haštagy, ktoré práve trendujú
title: Populárne haštagy
@@ -774,7 +787,6 @@ sk:
title: Uprav triedenie
errors:
invalid_context: Nebola poskytnutá žiadna, alebo ide o neplatnú súvislosť
- invalid_irreversible: Nezvratné filtrovanie funguje iba so súvislostiami domovskej osi a oboznámení
index:
delete: Vymaž
empty: Nemáš žiadné filtrovanie.
@@ -892,16 +904,6 @@ sk:
carry_blocks_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a zablokovaný.
carry_mutes_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a stíšený.
notification_mailer:
- digest:
- action: Zobraziť všetky notifikácie
- body: Tu nájdete krátky súhrn správ ktoré ste zmeškali od svojej poslednj návštevi od %{since}
- mention: "%{name} ťa spomenul/a v:"
- new_followers_summary:
- few: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá!
- many: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá!
- one: A ešte, kým si bol/a preč, si získal/a jedného nového následovateľa! Hurá!
- other: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá!
- title: Zatiaľ čo si bol/a preč…
favourite:
body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:'
subject: "%{name} si obľúbil/a tvoj príspevok"
@@ -1097,8 +1099,6 @@ sk:
sensitive_content: Senzitívny obsah
tags:
does_not_match_previous_name: nezhoduje sa s predošlým názvom
- terms:
- title: Podmienky užívania, a pravidlá súkromia pre %{instance}
themes:
contrast: Mastodon (vysoký kontrast)
default: Mastodon (tmavý)
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index ff3492d605..2c1f11afa1 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -41,7 +41,6 @@ sl:
two: stanja
status_count_before: Ki so avtorji
tagline: Decentralizirano družbeno omrežje
- terms: Pogoji storitve
unavailable_content: Moderirani strežniki
unavailable_content_description:
domain: Strežnik
@@ -91,10 +90,8 @@ sl:
posts_tab_heading: Objave
posts_with_replies: Objave in odgovori
roles:
- admin: Skrbnik
bot: Robot
group: Skupina
- moderator: Mod
unavailable: Profil ni na voljo
unfollow: Prenehaj slediti
admin:
@@ -113,12 +110,17 @@ sl:
avatar: Podoba
by_domain: Domena
change_email:
- changed_msg: E-pošta računa je uspešno spremenjena!
+ changed_msg: E-pošni naslov uspešno spremenjen!
current_email: Trenutna e-pošta
label: Spremeni e-pošto
new_email: Nova e-pošta
submit: Spremeni e-pošto
title: Spremeni e-pošto za %{username}
+ change_role:
+ changed_msg: Vloga uspešno spremenjena!
+ label: Spremeni vlogo
+ no_role: Ni vloge
+ title: Spremeni vlogo za %{username}
confirm: Potrdi
confirmed: Potrjeno
confirming: Potrjujem
@@ -162,6 +164,7 @@ sl:
active: Dejaven
all: Vse
pending: Na čakanju
+ silenced: Omejeno
suspended: Suspendiran
title: Moderiranje
moderation_notes: Opombe moderiranja
@@ -169,6 +172,7 @@ sl:
most_recent_ip: Zadnji IP
no_account_selected: Noben račun ni bil spremenjen, ker ni bil izbran noben
no_limits_imposed: Brez omejitev
+ no_role_assigned: Dodeljena ni nobena vloga
not_subscribed: Ni naročen
pending: Čakanje na pregled
perform_full_suspension: Suspendiraj
@@ -197,12 +201,7 @@ sl:
reset: Ponastavi
reset_password: Ponastavi geslo
resubscribe: Ponovno se naroči
- role: Dovoljenja
- roles:
- admin: Skrbnik
- moderator: Moderator
- staff: Osebje
- user: Uporabnik
+ role: Vloga
search: Iskanje
search_same_email_domain: Drugi uporabniki z isto domeno e-pošte
search_same_ip: Drugi uporabniki z istim IP
@@ -245,17 +244,21 @@ sl:
approve_user: Odobri uporabnika
assigned_to_self_report: Dodeli prijavo
change_email_user: Spremeni e-poštni naslov uporabnika
+ change_role_user: Spremeni vlogo uporabnika
confirm_user: Potrdi uporabnika
create_account_warning: Ustvari opozorilo
create_announcement: Ustvari obvestilo
+ create_canonical_email_block: Ustvari blokado e-pošte
create_custom_emoji: Ustvari emodži po meri
create_domain_allow: Ustvari odobritev domene
create_domain_block: Ustvari blokado domene
create_email_domain_block: Ustvari blokado domene e-pošte
create_ip_block: Ustvari pravilo IP
create_unavailable_domain: Ustvari domeno, ki ni na voljo
+ create_user_role: Ustvari vlogo
demote_user: Ponižaj uporabnika
destroy_announcement: Izbriši obvestilo
+ destroy_canonical_email_block: Izbriši blokado e-pošte
destroy_custom_emoji: Izbriši emodži po meri
destroy_domain_allow: Izbriši odobritev domene
destroy_domain_block: Izbriši blokado domene
@@ -264,6 +267,7 @@ sl:
destroy_ip_block: Izbriši pravilo IP
destroy_status: Izbriši objavo
destroy_unavailable_domain: Izbriši domeno, ki ni na voljo
+ destroy_user_role: Uniči vlogo
disable_2fa_user: Onemogoči
disable_custom_emoji: Onemogoči emodži po meri
disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika
@@ -290,24 +294,30 @@ sl:
update_announcement: Posodobi objavo
update_custom_emoji: Posodobi emodži po meri
update_domain_block: Posodobi blokado domene
+ update_ip_block: Posodobi pravilo IP
update_status: Posodobi objavo
+ update_user_role: Posodobi vlogo
actions:
approve_appeal_html: "%{name} je ugodil pritožbi uporabnika %{target} na moderatorsko odločitev"
approve_user_html: "%{name} je odobril/a registracijo iz %{target}"
assigned_to_self_report_html: "%{name} je dodelil/a prijavo %{target} sebi"
change_email_user_html: "%{name} je spremenil/a naslov e-pošte uporabnika %{target}"
+ change_role_user_html: "%{name} je spremenil/a vlogo %{target}"
confirm_user_html: "%{name} je potrdil/a naslov e-pošte uporabnika %{target}"
create_account_warning_html: "%{name} je poslal/a opozorilo %{target}"
create_announcement_html: "%{name} je ustvarila/a novo obvestilo %{target}"
+ create_canonical_email_block_html: "%{name} je dal/a na črni seznam e-pošto s ključnikom %{target}"
create_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}"
create_domain_allow_html: "%{name} je dovolil/a federacijo z domeno %{target}"
create_domain_block_html: "%{name} je blokiral/a domeno %{target}"
create_email_domain_block_html: "%{name} je dal/a na črni seznam e-pošto domene %{target}"
create_ip_block_html: "%{name} je ustvaril/a pravilo za IP %{target}"
create_unavailable_domain_html: "%{name} je prekinil/a dostavo v domeno %{target}"
+ create_user_role_html: "%{name} je ustvaril/a vlogo %{target}"
demote_user_html: "%{name} je ponižal/a uporabnika %{target}"
destroy_announcement_html: "%{name} je izbrisal/a obvestilo %{target}"
- destroy_custom_emoji_html: "%{name} je uničil/a emotikone %{target}"
+ destroy_canonical_email_block_html: "%{name} je odstranil/a s črnega seznama e-pošto s ključnikom %{target}"
+ destroy_custom_emoji_html: "%{name} je izbrisal/a emotikon %{target}"
destroy_domain_allow_html: "%{name} ni dovolil/a federacije z domeno %{target}"
destroy_domain_block_html: "%{name} je odblokiral/a domeno %{target}"
destroy_email_domain_block_html: "%{name} je odblokiral/a e-pošto domene %{target}"
@@ -315,6 +325,7 @@ sl:
destroy_ip_block_html: "%{name} je izbrisal/a pravilo za IP %{target}"
destroy_status_html: "%{name} je odstranil/a objavo uporabnika %{target}"
destroy_unavailable_domain_html: "%{name} je nadaljeval/a dostav v domeno %{target}"
+ destroy_user_role_html: "%{name} je izbrisal/a vlogo %{target}"
disable_2fa_user_html: "%{name} je onemogočil/a dvofaktorsko zahtevo za uporabnika %{target}"
disable_custom_emoji_html: "%{name} je onemogočil/a emotikone %{target}"
disable_sign_in_token_auth_user_html: "%{name} je onemogočil/a overjanje z žetonom po e-pošti za uporabnika %{target}"
@@ -341,8 +352,9 @@ sl:
update_announcement_html: "%{name} je posodobil/a objavo %{target}"
update_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}"
update_domain_block_html: "%{name} je posodobil/a domenski blok za %{target}"
+ update_ip_block_html: "%{name} je spremenil/a pravilo za IP %{target}"
update_status_html: "%{name} je posodobil/a objavo uporabnika %{target}"
- deleted_status: "(izbrisana objava)"
+ update_user_role_html: "%{name} je spremenil/a vlogo %{target}"
empty: Ni najdenih zapisnikov.
filter_by_action: Filtriraj po dejanjih
filter_by_user: Filtriraj po uporabnikih
@@ -677,6 +689,71 @@ sl:
unresolved: Nerešeni
updated_at: Posodobljeni
view_profile: Pokaži profil
+ roles:
+ add_new: Dodaj vlogo
+ assigned_users:
+ few: "%{count} uporabniki"
+ one: "%{count} uporabnik"
+ other: "%{count} uporabnikov"
+ two: "%{count} uporabnika"
+ categories:
+ administration: Upravljanje
+ devops: Razvojniki
+ invites: Povabila
+ moderation: Moderiranje
+ special: Posebno
+ delete: Izbriši
+ description_html: Z uporabniškimi vlogami lahko prilagodite, do katerih funkcij in področij Mastodona lahko dostopajo vaši uporabniki.
+ edit: Uredi vlogo %{name}
+ everyone: Privzete pravice
+ everyone_full_description_html: To je osnovna vloga, ki vpliva na vse uporabnike, celo na tiste brez dodeljene vloge. Vse druge vloge dedujejo njene pravice.
+ permissions_count:
+ few: "%{count} pravice"
+ one: "%{count} pravica"
+ other: "%{count} pravic"
+ two: "%{count} pravici"
+ privileges:
+ administrator: Skrbnik
+ administrator_description: Uporabniki s temi pravicami bodo zaobšli vse pravice
+ delete_user_data: Izbriši uporabniške podatke
+ delete_user_data_description: Omogoča uporabnikom, da izbrišejo podatke drugih uporabnikov brez časvnega zamika
+ invite_users: Povabi uporabnike
+ invite_users_description: Omogoča uporabnikom, da povabi nove osebe na strežnik
+ manage_announcements: Upravljaj obvestila
+ manage_announcements_description: Omogoča uporabnikom, da upravljajo obvestila na strežniku
+ manage_appeals: Upravljaj pritožbe
+ manage_appeals_description: Omogoča uporabnikom, da pregledajo pritožbe glede dejanj moderiranja
+ manage_blocks: Upravljaj blokirano
+ manage_blocks_description: Omogoča uporabnikom, da blokirajo ponudnike e-pošte in naslove IP
+ manage_custom_emojis: Upravljaj emodžije po meri
+ manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emodžije po meri na strežniku
+ manage_federation: Upravljaj beli seznam
+ manage_federation_description: Omogoča uporabnikom blokirati ali dovoljevati vstop na beli seznam z druimi domenami ter nadzirati dostavljivost
+ manage_invites: Upravljaj vabila
+ manage_invites_description: Omogoča uporabnikom, da brskajo in deaktivirajo povezave povabil
+ manage_reports: Upravljaj poročila
+ manage_reports_description: Omogoča uporabnikom, da pregledajo poročila in glede le-teh opravijo dejanja moderiranja
+ manage_roles: Upravljaj vloge
+ manage_roles_description: Omogoča uporabnikom upravljati in dodeljevati vloge pod svojo
+ manage_rules: Upravljaj pravila
+ manage_rules_description: Omogoča uporabnikom, da spremenijo pravila strežnika
+ manage_settings: Upravljaj nastavitve
+ manage_settings_description: Omogoča uporabnikom, da spremenijo nastavitve spletišča
+ manage_taxonomies: Upravljaj taksonomije
+ manage_taxonomies_description: Omogoča uporabnikom, da preverijo vsebino v trendu in posodobijo nastavitve ključnikov
+ manage_user_access: Upravljaj dostop uporabnikov
+ manage_user_access_description: Omogoča uporabnikom, da onemogočijo drugim uporabnikom dvofazno overjanje, spremenijo njihov e-naslov ter ponastavijo njihovo geslo
+ manage_users: Upravljaj uporabnike
+ manage_users_description: Omogoča uporabnikom, da vidijo podrobnosti drugih uporabnikov in nad njimi izvedejo dejanja moderiranja
+ manage_webhooks: Upravljaj spletne zanke
+ manage_webhooks_description: Omogoča uporabnikom, da vzpostavijo nove spletne zanke za skrbniške dogodke
+ view_audit_log: Pokaži revizijski zapisnik
+ view_audit_log_description: Omogoča, da uporabnik vidi zgodovino skrbniških opravil na strežniku
+ view_dashboard: Pokaži nadzorno ploščo
+ view_dashboard_description: Omogoča uporabnikom, da dostopajo do nadzorne plošče in različnih meritev
+ view_devops: Razvojniki
+ view_devops_description: Omogoča uporabnikom, da dostopajo do nadzornih plošč Sidekiq in phHero
+ title: Vloge
rules:
add_new: Dodaj pravilo
delete: Izbriši
@@ -729,9 +806,6 @@ sl:
deletion:
desc_html: Dovoli vsakomur, da izbriše svoj račun
title: Odpri brisanje računa
- min_invite_role:
- disabled: Nihče
- title: Dovoli vabila od
require_invite_text:
desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega
title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati
@@ -744,9 +818,6 @@ sl:
show_known_fediverse_at_about_page:
desc_html: Ko preklopite, bo prikazal objave vseh znanih fediverzumov v predogledu. V nasprotnem primeru bodo prikazane samo krajevne objave.
title: Pokaži znane fediverse-e v predogledu časovnice
- show_staff_badge:
- desc_html: Prikaži značko osebja na uporabniški strani
- title: Prikaži značko osebja
site_description:
desc_html: Uvodni odstavek na API-ju. Opišite, zakaj je ta Mastodon strežnik poseben in karkoli pomembnega. Lahko uporabite HTML oznake, zlasti <a>
in <em>
.
title: Opis strežnika
@@ -757,8 +828,8 @@ sl:
desc_html: Prikazano v stranski vrstici in metaoznakah. V enem odstavku opišite, kaj je Mastodon in kaj naredi ta strežnik poseben.
title: Kratek opis strežnika
site_terms:
- desc_html: Lahko napišete svojo pravilnik o zasebnosti, pogoje storitve ali druge pravne dokumente. Lahko uporabite oznake HTML
- title: Pogoji storitve po meri
+ desc_html: Napišete lahko svoj pravilnik o zasebnosti. Uporabite lahko značke HTML.
+ title: Pravilnik o zasebnosti po meri
site_title: Ime strežnika
thumbnail:
desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px
@@ -768,8 +839,8 @@ sl:
title: Predogled časovnice
title: Nastavitve strani
trendable_by_default:
- desc_html: Velja za ključnike, ki niso bili poprej onemogočeni
- title: Dovoli, da so ključniki v trendu brez predhodnega pregleda
+ desc_html: Določeno vsebino v trendu je še vedno možno izrecno prepovedati
+ title: Dovoli trende brez predhodnega pregleda
trends:
desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu
title: Trendi
@@ -896,6 +967,11 @@ sl:
empty: Zaenkrat še nimate prilagojenih končnih točk spletnih zank.
enable: Omogoči
enabled: Dejaven
+ enabled_events:
+ few: "%{count} omogočeni dogodki"
+ one: "%{count} omogočen dogodek"
+ other: "%{count} omogočenih dogodkov"
+ two: "%{count} omogočena dogodka"
events: Dogodki
new: Nova spletna zanka
rotate_secret: Zasukaj skrivnost
@@ -1155,16 +1231,46 @@ sl:
public: Javne časovnice
thread: Pogovori
edit:
+ add_keyword: Dodaj ključno besedo
+ keywords: Ključne besede
+ statuses: Posamezne objave
+ statuses_hint_html: Ta filter velja za izbrane posamezne objave, ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Preglejte ali odstarnite objave iz filtra.
title: Uredite filter
errors:
+ deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik.
invalid_context: Ne vsebuje nobenega ali vsebuje neveljaven kontekst
- invalid_irreversible: Nepovratno filtriranje deluje le v kontekstu doma ali obvestil
index:
+ contexts: Filtri v %{contexts}
delete: Izbriši
empty: Nimate filtrov.
+ expires_in: Poteče čez %{distance}
+ expires_on: Poteče %{date}
+ keywords:
+ few: "%{count} ključne besede"
+ one: "%{count} ključna beseda"
+ other: "%{count} ključnih besed"
+ two: "%{count} ključni besedi"
+ statuses:
+ few: "%{count} objave"
+ one: "%{count} objava"
+ other: "%{count} objav"
+ two: "%{count} objavi"
+ statuses_long:
+ few: "%{count} posamezne objave skrite"
+ one: "%{count} posamezna objava skrita"
+ other: "%{count} posameznih objav skritih"
+ two: "%{count} posamezni objavi skriti"
title: Filtri
new:
+ save: Shrani nov filter
title: Dodaj nov filter
+ statuses:
+ back_to_filter: Nazaj na filter
+ batch:
+ remove: Odstrani iz filtra
+ index:
+ hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika.
+ title: Filtrirane objave
footer:
developers: Razvijalci
more: Več…
@@ -1172,12 +1278,28 @@ sl:
trending_now: Zdaj v trendu
generic:
all: Vse
+ all_items_on_page_selected_html:
+ few: Na tej strani so izbrani %{count} elementi.
+ one: Na tej strani je izbran %{count} element.
+ other: Na tej strani je izbranih %{count} elementov.
+ two: Na tej strani sta izbrana %{count} elementa.
+ all_matching_items_selected_html:
+ few: Izbrani so %{count} elementi, ki ustrezajo vašemu iskanju.
+ one: Izbran je %{count} element, ki ustreza vašemu iskanju.
+ other: Izbranih je %{count} elementov, ki ustrezajo vašemu iskanju.
+ two: Izbrana sta %{count} elementa, ki ustrezata vašemu iskanju.
changes_saved_msg: Spremembe so uspešno shranjene!
copy: Kopiraj
delete: Izbriši
+ deselect: Prekliči ves izbor
none: Brez
order_by: Razvrsti po
save_changes: Shrani spremembe
+ select_all_matching_items:
+ few: Izberite %{count} elemente, ki ustrezajo vašemu iskanju.
+ one: Izberite %{count} element, ki ustreza vašemu iskanju.
+ other: Izberite %{count} elementov, ki ustrezajo vašemu iskanju.
+ two: Izberite %{count} elementa, ki ustrezata vašemu iskanju.
today: danes
validation_errors:
few: Nekaj še ni čisto v redu! Spodaj si oglejte %{count} napake
@@ -1286,23 +1408,10 @@ sl:
copy_account_note_text: 'Ta uporabnik se je preselil iz %{acct}, tukaj so vaše poprejšnje opombe o njem:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} je oddal/a prijavo"
sign_up:
subject: "%{name} se je vpisal/a"
- digest:
- action: Prikaži vsa obvestila
- body: Tukaj je kratek povzetek sporočil, ki ste jih zamudili od vašega zadnjega obiska v %{since}
- mention: "%{name} vas je omenil/a v:"
- new_followers_summary:
- few: Prav tako ste pridobili %{count} nove sledilce, ko ste bili odsotni! Juhu!
- one: Prav tako ste pridobili enega novega sledilca, ko ste bili odsotni! Juhu!
- other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu!
- two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu!
- subject:
- few: "%{count} nova obvestila od vašega zadnjega obiska 🐘"
- one: "%{count} novo obvestilo od vašega zadnjega obiska 🐘"
- other: "%{count} novih obvestil od vašega zadnjega obiska 🐘"
- two: "%{count} novi obvestili od vašega zadnjega obiska 🐘"
- title: V vaši odsotnosti...
favourite:
body: "%{name} je vzljubil/a vašo objavo:"
subject: "%{name} je vzljubil/a vašo objavo"
@@ -1677,7 +1786,7 @@ sl:
Ta dokument je CC-BY-SA. Zadnja posodobitev je bila 7. marca 2018.
Prvotno je bila prilagojena v skladu s politiko zasebnost Discourse.
- title: "%{instance} Pogoji storitve in pravilnik o zasebnosti"
+ title: Pravilnik o zasebnosti %{instance}
themes:
contrast: Mastodon (Visok kontrast)
default: Mastodon (Temna)
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index 0e4d9871ee..e90449495e 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -28,7 +28,7 @@ sq:
learn_more: Mësoni më tepër
logged_in_as_html: Aktualisht jeni i futur si %{username}.
logout_before_registering: Jeni i futur tashmë.
- privacy_policy: Rregulla privatësie
+ 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
@@ -39,7 +39,6 @@ sq:
other: mesazhe
status_count_before: Që kanë krijuar
tagline: Rrjet shoqëror i decentralizuar
- terms: Kushte shërbimi
unavailable_content: Shërbyes të moderuar
unavailable_content_description:
domain: Shërbyes
@@ -83,10 +82,8 @@ sq:
posts_tab_heading: Mesazhe
posts_with_replies: Mesazhe dhe përgjigje
roles:
- admin: Përgjegjës
bot: Robot
group: Grup
- moderator: Moderator
unavailable: Profil jashtë funksionimi
unfollow: Resht së ndjekuri
admin:
@@ -105,12 +102,17 @@ sq:
avatar: Avatar
by_domain: Përkatësi
change_email:
- changed_msg: Email-i i llogarisë u ndryshua me sukses!
+ changed_msg: Email-i u ndryshua me sukses!
current_email: Email-i i tanishëm
label: Ndrysho email-in
new_email: Email i ri
submit: Ndrysho email-in
title: Ndrysho email-in për %{username}
+ change_role:
+ changed_msg: Roli u ndryshua me sukses!
+ label: Ndryshoni rol
+ no_role: Pa rol
+ title: Ndryshoni rolin për %{username}
confirm: Ripohojeni
confirmed: U ripohua
confirming: Po ripohohet
@@ -154,6 +156,7 @@ sq:
active: Aktiv
all: Krejt
pending: Pezull
+ silenced: I kufizuar
suspended: Të pezulluara
title: Moderim
moderation_notes: Shënime moderimesh
@@ -161,6 +164,7 @@ sq:
most_recent_ip: IP-ja më e freskët
no_account_selected: S’u ndryshua ndonjë llogari, ngaqë s’u përzgjodh ndonjë
no_limits_imposed: Pa imponim kufijsh
+ no_role_assigned: Pa rol të caktuar
not_subscribed: Jo i pajtuar
pending: Në pritje të shqyrtimit
perform_full_suspension: Pezulloje
@@ -187,12 +191,7 @@ sq:
reset: Riktheje te parazgjedhjet
reset_password: Ricaktoni fjalëkalimin
resubscribe: Ripajtohuni
- role: Leje
- roles:
- admin: Përgjegjës
- moderator: Moderator
- staff: Staf
- user: Përdorues
+ role: Rol
search: Kërkoni
search_same_email_domain: Të tjerë përdorues me të njëjtën përkatësi email-i
search_same_ip: Të tjerë përdorues me të njëjtën IP
@@ -235,17 +234,21 @@ sq:
approve_user: Miratoje Përdoruesin
assigned_to_self_report: Caktoji Raportim
change_email_user: Ndrysho Email për Përdoruesin
+ change_role_user: Ndryshoni Rol Përdoruesi
confirm_user: Ripohoje Përdoruesin
create_account_warning: Krijo Sinjalizim
create_announcement: Krijoni Lajmërim
+ create_canonical_email_block: Krijoni Bllokim Email-esh
create_custom_emoji: Krijo Emotikon Vetjak
create_domain_allow: Krijo Lejim Përkatësie
create_domain_block: Krijo Bllokim Përkatësie
create_email_domain_block: Krijo Bllokim Përkatësie Email-esh
create_ip_block: Krijoni Rregull IP
create_unavailable_domain: Krijo Përkatësi të Papërdorshme
+ create_user_role: Krijoni Rol
demote_user: Zhgradoje Përdoruesin
destroy_announcement: Fshije Lajmërimin
+ destroy_canonical_email_block: Fshi Bllokim El-esh
destroy_custom_emoji: Fshi Emotikon Vetjak
destroy_domain_allow: Fshi Lejim Përkatësie
destroy_domain_block: Fshi Bllokim Përkatësie
@@ -254,6 +257,7 @@ sq:
destroy_ip_block: Fshini Rregull IP
destroy_status: Fshi Gjendje
destroy_unavailable_domain: Fshi Përkatësi të Papërdorshme
+ destroy_user_role: Asgjësoje Rolin
disable_2fa_user: Çaktivizo 2FA-në
disable_custom_emoji: Çaktivizo Emotikon Vetjak
disable_sign_in_token_auth_user: Çaktivizo Mirëfilltësim me Token Email-i për Përdoruesin
@@ -280,24 +284,30 @@ sq:
update_announcement: Përditëso Lajmërimin
update_custom_emoji: Përditëso Emoxhi Vetjake
update_domain_block: Përditëso Bllok Përkatësish
+ update_ip_block: Përditësoni rregull IP
update_status: Përditëso Gjendjen
+ update_user_role: Përditësoni Rol
actions:
approve_appeal_html: "%{name} miratoi apelim vendimi moderimi nga %{target}"
approve_user_html: "%{name} miratoi regjistrim nga %{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}"
+ change_role_user_html: "%{name} ndryshoi rolin e %{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_canonical_email_block_html: "%{name} bllokoi email-in me hashin %{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}"
+ create_user_role_html: "%{name} krijoi rolin %{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_canonical_email_block_html: "%{name} zhbllokoi email-n me hashin %{target}"
+ destroy_custom_emoji_html: "%{name} fshiu emoji-n %{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}"
@@ -305,6 +315,7 @@ sq:
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}"
+ destroy_user_role_html: "%{name} fshiu rolin %{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_sign_in_token_auth_user_html: "%{name} çaktivizo mirëfilltësim me token email-i për %{target}"
@@ -331,8 +342,9 @@ sq:
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_ip_block_html: "%{name} ndryshoi rregull për IP-në %{target}"
update_status_html: "%{name} përditësoi gjendjen me %{target}"
- deleted_status: "(fshiu gjendjen)"
+ update_user_role_html: "%{name} ndryshoi rolin për %{target}"
empty: S’u gjetën regjistra.
filter_by_action: Filtroji sipas veprimit
filter_by_user: Filtroji sipas përdoruesit
@@ -648,6 +660,65 @@ sq:
unresolved: Të pazgjidhur
updated_at: U përditësua më
view_profile: Shihni profilin
+ roles:
+ add_new: Shtoni rol
+ assigned_users:
+ one: "%{count} përdorues"
+ other: "%{count} përdorues"
+ categories:
+ administration: Administrim
+ invites: Ftesa
+ moderation: Moderim
+ special: Special
+ delete: Fshije
+ description_html: Me role përdoruesi, mund të përshtatni cilat funksione dhe fusha të Mastodon-it mund të përdorin përdoruesit tuaj.
+ edit: Përpunoni rolin e '%{name}'
+ everyone: Leje parazgjedhje
+ everyone_full_description_html: Ky është roli bazë që prek krejt përdoruesit, madje edhe ata pa një rol të caktuar. Krejt rolet e tjerë trashëgojnë lejet prej tij.
+ permissions_count:
+ one: "%{count} leje"
+ other: "%{count} leje"
+ privileges:
+ administrator: Përgjegjës
+ administrator_description: Përdoruesit me këtë leje do të anashkalojnë çdo leje
+ delete_user_data: Të Fshijë të Dhëna Përdoruesi
+ delete_user_data_description: U lejon përdoruesve të fshijnë pa humbur kohë të dhëna përdoruesish të tjerë
+ invite_users: Të Ftojë Përdorues
+ invite_users_description: U lejon përdruesve të ftojë te shërbyesi persona të rinj
+ manage_announcements: Të Administrojë Njoftime
+ manage_announcements_description: U lejon përdoruesve të administrojë njoftime te shërbyesi
+ manage_appeals: Të Administrojë Apelime
+ manage_appeals_description: U lejon përdoruesve të shqyrtojnë apelime kundër veprimesh moderimi
+ manage_blocks: Të Administrojë Bllokim
+ manage_blocks_description: U lejon përdoruesve të bllokojnë shërbime email dhe adresa IP
+ manage_custom_emojis: Të Administrojë Emoxhi Vetjake
+ manage_custom_emojis_description: U lejon përdoruesve të administrojnë te shërbyesi emoxhi vetjake
+ manage_federation: Të Administrjë Federim
+ manage_federation_description: U lejon përdoruesve të bllokojnë ose lejojnë federim me përkatësi të tjera dhe të kontrollojnë shpërndarjen
+ manage_invites: Të Administrojë Ftesa
+ manage_invites_description: U lejon përdoruesve të shfletojnë dhe çaktivizojnë lidhje ftesash
+ manage_reports: Të Administrojë Raportime
+ manage_reports_description: U lejon përdruesve të shqyrtojnë raportime dhe kryejnë veprime moderimi ndaj tyre
+ manage_roles: Të Administrojë Role
+ manage_roles_description: U lejon përdoruesve të administrojnë dhe caktojnë role nën të tyret
+ manage_rules: Të Administrojë Rregulla
+ manage_rules_description: U lejon përdoruesve të ndryshojnë rregulla shërbyesi
+ manage_settings: Të Administrojë Rregullime
+ manage_settings_description: U lejon përdoruesve të ndryshojnë rregullime sajti
+ manage_taxonomies: Të Administrojë Klasifikime
+ manage_taxonomies_description: U lejon përdoruesve të shqyrtojnë lëndë në modë dhe të përditësojnë rregullime hashtag-ësh
+ manage_user_access: Të Administrojë Hyrje Përdoruesi
+ manage_user_access_description: U lejon përdoruesve të çaktivizojnë mirëfilltësim dyfaktorësh për përdorues të tjerë, të ndryshojnë adresa të tyret email dhe të ricaktojnë fjalëkalimet e tyre
+ manage_users: Të Administrojë Përdorues
+ manage_users_description: U lejon përdoruesve të shohin hollësi përdoruesish të tjerë dhe të kryejnë veprime moderimi mbi ta
+ manage_webhooks: Të Administrojë Webhook-e
+ manage_webhooks_description: U lejon përdoruesve të ujdisin webhook-e për veprime administrative
+ view_audit_log: Shihni Regjistër Auditimesh
+ view_audit_log_description: U lejon përdoruesve të shohin një historik veprimesh administrative te shërbyesi
+ view_dashboard: Shihni Pultin
+ view_dashboard_description: U lejon përdoruesve të hyjnë te pulti dhe shohin shifra të ndryshme matjesh
+ view_devops_description: U lejon përdoruesve të hyjnë në pultet Sidekiq dhe pgHero
+ title: Role
rules:
add_new: Shtoni rregull
delete: Fshije
@@ -700,9 +771,6 @@ sq:
deletion:
desc_html: Lejo këdo të fshijë llogarinë e vet
title: Hapni fshirje llogarie
- min_invite_role:
- disabled: Asnjë
- title: Lejo ftesa nga
require_invite_text:
desc_html: Kur regjistrimet lypin miratim dorazi, tekstin e kërkesës për ftesë “Pse doni të merrni pjesë?” bëje të detyrueshëm, në vend se opsional
title: Kërkoju përdoruesve të rinj të plotësojnë doemos një tekst kërkese për ftesë
@@ -715,9 +783,6 @@ sq:
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
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
- title: Shfaq stemë stafi
site_description:
desc_html: Paragraf hyrës te faqja ballore. Përshkruani ç’e bën special këtë shërbyes Mastodon dhe çfarëdo gjëje tjetër të rëndësishme. Mund të përdorni etiketa HTML, veçanërisht <a>
dhe <em>
.
title: Përshkrim shërbyesi
@@ -728,8 +793,8 @@ sq:
desc_html: E shfaqur në anështyllë dhe etiketa meta. Përshkruani në një paragraf të vetëm ç’është Mastodon-i dhe ç’e bën special këtë shërbyes. Në u lëntë i zbrazët, për shërbyesin do të përdoret përshkrimi parazgjedhje.
title: Përshkrim i shkurtër shërbyesi
site_terms:
- 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
+ desc_html: Mund të shkruani rregullat tuaja të privatësisë. Mundeni të përdorni etiketa HTML
+ title: Rregulla vetjake privatësie
site_title: Emër shërbyesi
thumbnail:
desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px
@@ -739,8 +804,8 @@ sq:
title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim
title: Rregullime sajti
trendable_by_default:
- desc_html: Prek hashtag-ë që nuk kanë qenë të palejuar më parë
- title: Lejo hashtag-ë në prirje pa paraparje paraprake
+ desc_html: Lënda specifike në modë prapë mund të ndalohet shprehimisht
+ title: Lejoni prirje pa shqyrtim paraprak
trends:
desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani
title: Hashtag-ë popullorë tani
@@ -802,6 +867,7 @@ sq:
other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar
title: Lidhje në modë
usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje
+ only_allowed: Lejuar vetëm
pending_review: Në pritje të shqyrtimit
preview_card_providers:
allowed: Lidhje prej këtij botuesi mund të përdoren
@@ -821,6 +887,7 @@ sq:
other: Ndarë me të tjerë, ose shënuar si e parapëlqyer %{friendly_count} herë
title: Postime në modë
tags:
+ current_score: Vlera aktuale %{score}
dashboard:
tag_accounts_measure: përdorime unike
tag_languages_dimension: Gjuhë kryesuese
@@ -867,6 +934,7 @@ sq:
secret: E fshehtë nënshkrimesh
status: Gjendje
title: Webhook-ë
+ webhook: Webhook
admin_mailer:
new_appeal:
actions:
@@ -891,6 +959,7 @@ sq:
body: 'Gjërat vijuese lypin një shqyrtim, përpara se të mund të shfaqen publikisht:'
new_trending_links:
no_approved_links: Aktualisht s’ka lidhje në modë të miratuara.
+ requirements: 'Cilido prej këtyre kandidatëve mund të kalojë lidhjen e miratuar për në modë #%{rank}, që aktualisht është “%{lowest_link_title}” me pikë %{lowest_link_score}.'
title: Lidhje në modë
new_trending_statuses:
no_approved_statuses: Aktualisht s’ka postime në modë të miratuar.
@@ -1116,16 +1185,40 @@ sq:
public: Rrjedha kohore publike
thread: Biseda
edit:
+ add_keyword: Shtoni fjalëkyç
+ keywords: Fjalëkyçe
+ statuses: Postime individuale
+ statuses_hint_html: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësish se kanë apo jo përkim me fjalëkyçat më poshtë. Shqyrtoni, ose hiqni postime prej filtrit.
title: Përpunoni filtër
errors:
+ deprecated_api_multiple_keywords: Këta parametra s’mund të ndryshohen nga ky aplikacion, ngaqë aplikohen mbi më shumë se një fjalëkyç filtri. Përdorni një aplikacion më të ri, ose ndërfaqen web.
invalid_context: Ose s’u dha fare, ose u dha kontekst i pavlefshëm
- invalid_irreversible: Filtrim i pakthyeshëm funksionon vetëm me kontekste home ose njoftimesh
index:
+ contexts: Filtra në %{contexts}
delete: Fshije
empty: S’keni filtra.
+ expires_in: Skadon për %{distance}
+ expires_on: Skadon më %{date}
+ keywords:
+ one: "%{count} fjalëkyç"
+ other: "%{count} fjalëkyçe"
+ statuses:
+ one: "%{count} postim"
+ other: "%{count} postime"
+ statuses_long:
+ one: "%{count} postim individual i fshehur"
+ other: "%{count} postime individuale të fshehur"
title: Filtra
new:
+ save: Ruani filtër të ri
title: Shtoni filtër të ri
+ statuses:
+ back_to_filter: Mbrapsht te filtri
+ batch:
+ remove: Hiqe prej filtri
+ index:
+ hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër.
+ title: Postime të filtruar
footer:
developers: Zhvillues
more: Më tepër…
@@ -1133,12 +1226,22 @@ sq:
trending_now: Prirjet e tashme
generic:
all: Krejt
+ all_items_on_page_selected_html:
+ one: Në këtë faqe është i përzgjedhur %{count} objekt.
+ other: Në këtë faqe janë përzgjedhur krejt %{count} objektet.
+ all_matching_items_selected_html:
+ one: Është përzgjedhur %{count} objekt me përkim me kërkimin tuaj.
+ other: Janë përzgjedhur krejt %{count} objektet me përkim me kërkimin tuaj.
changes_saved_msg: Ndryshimet u ruajtën me sukses!
copy: Kopjoje
delete: Fshije
+ deselect: Shpërzgjidhi krejt
none: Asnjë
order_by: Renditi sipas
save_changes: Ruaji ndryshimet
+ select_all_matching_items:
+ one: Përzgjidhni %{count} objekt me përkim me kërkimin tuaj.
+ other: Përzgjidhni krejt %{count} objektet me përkim me kërkimin tuaj.
today: sot
validation_errors:
one: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni gabimin më poshtë
@@ -1243,19 +1346,10 @@ sq:
copy_account_note_text: 'Ky përdorues ka ikur prej %{acct}, ja ku janë shënimet tuaja të mëparshme mbi të:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} parashtroi një raportim"
sign_up:
subject: "%{name} u regjistrua"
- digest:
- action: Shihini krejt njoftimet
- body: Ja një përmbledhje e shkurtër e mesazheve që keni humbur që nga vizita juaj e fundit më %{since}
- mention: "%{name} ju ka përmendur te:"
- new_followers_summary:
- one: Veç kësaj, u bëtë me një ndjekës të ri, teksa s’ishit këtu! Ëhë!
- other: Veç kësaj, u bëtë me %{count} ndjekës të rinj, teksa s’ishit këtu! Shkëlqyeshëm!
- subject:
- one: "1 njoftim i ri që nga vizita juaj e fundit 🐘"
- other: "%{count} njoftime të reja që nga vizita juaj e fundit 🐘"
- title: Gjatë mungesës tuaj…
favourite:
body: 'Gjendja juaj u parapëlqye nga %{name}:'
subject: "%{name} parapëlqeu gjendjen tuaj"
@@ -1618,7 +1712,7 @@ sq:
Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.
Përshtatur fillimisht prej rregulave të privatësisë së Discourse-it.
- title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance}
+ title: Rregulla Privatësie të %{instance}
themes:
contrast: Mastodon (Me shumë kontrast)
default: Mastodon (I errët)
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index cfea20c555..0596d4b68e 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -19,9 +19,6 @@ sr-Latn:
people_followed_by: Ljudi koje %{name} prati
people_who_follow: Ljudi koji prate %{name}
posts_with_replies: Tutovi i odgovori
- roles:
- admin: Administrator
- moderator: Moderator
unfollow: Otprati
admin:
account_moderation_notes:
@@ -76,10 +73,6 @@ sr-Latn:
reset: Resetuj
reset_password: Resetuj lozinku
resubscribe: Ponovo se pretplati
- role: Ovlašćenja
- roles:
- staff: Osoblje
- user: Korisnik
search: Pretraga
shared_inbox_url: Adresa deljenog sandučeta
show:
@@ -180,21 +173,12 @@ sr-Latn:
deletion:
desc_html: Dozvoli svima da mogu da obrišu svoj nalog
title: Otvori brisanje naloga
- min_invite_role:
- disabled: Niko
- title: Samo preko pozivnice
- show_staff_badge:
- desc_html: Prikaži bedž osoblja na korisničkoj strani
- title: Prikaži bedž osoblja
site_description:
desc_html: Uvodni pasus na naslovnoj strani i u meta HTML tagovima. Možete koristiti HTML tagove, konkretno <a>
i <em>
.
title: Opis instance
site_description_extended:
desc_html: Dobro mesto za vaš kod ponašanja, pravila, smernice i druge stvari po kojima se Vaša instanca razlikuje. Možete koristiti HTML tagove
title: Proizvoljne dodatne informacije
- site_terms:
- desc_html: Možete pisati Vašu politiku privatnosti, uslove korišćenja i ostale legalne stvari. Možete koristiti HTML tagove
- title: Proizvoljni uslovi korišćenja
site_title: Ime instance
thumbnail:
desc_html: Koristi se za preglede kroz OpenGraph i API. Preporučuje se 1200x630px
@@ -328,13 +312,6 @@ sr-Latn:
moderation:
title: Moderacija
notification_mailer:
- digest:
- body: Evo kratak pregled šta ste propustili od poslednje posete od %{since}
- mention: "%{name} Vas je pomenuo u:"
- new_followers_summary:
- few: Dobili ste %{count} nova pratioca! Sjajno!
- one: Dobili ste jednog novog pratioca! Jeee!
- other: Dobili ste %{count} novih pratioca! Sjajno!
favourite:
body: "%{name} je postavio kao omiljen Vaš status:"
subject: "%{name} je postavio kao omiljen Vaš status"
@@ -416,8 +393,6 @@ sr-Latn:
pinned: Prikačeni tut
reblogged: podržano
sensitive_content: Osetljiv sadržaj
- terms:
- title: Uslovi korišćenja i politika privatnosti instance %{instance}
themes:
default: Mastodont
two_factor_authentication:
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 445f8f3265..fb2c86cff0 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -12,14 +12,12 @@ sr:
documentation: Документација
hosted_on: Мастодонт хостован на %{domain}
learn_more: Сазнајте више
- privacy_policy: Полиса приватности
source_code: Изворни код
status_count_after:
few: статуси
one: статус
other: статуса
status_count_before: Који су написали
- terms: Услови коришћења
user_count_after:
few: корисници
one: корисник
@@ -52,9 +50,7 @@ sr:
posts_tab_heading: Трубе
posts_with_replies: Трубе и одговори
roles:
- admin: Администратор
bot: Бот
- moderator: Модератор
unavailable: Налог је недоступан
unfollow: Отпрати
admin:
@@ -70,7 +66,6 @@ sr:
avatar: Аватар
by_domain: Домен
change_email:
- changed_msg: Е-пошта налога успешно промењена!
current_email: Тренутна е-пошта
label: Промените е-пошту
new_email: Нова e-пошта
@@ -130,12 +125,6 @@ sr:
reset: Ресетуј
reset_password: Ресетуј лозинку
resubscribe: Поново се претплати
- role: Овлашћења
- roles:
- admin: Администратор
- moderator: Модератор
- staff: Особље
- user: Корисник
search: Претрага
shared_inbox_url: Адреса дељеног сандучета
show:
@@ -155,7 +144,6 @@ sr:
warn: Упозори
web: Веб
action_logs:
- deleted_status: "(обрисан статус)"
title: Записник
custom_emojis:
by_domain: Домен
@@ -312,15 +300,9 @@ sr:
deletion:
desc_html: Дозволи свима да могу да обришу свој налог
title: Отвори брисање налога
- min_invite_role:
- disabled: Нико
- title: Само преко позивнице
show_known_fediverse_at_about_page:
desc_html: Када се упали, показаће трубе из свих знаних федиверса на преглед. У супротном ће само показати локалне трубе.
title: Покажи познате здружене инстанце у прегледнику временске линије
- show_staff_badge:
- desc_html: Прикажи беџ особља на корисничкој страни
- title: Прикажи беџ особља
site_description:
desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a>
и <em>
.
title: Опис инстанце
@@ -330,9 +312,6 @@ sr:
site_short_description:
desc_html: Приказано у изборнику са стране и у мета ознакама. Опиши шта је Мастодон и шта чини овај сервер посебним у једном пасусу. Ако остане празно, вратиће се првобитни опис инстанце.
title: Кратак опис инстанце
- site_terms:
- desc_html: Можете писати Вашу политику приватности, услове коришћења и остале легалне ствари. Можете користити HTML тагове
- title: Произвољни услови коришћења
site_title: Име инстанце
thumbnail:
desc_html: Користи се за прегледе кроз OpenGraph и API. Препоручује се 1200x630px
@@ -459,7 +438,6 @@ sr:
title: Измени филтер
errors:
invalid_context: Ниједан или неважећи контекст испоручен
- invalid_irreversible: Неповратно филтрирање функционише само са почетном или контекстом обавештења
index:
delete: Избриши
title: Филтери
@@ -520,15 +498,6 @@ sr:
moderation:
title: Модерација
notification_mailer:
- digest:
- action: Погледајте сва обавештења
- body: Ево кратак преглед порука које сте пропустили од последње посете од %{since}
- mention: "%{name} Вас је поменуо у:"
- new_followers_summary:
- few: Добили сте %{count} нова пратиоца! Сјајно!
- one: Добили сте једног новог пратиоца! Јеее!
- other: Добили сте %{count} нових пратиоца! Сјајно!
- title: Док нисте били ту...
favourite:
body: "%{name} је поставио као омиљен Ваш статус:"
subject: "%{name} је поставио као омиљен Ваш статус"
@@ -668,8 +637,6 @@ sr:
pinned: Прикачена труба
reblogged: подржано
sensitive_content: Осетљив садржај
- terms:
- title: Услови коришћења и политика приватности инстанце %{instance}
themes:
contrast: Велики контраст
default: Мастодон
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index a84ae6cfec..6ea6bbfb7e 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -26,7 +26,6 @@ sv:
learn_more: Lär dig mer
logged_in_as_html: Inloggad som %{username}.
logout_before_registering: Du är redan inloggad.
- 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
@@ -36,7 +35,6 @@ sv:
one: status
other: statusar
status_count_before: Som skapat
- terms: Användarvillkor
unavailable_content: Otillgängligt innehåll
unavailable_content_description:
domain: Server
@@ -80,10 +78,8 @@ sv:
posts_tab_heading: Tutor
posts_with_replies: Toots med svar
roles:
- admin: Administratör
bot: Robot
group: Grupp
- moderator: Moderator
unavailable: Profilen är inte tillgänglig
unfollow: Sluta följa
admin:
@@ -101,7 +97,6 @@ sv:
avatar: Profilbild
by_domain: Domän
change_email:
- changed_msg: E-postadressen har ändrats!
current_email: Nuvarande E-postadress
label: Byt E-postadress
new_email: Ny E-postadress
@@ -177,12 +172,6 @@ sv:
reset: Återställ
reset_password: Återställ lösenord
resubscribe: Starta en ny prenumeration
- role: Behörigheter
- roles:
- admin: Administratör
- moderator: Moderator
- staff: Personal
- user: Användare
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
@@ -267,7 +256,6 @@ sv:
create_domain_block_html: "%{name} blockerade domänen %{target}"
create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}"
create_ip_block_html: "%{name} skapade regel för IP %{target}"
- destroy_custom_emoji_html: "%{name} förstörde emoji %{target}"
destroy_domain_block_html: "%{name} avblockerade domänen %{target}"
destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}"
destroy_ip_block_html: "%{name} tog bort regel för IP %{target}"
@@ -291,7 +279,6 @@ sv:
update_custom_emoji_html: "%{name} uppdaterade emoji %{target}"
update_domain_block_html: "%{name} uppdaterade domän-block för %{target}"
update_status_html: "%{name} uppdaterade inlägget av %{target}"
- deleted_status: "(raderad status)"
empty: Inga loggar hittades.
filter_by_action: Filtrera efter åtgärd
filter_by_user: Filtrera efter användare
@@ -565,9 +552,6 @@ sv:
deletion:
desc_html: Tillåt vem som helst att radera sitt konto
title: Öppen kontoradering
- min_invite_role:
- disabled: Ingen
- title: Tillåt inbjudningar av
require_invite_text:
desc_html: När nyregistrering kräver manuellt godkännande, gör det obligatoriskt att fylla i text i fältet "Varför vill du gå med?"
title: Kräv att nya användare fyller i en inbjudningsförfrågan
@@ -580,9 +564,6 @@ sv:
show_known_fediverse_at_about_page:
desc_html: När den växlas, kommer toots från hela fediverse visas på förhandsvisning. Annars visas bara lokala toots.
title: Visa det kända fediverse på tidslinjens förhandsgranskning
- show_staff_badge:
- desc_html: Visa en personalbricka på en användarsida
- title: Visa personalbricka
site_description:
desc_html: Inledande stycke på framsidan och i metataggar. Du kan använda HTML-taggar, i synnerhet <a>
och <em>
.
title: Instansbeskrivning
@@ -591,9 +572,6 @@ sv:
title: Egentillverkad utökad information
site_short_description:
title: Kort beskrivning av servern
- site_terms:
- desc_html: Du kan skriva din egen integritetspolicy, användarvillkor eller andra regler. Du kan använda HTML-taggar
- title: Egentillverkad villkor för tjänster
site_title: Namn på instans
thumbnail:
desc_html: Används för förhandsgranskningar via OpenGraph och API. 1200x630px rekommenderas
@@ -927,14 +905,6 @@ sv:
admin:
sign_up:
subject: "%{name} registrerade sig"
- digest:
- action: Visa alla aviseringar
- body: Här är en kort sammanfattning av de meddelanden du missade sedan ditt senaste besök på %{since}
- mention: "%{name} nämnde dig i:"
- new_followers_summary:
- one: Du har också förvärvat en ny följare! Jippie!
- other: Du har också fått %{count} nya följare medans du var iväg! Otroligt!
- title: I din frånvaro...
favourite:
body: 'Din status favoriserades av %{name}:'
subject: "%{name} favoriserade din status"
@@ -1180,8 +1150,6 @@ sv:
too_late: Det är för sent att överklaga denna strejk
tags:
does_not_match_previous_name: matchar inte det föregående namnet
- terms:
- title: "%{instance} Användarvillkor och Sekretesspolicy"
themes:
contrast: Hög kontrast
default: Mastodon
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 3016250ccd..ea17883020 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -20,7 +20,6 @@ ta:
get_apps: கைப்பேசி செயலியை முயற்சி செய்யவும்
hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது
learn_more: மேலும் அறிய
- privacy_policy: தனியுரிமை கொள்கை
see_whats_happening: என்ன நடக்கிறது என்று பார்க்க
server_stats: 'வழங்கியின் புள்ளிவிவரங்கள்:'
source_code: நிரல் மூலம்
@@ -28,7 +27,6 @@ ta:
one: பதிவு
other: பதிவுகள்
status_count_before: எழுதிய
- terms: சேவை விதிமுறைகள்
unavailable_content: விசயங்கள் இல்லை
unavailable_content_description:
domain: வழங்கி
@@ -62,10 +60,8 @@ ta:
posts_tab_heading: பிளிறல்கள்
posts_with_replies: பிளிறல்கள் மற்றும் மறுமொழிகள்
roles:
- admin: நிர்வாகி
bot: பொறி
group: குழு
- moderator: மட்டுறுத்துநர்
unavailable: சுயவிவரம் கிடைக்கவில்லை
unfollow: பின்தொடராதே
admin:
@@ -83,7 +79,6 @@ ta:
avatar: அவதாரம்
by_domain: தளம்
change_email:
- changed_msg: உறிமை மின் அஞ்சல் வெற்றிகரமாக மாற்ற்ப்பட்டது!
current_email: தற்கால மின் அஞ்சல்
label: மின் அஞ்சலை மற்றுக
new_email: புதிய மின் அஞ்சல்
@@ -139,12 +134,6 @@ ta:
already_confirmed: இப்பயனர் ஏற்கனவே உறுதி படுத்திவிட்டார்
reset: மீட்டமைக்கவும்
reset_password: கடவுச்சொல்லை மீளமைத்திடுக
- role: அனுமதி
- roles:
- admin: நிர்வாகி
- moderator: நடுவர்
- staff: பணியாளர்
- user: பயனர்
search: தேடு
search_same_email_domain: இம்மின்னஞ்சல் களத்தில் உள்ள மற்ற பயனர்கள்
shared_inbox_url: குழு மின்னஞ்சல் முகவரி
diff --git a/config/locales/te.yml b/config/locales/te.yml
index 7f6aa0f091..3f0c80980f 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -12,13 +12,11 @@ te:
documentation: పత్రీకరణ
hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది
learn_more: మరింత తెలుసుకోండి
- privacy_policy: గోప్యత విధానము
source_code: సోర్సు కోడ్
status_count_after:
one: స్థితి
other: స్థితులు
status_count_before: ఎవరు రాశారు
- terms: సేవా నిబంధనలు
user_count_after:
one: వినియోగదారు
other: వినియోగదారులు
@@ -48,9 +46,7 @@ te:
posts_tab_heading: టూట్లు
posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు
roles:
- admin: నిర్వాహకులు
bot: బోట్
- moderator: నియంత్రికుడు
unfollow: అనుసరించవద్దు
admin:
account_actions:
@@ -65,7 +61,6 @@ te:
avatar: అవతారం
by_domain: డొమైను
change_email:
- changed_msg: ఖాతా యొక్క ఈమెయిల్ విజయవంతంగా మార్చబడింది!
current_email: ప్రస్తుత ఈమెయిల్
label: ఈమెయిల్ ను మార్చు
new_email: కొత్త ఈమెయిల్
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 57fbc1fddb..ab7182e1ee 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -22,6 +22,9 @@ th:
federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ
get_apps: ลองแอปมือถือ
hosted_on: Mastodon ที่โฮสต์ที่ %{domain}
+ instance_actor_flash: 'บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการปิดกั้นเว้นแต่คุณต้องการปิดกั้นทั้งอินสแตนซ์ ในกรณีนี้คุณควรใช้การปิดกั้นโดเมน
+
+ '
learn_more: เรียนรู้เพิ่มเติม
logged_in_as_html: คุณกำลังเข้าสู่ระบบเป็น %{username} ในปัจจุบัน
logout_before_registering: คุณได้เข้าสู่ระบบอยู่แล้ว
@@ -35,7 +38,6 @@ th:
other: โพสต์
status_count_before: ผู้เผยแพร่
tagline: เครือข่ายสังคมแบบกระจายศูนย์
- terms: เงื่อนไขการให้บริการ
unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม
unavailable_content_description:
domain: เซิร์ฟเวอร์
@@ -46,6 +48,7 @@ th:
silenced_title: เซิร์ฟเวอร์ที่จำกัดอยู่
suspended: 'จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์เหล่านี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์เหล่านี้เป็นไปไม่ได้:'
suspended_title: เซิร์ฟเวอร์ที่ระงับอยู่
+ unavailable_content_html: โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ
user_count_after:
other: ผู้ใช้
user_count_before: บ้านของ
@@ -58,6 +61,7 @@ th:
followers:
other: ผู้ติดตาม
following: กำลังติดตาม
+ instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ
joined: เข้าร่วมเมื่อ %{date}
last_active: ใช้งานล่าสุด
link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date}
@@ -74,10 +78,8 @@ th:
posts_tab_heading: โพสต์
posts_with_replies: โพสต์และการตอบกลับ
roles:
- admin: ผู้ดูแล
bot: บอต
group: กลุ่ม
- moderator: ผู้ควบคุม
unavailable: โปรไฟล์ไม่พร้อมใช้งาน
unfollow: เลิกติดตาม
admin:
@@ -96,12 +98,17 @@ th:
avatar: ภาพประจำตัว
by_domain: โดเมน
change_email:
- changed_msg: เปลี่ยนอีเมลบัญชีสำเร็จ!
+ changed_msg: เปลี่ยนอีเมลสำเร็จ!
current_email: อีเมลปัจจุบัน
label: เปลี่ยนอีเมล
new_email: อีเมลใหม่
submit: เปลี่ยนอีเมล
title: เปลี่ยนอีเมลสำหรับ %{username}
+ change_role:
+ changed_msg: เปลี่ยนบทบาทสำเร็จ!
+ label: เปลี่ยนบทบาท
+ no_role: ไม่มีบทบาท
+ title: เปลี่ยนบทบาทสำหรับ %{username}
confirm: ยืนยัน
confirmed: ยืนยันแล้ว
confirming: กำลังยืนยัน
@@ -145,6 +152,7 @@ th:
active: ใช้งานอยู่
all: ทั้งหมด
pending: รอดำเนินการ
+ silenced: จำกัดอยู่
suspended: ระงับอยู่
title: การควบคุม
moderation_notes: หมายเหตุการควบคุม
@@ -152,6 +160,7 @@ th:
most_recent_ip: IP ล่าสุด
no_account_selected: ไม่มีการเปลี่ยนแปลงบัญชีเนื่องจากไม่มีการเลือก
no_limits_imposed: ไม่มีการกำหนดขีดจำกัด
+ no_role_assigned: ไม่มีการกำหนดบทบาท
not_subscribed: ไม่ได้บอกรับ
pending: การตรวจทานที่รอดำเนินการ
perform_full_suspension: ระงับ
@@ -177,12 +186,7 @@ th:
reset: รีเซ็ต
reset_password: ตั้งรหัสผ่านใหม่
resubscribe: บอกรับใหม่
- role: สิทธิอนุญาต
- roles:
- admin: ผู้ดูแล
- moderator: ผู้ควบคุม
- staff: พนักงาน
- user: ผู้ใช้
+ role: บทบาท
search: ค้นหา
search_same_email_domain: ผู้ใช้อื่น ๆ ที่มีโดเมนอีเมลเดียวกัน
search_same_ip: ผู้ใช้อื่น ๆ ที่มี IP เดียวกัน
@@ -202,6 +206,8 @@ th:
subscribe: บอกรับ
suspend: ระงับ
suspended: ระงับอยู่
+ suspension_irreversible: ลบข้อมูลของบัญชีนี้อย่างถาวรแล้ว คุณสามารถเลิกระงับบัญชีเพื่อทำให้บัญชีใช้งานได้แต่จะไม่กู้คืนข้อมูลใด ๆ ที่บัญชีมีก่อนหน้านี้
+ suspension_reversible_hint_html: ระงับบัญชีแล้ว และจะเอาข้อมูลออกอย่างสมบูรณ์ใน %{date} จนกว่าจะถึงตอนนั้น สามารถกู้คืนบัญชีได้โดยไม่มีผลร้ายใด ๆ หากคุณต้องการเอาข้อมูลของบัญชีทั้งหมดออกในทันที คุณสามารถทำได้ด้านล่าง
title: บัญชี
unblock_email: เลิกปิดกั้นที่อยู่อีเมล
unblocked_email_msg: เลิกปิดกั้นที่อยู่อีเมลของ %{username} สำเร็จ
@@ -223,17 +229,21 @@ th:
approve_user: อนุมัติผู้ใช้
assigned_to_self_report: มอบหมายรายงาน
change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้
+ change_role_user: เปลี่ยนบทบาทของผู้ใช้
confirm_user: ยืนยันผู้ใช้
create_account_warning: สร้างคำเตือน
create_announcement: สร้างประกาศ
+ create_canonical_email_block: สร้างการปิดกั้นอีเมล
create_custom_emoji: สร้างอีโมจิที่กำหนดเอง
create_domain_allow: สร้างการอนุญาตโดเมน
create_domain_block: สร้างการปิดกั้นโดเมน
create_email_domain_block: สร้างการปิดกั้นโดเมนอีเมล
create_ip_block: สร้างกฎ IP
create_unavailable_domain: สร้างโดเมนที่ไม่พร้อมใช้งาน
+ create_user_role: สร้างบทบาท
demote_user: ลดขั้นผู้ใช้
destroy_announcement: ลบประกาศ
+ destroy_canonical_email_block: ลบการปิดกั้นอีเมล
destroy_custom_emoji: ลบอีโมจิที่กำหนดเอง
destroy_domain_allow: ลบการอนุญาตโดเมน
destroy_domain_block: ลบการปิดกั้นโดเมน
@@ -242,6 +252,7 @@ th:
destroy_ip_block: ลบกฎ IP
destroy_status: ลบโพสต์
destroy_unavailable_domain: ลบโดเมนที่ไม่พร้อมใช้งาน
+ destroy_user_role: ทำลายบทบาท
disable_2fa_user: ปิดใช้งาน 2FA
disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง
disable_sign_in_token_auth_user: ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับผู้ใช้
@@ -268,30 +279,38 @@ th:
update_announcement: อัปเดตประกาศ
update_custom_emoji: อัปเดตอีโมจิที่กำหนดเอง
update_domain_block: อัปเดตการปิดกั้นโดเมน
+ update_ip_block: อัปเดตกฎ IP
update_status: อัปเดตโพสต์
+ update_user_role: อัปเดตบทบาท
actions:
approve_appeal_html: "%{name} ได้อนุมัติการอุทธรณ์การตัดสินใจในการควบคุมจาก %{target}"
approve_user_html: "%{name} ได้อนุมัติการลงทะเบียนจาก %{target}"
assigned_to_self_report_html: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง"
change_email_user_html: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}"
+ change_role_user_html: "%{name} ได้เปลี่ยนบทบาทของ %{target}"
confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}"
create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}"
create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}"
+ create_canonical_email_block_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}"
+ create_user_role_html: "%{name} ได้สร้างบทบาท %{target}"
demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}"
destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}"
- destroy_custom_emoji_html: "%{name} ได้ทำลายอีโมจิ %{target}"
+ destroy_canonical_email_block_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_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}"
destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}"
destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก"
+ destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ"
+ destroy_user_role_html: "%{name} ได้ลบบทบาท %{target}"
disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}"
disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}"
disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}"
@@ -318,8 +337,9 @@ th:
update_announcement_html: "%{name} ได้อัปเดตประกาศ %{target}"
update_custom_emoji_html: "%{name} ได้อัปเดตอีโมจิ %{target}"
update_domain_block_html: "%{name} ได้อัปเดตการปิดกั้นโดเมนสำหรับ %{target}"
+ update_ip_block_html: "%{name} ได้เปลี่ยนกฎสำหรับ IP %{target}"
update_status_html: "%{name} ได้อัปเดตโพสต์โดย %{target}"
- deleted_status: "(โพสต์ที่ลบแล้ว)"
+ update_user_role_html: "%{name} ได้เปลี่ยนบทบาท %{target}"
empty: ไม่พบรายการบันทึก
filter_by_action: กรองตามการกระทำ
filter_by_user: กรองตามผู้ใช้
@@ -411,6 +431,8 @@ th:
destroyed_msg: เลิกทำการปิดกั้นโดเมนแล้ว
domain: โดเมน
edit: แก้ไขการปิดกั้นโดเมน
+ existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว
+ existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว คุณจำเป็นต้อง เลิกปิดกั้น ก่อน
new:
create: สร้างการปิดกั้น
hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ
@@ -421,8 +443,11 @@ th:
suspend: ระงับ
title: การปิดกั้นโดเมนใหม่
obfuscate: ทำให้ชื่อโดเมนคลุมเครือ
+ obfuscate_hint: ปิดบังชื่อโดเมนบางส่วนในรายการหากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน
private_comment: ความคิดเห็นส่วนตัว
+ private_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับการใช้งานภายในโดยผู้ควบคุม
public_comment: ความคิดเห็นสาธารณะ
+ public_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับสาธารณชนทั่วไป หากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน
reject_media: ปฏิเสธไฟล์สื่อ
reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ
reject_reports: ปฏิเสธรายงาน
@@ -431,6 +456,8 @@ th:
view: ดูการปิดกั้นโดเมน
email_domain_blocks:
add_new: เพิ่มใหม่
+ attempts_over_week:
+ other: "%{count} ความพยายามในการลงทะเบียนในช่วงสัปดาห์ที่ผ่านมา"
created_msg: ปิดกั้นโดเมนอีเมลสำเร็จ
delete: ลบ
dns:
@@ -442,9 +469,11 @@ th:
resolve: แปลงที่อยู่โดเมน
title: ปิดกั้นโดเมนอีเมลใหม่
no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก
+ resolved_dns_records_hint_html: ชื่อโดเมนแปลงที่อยู่เป็นโดเมน MX ดังต่อไปนี้ ซึ่งท้ายที่สุดแล้วจะรับผิดชอบสำหรับการยอมรับอีเมล การปิดกั้นโดเมน MX จะปิดกั้นการลงทะเบียนจากที่อยู่อีเมลใด ๆ ซึ่งใช้โดเมน MX เดียวกัน แม้ว่าชื่อโดเมนที่ปรากฏจะแตกต่างกัน ระวังอย่าปิดกั้นผู้ให้บริการอีเมลรายใหญ่
resolved_through_html: แปลงที่อยู่ผ่าน %{domain}
title: โดเมนอีเมลที่ปิดกั้นอยู่
follow_recommendations:
+ description_html: "คำแนะนำการติดตามช่วยให้ผู้ใช้ใหม่ค้นหาเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบกับผู้อื่นมากพอที่จะสร้างคำแนะนำการติดตามส่วนบุคคล จะแนะนำบัญชีเหล่านี้แทน จะคำนวณคำแนะนำใหม่เป็นประจำทุกวันจากบัญชีต่าง ๆ ที่มีการมีส่วนร่วมล่าสุดสูงสุดและจำนวนผู้ติดตามในเซิร์ฟเวอร์สูงสุดสำหรับภาษาที่กำหนด"
language: สำหรับภาษา
status: สถานะ
suppress: ระงับคำแนะนำการติดตาม
@@ -453,7 +482,14 @@ th:
unsuppress: คืนค่าคำแนะนำการติดตาม
instances:
availability:
+ description_html:
+ other: หากการจัดส่งไปยังโดเมนล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน โดยไม่สำเร็จ จะไม่ทำการพยายามจัดส่งเพิ่มเติมเว้นแต่จะได้รับการจัดส่ง จาก โดเมน
+ failure_threshold_reached: ถึงค่าเกณฑ์ความล้มเหลวเมื่อ %{date}
+ failures_recorded:
+ other: ความพยายามที่ล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน
+ no_failures_recorded: ไม่มีความล้มเหลวในระเบียน
title: ความพร้อมใช้งาน
+ warning: ความพยายามล่าสุดในการเชื่อมต่อกับเซิร์ฟเวอร์นี้ไม่สำเร็จ
back_to_all: ทั้งหมด
back_to_limited: จำกัดอยู่
back_to_warning: คำเตือน
@@ -488,6 +524,8 @@ th:
unavailable: ไม่พร้อมใช้งาน
delivery_available: มีการจัดส่ง
delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง
+ delivery_error_hint: หากไม่สามารถทำการจัดส่งได้เป็นเวลา %{count} วัน จะทำเครื่องหมายโดเมนว่าจัดส่งไม่ได้โดยอัตโนมัติ
+ destroyed_msg: ตอนนี้จัดคิวข้อมูลจาก %{domain} สำหรับการลบในเร็ว ๆ นี้แล้ว
empty: ไม่พบโดเมน
known_accounts:
other: "%{count} บัญชีที่รู้จัก"
@@ -498,12 +536,14 @@ th:
private_comment: ความคิดเห็นส่วนตัว
public_comment: ความคิดเห็นสาธารณะ
purge: ล้างข้อมูล
+ purge_description_html: หากคุณเชื่อว่าโดเมนนี้ออฟไลน์อย่างถาวร คุณสามารถลบระเบียนบัญชีและข้อมูลที่เกี่ยวข้องทั้งหมดจากโดเมนนี้จากที่เก็บข้อมูลของคุณ นี่อาจใช้เวลาสักครู่
title: การติดต่อกับภายนอก
total_blocked_by_us: ปิดกั้นโดยเรา
total_followed_by_them: ติดตามโดยเขา
total_followed_by_us: ติดตามโดยเรา
total_reported: รายงานเกี่ยวกับเขา
total_storage: ไฟล์แนบสื่อ
+ totals_time_period_hint_html: ยอดรวมที่แสดงด้านล่างรวมข้อมูลสำหรับเวลาทั้งหมด
invites:
deactivate_all: ปิดใช้งานทั้งหมด
filter:
@@ -532,6 +572,7 @@ th:
relays:
add_new: เพิ่มรีเลย์ใหม่
delete: ลบ
+ description_html: "รีเลย์การติดต่อกับภายนอก เป็นเซิร์ฟเวอร์ตัวกลางที่แลกเปลี่ยนโพสต์สาธารณะจำนวนมากระหว่างเซิร์ฟเวอร์ที่บอกรับและเผยแพร่ไปยังรีเลย์ รีเลย์สามารถช่วยให้เซิร์ฟเวอร์ขนาดเล็กและขนาดกลางค้นพบเนื้อหาจากจักรวาลสหพันธ์ ซึ่งมิฉะนั้นจะต้องให้ผู้ใช้ในเซิร์ฟเวอร์ติดตามผู้คนอื่น ๆ ในเซิร์ฟเวอร์ระยะไกลด้วยตนเอง"
disable: ปิดใช้งาน
disabled: ปิดใช้งานอยู่
enable: เปิดใช้งาน
@@ -541,6 +582,7 @@ th:
pending: กำลังรอการอนุมัติของรีเลย์
save_and_enable: บันทึกแล้วเปิดใช้งาน
setup: ตั้งค่าการเชื่อมต่อแบบรีเลย์
+ signatures_not_enabled: รีเลย์จะทำงานไม่ถูกต้องขณะที่มีการเปิดใช้งานโหมดปลอดภัยหรือโหมดการติดต่อกับภายนอกแบบจำกัด
status: สถานะ
title: รีเลย์
report_notes:
@@ -554,9 +596,12 @@ th:
action_log: รายการบันทึกการตรวจสอบ
action_taken_by: ใช้การกระทำโดย
actions:
+ delete_description_html: จะลบโพสต์ที่รายงานและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน
+ mark_as_sensitive_description_html: จะทำเครื่องหมายสื่อในโพสต์ที่รายงานว่าละเอียดอ่อนและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน
other_description_html: ดูตัวเลือกเพิ่มเติมสำหรับการควบคุมพฤติกรรมของบัญชีและปรับแต่งการสื่อสารไปยังบัญชีที่รายงาน
resolve_description_html: จะไม่ใช้การกระทำกับบัญชีที่รายงาน ไม่มีการบันทึกการดำเนินการ และจะปิดรายงาน
actions_description_html: ตัดสินใจว่าการกระทำใดที่จะใช้เพื่อแก้ปัญหารายงานนี้ หากคุณใช้การกระทำที่เป็นการลงโทษกับบัญชีที่รายงาน จะส่งการแจ้งเตือนอีเมลถึงเขา ยกเว้นเมื่อมีการเลือกหมวดหมู่ สแปม
+ add_to_report: เพิ่มข้อมูลเพิ่มเติมไปยังรายงาน
are_you_sure: คุณแน่ใจหรือไม่?
assign_to_self: มอบหมายให้ฉัน
assigned: ผู้ควบคุมที่ได้รับมอบหมาย
@@ -579,6 +624,7 @@ th:
create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ
delete: ลบ
title: หมายเหตุ
+ notes_description_html: ดูและฝากหมายเหตุถึงผู้ควบคุมอื่น ๆ และตัวคุณเองในอนาคต
quick_actions_description_html: 'ดำเนินการอย่างรวดเร็วหรือเลื่อนลงเพื่อดูเนื้อหาที่รายงาน:'
remote_user_placeholder: ผู้ใช้ระยะไกลจาก %{instance}
reopen: เปิดรายงานใหม่
@@ -596,6 +642,60 @@ th:
unresolved: ยังไม่ได้แก้ปัญหา
updated_at: อัปเดตเมื่อ
view_profile: ดูโปรไฟล์
+ roles:
+ add_new: เพิ่มบทบาท
+ assigned_users:
+ other: "%{count} ผู้ใช้"
+ categories:
+ administration: การดูแล
+ invites: คำเชิญ
+ moderation: การควบคุม
+ special: พิเศษ
+ delete: ลบ
+ description_html: ด้วย บทบาทผู้ใช้ คุณสามารถปรับแต่งว่าฟังก์ชันและพื้นที่ใดของ Mastodon ที่ผู้ใช้ของคุณสามารถเข้าถึง
+ edit: แก้ไขบทบาท '%{name}'
+ everyone: สิทธิอนุญาตเริ่มต้น
+ permissions_count:
+ other: "%{count} สิทธิอนุญาต"
+ privileges:
+ administrator: ผู้ดูแล
+ administrator_description: ผู้ใช้ที่มีสิทธิอนุญาตนี้จะข้ามทุกสิทธิอนุญาต
+ delete_user_data: ลบข้อมูลผู้ใช้
+ delete_user_data_description: อนุญาตให้ผู้ใช้ลบข้อมูลของผู้ใช้อื่น ๆ โดยทันที
+ invite_users: เชิญผู้ใช้
+ invite_users_description: อนุญาตให้ผู้ใช้เชิญผู้คนใหม่ไปยังเซิร์ฟเวอร์
+ manage_announcements: จัดการประกาศ
+ manage_announcements_description: อนุญาตให้ผู้ใช้จัดการประกาศในเซิร์ฟเวอร์
+ manage_appeals: จัดการการอุทธรณ์
+ manage_appeals_description: อนุญาตให้ผู้ใช้ตรวจทานการอุทธรณ์ต่อการกระทำการควบคุม
+ manage_blocks: จัดการการปิดกั้น
+ manage_blocks_description: อนุญาตให้ผู้ใช้ปิดกั้นผู้ให้บริการอีเมลและที่อยู่ IP
+ manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง
+ manage_custom_emojis_description: อนุญาตให้ผู้ใช้จัดการอีโมจิที่กำหนดเองในเซิร์ฟเวอร์
+ manage_federation: จัดการการติดต่อกับภายนอก
+ manage_federation_description: อนุญาตให้ผู้ใช้ปิดกั้นหรืออนุญาตการติดต่อกับภายนอกกับโดเมนอื่น ๆ และควบคุมความสามารถในการจัดส่ง
+ manage_invites: จัดการคำเชิญ
+ manage_invites_description: อนุญาตให้ผู้ใช้เรียกดูและปิดใช้งานลิงก์เชิญ
+ manage_reports: จัดการรายงาน
+ manage_reports_description: อนุญาตให้ผู้ใช้ตรวจทานรายงานและทำการกระทำการควบคุมกับรายงาน
+ manage_roles: จัดการบทบาท
+ manage_rules: จัดการกฎ
+ manage_rules_description: อนุญาตให้ผู้ใช้เปลี่ยนกฎของเซิร์ฟเวอร์
+ manage_settings: จัดการการตั้งค่า
+ manage_settings_description: อนุญาตให้ผู้ใช้เปลี่ยนการตั้งค่าไซต์
+ manage_taxonomies: จัดการอนุกรมวิธาน
+ manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก
+ manage_user_access: จัดการการเข้าถึงของผู้ใช้
+ manage_users: จัดการผู้ใช้
+ manage_users_description: อนุญาตให้ผู้ใช้ดูรายละเอียดของผู้ใช้อื่น ๆ และทำการกระทำการควบคุมกับผู้ใช้
+ manage_webhooks: จัดการเว็บฮุค
+ manage_webhooks_description: อนุญาตให้ผู้ใช้ตั้งค่าเว็บฮุคสำหรับเหตุการณ์การดูแล
+ view_audit_log: ดูรายการบันทึกการตรวจสอบ
+ view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์
+ view_dashboard: ดูแดชบอร์ด
+ view_dashboard_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ดและเมตริกต่าง ๆ
+ view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero
+ title: บทบาท
rules:
add_new: เพิ่มกฎ
delete: ลบ
@@ -647,9 +747,6 @@ th:
deletion:
desc_html: อนุญาตให้ใครก็ตามลบบัญชีของเขา
title: เปิดการลบบัญชี
- min_invite_role:
- disabled: ไม่มีใคร
- title: อนุญาตคำเชิญโดย
require_invite_text:
title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม
registrations_mode:
@@ -661,9 +758,6 @@ th:
show_known_fediverse_at_about_page:
desc_html: เมื่อปิดใช้งาน จำกัดเส้นเวลาสาธารณะที่เชื่อมโยงจากหน้าเริ่มต้นให้แสดงเฉพาะเนื้อหาในเซิร์ฟเวอร์เท่านั้น
title: รวมเนื้อหาที่ติดต่อกับภายนอกไว้ในหน้าเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง
- show_staff_badge:
- desc_html: แสดงป้ายพนักงานในหน้าผู้ใช้
- title: แสดงป้ายพนักงาน
site_description:
desc_html: ย่อหน้าเกริ่นนำใน API อธิบายถึงสิ่งที่ทำให้เซิร์ฟเวอร์ Mastodon นี้พิเศษและสิ่งอื่นใดที่สำคัญ คุณสามารถใช้แท็ก HTML โดยเฉพาะอย่างยิ่ง <a>
และ <em>
title: คำอธิบายเซิร์ฟเวอร์
@@ -674,8 +768,8 @@ th:
desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว
title: คำอธิบายเซิร์ฟเวอร์แบบสั้น
site_terms:
- desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัว, เงื่อนไขการให้บริการ หรือภาษากฎหมายอื่น ๆ ของคุณเอง คุณสามารถใช้แท็ก HTML
- title: เงื่อนไขการให้บริการที่กำหนดเอง
+ desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัวของคุณเอง คุณสามารถใช้แท็ก HTML
+ title: นโยบายความเป็นส่วนตัวที่กำหนดเอง
site_title: ชื่อเซิร์ฟเวอร์
thumbnail:
desc_html: ใช้สำหรับการแสดงตัวอย่างผ่าน OpenGraph และ API 1200x630px ที่แนะนำ
@@ -685,8 +779,7 @@ th:
title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง
title: การตั้งค่าไซต์
trendable_by_default:
- desc_html: มีผลต่อแฮชแท็กที่ไม่ได้ไม่อนุญาตก่อนหน้านี้
- title: อนุญาตให้แฮชแท็กขึ้นแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า
+ title: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า
trends:
desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ
title: แนวโน้ม
@@ -716,8 +809,11 @@ th:
suspend: "%{name} ได้ระงับบัญชีของ %{target}"
appeal_approved: อุทธรณ์แล้ว
system_checks:
+ elasticsearch_running_check:
+ message_html: ไม่สามารถเชื่อมต่อกับ Elasticsearch โปรดตรวจสอบว่าซอฟต์แวร์กำลังทำงาน หรือปิดใช้งานการค้นหาข้อความแบบเต็ม
elasticsearch_version_check:
message_html: 'รุ่น Elasticsearch ที่เข้ากันไม่ได้: %{value}'
+ version_comparison: Elasticsearch %{running_version} กำลังทำงานขณะที่ต้องการ %{required_version}
rules_check:
action: จัดการกฎของเซิร์ฟเวอร์
message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ
@@ -752,6 +848,7 @@ th:
allow_account: อนุญาตผู้สร้าง
disallow: ไม่อนุญาตโพสต์
disallow_account: ไม่อนุญาตผู้สร้าง
+ not_discoverable: ผู้สร้างไม่ได้เลือกรับให้สามารถค้นพบได้
shared_by:
other: แบ่งปันและชื่นชอบ %{friendly_count} ครั้ง
title: โพสต์ที่กำลังนิยม
@@ -791,8 +888,13 @@ th:
edit: แก้ไขปลายทาง
enable: เปิดใช้งาน
enabled: ใช้งานอยู่
+ enabled_events:
+ other: "%{count} เหตุการณ์ที่เปิดใช้งาน"
events: เหตุการณ์
+ new: เว็บฮุคใหม่
status: สถานะ
+ title: เว็บฮุค
+ webhook: เว็บฮุค
admin_mailer:
new_appeal:
actions:
@@ -891,11 +993,13 @@ th:
setup:
email_below_hint_html: หากที่อยู่อีเมลด้านล่างไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลที่นี่และรับอีเมลยืนยันใหม่
email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี
+ title: การตั้งค่า
status:
account_status: สถานะบัญชี
confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์
functional: บัญชีของคุณทำงานได้อย่างเต็มที่
pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ
+ redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน
view_strikes: ดูการดำเนินการที่ผ่านมากับบัญชีของคุณ
too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง
trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ?
@@ -914,6 +1018,7 @@ th:
title: ติดตาม %{acct}
challenge:
confirm: ดำเนินการต่อ
+ hint_html: "เคล็ดลับ: เราจะไม่ถามรหัสผ่านของคุณกับคุณสำหรับชั่วโมงถัดไป"
invalid_password: รหัสผ่านไม่ถูกต้อง
prompt: ยืนยันรหัสผ่านเพื่อดำเนินการต่อ
crypto:
@@ -963,6 +1068,7 @@ th:
strikes:
action_taken: การกระทำที่ใช้
appeal: อุทธรณ์
+ appeal_approved: อุทธรณ์การดำเนินการนี้สำเร็จและไม่มีผลบังคับอีกต่อไป
appeal_rejected: ปฏิเสธการอุทธรณ์แล้ว
appeal_submitted_at: ส่งการอุทธรณ์แล้ว
appeals:
@@ -1032,13 +1138,29 @@ th:
public: เส้นเวลาสาธารณะ
thread: การสนทนา
edit:
+ add_keyword: เพิ่มคำสำคัญ
+ keywords: คำสำคัญ
title: แก้ไขตัวกรอง
index:
+ contexts: กรองใน %{contexts}
delete: ลบ
empty: คุณไม่มีตัวกรอง
+ expires_in: หมดอายุใน %{distance}
+ expires_on: หมดอายุเมื่อ %{date}
+ keywords:
+ other: "%{count} คำสำคัญ"
+ statuses:
+ other: "%{count} โพสต์"
title: ตัวกรอง
new:
+ save: บันทึกตัวกรองใหม่
title: เพิ่มตัวกรองใหม่
+ statuses:
+ back_to_filter: กลับไปที่ตัวกรอง
+ batch:
+ remove: เอาออกจากตัวกรอง
+ index:
+ title: โพสต์ที่กรองอยู่
footer:
developers: นักพัฒนา
more: เพิ่มเติม…
@@ -1046,12 +1168,19 @@ th:
trending_now: กำลังนิยม
generic:
all: ทั้งหมด
+ all_items_on_page_selected_html:
+ other: เลือกอยู่ทั้งหมด %{count} รายการในหน้านี้
+ all_matching_items_selected_html:
+ other: เลือกอยู่ทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ
changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ!
copy: คัดลอก
delete: ลบ
+ deselect: ไม่เลือกทั้งหมด
none: ไม่มี
order_by: เรียงลำดับตาม
save_changes: บันทึกการเปลี่ยนแปลง
+ select_all_matching_items:
+ other: เลือกทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ
today: วันนี้
validation_errors:
other: ยังมีบางอย่างไม่ถูกต้อง! โปรดตรวจทาน %{count} ข้อผิดพลาดด้านล่าง
@@ -1066,6 +1195,7 @@ th:
overwrite: เขียนทับ
overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่
preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น
+ success: อัปโหลดข้อมูลของคุณสำเร็จและจะได้รับการประมวลผลในเวลาที่ครบกำหนด
types:
blocking: รายการปิดกั้น
bookmarks: ที่คั่นหน้า
@@ -1117,6 +1247,7 @@ th:
cancel_explanation: การยกเลิกการเปลี่ยนเส้นทางจะเปิดใช้งานบัญชีปัจจุบันของคุณใหม่ แต่จะไม่นำผู้ติดตามที่ได้รับการย้ายไปยังบัญชีนั้นกลับมา
cancelled_msg: ยกเลิกการเปลี่ยนเส้นทางสำเร็จ
errors:
+ already_moved: เป็นบัญชีเดียวกันกับที่คุณได้ย้ายไปแล้ว
missing_also_known_as: ไม่ใช่นามแฝงของบัญชีนี้
move_to_self: ไม่สามารถเป็นบัญชีปัจจุบัน
not_found: ไม่พบ
@@ -1142,16 +1273,10 @@ th:
copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} ได้ส่งรายงาน"
sign_up:
subject: "%{name} ได้ลงทะเบียน"
- digest:
- action: ดูการแจ้งเตือนทั้งหมด
- mention: "%{name} ได้กล่าวถึงคุณใน:"
- new_followers_summary:
- other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์!
- subject:
- other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ 🐘"
- title: เมื่อคุณไม่อยู่...
favourite:
body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:'
subject: "%{name} ได้ชื่นชอบโพสต์ของคุณ"
@@ -1243,6 +1368,7 @@ th:
status: สถานะบัญชี
remote_follow:
acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก
+ missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ
no_account_html: ไม่มีบัญชี? คุณสามารถ ลงทะเบียนที่นี่
proceed: ดำเนินการต่อเพื่อติดตาม
prompt: 'คุณกำลังจะติดตาม:'
@@ -1263,6 +1389,7 @@ th:
content_warning: 'คำเตือนเนื้อหา:'
descriptions:
account: โพสต์สาธารณะจาก @%{acct}
+ tag: 'โพสต์สาธารณะที่ได้รับการแท็ก #%{hashtag}'
scheduled_statuses:
too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต
sessions:
@@ -1409,7 +1536,7 @@ th:
tags:
does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้
terms:
- title: เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวของ %{instance}
+ title: นโยบายความเป็นส่วนตัวของ %{instance}
themes:
contrast: Mastodon (ความคมชัดสูง)
default: Mastodon (มืด)
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 7bd5723c43..74fbf4be2e 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1,7 +1,7 @@
---
tr:
about:
- about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel tootlar. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz.
+ about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel gönderiler. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz.
about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir.
about_this: Hakkında
active_count_after: etkin
@@ -28,7 +28,7 @@ tr:
learn_more: Daha fazla bilgi edinin
logged_in_as_html: Şu an %{username} olarak oturum açmışsınız.
logout_before_registering: Zaten oturumunuz açık.
- privacy_policy: Gizlilik politikası
+ 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
@@ -39,7 +39,6 @@ tr:
other: durum yazıldı
status_count_before: Şu ana kadar
tagline: Merkezi olmayan sosyal ağ
- terms: Kullanım şartları
unavailable_content: Denetlenen sunucular
unavailable_content_description:
domain: Sunucu
@@ -79,14 +78,12 @@ tr:
following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız
posts:
one: Gönderi
- other: Toot
+ other: Gönderiler
posts_tab_heading: Tootlar
posts_with_replies: Tootlar ve yanıtlar
roles:
- admin: Yönetici
bot: Bot
group: Grup
- moderator: Denetleyici
unavailable: Profil kullanılamıyor
unfollow: Takibi bırak
admin:
@@ -105,12 +102,17 @@ tr:
avatar: Profil resmi
by_domain: Alan adı
change_email:
- changed_msg: Hesap e-postası başarıyla değiştirildi!
+ changed_msg: E-posta başarıyla değiştirildi!
current_email: Mevcut e-posta
label: E-postayı değiştir
new_email: Yeni e-posta
submit: E-postayı değiştir
title: "%{username} için e-postayı değiştir"
+ change_role:
+ changed_msg: Rol başarıyla değiştirildi!
+ label: Rolü değiştir
+ no_role: Rol yok
+ title: "%{username} için rolü değiştir"
confirm: Onayla
confirmed: Onaylandı
confirming: Onaylanıyor
@@ -154,6 +156,7 @@ tr:
active: Etkin
all: Hepsi
pending: Bekliyor
+ silenced: Sınırlı
suspended: Uzaklaştırılanlar
title: Denetim
moderation_notes: Denetleme notları
@@ -161,6 +164,7 @@ tr:
most_recent_ip: Son IP
no_account_selected: Hiçbiri seçilmediğinden hiçbir hesap değiştirilmedi
no_limits_imposed: Sınır koymaz
+ no_role_assigned: Rol atanmamış
not_subscribed: Abone edilmedi
pending: Bekleyen yorum
perform_full_suspension: Askıya al
@@ -187,12 +191,7 @@ tr:
reset: Sıfırla
reset_password: Parolayı sıfırla
resubscribe: Yeniden abone ol
- role: İzinler
- roles:
- admin: Yönetici
- moderator: Denetleyici
- staff: Personel
- user: Kullanıcı
+ role: Rol
search: Ara
search_same_email_domain: Aynı e-posta alan adına sahip diğer kullanıcılar
search_same_ip: Aynı IP adresine sahip diğer kullanıcılar
@@ -235,17 +234,21 @@ tr:
approve_user: Kullanıcıyı Onayla
assigned_to_self_report: Raporu Ata
change_email_user: Kullanıcı E-postasını Değiştir
+ change_role_user: Kullanıcının Rolünü Değiştir
confirm_user: Kullanıcıyı Onayla
create_account_warning: Uyarı Oluştur
create_announcement: Duyuru Oluştur
+ create_canonical_email_block: E-posta Engeli Oluştur
create_custom_emoji: Özel İfade Oluştur
create_domain_allow: İzin Verilen Alan Adı Oluştur
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
+ create_user_role: Rol Oluştur
demote_user: Kullanıcıyı Düşür
destroy_announcement: Duyuru Sil
+ destroy_canonical_email_block: E-Posta Engelini Sil
destroy_custom_emoji: Özel İfadeyi Sil
destroy_domain_allow: İzin Verilen Alan Adını Sil
destroy_domain_block: Engellenen Alan Adını Sil
@@ -254,6 +257,7 @@ tr:
destroy_ip_block: IP kuralını sil
destroy_status: Durumu Sil
destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil
+ destroy_user_role: Rolü Kaldır
disable_2fa_user: 2AD Kapat
disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak
disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı devre dışı bırak
@@ -280,24 +284,30 @@ tr:
update_announcement: Duyuruyu Güncelle
update_custom_emoji: Özel İfadeyi Güncelle
update_domain_block: Engellenen Alan Adını Güncelle
+ update_ip_block: IP kuralını güncelle
update_status: Durumu Güncelle
+ update_user_role: Rolü Güncelle
actions:
approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti"
approve_user_html: "%{name}, %{target} konumundan kaydı onayladı"
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"
+ change_role_user_html: "%{name}, %{target} kişisinin rolünü 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_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelledi"
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"
+ create_user_role_html: "%{name}, %{target} rolünü oluşturdu"
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_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelini kaldırdı"
+ destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi"
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ı"
@@ -305,6 +315,7 @@ tr:
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ü"
+ destroy_user_role_html: "%{name}, %{target} rolünü sildi"
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_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı"
@@ -331,8 +342,9 @@ tr:
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_ip_block_html: "%{name}, %{target} IP adresi için kuralı güncelledi"
update_status_html: "%{name}, %{target} kullanıcısının gönderisini güncelledi"
- deleted_status: "(silinmiş durum)"
+ update_user_role_html: "%{name}, %{target} rolünü değiştirdi"
empty: Kayıt bulunamadı.
filter_by_action: Eyleme göre filtre
filter_by_user: Kullanıcıya göre filtre
@@ -649,6 +661,67 @@ tr:
unresolved: Giderilmedi
updated_at: Güncellendi
view_profile: Profili görüntüle
+ roles:
+ add_new: Rol ekle
+ assigned_users:
+ one: "%{count} kullanıcı"
+ other: "%{count} kullanıcı"
+ categories:
+ administration: Yönetim
+ devops: Devops
+ invites: Davetler
+ moderation: Denetim
+ special: Özel
+ delete: Sil
+ description_html: "Kullanıcı rolleri ile, kullanıcılarınızın Mastodon'un hangi işlevlerine ve alanlarına erişebileceğini düzenleyebilirsiniz."
+ edit: "'%{name}' rolünü düzenle"
+ everyone: Varsayılan izinler
+ everyone_full_description_html: Bu, herhangi bir rol atanmamış olanlar da olmak üzere tüm kullanıcıları etkileyen temel roldür. Diğer tüm roller izinleri bu rolden alıyorlar.
+ permissions_count:
+ one: "%{count} izin"
+ other: "%{count} izin"
+ privileges:
+ administrator: Yönetici
+ administrator_description: Bu izne sahip kullanıcılar tüm diğer izinleri atlıyorlar
+ delete_user_data: Kullanıcı Verilerini Silme
+ delete_user_data_description: Kullanıcıların, diğer kullanıcıların verisini gecikme olmaksızın silmesine izin verir
+ invite_users: Kullanıcıları Davet Etme
+ invite_users_description: Kullanıcıların yeni kişileri sunucuya davet etmesine izin verir
+ manage_announcements: Duyuruları Yönetme
+ manage_announcements_description: Kullanıcıların sunucudaki duyuruları yönetmesine izin verir
+ manage_appeals: İtirazları Yönetme
+ manage_appeals_description: Kullanıcıların denetleme eylemlerine itirazları gözden geçirmesine izin verir
+ manage_blocks: Engelleri Yönetme
+ manage_blocks_description: Kullanıcıların e-posta sağlayıcıları ve IP adreslerini engellemesine izin verir
+ manage_custom_emojis: Özel İfadeleri Yönetme
+ manage_custom_emojis_description: Kullanıcıların sunucudaki özel ifadeleri yönetmesine izin verir
+ manage_federation: Birleştirme Yönetme
+ manage_federation_description: Kullanıcıların diğer alan adlarıyla birleştirmeye izin vermesi veya engellemesine ve teslim edilebilirliği denetlemesine izin verir
+ manage_invites: Davetleri Yönetme
+ manage_invites_description: Kullanıcıların davet bağlantılarını görüntüleme ve etkisizleştirmesine izin verir
+ manage_reports: Raporları Yönetme
+ manage_reports_description: Kullanıcıların bildirimleri incelemesine ve onlara yönelik denetim eylemleri gerçekleştirmesine izin verir
+ manage_roles: Rolleri Yönetme
+ manage_roles_description: Kullanıcıların kendi rollerinden düşük rolleri atamasına izin verir
+ manage_rules: Kuralları Yönetme
+ manage_rules_description: Kullanıcıların sunucu kurallarını değiştirmesine izin ver
+ manage_settings: Ayarları Yönetme
+ manage_settings_description: Kullanıcıların site ayarlarını değiştirmesine izin verir
+ manage_taxonomies: Kategorileri Yönetme
+ manage_taxonomies_description: Kullanıcıların öne çıkan içeriği incelemesine ve etiket ayarlarını güncellemesine izin verir
+ manage_user_access: Kullanıcı Erişimini Yönetme
+ manage_user_access_description: Kullanıcıların, diğer kullanıcıların işi aşamalı yetkilendirme, e-posta adreslerini değiştirme ve parolalarını sıfırlama eylemlerini etkisizleştirmesine izin verir
+ manage_users: Kullanıcıları Yönetme
+ manage_users_description: Kullanıcıların, diğer kullanıcıların ayrıntılarını görüntülemesine ve onlara karşı denetim eylemleri gerçekleştirmesine izin verir
+ manage_webhooks: Webhookları Yönetme
+ manage_webhooks_description: Kullanıcıların yönetsel olaylar için webhook kurmasına izin verir
+ view_audit_log: Denetim Kaydını Görüntüleme
+ view_audit_log_description: Kullanıcıların sunucudaki yönetsel eylemlerin bir tarihçesini görüntülemesine izin verir
+ view_dashboard: Ana Paneli Görüntüleme
+ view_dashboard_description: Kullanıcıların ana panele ve çeşitli ölçütlere erişmesine izin verir
+ view_devops: Devops
+ view_devops_description: Kullanıcıların Sidekiq ve pgHero panellerine erişmesine izin verir
+ title: Roller
rules:
add_new: Kural ekle
delete: Sil
@@ -701,9 +774,6 @@ tr:
deletion:
desc_html: Herkese hesabını silme izni ver
title: Hesap silmeyi aç
- 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
@@ -716,9 +786,6 @@ tr:
show_known_fediverse_at_about_page:
desc_html: Değiştirildiğinde, bilinen bütün fediverse'lerden gönderileri ön izlemede gösterir. Diğer türlü sadece yerel gönderileri gösterecektir.
title: Zaman çizelgesi ön izlemesinde bilinen fediverse'i göster
- show_staff_badge:
- desc_html: Kullanıcının sayfasında bir personel rozeti göster
- title: Personel rozeti göster
site_description:
desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
Özellikle <a>
ve <em>
olmak suretiyle HTML etiketlerini kullanabilirsiniz.
title: Site açıklaması
@@ -729,8 +796,8 @@ tr:
desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın.
title: Kısa sunucu açıklaması
site_terms:
- desc_html: Kendi gizlilik politikanızı, hizmet şartlarınızı ya da diğer hukuki metinlerinizi yazabilirsiniz. HTML etiketleri kullanabilirsiniz
- title: Özel hizmet şartları
+ desc_html: Kendi gizlilik politikanızı yazabilirsiniz. HTML etiketlerini kullanabilirsiniz
+ title: Özel gizlilik politikası
site_title: Site başlığı
thumbnail:
desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir
@@ -740,8 +807,8 @@ tr:
title: Zaman çizelgesi önizlemesi
title: Site Ayarları
trendable_by_default:
- desc_html: Daha önce izin verilmeyen etiketleri etkiler
- title: Ön inceleme yapmadan etiketlerin trend olmasına izin ver
+ desc_html: Belirli öne çıkan içeriğe yine de açıkça izin verilmeyebilir
+ title: Ön inceleme yapmadan öne çıkmalara izin ver
trends:
desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster
title: Gündem etiketleri
@@ -1124,16 +1191,40 @@ tr:
public: Genel zaman çizelgesi
thread: Sohbetler
edit:
+ add_keyword: Anahtar sözcük ekle
+ keywords: Anahtar Sözcükler
+ statuses: Tekil gönderiler
+ statuses_hint_html: Bu filtre, aşağıdaki anahtar kelimelerle eşleşip eşleşmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Filtredeki gönderileri inceleyin veya kaldırın.
title: Filtreyi düzenle
errors:
+ deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın.
invalid_context: Sıfır ya da geçersiz içerik sağlandı
- invalid_irreversible: Geri dönüşümsüz filtreleme sadece anasayfa ya da bildirim bağlamında çalışır
index:
+ contexts: "%{contexts} içindeki filtreler"
delete: Sil
empty: Hiç filtreniz yok.
+ expires_in: "%{distance} sürede sona eriyor"
+ expires_on: "%{date} tarihinde sona eriyor"
+ keywords:
+ one: "%{count} anahtar sözcük"
+ other: "%{count} anahtar sözcük"
+ statuses:
+ one: "%{count} gönderi"
+ other: "%{count} gönderi"
+ statuses_long:
+ one: "%{count} tekil gönderi gizli"
+ other: "%{count} tekil gönderi gizli"
title: Filtreler
new:
+ save: Yeni filtre kaydet
title: Yeni filtre ekle
+ statuses:
+ back_to_filter: Filtreye dön
+ batch:
+ remove: Filtreden kaldır
+ index:
+ hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz.
+ title: Filtrelenmiş gönderiler
footer:
developers: Geliştiriciler
more: Daha Fazla…
@@ -1141,12 +1232,22 @@ tr:
trending_now: Şu an gündemde
generic:
all: Tümü
+ all_items_on_page_selected_html:
+ one: Bu sayfadaki %{count} öğe seçilmiş.
+ other: Bu sayfadaki tüm %{count} öğe seçilmiş.
+ all_matching_items_selected_html:
+ one: Aramanızla eşleşen %{count} öğe seçilmiş.
+ other: Aramanızla eşleşen tüm %{count} öğe seçilmiş.
changes_saved_msg: Değişiklikler başarıyla kaydedildi!
copy: Kopyala
delete: Sil
+ deselect: Hiçbirini seçme
none: Hiçbiri
order_by: Sıralama ölçütü
save_changes: Değişiklikleri kaydet
+ select_all_matching_items:
+ one: Aramanızla eşleşen %{count} öğeyi seç.
+ other: Aramanızla eşleşen tüm %{count} öğeyi seç.
today: bugün
validation_errors:
one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz
@@ -1251,19 +1352,10 @@ tr:
copy_account_note_text: 'Bu kullanıcı %{acct} adresinden taşındı, işte onlarla ilgili önceki notlarınız:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} bir bildirim gönderdi"
sign_up:
subject: "%{name} kaydoldu"
- digest:
- action: Tüm bildirimleri görüntüle
- body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti
- mention: "%{name} senden bahsetti:"
- new_followers_summary:
- one: Ayrıca, uzaktayken yeni bir takipçi kazandınız! Yaşasın!
- other: Ayrıca, uzaktayken %{count} yeni takipçi kazandınız! İnanılmaz!
- subject:
- one: "Son ziyaretinizden bu yana 1 yeni bildirim 🐘"
- other: "Son ziyaretinizden bu yana %{count} yeni bildirim 🐘"
- title: Senin yokluğunda...
favourite:
body: "%{name} durumunu beğendi:"
subject: "%{name} durumunu beğendi"
@@ -1625,7 +1717,7 @@ tr:
Bu belge CC-BY-SA altında lisanslanmıştır. En son 26 Mayıs 2022 tarihinde güncellenmiştir.
Discourse gizlilik politikasından uyarlanmıştır.
- title: "%{instance} Hizmet Şartları ve Gizlilik Politikası"
+ title: "%{instance} Gizlilik Politikası"
themes:
contrast: Mastodon (Yüksek karşıtlık)
default: Mastodon (Karanlık)
diff --git a/config/locales/tt.yml b/config/locales/tt.yml
index e23533828f..f762424e5b 100644
--- a/config/locales/tt.yml
+++ b/config/locales/tt.yml
@@ -4,7 +4,6 @@ tt:
about_this: Хакында
api: API
contact_unavailable: Юк
- privacy_policy: Хосусыйлык сәясәте
unavailable_content_description:
domain: Сервер
user_count_after:
@@ -14,7 +13,6 @@ tt:
following: Язылгансыз
media: Медиа
roles:
- admin: Админ
bot: Бот
group: Törkem
unfollow: Язылынмау
@@ -41,10 +39,6 @@ tt:
all: Бөтенесе
perform_full_suspension: Искә алмау
reset: Ташлату
- role: Рөхсәтләр
- roles:
- moderator: Модератор
- user: Кулланучы
search: Эзләү
sensitive: Sizmäle
username: Кулланучы исеме
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 2612237b88..6d411bf8d9 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -26,7 +26,7 @@ uk:
learn_more: Дізнатися більше
logged_in_as_html: Зараз ви увійшли як %{username}.
logout_before_registering: Ви вже увійшли.
- privacy_policy: Політика приватності
+ privacy_policy: Політика конфіденційності
rules: Правила сервера
rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:'
see_whats_happening: Погляньте, що відбувається
@@ -39,7 +39,6 @@ uk:
other: статуси
status_count_before: Опубліковано
tagline: Децентралізована соціальна мережа
- terms: Правила використання
unavailable_content: Недоступний вміст
unavailable_content_description:
domain: Сервер
@@ -89,10 +88,8 @@ uk:
posts_tab_heading: Дмухи
posts_with_replies: Дмухи та відповіді
roles:
- admin: Адміністратор
bot: Бот
group: Група
- moderator: Мод
unavailable: Профіль недоступний
unfollow: Відписатися
admin:
@@ -111,12 +108,17 @@ uk:
avatar: Аватар
by_domain: Домен
change_email:
- changed_msg: Адресу електронної пошти облікового запису успішно змінено!
+ changed_msg: Адресу електронної пошти успішно змінено!
current_email: Поточна адреса електронної пошти
label: Змінити адресу електронної пошти
new_email: Нова адреса електронної пошти
submit: Змінити адресу електронної пошти
title: Змінити адресу електронної пошти для %{username}
+ change_role:
+ changed_msg: Роль успішно змінено!
+ label: Змінити роль
+ no_role: Немає ролі
+ title: Змінити роль для %{username}
confirm: Зберегти
confirmed: Збережено
confirming: Зберігається
@@ -160,6 +162,7 @@ uk:
active: Активний
all: Усі
pending: Очікують
+ silenced: Обмежені
suspended: Призупинені
title: Модерація
moderation_notes: Нотатки модераторів
@@ -167,6 +170,7 @@ uk:
most_recent_ip: Останній IP
no_account_selected: Жоден обліковий запис не було змінено, оскільки жоден не було вибрано
no_limits_imposed: Жодних обмежень не накладено
+ no_role_assigned: Роль не призначено
not_subscribed: Не підписані
pending: Відгук в очікуванні
perform_full_suspension: Призупинити
@@ -195,12 +199,7 @@ uk:
reset: Скинути
reset_password: Скинути пароль
resubscribe: Перепідписатися
- role: Дозволи
- roles:
- admin: Адміністратор
- moderator: Модератор
- staff: Персонал
- user: Користувач
+ role: Роль
search: Пошук
search_same_email_domain: Інші користувачі з тим самим поштовим доменом
search_same_ip: Інші користувачі з тим самим IP
@@ -243,17 +242,21 @@ uk:
approve_user: Затвердити користувачів
assigned_to_self_report: Призначити звіт
change_email_user: Змінити електронну пошту для користувача
+ change_role_user: Змінити роль користувача
confirm_user: Підтвердити користувача
create_account_warning: Створити попередження
create_announcement: Створити оголошення
+ create_canonical_email_block: Створити блок електронної пошти
create_custom_emoji: Створити користувацьке емодзі
create_domain_allow: Створити дозвіл на домен
create_domain_block: Створити блокування домену
create_email_domain_block: Створити блокування поштового домену
create_ip_block: Створити правило IP
create_unavailable_domain: Створити недоступний домен
+ create_user_role: Створити роль
demote_user: Понизити користувача
destroy_announcement: Видалити оголошення
+ destroy_canonical_email_block: Видалити блок електронної пошти
destroy_custom_emoji: Видалити користувацьке емодзі
destroy_domain_allow: Видалити дозвіл на домен
destroy_domain_block: Видалити блокування домену
@@ -262,6 +265,7 @@ uk:
destroy_ip_block: Видалити правило IP
destroy_status: Видалити пост
destroy_unavailable_domain: Видалити недоступний домен
+ destroy_user_role: Знищити роль
disable_2fa_user: Вимкнути 2FA
disable_custom_emoji: Вимкнути користувацькі емодзі
disable_sign_in_token_auth_user: Вимкнути автентифікацію за допомогою е-пошти для користувача
@@ -288,24 +292,30 @@ uk:
update_announcement: Оновити оголошення
update_custom_emoji: Оновити користувацькі емодзі
update_domain_block: Оновити блокування домену
+ update_ip_block: Оновити правило IP
update_status: Оновити статус
+ update_user_role: Оновити роль
actions:
approve_appeal_html: "%{name} затвердили звернення на оскарження рішення від %{target}"
approve_user_html: "%{name} схвалює реєстрацію від %{target}"
assigned_to_self_report_html: "%{name} створює скаргу %{target} на себе"
change_email_user_html: "%{name} змінює поштову адресу користувача %{target}"
+ change_role_user_html: "%{name} змінює роль %{target}"
confirm_user_html: "%{name} підтверджує стан поштової адреси користувача %{target}"
create_account_warning_html: "%{name} надсилає попередження до %{target}"
create_announcement_html: "%{name} створює нове оголошення %{target}"
+ create_canonical_email_block_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}"
+ create_user_role_html: "%{name} створює роль %{target}"
demote_user_html: "%{name} понижує користувача %{target}"
destroy_announcement_html: "%{name} видаляє оголошення %{target}"
- destroy_custom_emoji_html: "%{name} знищує емодзі %{target}"
+ destroy_canonical_email_block_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}"
@@ -313,6 +323,7 @@ uk:
destroy_ip_block_html: "%{name} видаляє правило для IP %{target}"
destroy_status_html: "%{name} видаляє статус %{target}"
destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}"
+ destroy_user_role_html: "%{name} видаляє роль %{target}"
disable_2fa_user_html: "%{name} вимикає двоетапну перевірку для користувача %{target}"
disable_custom_emoji_html: "%{name} вимикає емодзі %{target}"
disable_sign_in_token_auth_user_html: "%{name} вимикає автентифікацію через е-пошту для %{target}"
@@ -339,8 +350,9 @@ uk:
update_announcement_html: "%{name} оновлює оголошення %{target}"
update_custom_emoji_html: "%{name} оновлює емодзі %{target}"
update_domain_block_html: "%{name} оновлює блокування домену для %{target}"
+ update_ip_block_html: "%{name} змінює правило для IP %{target}"
update_status_html: "%{name} змінює статус користувача %{target}"
- deleted_status: "(видалений статус)"
+ update_user_role_html: "%{name} змінює роль %{target}"
empty: Не знайдено жодного журналу.
filter_by_action: Фільтрувати за дією
filter_by_user: Фільтрувати за користувачем
@@ -485,6 +497,7 @@ uk:
resolve: Розв'язати домен
title: Нове блокування поштового домену
no_email_domain_block_selected: Жодні налаштування блокування доменів електронної пошти не було змінено, оскільки жоден з них не було обрано
+ resolved_dns_records_hint_html: Ім'я домену резолвиться в наступні домени MX, які в кінцевому рахунку відповідають за прийняття електронної пошти. Блокування домену MX заблокує реєстрацію з будь-якої e-mail адреси, яка використовує однаковий домен MX, навіть якщо доменне ім'я буде інакше. Будьте обережні, щоб не блокувати великих поштових провайдерів.
resolved_through_html: Розв'язано через %{domain}
title: Чорний список поштових доменів
follow_recommendations:
@@ -513,6 +526,7 @@ uk:
confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену?
content_policies:
comment: Внутрішня примітка
+ description_html: Ви можете визначити правила вмісту що буде застосовано до всіх облікових записів із цього домену та будь-якого з його піддоменів.
policies:
reject_media: Відхилити медіа
reject_reports: Відхилити скарги
@@ -617,9 +631,13 @@ uk:
action_log: Журнал подій
action_taken_by: Дія виконана
actions:
+ delete_description_html: Дописи, на які скаржилися будуть видалені, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису.
+ mark_as_sensitive_description_html: Медіа у дописах, на які скаржилися будуть позначені делікатними, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису.
other_description_html: Більше опцій керування поведінкою облікового запису і налаштування комунікації з обліковим записом, на який поскаржилися.
+ resolve_description_html: Не буде застосовано жодних дій проти облікового запису, на який скаржилися, не буде записано попередження, а скаргу буде закрито.
silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати.
suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою.
+ actions_description_html: Визначте, які дії слід вжити для розв'язання цієї скарги. Якщо ви оберете каральні дії проти зареєстрованого облікового запису, про них буде надіслано сповіщення електронним листом, крім випадків, коли вибрано категорію Спам.
add_to_report: Додати ще подробиць до скарги
are_you_sure: Ви впевнені?
assign_to_self: Призначити мені
@@ -664,6 +682,71 @@ uk:
unresolved: Невирішені
updated_at: Оновлені
view_profile: Переглянути профіль
+ roles:
+ add_new: Додати роль
+ assigned_users:
+ few: "%{count} користувачі"
+ many: "%{count} користувачів"
+ one: "%{count} користувач"
+ other: "%{count} користувача"
+ categories:
+ administration: Адміністрування
+ devops: DevOps
+ invites: Запрошення
+ moderation: Модерація
+ special: Спеціальні
+ delete: Видалити
+ description_html: За допомогою ролі користувача, ви можете налаштувати, до яких функцій і місць можуть доступатися ваші користувачі Mastodon.
+ edit: Змінити роль «%{name}»
+ everyone: Типові дозволи
+ everyone_full_description_html: Це базова роль, яка впливає на всіх користувачів, навіть ті, яким не призначені ролі. Усі інші ролі успадковують її дозволи.
+ permissions_count:
+ few: "%{count} дозволи"
+ many: "%{count} дозволів"
+ one: "%{count} дозвіл"
+ other: "%{count} дозволи"
+ privileges:
+ administrator: Адміністратор
+ administrator_description: Користувачі з цим дозволом обходять усі дозволи
+ delete_user_data: Видаляти дані користувача
+ delete_user_data_description: Дозволяє користувачам видаляти дані інших користувачів без затримок
+ invite_users: Запрошувати користувачів
+ invite_users_description: Дозволяє користувачам запрошувати нових людей на сервер
+ manage_announcements: Керувати оголошеннями
+ manage_announcements_description: Дозволяє користувачам керувати оголошеннями на сервері
+ manage_appeals: Керувати оскарженнями
+ manage_appeals_description: Дозволяє користувачам розглядати оскарження дій модерації
+ manage_blocks: Керувати блокуваннями
+ manage_blocks_description: Дозволяє користувачам блокувати постачальників е-пошти та IP-адреси
+ manage_custom_emojis: Керувати користувацькими емоджі
+ manage_custom_emojis_description: Дозволяє користувачам керувати користувацькими емоджі на сервері
+ manage_federation: Керувати федерацією
+ manage_federation_description: Дозволяє користувачам блокувати або дозволяти федерацію з іншими доменами й керувати можливостями доставлення
+ manage_invites: Керувати запрошеннями
+ manage_invites_description: Дозволяє користувачам переглядати й деактивувати запрошувальні посилання
+ manage_reports: Керувати скаргами
+ manage_reports_description: Дозволяє користувачам переглядати скарги та виконувати відповідні дії модерації
+ manage_roles: Керувати ролями
+ manage_roles_description: Дозволяє користувачам керувати та призначати ролі, нижчі за свій рівень
+ manage_rules: Керувати правилами
+ manage_rules_description: Дозволяє користувачам змінювати правила сервера
+ manage_settings: Керування налаштуваннями
+ manage_settings_description: Дозволяє користувачам змінювати налаштування сайту
+ manage_taxonomies: Керувати таксономіями
+ manage_taxonomies_description: Дозволяє користувачам переглядати актуальні налаштування вмісту й оновити хештеґ
+ manage_user_access: Керувати доступом користувачів
+ manage_user_access_description: Дозволяє користувачам вимкнути двоетапну перевірку інших користувачів, змінити їхню адресу електронної пошти та відновити пароль
+ manage_users: Керувати користувачами
+ manage_users_description: Дозволяє користувачам переглядати подробиці інших користувачів і виконувати їхню модерацію
+ manage_webhooks: Керувати Webhooks
+ manage_webhooks_description: Дозволяє користувачам налаштовувати вебхуки для адміністративних подій
+ view_audit_log: Переглядати журнал перевірки
+ view_audit_log_description: Дозволяє користувачам бачити історію адміністративних дій на сервері
+ view_dashboard: Переглядати панель керування
+ view_dashboard_description: Дозволяє користувачам доступ до панелі керування та різних метрик
+ view_devops: DevOps
+ view_devops_description: Дозволяє користувачам доступ до Sidekiq і панелі pgHero
+ title: Ролі
rules:
add_new: Додати правило
delete: Видалити
@@ -716,9 +799,6 @@ uk:
deletion:
desc_html: Дозволити будь-кому видаляти свій обліковий запис
title: Видалення відкритого облікового запису
- min_invite_role:
- disabled: Ніхто
- title: Дозволити запрошення від
require_invite_text:
desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим
title: Вимагати повідомлення причини приєднання від нових користувачів
@@ -731,9 +811,6 @@ uk:
show_known_fediverse_at_about_page:
desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані лише локальні дмухи.
title: Показувати доступний федисвіт у передпоказі стрічки
- show_staff_badge:
- desc_html: Відмічати персонал на сторінці користувачів
- title: Показувати персонал
site_description:
desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
Можна використовувати HTML-теги, особливо <a>
і <em>
.
title: Опис сервера
@@ -744,10 +821,8 @@ uk:
desc_html: Відображається в бічній панелі та мета-тегах. Опишіть, що таке Mastodon і що робить цей сервер особливим, в одному абзаці.
title: Короткий опис сервера
site_terms:
- desc_html: |-
- Ви можене написати власну політику приватності, умови використанні та інші законні штуки
- Можете використовувати HTML теги
- title: Особливі умови використання
+ desc_html: Ви можете писати власну політику конфіденційності самостійно. Ви можете використовувати HTML-теги
+ title: Особлива політика конфіденційності
site_title: Назва сайту
thumbnail:
desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів
@@ -757,8 +832,8 @@ uk:
title: Передпоказ фіду
title: Налаштування сайту
trendable_by_default:
- desc_html: Впливає на хештеги, які не були заборонені раніше
- title: Дозволити хештегам потрапляти в тренди без попереднього перегляду
+ desc_html: Конкретні популярні матеріали все одно можуть бути явно відхилені
+ title: Дозволити популярне без попереднього огляду
trends:
desc_html: Відображати розглянуті хештеґи, які популярні зараз
title: Популярні хештеги
@@ -812,6 +887,7 @@ uk:
links:
allow: Дозволити посилання
allow_provider: Дозволити публікатора
+ description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання.
disallow: Заборонити посилання
disallow_provider: Заборонити публікатора
shared_by_over_week:
@@ -825,14 +901,22 @@ uk:
pending_review: Очікує перевірки
preview_card_providers:
allowed: Посилання цього публікатора можуть бути популярними
+ description_html: Це домени, з яких часто передаються посилання на вашому сервері. Посилання не будуть публічно приходити, якщо домен посилання не буде затверджено. Ваше затвердження (або відхилення) поширюється на піддомени.
rejected: Посилання цього публікатора можуть не будуть популярними
title: Публікатори
rejected: Відхилено
statuses:
allow: Дозволити оприлюднення
allow_account: Дозволити автора
+ description_html: Це дописи, про які ваш сервер знає як такі, що в даний час є спільні і навіть ті, які зараз є дуже популярними. Це може допомогти вашим новим та старим користувачам, щоб знайти більше людей для слідування. Жоден запис не відображається публічно, поки ви не затверджуєте автора, і автор дозволяє іншим користувачам підписатися на це. Ви також можете дозволити або відхилити окремі повідомлення.
disallow: Заборонити допис
disallow_account: Заборонити автора
+ not_discoverable: Автор не вирішив бути видимим
+ shared_by:
+ few: Поділитись або додати в улюблені %{friendly_count} рази
+ many: Поділитись або додати в улюблені %{friendly_count} разів
+ one: Поділитись або додати в улюблені один раз
+ other: Поділитись або додати в улюблені %{friendly_count} рази
title: Популярні дописи
tags:
current_score: Поточний результат %{score}
@@ -842,6 +926,7 @@ uk:
tag_servers_dimension: Найуживаніші сервери
tag_servers_measure: різні сервери
tag_uses_measure: всього використань
+ description_html: Ці хештеґи, які бачить ваш сервер, в цей час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди наразі найбільше говорять. Жодні хештеґи публічно не показуються, доки ви їх не затвердите.
listable: Може бути запропоновано
not_listable: Не буде запропоновано
not_trendable: Не показуватиметься серед популярних
@@ -864,7 +949,7 @@ uk:
delete: Видалити
edit_preset: Редагувати шаблон попередження
empty: Ви ще не визначили жодних попереджень.
- title: Управління шаблонами попереджень
+ title: Керування шаблонами попереджень
webhooks:
add_new: Додати кінцеву точку
delete: Видалити
@@ -908,14 +993,18 @@ uk:
body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target}
subject: Нова скарга до %{instance} (#%{id})
new_trends:
+ body: 'Ці елементи потребують розгляду перед оприлюдненням:'
new_trending_links:
no_approved_links: На цей час немає схвалених популярних посилань.
+ requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного посилання, яке зараз на «%{lowest_link_title}» з рейтингом %{lowest_link_score}.'
title: Популярні посилання
new_trending_statuses:
no_approved_statuses: На цей час немає схвалених популярних дописів.
+ requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного допису, який зараз на %{lowest_status_url} з рейтингом %{lowest_status_score}.'
title: Популярні дописи
new_trending_tags:
no_approved_tags: На цей час немає схвалених популярних хештегів.
+ requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного хештеґу, який зараз на #%{lowest_tag_name} з рейтингом %{lowest_tag_score}.'
title: Популярні хештеги
subject: Нове популярне до розгляду на %{instance}
aliases:
@@ -1070,6 +1159,7 @@ uk:
approve_appeal: Схвалити апеляцію
associated_report: Пов'язана скарга
created_at: Застарілі
+ description_html: Це дії, виконані проти вашого облікового запису та попереджень, які були відправлені вам персоналом %{instance}.
recipient: Адресант
reject_appeal: Відхилити апеляцію
status: 'Допис #%{id}'
@@ -1134,16 +1224,46 @@ uk:
public: Глобальні стрічки
thread: Повідомлення
edit:
+ add_keyword: Додати ключове слово
+ keywords: Ключові слова
+ statuses: Окремі дописи
+ statuses_hint_html: Цей фільтр застосовується для вибору окремих дописів, незалежно від того, чи збігаються вони з ключовими словами нижче. Перегляд чи вилучення дописів з фільтра.
title: Редагувати фільтр
errors:
+ deprecated_api_multiple_keywords: Ці параметри не можна змінити з цього застосунку, тому що вони застосовуються до більш ніж одного ключового слова. Використовуйте новішу версію застосунку або вебінтерфейс.
invalid_context: Контекст неправильний або не був наданий
- invalid_irreversible: Незворотне фільтрування працює тільки в контексті свого фіду або сповіщень
index:
+ contexts: Фільтри в %{contexts}
delete: Видалити
empty: У вас немає фільтрів.
+ expires_in: Закінчується %{distance}
+ expires_on: Закінчується %{date}
+ keywords:
+ few: "%{count} ключові слова"
+ many: "%{count} ключових слів"
+ one: "%{count} ключове слово"
+ other: "%{count} ключових слів"
+ statuses:
+ few: "%{count} дописи"
+ many: "%{count} дописів"
+ one: "%{count} допис"
+ other: "%{count} дописа"
+ statuses_long:
+ few: Сховано %{count} окремі дописи
+ many: Сховано %{count} окремих дописів
+ one: Сховано %{count} окремий допис
+ other: Сховано %{count} окремі дописи
title: Фільтри
new:
+ save: Зберегти новий фільтр
title: Додати фільтр
+ statuses:
+ back_to_filter: Назад до фільтру
+ batch:
+ remove: Вилучити з фільтра
+ index:
+ hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу.
+ title: Відфільтровані дописи
footer:
developers: Розробникам
more: Більше…
@@ -1151,12 +1271,28 @@ uk:
trending_now: Актуальні
generic:
all: Усі
+ all_items_on_page_selected_html:
+ few: Усі %{count} елементи на цій сторінці вибрано.
+ many: Усі %{count} елементів на цій сторінці вибрано.
+ one: "%{count} елемент на цій сторінці вибрано."
+ other: "%{count} елементи на цій сторінці вибрано."
+ all_matching_items_selected_html:
+ few: Усі %{count} елементи, що збігаються з вашим пошуком вибрано.
+ many: Усі %{count} елементів, що збігаються з вашим пошуком вибрано.
+ one: "%{count} елемент, що збігається з вашим пошуком вибрано."
+ other: Усі %{count} елементи, що збігаються з вашим пошуком вибрано.
changes_saved_msg: Зміни успішно збережені!
copy: Копіювати
delete: Видалити
+ deselect: Скасувати вибір
none: Немає
order_by: Сортувати за
save_changes: Зберегти зміни
+ select_all_matching_items:
+ few: Вибрати всі %{count} елементи, що збігаються з вашим пошуком.
+ many: Вибрати всі %{count} елементів, що збігаються з вашим пошуком.
+ one: Вибрати %{count} елемент, що збігається з вашим пошуком.
+ other: Вибрати всі %{count} елементи, що збігаються з вашим пошуком.
today: сьогодні
validation_errors:
few: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки
@@ -1265,26 +1401,13 @@ uk:
copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} подає скаргу"
sign_up:
subject: "%{name} приєднується"
- digest:
- action: Показати усі сповіщення
- body: Коротко про пропущене вами з Вашого останнього входу %{since}
- mention: "%{name} згадав(-ла) Вас в:"
- new_followers_summary:
- few: У Вас з'явилось %{count} нових підписники! Чудово!
- many: У Вас з'явилось %{count} нових підписників! Чудово!
- one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура!
- other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово!
- subject:
- few: "%{count} нові сповіщення з вашого останнього відвідування 🐘"
- many: "%{count} нових сповіщень з вашого останнього відвідування 🐘"
- one: "1 нове сповіщення з вашого останнього відвідування 🐘"
- other: "%{count} нових сповіщень з вашого останнього відвідування 🐘"
- title: Поки ви були відсутні...
favourite:
body: 'Ваш статус подобається %{name}:'
- subject: Користувачу %{name} сподобався ваш статус
+ subject: Ваш статус сподобався %{name}
title: Нове вподобання
follow:
body: "%{name} тепер підписаний(-а) на вас!"
@@ -1575,7 +1698,7 @@ uk:
tags:
does_not_match_previous_name: не збігається з попереднім ім'ям
terms:
- title: Умови використання та Політика приватності %{instance}
+ title: "%{instance} Політика конфіденційності"
themes:
contrast: Висока контрасність
default: Mastodon
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 72d06ab556..0343ef867d 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -5,7 +5,7 @@ vi:
about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!'
about_this: Giới thiệu
active_count_after: hoạt động
- active_footnote: Người dùng hoạt động hàng tháng (MAU)
+ active_footnote: Người dùng hàng tháng (MAU)
administered_by: 'Quản trị viên:'
api: API
apps: Apps
@@ -36,7 +36,6 @@ vi:
other: tút
status_count_before: Nơi lưu giữ
tagline: Mạng xã hội liên hợp
- terms: Điều khoản dịch vụ
unavailable_content: Giới hạn chung
unavailable_content_description:
domain: Máy chủ
@@ -77,10 +76,8 @@ vi:
posts_tab_heading: Tút
posts_with_replies: Trả lời
roles:
- admin: Quản trị viên
bot: Tài khoản Bot
group: Nhóm
- moderator: Kiểm duyệt viên
unavailable: Tài khoản bị đình chỉ
unfollow: Ngưng theo dõi
admin:
@@ -88,9 +85,9 @@ vi:
action: Thực hiện hành động
title: Áp đặt kiểm duyệt với %{acct}
account_moderation_notes:
- create: Thêm ghi chú
- created_msg: Thêm ghi chú kiểm duyệt thành công!
- destroyed_msg: Đã xóa ghi chú kiểm duyệt!
+ create: Thêm lưu ý
+ created_msg: Thêm lưu ý kiểm duyệt thành công!
+ destroyed_msg: Đã xóa lưu ý kiểm duyệt!
accounts:
add_email_domain_block: Chặn tên miền email
approve: Phê duyệt
@@ -99,12 +96,17 @@ vi:
avatar: Ảnh đại diện
by_domain: Máy chủ
change_email:
- changed_msg: Email tài khoản đã thay đổi thành công!
+ changed_msg: Email đã thay đổi thành công!
current_email: Email hiện tại
label: Thay đổi email
new_email: Email mới
submit: Thay đổi email
title: Thay đổi email cho %{username}
+ change_role:
+ changed_msg: Vai trò đã thay đổi thành công!
+ label: Đổi vai trò
+ no_role: Chưa có vai trò
+ title: Thay đổi vai trò %{username}
confirm: Phê duyệt
confirmed: Đã xác minh
confirming: Chờ xác nhận
@@ -116,7 +118,7 @@ vi:
disable: Khóa
disable_sign_in_token_auth: Vô hiệu hóa xác minh bằng email
disable_two_factor_authentication: Vô hiệu hóa xác minh 2 bước
- disabled: Đã vô hiệu hóa
+ disabled: Tạm khóa
display_name: Tên hiển thị
domain: Máy chủ
edit: Chỉnh sửa
@@ -148,6 +150,7 @@ vi:
active: Hoạt động
all: Toàn bộ
pending: Chờ xử lý
+ silenced: Hạn chế
suspended: Vô hiệu hóa
title: Trạng thái
moderation_notes: Nhật ký kiểm duyệt
@@ -155,6 +158,7 @@ vi:
most_recent_ip: IP gần nhất
no_account_selected: Không có tài khoản nào thay đổi vì không có tài khoản nào được chọn
no_limits_imposed: Bình thường
+ no_role_assigned: Chưa có vai trò
not_subscribed: Chưa đăng ký
pending: Chờ duyệt
perform_full_suspension: Vô hiệu hóa
@@ -181,11 +185,6 @@ vi:
reset_password: Đặt lại mật khẩu
resubscribe: Đăng ký lại
role: Vai trò
- roles:
- admin: Quản trị viên
- moderator: Kiểm duyệt viên
- staff: Đội ngũ
- user: Người dùng
search: Tìm kiếm
search_same_email_domain: Tra cứu email
search_same_ip: Tra cứu IP
@@ -198,7 +197,7 @@ vi:
show:
created_reports: Gửi báo cáo
targeted_reports: Bị báo cáo
- silence: Ẩn
+ silence: Hạn chế
silenced: Hạn chế
statuses: Tút
strikes: Lịch sử kiểm duyệt
@@ -228,17 +227,21 @@ vi:
approve_user: Chấp nhận người dùng
assigned_to_self_report: Tự xử lý báo cáo
change_email_user: Đổi email người dùng
+ change_role_user: Thay đổi vai trò
confirm_user: Xác minh người dùng
- create_account_warning: Nhắc nhở người dùng
+ create_account_warning: Cảnh cáo người dùng
create_announcement: Tạo thông báo mới
+ create_canonical_email_block: Tạo chặn tên miền email mới
create_custom_emoji: Tạo emoji
create_domain_allow: Cho phép máy chủ
create_domain_block: Chặn máy chủ
create_email_domain_block: Chặn tên miền email
create_ip_block: Tạo chặn IP mới
create_unavailable_domain: Máy chủ không khả dụng
+ create_user_role: Tạo vai trò
demote_user: Xóa vai trò
destroy_announcement: Xóa thông báo
+ destroy_canonical_email_block: Bỏ chặn tên miền email
destroy_custom_emoji: Xóa emoji
destroy_domain_allow: Bỏ cho phép máy chủ
destroy_domain_block: Bỏ chặn máy chủ
@@ -247,6 +250,7 @@ vi:
destroy_ip_block: Xóa IP đã chặn
destroy_status: Xóa tút
destroy_unavailable_domain: Xóa máy chủ không khả dụng
+ destroy_user_role: Xóa vai trò
disable_2fa_user: Vô hiệu hóa 2FA
disable_custom_emoji: Vô hiệu hóa emoji
disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email cho người dùng
@@ -273,23 +277,29 @@ vi:
update_announcement: Cập nhật thông báo
update_custom_emoji: Cập nhật emoji
update_domain_block: Cập nhật máy chủ chặn
+ update_ip_block: Cập nhật chặn IP
update_status: Cập nhật tút
+ update_user_role: Cập nhật vai trò
actions:
approve_appeal_html: "%{name} đã chấp nhận kháng cáo của %{target}"
approve_user_html: "%{name} đã chấp nhận đăng ký từ %{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 của %{target}"
+ change_role_user_html: "%{name} đã thay đổi vai trò %{target}"
confirm_user_html: "%{name} đã xác minh địa chỉ email của %{target}"
- create_account_warning_html: "%{name} đã nhắc nhở %{target}"
+ create_account_warning_html: "%{name} đã cảnh cáo %{target}"
create_announcement_html: "%{name} tạo thông báo mới %{target}"
+ create_canonical_email_block_html: "%{name} chặn email với hàm băm %{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}"
+ create_user_role_html: "%{name} đã tạo vai trò %{target}"
demote_user_html: "%{name} đã xóa vai trò của %{target}"
destroy_announcement_html: "%{name} xóa thông báo %{target}"
+ destroy_canonical_email_block_html: "%{name} bỏ chặn email với hàm băm %{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 máy chủ %{target}"
@@ -298,6 +308,7 @@ vi:
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}"
+ destroy_user_role_html: "%{name} đã xóa vai trò %{target}"
disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}"
disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}"
disable_sign_in_token_auth_user_html: "%{name} vô hiệu hóa xác minh email của %{target}"
@@ -324,8 +335,9 @@ vi:
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_ip_block_html: "%{name} cập nhật chặn IP %{target}"
update_status_html: "%{name} cập nhật tút của %{target}"
- deleted_status: "(tút đã xóa)"
+ update_user_role_html: "%{name} đã thay đổi vai trò %{target}"
empty: Không tìm thấy bản ghi.
filter_by_action: Theo hành động
filter_by_user: Theo người
@@ -572,8 +584,8 @@ vi:
status: Trạng thái
title: Mạng liên hợp
report_notes:
- created_msg: Đã thêm ghi chú kiểm duyệt!
- destroyed_msg: Đã xóa ghi chú kiểm duyệt!
+ created_msg: Đã thêm lưu ý kiểm duyệt!
+ destroyed_msg: Đã xóa lưu ý kiểm duyệt!
today_at: Hôm nay lúc %{time}
reports:
account:
@@ -582,13 +594,13 @@ vi:
action_log: Nhật ký kiểm duyệt
action_taken_by: Quyết định bởi
actions:
- delete_description_html: Những tút bị báo cáo sẽ được xóa và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn lưu ý về tài khoản này trong tương lai.
- mark_as_sensitive_description_html: Media trong các tút bị báo cáo sẽ được đánh dấu là nhạy cảm và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn nắm bắt nhanh những vi phạm của cùng một tài khoản.
- other_description_html: Những tùy chọn để kiểm soát tài khoản và giao tiếp với tài khoản bị báo cáo.
- resolve_description_html: Không có hành động nào áp dụng đối với tài khoản bị báo cáo, không có cảnh cáo, và báo cáo sẽ được đóng.
- silence_description_html: Trang hồ sơ sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau.
- suspend_description_html: Trang hồ sơ và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày.
- actions_description_html: Hướng xử lý báo cáo này. Nếu áp đặt trừng phạt, một email thông báo sẽ được gửi cho họ, ngoại trừ Spam.
+ delete_description_html: Xóa các tút và ghi lại 1 lần cảnh cáo.
+ mark_as_sensitive_description_html: Đánh dấu nhạy cảm media trong các tút và ghi lại 1 lần cảnh cáo.
+ other_description_html: Tùy chọn cách kiểm soát và giao tiếp với tài khoản bị báo cáo.
+ resolve_description_html: Không áp dụng trừng phạt nào và đóng báo cáo.
+ silence_description_html: Chỉ hiển thị trang với những người đã theo dõi hoặc tìm kiếm thủ công.
+ suspend_description_html: Đóng băng hồ sơ và chặn truy cập tất cả các nội dung cho đến khi chúng bị xóa hoàn toàn. Đảo ngược trong vòng 30 ngày.
+ actions_description_html: Nếu áp đặt trừng phạt, một email thông báo sẽ được gửi cho người này, ngoại trừ Spam.
add_to_report: Bổ sung báo cáo
are_you_sure: Bạn có chắc không?
assign_to_self: Giao cho tôi
@@ -598,32 +610,32 @@ vi:
category_description_html: Lý do tài khoản hoặc nội dung này bị báo cáo sẽ được trích dẫn khi giao tiếp với họ
comment:
none: Không có mô tả
- comment_description_html: 'Để cung cấp thêm thông tin, %{name} cho biết:'
+ comment_description_html: "%{name} cho biết thêm:"
created_at: Báo cáo lúc
delete_and_resolve: Xóa tút
forwarded: Chuyển tiếp
forwarded_to: Chuyển tiếp tới %{domain}
- mark_as_resolved: Đã xử lý xong!
- mark_as_sensitive: Đánh dấu là nhạy cảm
+ mark_as_resolved: Xử lý xong
+ mark_as_sensitive: Đánh dấu nhạy cảm
mark_as_unresolved: Mở lại
no_one_assigned: Chưa có
notes:
- create: Ghi chú
+ create: Lưu ý
create_and_resolve: Xử lý
- create_and_unresolve: Mở lại kèm ghi chú mới
+ create_and_unresolve: Mở lại kèm lưu ý 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...
- title: Ghi chú
- notes_description_html: Xem và để lại ghi chú cho các kiểm duyệt viên khác
+ title: Lưu ý
+ notes_description_html: Xem và để lại lưu ý cho các kiểm duyệt viên khác
quick_actions_description_html: 'Kiểm duyệt nhanh hoặc kéo xuống để xem nội dung bị báo cáo:'
remote_user_placeholder: người dùng ở %{instance}
reopen: Mở lại báo cáo
report: 'Báo cáo #%{id}'
reported_account: Tài khoản bị báo cáo
reported_by: Báo cáo bởi
- resolved: Đã xử lý xong
+ resolved: Đã xong
resolved_msg: Đã xử lý báo cáo xong!
- skip_to_actions: Kiểm duyệt ngay
+ skip_to_actions: Kiểm duyệt
status: Trạng thái
statuses: Nội dung bị báo cáo
statuses_description_html: Lý do tài khoản hoặc nội dung này bị báo cáo sẽ được trích dẫn khi giao tiếp với họ
@@ -632,7 +644,66 @@ vi:
unassign: Bỏ qua
unresolved: Chờ xử lý
updated_at: Cập nhật lúc
- view_profile: Xem trang hồ sơ
+ view_profile: Xem trang
+ roles:
+ add_new: Thêm vai trò
+ assigned_users:
+ other: "%{count} người"
+ categories:
+ administration: Quản trị viên
+ devops: Nhà phát triển
+ invites: Lời mời
+ moderation: Kiểm duyệt
+ special: Đặc biệt
+ delete: Xóa
+ description_html: Thông qua vai trò người dùng, bạn có thể tùy chỉnh những tính năng và vị trí của Mastodon mà người dùng có thể truy cập.
+ edit: Sửa vai trò '%{name}'
+ everyone: Quyền hạn mặc định
+ everyone_full_description_html: Đây vai trò cơ bản ảnh hưởng tới mọi người dùng khác, kể cả những người không có vai trò được chỉ định. Tất cả các vai trò khác đều kế thừa quyền từ vai trò đó.
+ permissions_count:
+ other: "%{count} quyền hạn"
+ privileges:
+ administrator: Quản trị viên
+ administrator_description: Người dùng này có thể truy cập mọi quyền hạn
+ delete_user_data: Xóa dữ liệu người dùng
+ delete_user_data_description: Cho phép xóa dữ liệu của người dùng khác lập tức
+ invite_users: Mời người dùng
+ invite_users_description: Cho phép mời những người mới vào máy chủ
+ manage_announcements: Quản lý thông báo
+ manage_announcements_description: Cho phép quản lý thông báo trên máy chủ
+ manage_appeals: Quản lý kháng cáo
+ manage_appeals_description: Cho phép xem xét kháng cáo đối với các hành động kiểm duyệt
+ manage_blocks: Quản lý chặn
+ manage_blocks_description: Cho phép chặn các nhà cung cấp e-mail và địa chỉ IP
+ manage_custom_emojis: Quản lý emoji
+ manage_custom_emojis_description: Cho phép quản lý các emoji tùy chỉnh trên máy chủ
+ manage_federation: Quản lý liên hợp
+ manage_federation_description: Cho phép chặn hoặc liên hợp với các máy chủ khác và kiểm soát khả năng phân phối
+ manage_invites: Quản lý lời mời
+ manage_invites_description: Cho phép mở và đóng các lời mời đăng ký
+ manage_reports: Quản lý báo cáo
+ manage_reports_description: Cho phép xem xét các báo cáo và thực hiện hành động kiểm duyệt đối với chúng
+ manage_roles: Quản lý vai trò
+ manage_roles_description: Cho phép quản lý và chỉ định các vai trò nhỏ hơn họ
+ manage_rules: Quản lý quy tắc máy chủ
+ manage_rules_description: Cho phép thay đổi quy tắc máy chủ
+ manage_settings: Quản lý thiết lập
+ manage_settings_description: Cho phép thay đổi thiết lập máy chủ
+ manage_taxonomies: Quản lý phân loại
+ manage_taxonomies_description: Cho phép đánh giá nội dung xu hướng và cập nhật cài đặt hashtag
+ manage_user_access: Quản lý người dùng truy cập
+ manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người dùng khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ
+ manage_users: Quản lý người dùng
+ manage_users_description: Cho phép xem thông tin chi tiết của người dùng khác và thực hiện các hành động kiểm duyệt đối với họ
+ manage_webhooks: Quản lý Webhook
+ manage_webhooks_description: Cho phép thiết lập webhook cho các sự kiện quản trị
+ view_audit_log: Xem nhật ký
+ view_audit_log_description: Cho phép xem lịch sử của các hành động quản trị trên máy chủ
+ view_dashboard: Xem quản trị
+ view_dashboard_description: Cho phép truy cập trang tổng quan và các chỉ số khác
+ view_devops: Nhà phát triển
+ view_devops_description: Cho phép truy cập trang tổng quan Sidekiq và pgHero
+ title: Danh sách vai trò
rules:
add_new: Thêm quy tắc
delete: Xóa bỏ
@@ -685,9 +756,6 @@ vi:
deletion:
desc_html: Cho phép mọi người xóa tài khoản của họ
title: Xóa tài khoản
- min_invite_role:
- disabled: Không một ai
- title: Cho phép lời mời bằng cách
require_invite_text:
desc_html: Khi chọn phê duyệt người dùng thủ công, hiện “Tại sao bạn muốn đăng ký?” thay cho tùy chọn nhập
title: Người đăng ký mới phải nhập mã mời tham gia
@@ -700,9 +768,6 @@ vi:
show_known_fediverse_at_about_page:
desc_html: Nếu tắt, bảng tin sẽ chỉ hiển thị nội dung do người dùng của máy chủ này tạo ra
title: Bao gồm nội dung từ mạng liên hợp trên bảng tin không được cho phép
- show_staff_badge:
- desc_html: Hiện huy hiệu đội ngũ trên trang người dùng
- title: Hiện huy hiệu đội ngũ
site_description:
desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a>
và <em>
.
title: Mô tả máy chủ
@@ -713,8 +778,8 @@ vi:
desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất.
title: Mô tả máy chủ ngắn
site_terms:
- 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
+ desc_html: Bạn có thể tự soạn chính sách bảo mật của riêng bạn. Sử dụng HTML
+ title: Sửa chính sách bảo mật
site_title: Tên máy chủ
thumbnail:
desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px
@@ -724,8 +789,8 @@ vi:
title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép
title: Cài đặt trang web
trendable_by_default:
- desc_html: Ảnh hưởng đến các hashtag chưa được cho phép trước đây
- title: Cho phép hashtags theo xu hướng mà không cần xem xét trước
+ desc_html: Nội dung xu hướng cụ thể vẫn có thể bị cấm một cách rõ ràng
+ title: Cho phép xu hướng mà không cần xem xét trước
trends:
desc_html: Hiển thị công khai các hashtag được xem xét trước đây hiện đang là xu hướng
title: Hashtag xu hướng
@@ -831,8 +896,8 @@ vi:
add_new: Thêm mới
delete: Xóa bỏ
edit_preset: Sửa mẫu có sẵn
- empty: Bạn chưa thêm mẫu nhắc nhở nào cả.
- title: Quản lý mẫu nhắc nhở
+ empty: Bạn chưa thêm mẫu cảnh cáo nào cả.
+ title: Quản lý mẫu cảnh cáo
webhooks:
add_new: Thêm endpoint
delete: Xóa bỏ
@@ -862,7 +927,7 @@ vi:
sensitive: đánh dấu tài khoản của họ là nhạy cảm
silence: hạn chế tài khoản của họ
suspend: vô hiệu hóa tài khoản của họ
- body: "%{target} đã khiếu nại quyết định kiểm duyệt từ %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:"
+ body: "%{target} đã khiếu nại quyết định kiểm duyệt bởi %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:"
next_steps: Bạn có thể chấp nhận kháng cáo để hủy bỏ kiểm duyệt, hoặc bỏ qua.
subject: "%{username} đang khiếu nại quyết định kiểm duyệt trên %{instance}"
new_pending_account:
@@ -1049,7 +1114,7 @@ vi:
delete_statuses: Xóa tút
disable: Đóng băng tài khoản
mark_statuses_as_sensitive: Đánh dấu tút là nhạy cảm
- none: Nhắc nhở
+ none: Cảnh cáo
sensitive: Đánh dấu tài khoản là nhạy cảm
silence: Hạn chế tài khoản
suspend: Vô hiệu hóa tài khoản
@@ -1104,16 +1169,37 @@ vi:
public: Tin công khai
thread: Thảo luận
edit:
+ add_keyword: Thêm từ khoá
+ keywords: Từ khóa
+ statuses: Những tút riêng lẻ
+ statuses_hint_html: Bộ lọc này áp dụng cho các tút riêng lẻ được chọn bất kể chúng có khớp với các từ khóa bên dưới hay không. Xem lại hoặc xóa các tút từ bộ lọc.
title: Chỉnh sửa bộ lọc
errors:
+ deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web.
invalid_context: Bối cảnh không hợp lệ hoặc không có
- invalid_irreversible: Bộ lọc chỉ hoạt động với bảng tin hoặc nội dung thông báo
index:
+ contexts: Bộ lọc %{contexts}
delete: Xóa bỏ
empty: Chưa có bộ lọc nào.
+ expires_in: Hết hạn trong %{distance}
+ expires_on: Hết hạn vào %{date}
+ keywords:
+ other: "%{count} từ khóa"
+ statuses:
+ other: "%{count} tút"
+ statuses_long:
+ other: "%{count} tút riêng lẻ đã ẩn"
title: Bộ lọc
new:
+ save: Lưu thành bộ lọc mới
title: Thêm bộ lọc mới
+ statuses:
+ back_to_filter: Quay về bộ lọc
+ batch:
+ remove: Xóa khỏi bộ lọc
+ index:
+ hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web.
+ title: Những tút đã lọc
footer:
developers: Phát triển
more: Nhiều hơn
@@ -1121,12 +1207,19 @@ vi:
trending_now: Xu hướng
generic:
all: Tất cả
+ all_items_on_page_selected_html:
+ other: Toàn bộ %{count} mục trong trang này đã được chọn.
+ all_matching_items_selected_html:
+ other: Toàn bộ %{count} mục trùng khớp với tìm kiếm đã được chọn.
changes_saved_msg: Đã lưu thay đổi!
copy: Sao chép
delete: Xóa
+ deselect: Bỏ chọn tất cả
none: Trống
order_by: Sắp xếp
save_changes: Lưu thay đổi
+ select_all_matching_items:
+ other: Chọn tất cả%{count} mục trùng hợp với tìm kiếm của bạn.
today: hôm nay
validation_errors:
other: Đã có %{count} lỗi xảy ra! Xem chi tiết bên dưới
@@ -1229,17 +1322,10 @@ vi:
copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là lịch sử kiểm duyệt của họ:'
notification_mailer:
admin:
+ report:
+ subject: "%{name} đã gửi báo cáo"
sign_up:
subject: "%{name} đã được đăng ký"
- digest:
- action: Xem toàn bộ thông báo
- body: Dưới đây là những tin nhắn bạn đã bỏ lỡ kể từ lần truy cập trước vào %{since}
- mention: "%{name} nhắc đến bạn trong:"
- new_followers_summary:
- other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa!
- subject:
- other: "%{count} thông báo mới kể từ lần đăng nhập cuối 🐘"
- title: Khi bạn offline...
favourite:
body: Tút của bạn vừa được thích bởi %{name}
subject: "%{name} vừa thích tút của bạn"
@@ -1562,7 +1648,7 @@ vi:
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 giấy phép CC-BY-SA và được cập nhật lần cuối vào ngày 26 tháng 5 năm 2022.
Chỉnh sửa và hoàn thiện từ Discourse.
- title: Quy tắc của %{instance}
+ title: Chính sách bảo mật %{instance}
themes:
contrast: Mastodon (Độ tương phản cao)
default: Mastodon (Tối)
@@ -1627,7 +1713,7 @@ vi:
delete_statuses: Những tút %{acct} của bạn đã bị xóa bỏ
disable: Tài khoản %{acct} của bạn đã bị vô hiệu hóa
mark_statuses_as_sensitive: Tút của bạn trên %{acct} bị đánh dấu nhạy cảm
- none: Nhắc nhở tới %{acct}
+ none: Cảnh cáo %{acct}
sensitive: Tút của bạn trên %{acct} sẽ bị đánh dấu nhạy cảm kể từ bây giờ
silence: Tài khoản %{acct} của bạn đã bị hạn chế
suspend: Tài khoản %{acct} của bạn đã bị vô hiệu hóa
@@ -1635,7 +1721,7 @@ vi:
delete_statuses: Xóa tút
disable: Tài khoản bị đóng băng
mark_statuses_as_sensitive: Tút đã bị đánh dấu nhạy cảm
- none: Nhắc nhở
+ none: Cảnh cáo
sensitive: Tài khoản đã bị đánh dấu nhạy cảm
silence: Tài khoản bị hạn chế
suspend: Tài khoản bị vô hiệu hóa
diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml
index 83b5866dfe..36240355b0 100644
--- a/config/locales/zgh.yml
+++ b/config/locales/zgh.yml
@@ -40,8 +40,6 @@ zgh:
all: ⵎⴰⵕⵕⴰ
public: ⴰⴳⴷⵓⴷⴰⵏ
reject: ⴰⴳⵢ
- roles:
- user: ⵓⵏⵙⵙⵓⵎⵔⵙ
title: ⵉⵎⵉⴹⴰⵏⵏ
web: ⵡⵉⴱ
action_logs:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 475d03a2a3..e0f968db82 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -22,9 +22,9 @@ zh-CN:
federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。
get_apps: 尝试移动应用
hosted_on: 运行在 %{domain} 上的 Mastodon 站点
- instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。
-
- '
+ instance_actor_flash: |
+ 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。
+ 该账号用于达成互联之目的,除非你想要封禁整个实例,否则该账号不应该被封禁。在此种情况下,你应该使用域名封禁。
learn_more: 了解详情
logged_in_as_html: 您当前以 %{username} 登录。
logout_before_registering: 您已登录。
@@ -38,7 +38,6 @@ zh-CN:
other: 条嘟文
status_count_before: 他们共嘟出了
tagline: 分布式社交网络
- terms: 使用条款
unavailable_content: 被限制的服务器
unavailable_content_description:
domain: 服务器
@@ -62,7 +61,7 @@ zh-CN:
followers:
other: 关注者
following: 正在关注
- instance_actor_flash: 这个账户是一个虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该被封禁。
+ instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。
joined: 加入于 %{date}
last_active: 最近活动
link_verified_on: 此链接的所有权已在 %{date} 检查
@@ -79,10 +78,8 @@ zh-CN:
posts_tab_heading: 嘟文
posts_with_replies: 嘟文和回复
roles:
- admin: 管理员
bot: 机器人
group: 群组
- moderator: 监察员
unavailable: 个人资料不可用
unfollow: 取消关注
admin:
@@ -101,12 +98,17 @@ zh-CN:
avatar: 头像
by_domain: 域名
change_email:
- changed_msg: 已成功更改账号的电子邮箱!
+ changed_msg: 已成功更改电子邮件地址!
current_email: 当前的电子邮箱
label: 更改电子邮箱
new_email: 新的电子邮箱
submit: 更改电子邮件地址
title: 为 %{username} 更改电子邮箱
+ change_role:
+ changed_msg: 已成功更改角色!
+ label: 更改角色
+ no_role: 未设置角色
+ title: 为 %{username} 更改角色
confirm: 确认
confirmed: 已确认
confirming: 等待确认
@@ -150,6 +152,7 @@ zh-CN:
active: 活跃
all: 全部
pending: 待审核
+ silenced: 受限
suspended: 已封禁
title: 管理
moderation_notes: 管理员备注
@@ -157,6 +160,7 @@ zh-CN:
most_recent_ip: 最后一次活跃的 IP 地址
no_account_selected: 因为没有选中任何账号,所以没有更改
no_limits_imposed: 无限制
+ no_role_assigned: 未定角色
not_subscribed: 未订阅
pending: 待审核
perform_full_suspension: 封禁
@@ -182,12 +186,7 @@ zh-CN:
reset: 重置
reset_password: 重置密码
resubscribe: 重新订阅
- role: 用户组
- roles:
- admin: 管理员
- moderator: 监察员
- staff: 站务人员
- user: 普通用户
+ role: 角色
search: 搜索
search_same_email_domain: 其他具有相同电子邮箱域名的用户
search_same_ip: 具有相同IP的其他用户
@@ -230,17 +229,21 @@ zh-CN:
approve_user: 批准用户
assigned_to_self_report: 指派举报
change_email_user: 为用户修改邮箱地址
+ change_role_user: 更改用户角色
confirm_user: 确认用户
create_account_warning: 创建警告
create_announcement: 创建公告
+ create_canonical_email_block: 新增 E-mail 屏蔽
create_custom_emoji: 创建自定义表情符号
create_domain_allow: 允许新域名
create_domain_block: 封禁新域名
create_email_domain_block: 封禁电子邮箱域名
create_ip_block: 新建 IP 规则
create_unavailable_domain: 创建不可用域名
+ create_user_role: 创建角色
demote_user: 给用户降职
destroy_announcement: 删除公告
+ destroy_canonical_email_block: 删除 E-mail 封禁
destroy_custom_emoji: 删除自定义表情符号
destroy_domain_allow: 解除域名允许
destroy_domain_block: 解除域名封禁
@@ -249,6 +252,7 @@ zh-CN:
destroy_ip_block: 删除 IP 规则
destroy_status: 删除嘟文
destroy_unavailable_domain: 删除不可用域名
+ destroy_user_role: 销毁角色
disable_2fa_user: 停用双重认证
disable_custom_emoji: 禁用自定义表情符号
disable_sign_in_token_auth_user: 为用户禁用电子邮件令牌认证
@@ -275,24 +279,30 @@ zh-CN:
update_announcement: 更新公告
update_custom_emoji: 更新自定义表情符号
update_domain_block: 更新域名屏蔽
+ update_ip_block: 编辑 IP 封禁规则
update_status: 更新嘟文
+ update_user_role: 更新角色
actions:
approve_appeal_html: "%{name} 批准了 %{target} 对审核结果的申诉"
approve_user_html: "%{name} 批准了用户 %{target} 的注册"
assigned_to_self_report_html: "%{name} 接管了举报 %{target}"
change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址"
+ change_role_user_html: "%{name} 更改了 %{target} 的角色"
confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址"
create_account_warning_html: "%{name} 向 %{target} 发送了警告"
create_announcement_html: "%{name} 创建了新公告 %{target}"
+ create_canonical_email_block_html: "%{name} 屏蔽了 hash 为 %{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} 的投递"
+ create_user_role_html: "%{name} 创建了 %{target} 角色"
demote_user_html: "%{name} 对用户 %{target} 进行了降任操作"
destroy_announcement_html: "%{name} 删除了公告 %{target}"
- destroy_custom_emoji_html: "%{name} 销毁了自定义表情 %{target}"
+ destroy_canonical_email_block_html: "%{name} 解除屏蔽了 hash 为 %{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} 的屏蔽"
@@ -300,6 +310,7 @@ zh-CN:
destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则"
destroy_status_html: "%{name} 删除了 %{target} 的嘟文"
destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递"
+ destroy_user_role_html: "%{name} 删除了 %{target} 角色"
disable_2fa_user_html: "%{name} 停用了用户 %{target} 的双重认证"
disable_custom_emoji_html: "%{name} 停用了自定义表情 %{target}"
disable_sign_in_token_auth_user_html: "%{name} 已为 %{target} 禁用电子邮件令牌认证"
@@ -326,8 +337,9 @@ zh-CN:
update_announcement_html: "%{name} 更新了公告 %{target}"
update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}"
update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽"
+ update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则"
update_status_html: "%{name} 刷新了 %{target} 的嘟文"
- deleted_status: "(嘟文已删除)"
+ update_user_role_html: "%{name} 更改了 %{target} 角色"
empty: 没有找到日志
filter_by_action: 根据行为过滤
filter_by_user: 根据用户过滤
@@ -635,6 +647,65 @@ zh-CN:
unresolved: 未处理
updated_at: 更新时间
view_profile: 查看资料
+ roles:
+ add_new: 添加角色
+ assigned_users:
+ other: "%{count} 用户"
+ categories:
+ administration: 管理
+ devops: 开发运维
+ invites: 邀请
+ moderation: 监察
+ special: 特殊
+ delete: 刪除
+ description_html: 使用 用户角色,您可以自定义您的用户可以访问的功能和区域。
+ edit: 编辑 '%{name}' 角色
+ everyone: 默认权限
+ everyone_full_description_html: 这是影响到 所有用户的基础角色,包括未指定角色的用户。 其他所有的角色都继承着它的权限。
+ permissions_count:
+ other: "%{count} 权限"
+ privileges:
+ administrator: 管理员
+ administrator_description: 拥有此权限的用户将绕过每个权限
+ delete_user_data: 删除用户数据
+ delete_user_data_description: 允许用户立即删除其他用户的数据
+ invite_users: 邀请用户
+ invite_users_description: 允许用户邀请新人加入服务器
+ manage_announcements: 管理公告
+ manage_announcements_description: 允许用户管理服务器上的通知
+ manage_appeals: 管理申诉
+ manage_appeals_description: 允许用户审查对适度动作的上诉
+ manage_blocks: 管理版块
+ manage_blocks_description: 允许用户屏蔽电子邮件提供商和IP地址
+ manage_custom_emojis: 管理自定义表情
+ manage_custom_emojis_description: 允许用户管理服务器上的自定义表情
+ manage_federation: 管理联邦
+ manage_federation_description: 允许用户阻止或允许使用其他域切换并控制可交付性
+ manage_invites: 管理邀请
+ manage_invites_description: 允许用户浏览和停用邀请链接
+ manage_reports: 管理报告
+ manage_reports_description: 允许用户查看报告并对其执行审核操作
+ manage_roles: 管理角色
+ manage_roles_description: 允许用户管理和分配比他们权限低的角色
+ manage_rules: 管理规则
+ manage_rules_description: 允许用户更改服务器规则
+ manage_settings: 管理设置
+ manage_settings_description: 允许用户更改站点设置
+ manage_taxonomies: 管理分类法
+ manage_taxonomies_description: 允许用户查看热门内容并更新标签设置
+ manage_user_access: 管理访问
+ manage_user_access_description: 允许用户禁用其他用户的双重身份验证, 更改他们的电子邮件地址, 并重置他们的密码
+ manage_users: 管理用户
+ manage_users_description: 允许用户查看其他用户信息并对他们执行审核操作
+ manage_webhooks: 管理网钩
+ manage_webhooks_description: 允许用户为管理事件设置网钩
+ view_audit_log: 查看审核日志
+ view_audit_log_description: 允许用户在服务器上查看管理操作历史
+ view_dashboard: 查看仪表板
+ view_dashboard_description: 允许用户访问仪表盘和各种指标
+ view_devops: 开发运维
+ view_devops_description: 允许用户访问 Sidekiq 和 pgHero 仪表板
+ title: 角色
rules:
add_new: 添加规则
delete: 删除
@@ -687,9 +758,6 @@ zh-CN:
deletion:
desc_html: 允许所有人删除自己的帐户
title: 开放删除帐户权限
- min_invite_role:
- disabled: 没有人
- title: 允许发送邀请的用户组
require_invite_text:
desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项
title: 要求新用户填写申请注册的原因
@@ -702,9 +770,6 @@ zh-CN:
show_known_fediverse_at_about_page:
desc_html: 如果开启,就会在时间轴预览显示其他站点嘟文,否则就只会只显示本站嘟文。
title: 在时间轴预览中显示其他站点嘟文
- show_staff_badge:
- desc_html: 在个人资料页上显示管理人员标志
- title: 显示管理人员标志
site_description:
desc_html: 首页上的介绍文字。 描述一下本 Mastodon 实例的特殊之处以及其他重要信息。可以使用 HTML 标签,包括 <a>
和 <em>
。
title: 本站简介
@@ -715,8 +780,8 @@ zh-CN:
desc_html: 会在在侧栏和元数据标签中显示。可以用一小段话描述 Mastodon 是什么,以及本服务器的特点。
title: 服务器一句话介绍
site_terms:
- desc_html: 可以填写自己的隐私权政策、使用条款或其他法律文本。可以使用 HTML 标签
- title: 自定义使用条款
+ desc_html: 您可以写自己的隐私政策。您可以使用 HTML 标签
+ title: 自定义隐私政策
site_title: 本站名称
thumbnail:
desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px
@@ -726,7 +791,7 @@ zh-CN:
title: 时间轴预览
title: 网站设置
trendable_by_default:
- desc_html: 影响以前未禁止的话题标签
+ desc_html: 特定的热门内容仍可以被明确地禁止
title: 允许在未审查的情况下将话题置为热门
trends:
desc_html: 公开显示先前已通过审核的当前热门话题
@@ -781,7 +846,7 @@ zh-CN:
links:
allow: 允许链接
allow_provider: 允许发布者
- description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝单个链接。
+ description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝个别链接。
disallow: 不允许链接
disallow_provider: 不允许发布者
shared_by_over_week:
@@ -799,7 +864,7 @@ zh-CN:
statuses:
allow: 允许嘟文
allow_account: 允许发布者
- description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝单条嘟文。
+ description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。
disallow: 禁止嘟文
disallow_account: 禁止发布者
not_discoverable: 发布者选择不被发现
@@ -836,9 +901,24 @@ zh-CN:
empty: 你尚未定义任何警告预设。
title: 管理预设警告
webhooks:
+ add_new: 端点
delete: 删除
+ description_html: "webhook 使Mastodon能够推送 关于所选事件的实时通知 到您自己的应用程序。 所以您的应用程序可以自动触发反应 。"
disable: 禁用
+ disabled: 已禁用
+ edit: 编辑端点
+ empty: 您尚未配置任何Web 钩子端点。
enable: 启用
+ enabled: 活跃
+ enabled_events:
+ other: "%{count} 启用的事件"
+ events: 事件
+ new: 新建网钩
+ rotate_secret: 旋转密钥
+ secret: 签名密钥
+ status: 状态
+ title: 网钩
+ webhook: 网钩
admin_mailer:
new_appeal:
actions:
@@ -1091,16 +1171,37 @@ zh-CN:
public: 公共时间轴
thread: 对话
edit:
+ add_keyword: 添加关键词
+ keywords: 关键词
+ statuses: 个别嘟文
+ statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。从过滤器中审核嘟文或移除嘟文。
title: 编辑过滤器
errors:
+ deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。
invalid_context: 过滤器场景没有或无效
- invalid_irreversible: 此功能只适用于主页时间轴或通知
index:
+ contexts: 在 %{contexts} 中的过滤器
delete: 删除
empty: 你没有过滤器。
+ expires_in: 在 %{distance} 后过期
+ expires_on: "%{date} 后到期"
+ keywords:
+ other: "%{count} 关键词"
+ statuses:
+ other: "%{count} 条嘟文"
+ statuses_long:
+ other: "%{count} 条个别嘟文已隐藏"
title: 过滤器
new:
+ save: 保存新过滤器
title: 添加新的过滤器
+ statuses:
+ back_to_filter: 返回至过滤器
+ batch:
+ remove: 从过滤器中移除
+ index:
+ hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。
+ title: 过滤的嘟文
footer:
developers: 开发者
more: 更多…
@@ -1108,12 +1209,19 @@ zh-CN:
trending_now: 现在流行
generic:
all: 全部
+ all_items_on_page_selected_html:
+ other: 此页面上的所有 %{count} 项目已被选中。
+ all_matching_items_selected_html:
+ other: 所有 %{count} 匹配您搜索的项目都已被选中。
changes_saved_msg: 更改保存成功!
copy: 复制
delete: 删除
+ deselect: 取消全选
none: 无
order_by: 排序方式
save_changes: 保存更改
+ select_all_matching_items:
+ other: 选择匹配您搜索的所有 %{count} 个项目。
today: 今天
validation_errors:
other: 出错啦!检查一下下面 %{count} 处出错的地方吧
@@ -1216,17 +1324,10 @@ zh-CN:
copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注:
notification_mailer:
admin:
+ report:
+ subject: "%{name} 提交了报告"
sign_up:
subject: "%{name} 注册了"
- digest:
- action: 查看所有通知
- body: 以下是自%{since}你最后一次登录以来错过的消息的摘要
- mention: "%{name} 在嘟文中提到了你:"
- new_followers_summary:
- other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒!
- subject:
- other: "自上次访问以来,收到 %{count} 条新通知 🐘"
- title: 在你不在的这段时间……
favourite:
body: 你的嘟文被 %{name} 喜欢了:
subject: "%{name} 喜欢了你的嘟文"
@@ -1583,7 +1684,7 @@ zh-CN:
此文件以 CC-BY-SA 授权。最后更新时间为 2022 年 5 月 26 日。
最初改编自 Discourse 隐私政策.
- title: "%{instance} 使用条款和隐私权政策"
+ title: "%{instance} 的隐私政策"
themes:
contrast: Mastodon(高对比度)
default: Mastodon(暗色主题)
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 5b6e0b83a2..8696b40d25 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -25,7 +25,6 @@ zh-HK:
這個帳戶是代表伺服器,而非代表任何個人用戶的虛擬帳號。
此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。
learn_more: 了解更多
- privacy_policy: 隱私權政策
rules: 系統規則
rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則:
see_whats_happening: 看看發生什麼事
@@ -34,7 +33,6 @@ zh-HK:
status_count_after:
other: 篇文章
status_count_before: 共發佈了
- terms: 使用條款
unavailable_content: 受限制的伺服器
unavailable_content_description:
domain: 伺服器
@@ -75,10 +73,8 @@ zh-HK:
posts_tab_heading: 文章
posts_with_replies: 包含回覆的文章
roles:
- admin: 管理員
bot: 機械人
group: 群組
- moderator: 板主
unavailable: 無法取得個人檔案
unfollow: 取消關注
admin:
@@ -97,7 +93,6 @@ zh-HK:
avatar: 頭像
by_domain: 域名
change_email:
- changed_msg: 帳號電郵更新成功!
current_email: 現時電郵
label: 更改電郵
new_email: 新的電郵
@@ -174,12 +169,6 @@ zh-HK:
reset: 重設
reset_password: 重設密碼
resubscribe: 重新訂閱
- role: 權限
- roles:
- admin: 管理員
- moderator: 管理員
- staff: 工作人員
- user: 普通使用者
search: 搜尋
search_same_email_domain: 其他有相同電郵網域的使用者
search_same_ip: 其他有相同 IP 位址的使用者
@@ -272,7 +261,6 @@ zh-HK:
create_unavailable_domain_html: "%{name} 停止了對網域 %{target} 的更新通知"
demote_user_html: "%{name} 降權了 %{target}"
destroy_announcement_html: "%{name} 刪除了公告 %{target}"
- destroy_custom_emoji_html: "%{name} 刪除了 Emoji %{target}"
destroy_domain_allow_html: "%{name} 禁止網域 %{target} 加入聯邦宇宙"
destroy_domain_block_html: "%{name} 封鎖了網域 %{target}"
destroy_email_domain_block_html: "%{name} 解除封鎖 e-mail 網域 %{target}"
@@ -303,7 +291,6 @@ zh-HK:
update_custom_emoji_html: "%{name} 更新了 Emoji 表情符號 %{target}"
update_domain_block_html: "%{name} 更新了對 %{target} 的網域封鎖"
update_status_html: "%{name} 更新了 %{target} 的嘟文"
- deleted_status: "(已刪除文章)"
empty: 找不到任何日誌。
filter_by_action: 按動作篩選
filter_by_user: 按帳號篩選
@@ -568,9 +555,6 @@ zh-HK:
deletion:
desc_html: 允許所有人刪除自己的帳號
title: 容許刪除帳號
- min_invite_role:
- disabled: 沒有人
- title: 允許發送邀請的身份
require_invite_text:
desc_html: 如果已設定為手動審核注冊,請把「加入的原因」設定為必填項目。
title: 要求新用戶填寫注冊申請
@@ -583,9 +567,6 @@ zh-HK:
show_known_fediverse_at_about_page:
desc_html: 如果停用,將會只在本站的歡迎頁顯示本站的文章。
title: 在訪客預覽本站的時間軸上,顯示跨站文章
- show_staff_badge:
- desc_html: 在個人資料頁上顯示工作人員標誌
- title: 顯示工作人員標誌
site_description:
desc_html: 在首頁顯示,及在 meta 標籤使用作網站介紹。
你可以在此使用 <a>
和 <em>
等 HTML 標籤。
title: 本站介紹
@@ -595,9 +576,6 @@ zh-HK:
site_short_description:
desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。"
title: 伺服器短描述
- site_terms:
- desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤
- title: 自訂使用條款
site_title: 本站名稱
thumbnail:
desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px
@@ -606,9 +584,6 @@ zh-HK:
desc_html: 在主頁顯示本站時間軸
title: 時間軸預覽
title: 網站設定
- trendable_by_default:
- desc_html: 影響之前並未禁止的標籤
- title: 容許標籤不需要審核來成為今期流行
trends:
desc_html: 公開地顯示已審核的標籤為今期流行
title: 趨勢主題標籤
@@ -836,7 +811,6 @@ zh-HK:
title: 編輯篩選器
errors:
invalid_context: 沒有提供內文或內文無效
- invalid_irreversible: 不可逆的篩選器只適用放主頁或通知頁面
index:
delete: 刪除
empty: 你沒有過濾器。
@@ -955,13 +929,6 @@ zh-HK:
carry_mutes_over_text: 此用戶從%{acct} 轉移,該帳號已被你靜音。
copy_account_note_text: 此用戶從%{acct} 轉移,這是你之前在該帳號留下的備注:
notification_mailer:
- digest:
- action: 查看所有通知
- body: 這是自從你在%{since}使用以後,你錯失了的訊息︰
- mention: "%{name} 在此提及了你︰"
- new_followers_summary:
- other: 你新獲得了 %{count} 位關注者了!好厲害!
- title: 在你不在的這段時間……
favourite:
body: 你的文章被 %{name} 喜愛:
subject: "%{name} 喜歡你的文章"
@@ -1219,8 +1186,6 @@ zh-HK:
sensitive_content: 敏感內容
tags:
does_not_match_previous_name: 和舊有名稱並不符合
- terms:
- title: "%{instance} 使用條款和隱私權政策"
themes:
contrast: 高對比
default: 萬象
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 7d2bb80cbe..29af27c66a 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1,7 +1,7 @@
---
zh-TW:
about:
- about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他站點的使用者,便可以與他們互動。
+ about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他聯邦宇宙的使用者,便可以與他們互動。
about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。
about_this: 關於本站
active_count_after: 活躍
@@ -22,7 +22,9 @@ zh-TW:
federation_hint_html: 您只需要擁有 %{instance} 的帳號,就可以追蹤任何一台 Mastodon 伺服器上的人等等。
get_apps: 嘗試行動應用程式
hosted_on: 在 %{domain} 運作的 Mastodon 站點
- instance_actor_flash: "這個帳戶是個用來代表伺服器自已的虛擬角色,而不是實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 \n"
+ instance_actor_flash: '這個帳戶是個用來代表伺服器本身的虛擬角色,而非實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。
+
+ '
learn_more: 了解詳細
logged_in_as_html: 您目前登入使用的帳號是 %{username}
logout_before_registering: 您已經登入了!
@@ -36,7 +38,6 @@ zh-TW:
other: 條嘟文
status_count_before: 他們共嘟出了
tagline: 去中心化社群網路
- terms: 使用條款
unavailable_content: 無法取得的內容
unavailable_content_description:
domain: 伺服器
@@ -60,7 +61,7 @@ zh-TW:
followers:
other: 跟隨者
following: 正在跟隨
- instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
+ instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為聯邦宇宙且不應被停權。
joined: 加入於 %{date}
last_active: 上次活躍時間
link_verified_on: 此連結的所有權已在 %{date} 檢查過
@@ -77,10 +78,8 @@ zh-TW:
posts_tab_heading: 嘟文
posts_with_replies: 嘟文與回覆
roles:
- admin: 管理員
bot: 機器人
group: 群組
- moderator: 版主
unavailable: 無法取得個人檔案
unfollow: 取消跟隨
admin:
@@ -99,12 +98,17 @@ zh-TW:
avatar: 頭像
by_domain: 站點
change_email:
- changed_msg: 已成功變更帳號電子信箱地址!
+ changed_msg: 電子郵件已成功變更!
current_email: 目前的電子信箱地址
label: 變更電子信箱地址
new_email: 新的電子信箱地址
submit: 變更電子信箱地址
title: 為 %{username} 變更電子信箱地址
+ change_role:
+ changed_msg: 成功修改角色!
+ label: 變更角色
+ no_role: 沒有角色
+ title: 為 %{username} 變更角色
confirm: 確定
confirmed: 已確定
confirming: 確定
@@ -148,13 +152,15 @@ zh-TW:
active: 活躍
all: 全部
pending: 等待中
+ silenced: 受限的
suspended: 已停權
- title: 版務
+ title: 站務
moderation_notes: 管理備忘
most_recent_activity: 最近活動
most_recent_ip: 最近 IP 位址
no_account_selected: 未選取任何帳號,因此未變更
no_limits_imposed: 未受限制
+ no_role_assigned: 未指派角色
not_subscribed: 未訂閱
pending: 等待審核中
perform_full_suspension: 停權
@@ -180,12 +186,7 @@ zh-TW:
reset: 重設
reset_password: 重設密碼
resubscribe: 重新訂閱
- role: 身份
- roles:
- admin: 管理員
- moderator: 版主
- staff: 管理人員
- user: 普通使用者
+ role: 角色
search: 搜尋
search_same_email_domain: 其他有同個電子郵件網域的使用者
search_same_ip: 其他有同個 IP 的使用者
@@ -228,17 +229,21 @@ zh-TW:
approve_user: 批准使用者
assigned_to_self_report: 指派回報
change_email_user: 變更使用者的電子信箱地址
+ change_role_user: 變更使用者角色
confirm_user: 確認使用者
create_account_warning: 建立警告
create_announcement: 建立公告
+ create_canonical_email_block: 新增 E-mail 封鎖
create_custom_emoji: 建立自訂顏文字
create_domain_allow: 建立允許網域
create_domain_block: 建立阻擋網域
create_email_domain_block: 封鎖電子郵件站台
create_ip_block: 新增IP規則
create_unavailable_domain: 新增無法存取的網域
+ create_user_role: 建立角色
demote_user: 把用戶降級
destroy_announcement: 刪除公告
+ destroy_canonical_email_block: 刪除 E-mail 封鎖
destroy_custom_emoji: 刪除自訂顏文字
destroy_domain_allow: 刪除允許網域
destroy_domain_block: 刪除阻擋網域
@@ -247,6 +252,7 @@ zh-TW:
destroy_ip_block: 刪除 IP 規則
destroy_status: 刪除狀態
destroy_unavailable_domain: 刪除無法存取的網域
+ destroy_user_role: 移除角色
disable_2fa_user: 停用兩階段認證
disable_custom_emoji: 停用自訂顏文字
disable_sign_in_token_auth_user: 停用使用者電子信箱 token 驗證
@@ -273,31 +279,38 @@ zh-TW:
update_announcement: 更新公告
update_custom_emoji: 更新自訂顏文字
update_domain_block: 更新封鎖網域
+ update_ip_block: 更新 IP 規則
update_status: 更新狀態
+ update_user_role: 更新角色
actions:
approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定申訴"
approve_user_html: "%{name} 批准了從 %{target} 而來的註冊"
assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己"
change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址"
+ change_role_user_html: "%{name} 變更了 %{target} 的角色"
confirm_user_html: "%{name} 確認了使用者 %{target} 的電子信箱位址"
create_account_warning_html: "%{name} 已對 %{target} 送出警告"
create_announcement_html: "%{name} 新增了公告 %{target}"
+ create_canonical_email_block_html: "%{name} 已封鎖了 hash 為 %{target} 之 e-mail"
create_custom_emoji_html: "%{name} 上傳了新自訂表情符號 %{target}"
- create_domain_allow_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}"
+ create_user_role_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_canonical_email_block_html: "%{name} 取消了 hash 為 %{target} 之 e-mail 的封鎖"
+ 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_instance_html: "%{name} 清除了網域 %{target}"
destroy_ip_block_html: "%{name} 刪除了 IP %{target} 的規則"
destroy_status_html: "%{name} 刪除了 %{target} 的嘟文"
destroy_unavailable_domain_html: "%{name} 恢復了對網域 %{target} 的發送"
+ destroy_user_role_html: "%{name} 刪除了 %{target} 角色"
disable_2fa_user_html: "%{name} 停用了使用者 %{target} 的兩階段認證"
disable_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}"
disable_sign_in_token_auth_user_html: "%{name} 停用了 %{target} 之使用者電子信箱 token 驗證"
@@ -324,8 +337,9 @@ zh-TW:
update_announcement_html: "%{name} 更新了公告 %{target}"
update_custom_emoji_html: "%{name} 更新了自訂表情符號 %{target}"
update_domain_block_html: "%{name} 更新了 %{target} 之網域封鎖"
+ update_ip_block_html: "%{name} 已經更新了 IP %{target} 之規則"
update_status_html: "%{name} 更新了 %{target} 的嘟文"
- deleted_status: "(已刪除嘟文)"
+ update_user_role_html: "%{name} 變更了 %{target} 角色"
empty: 找不到 log
filter_by_action: 按動作篩選
filter_by_user: 按使用者篩選
@@ -407,10 +421,10 @@ zh-TW:
empty: 找不到申訴。
title: 申訴
domain_allows:
- add_new: 將網域加入白名單
- created_msg: 網域已成功加入白名單
- destroyed_msg: 網域已成功從白名單移除
- undo: 從白名單移除
+ add_new: 將網域加入聯邦宇宙白名單
+ created_msg: 網域已成功加入聯邦宇宙白名單
+ destroyed_msg: 網域已成功從聯邦宇宙白名單移除
+ undo: 從聯邦宇宙白名單移除
domain_blocks:
add_new: 新增欲封鎖域名
created_msg: 正在進行站點封鎖
@@ -520,12 +534,12 @@ zh-TW:
moderation:
all: 全部
limited: 限制
- title: 版主
+ title: 管管
private_comment: 私人留言
public_comment: 公開留言
purge: 清除
purge_description_html: 若您相信此網域將永久離線,您可以自儲存空間中刪除該網域所有帳號紀錄及相關資料。這可能花費一些時間。
- title: 聯邦
+ title: 聯邦宇宙
total_blocked_by_us: 被我們封鎖
total_followed_by_them: 被他們跟隨
total_followed_by_us: 被我們跟隨
@@ -570,7 +584,7 @@ zh-TW:
pending: 等待中繼站審核
save_and_enable: 儲存並啟用
setup: 設定中繼連結
- signatures_not_enabled: 若啟用安全模式或受限的站點聯盟模式,中繼將不會正常運作
+ signatures_not_enabled: 若啟用安全模式或受限的聯邦宇宙模式,中繼將不會正常運作
status: 狀態
title: 中繼
report_notes:
@@ -635,6 +649,65 @@ zh-TW:
unresolved: 未解決
updated_at: 更新
view_profile: 檢視個人資料頁
+ roles:
+ add_new: 新增角色
+ assigned_users:
+ other: "%{count} 個使用者"
+ categories:
+ administration: 管理員
+ devops: Devops
+ invites: 邀請
+ moderation: 站務
+ special: 特殊
+ delete: 刪除
+ description_html: 透過使用者角色,您可以自訂您的使用者可以存取 Mastodon 的哪些功能與區域。
+ edit: 編輯「%{name}」角色
+ everyone: 預設權限
+ everyone_full_description_html: 這是會影響所有使用者的基本角色,即使是那些沒有被分配角色的使用者也一樣。其他所有的角色都從它繼承權限。
+ permissions_count:
+ other: "%{count} 個權限"
+ privileges:
+ administrator: 管理員
+ administrator_description: 擁有此權限的使用者將會略過所有權限
+ delete_user_data: 刪除使用者資料
+ delete_user_data_description: 允許使用者立刻刪除其他使用者的資料
+ invite_users: 邀請使用者
+ invite_users_description: 允許使用者邀請新人加入伺服器
+ manage_announcements: 管理公告
+ manage_announcements_description: 允許使用者管理伺服器上的公告
+ manage_appeals: 管理解封申訴系統
+ manage_appeals_description: 允許使用者審閱針對站務動作的申訴
+ manage_blocks: 管理封鎖
+ manage_blocks_description: 允許使用者封鎖電子郵件提供者與 IP 位置
+ manage_custom_emojis: 管理自訂表情符號
+ manage_custom_emojis_description: 允許使用者管理伺服器上的自訂表情符號
+ manage_federation: 管理聯邦宇宙
+ manage_federation_description: 允許使用者封鎖或允許與其他網域的聯邦宇宙,並控制傳遞能力
+ manage_invites: 管理邀請
+ manage_invites_description: 允許使用者瀏覽與停用邀請連結
+ manage_reports: 管理回報
+ manage_reports_description: 允許使用者審閱回報並對回報執行站務動作
+ manage_roles: 管理角色
+ manage_roles_description: 允許使用者管理並指派低於他們的使用者
+ manage_rules: 管理規則
+ manage_rules_description: 允許使用者變更伺服器規則
+ manage_settings: 管理設定
+ manage_settings_description: 允許使用者變更站點設定
+ manage_taxonomies: 管理分類方式
+ manage_taxonomies_description: 允許使用者審閱熱門內容與更新主題標籤設定
+ manage_user_access: 管理使用者存取權
+ manage_user_access_description: 允許使用者停用其他人的兩步驟驗證、變更他們的電子郵件地址以及重設他們的密碼
+ manage_users: 管理使用者
+ manage_users_description: 允許使用者檢視其他使用者的詳細資訊並對回報執行站務動作
+ manage_webhooks: 管理 Webhooks
+ manage_webhooks_description: 允許使用者為管理事件設定 webhooks
+ view_audit_log: 檢視審核日誌
+ view_audit_log_description: 允許使用者檢視伺服器上的管理動作歷史
+ view_dashboard: 檢視儀表板
+ view_dashboard_description: 允許使用者存取儀表板與各種指標
+ view_devops: Devops
+ view_devops_description: 允許使用者存取 Sidekiq 與 pgHero 儀表板
+ title: 角色
rules:
add_new: 新增規則
delete: 刪除
@@ -687,9 +760,6 @@ zh-TW:
deletion:
desc_html: 允許所有人刪除自己的帳號
title: 開放刪除帳號的權限
- min_invite_role:
- disabled: 沒有人
- title: 允許發送邀請的身份
require_invite_text:
desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。
title: 要求新使用者填申請書以索取邀請
@@ -702,9 +772,6 @@ zh-TW:
show_known_fediverse_at_about_page:
desc_html: 如果開啟,就會在時間軸預覽顯示其他站點嘟文,否則就只會顯示本站點嘟文。
title: 在時間軸預覽顯示其他站點嘟文
- show_staff_badge:
- desc_html: 在個人資料頁面上顯示管理人員標誌
- title: 顯示管理人員標誌
site_description:
desc_html: 首頁上的介紹文字,描述此 Mastodon 伺服器的特別之處和其他重要資訊。可使用 HTML 標籤,包括 <a>
和 <em>
。
title: 伺服器描述
@@ -715,8 +782,8 @@ zh-TW:
desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。
title: 伺服器短描述
site_terms:
- desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤
- title: 自訂使用條款
+ desc_html: 您可以撰寫自己的隱私權政策。您可以使用 HTML 標籤。
+ title: 客製的隱私權政策
site_title: 伺服器名稱
thumbnail:
desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px
@@ -726,8 +793,8 @@ zh-TW:
title: 時間軸預覽
title: 網站設定
trendable_by_default:
- desc_html: 影響此前並未被禁用的標籤
- title: 允許熱門的主題標籤直接顯示於趨勢區,不需經過審核
+ desc_html: 特定的熱門內容仍可以被明確地禁止
+ title: 允許熱門話題直接顯示,不需經過審核
trends:
desc_html: 公開目前炎上的已審核標籤
title: 趨勢主題標籤
@@ -1106,16 +1173,37 @@ zh-TW:
public: 公開時間軸
thread: 會話
edit:
+ add_keyword: 新增關鍵字
+ keywords: 關鍵字
+ statuses: 各別嘟文
+ statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除貼文。
title: 編輯篩選條件
errors:
+ deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。
invalid_context: 沒有提供內文或內文無效
- invalid_irreversible: 此功能僅適用於首頁或通知頁面
index:
+ contexts: "%{contexts} 中的過濾器"
delete: 刪除
empty: 您沒有過濾器。
+ expires_in: 於 %{distance} 過期
+ expires_on: 於 %{date} 過期
+ keywords:
+ other: "%{count} 個關鍵字"
+ statuses:
+ other: "%{count} 則嘟文"
+ statuses_long:
+ other: "%{count} 則各別嘟文被隱藏"
title: 過濾器
new:
+ save: 儲存新過濾器
title: 新增篩選器
+ statuses:
+ back_to_filter: 回到過濾器
+ batch:
+ remove: 從過濾器中移除
+ index:
+ hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。
+ title: 已過濾之嘟文
footer:
developers: 開發者
more: 更多......
@@ -1123,12 +1211,19 @@ zh-TW:
trending_now: 現正熱門
generic:
all: 全部
+ all_items_on_page_selected_html:
+ other: 已選取此頁面上 %{count} 個項目。
+ all_matching_items_selected_html:
+ other: 已選取符合您搜尋的 %{count} 個項目。
changes_saved_msg: 已成功儲存修改!
copy: 複製
delete: 刪除
+ deselect: 取消選擇全部
none: 無
order_by: 排序
save_changes: 儲存修改
+ select_all_matching_items:
+ other: 選取 %{count} 個符合您搜尋的項目。
today: 今天
validation_errors:
other: 唔…這是什麼鳥?請檢查以下 %{count} 項錯誤
@@ -1224,24 +1319,17 @@ zh-TW:
other_data: 其他資料並不會自動轉移
redirect: 您目前的帳號將會在個人資料頁面新增重新導向公告,並會被排除在搜尋結果之外
moderation:
- title: 營運
+ title: 站務
move_handler:
carry_blocks_over_text: 此使用者轉移自被您封鎖的 %{acct}。
carry_mutes_over_text: 此使用者轉移自被您靜音的 %{acct}。
copy_account_note_text: 此使用者轉移自 %{acct},以下是您之前關於他們的備註:
notification_mailer:
admin:
+ report:
+ subject: "%{name} 送出了一則檢舉報告"
sign_up:
subject: "%{name} 已進行註冊"
- digest:
- action: 閱覽所有通知
- body: 以下是自 %{since} 您最後一次登入以來錯過的訊息摘要
- mention: "%{name} 在此提及了您:"
- new_followers_summary:
- other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的!
- subject:
- other: "從您上次造訪以來有 %{count} 個新通知 🐘"
- title: 您不在的時候...
favourite:
body: 您的嘟文被 %{name} 加入了最愛:
subject: "%{name} 將您的嘟文加入了最愛"
@@ -1601,7 +1689,7 @@ zh-TW:
此文件以 CC-BY-SA 授權。最後更新時間為 2022 年 5 月 26 日。
最初改編自 Discourse 隱私權政策.
- title: "%{instance} 使用條款和隱私權政策"
+ title: "%{instance} 隱私權政策"
themes:
contrast: Mastodon(高對比)
default: Mastodon(深色)
diff --git a/config/navigation.rb b/config/navigation.rb
index 2a4bf2d39d..7a1aee0782 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -2,72 +2,73 @@
SimpleNavigation::Configuration.run do |navigation|
navigation.items do |n|
- n.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_url
+ n.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_path
- n.item :profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_url, if: -> { current_user.functional? } do |s|
- s.item :profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_url
- s.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_url
+ n.item :profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_path, if: -> { current_user.functional? } do |s|
+ s.item :profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_path
+ s.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_path
end
- n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_url, if: -> { current_user.functional? } do |s|
- s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_url
- s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_url
- s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_url
+ n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_path, if: -> { current_user.functional? } do |s|
+ s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_path
+ s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_path
+ s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_path
end
- n.item :flavours, safe_join([fa_icon('paint-brush fw'), t('settings.flavours')]), settings_flavours_url do |flavours|
+ n.item :flavours, safe_join([fa_icon('paint-brush fw'), t('settings.flavours')]), settings_flavours_path do |flavours|
Themes.instance.flavours.each do |flavour|
- flavours.item flavour.to_sym, safe_join([fa_icon('star fw'), t("flavours.#{flavour}.name", default: flavour)]), settings_flavour_url(flavour)
+ flavours.item flavour.to_sym, safe_join([fa_icon('star fw'), t("flavours.#{flavour}.name", default: flavour)]), settings_flavour_path(flavour)
end
end
- n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url, if: -> { current_user.functional? }
+ n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_path, 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 :statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_path, 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|/settings/login_activities|^/disputes}
- 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
+ n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_path do |s|
+ s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_path, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes}
+ s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_path, 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_path
end
- n.item :data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_url do |s|
- s.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url, if: -> { current_user.functional? }
- s.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
+ n.item :data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_path do |s|
+ s.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_path, if: -> { current_user.functional? }
+ s.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_path
end
- n.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: proc { Setting.min_invite_role == 'user' && current_user.functional? }
- n.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_url, if: -> { current_user.functional? }
+ n.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: -> { current_user.can?(:invite_users) && current_user.functional? }
+ n.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_path, if: -> { current_user.functional? }
- n.item :trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_tags_path, if: proc { current_user.staff? } do |s|
+ n.item :trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_statuses_path, if: -> { current_user.can?(:manage_taxonomies) } do |s|
s.item :statuses, safe_join([fa_icon('comments-o fw'), t('admin.trends.statuses.title')]), admin_trends_statuses_path, highlights_on: %r{/admin/trends/statuses}
s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.trends.tags.title')]), admin_trends_tags_path, highlights_on: %r{/admin/tags|/admin/trends/tags}
s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links}
end
- n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), admin_reports_url, if: proc { current_user.staff? } do |s|
- s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_url
- s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports}
- s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes}
- s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path
- 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? }
+ n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks) } do |s|
+ s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports}, if: -> { current_user.can?(:manage_reports) }
+ s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) }
+ s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path, if: -> { current_user.can?(:manage_invites) }
+ 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}, if: -> { current_user.can?(:manage_taxonomies) }
+ s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_path(limited: whitelist_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.can?(:manage_federation) }
+ s.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_path, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.can?(:manage_blocks) }
+ s.item :ip_blocks, safe_join([fa_icon('ban fw'), t('admin.ip_blocks.title')]), admin_ip_blocks_path, highlights_on: %r{/admin/ip_blocks}, if: -> { current_user.can?(:manage_blocks) }
+ s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_path, if: -> { current_user.can?(:view_audit_log) }
end
- 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 :webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks}
- 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}
- s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
- s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
+ n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), nil, if: -> { current_user.can?(:view_dashboard, :manage_settings, :manage_rules, :manage_announcements, :manage_custom_emojis, :manage_webhooks, :manage_federation) } do |s|
+ s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_path, if: -> { current_user.can?(:view_dashboard) }
+ s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_path, if: -> { current_user.can?(:manage_settings) }, 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}, if: -> { current_user.can?(:manage_rules) }
+ s.item :roles, safe_join([fa_icon('vcard fw'), t('admin.roles.title')]), admin_roles_path, highlights_on: %r{/admin/roles}, if: -> { current_user.can?(:manage_roles) }
+ s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}, if: -> { current_user.can?(:manage_announcements) }
+ s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_path, highlights_on: %r{/admin/custom_emojis}, if: -> { current_user.can?(:manage_custom_emojis) }
+ s.item :webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks}, if: -> { current_user.can?(:manage_webhooks) }
+ s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_path, highlights_on: %r{/admin/relays}, if: -> { !whitelist_mode? && current_user.can?(:manage_federation) }
end
- n.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_url, link_html: { 'data-method' => 'delete' }
+ n.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_path, link_html: { target: 'sidekiq' }, if: -> { current_user.can?(:view_devops) }
+ n.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_path, link_html: { target: 'pghero' }, if: -> { current_user.can?(:view_devops) }
+ n.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_path, link_html: { 'data-method' => 'delete' }
end
end
diff --git a/config/roles.yml b/config/roles.yml
new file mode 100644
index 0000000000..f443250d17
--- /dev/null
+++ b/config/roles.yml
@@ -0,0 +1,35 @@
+moderator:
+ name: Moderator
+ position: 10
+ permissions:
+ - view_dashboard
+ - view_audit_log
+ - manage_users
+ - manage_reports
+ - manage_taxonomies
+admin:
+ name: Admin
+ position: 100
+ permissions:
+ - view_dashboard
+ - view_audit_log
+ - manage_users
+ - manage_user_access
+ - delete_user_data
+ - manage_reports
+ - manage_taxonomies
+ - manage_federation
+ - manage_settings
+ - manage_blocks
+ - manage_appeals
+ - manage_rules
+ - manage_invites
+ - manage_announcements
+ - manage_custom_emojis
+ - manage_webhooks
+ - manage_roles
+owner:
+ name: Owner
+ position: 1000
+ permissions:
+ - administrator
diff --git a/config/routes.rb b/config/routes.rb
index d778997c18..8df1e45b71 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -10,7 +10,7 @@ Rails.application.routes.draw do
get 'health', to: 'health#show'
- authenticate :user, lambda { |u| u.admin? } do
+ authenticate :user, lambda { |u| u.role&.can?(:view_devops) } do
mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq
mount PgHero::Engine, at: 'pghero', as: :pghero
end
@@ -180,7 +180,14 @@ Rails.application.routes.draw do
resources :tags, only: [:show]
resources :emojis, only: [:show]
resources :invites, only: [:index, :create, :destroy]
- resources :filters, except: [:show]
+ resources :filters, except: [:show] do
+ resources :statuses, only: [:index], controller: 'filters/statuses' do
+ collection do
+ post :batch
+ end
+ end
+ end
+
resource :relationships, only: [:show, :update]
resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update]
@@ -316,17 +323,11 @@ Rails.application.routes.draw do
post :resend
end
end
-
- resource :role, only: [] do
- member do
- post :promote
- post :demote
- end
- end
end
resources :users, only: [] do
- resource :two_factor_authentication, only: [:destroy]
+ resource :two_factor_authentication, only: [:destroy], controller: 'users/two_factor_authentications'
+ resource :role, only: [:show, :update], controller: 'users/roles'
end
resources :custom_emojis, only: [:index, :new, :create] do
@@ -341,6 +342,7 @@ Rails.application.routes.draw do
end
end
+ resources :roles, except: [:show]
resources :account_moderation_notes, only: [:create, :destroy]
resource :follow_recommendations, only: [:show, :update]
resources :tags, only: [:show, :update]
@@ -412,6 +414,8 @@ Rails.application.routes.draw do
resource :history, only: :show
resource :source, only: :show
+
+ post :translate, to: 'translations#create'
end
member do
@@ -475,12 +479,14 @@ Rails.application.routes.draw do
resources :trends, only: [:index], controller: 'trends/tags'
resources :filters, only: [:index, :create, :show, :update, :destroy] do
resources :keywords, only: [:index, :create], controller: 'filters/keywords'
+ resources :statuses, only: [:index, :create], controller: 'filters/statuses'
end
resources :endorsements, only: [:index]
resources :markers, only: [:index, :create]
namespace :filters do
resources :keywords, only: [:show, :update, :destroy]
+ resources :statuses, only: [:show, :destroy]
end
namespace :apps do
@@ -559,6 +565,15 @@ Rails.application.routes.draw do
resource :note, only: :create, controller: 'accounts/notes'
end
+ resources :tags, only: [:show] do
+ member do
+ post :follow
+ post :unfollow
+ end
+ end
+
+ resources :followed_tags, only: [:index]
+
resources :lists, only: [:index, :create, :show, :update, :destroy] do
resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts'
end
@@ -602,6 +617,8 @@ Rails.application.routes.draw do
resources :domain_allows, only: [:index, :show, :create, :destroy]
resources :domain_blocks, only: [:index, :show, :update, :create, :destroy]
+ resources :email_domain_blocks, only: [:index, :show, :create, :destroy]
+ resources :ip_blocks, only: [:index, :show, :update, :create, :destroy]
namespace :trends do
resources :tags, only: [:index]
@@ -612,14 +629,22 @@ Rails.application.routes.draw do
post :measures, to: 'measures#create'
post :dimensions, to: 'dimensions#create'
post :retention, to: 'retention#create'
+
+ resources :canonical_email_blocks, only: [:index, :create, :show, :destroy] do
+ collection do
+ post :test
+ end
+ end
end
end
namespace :v2 do
- resources :media, only: [:create]
get '/search', to: 'search#index', as: :search
+
+ resources :media, only: [:create]
resources :suggestions, only: [:index]
resources :filters, only: [:index, :create, :show, :update, :destroy]
+ resource :instance, only: [:show]
namespace :admin do
resources :accounts, only: [:index]
@@ -641,7 +666,9 @@ Rails.application.routes.draw do
get '/about', to: 'about#show'
get '/about/more', to: 'about#more'
- get '/terms', to: 'about#terms'
+
+ get '/privacy-policy', to: 'privacy#show', as: :privacy_policy
+ get '/terms', to: redirect('/privacy-policy')
match '/', via: [:post, :put, :patch, :delete], to: 'application#raise_not_found', format: false
match '*unmatched_route', via: :all, to: 'application#raise_not_found', format: false
diff --git a/config/settings.yml b/config/settings.yml
index bb2720ec24..16f870b335 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -82,6 +82,7 @@ defaults: &defaults
outgoing_spoilers: ''
require_invite_text: false
captcha_enabled: false
+ backups_retention_period: 7
development:
<<: *defaults
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 2a38714684..e3156aa346 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -25,22 +25,14 @@
every: '5m'
class: Scheduler::IndexingScheduler
queue: scheduler
- media_cleanup_scheduler:
+ vacuum_scheduler:
cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *'
- class: Scheduler::MediaCleanupScheduler
- queue: scheduler
- feed_cleanup_scheduler:
- cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * *'
- class: Scheduler::FeedCleanupScheduler
+ class: Scheduler::VacuumScheduler
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
- queue: scheduler
user_cleanup_scheduler:
cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *'
class: Scheduler::UserCleanupScheduler
@@ -49,14 +41,6 @@
cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *'
class: Scheduler::IpCleanupScheduler
queue: scheduler
- email_scheduler:
- cron: '0 10 * * 2'
- class: Scheduler::EmailScheduler
- queue: scheduler
- backup_cleanup_scheduler:
- cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *'
- class: Scheduler::BackupCleanupScheduler
- queue: scheduler
pghero_scheduler:
cron: '0 0 * * *'
class: Scheduler::PgheroScheduler
diff --git a/config/webpack/production.js b/config/webpack/production.js
index cd3d01035c..79dcebc7c4 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -1,29 +1,16 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const path = require('path');
-const { URL } = require('url');
+const { createHash } = require('crypto');
+const { readFileSync } = require('fs');
+const { resolve } = require('path');
const { merge } = require('webpack-merge');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
-const OfflinePlugin = require('offline-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
-const { output } = require('./configuration');
+const { InjectManifest } = require('workbox-webpack-plugin');
const sharedConfig = require('./shared');
-let attachmentHost;
-
-if (process.env.S3_ENABLED === 'true') {
- if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) {
- attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST;
- } else {
- attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`;
- }
-} else if (process.env.SWIFT_ENABLED === 'true') {
- const { host } = new URL(process.env.SWIFT_OBJECT_URL);
- attachmentHost = host;
-} else {
- attachmentHost = null;
-}
+const root = resolve(__dirname, '..', '..');
module.exports = merge(sharedConfig, {
mode: 'production',
@@ -52,47 +39,28 @@ module.exports = merge(sharedConfig, {
openAnalyzer: false,
logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout
}),
- new OfflinePlugin({
- publicPath: output.publicPath, // sw.js must be served from the root to avoid scope issues
- safeToUseOptionalCaches: true,
- caches: {
- main: [':rest:'],
- additional: [':externals:'],
- optional: [
- '**/locale_*.js', // don't fetch every locale; the user only needs one
- '**/*_polyfills-*.js', // the user may not need polyfills
- '**/*.woff2', // the user may have system-fonts enabled
- // images/audio can be cached on-demand
- '**/*.png',
- '**/*.jpg',
- '**/*.jpeg',
- '**/*.svg',
- '**/*.mp3',
- '**/*.ogg',
- ],
- },
- externals: [
- '/emoji/1f602.svg', // used for emoji picker dropdown
- '/emoji/sheet_10.png', // used in emoji-mart
- ],
- excludes: [
- '**/*.gz',
- '**/*.map',
- 'stats.json',
- 'report.html',
- // any browser that supports ServiceWorker will support woff2
- '**/*.eot',
- '**/*.ttf',
- '**/*-webfont-*.svg',
- '**/*.woff',
+ new InjectManifest({
+ additionalManifestEntries: ['1f602.svg', 'sheet_13.png'].map((filename) => {
+ const path = resolve(root, 'public', 'emoji', filename);
+ const body = readFileSync(path);
+ const md5 = createHash('md5');
+
+ md5.update(body);
+
+ return {
+ revision: md5.digest('hex'),
+ url: `/emoji/${filename}`,
+ };
+ }),
+ exclude: [
+ /(?:base|extra)_polyfills-.*\.js$/,
+ /locale_.*\.js$/,
+ /mailer-.*\.(?:css|js)$/,
],
- ServiceWorker: {
- entry: `imports-loader?additionalCode=${encodeURIComponent(`var ATTACHMENT_HOST=${JSON.stringify(attachmentHost)};`)}!${encodeURI(path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'))}`,
- cacheName: 'mastodon',
- output: '../assets/sw.js',
- publicPath: '/sw.js',
- minify: true,
- },
+ include: [/\.js$/, /\.css$/],
+ maximumFileSizeToCacheInBytes: 2 * 1_024 * 1_024, // 2 MiB
+ swDest: resolve(root, 'public', 'packs', 'sw.js'),
+ swSrc: resolve(root, 'app', 'javascript', 'mastodon', 'service_worker', 'entry.js'),
}),
],
});
diff --git a/db/migrate/20220611210335_create_user_roles.rb b/db/migrate/20220611210335_create_user_roles.rb
new file mode 100644
index 0000000000..6b7f2b6371
--- /dev/null
+++ b/db/migrate/20220611210335_create_user_roles.rb
@@ -0,0 +1,13 @@
+class CreateUserRoles < ActiveRecord::Migration[6.1]
+ def change
+ create_table :user_roles do |t|
+ t.string :name, null: false, default: ''
+ t.string :color, null: false, default: ''
+ t.integer :position, null: false, default: 0
+ t.bigint :permissions, null: false, default: 0
+ t.boolean :highlighted, null: false, default: false
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20220611212541_add_role_id_to_users.rb b/db/migrate/20220611212541_add_role_id_to_users.rb
new file mode 100644
index 0000000000..2fda647d4c
--- /dev/null
+++ b/db/migrate/20220611212541_add_role_id_to_users.rb
@@ -0,0 +1,8 @@
+class AddRoleIdToUsers < ActiveRecord::Migration[6.1]
+ disable_ddl_transaction!
+
+ def change
+ safety_assured { add_reference :users, :role, foreign_key: { to_table: 'user_roles', on_delete: :nullify }, index: false }
+ add_index :users, :role_id, algorithm: :concurrently, where: 'role_id IS NOT NULL'
+ end
+end
diff --git a/db/migrate/20220710102457_add_display_name_to_tags.rb b/db/migrate/20220710102457_add_display_name_to_tags.rb
new file mode 100644
index 0000000000..aa78676459
--- /dev/null
+++ b/db/migrate/20220710102457_add_display_name_to_tags.rb
@@ -0,0 +1,5 @@
+class AddDisplayNameToTags < ActiveRecord::Migration[6.1]
+ def change
+ add_column :tags, :display_name, :string
+ end
+end
diff --git a/db/migrate/20220714171049_create_tag_follows.rb b/db/migrate/20220714171049_create_tag_follows.rb
new file mode 100644
index 0000000000..a393e90f50
--- /dev/null
+++ b/db/migrate/20220714171049_create_tag_follows.rb
@@ -0,0 +1,12 @@
+class CreateTagFollows < ActiveRecord::Migration[6.1]
+ def change
+ create_table :tag_follows do |t|
+ t.belongs_to :tag, null: false, foreign_key: { on_delete: :cascade }
+ t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade }, index: false
+
+ t.timestamps
+ end
+
+ add_index :tag_follows, [:account_id, :tag_id], unique: true
+ end
+end
diff --git a/db/migrate/20220808101323_create_custom_filter_statuses.rb b/db/migrate/20220808101323_create_custom_filter_statuses.rb
new file mode 100644
index 0000000000..52f7037491
--- /dev/null
+++ b/db/migrate/20220808101323_create_custom_filter_statuses.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class CreateCustomFilterStatuses < ActiveRecord::Migration[6.1]
+ def change
+ create_table :custom_filter_statuses do |t|
+ t.belongs_to :custom_filter, foreign_key: { on_delete: :cascade }, null: false
+ t.belongs_to :status, foreign_key: { on_delete: :cascade }, null: false
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb
new file mode 100644
index 0000000000..2cb8cddf19
--- /dev/null
+++ b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb
@@ -0,0 +1,7 @@
+class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1]
+ def change
+ add_column :admin_action_logs, :human_identifier, :string
+ add_column :admin_action_logs, :route_param, :string
+ add_column :admin_action_logs, :permalink, :string
+ end
+end
diff --git a/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb
new file mode 100644
index 0000000000..5b3ec47275
--- /dev/null
+++ b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb
@@ -0,0 +1,5 @@
+class ChangeCanonicalEmailBlocksNullable < ActiveRecord::Migration[6.1]
+ def change
+ safety_assured { change_column :canonical_email_blocks, :reference_account_id, :bigint, null: true, default: nil }
+ end
+end
diff --git a/db/migrate/20220829192633_add_languages_to_follows.rb b/db/migrate/20220829192633_add_languages_to_follows.rb
new file mode 100644
index 0000000000..f6cf48880a
--- /dev/null
+++ b/db/migrate/20220829192633_add_languages_to_follows.rb
@@ -0,0 +1,5 @@
+class AddLanguagesToFollows < ActiveRecord::Migration[6.1]
+ def change
+ add_column :follows, :languages, :string, array: true
+ end
+end
diff --git a/db/migrate/20220829192658_add_languages_to_follow_requests.rb b/db/migrate/20220829192658_add_languages_to_follow_requests.rb
new file mode 100644
index 0000000000..f98fabb220
--- /dev/null
+++ b/db/migrate/20220829192658_add_languages_to_follow_requests.rb
@@ -0,0 +1,5 @@
+class AddLanguagesToFollowRequests < ActiveRecord::Migration[6.1]
+ def change
+ add_column :follow_requests, :languages, :string, array: true
+ end
+end
diff --git a/db/post_migrate/20220617202502_migrate_roles.rb b/db/post_migrate/20220617202502_migrate_roles.rb
new file mode 100644
index 0000000000..b7a7b22012
--- /dev/null
+++ b/db/post_migrate/20220617202502_migrate_roles.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class MigrateRoles < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ class UserRole < ApplicationRecord; end
+ class User < ApplicationRecord; end
+
+ def up
+ load Rails.root.join('db', 'seeds', '03_roles.rb')
+
+ admin_role = UserRole.find_by(name: 'Admin')
+ moderator_role = UserRole.find_by(name: 'Moderator')
+
+ User.where(admin: true).in_batches.update_all(role_id: admin_role.id)
+ User.where(moderator: true).in_batches.update_all(role_id: moderator_role.id)
+ end
+
+ def down
+ admin_role = UserRole.find_by(name: 'Admin')
+ moderator_role = UserRole.find_by(name: 'Moderator')
+
+ User.where(role_id: admin_role.id).in_batches.update_all(admin: true) if admin_role
+ User.where(role_id: moderator_role.id).in_batches.update_all(moderator: true) if moderator_role
+ end
+end
diff --git a/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb b/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb
new file mode 100644
index 0000000000..254690cc3a
--- /dev/null
+++ b/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+class MigrateSettingsToUserRoles < ActiveRecord::Migration[6.1]
+ disable_ddl_transaction!
+
+ class UserRole < ApplicationRecord; end
+
+ def up
+ owner_role = UserRole.find_by(name: 'Owner')
+ admin_role = UserRole.find_by(name: 'Admin')
+ moderator_role = UserRole.find_by(name: 'Moderator')
+ everyone_role = UserRole.find_by(id: -99)
+
+ min_invite_role = Setting.min_invite_role
+ show_staff_badge = Setting.show_staff_badge
+
+ if everyone_role
+ everyone_role.permissions &= ~::UserRole::FLAGS[:invite_users] unless min_invite_role == 'user'
+ everyone_role.save
+ end
+
+ if owner_role
+ owner_role.highlighted = show_staff_badge
+ owner_role.save
+ end
+
+ if admin_role
+ admin_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(admin moderator).include?(min_invite_role)
+ admin_role.highlighted = show_staff_badge
+ admin_role.save
+ end
+
+ if moderator_role
+ moderator_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(moderator).include?(min_invite_role)
+ moderator_role.highlighted = show_staff_badge
+ moderator_role.save
+ end
+ end
+
+ def down; end
+end
diff --git a/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb
new file mode 100644
index 0000000000..7ed34a3efc
--- /dev/null
+++ b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class FixCustomFilterKeywordsIdSeq < ActiveRecord::Migration[6.1]
+ disable_ddl_transaction!
+
+ def up
+ # 20220613110711 manually inserts items with set `id` in the database, but
+ # we also need to bump the sequence number, otherwise
+ safety_assured do
+ execute <<-SQL.squish
+ BEGIN;
+ LOCK TABLE custom_filter_keywords IN EXCLUSIVE MODE;
+ SELECT setval('custom_filter_keywords_id_seq'::regclass, id) FROM custom_filter_keywords ORDER BY id DESC LIMIT 1;
+ COMMIT;
+ SQL
+ end
+ end
+
+ def down; end
+end
diff --git a/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb
new file mode 100644
index 0000000000..c42d5df8fb
--- /dev/null
+++ b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class RemoveRecordedChangesFromAdminActionLogs < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ safety_assured { remove_column :admin_action_logs, :recorded_changes, :text }
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 8a1565e978..5306c61bec 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2022_06_13_110903) do
+ActiveRecord::Schema.define(version: 2022_08_29_192658) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -205,9 +205,11 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.string "action", default: "", null: false
t.string "target_type"
t.bigint "target_id"
- t.text "recorded_changes", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.string "human_identifier"
+ t.string "route_param"
+ t.string "permalink"
t.index ["account_id"], name: "index_admin_action_logs_on_account_id"
t.index ["target_type", "target_id"], name: "index_admin_action_logs_on_target_type_and_target_id"
end
@@ -294,7 +296,7 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
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.bigint "reference_account_id"
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
@@ -348,6 +350,15 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.index ["custom_filter_id"], name: "index_custom_filter_keywords_on_custom_filter_id"
end
+ create_table "custom_filter_statuses", force: :cascade do |t|
+ t.bigint "custom_filter_id", null: false
+ t.bigint "status_id", null: false
+ t.datetime "created_at", precision: 6, null: false
+ t.datetime "updated_at", precision: 6, null: false
+ t.index ["custom_filter_id"], name: "index_custom_filter_statuses_on_custom_filter_id"
+ t.index ["status_id"], name: "index_custom_filter_statuses_on_status_id"
+ end
+
create_table "custom_filters", force: :cascade do |t|
t.bigint "account_id"
t.datetime "expires_at"
@@ -450,6 +461,7 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.boolean "show_reblogs", default: true, null: false
t.string "uri"
t.boolean "notify", default: false, null: false
+ t.string "languages", array: true
t.index ["account_id", "target_account_id"], name: "index_follow_requests_on_account_id_and_target_account_id", unique: true
end
@@ -461,6 +473,7 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.boolean "show_reblogs", default: true, null: false
t.string "uri"
t.boolean "notify", default: false, null: false
+ t.string "languages", array: true
t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true
t.index ["target_account_id"], name: "index_follows_on_target_account_id"
end
@@ -931,6 +944,15 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.datetime "updated_at", null: false
end
+ create_table "tag_follows", force: :cascade do |t|
+ t.bigint "tag_id", null: false
+ 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", "tag_id"], name: "index_tag_follows_on_account_id_and_tag_id", unique: true
+ t.index ["tag_id"], name: "index_tag_follows_on_tag_id"
+ end
+
create_table "tags", force: :cascade do |t|
t.string "name", default: "", null: false
t.datetime "created_at", null: false
@@ -943,6 +965,7 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.datetime "last_status_at"
t.float "max_score"
t.datetime "max_score_at"
+ t.string "display_name"
t.index "lower((name)::text) text_pattern_ops", name: "index_tags_on_name_lower_btree", unique: true
end
@@ -971,6 +994,16 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.index ["user_id"], name: "index_user_invite_requests_on_user_id"
end
+ create_table "user_roles", force: :cascade do |t|
+ t.string "name", default: "", null: false
+ t.string "color", default: "", null: false
+ t.integer "position", default: 0, null: false
+ t.bigint "permissions", default: 0, null: false
+ t.boolean "highlighted", default: false, null: false
+ t.datetime "created_at", precision: 6, null: false
+ t.datetime "updated_at", precision: 6, null: false
+ end
+
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.datetime "created_at", null: false
@@ -1006,11 +1039,13 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
t.string "webauthn_id"
t.inet "sign_up_ip"
t.boolean "skip_sign_in_token"
+ t.bigint "role_id"
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", where: "(created_by_application_id IS NOT NULL)"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, opclass: :text_pattern_ops, where: "(reset_password_token IS NOT NULL)"
+ t.index ["role_id"], name: "index_users_on_role_id", where: "(role_id IS NOT NULL)"
end
create_table "web_push_subscriptions", force: :cascade do |t|
@@ -1094,6 +1129,8 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
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_filter_keywords", "custom_filters", on_delete: :cascade
+ add_foreign_key "custom_filter_statuses", "custom_filters", on_delete: :cascade
+ add_foreign_key "custom_filter_statuses", "statuses", on_delete: :cascade
add_foreign_key "custom_filters", "accounts", on_delete: :cascade
add_foreign_key "devices", "accounts", on_delete: :cascade
add_foreign_key "devices", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade
@@ -1157,11 +1194,14 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do
add_foreign_key "statuses", "statuses", column: "reblog_of_id", on_delete: :cascade
add_foreign_key "statuses_tags", "statuses", on_delete: :cascade
add_foreign_key "statuses_tags", "tags", name: "fk_3081861e21", on_delete: :cascade
+ add_foreign_key "tag_follows", "accounts", on_delete: :cascade
+ add_foreign_key "tag_follows", "tags", on_delete: :cascade
add_foreign_key "tombstones", "accounts", on_delete: :cascade
add_foreign_key "user_invite_requests", "users", on_delete: :cascade
add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade
add_foreign_key "users", "invites", on_delete: :nullify
add_foreign_key "users", "oauth_applications", column: "created_by_application_id", on_delete: :nullify
+ add_foreign_key "users", "user_roles", column: "role_id", on_delete: :nullify
add_foreign_key "web_push_subscriptions", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade
add_foreign_key "web_push_subscriptions", "users", on_delete: :cascade
add_foreign_key "web_settings", "users", name: "fk_11910667b2", on_delete: :cascade
diff --git a/db/seeds.rb b/db/seeds.rb
index 0bfb5d0db5..1ca300de73 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,11 +1,5 @@
-Doorkeeper::Application.create!(name: 'Web', superapp: true, redirect_uri: Doorkeeper.configuration.native_redirect_uri, scopes: 'read write follow push')
+# frozen_string_literal: true
-domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain
-account = Account.find_or_initialize_by(id: -99, actor_type: 'Application', locked: true, username: domain)
-account.save!
-
-if Rails.env.development?
- admin = Account.where(username: 'admin').first_or_initialize(username: 'admin')
- admin.save(validate: false)
- User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin, agreement: true, approved: true).save!
+Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed|
+ load seed
end
diff --git a/db/seeds/01_web_app.rb b/db/seeds/01_web_app.rb
new file mode 100644
index 0000000000..a457a883b3
--- /dev/null
+++ b/db/seeds/01_web_app.rb
@@ -0,0 +1 @@
+Doorkeeper::Application.create_with(name: 'Web', redirect_uri: Doorkeeper.configuration.native_redirect_uri, scopes: 'read write follow push').find_or_create_by(superapp: true)
diff --git a/db/seeds/02_instance_actor.rb b/db/seeds/02_instance_actor.rb
new file mode 100644
index 0000000000..39186b2734
--- /dev/null
+++ b/db/seeds/02_instance_actor.rb
@@ -0,0 +1 @@
+Account.create_with(actor_type: 'Application', locked: true, username: ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain).find_or_create_by(id: -99)
diff --git a/db/seeds/03_roles.rb b/db/seeds/03_roles.rb
new file mode 100644
index 0000000000..7fedf0f711
--- /dev/null
+++ b/db/seeds/03_roles.rb
@@ -0,0 +1,9 @@
+# Pre-create base role
+UserRole.everyone
+
+# Create default roles defined in config file
+default_roles = YAML.load_file(Rails.root.join('config', 'roles.yml'))
+
+default_roles.each do |_, config|
+ UserRole.create_with(position: config['position'], permissions_as_keys: config['permissions'], highlighted: true).find_or_create_by(name: config['name'])
+end
diff --git a/db/seeds/04_admin.rb b/db/seeds/04_admin.rb
new file mode 100644
index 0000000000..a67040e4ec
--- /dev/null
+++ b/db/seeds/04_admin.rb
@@ -0,0 +1,8 @@
+if Rails.env.development?
+ domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain
+
+ admin = Account.where(username: 'admin').first_or_initialize(username: 'admin')
+ admin.save(validate: false)
+
+ User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, role: UserRole.find_by(name: 'Owner'), account: admin, agreement: true, approved: true).save!
+end
diff --git a/docker-compose.yml b/docker-compose.yml
index d86cb55d21..c534286c76 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,7 +15,7 @@ services:
redis:
restart: always
- image: redis:6-alpine
+ image: redis:7-alpine
networks:
- internal_network
healthcheck:
diff --git a/lib/exceptions.rb b/lib/exceptions.rb
index 0c677b6605..3c5ba226b1 100644
--- a/lib/exceptions.rb
+++ b/lib/exceptions.rb
@@ -25,4 +25,13 @@ module Mastodon
end
end
end
+
+ class PrivateNetworkAddressError < HostValidationError
+ attr_reader :host
+
+ def initialize(host)
+ @host = host
+ super()
+ end
+ end
end
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index 7256d1da98..558f4d3c41 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -54,10 +54,10 @@ module Mastodon
option :email, required: true
option :confirmed, type: :boolean
- option :role, default: 'user', enum: %w(user moderator admin)
+ option :role
option :reattach, type: :boolean
option :force, type: :boolean
- desc 'create USERNAME', 'Create a new user'
+ desc 'create USERNAME', 'Create a new user account'
long_desc <<-LONG_DESC
Create a new user account with a given USERNAME and an
e-mail address provided with --email.
@@ -65,8 +65,7 @@ module Mastodon
With the --confirmed option, the confirmation e-mail will
be skipped and the account will be active straight away.
- With the --role option one of "user", "admin" or "moderator"
- can be supplied. Defaults to "user"
+ With the --role option, the role can be supplied.
With the --reattach option, the new user will be reattached
to a given existing username of an old account. If the old
@@ -75,9 +74,22 @@ module Mastodon
username to the new account anyway.
LONG_DESC
def create(username)
+ role_id = nil
+
+ if options[:role]
+ role = UserRole.find_by(name: options[:role])
+
+ if role.nil?
+ say('Cannot find user role with that name', :red)
+ exit(1)
+ end
+
+ role_id = role.id
+ end
+
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, role_id: role_id, confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true)
if options[:reattach]
account = Account.find_local(username) || Account.new(username: username)
@@ -106,14 +118,14 @@ module Mastodon
user.errors.to_h.each do |key, error|
say('Failure/Error: ', :red)
say(key)
- say(' ' + error, :red)
+ say(" #{error}", :red)
end
exit(1)
end
end
- option :role, enum: %w(user moderator admin)
+ option :role
option :email
option :confirm, type: :boolean
option :enable, type: :boolean
@@ -121,12 +133,11 @@ module Mastodon
option :disable_2fa, type: :boolean
option :approve, type: :boolean
option :reset_password, type: :boolean
- desc 'modify USERNAME', 'Modify a user'
+ desc 'modify USERNAME', 'Modify a user account'
long_desc <<-LONG_DESC
Modify a user account.
- With the --role option, update the user's role to one of "user",
- "moderator" or "admin".
+ With the --role option, update the user's role.
With the --email option, update the user's e-mail address. With
the --confirm option, mark the user's e-mail as confirmed.
@@ -152,8 +163,14 @@ module Mastodon
end
if options[:role]
- user.admin = options[:role] == 'admin'
- user.moderator = options[:role] == 'moderator'
+ role = UserRole.find_by(name: options[:role])
+
+ if role.nil?
+ say('Cannot find user role with that name', :red)
+ exit(1)
+ end
+
+ user.role_id = role.id
end
password = SecureRandom.hex if options[:reset_password]
@@ -172,7 +189,7 @@ module Mastodon
user.errors.to_h.each do |key, error|
say('Failure/Error: ', :red)
say(key)
- say(' ' + error, :red)
+ say(" #{error}", :red)
end
exit(1)
@@ -319,7 +336,7 @@ module Mastodon
unless skip_domains.empty?
say('The following domains were not available during the check:', :yellow)
- skip_domains.each { |domain| say(' ' + domain) }
+ skip_domains.each { |domain| say(" #{domain}") }
end
end
diff --git a/lib/mastodon/canonical_email_blocks_cli.rb b/lib/mastodon/canonical_email_blocks_cli.rb
index 64b72e6031..ec228d466a 100644
--- a/lib/mastodon/canonical_email_blocks_cli.rb
+++ b/lib/mastodon/canonical_email_blocks_cli.rb
@@ -18,17 +18,15 @@ module Mastodon
When suspending a local user, a hash of a "canonical" version of their e-mail
address is stored to prevent them from signing up again.
- This command can be used to find whether a known email address is blocked,
- and if so, which account it was attached to.
+ This command can be used to find whether a known email address is blocked.
LONG_DESC
def find(email)
- accts = CanonicalEmailBlock.find_blocks(email).map(&:reference_account).map(&:acct).to_a
+ accts = CanonicalEmailBlock.matching_email(email)
+
if accts.empty?
- say("#{email} is not blocked", :yellow)
+ say("#{email} is not blocked", :green)
else
- accts.each do |acct|
- say(acct, :white)
- end
+ say("#{email} is blocked", :red)
end
end
@@ -40,24 +38,13 @@ module Mastodon
This command allows removing a canonical email block.
LONG_DESC
def remove(email)
- blocks = CanonicalEmailBlock.find_blocks(email)
+ blocks = CanonicalEmailBlock.matching_email(email)
+
if blocks.empty?
- say("#{email} is not blocked", :yellow)
+ say("#{email} is not blocked", :green)
else
blocks.destroy_all
- say("Removed canonical email block for #{email}", :green)
- end
- end
-
- private
-
- def color(processed, failed)
- if !processed.zero? && failed.zero?
- :green
- elsif failed.zero?
- :yellow
- else
- :red
+ say("Unblocked #{email}", :green)
end
end
end
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 36ca71844f..bba4a1bd72 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -187,6 +187,7 @@ module Mastodon
option :account, type: :string
option :domain, type: :string
option :status, type: :numeric
+ option :days, type: :numeric
option :concurrency, type: :numeric, default: 5, aliases: [:c]
option :verbose, type: :boolean, default: false, aliases: [:v]
option :dry_run, type: :boolean, default: false
@@ -204,6 +205,8 @@ module Mastodon
Use the --domain option to download attachments from a specific domain.
+ Use the --days option to limit attachments created within days.
+
By default, attachments that are believed to be already downloaded will
not be re-downloaded. To force re-download of every URL, use --force.
DESC
@@ -224,10 +227,16 @@ module Mastodon
scope = MediaAttachment.where(account_id: account.id)
elsif options[:domain]
scope = MediaAttachment.joins(:account).merge(Account.by_domain_and_subdomains(options[:domain]))
+ elsif options[:days].present?
+ scope = MediaAttachment.remote
else
exit(1)
end
+ if options[:days].present?
+ scope = scope.where('media_attachments.id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false))
+ end
+
processed, aggregate = parallelize_with_progress(scope) do |media_attachment|
next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?)
next if DomainBlock.reject_media?(media_attachment.account.domain)
diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb
index b579ebc143..b206854ab3 100644
--- a/lib/mastodon/search_cli.rb
+++ b/lib/mastodon/search_cli.rb
@@ -30,7 +30,7 @@ module Mastodon
changed since the last run. Index upgrades erase index data.
Even if creating or upgrading indices is not necessary, data from the
- database will be imported into the indices, unless overriden with --no-import.
+ database will be imported into the indices, unless overridden with --no-import.
LONG_DESC
def deploy
if options[:concurrency] < 1
diff --git a/lib/paperclip/transcoder.rb b/lib/paperclip/transcoder.rb
index afd9f58ff6..b3b55f82fb 100644
--- a/lib/paperclip/transcoder.rb
+++ b/lib/paperclip/transcoder.rb
@@ -40,8 +40,10 @@ module Paperclip
@output_options['f'] = 'image2'
@output_options['vframes'] = 1
when 'mp4'
- @output_options['acodec'] = 'aac'
- @output_options['strict'] = 'experimental'
+ unless eligible_to_passthrough?(metadata)
+ @output_options['acodec'] = 'aac'
+ @output_options['strict'] = 'experimental'
+ end
if high_vfr?(metadata) && !eligible_to_passthrough?(metadata)
@output_options['vsync'] = 'vfr'
diff --git a/lib/simple_navigation/item_extensions.rb b/lib/simple_navigation/item_extensions.rb
new file mode 100644
index 0000000000..28af37a188
--- /dev/null
+++ b/lib/simple_navigation/item_extensions.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module SimpleNavigation
+ module ItemExtensions
+ def url
+ if @url.nil? && @sub_navigation
+ @sub_navigation.items.first.url
+ else
+ @url
+ end
+ end
+ end
+end
+
+SimpleNavigation::Item.prepend(SimpleNavigation::ItemExtensions)
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index d652468b37..0ccfc9f29f 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -11,7 +11,7 @@ namespace :mastodon do
# When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`.
# This happens before application environment configuration and sets REDIS_URL etc.
# These variables are then used even when REDIS_HOST etc. are changed, so clear them
- # out so they don't interfer with our new configuration.
+ # out so they don't interfere with our new configuration.
ENV.delete('REDIS_URL')
ENV.delete('CACHE_REDIS_URL')
ENV.delete('SIDEKIQ_REDIS_URL')
diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf
deleted file mode 100644
index 37c8a451a3..0000000000
--- a/nanobox/nginx-local.conf
+++ /dev/null
@@ -1,92 +0,0 @@
-worker_processes 1;
-daemon off;
-
-events {
- worker_connections 1024;
-}
-
-http {
- include /data/etc/nginx/mime.types;
- sendfile on;
-
- gzip on;
- gzip_disable "MSIE [1-6]\.";
- gzip_vary on;
- gzip_proxied any;
- gzip_comp_level 6;
- gzip_buffers 16 8k;
- gzip_min_length 500;
- gzip_http_version 1.1;
- gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
-
- # Proxy upstream to the puma process
- upstream rails {
- server 127.0.0.1:3000;
- }
-
- # Proxy upstream to the node process
- upstream node {
- server 127.0.0.1:4000;
- }
-
- map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
- }
-
- # Configuration for Nginx
- server {
- # Listen on port 8080
- listen 8080;
-
- keepalive_timeout 70;
- client_max_body_size 80M;
-
- root /app/public;
-
- add_header Strict-Transport-Security "max-age=31536000";
-
- location / {
- try_files $uri @rails;
- }
-
- # Proxy connections to rails
- location @rails {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header Proxy "";
- proxy_pass_header Server;
-
- proxy_pass http://rails;
- proxy_buffering off;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
-
- tcp_nodelay on;
- }
-
- # Proxy connections to node
- location /api/v1/streaming {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header Proxy "";
-
- proxy_pass http://node;
- proxy_buffering off;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
-
- tcp_nodelay on;
- }
- }
-
- error_page 500 501 502 503 504 /500.html;
-}
diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb
deleted file mode 100644
index 4ea6e30fc9..0000000000
--- a/nanobox/nginx-stream.conf.erb
+++ /dev/null
@@ -1,66 +0,0 @@
-worker_processes 1;
-daemon off;
-
-events {
- worker_connections 1024;
-}
-
-http {
- include /data/etc/nginx/mime.types;
- sendfile on;
-
- gzip on;
- gzip_disable "MSIE [1-6]\.";
- gzip_vary on;
- gzip_proxied any;
- gzip_comp_level 6;
- gzip_buffers 16 8k;
- gzip_min_length 500;
- gzip_http_version 1.1;
- gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
-
- # Proxy upstream to the node process
- upstream node {
- server 127.0.0.1:4000;
- }
-
- map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
- }
-
- # Configuration for Nginx
- server {
- # Listen on port 8080
- listen 8080;
-
- keepalive_timeout 70;
- client_max_body_size 80M;
-
- root /app/public;
-
- add_header Strict-Transport-Security "max-age=31536000";
-
- location / {
- try_files $uri @node;
- }
-
- # Proxy connections to node
- location @node {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header Proxy "";
-
- proxy_pass http://node;
- proxy_buffering off;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
-
- tcp_nodelay on;
- }
- }
-}
diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb
deleted file mode 100644
index 182d992099..0000000000
--- a/nanobox/nginx-web.conf.erb
+++ /dev/null
@@ -1,90 +0,0 @@
-worker_processes 1;
-daemon off;
-
-events {
- worker_connections 1024;
-}
-
-http {
- include /data/etc/nginx/mime.types;
- sendfile on;
-
- gzip on;
- gzip_disable "MSIE [1-6]\.";
- gzip_vary on;
- gzip_proxied any;
- gzip_comp_level 6;
- gzip_buffers 16 8k;
- gzip_min_length 500;
- gzip_http_version 1.1;
- gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
-
- # Proxy upstream to the puma process
- upstream rails {
- server 127.0.0.1:3000;
- }
-
- map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
- }
-
- # Configuration for Nginx
- server {
- # Listen on port 8080
- listen 8080;
-
- keepalive_timeout 70;
- client_max_body_size 80M;
-
- root /app/public;
-
- add_header Strict-Transport-Security "max-age=31536000";
-
- location / {
- try_files $uri @rails;
- }
-
- location /sw.js {
- add_header Cache-Control "public, max-age=0";
- add_header Strict-Transport-Security "max-age=31536000";
- try_files $uri @rails;
- }
-
- location ~ ^/(emoji|packs|system/media_attachments/files|system/accounts/avatars) {
- add_header Cache-Control "public, max-age=31536000, immutable";
- add_header Strict-Transport-Security "max-age=31536000";
- try_files $uri @rails;
- }
-
- # Proxy connections to rails
- location @rails {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header Proxy "";
- proxy_pass_header Server;
-
- proxy_pass http://rails;
- proxy_buffering on;
- proxy_redirect off;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
-
- proxy_cache CACHE;
- proxy_cache_valid 200 7d;
- proxy_cache_valid 410 24h;
- proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
- add_header Strict-Transport-Security "max-age=31536000";
- add_header X-Cached $upstream_cache_status;
-
- tcp_nodelay on;
- }
- }
-
- proxy_cache_path /data/var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
-
- error_page 500 501 502 503 504 /500.html;
-}
diff --git a/package.json b/package.json
index c823438493..a044eaaade 100644
--- a/package.json
+++ b/package.json
@@ -24,16 +24,16 @@
},
"private": true,
"dependencies": {
- "@babel/core": "^7.18.6",
- "@babel/plugin-proposal-decorators": "^7.18.6",
+ "@babel/core": "^7.19.3",
+ "@babel/plugin-proposal-decorators": "^7.19.3",
"@babel/plugin-transform-react-inline-elements": "^7.18.6",
- "@babel/plugin-transform-runtime": "^7.18.6",
- "@babel/preset-env": "^7.18.6",
+ "@babel/plugin-transform-runtime": "^7.19.1",
+ "@babel/preset-env": "^7.19.3",
"@babel/preset-react": "^7.18.6",
- "@babel/runtime": "^7.18.6",
+ "@babel/runtime": "^7.19.0",
"@gamestdio/websocket": "^0.3.2",
"@github/webauthn-json": "^0.5.7",
- "@rails/ujs": "^6.1.6",
+ "@rails/ujs": "^6.1.7",
"array-includes": "^3.1.5",
"atrament": "0.2.4",
"arrow-key-navigation": "^1.2.0",
@@ -44,16 +44,16 @@
"babel-plugin-preval": "^5.1.0",
"babel-plugin-react-intl": "^6.2.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
- "blurhash": "^1.1.5",
- "classnames": "^2.3.1",
- "cocoon-js-vanilla": "^1.2.0",
+ "blurhash": "^2.0.3",
+ "classnames": "^2.3.2",
+ "cocoon-js-vanilla": "^1.3.0",
"color-blend": "^3.0.1",
"compression-webpack-plugin": "^6.1.1",
"cross-env": "^7.0.3",
"css-loader": "^5.2.7",
"cssnano": "^4.1.11",
"detect-passive-events": "^2.0.3",
- "dotenv": "^16.0.1",
+ "dotenv": "^16.0.3",
"emoji-mart": "npm:emoji-mart-lazyload",
"es6-symbol": "^3.1.3",
"escape-html": "^1.0.3",
@@ -65,7 +65,7 @@
"fuzzysort": "^1.9.0",
"glob": "^8.0.3",
"history": "^4.10.1",
- "http-link-header": "^1.0.4",
+ "http-link-header": "^1.0.5",
"immutable": "^4.1.0",
"imports-loader": "^1.2.0",
"intersection-observer": "^0.12.2",
@@ -74,20 +74,19 @@
"intl-relativeformat": "^6.4.3",
"is-nan": "^1.3.2",
"js-yaml": "^4.1.0",
- "jsdom": "^20.0.0",
+ "jsdom": "^20.0.1",
"lodash": "^4.17.21",
"mark-loader": "^0.1.6",
- "marky": "^1.2.4",
+ "marky": "^1.2.5",
"mini-css-extract-plugin": "^1.6.2",
"mkdirp": "^1.0.4",
"npmlog": "^6.0.2",
"object-assign": "^4.1.1",
"object-fit-images": "^3.2.3",
"object.values": "^1.1.5",
- "offline-plugin": "^5.0.7",
"path-complete-extname": "^1.0.0",
"pg": "^8.5.0",
- "postcss": "^8.4.14",
+ "postcss": "^8.4.17",
"postcss-loader": "^3.0.0",
"postcss-object-fit-images": "^1.1.2",
"promise.prototype.finally": "^3.1.3",
@@ -95,6 +94,7 @@
"punycode": "^2.1.0",
"react": "^16.14.0",
"react-dom": "^16.14.0",
+ "react-helmet": "^6.1.0",
"react-hotkeys": "^1.1.4",
"react-immutable-proptypes": "^2.2.0",
"react-immutable-pure-component": "^2.2.2",
@@ -103,15 +103,15 @@
"react-motion": "^0.5.2",
"react-notification": "^6.8.5",
"react-overlays": "^0.9.3",
- "react-redux": "^7.2.8",
- "react-redux-loading-bar": "^4.0.8",
+ "react-redux": "^7.2.9",
+ "react-redux-loading-bar": "^5.0.4",
"react-router-dom": "^4.1.1",
"react-router-scroll-4": "^1.0.0-beta.1",
- "react-select": "^5.3.2",
+ "react-select": "^5.4.0",
"react-sparklines": "^1.7.0",
"react-swipeable-views": "^0.14.0",
"react-textarea-autosize": "^8.3.4",
- "react-toggle": "^4.1.2",
+ "react-toggle": "^4.1.3",
"redis": "^4.0.6 <4.1.0",
"redux": "^4.2.0",
"redux-immutable": "^4.0.0",
@@ -121,7 +121,7 @@
"requestidlecallback": "^0.3.0",
"reselect": "^4.1.6",
"rimraf": "^3.0.2",
- "sass": "^1.53.0",
+ "sass": "^1.55.0",
"sass-loader": "^10.2.0",
"stacktrace-js": "^2.0.2",
"stringz": "^2.1.0",
@@ -134,33 +134,39 @@
"uuid": "^8.3.1",
"webpack": "^4.46.0",
"webpack-assets-manifest": "^4.0.6",
- "webpack-bundle-analyzer": "^4.5.0",
+ "webpack-bundle-analyzer": "^4.6.1",
"webpack-cli": "^3.3.12",
"webpack-merge": "^5.8.0",
"wicg-inert": "^3.1.2",
- "ws": "^8.8.0"
+ "workbox-expiration": "^6.5.4",
+ "workbox-precaching": "^6.5.4",
+ "workbox-routing": "^6.5.4",
+ "workbox-strategies": "^6.5.4",
+ "workbox-webpack-plugin": "^6.5.4",
+ "workbox-window": "^6.5.4",
+ "ws": "^8.9.0"
},
"devDependencies": {
- "@babel/eslint-parser": "^7.18.2",
- "@testing-library/jest-dom": "^5.16.4",
+ "@babel/eslint-parser": "^7.19.1",
+ "@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^12.1.5",
- "babel-jest": "^28.1.1",
+ "babel-jest": "^29.0.3",
"eslint": "^7.32.0",
"eslint-plugin-import": "~2.26.0",
- "eslint-plugin-jsx-a11y": "~6.6.0",
- "eslint-plugin-promise": "~6.0.0",
- "eslint-plugin-react": "~7.30.1",
- "jest": "^28.1.1",
- "jest-environment-jsdom": "^28.1.1",
- "postcss-scss": "^4.0.4",
+ "eslint-plugin-jsx-a11y": "~6.6.1",
+ "eslint-plugin-promise": "~6.0.1",
+ "eslint-plugin-react": "~7.31.8",
+ "jest": "^29.0.3",
+ "jest-environment-jsdom": "^29.0.3",
+ "postcss-scss": "^4.0.5",
"prettier": "^2.7.1",
"raf": "^3.4.1",
"react-intl-translations-manager": "^5.0.3",
"react-test-renderer": "^16.14.0",
- "stylelint": "^14.9.1",
- "stylelint-config-standard-scss": "^4.0.0",
+ "stylelint": "^14.13.0",
+ "stylelint-config-standard-scss": "^5.0.0",
"webpack-dev-server": "^3.11.3",
- "yargs": "^17.5.1"
+ "yargs": "^17.6.0"
},
"resolutions": {
"kind-of": "^6.0.3"
diff --git a/public/sw.js b/public/sw.js
index 1471a9e640..debb9af9dc 120000
--- a/public/sw.js
+++ b/public/sw.js
@@ -1 +1 @@
-assets/sw.js
\ No newline at end of file
+packs/sw.js
\ No newline at end of file
diff --git a/public/sw.js.map b/public/sw.js.map
new file mode 120000
index 0000000000..0734c81993
--- /dev/null
+++ b/public/sw.js.map
@@ -0,0 +1 @@
+packs/sw.js.map
\ No newline at end of file
diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb
index 03dddd8c13..40e395a647 100644
--- a/spec/controllers/about_controller_spec.rb
+++ b/spec/controllers/about_controller_spec.rb
@@ -31,16 +31,6 @@ RSpec.describe AboutController, type: :controller do
end
end
- describe 'GET #terms' do
- before do
- get :terms
- end
-
- it 'returns http success' do
- expect(response).to have_http_status(200)
- end
- end
-
describe 'helper_method :new_user' do
it 'returns a new User' do
user = @controller.view_context.new_user
diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb
index 662a89927d..12266c800b 100644
--- a/spec/controllers/accounts_controller_spec.rb
+++ b/spec/controllers/accounts_controller_spec.rb
@@ -420,7 +420,7 @@ RSpec.describe AccountsController, type: :controller do
let(:remote_account) { Fabricate(:account, domain: 'example.com') }
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
get :show, params: { username: account.username, format: format }
end
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index 4d87f80ced..f78d9abbf0 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
Fabricate(:status_pin, account: account)
Fabricate(:status_pin, account: account)
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index e233bd5605..c19bb8cae7 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -15,7 +15,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
end
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
end
describe 'GET #show' do
diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb
index 973ad83bb3..2f023197be 100644
--- a/spec/controllers/activitypub/inboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/inboxes_controller_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do
let(:remote_account) { nil }
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
end
describe 'POST #create' do
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index 04f0364472..74bf46a5eb 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -28,7 +28,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
end
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
end
describe 'GET #show' do
diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb
index a35957f24c..aee1a8b1ad 100644
--- a/spec/controllers/activitypub/replies_controller_spec.rb
+++ b/spec/controllers/activitypub/replies_controller_spec.rb
@@ -168,7 +168,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do
before do
stub_const 'ActivityPub::RepliesController::DESCENDANTS_LIMIT', 5
- allow(controller).to receive(:signed_request_account).and_return(remote_querier)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_querier)
Fabricate(:status, thread: status, visibility: :public)
Fabricate(:status, thread: status, visibility: :public)
diff --git a/spec/controllers/admin/account_moderation_notes_controller_spec.rb b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
index 410ce6543d..d3f3263f88 100644
--- a/spec/controllers/admin/account_moderation_notes_controller_spec.rb
+++ b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Admin::AccountModerationNotesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let(:target_account) { Fabricate(:account) }
before do
diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index 1779fb7c0b..1bd51a0c82 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
before { sign_in current_user, scope: :user }
describe 'GET #index' do
- let(:current_user) { Fabricate(:user, admin: true) }
+ let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
around do |example|
default_per_page = Account.default_per_page
@@ -60,7 +60,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
describe 'GET #show' do
- let(:current_user) { Fabricate(:user, admin: true) }
+ let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let(:account) { Fabricate(:account) }
it 'returns http success' do
@@ -72,15 +72,15 @@ RSpec.describe Admin::AccountsController, type: :controller do
describe 'POST #memorialize' do
subject { post :memorialize, params: { id: account.id } }
- let(:current_user) { Fabricate(:user, admin: current_user_admin) }
+ let(:current_user) { Fabricate(:user, role: current_role) }
let(:account) { user.account }
- let(:user) { Fabricate(:user, admin: target_user_admin) }
+ let(:user) { Fabricate(:user, role: target_role) }
context 'when user is admin' do
- let(:current_user_admin) { true }
+ let(:current_role) { UserRole.find_by(name: 'Admin') }
context 'when target user is admin' do
- let(:target_user_admin) { true }
+ let(:target_role) { UserRole.find_by(name: 'Admin') }
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
@@ -89,7 +89,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when target user is not admin' do
- let(:target_user_admin) { false }
+ let(:target_role) { UserRole.find_by(name: 'Moderator') }
it 'succeeds in memorializing account' do
is_expected.to redirect_to admin_account_path(account.id)
@@ -99,10 +99,10 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when user is not admin' do
- let(:current_user_admin) { false }
+ let(:current_role) { UserRole.find_by(name: 'Moderator') }
context 'when target user is admin' do
- let(:target_user_admin) { true }
+ let(:target_role) { UserRole.find_by(name: 'Admin') }
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
@@ -111,7 +111,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when target user is not admin' do
- let(:target_user_admin) { false }
+ let(:target_role) { UserRole.find_by(name: 'Moderator') }
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
@@ -124,12 +124,12 @@ RSpec.describe Admin::AccountsController, type: :controller do
describe 'POST #enable' do
subject { post :enable, params: { id: account.id } }
- let(:current_user) { Fabricate(:user, admin: admin) }
+ let(:current_user) { Fabricate(:user, role: role) }
let(:account) { user.account }
let(:user) { Fabricate(:user, disabled: true) }
context 'when user is admin' do
- let(:admin) { true }
+ let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in enabling account' do
is_expected.to redirect_to admin_account_path(account.id)
@@ -138,7 +138,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when user is not admin' do
- let(:admin) { false }
+ let(:role) { UserRole.everyone }
it 'fails to enable account' do
is_expected.to have_http_status :forbidden
@@ -150,19 +150,23 @@ RSpec.describe Admin::AccountsController, type: :controller do
describe 'POST #redownload' do
subject { post :redownload, params: { id: account.id } }
- let(:current_user) { Fabricate(:user, admin: admin) }
- let(:account) { Fabricate(:account) }
+ let(:current_user) { Fabricate(:user, role: role) }
+ let(:account) { Fabricate(:account, domain: 'example.com') }
+
+ before do
+ allow_any_instance_of(ResolveAccountService).to receive(:call)
+ end
context 'when user is admin' do
- let(:admin) { true }
+ let(:role) { UserRole.find_by(name: 'Admin') }
- it 'succeeds in redownloadin' do
+ it 'succeeds in redownloading' do
is_expected.to redirect_to admin_account_path(account.id)
end
end
context 'when user is not admin' do
- let(:admin) { false }
+ let(:role) { UserRole.everyone }
it 'fails to redownload' do
is_expected.to have_http_status :forbidden
@@ -173,11 +177,11 @@ RSpec.describe Admin::AccountsController, type: :controller do
describe 'POST #remove_avatar' do
subject { post :remove_avatar, params: { id: account.id } }
- let(:current_user) { Fabricate(:user, admin: admin) }
+ let(:current_user) { Fabricate(:user, role: role) }
let(:account) { Fabricate(:account) }
context 'when user is admin' do
- let(:admin) { true }
+ let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in removing avatar' do
is_expected.to redirect_to admin_account_path(account.id)
@@ -185,7 +189,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when user is not admin' do
- let(:admin) { false }
+ let(:role) { UserRole.everyone }
it 'fails to remove avatar' do
is_expected.to have_http_status :forbidden
@@ -196,12 +200,12 @@ RSpec.describe Admin::AccountsController, type: :controller do
describe 'POST #unblock_email' do
subject { post :unblock_email, params: { id: account.id } }
- let(:current_user) { Fabricate(:user, admin: admin) }
+ let(:current_user) { Fabricate(:user, role: role) }
let(:account) { Fabricate(:account, suspended: true) }
let!(:email_block) { Fabricate(:canonical_email_block, reference_account: account) }
context 'when user is admin' do
- let(:admin) { true }
+ let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in removing email blocks' do
expect { subject }.to change { CanonicalEmailBlock.where(reference_account: account).count }.from(1).to(0)
@@ -214,7 +218,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
context 'when user is not admin' do
- let(:admin) { false }
+ let(:role) { UserRole.everyone }
it 'fails to remove avatar' do
subject
diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb
index 4720ed2e2b..c1957258fa 100644
--- a/spec/controllers/admin/action_logs_controller_spec.rb
+++ b/spec/controllers/admin/action_logs_controller_spec.rb
@@ -5,7 +5,7 @@ require 'rails_helper'
describe Admin::ActionLogsController, type: :controller do
describe 'GET #index' do
it 'returns 200' do
- sign_in Fabricate(:user, admin: true)
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin'))
get :index, params: { page: 1 }
expect(response).to have_http_status(200)
diff --git a/spec/controllers/admin/base_controller_spec.rb b/spec/controllers/admin/base_controller_spec.rb
index 9ac833623f..44be91951b 100644
--- a/spec/controllers/admin/base_controller_spec.rb
+++ b/spec/controllers/admin/base_controller_spec.rb
@@ -5,13 +5,14 @@ require 'rails_helper'
describe Admin::BaseController, type: :controller do
controller do
def success
+ authorize :dashboard, :index?
render 'admin/reports/show'
end
end
it 'requires administrator or moderator' do
routes.draw { get 'success' => 'admin/base#success' }
- sign_in(Fabricate(:user, admin: false, moderator: false))
+ sign_in(Fabricate(:user))
get :success
expect(response).to have_http_status(:forbidden)
@@ -19,14 +20,14 @@ describe Admin::BaseController, type: :controller do
it 'renders admin layout as a moderator' do
routes.draw { get 'success' => 'admin/base#success' }
- sign_in(Fabricate(:user, moderator: true))
+ sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator')))
get :success
expect(response).to render_template layout: 'admin'
end
it 'renders admin layout as an admin' do
routes.draw { get 'success' => 'admin/base#success' }
- sign_in(Fabricate(:user, admin: true))
+ sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Admin')))
get :success
expect(response).to render_template layout: 'admin'
end
diff --git a/spec/controllers/admin/change_email_controller_spec.rb b/spec/controllers/admin/change_email_controller_spec.rb
index e7f3f7c97d..cf8a27d394 100644
--- a/spec/controllers/admin/change_email_controller_spec.rb
+++ b/spec/controllers/admin/change_email_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Admin::ChangeEmailsController, type: :controller do
render_views
- let(:admin) { Fabricate(:user, admin: true) }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
sign_in admin
diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb
index 5b4f7e925c..6268903c4e 100644
--- a/spec/controllers/admin/confirmations_controller_spec.rb
+++ b/spec/controllers/admin/confirmations_controller_spec.rb
@@ -4,7 +4,7 @@ RSpec.describe Admin::ConfirmationsController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'POST #create' do
diff --git a/spec/controllers/admin/custom_emojis_controller_spec.rb b/spec/controllers/admin/custom_emojis_controller_spec.rb
index a8d96948ca..06cd0c22df 100644
--- a/spec/controllers/admin/custom_emojis_controller_spec.rb
+++ b/spec/controllers/admin/custom_emojis_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
describe Admin::CustomEmojisController do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
sign_in user, scope: :user
diff --git a/spec/controllers/admin/dashboard_controller_spec.rb b/spec/controllers/admin/dashboard_controller_spec.rb
index 7824854f9c..6231a09a24 100644
--- a/spec/controllers/admin/dashboard_controller_spec.rb
+++ b/spec/controllers/admin/dashboard_controller_spec.rb
@@ -12,7 +12,7 @@ describe Admin::DashboardController, type: :controller do
Admin::SystemCheck::Message.new(:rules_check, nil, admin_rules_path),
Admin::SystemCheck::Message.new(:sidekiq_process_check, 'foo, bar'),
])
- sign_in Fabricate(:user, admin: true)
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin'))
end
it 'returns 200' do
diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb
index 6a06f94069..7126577915 100644
--- a/spec/controllers/admin/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb
@@ -14,7 +14,7 @@ RSpec.describe Admin::Disputes::AppealsController, type: :controller do
end
describe 'POST #approve' do
- let(:current_user) { Fabricate(:user, admin: true) }
+ let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
allow(UserMailer).to receive(:appeal_approved).and_return(double('email', deliver_later: nil))
@@ -35,7 +35,7 @@ RSpec.describe Admin::Disputes::AppealsController, type: :controller do
end
describe 'POST #reject' do
- let(:current_user) { Fabricate(:user, admin: true) }
+ let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
allow(UserMailer).to receive(:appeal_rejected).and_return(double('email', deliver_later: nil))
diff --git a/spec/controllers/admin/domain_allows_controller_spec.rb b/spec/controllers/admin/domain_allows_controller_spec.rb
index 8bacdd3e40..6c4e677876 100644
--- a/spec/controllers/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/domain_allows_controller_spec.rb
@@ -4,7 +4,7 @@ RSpec.describe Admin::DomainAllowsController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #new' do
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index a35b2fb3b9..98cda50047 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -4,7 +4,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #new' do
diff --git a/spec/controllers/admin/email_domain_blocks_controller_spec.rb b/spec/controllers/admin/email_domain_blocks_controller_spec.rb
index cf194579da..e9cef4a94c 100644
--- a/spec/controllers/admin/email_domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/email_domain_blocks_controller_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Admin::EmailDomainBlocksController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #index' do
diff --git a/spec/controllers/admin/export_domain_allows_controller_spec.rb b/spec/controllers/admin/export_domain_allows_controller_spec.rb
index f6275c2d65..1e1a5ae7d4 100644
--- a/spec/controllers/admin/export_domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/export_domain_allows_controller_spec.rb
@@ -4,7 +4,7 @@ RSpec.describe Admin::ExportDomainAllowsController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #export' do
diff --git a/spec/controllers/admin/export_domain_blocks_controller_spec.rb b/spec/controllers/admin/export_domain_blocks_controller_spec.rb
index 0493df8591..8697e0c215 100644
--- a/spec/controllers/admin/export_domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/export_domain_blocks_controller_spec.rb
@@ -4,7 +4,7 @@ RSpec.describe Admin::ExportDomainBlocksController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #export' do
diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb
index 53427b8748..337f7a80c7 100644
--- a/spec/controllers/admin/instances_controller_spec.rb
+++ b/spec/controllers/admin/instances_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Admin::InstancesController, type: :controller do
render_views
- let(:current_user) { Fabricate(:user, admin: true) }
+ let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let!(:account) { Fabricate(:account, domain: 'popular') }
let!(:account2) { Fabricate(:account, domain: 'popular') }
@@ -35,11 +35,11 @@ RSpec.describe Admin::InstancesController, type: :controller do
describe 'DELETE #destroy' do
subject { delete :destroy, params: { id: Instance.first.id } }
- let(:current_user) { Fabricate(:user, admin: admin) }
+ let(:current_user) { Fabricate(:user, role: role) }
let(:account) { Fabricate(:account) }
context 'when user is admin' do
- let(:admin) { true }
+ let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in purging instance' do
is_expected.to redirect_to admin_instances_path
@@ -47,7 +47,7 @@ RSpec.describe Admin::InstancesController, type: :controller do
end
context 'when user is not admin' do
- let(:admin) { false }
+ let(:role) { nil }
it 'fails to purge instance' do
is_expected.to have_http_status :forbidden
diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb
index 449a699e40..1fb4887423 100644
--- a/spec/controllers/admin/invites_controller_spec.rb
+++ b/spec/controllers/admin/invites_controller_spec.rb
@@ -5,7 +5,7 @@ require 'rails_helper'
describe Admin::InvitesController do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
sign_in user, scope: :user
diff --git a/spec/controllers/admin/report_notes_controller_spec.rb b/spec/controllers/admin/report_notes_controller_spec.rb
index c0013f41ae..fa7572d186 100644
--- a/spec/controllers/admin/report_notes_controller_spec.rb
+++ b/spec/controllers/admin/report_notes_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
describe Admin::ReportNotesController do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
sign_in user, scope: :user
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index d421f0739c..4cd1524bf7 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
describe Admin::ReportsController do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
before do
sign_in user, scope: :user
end
diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb
index 28510b5afb..aeb172318b 100644
--- a/spec/controllers/admin/resets_controller_spec.rb
+++ b/spec/controllers/admin/resets_controller_spec.rb
@@ -5,7 +5,7 @@ describe Admin::ResetsController do
let(:account) { Fabricate(:account) }
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'POST #create' do
diff --git a/spec/controllers/admin/roles_controller_spec.rb b/spec/controllers/admin/roles_controller_spec.rb
index 8e0de73cbd..8ff8912054 100644
--- a/spec/controllers/admin/roles_controller_spec.rb
+++ b/spec/controllers/admin/roles_controller_spec.rb
@@ -3,31 +3,247 @@ require 'rails_helper'
describe Admin::RolesController do
render_views
- let(:admin) { Fabricate(:user, admin: true) }
+ let(:permissions) { UserRole::Flags::NONE }
+ let(:current_role) { UserRole.create(name: 'Foo', permissions: permissions, position: 10) }
+ let(:current_user) { Fabricate(:user, role: current_role) }
before do
- sign_in admin, scope: :user
+ sign_in current_user, scope: :user
end
- describe 'POST #promote' do
- subject { post :promote, params: { account_id: user.account_id } }
+ describe 'GET #index' do
+ before do
+ get :index
+ end
+
+ context 'when user does not have permission to manage roles' do
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
- let(:user) { Fabricate(:user, moderator: false, admin: false) }
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
- it 'promotes user' do
- expect(subject).to redirect_to admin_account_path(user.account_id)
- expect(user.reload).to be_moderator
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
end
end
- describe 'POST #demote' do
- subject { post :demote, params: { account_id: user.account_id } }
+ describe 'GET #new' do
+ before do
+ get :new
+ end
+
+ context 'when user does not have permission to manage roles' do
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+ end
+
+ describe 'POST #create' do
+ let(:selected_position) { 1 }
+ let(:selected_permissions_as_keys) { %w(manage_roles) }
+
+ before do
+ post :create, params: { user_role: { name: 'Bar', position: selected_position, permissions_as_keys: selected_permissions_as_keys } }
+ end
+
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+
+ context 'when new role\'s does not elevate above the user\'s role' do
+ let(:selected_position) { 1 }
+ let(:selected_permissions_as_keys) { %w(manage_roles) }
+
+ it 'redirects to roles page' do
+ expect(response).to redirect_to(admin_roles_path)
+ end
+
+ it 'creates new role' do
+ expect(UserRole.find_by(name: 'Bar')).to_not be_nil
+ end
+ end
+
+ context 'when new role\'s position is higher than user\'s role' do
+ let(:selected_position) { 100 }
+ let(:selected_permissions_as_keys) { %w(manage_roles) }
+
+ it 'renders new template' do
+ expect(response).to render_template(:new)
+ end
+
+ it 'does not create new role' do
+ expect(UserRole.find_by(name: 'Bar')).to be_nil
+ end
+ end
+
+ context 'when new role has permissions the user does not have' do
+ let(:selected_position) { 1 }
+ let(:selected_permissions_as_keys) { %w(manage_roles manage_users manage_reports) }
+
+ it 'renders new template' do
+ expect(response).to render_template(:new)
+ end
+
+ it 'does not create new role' do
+ expect(UserRole.find_by(name: 'Bar')).to be_nil
+ end
+ end
+
+ context 'when user has administrator permission' do
+ let(:permissions) { UserRole::FLAGS[:administrator] }
+
+ let(:selected_position) { 1 }
+ let(:selected_permissions_as_keys) { %w(manage_roles manage_users manage_reports) }
+
+ it 'redirects to roles page' do
+ expect(response).to redirect_to(admin_roles_path)
+ end
+
+ it 'creates new role' do
+ expect(UserRole.find_by(name: 'Bar')).to_not be_nil
+ end
+ end
+ end
+ end
+
+ describe 'GET #edit' do
+ let(:role_position) { 8 }
+ let(:role) { UserRole.create(name: 'Bar', permissions: UserRole::FLAGS[:manage_users], position: role_position) }
+
+ before do
+ get :edit, params: { id: role.id }
+ end
+
+ context 'when user does not have permission to manage roles' do
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+
+ context 'when user outranks the role' do
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+
+ context 'when role outranks user' do
+ let(:role_position) { current_role.position + 1 }
+
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+ end
+ end
+
+ describe 'PUT #update' do
+ let(:role_position) { 8 }
+ let(:role_permissions) { UserRole::FLAGS[:manage_users] }
+ let(:role) { UserRole.create(name: 'Bar', permissions: role_permissions, position: role_position) }
+
+ let(:selected_position) { 8 }
+ let(:selected_permissions_as_keys) { %w(manage_users) }
+
+ before do
+ put :update, params: { id: role.id, user_role: { name: 'Baz', position: selected_position, permissions_as_keys: selected_permissions_as_keys } }
+ end
+
+ context 'when user does not have permission to manage roles' do
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+
+ it 'does not update the role' do
+ expect(role.reload.name).to eq 'Bar'
+ end
+ end
+
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+
+ context 'when role has permissions the user doesn\'t' do
+ it 'renders edit template' do
+ expect(response).to render_template(:edit)
+ end
+
+ it 'does not update the role' do
+ expect(role.reload.name).to eq 'Bar'
+ end
+ end
+
+ context 'when user has all permissions of the role' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] | UserRole::FLAGS[:manage_users] }
+
+ context 'when user outranks the role' do
+ it 'redirects to roles page' do
+ expect(response).to redirect_to(admin_roles_path)
+ end
+
+ it 'updates the role' do
+ expect(role.reload.name).to eq 'Baz'
+ end
+ end
+
+ context 'when role outranks user' do
+ let(:role_position) { current_role.position + 1 }
+
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+
+ it 'does not update the role' do
+ expect(role.reload.name).to eq 'Bar'
+ end
+ end
+ end
+ end
+ end
+
+ describe 'DELETE #destroy' do
+ let(:role_position) { 8 }
+ let(:role) { UserRole.create(name: 'Bar', permissions: UserRole::FLAGS[:manage_users], position: role_position) }
+
+ before do
+ delete :destroy, params: { id: role.id }
+ end
+
+ context 'when user does not have permission to manage roles' do
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+
+ context 'when user has permission to manage roles' do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+
+ context 'when user outranks the role' do
+ it 'redirects to roles page' do
+ expect(response).to redirect_to(admin_roles_path)
+ end
+ end
- let(:user) { Fabricate(:user, moderator: true, admin: false) }
+ context 'when role outranks user' do
+ let(:role_position) { current_role.position + 1 }
- it 'demotes user' do
- expect(subject).to redirect_to admin_account_path(user.account_id)
- expect(user.reload).not_to be_moderator
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
end
end
end
diff --git a/spec/controllers/admin/settings_controller_spec.rb b/spec/controllers/admin/settings_controller_spec.rb
index 6cf0ee20a6..46749f76c6 100644
--- a/spec/controllers/admin/settings_controller_spec.rb
+++ b/spec/controllers/admin/settings_controller_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe Admin::SettingsController, type: :controller do
describe 'When signed in as an admin' do
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'GET #edit' do
diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb
index de32fd18e1..227688e236 100644
--- a/spec/controllers/admin/statuses_controller_spec.rb
+++ b/spec/controllers/admin/statuses_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
describe Admin::StatusesController do
render_views
- let(:user) { Fabricate(:user, admin: true) }
+ let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let(:account) { Fabricate(:account) }
let!(:status) { Fabricate(:status, account: account) }
let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) }
diff --git a/spec/controllers/admin/tags_controller_spec.rb b/spec/controllers/admin/tags_controller_spec.rb
index 85c801a9c7..52fd09eb10 100644
--- a/spec/controllers/admin/tags_controller_spec.rb
+++ b/spec/controllers/admin/tags_controller_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Admin::TagsController, type: :controller do
render_views
before do
- sign_in Fabricate(:user, admin: true)
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin'))
end
describe 'GET #show' do
diff --git a/spec/controllers/admin/users/roles_controller.rb b/spec/controllers/admin/users/roles_controller.rb
new file mode 100644
index 0000000000..bd6a3fa673
--- /dev/null
+++ b/spec/controllers/admin/users/roles_controller.rb
@@ -0,0 +1,81 @@
+require 'rails_helper'
+
+describe Admin::Users::RolesController do
+ render_views
+
+ let(:current_role) { UserRole.create(name: 'Foo', permissions: UserRole::FLAGS[:manage_roles], position: 10) }
+ let(:current_user) { Fabricate(:user, role: current_role) }
+
+ let(:previous_role) { nil }
+ let(:user) { Fabricate(:user, role: previous_role) }
+
+ before do
+ sign_in current_user, scope: :user
+ end
+
+ describe 'GET #show' do
+ before do
+ get :show, params: { user_id: user.id }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+
+ context 'when target user is higher ranked than current user' do
+ let(:previous_role) { UserRole.create(name: 'Baz', permissions: UserRole::FLAGS[:administrator], position: 100) }
+
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+ end
+
+ describe 'PUT #update' do
+ let(:selected_role) { UserRole.create(name: 'Bar', permissions: permissions, position: position) }
+
+ before do
+ put :update, params: { user_id: user.id, user: { role_id: selected_role.id } }
+ end
+
+ context do
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+ let(:position) { 1 }
+
+ it 'updates user role' do
+ expect(user.reload.role_id).to eq selected_role&.id
+ end
+
+ it 'redirects back to account page' do
+ expect(response).to redirect_to(admin_account_path(user.account_id))
+ end
+ end
+
+ context 'when selected role has higher position than current user\'s role' do
+ let(:permissions) { UserRole::FLAGS[:administrator] }
+ let(:position) { 100 }
+
+ it 'does not update user role' do
+ expect(user.reload.role_id).to eq previous_role&.id
+ end
+
+ it 'renders edit form' do
+ expect(response).to render_template(:show)
+ end
+ end
+
+ context 'when target user is higher ranked than current user' do
+ let(:previous_role) { UserRole.create(name: 'Baz', permissions: UserRole::FLAGS[:administrator], position: 100) }
+ let(:permissions) { UserRole::FLAGS[:manage_roles] }
+ let(:position) { 1 }
+
+ it 'does not update user role' do
+ expect(user.reload.role_id).to eq previous_role&.id
+ end
+
+ it 'returns http forbidden' do
+ expect(response).to have_http_status(:forbidden)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/admin/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
similarity index 90%
rename from spec/controllers/admin/two_factor_authentications_controller_spec.rb
rename to spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
index c650957290..e56264ef62 100644
--- a/spec/controllers/admin/two_factor_authentications_controller_spec.rb
+++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
@@ -1,12 +1,13 @@
require 'rails_helper'
require 'webauthn/fake_client'
-describe Admin::TwoFactorAuthenticationsController do
+describe Admin::Users::TwoFactorAuthenticationsController do
render_views
let(:user) { Fabricate(:user) }
+
before do
- sign_in Fabricate(:user, admin: true), scope: :user
+ sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
describe 'DELETE #destroy' do
diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb
index 5d5c245c50..d6bbcefd77 100644
--- a/spec/controllers/api/v1/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts_controller_spec.rb
@@ -145,6 +145,17 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
expect(json[:showing_reblogs]).to be false
expect(json[:notifying]).to be true
end
+
+ it 'changes languages option' do
+ post :follow, params: { id: other_account.id, languages: %w(en es) }
+
+ json = body_as_json
+
+ expect(json[:following]).to be true
+ expect(json[:showing_reblogs]).to be false
+ expect(json[:notifying]).to be false
+ expect(json[:languages]).to match_array %w(en es)
+ end
end
end
diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
index 601290b824..199395f55c 100644
--- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do
render_views
- let(:role) { 'moderator' }
+ let(:role) { UserRole.find_by(name: 'Moderator') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -35,7 +35,7 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
diff --git a/spec/controllers/api/v1/admin/accounts_controller_spec.rb b/spec/controllers/api/v1/admin/accounts_controller_spec.rb
index b69595f7e4..cd38030e0c 100644
--- a/spec/controllers/api/v1/admin/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/accounts_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
render_views
- let(:role) { 'moderator' }
+ let(:role) { UserRole.find_by(name: 'Moderator') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -46,7 +46,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
[
[{ active: 'true', local: 'true', staff: 'true' }, [:admin_account]],
@@ -77,7 +77,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -91,7 +91,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -109,7 +109,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -127,7 +127,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -145,7 +145,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -163,7 +163,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -181,7 +181,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
index edee3ab6c5..26a391a60c 100644
--- a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
render_views
- let(:role) { 'admin' }
+ let(:role) { UserRole.find_by(name: 'Admin') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -21,7 +21,7 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -36,8 +36,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -58,8 +58,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -79,8 +79,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -99,8 +99,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
diff --git a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
index 196f6dc28e..f12285b2a6 100644
--- a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
render_views
- let(:role) { 'admin' }
+ let(:role) { UserRole.find_by(name: 'Admin') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -21,7 +21,7 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -36,8 +36,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -58,8 +58,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -79,8 +79,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -100,8 +100,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
- it_behaves_like 'forbidden for wrong role', 'moderator'
+ it_behaves_like 'forbidden for wrong role', ''
+ it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
diff --git a/spec/controllers/api/v1/admin/reports_controller_spec.rb b/spec/controllers/api/v1/admin/reports_controller_spec.rb
index b6df53048a..880e72030a 100644
--- a/spec/controllers/api/v1/admin/reports_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/reports_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
render_views
- let(:role) { 'moderator' }
+ let(:role) { UserRole.find_by(name: 'Moderator') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -35,7 +35,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -48,7 +48,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -61,7 +61,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -74,7 +74,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -87,7 +87,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
@@ -100,7 +100,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
it 'returns http success' do
expect(response).to have_http_status(200)
diff --git a/spec/controllers/api/v1/filters/statuses_controller_spec.rb b/spec/controllers/api/v1/filters/statuses_controller_spec.rb
new file mode 100644
index 0000000000..3b2399dd89
--- /dev/null
+++ b/spec/controllers/api/v1/filters/statuses_controller_spec.rb
@@ -0,0 +1,116 @@
+require 'rails_helper'
+
+RSpec.describe Api::V1::Filters::StatusesController, type: :controller do
+ render_views
+
+ let(:user) { Fabricate(:user) }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+ let(:filter) { Fabricate(:custom_filter, account: user.account) }
+ let(:other_user) { Fabricate(:user) }
+ let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) }
+
+ before do
+ allow(controller).to receive(:doorkeeper_token) { token }
+ end
+
+ describe 'GET #index' do
+ let(:scopes) { 'read:filters' }
+ let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
+
+ it 'returns http success' do
+ get :index, params: { filter_id: filter.id }
+ expect(response).to have_http_status(200)
+ end
+
+ context "when trying to access another's user filters" do
+ it 'returns http not found' do
+ get :index, params: { filter_id: other_filter.id }
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ describe 'POST #create' do
+ let(:scopes) { 'write:filters' }
+ let(:filter_id) { filter.id }
+ let!(:status) { Fabricate(:status) }
+
+ before do
+ post :create, params: { filter_id: filter_id, status_id: status.id }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'returns a status filter' do
+ json = body_as_json
+ expect(json[:status_id]).to eq status.id.to_s
+ end
+
+ it 'creates a status filter' do
+ filter = user.account.custom_filters.first
+ expect(filter).to_not be_nil
+ expect(filter.statuses.pluck(:status_id)).to eq [status.id]
+ end
+
+ context "when trying to add to another another's user filters" do
+ let(:filter_id) { other_filter.id }
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ describe 'GET #show' do
+ let(:scopes) { 'read:filters' }
+ let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
+
+ before do
+ get :show, params: { id: status_filter.id }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'returns expected data' do
+ json = body_as_json
+ expect(json[:status_id]).to eq status_filter.status_id.to_s
+ end
+
+ context "when trying to access another user's filter keyword" do
+ let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) }
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ describe 'DELETE #destroy' do
+ let(:scopes) { 'write:filters' }
+ let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) }
+
+ before do
+ delete :destroy, params: { id: status_filter.id }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'removes the filter' do
+ expect { status_filter.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ context "when trying to update another user's filter keyword" do
+ let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) }
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/followed_tags_controller_spec.rb b/spec/controllers/api/v1/followed_tags_controller_spec.rb
new file mode 100644
index 0000000000..2191350ef6
--- /dev/null
+++ b/spec/controllers/api/v1/followed_tags_controller_spec.rb
@@ -0,0 +1,23 @@
+require 'rails_helper'
+
+RSpec.describe Api::V1::FollowedTagsController, type: :controller do
+ render_views
+
+ let(:user) { Fabricate(:user) }
+ let(:scopes) { 'read:follows' }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+
+ before { allow(controller).to receive(:doorkeeper_token) { token } }
+
+ describe 'GET #index' do
+ let!(:tag_follows) { Fabricate.times(5, :tag_follow, account: user.account) }
+
+ before do
+ get :index, params: { limit: 1 }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb
index b5baf60e11..dbc64e7047 100644
--- a/spec/controllers/api/v1/reports_controller_spec.rb
+++ b/spec/controllers/api/v1/reports_controller_spec.rb
@@ -13,7 +13,7 @@ RSpec.describe Api::V1::ReportsController, type: :controller do
end
describe 'POST #create' do
- let!(:admin) { Fabricate(:user, admin: true) }
+ let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let(:scopes) { 'write:reports' }
let(:status) { Fabricate(:status) }
diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb
index 4d104a198d..24810a5d27 100644
--- a/spec/controllers/api/v1/statuses_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses_controller_spec.rb
@@ -47,6 +47,33 @@ RSpec.describe Api::V1::StatusesController, type: :controller do
end
end
+ context 'when post is explicitly filtered' do
+ let(:status) { Fabricate(:status, text: 'hello world') }
+
+ before do
+ filter = user.account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide)
+ filter.statuses.create!(status_id: status.id)
+ end
+
+ it 'returns http success' do
+ get :show, params: { id: status.id }
+ expect(response).to have_http_status(200)
+ end
+
+ it 'returns filter information' do
+ get :show, params: { id: status.id }
+ json = body_as_json
+ expect(json[:filtered][0]).to include({
+ filter: a_hash_including({
+ id: user.account.custom_filters.first.id.to_s,
+ title: 'filter1',
+ filter_action: 'hide',
+ }),
+ status_matches: [status.id.to_s],
+ })
+ end
+ end
+
context 'when reblog includes filtered terms' do
let(:status) { Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about that banned word')) }
diff --git a/spec/controllers/api/v1/tags_controller_spec.rb b/spec/controllers/api/v1/tags_controller_spec.rb
new file mode 100644
index 0000000000..ac42660dfa
--- /dev/null
+++ b/spec/controllers/api/v1/tags_controller_spec.rb
@@ -0,0 +1,82 @@
+require 'rails_helper'
+
+RSpec.describe Api::V1::TagsController, type: :controller do
+ render_views
+
+ let(:user) { Fabricate(:user) }
+ let(:scopes) { 'write:follows' }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+
+ before { allow(controller).to receive(:doorkeeper_token) { token } }
+
+ describe 'GET #show' do
+ before do
+ get :show, params: { id: name }
+ end
+
+ context 'with existing tag' do
+ let!(:tag) { Fabricate(:tag) }
+ let(:name) { tag.name }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+
+ context 'with non-existing tag' do
+ let(:name) { 'hoge' }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+ end
+
+ describe 'POST #follow' do
+ before do
+ post :follow, params: { id: name }
+ end
+
+ context 'with existing tag' do
+ let!(:tag) { Fabricate(:tag) }
+ let(:name) { tag.name }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+
+ it 'creates follow' do
+ expect(TagFollow.where(tag: tag, account: user.account).exists?).to be true
+ end
+ end
+
+ context 'with non-existing tag' do
+ let(:name) { 'hoge' }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+
+ it 'creates follow' do
+ expect(TagFollow.where(tag: Tag.find_by!(name: name), account: user.account).exists?).to be true
+ end
+ end
+ end
+
+ describe 'POST #unfollow' do
+ let!(:tag) { Fabricate(:tag, name: 'foo') }
+ let!(:tag_follow) { Fabricate(:tag_follow, account: user.account, tag: tag) }
+
+ before do
+ post :unfollow, params: { id: tag.name }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+
+ it 'removes the follow' do
+ expect(TagFollow.where(tag: tag, account: user.account).exists?).to be false
+ end
+ end
+end
diff --git a/spec/controllers/api/v2/admin/accounts_controller_spec.rb b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
index 3212ddb844..2508a9e055 100644
--- a/spec/controllers/api/v2/admin/accounts_controller_spec.rb
+++ b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe Api::V2::Admin::AccountsController, type: :controller do
render_views
- let(:role) { 'moderator' }
+ let(:role) { UserRole.find_by(name: 'Moderator') }
let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
@@ -22,7 +22,7 @@ RSpec.describe Api::V2::Admin::AccountsController, type: :controller do
end
shared_examples 'forbidden for wrong role' do |wrong_role|
- let(:role) { wrong_role }
+ let(:role) { UserRole.find_by(name: wrong_role) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
@@ -46,7 +46,7 @@ RSpec.describe Api::V2::Admin::AccountsController, type: :controller do
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
- it_behaves_like 'forbidden for wrong role', 'user'
+ it_behaves_like 'forbidden for wrong role', ''
[
[{ status: 'active', origin: 'local', permissions: 'staff' }, [:admin_account]],
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 851e58d60c..2af12376dc 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -187,70 +187,6 @@ describe ApplicationController, type: :controller do
end
end
- describe 'require_admin!' do
- controller do
- before_action :require_admin!
-
- def success
- head 200
- end
- end
-
- before do
- routes.draw { get 'success' => 'anonymous#success' }
- end
-
- it 'returns a 403 if current user is not admin' do
- sign_in(Fabricate(:user, admin: false))
- get 'success'
- expect(response).to have_http_status(403)
- end
-
- it 'returns a 403 if current user is only a moderator' do
- sign_in(Fabricate(:user, moderator: true))
- get 'success'
- expect(response).to have_http_status(403)
- end
-
- it 'does nothing if current user is admin' do
- sign_in(Fabricate(:user, admin: true))
- get 'success'
- expect(response).to have_http_status(200)
- end
- end
-
- describe 'require_staff!' do
- controller do
- before_action :require_staff!
-
- def success
- head 200
- end
- end
-
- before do
- routes.draw { get 'success' => 'anonymous#success' }
- end
-
- it 'returns a 403 if current user is not admin or moderator' do
- sign_in(Fabricate(:user, admin: false, moderator: false))
- get 'success'
- expect(response).to have_http_status(403)
- end
-
- it 'does nothing if current user is moderator' do
- sign_in(Fabricate(:user, moderator: true))
- get 'success'
- expect(response).to have_http_status(200)
- end
-
- it 'does nothing if current user is admin' do
- sign_in(Fabricate(:user, admin: true))
- get 'success'
- expect(response).to have_http_status(200)
- end
- end
-
describe 'forbidden' do
controller do
def route_forbidden
diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb
index 05fb1445b1..6e73643b4d 100644
--- a/spec/controllers/concerns/signature_verification_spec.rb
+++ b/spec/controllers/concerns/signature_verification_spec.rb
@@ -3,6 +3,16 @@
require 'rails_helper'
describe ApplicationController, type: :controller do
+ class WrappedActor
+ attr_reader :wrapped_account
+
+ def initialize(wrapped_account)
+ @wrapped_account = wrapped_account
+ end
+
+ delegate :uri, :keypair, to: :wrapped_account
+ end
+
controller do
include SignatureVerification
@@ -73,6 +83,41 @@ describe ApplicationController, type: :controller do
end
end
+ context 'with a valid actor that is not an Account' do
+ let(:actor) { WrappedActor.new(author) }
+
+ before do
+ get :success
+
+ fake_request = Request.new(:get, request.url)
+ fake_request.on_behalf_of(author)
+
+ request.headers.merge!(fake_request.headers)
+
+ allow(ActivityPub::TagManager.instance).to receive(:uri_to_actor).with(anything) do
+ actor
+ end
+ end
+
+ describe '#signed_request?' do
+ it 'returns true' do
+ expect(controller.signed_request?).to be true
+ end
+ end
+
+ describe '#signed_request_account' do
+ it 'returns nil' do
+ expect(controller.signed_request_account).to be_nil
+ end
+ end
+
+ describe '#signed_request_actor' do
+ it 'returns the expected actor' do
+ expect(controller.signed_request_actor).to eq actor
+ end
+ end
+ end
+
context 'with request older than a day' do
before do
get :success
diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb
index faa571fc9e..90f222f494 100644
--- a/spec/controllers/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/disputes/appeals_controller_spec.rb
@@ -5,7 +5,7 @@ RSpec.describe Disputes::AppealsController, type: :controller do
before { sign_in current_user, scope: :user }
- let!(:admin) { Fabricate(:user, admin: true) }
+ let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
describe '#create' do
let(:current_user) { Fabricate(:user) }
diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
index 70c5c42c5c..914ca6307a 100644
--- a/spec/controllers/home_controller_spec.rb
+++ b/spec/controllers/home_controller_spec.rb
@@ -8,9 +8,9 @@ RSpec.describe HomeController, type: :controller do
context 'when not signed in' do
context 'when requested path is tag timeline' do
- it 'redirects to the tag\'s permalink' do
+ it 'returns http success' do
@request.path = '/web/timelines/tag/name'
- is_expected.to redirect_to '/tags/name'
+ is_expected.to have_http_status(:success)
end
end
@@ -23,11 +23,12 @@ RSpec.describe HomeController, type: :controller do
context 'when signed in' do
let(:user) { Fabricate(:user) }
- before { sign_in(user) }
+ before do
+ sign_in(user)
+ end
- it 'assigns @body_classes' do
- subject
- expect(assigns(:body_classes)).to eq 'app-body'
+ it 'returns http success' do
+ is_expected.to have_http_status(:success)
end
end
end
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb
index 76e617e6b6..23b98fb129 100644
--- a/spec/controllers/invites_controller_spec.rb
+++ b/spec/controllers/invites_controller_spec.rb
@@ -7,30 +7,30 @@ describe InvitesController do
sign_in user
end
- around do |example|
- min_invite_role = Setting.min_invite_role
- example.run
- Setting.min_invite_role = min_invite_role
- end
-
describe 'GET #index' do
subject { get :index }
- let(:user) { Fabricate(:user, moderator: false, admin: false) }
+ let(:user) { Fabricate(:user) }
let!(:invite) { Fabricate(:invite, user: user) }
- context 'when user is a staff' do
+ context 'when everyone can invite' do
+ before do
+ UserRole.everyone.update(permissions: UserRole.everyone.permissions | UserRole::FLAGS[:invite_users])
+ end
+
it 'renders index page' do
- Setting.min_invite_role = 'user'
expect(subject).to render_template :index
expect(assigns(:invites)).to include invite
expect(assigns(:invites).count).to eq 1
end
end
- context 'when user is not a staff' do
+ context 'when not everyone can invite' do
+ before do
+ UserRole.everyone.update(permissions: UserRole.everyone.permissions & ~UserRole::FLAGS[:invite_users])
+ end
+
it 'returns 403' do
- Setting.min_invite_role = 'modelator'
expect(subject).to have_http_status 403
end
end
@@ -39,8 +39,12 @@ describe InvitesController do
describe 'POST #create' do
subject { post :create, params: { invite: { max_uses: '10', expires_in: 1800 } } }
- context 'when user is an admin' do
- let(:user) { Fabricate(:user, moderator: false, admin: true) }
+ context 'when everyone can invite' do
+ let(:user) { Fabricate(:user) }
+
+ before do
+ UserRole.everyone.update(permissions: UserRole.everyone.permissions | UserRole::FLAGS[:invite_users])
+ end
it 'succeeds to create a invite' do
expect { subject }.to change { Invite.count }.by(1)
@@ -49,8 +53,12 @@ describe InvitesController do
end
end
- context 'when user is not an admin' do
- let(:user) { Fabricate(:user, moderator: true, admin: false) }
+ context 'when not everyone can invite' do
+ let(:user) { Fabricate(:user) }
+
+ before do
+ UserRole.everyone.update(permissions: UserRole.everyone.permissions & ~UserRole::FLAGS[:invite_users])
+ end
it 'returns 403' do
expect(subject).to have_http_status 403
@@ -61,8 +69,8 @@ describe InvitesController do
describe 'DELETE #create' do
subject { delete :destroy, params: { id: invite.id } }
+ let(:user) { Fabricate(:user) }
let!(:invite) { Fabricate(:invite, user: user, expires_at: nil) }
- let(:user) { Fabricate(:user, moderator: false, admin: true) }
it 'expires invite' do
expect(subject).to redirect_to invites_path
diff --git a/spec/controllers/settings/exports/following_accounts_controller_spec.rb b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
index 78858e7725..bfe0105556 100644
--- a/spec/controllers/settings/exports/following_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
@@ -11,7 +11,7 @@ describe Settings::Exports::FollowingAccountsController do
sign_in user, scope: :user
get :index, format: :csv
- expect(response.body).to eq "Account address,Show boosts\nusername@domain,true\n"
+ expect(response.body).to eq "Account address,Show boosts,Notify on new posts,Languages\nusername@domain,true,false,\n"
end
end
end
diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb
index 05fae67fab..6ed5d4bbb6 100644
--- a/spec/controllers/statuses_controller_spec.rb
+++ b/spec/controllers/statuses_controller_spec.rb
@@ -426,7 +426,7 @@ describe StatusesController do
let(:remote_account) { Fabricate(:account, domain: 'example.com') }
before do
- allow(controller).to receive(:signed_request_account).and_return(remote_account)
+ allow(controller).to receive(:signed_request_actor).and_return(remote_account)
end
context 'when account blocks account' do
diff --git a/spec/fabricators/access_grant_fabricator.rb b/spec/fabricators/access_grant_fabricator.rb
new file mode 100644
index 0000000000..ae1945f2bb
--- /dev/null
+++ b/spec/fabricators/access_grant_fabricator.rb
@@ -0,0 +1,6 @@
+Fabricator :access_grant, from: 'Doorkeeper::AccessGrant' do
+ application
+ resource_owner_id { Fabricate(:user).id }
+ expires_in 3_600
+ redirect_uri { Doorkeeper.configuration.native_redirect_uri }
+end
diff --git a/spec/fabricators/custom_filter_status_fabricator.rb b/spec/fabricators/custom_filter_status_fabricator.rb
new file mode 100644
index 0000000000..d082b81c5e
--- /dev/null
+++ b/spec/fabricators/custom_filter_status_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:custom_filter_status) do
+ custom_filter
+ status
+end
diff --git a/spec/fabricators/preview_card_fabricator.rb b/spec/fabricators/preview_card_fabricator.rb
index f119c117d9..99b5edc435 100644
--- a/spec/fabricators/preview_card_fabricator.rb
+++ b/spec/fabricators/preview_card_fabricator.rb
@@ -3,4 +3,5 @@ Fabricator(:preview_card) do
title { Faker::Lorem.sentence }
description { Faker::Lorem.paragraph }
type 'link'
+ image { attachment_fixture('attachment.jpg') }
end
diff --git a/spec/fabricators/tag_follow_fabricator.rb b/spec/fabricators/tag_follow_fabricator.rb
new file mode 100644
index 0000000000..a2cccb07a8
--- /dev/null
+++ b/spec/fabricators/tag_follow_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:tag_follow) do
+ tag
+ account
+end
diff --git a/spec/fabricators/user_role_fabricator.rb b/spec/fabricators/user_role_fabricator.rb
new file mode 100644
index 0000000000..28f76c8c47
--- /dev/null
+++ b/spec/fabricators/user_role_fabricator.rb
@@ -0,0 +1,5 @@
+Fabricator(:user_role) do
+ name "MyString"
+ color "MyString"
+ permissions ""
+end
\ No newline at end of file
diff --git a/spec/fabricators/webauthn_credential_fabricator.rb b/spec/fabricators/webauthn_credential_fabricator.rb
index 496a7a7351..ba59ce9677 100644
--- a/spec/fabricators/webauthn_credential_fabricator.rb
+++ b/spec/fabricators/webauthn_credential_fabricator.rb
@@ -1,7 +1,7 @@
Fabricator(:webauthn_credential) do
user_id { Fabricate(:user).id }
external_id { Base64.urlsafe_encode64(SecureRandom.random_bytes(16)) }
- public_key { OpenSSL::PKey::EC.new("prime256v1").generate_key.public_key }
+ public_key { OpenSSL::PKey::EC.generate('prime256v1').public_key }
nickname 'USB key'
sign_count 0
end
diff --git a/spec/helpers/admin/action_log_helper_spec.rb b/spec/helpers/admin/action_log_helper_spec.rb
index 60f5ecdcca..9d7ed4ab76 100644
--- a/spec/helpers/admin/action_log_helper_spec.rb
+++ b/spec/helpers/admin/action_log_helper_spec.rb
@@ -3,32 +3,4 @@
require 'rails_helper'
RSpec.describe Admin::ActionLogsHelper, type: :helper do
- klass = Class.new do
- include ActionView::Helpers
- include Admin::ActionLogsHelper
- end
-
- let(:hoge) { klass.new }
-
- describe '#log_target' do
- after do
- hoge.log_target(log)
- end
-
- context 'log.target' do
- let(:log) { double(target: true) }
-
- it 'calls linkable_log_target' do
- expect(hoge).to receive(:linkable_log_target).with(log.target)
- end
- end
-
- context '!log.target' do
- let(:log) { double(target: false, target_type: :type, recorded_changes: :change) }
-
- it 'calls log_target_from_history' do
- expect(hoge).to receive(:log_target_from_history).with(log.target_type, log.recorded_changes)
- end
- end
- end
end
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index 41806b2582..e9cd6c68c1 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -115,7 +115,7 @@ RSpec.describe ActivityPub::Activity::Announce do
let(:object_json) { 'https://example.com/actor/hello-world' }
- subject { described_class.new(json, sender, relayed_through_account: relay_account) }
+ subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
before do
stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json))
diff --git a/spec/lib/activitypub/dereferencer_spec.rb b/spec/lib/activitypub/dereferencer_spec.rb
index ce30513d76..e50b497c7e 100644
--- a/spec/lib/activitypub/dereferencer_spec.rb
+++ b/spec/lib/activitypub/dereferencer_spec.rb
@@ -4,10 +4,10 @@ RSpec.describe ActivityPub::Dereferencer do
describe '#object' do
let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } }
let(:permitted_origin) { 'https://example.com' }
- let(:signature_account) { nil }
+ let(:signature_actor) { nil }
let(:uri) { nil }
- subject { described_class.new(uri, permitted_origin: permitted_origin, signature_account: signature_account).object }
+ subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object }
before do
stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' })
@@ -21,7 +21,7 @@ RSpec.describe ActivityPub::Dereferencer do
end
context 'with signature account' do
- let(:signature_account) { Fabricate(:account) }
+ let(:signature_actor) { Fabricate(:account) }
it 'makes signed request' do
subject
@@ -52,7 +52,7 @@ RSpec.describe ActivityPub::Dereferencer do
end
context 'with signature account' do
- let(:signature_account) { Fabricate(:account) }
+ let(:signature_actor) { Fabricate(:account) }
it 'makes signed request' do
subject
diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb
index 2222c46fb5..d55a7c7fa8 100644
--- a/spec/lib/activitypub/linked_data_signature_spec.rb
+++ b/spec/lib/activitypub/linked_data_signature_spec.rb
@@ -20,7 +20,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do
stub_jsonld_contexts!
end
- describe '#verify_account!' do
+ describe '#verify_actor!' do
context 'when signature matches' do
let(:raw_signature) do
{
@@ -32,7 +32,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do
let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) }
it 'returns creator' do
- expect(subject.verify_account!).to eq sender
+ expect(subject.verify_actor!).to eq sender
end
end
@@ -40,7 +40,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do
let(:signature) { nil }
it 'returns nil' do
- expect(subject.verify_account!).to be_nil
+ expect(subject.verify_actor!).to be_nil
end
end
@@ -55,7 +55,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do
let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => 's69F3mfddd99dGjmvjdjjs81e12jn121Gkm1') }
it 'returns nil' do
- expect(subject.verify_account!).to be_nil
+ expect(subject.verify_actor!).to be_nil
end
end
end
@@ -73,14 +73,14 @@ RSpec.describe ActivityPub::LinkedDataSignature do
end
it 'can be verified again' do
- expect(described_class.new(subject).verify_account!).to eq sender
+ expect(described_class.new(subject).verify_actor!).to eq sender
end
end
- def sign(from_account, options, document)
+ def sign(from_actor, options, document)
options_hash = Digest::SHA256.hexdigest(canonicalize(options.merge('@context' => ActivityPub::LinkedDataSignature::CONTEXT)))
document_hash = Digest::SHA256.hexdigest(canonicalize(document))
to_be_verified = options_hash + document_hash
- Base64.strict_encode64(from_account.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified))
+ Base64.strict_encode64(from_actor.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified))
end
end
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index 4a43ae7e50..2b11ddf70c 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -134,6 +134,18 @@ RSpec.describe FeedManager do
reblog = Fabricate(:status, reblog: status, account: jeff)
expect(FeedManager.instance.filter?(:home, reblog, alice)).to be true
end
+
+ it 'returns true for German post when follow is set to English only' do
+ alice.follow!(bob, languages: %w(en))
+ status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de')
+ expect(FeedManager.instance.filter?(:home, status, alice)).to be true
+ end
+
+ it 'returns false for German post when follow is set to German' do
+ alice.follow!(bob, languages: %w(de))
+ status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de')
+ expect(FeedManager.instance.filter?(:home, status, alice)).to be false
+ end
end
context 'for mentions feed' do
diff --git a/spec/lib/hashtag_normalizer_spec.rb b/spec/lib/hashtag_normalizer_spec.rb
new file mode 100644
index 0000000000..fbb9f37c07
--- /dev/null
+++ b/spec/lib/hashtag_normalizer_spec.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe HashtagNormalizer do
+ subject { described_class.new }
+
+ describe '#normalize' do
+ it 'converts full-width Latin characters into basic Latin characters' do
+ expect(subject.normalize('Synthwave')).to eq 'synthwave'
+ end
+
+ it 'converts half-width Katakana into Kana characters' do
+ expect(subject.normalize('シーサイドライナー')).to eq 'シーサイドライナー'
+ end
+
+ it 'converts modified Latin characters into basic Latin characters' do
+ expect(subject.normalize('BLÅHAJ')).to eq 'blahaj'
+ end
+
+ it 'strips out invalid characters' do
+ expect(subject.normalize('#foo')).to eq 'foo'
+ end
+
+ it 'keeps valid characters' do
+ expect(subject.normalize('a·b')).to eq 'a·b'
+ end
+ end
+end
diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb
index b916b33b22..abda57da49 100644
--- a/spec/lib/permalink_redirector_spec.rb
+++ b/spec/lib/permalink_redirector_spec.rb
@@ -21,7 +21,7 @@ describe PermalinkRedirector do
it 'returns path for legacy tag links' do
redirector = described_class.new('web/timelines/tag/hoge')
- expect(redirector.redirect_path).to eq '/tags/hoge'
+ expect(redirector.redirect_path).to be_nil
end
it 'returns path for pretty account links' do
@@ -36,7 +36,7 @@ describe PermalinkRedirector do
it 'returns path for pretty tag links' do
redirector = described_class.new('web/tags/hoge')
- expect(redirector.redirect_path).to eq '/tags/hoge'
+ expect(redirector.redirect_path).to be_nil
end
end
end
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index 2d300f18d6..5eccf32014 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -63,7 +63,7 @@ describe Request do
expect(a_request(:get, 'http://example.com').with(headers: subject.headers)).to have_been_made
end
- it 'closes underlaying connection' do
+ it 'closes underlying connection' do
expect_any_instance_of(HTTP::Client).to receive(:close)
expect { |block| subject.perform &block }.to yield_control
end
diff --git a/spec/lib/vacuum/access_tokens_vacuum_spec.rb b/spec/lib/vacuum/access_tokens_vacuum_spec.rb
new file mode 100644
index 0000000000..0244c34492
--- /dev/null
+++ b/spec/lib/vacuum/access_tokens_vacuum_spec.rb
@@ -0,0 +1,33 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::AccessTokensVacuum do
+ subject { described_class.new }
+
+ describe '#perform' do
+ let!(:revoked_access_token) { Fabricate(:access_token, revoked_at: 1.minute.ago) }
+ let!(:active_access_token) { Fabricate(:access_token) }
+
+ let!(:revoked_access_grant) { Fabricate(:access_grant, revoked_at: 1.minute.ago) }
+ let!(:active_access_grant) { Fabricate(:access_grant) }
+
+ before do
+ subject.perform
+ end
+
+ it 'deletes revoked access tokens' do
+ expect { revoked_access_token.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ it 'deletes revoked access grants' do
+ expect { revoked_access_grant.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ it 'does not delete active access tokens' do
+ expect { active_access_token.reload }.to_not raise_error
+ end
+
+ it 'does not delete active access grants' do
+ expect { active_access_grant.reload }.to_not raise_error
+ end
+ end
+end
diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb
new file mode 100644
index 0000000000..4e2de083f8
--- /dev/null
+++ b/spec/lib/vacuum/backups_vacuum_spec.rb
@@ -0,0 +1,24 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::BackupsVacuum do
+ let(:retention_period) { 7.days }
+
+ subject { described_class.new(retention_period) }
+
+ describe '#perform' do
+ let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) }
+ let!(:current_backup) { Fabricate(:backup) }
+
+ before do
+ subject.perform
+ end
+
+ it 'deletes backups past the retention period' do
+ expect { expired_backup.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ it 'does not delete backups within the retention period' do
+ expect { current_backup.reload }.to_not raise_error
+ end
+ end
+end
diff --git a/spec/lib/vacuum/feeds_vacuum_spec.rb b/spec/lib/vacuum/feeds_vacuum_spec.rb
new file mode 100644
index 0000000000..0aec26740f
--- /dev/null
+++ b/spec/lib/vacuum/feeds_vacuum_spec.rb
@@ -0,0 +1,30 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::FeedsVacuum do
+ subject { described_class.new }
+
+ describe '#perform' do
+ let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) }
+ let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) }
+
+ before do
+ redis.zadd(feed_key_for(inactive_user), 1, 1)
+ redis.zadd(feed_key_for(active_user), 1, 1)
+ redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2)
+ redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3)
+
+ subject.perform
+ end
+
+ it 'clears feeds of inactive users and lists' do
+ expect(redis.zcard(feed_key_for(inactive_user))).to eq 0
+ expect(redis.zcard(feed_key_for(active_user))).to eq 1
+ expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false
+ expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false
+ end
+ end
+
+ def feed_key_for(user, subtype = nil)
+ FeedManager.instance.key(:home, user.account_id, subtype)
+ end
+end
diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
new file mode 100644
index 0000000000..be8458d9bf
--- /dev/null
+++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
@@ -0,0 +1,47 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::MediaAttachmentsVacuum do
+ let(:retention_period) { 7.days }
+
+ subject { described_class.new(retention_period) }
+
+ let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) }
+ let(:local_status) { Fabricate(:status) }
+
+ describe '#perform' do
+ let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
+ let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
+ let!(:new_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status) }
+ let!(:new_local_media) { Fabricate(:media_attachment, status: local_status) }
+ let!(:old_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) }
+ let!(:new_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) }
+
+ before do
+ subject.perform
+ end
+
+ it 'deletes cache of remote media attachments past the retention period' do
+ expect(old_remote_media.reload.file).to be_blank
+ end
+
+ it 'does not touch local media attachments past the retention period' do
+ expect(old_local_media.reload.file).to_not be_blank
+ end
+
+ it 'does not delete cache of remote media attachments within the retention period' do
+ expect(new_remote_media.reload.file).to_not be_blank
+ end
+
+ it 'does not touch local media attachments within the retention period' do
+ expect(new_local_media.reload.file).to_not be_blank
+ end
+
+ it 'deletes unattached media attachments past TTL' do
+ expect { old_unattached_media.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+
+ it 'does not delete unattached media attachments within TTL' do
+ expect(new_unattached_media.reload).to be_persisted
+ end
+ end
+end
diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
new file mode 100644
index 0000000000..4a4a599fa4
--- /dev/null
+++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
@@ -0,0 +1,36 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::PreviewCardsVacuum do
+ let(:retention_period) { 7.days }
+
+ subject { described_class.new(retention_period) }
+
+ describe '#perform' do
+ let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) }
+ let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) }
+ let!(:new_preview_card) { Fabricate(:preview_card) }
+
+ before do
+ old_preview_card.statuses << Fabricate(:status)
+ new_preview_card.statuses << Fabricate(:status)
+
+ subject.perform
+ end
+
+ it 'deletes cache of preview cards last updated before the retention period' do
+ expect(old_preview_card.reload.image).to be_blank
+ end
+
+ it 'does not delete cache of preview cards last updated within the retention period' do
+ expect(new_preview_card.reload.image).to_not be_blank
+ end
+
+ it 'does not delete attached preview cards' do
+ expect(new_preview_card.reload).to be_persisted
+ end
+
+ it 'deletes preview cards not attached to any status' do
+ expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+ end
+end
diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb
new file mode 100644
index 0000000000..83f3c5c9f1
--- /dev/null
+++ b/spec/lib/vacuum/statuses_vacuum_spec.rb
@@ -0,0 +1,36 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::StatusesVacuum do
+ let(:retention_period) { 7.days }
+
+ let(:remote_account) { Fabricate(:account, domain: 'example.com') }
+
+ subject { described_class.new(retention_period) }
+
+ describe '#perform' do
+ let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) }
+ let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) }
+ let!(:local_status_old) { Fabricate(:status, created_at: (retention_period + 2.days).ago) }
+ let!(:local_status_recent) { Fabricate(:status, created_at: (retention_period - 2.days).ago) }
+
+ before do
+ subject.perform
+ end
+
+ it 'deletes remote statuses past the retention period' do
+ expect { remote_status_old.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ it 'does not delete local statuses past the retention period' do
+ expect { local_status_old.reload }.to_not raise_error
+ end
+
+ it 'does not delete remote statuses within the retention period' do
+ expect { remote_status_recent.reload }.to_not raise_error
+ end
+
+ it 'does not delete local statuses within the retention period' do
+ expect { local_status_recent.reload }.to_not raise_error
+ end
+ end
+end
diff --git a/spec/lib/vacuum/system_keys_vacuum_spec.rb b/spec/lib/vacuum/system_keys_vacuum_spec.rb
new file mode 100644
index 0000000000..565892f025
--- /dev/null
+++ b/spec/lib/vacuum/system_keys_vacuum_spec.rb
@@ -0,0 +1,22 @@
+require 'rails_helper'
+
+RSpec.describe Vacuum::SystemKeysVacuum do
+ subject { described_class.new }
+
+ describe '#perform' do
+ let!(:expired_system_key) { Fabricate(:system_key, created_at: (SystemKey::ROTATION_PERIOD * 4).ago) }
+ let!(:current_system_key) { Fabricate(:system_key) }
+
+ before do
+ subject.perform
+ end
+
+ it 'deletes the expired key' do
+ expect { expired_system_key.reload }.to raise_error ActiveRecord::RecordNotFound
+ end
+
+ it 'does not delete the current key' do
+ expect { current_system_key.reload }.to_not raise_error
+ end
+ end
+end
diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb
index 2ca4e26fa8..29bdc349b8 100644
--- a/spec/mailers/notification_mailer_spec.rb
+++ b/spec/mailers/notification_mailer_spec.rb
@@ -101,35 +101,4 @@ RSpec.describe NotificationMailer, type: :mailer do
expect(mail.body.encoded).to match("bob has requested to follow you")
end
end
-
- describe 'digest' do
- before do
- mention = Fabricate(:mention, account: receiver.account, status: foreign_status)
- Fabricate(:notification, account: receiver.account, activity: mention)
- sender.follow!(receiver.account)
- end
-
- context do
- let!(:mail) { NotificationMailer.digest(receiver.account, since: 5.days.ago) }
-
- include_examples 'localized subject', 'notification_mailer.digest.subject', count: 1, name: 'bob'
-
- it 'renders the headers' do
- expect(mail.subject).to match('notification since your last')
- expect(mail.to).to eq([receiver.email])
- end
-
- it 'renders the body' do
- expect(mail.body.encoded).to match('brief summary')
- expect(mail.body.encoded).to include 'The body of the foreign status'
- expect(mail.body.encoded).to include sender.username
- end
- end
-
- it 'includes activities since the receiver last signed in' do
- receiver.update!(last_emailed_at: nil, current_sign_in_at: '2000-03-01T00:00:00Z')
- mail = NotificationMailer.digest(receiver.account)
- expect(mail.body.encoded).to include 'Mar 01, 2000, 00:00'
- end
- end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index dc0ca3da37..467d41836a 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -445,7 +445,7 @@ RSpec.describe Account, type: :model do
it 'accepts arbitrary limits' do
2.times.each { Fabricate(:account, display_name: "Display Name") }
- results = Account.search_for("display", 1)
+ results = Account.search_for("display", limit: 1)
expect(results.size).to eq 1
end
@@ -473,7 +473,7 @@ RSpec.describe Account, type: :model do
)
account.follow!(match)
- results = Account.advanced_search_for('A?l\i:c e', account, 10, true)
+ results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true)
expect(results).to eq [match]
end
@@ -485,7 +485,7 @@ RSpec.describe Account, type: :model do
domain: 'example.com'
)
- results = Account.advanced_search_for('A?l\i:c e', account, 10, true)
+ results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true)
expect(results).to eq []
end
@@ -498,7 +498,7 @@ RSpec.describe Account, type: :model do
suspended: true
)
- results = Account.advanced_search_for('username', account, 10, true)
+ results = Account.advanced_search_for('username', account, limit: 10, following: true)
expect(results).to eq []
end
@@ -511,7 +511,7 @@ RSpec.describe Account, type: :model do
match.user.update(approved: false)
- results = Account.advanced_search_for('username', account, 10, true)
+ results = Account.advanced_search_for('username', account, limit: 10, following: true)
expect(results).to eq []
end
@@ -524,7 +524,7 @@ RSpec.describe Account, type: :model do
match.user.update(confirmed_at: nil)
- results = Account.advanced_search_for('username', account, 10, true)
+ results = Account.advanced_search_for('username', account, limit: 10, following: true)
expect(results).to eq []
end
end
@@ -588,7 +588,7 @@ RSpec.describe Account, type: :model do
it 'accepts arbitrary limits' do
2.times { Fabricate(:account, display_name: "Display Name") }
- results = Account.advanced_search_for("display", account, 1)
+ results = Account.advanced_search_for("display", account, limit: 1)
expect(results.size).to eq 1
end
diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb
index 809c7fc46d..b6a052b769 100644
--- a/spec/models/admin/account_action_spec.rb
+++ b/spec/models/admin/account_action_spec.rb
@@ -5,7 +5,7 @@ RSpec.describe Admin::AccountAction, type: :model do
describe '#save!' do
subject { account_action.save! }
- let(:account) { Fabricate(:user, admin: true).account }
+ let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:target_account) { Fabricate(:account) }
let(:type) { 'disable' }
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index 656dd66ccf..b5aecf6be7 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -14,14 +14,14 @@ describe AccountInteractions do
context 'account with Follow' do
it 'returns { target_account_id => { reblogs: true } }' do
Fabricate(:follow, account: account, target_account: target_account)
- is_expected.to eq(target_account_id => { reblogs: true, notify: false })
+ is_expected.to eq(target_account_id => { reblogs: true, notify: false, languages: nil })
end
end
context 'account with Follow but with reblogs disabled' do
it 'returns { target_account_id => { reblogs: false } }' do
Fabricate(:follow, account: account, target_account: target_account, show_reblogs: false)
- is_expected.to eq(target_account_id => { reblogs: false, notify: false })
+ is_expected.to eq(target_account_id => { reblogs: false, notify: false, languages: nil })
end
end
@@ -647,7 +647,7 @@ describe AccountInteractions do
end
it 'does mute notifications' do
- expect(me.muting_notifications?(you)).to be true
+ expect(me.muting_notifications?(you)).to be true
end
end
end
diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb
index 567a32c328..e23116888c 100644
--- a/spec/models/email_domain_block_spec.rb
+++ b/spec/models/email_domain_block_spec.rb
@@ -12,16 +12,29 @@ RSpec.describe EmailDomainBlock, type: :model do
let(:input) { nil }
context 'given an e-mail address' do
- let(:input) { 'nyarn@example.com' }
+ let(:input) { "foo@#{domain}" }
- it 'returns true if the domain is blocked' do
- Fabricate(:email_domain_block, domain: 'example.com')
- expect(EmailDomainBlock.block?(input)).to be true
+ context do
+ let(:domain) { 'example.com' }
+
+ it 'returns true if the domain is blocked' do
+ Fabricate(:email_domain_block, domain: 'example.com')
+ expect(EmailDomainBlock.block?(input)).to be true
+ end
+
+ it 'returns false if the domain is not blocked' do
+ Fabricate(:email_domain_block, domain: 'other-example.com')
+ expect(EmailDomainBlock.block?(input)).to be false
+ end
end
- it 'returns false if the domain is not blocked' do
- Fabricate(:email_domain_block, domain: 'other-example.com')
- expect(EmailDomainBlock.block?(input)).to be false
+ context do
+ let(:domain) { 'mail.example.com' }
+
+ it 'returns true if it is a subdomain of a blocked domain' do
+ Fabricate(:email_domain_block, domain: 'example.com')
+ expect(described_class.block?(input)).to be true
+ end
end
end
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 4e6b824bbe..135d7a36ba 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -35,8 +35,8 @@ describe Export do
results = export.strip.split("\n")
expect(results.size).to eq 3
- expect(results.first).to eq 'Account address,Show boosts'
- expect(results.second).to eq 'one@local.host,true'
+ expect(results.first).to eq 'Account address,Show boosts,Notify on new posts,Languages'
+ expect(results.second).to eq 'one@local.host,true,false,'
end
end
diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb
index b0e854f09a..c456c285fa 100644
--- a/spec/models/follow_request_spec.rb
+++ b/spec/models/follow_request_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe FollowRequest, type: :model do
let(:target_account) { Fabricate(:account) }
it 'calls Account#follow!, MergeWorker.perform_async, and #destroy!' do
- expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, bypass_limit: true)
+ expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, languages: nil, bypass_limit: true)
expect(MergeWorker).to receive(:perform_async).with(target_account.id, account.id)
expect(follow_request).to receive(:destroy!)
follow_request.authorize!
diff --git a/spec/models/tag_follow_spec.rb b/spec/models/tag_follow_spec.rb
new file mode 100644
index 0000000000..50c04d2e46
--- /dev/null
+++ b/spec/models/tag_follow_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe TagFollow, type: :model do
+end
diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb
index 3949dbce54..b16f99a799 100644
--- a/spec/models/tag_spec.rb
+++ b/spec/models/tag_spec.rb
@@ -91,7 +91,7 @@ RSpec.describe Tag, type: :model do
upcase_string = 'abcABCabcABCやゆよ'
downcase_string = 'abcabcabcabcやゆよ';
- tag = Fabricate(:tag, name: downcase_string)
+ tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string))
expect(Tag.find_normalized(upcase_string)).to eq tag
end
end
@@ -101,12 +101,12 @@ RSpec.describe Tag, type: :model do
upcase_string = 'abcABCabcABCやゆよ'
downcase_string = 'abcabcabcabcやゆよ';
- tag = Fabricate(:tag, name: downcase_string)
+ tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string))
expect(Tag.matches_name(upcase_string)).to eq [tag]
end
it 'uses the LIKE operator' do
- expect(Tag.matches_name('100%abc').to_sql).to eq %q[SELECT "tags".* FROM "tags" WHERE LOWER("tags"."name") LIKE LOWER('100\\%abc%')]
+ expect(Tag.matches_name('100%abc').to_sql).to eq %q[SELECT "tags".* FROM "tags" WHERE LOWER("tags"."name") LIKE LOWER('100abc%')]
end
end
@@ -115,7 +115,7 @@ RSpec.describe Tag, type: :model do
upcase_string = 'abcABCabcABCやゆよ'
downcase_string = 'abcabcabcabcやゆよ';
- tag = Fabricate(:tag, name: downcase_string)
+ tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string))
expect(Tag.matching_name(upcase_string)).to eq [tag]
end
end
diff --git a/spec/models/user_role_spec.rb b/spec/models/user_role_spec.rb
new file mode 100644
index 0000000000..28019593e5
--- /dev/null
+++ b/spec/models/user_role_spec.rb
@@ -0,0 +1,189 @@
+require 'rails_helper'
+
+RSpec.describe UserRole, type: :model do
+ subject { described_class.create(name: 'Foo', position: 1) }
+
+ describe '#can?' do
+ context 'with a single flag' do
+ it 'returns true if any of them are present' do
+ subject.permissions = UserRole::FLAGS[:manage_reports]
+ expect(subject.can?(:manage_reports)).to be true
+ end
+
+ it 'returns false if it is not set' do
+ expect(subject.can?(:manage_reports)).to be false
+ end
+ end
+
+ context 'with multiple flags' do
+ it 'returns true if any of them are present' do
+ subject.permissions = UserRole::FLAGS[:manage_users]
+ expect(subject.can?(:manage_reports, :manage_users)).to be true
+ end
+
+ it 'returns false if none of them are present' do
+ expect(subject.can?(:manage_reports, :manage_users)).to be false
+ end
+ end
+
+ context 'with an unknown flag' do
+ it 'raises an error' do
+ expect { subject.can?(:foo) }.to raise_error ArgumentError
+ end
+ end
+ end
+
+ describe '#overrides?' do
+ it 'returns true if other role has lower position' do
+ expect(subject.overrides?(described_class.new(position: subject.position - 1))).to be true
+ end
+
+ it 'returns true if other role is nil' do
+ expect(subject.overrides?(nil)).to be true
+ end
+
+ it 'returns false if other role has higher position' do
+ expect(subject.overrides?(described_class.new(position: subject.position + 1))).to be false
+ end
+ end
+
+ describe '#permissions_as_keys' do
+ before do
+ subject.permissions = UserRole::FLAGS[:invite_users] | UserRole::FLAGS[:view_dashboard] | UserRole::FLAGS[:manage_reports]
+ end
+
+ it 'returns an array' do
+ expect(subject.permissions_as_keys).to match_array %w(invite_users view_dashboard manage_reports)
+ end
+ end
+
+ describe '#permissions_as_keys=' do
+ let(:input) { }
+
+ before do
+ subject.permissions_as_keys = input
+ end
+
+ context 'with a single value' do
+ let(:input) { %w(manage_users) }
+
+ it 'sets permission flags' do
+ expect(subject.permissions).to eq UserRole::FLAGS[:manage_users]
+ end
+ end
+
+ context 'with multiple values' do
+ let(:input) { %w(manage_users manage_reports) }
+
+ it 'sets permission flags' do
+ expect(subject.permissions).to eq UserRole::FLAGS[:manage_users] | UserRole::FLAGS[:manage_reports]
+ end
+ end
+
+ context 'with an unknown value' do
+ let(:input) { %w(foo) }
+
+ it 'does not set permission flags' do
+ expect(subject.permissions).to eq UserRole::Flags::NONE
+ end
+ end
+ end
+
+ describe '#computed_permissions' do
+ context 'when the role is nobody' do
+ let(:subject) { described_class.nobody }
+
+ it 'returns none' do
+ expect(subject.computed_permissions).to eq UserRole::Flags::NONE
+ end
+ end
+
+ context 'when the role is everyone' do
+ let(:subject) { described_class.everyone }
+
+ it 'returns permissions' do
+ expect(subject.computed_permissions).to eq subject.permissions
+ end
+ end
+
+ context 'when role has the administrator flag' do
+ before do
+ subject.permissions = UserRole::FLAGS[:administrator]
+ end
+
+ it 'returns all permissions' do
+ expect(subject.computed_permissions).to eq UserRole::Flags::ALL
+ end
+ end
+
+ context do
+ it 'returns permissions combined with the everyone role' do
+ expect(subject.computed_permissions).to eq described_class.everyone.permissions
+ end
+ end
+ end
+
+ describe '.everyone' do
+ subject { described_class.everyone }
+
+ it 'returns a role' do
+ expect(subject).to be_kind_of(described_class)
+ end
+
+ it 'is identified as the everyone role' do
+ expect(subject.everyone?).to be true
+ end
+
+ it 'has default permissions' do
+ expect(subject.permissions).to eq UserRole::FLAGS[:invite_users]
+ end
+
+ it 'has negative position' do
+ expect(subject.position).to eq -1
+ end
+ end
+
+ describe '.nobody' do
+ subject { described_class.nobody }
+
+ it 'returns a role' do
+ expect(subject).to be_kind_of(described_class)
+ end
+
+ it 'is identified as the nobody role' do
+ expect(subject.nobody?).to be true
+ end
+
+ it 'has no permissions' do
+ expect(subject.permissions).to eq UserRole::Flags::NONE
+ end
+
+ it 'has negative position' do
+ expect(subject.position).to eq -1
+ end
+ end
+
+ describe '#everyone?' do
+ it 'returns true when id is -99' do
+ subject.id = -99
+ expect(subject.everyone?).to be true
+ end
+
+ it 'returns false when id is not -99' do
+ subject.id = 123
+ expect(subject.everyone?).to be false
+ end
+ end
+
+ describe '#nobody?' do
+ it 'returns true when id is nil' do
+ subject.id = nil
+ expect(subject.nobody?).to be true
+ end
+
+ it 'returns false when id is not nil' do
+ subject.id = 123
+ expect(subject.nobody?).to be false
+ end
+ end
+end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 1645ab59e0..a7da31e606 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -56,14 +56,6 @@ RSpec.describe User, type: :model do
end
end
- describe 'admins' do
- it 'returns an array of users who are admin' do
- user_1 = Fabricate(:user, admin: false)
- user_2 = Fabricate(:user, admin: true)
- expect(User.admins).to match_array([user_2])
- end
- end
-
describe 'confirmed' do
it 'returns an array of users who are confirmed' do
user_1 = Fabricate(:user, confirmed_at: nil)
@@ -289,49 +281,6 @@ RSpec.describe User, type: :model do
end
end
- describe '#role' do
- it 'returns admin for admin' do
- user = User.new(admin: true)
- expect(user.role).to eq 'admin'
- end
-
- it 'returns moderator for moderator' do
- user = User.new(moderator: true)
- expect(user.role).to eq 'moderator'
- end
-
- it 'returns user otherwise' do
- user = User.new
- expect(user.role).to eq 'user'
- end
- end
-
- describe '#role?' do
- it 'returns false when invalid role requested' do
- user = User.new(admin: true)
- expect(user.role?('disabled')).to be false
- end
-
- it 'returns true when exact role match' do
- user = User.new
- mod = User.new(moderator: true)
- admin = User.new(admin: true)
-
- expect(user.role?('user')).to be true
- expect(mod.role?('moderator')).to be true
- expect(admin.role?('admin')).to be true
- end
-
- it 'returns true when role higher than needed' do
- mod = User.new(moderator: true)
- admin = User.new(admin: true)
-
- expect(mod.role?('user')).to be true
- expect(admin.role?('user')).to be true
- expect(admin.role?('moderator')).to be true
- end
- end
-
describe '#disable!' do
subject(:user) { Fabricate(:user, disabled: false, current_sign_in_at: current_sign_in_at, last_sign_in_at: nil) }
let(:current_sign_in_at) { Time.zone.now }
@@ -420,110 +369,6 @@ RSpec.describe User, type: :model do
end
end
- describe '#promote!' do
- subject(:user) { Fabricate(:user, admin: is_admin, moderator: is_moderator) }
-
- before do
- user.promote!
- end
-
- context 'when user is an admin' do
- let(:is_admin) { true }
-
- context 'when user is a moderator' do
- let(:is_moderator) { true }
-
- it 'changes moderator filed false' do
- expect(user).to be_admin
- expect(user).not_to be_moderator
- end
- end
-
- context 'when user is not a moderator' do
- let(:is_moderator) { false }
-
- it 'does not change status' do
- expect(user).to be_admin
- expect(user).not_to be_moderator
- end
- end
- end
-
- context 'when user is not admin' do
- let(:is_admin) { false }
-
- context 'when user is a moderator' do
- let(:is_moderator) { true }
-
- it 'changes user into an admin' do
- expect(user).to be_admin
- expect(user).not_to be_moderator
- end
- end
-
- context 'when user is not a moderator' do
- let(:is_moderator) { false }
-
- it 'changes user into a moderator' do
- expect(user).not_to be_admin
- expect(user).to be_moderator
- end
- end
- end
- end
-
- describe '#demote!' do
- subject(:user) { Fabricate(:user, admin: admin, moderator: moderator) }
-
- before do
- user.demote!
- end
-
- context 'when user is an admin' do
- let(:admin) { true }
-
- context 'when user is a moderator' do
- let(:moderator) { true }
-
- it 'changes user into a moderator' do
- expect(user).not_to be_admin
- expect(user).to be_moderator
- end
- end
-
- context 'when user is not a moderator' do
- let(:moderator) { false }
-
- it 'changes user into a moderator' do
- expect(user).not_to be_admin
- expect(user).to be_moderator
- end
- end
- end
-
- context 'when user is not an admin' do
- let(:admin) { false }
-
- context 'when user is a moderator' do
- let(:moderator) { true }
-
- it 'changes user into a plain user' do
- expect(user).not_to be_admin
- expect(user).not_to be_moderator
- end
- end
-
- context 'when user is not a moderator' do
- let(:moderator) { false }
-
- it 'does not change any fields' do
- expect(user).not_to be_admin
- expect(user).not_to be_moderator
- end
- end
- end
- end
-
describe '#active_for_authentication?' do
subject { user.active_for_authentication? }
let(:user) { Fabricate(:user, disabled: disabled, confirmed_at: confirmed_at) }
@@ -560,4 +405,8 @@ RSpec.describe User, type: :model do
end
end
end
+
+ describe '.those_who_can' do
+ pending
+ end
end
diff --git a/spec/policies/account_moderation_note_policy_spec.rb b/spec/policies/account_moderation_note_policy_spec.rb
index 39ec2008ae..8467473465 100644
--- a/spec/policies/account_moderation_note_policy_spec.rb
+++ b/spec/policies/account_moderation_note_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe AccountModerationNotePolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :create? do
@@ -31,7 +31,7 @@ RSpec.describe AccountModerationNotePolicy do
context 'admin' do
it 'grants to destroy' do
- expect(subject).to permit(admin, AccountModerationNotePolicy)
+ expect(subject).to permit(admin, account_moderation_note)
end
end
diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb
index b55eb65a79..0f23fd97e2 100644
--- a/spec/policies/account_policy_spec.rb
+++ b/spec/policies/account_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe AccountPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
let(:alice) { Fabricate(:account) }
@@ -55,7 +55,7 @@ RSpec.describe AccountPolicy do
end
end
- permissions :redownload?, :subscribe?, :unsubscribe? do
+ permissions :redownload? do
context 'admin' do
it 'permits' do
expect(subject).to permit(admin)
@@ -70,7 +70,7 @@ RSpec.describe AccountPolicy do
end
permissions :suspend?, :silence? do
- let(:staff) { Fabricate(:user, admin: true).account }
+ let(:staff) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
context 'staff' do
context 'record is staff' do
@@ -94,7 +94,7 @@ RSpec.describe AccountPolicy do
end
permissions :memorialize? do
- let(:other_admin) { Fabricate(:user, admin: true).account }
+ let(:other_admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
context 'admin' do
context 'record is admin' do
diff --git a/spec/policies/custom_emoji_policy_spec.rb b/spec/policies/custom_emoji_policy_spec.rb
index e4f1af3c1b..6a6ef6694d 100644
--- a/spec/policies/custom_emoji_policy_spec.rb
+++ b/spec/policies/custom_emoji_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe CustomEmojiPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :index?, :enable?, :disable? do
diff --git a/spec/policies/domain_block_policy_spec.rb b/spec/policies/domain_block_policy_spec.rb
index b24ed9e3a3..01b97e823a 100644
--- a/spec/policies/domain_block_policy_spec.rb
+++ b/spec/policies/domain_block_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe DomainBlockPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :index?, :show?, :create?, :destroy? do
diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb
index 1ff55af8e6..913075c3d2 100644
--- a/spec/policies/email_domain_block_policy_spec.rb
+++ b/spec/policies/email_domain_block_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe EmailDomainBlockPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :index?, :create?, :destroy? do
diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb
index 71ef1fe507..f6f51af068 100644
--- a/spec/policies/instance_policy_spec.rb
+++ b/spec/policies/instance_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe InstancePolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :index?, :show?, :destroy? do
diff --git a/spec/policies/invite_policy_spec.rb b/spec/policies/invite_policy_spec.rb
index 1221378047..01660322f1 100644
--- a/spec/policies/invite_policy_spec.rb
+++ b/spec/policies/invite_policy_spec.rb
@@ -5,8 +5,8 @@ require 'pundit/rspec'
RSpec.describe InvitePolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:account) }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
+ let(:john) { Fabricate(:user).account }
permissions :index? do
context 'staff?' do
@@ -17,16 +17,22 @@ RSpec.describe InvitePolicy do
end
permissions :create? do
- context 'min_required_role?' do
+ context 'has privilege' do
+ before do
+ UserRole.everyone.update(permissions: UserRole::FLAGS[:invite_users])
+ end
+
it 'permits' do
- allow_any_instance_of(described_class).to receive(:min_required_role?) { true }
expect(subject).to permit(john, Invite)
end
end
- context 'not min_required_role?' do
+ context 'does not have privilege' do
+ before do
+ UserRole.everyone.update(permissions: UserRole::Flags::NONE)
+ end
+
it 'denies' do
- allow_any_instance_of(described_class).to receive(:min_required_role?) { false }
expect(subject).to_not permit(john, Invite)
end
end
@@ -54,39 +60,15 @@ RSpec.describe InvitePolicy do
end
context 'not owner?' do
- context 'Setting.min_invite_role == "admin"' do
- before do
- Setting.min_invite_role = 'admin'
- end
-
- context 'admin?' do
- it 'permits' do
- expect(subject).to permit(admin, Fabricate(:invite))
- end
- end
-
- context 'not admin?' do
- it 'denies' do
- expect(subject).to_not permit(john, Fabricate(:invite))
- end
+ context 'admin?' do
+ it 'permits' do
+ expect(subject).to permit(admin, Fabricate(:invite))
end
end
- context 'Setting.min_invite_role != "admin"' do
- before do
- Setting.min_invite_role = 'else'
- end
-
- context 'staff?' do
- it 'permits' do
- expect(subject).to permit(admin, Fabricate(:invite))
- end
- end
-
- context 'not staff?' do
- it 'denies' do
- expect(subject).to_not permit(john, Fabricate(:invite))
- end
+ context 'not admin?' do
+ it 'denies' do
+ expect(subject).to_not permit(john, Fabricate(:invite))
end
end
end
diff --git a/spec/policies/relay_policy_spec.rb b/spec/policies/relay_policy_spec.rb
index 139d945dc8..2c50ba1e9f 100644
--- a/spec/policies/relay_policy_spec.rb
+++ b/spec/policies/relay_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe RelayPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :update? do
diff --git a/spec/policies/report_note_policy_spec.rb b/spec/policies/report_note_policy_spec.rb
index c34f99b712..99f5ffb8e3 100644
--- a/spec/policies/report_note_policy_spec.rb
+++ b/spec/policies/report_note_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe ReportNotePolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :create? do
@@ -25,7 +25,8 @@ RSpec.describe ReportNotePolicy do
permissions :destroy? do
context 'admin?' do
it 'permit' do
- expect(subject).to permit(admin, ReportNote)
+ report_note = Fabricate(:report_note, account: john)
+ expect(subject).to permit(admin, report_note)
end
end
diff --git a/spec/policies/report_policy_spec.rb b/spec/policies/report_policy_spec.rb
index 84c366d7f3..8b005d8ddd 100644
--- a/spec/policies/report_policy_spec.rb
+++ b/spec/policies/report_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe ReportPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :update?, :index?, :show? do
diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb
index 3fa183c509..e16ee51a48 100644
--- a/spec/policies/settings_policy_spec.rb
+++ b/spec/policies/settings_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe SettingsPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :update?, :show? do
diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb
index 865c693aa8..c2dcc50dfa 100644
--- a/spec/policies/status_policy_spec.rb
+++ b/spec/policies/status_policy_spec.rb
@@ -6,7 +6,7 @@ require 'pundit/rspec'
RSpec.describe StatusPolicy, type: :model do
subject { described_class }
- let(:admin) { Fabricate(:user, admin: true) }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
let(:alice) { Fabricate(:account, username: 'alice') }
let(:bob) { Fabricate(:account, username: 'bob') }
let(:status) { Fabricate(:status, account: alice) }
diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb
index 256e6786a3..9be7140fc2 100644
--- a/spec/policies/tag_policy_spec.rb
+++ b/spec/policies/tag_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe TagPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :index?, :show?, :update? do
diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb
index 731c041d11..ff0916674e 100644
--- a/spec/policies/user_policy_spec.rb
+++ b/spec/policies/user_policy_spec.rb
@@ -5,7 +5,7 @@ require 'pundit/rspec'
RSpec.describe UserPolicy do
let(:subject) { described_class }
- let(:admin) { Fabricate(:user, admin: true).account }
+ let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:john) { Fabricate(:account) }
permissions :reset_password?, :change_email? do
@@ -111,57 +111,4 @@ RSpec.describe UserPolicy do
end
end
end
-
- permissions :promote? do
- context 'admin?' do
- context 'promotable?' do
- it 'permits' do
- expect(subject).to permit(admin, john.user)
- end
- end
-
- context '!promotable?' do
- it 'denies' do
- expect(subject).to_not permit(admin, admin.user)
- end
- end
- end
-
- context '!admin?' do
- it 'denies' do
- expect(subject).to_not permit(john, User)
- end
- end
- end
-
- permissions :demote? do
- context 'admin?' do
- context '!record.admin?' do
- context 'demoteable?' do
- it 'permits' do
- john.user.update(moderator: true)
- expect(subject).to permit(admin, john.user)
- end
- end
-
- context '!demoteable?' do
- it 'denies' do
- expect(subject).to_not permit(admin, john.user)
- end
- end
- end
-
- context 'record.admin?' do
- it 'denies' do
- expect(subject).to_not permit(admin, admin.user)
- end
- end
- end
-
- context '!admin?' do
- it 'denies' do
- expect(subject).to_not permit(john, User)
- end
- end
- end
end
diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb
index 81d8d0e980..4baad03f41 100644
--- a/spec/presenters/instance_presenter_spec.rb
+++ b/spec/presenters/instance_presenter_spec.rb
@@ -3,21 +3,20 @@ require 'rails_helper'
describe InstancePresenter do
let(:instance_presenter) { InstancePresenter.new }
- context do
+ describe '#description' do
around do |example|
- site_description = Setting.site_description
+ site_description = Setting.site_short_description
example.run
- Setting.site_description = site_description
+ Setting.site_short_description = site_description
end
it "delegates site_description to Setting" do
- Setting.site_description = "Site desc"
-
- expect(instance_presenter.site_description).to eq "Site desc"
+ Setting.site_short_description = "Site desc"
+ expect(instance_presenter.description).to eq "Site desc"
end
end
- context do
+ describe '#extended_description' do
around do |example|
site_extended_description = Setting.site_extended_description
example.run
@@ -26,12 +25,11 @@ describe InstancePresenter do
it "delegates site_extended_description to Setting" do
Setting.site_extended_description = "Extended desc"
-
- expect(instance_presenter.site_extended_description).to eq "Extended desc"
+ expect(instance_presenter.extended_description).to eq "Extended desc"
end
end
- context do
+ describe '#email' do
around do |example|
site_contact_email = Setting.site_contact_email
example.run
@@ -40,12 +38,11 @@ describe InstancePresenter do
it "delegates contact_email to Setting" do
Setting.site_contact_email = "admin@example.com"
-
- expect(instance_presenter.site_contact_email).to eq "admin@example.com"
+ expect(instance_presenter.contact.email).to eq "admin@example.com"
end
end
- describe "contact_account" do
+ describe '#account' do
around do |example|
site_contact_username = Setting.site_contact_username
example.run
@@ -55,12 +52,11 @@ describe InstancePresenter do
it "returns the account for the site contact username" do
Setting.site_contact_username = "aaa"
account = Fabricate(:account, username: "aaa")
-
- expect(instance_presenter.contact_account).to eq(account)
+ expect(instance_presenter.contact.account).to eq(account)
end
end
- describe "user_count" do
+ describe '#user_count' do
it "returns the number of site users" do
Rails.cache.write 'user_count', 123
@@ -68,7 +64,7 @@ describe InstancePresenter do
end
end
- describe "status_count" do
+ describe '#status_count' do
it "returns the number of local statuses" do
Rails.cache.write 'local_status_count', 234
@@ -76,7 +72,7 @@ describe InstancePresenter do
end
end
- describe "domain_count" do
+ describe '#domain_count' do
it "returns the number of known domains" do
Rails.cache.write 'distinct_domain_count', 345
@@ -84,9 +80,9 @@ describe InstancePresenter do
end
end
- describe '#version_number' do
- it 'returns Mastodon::Version' do
- expect(instance_presenter.version_number).to be(Mastodon::Version)
+ describe '#version' do
+ it 'returns string' do
+ expect(instance_presenter.version).to be_a String
end
end
diff --git a/spec/presenters/status_relationships_presenter_spec.rb b/spec/presenters/status_relationships_presenter_spec.rb
index 5cd4929a63..eaab922fd9 100644
--- a/spec/presenters/status_relationships_presenter_spec.rb
+++ b/spec/presenters/status_relationships_presenter_spec.rb
@@ -94,5 +94,32 @@ RSpec.describe StatusRelationshipsPresenter do
expect(matched_filters[0].keyword_matches).to eq ['irrelevant']
end
end
+
+ context 'when post includes filtered individual statuses' do
+ let(:statuses) { [Fabricate(:status, text: 'hello world'), Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about an irrelevant word'))] }
+ let(:options) { {} }
+
+ before do
+ filter = Account.find(current_account_id).custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide)
+ filter.statuses.create!(status_id: statuses[0].id)
+ filter.statuses.create!(status_id: statuses[1].reblog_of_id)
+ end
+
+ it 'sets @filters_map to filter top-level status' do
+ matched_filters = presenter.filters_map[statuses[0].id]
+ expect(matched_filters.size).to eq 1
+
+ expect(matched_filters[0].filter.title).to eq 'filter1'
+ expect(matched_filters[0].status_matches).to eq [statuses[0].id]
+ end
+
+ it 'sets @filters_map to filter reblogged status' do
+ matched_filters = presenter.filters_map[statuses[1].reblog_of_id]
+ expect(matched_filters.size).to eq 1
+
+ expect(matched_filters[0].filter.title).to eq 'filter1'
+ expect(matched_filters[0].status_matches).to eq [statuses[1].reblog_of_id]
+ end
+ end
end
end
diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb
index aa13f0a9b7..ec6f1f41d8 100644
--- a/spec/services/activitypub/fetch_remote_account_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb
@@ -119,6 +119,58 @@ RSpec.describe ActivityPub::FetchRemoteAccountService, type: :service do
include_examples 'sets profile data'
end
+ context 'when WebFinger returns a different URI' do
+ let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'does not create account' do
+ expect(account).to be_nil
+ end
+ end
+
+ context 'when WebFinger returns a different URI after a redirection' do
+ let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'looks up "redirected" webfinger' do
+ account
+ expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once
+ end
+
+ it 'does not create account' do
+ expect(account).to be_nil
+ end
+ end
+
context 'with wrong id' do
it 'does not create account' do
expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil
diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb
new file mode 100644
index 0000000000..20117c66d0
--- /dev/null
+++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb
@@ -0,0 +1,180 @@
+require 'rails_helper'
+
+RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do
+ subject { ActivityPub::FetchRemoteActorService.new }
+
+ let!(:actor) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: 'https://example.com/alice',
+ type: 'Person',
+ preferredUsername: 'alice',
+ name: 'Alice',
+ summary: 'Foo bar',
+ inbox: 'http://example.com/alice/inbox',
+ }
+ end
+
+ describe '#call' do
+ let(:account) { subject.call('https://example.com/alice', id: true) }
+
+ shared_examples 'sets profile data' do
+ it 'returns an account' do
+ expect(account).to be_an Account
+ end
+
+ it 'sets display name' do
+ expect(account.display_name).to eq 'Alice'
+ end
+
+ it 'sets note' do
+ expect(account.note).to eq 'Foo bar'
+ end
+
+ it 'sets URL' do
+ expect(account.url).to eq 'https://example.com/alice'
+ end
+ end
+
+ context 'when the account does not have a inbox' do
+ let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } }
+
+ before do
+ actor[:inbox] = nil
+
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'returns nil' do
+ expect(account).to be_nil
+ end
+ end
+
+ context 'when URI and WebFinger share the same host' do
+ let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'sets username and domain from webfinger' do
+ expect(account.username).to eq 'alice'
+ expect(account.domain).to eq 'example.com'
+ end
+
+ include_examples 'sets profile data'
+ end
+
+ context 'when WebFinger presents different domain than URI' do
+ let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'looks up "redirected" webfinger' do
+ account
+ expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once
+ end
+
+ it 'sets username and domain from final webfinger' do
+ expect(account.username).to eq 'alice'
+ expect(account.domain).to eq 'iscool.af'
+ end
+
+ include_examples 'sets profile data'
+ end
+
+ context 'when WebFinger returns a different URI' do
+ let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'does not create account' do
+ expect(account).to be_nil
+ end
+ end
+
+ context 'when WebFinger returns a different URI after a redirection' do
+ let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } }
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ it 'fetches resource' do
+ account
+ expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once
+ end
+
+ it 'looks up webfinger' do
+ account
+ expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once
+ end
+
+ it 'looks up "redirected" webfinger' do
+ account
+ expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once
+ end
+
+ it 'does not create account' do
+ expect(account).to be_nil
+ end
+ end
+
+ context 'with wrong id' do
+ it 'does not create account' do
+ expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil
+ end
+ end
+ end
+end
diff --git a/spec/services/activitypub/fetch_remote_key_service_spec.rb b/spec/services/activitypub/fetch_remote_key_service_spec.rb
new file mode 100644
index 0000000000..3186c4270d
--- /dev/null
+++ b/spec/services/activitypub/fetch_remote_key_service_spec.rb
@@ -0,0 +1,83 @@
+require 'rails_helper'
+
+RSpec.describe ActivityPub::FetchRemoteKeyService, type: :service do
+ subject { ActivityPub::FetchRemoteKeyService.new }
+
+ let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } }
+
+ let(:public_key_pem) do
+ "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3L4vnpNLzVH31MeWI39\n4F0wKeJFsLDAsNXGeOu0QF2x+h1zLWZw/agqD2R3JPU9/kaDJGPIV2Sn5zLyUA9S\n6swCCMOtn7BBR9g9sucgXJmUFB0tACH2QSgHywMAybGfmSb3LsEMNKsGJ9VsvYoh\n8lDET6X4Pyw+ZJU0/OLo/41q9w+OrGtlsTm/PuPIeXnxa6BLqnDaxC+4IcjG/FiP\nahNCTINl/1F/TgSSDZ4Taf4U9XFEIFw8wmgploELozzIzKq+t8nhQYkgAkt64euW\npva3qL5KD1mTIZQEP+LZvh3s2WHrLi3fhbdRuwQ2c0KkJA2oSTFPDpqqbPGZ3Qvu\nHQIDAQAB\n-----END PUBLIC KEY-----\n"
+ end
+
+ let(:public_key_id) { 'https://example.com/alice#main-key' }
+
+ let(:key_json) do
+ {
+ id: public_key_id,
+ owner: 'https://example.com/alice',
+ publicKeyPem: public_key_pem,
+ }
+ end
+
+ let(:actor_public_key) { key_json }
+
+ let(:actor) do
+ {
+ '@context': [
+ 'https://www.w3.org/ns/activitystreams',
+ 'https://w3id.org/security/v1',
+ ],
+ id: 'https://example.com/alice',
+ type: 'Person',
+ preferredUsername: 'alice',
+ name: 'Alice',
+ summary: 'Foo bar',
+ inbox: 'http://example.com/alice/inbox',
+ publicKey: actor_public_key,
+ }
+ end
+
+ before do
+ stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor))
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
+ end
+
+ describe '#call' do
+ let(:account) { subject.call(public_key_id, id: false) }
+
+ context 'when the key is a sub-object from the actor' do
+ before do
+ stub_request(:get, public_key_id).to_return(body: Oj.dump(actor))
+ end
+
+ it 'returns the expected account' do
+ expect(account.uri).to eq 'https://example.com/alice'
+ end
+ end
+
+ context 'when the key is a separate document' do
+ let(:public_key_id) { 'https://example.com/alice-public-key.json' }
+
+ before do
+ stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] })))
+ end
+
+ it 'returns the expected account' do
+ expect(account.uri).to eq 'https://example.com/alice'
+ end
+ end
+
+ context 'when the key and owner do not match' do
+ let(:public_key_id) { 'https://example.com/fake-public-key.json' }
+ let(:actor_public_key) { 'https://example.com/alice-public-key.json' }
+
+ before do
+ stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] })))
+ end
+
+ it 'returns the nil' do
+ expect(account).to be_nil
+ end
+ end
+ end
+end
diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb
index 3eccaab5bb..093a188a21 100644
--- a/spec/services/activitypub/process_collection_service_spec.rb
+++ b/spec/services/activitypub/process_collection_service_spec.rb
@@ -68,7 +68,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
let(:forwarder) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/other_account') }
it 'does not process payload if no signature exists' do
- expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil)
+ expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil)
expect(ActivityPub::Activity).not_to receive(:factory)
subject.call(json, forwarder)
@@ -77,7 +77,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
it 'processes payload with actor if valid signature exists' do
payload['signature'] = { 'type' => 'RsaSignature2017' }
- expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(actor)
+ expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(actor)
expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor, instance_of(Hash))
subject.call(json, forwarder)
@@ -86,7 +86,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
it 'does not process payload if invalid signature exists' do
payload['signature'] = { 'type' => 'RsaSignature2017' }
- expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil)
+ expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil)
expect(ActivityPub::Activity).not_to receive(:factory)
subject.call(json, forwarder)
diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb
index e0c83b7041..8ec4d4a7a6 100644
--- a/spec/services/app_sign_up_service_spec.rb
+++ b/spec/services/app_sign_up_service_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe AppSignUpService, type: :service do
it 'returns nil when registrations are closed' do
tmp = Setting.registrations_mode
Setting.registrations_mode = 'none'
- expect(subject.call(app, remote_ip, good_params)).to be_nil
+ expect { subject.call(app, remote_ip, good_params) }.to raise_error Mastodon::NotPermittedError
Setting.registrations_mode = tmp
end
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index ded05ffbc7..c0c96ab69c 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -66,7 +66,7 @@ RSpec.describe FetchResourceService, type: :service do
it 'signs request' do
subject
- expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.uri_for(Account.representative) + '#main-key')}"/ })).to have_been_made
+ expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.key_uri_for(Account.representative))}"/ })).to have_been_made
end
context 'when content type is application/atom+xml' do
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index 02bc87c58d..88346ec54a 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -121,6 +121,19 @@ RSpec.describe FollowService, type: :service do
expect(sender.muting_reblogs?(bob)).to be false
end
end
+
+ describe 'already followed account, changing languages' do
+ let(:bob) { Fabricate(:account, username: 'bob') }
+
+ before do
+ sender.follow!(bob)
+ subject.call(sender, bob, languages: %w(en es))
+ end
+
+ it 'changes languages' do
+ expect(Follow.find_by(account: sender, target_account: bob)&.languages).to match_array %w(en es)
+ end
+ end
end
context 'remote ActivityPub account' do
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index ea68b3344d..02bc42ac17 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -42,13 +42,44 @@ RSpec.describe ReportService, type: :service do
end
it 'creates a report' do
- is_expected.to change { target_account.targeted_reports.count }.from(0).to(1)
+ expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1)
+ end
+
+ it 'attaches the DM to the report' do
+ subject.call
+ expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]]
end
end
context 'when it is not addressed to the reporter' do
it 'errors out' do
- is_expected.to raise_error
+ expect { subject.call }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+
+ context 'when the reporter is remote' do
+ let(:source_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/users/1') }
+
+ context 'when it is addressed to the reporter' do
+ before do
+ status.mentions.create(account: source_account)
+ end
+
+ it 'creates a report' do
+ expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1)
+ end
+
+ it 'attaches the DM to the report' do
+ subject.call
+ expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]]
+ end
+ end
+
+ context 'when it is not addressed to the reporter' do
+ it 'does not add the DM to the report' do
+ subject.call
+ expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[]]
+ end
end
end
end
@@ -67,7 +98,7 @@ RSpec.describe ReportService, type: :service do
end
it 'does not send an e-mail' do
- is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0)
+ expect { subject.call }.to_not change(ActionMailer::Base.deliveries, :count).from(0)
end
end
end
diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb
index 8c302e1d86..654606beab 100644
--- a/spec/services/resolve_account_service_spec.rb
+++ b/spec/services/resolve_account_service_spec.rb
@@ -137,8 +137,8 @@ RSpec.describe ResolveAccountService, type: :service do
stub_request(:get, 'https://evil.example.com/.well-known/webfinger?resource=acct:foo@evil.example.com').to_return(body: Oj.dump(webfinger2), headers: { 'Content-Type': 'application/jrd+json' })
end
- it 'returns new remote account' do
- expect { subject.call('Foo@redirected.example.com') }.to raise_error Webfinger::RedirectError
+ it 'does not return a new remote account' do
+ expect(subject.call('Foo@redirected.example.com')).to be_nil
end
end
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
index 140f3fd41c..15802799aa 100644
--- a/spec/views/about/show.html.haml_spec.rb
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -14,26 +14,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
end
it 'has valid open graph tags' do
- instance_presenter = double(
- :instance_presenter,
- site_title: 'something',
- site_short_description: 'something',
- site_description: 'something',
- version_number: '1.0',
- source_url: 'https://github.com/mastodon/mastodon',
- open_registrations: false,
- thumbnail: nil,
- hero: nil,
- mascot: nil,
- user_count: 420,
- status_count: 69,
- active_user_count: 420,
- commit_hash: commit_hash,
- contact_account: nil,
- sample_accounts: []
- )
-
- assign(:instance_presenter, instance_presenter)
+ assign(:instance_presenter, InstancePresenter.new)
render
header_tags = view.content_for(:header_tags)
diff --git a/spec/workers/digest_mailer_worker_spec.rb b/spec/workers/digest_mailer_worker_spec.rb
deleted file mode 100644
index db3b1390d5..0000000000
--- a/spec/workers/digest_mailer_worker_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe DigestMailerWorker do
- describe 'perform' do
- let(:user) { Fabricate(:user, last_emailed_at: 3.days.ago) }
-
- context 'for a user who receives digests' do
- it 'sends the email' do
- service = double(deliver_now!: nil)
- allow(NotificationMailer).to receive(:digest).and_return(service)
- update_user_digest_setting(true)
- described_class.perform_async(user.id)
-
- expect(NotificationMailer).to have_received(:digest)
- expect(user.reload.last_emailed_at).to be_within(1).of(Time.now.utc)
- end
- end
-
- context 'for a user who does not receive digests' do
- it 'does not send the email' do
- allow(NotificationMailer).to receive(:digest)
- update_user_digest_setting(false)
- described_class.perform_async(user.id)
-
- expect(NotificationMailer).not_to have_received(:digest)
- expect(user.last_emailed_at).to be_within(1).of(3.days.ago)
- end
- end
-
- def update_user_digest_setting(value)
- user.settings['notification_emails'] = user.settings['notification_emails'].merge('digest' => value)
- end
- end
-end
diff --git a/spec/workers/refollow_worker_spec.rb b/spec/workers/refollow_worker_spec.rb
index df6731b640..d9c2293b62 100644
--- a/spec/workers/refollow_worker_spec.rb
+++ b/spec/workers/refollow_worker_spec.rb
@@ -23,8 +23,8 @@ describe RefollowWorker do
result = subject.perform(account.id)
expect(result).to be_nil
- expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, bypass_limit: true)
- expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, bypass_limit: true)
+ expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, languages: nil, bypass_limit: true)
+ expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, languages: nil, bypass_limit: true)
end
end
end
diff --git a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb
deleted file mode 100644
index 82d7945946..0000000000
--- a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'rails_helper'
-
-describe Scheduler::FeedCleanupScheduler do
- subject { described_class.new }
-
- let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) }
- let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) }
-
- it 'clears feeds of inactives' do
- redis.zadd(feed_key_for(inactive_user), 1, 1)
- redis.zadd(feed_key_for(active_user), 1, 1)
- redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2)
- redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3)
-
- subject.perform
-
- expect(redis.zcard(feed_key_for(inactive_user))).to eq 0
- expect(redis.zcard(feed_key_for(active_user))).to eq 1
- expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false
- expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false
- end
-
- def feed_key_for(user, subtype = nil)
- FeedManager.instance.key(:home, user.account_id, subtype)
- end
-end
diff --git a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb b/spec/workers/scheduler/media_cleanup_scheduler_spec.rb
deleted file mode 100644
index 8a0da67e1b..0000000000
--- a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'rails_helper'
-
-describe Scheduler::MediaCleanupScheduler do
- subject { described_class.new }
-
- let!(:old_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) }
- let!(:new_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) }
-
- it 'removes old media records' do
- subject.perform
-
- expect { old_media.reload }.to raise_error(ActiveRecord::RecordNotFound)
- expect(new_media.reload).to be_persisted
- end
-end
diff --git a/streaming/index.js b/streaming/index.js
index 183cdf7899..ff7d48250b 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -900,6 +900,34 @@ const startWorker = async (workerId) => {
return arr;
};
+ /**
+ * See app/lib/ascii_folder.rb for the canon definitions
+ * of these constants
+ */
+ const NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž';
+ const EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz';
+
+ /**
+ * @param {string} str
+ * @return {string}
+ */
+ const foldToASCII = str => {
+ const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g');
+
+ return str.replace(regex, match => {
+ const index = NON_ASCII_CHARS.indexOf(match);
+ return EQUIVALENT_ASCII_CHARS[index];
+ });
+ };
+
+ /**
+ * @param {string} str
+ * @return {string}
+ */
+ const normalizeHashtag = str => {
+ return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, '');
+ };
+
/**
* @param {any} req
* @param {string} name
@@ -990,7 +1018,7 @@ const startWorker = async (workerId) => {
reject('No tag for stream provided');
} else {
resolve({
- channelIds: [`timeline:hashtag:${params.tag.toLowerCase()}`],
+ channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}`],
options: { needsFiltering: true, allowLocalOnly: true },
});
}
@@ -1001,7 +1029,7 @@ const startWorker = async (workerId) => {
reject('No tag for stream provided');
} else {
resolve({
- channelIds: [`timeline:hashtag:${params.tag.toLowerCase()}:local`],
+ channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}:local`],
options: { needsFiltering: true, allowLocalOnly: true },
});
}
diff --git a/yarn.lock b/yarn.lock
index f24128eead..ab60d1248c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@adobe/css-tools@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd"
+ integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==
+
"@ampproject/remapping@^2.1.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
@@ -9,6 +14,15 @@
dependencies:
"@jridgewell/trace-mapping" "^0.3.0"
+"@apideck/better-ajv-errors@^0.3.1":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15"
+ integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==
+ dependencies:
+ json-schema "^0.4.0"
+ jsonpointer "^5.0.0"
+ leven "^3.1.0"
+
"@babel/code-frame@7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
@@ -23,48 +37,48 @@
dependencies:
"@babel/highlight" "^7.18.6"
-"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53"
- integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==
+"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151"
+ integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.6", "@babel/core@^7.7.2":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d"
- integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==
+"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.3", "@babel/core@^7.7.2":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
+ integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
dependencies:
"@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.18.6"
- "@babel/helper-module-transforms" "^7.18.6"
- "@babel/helpers" "^7.18.6"
- "@babel/parser" "^7.18.6"
- "@babel/template" "^7.18.6"
- "@babel/traverse" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/generator" "^7.19.3"
+ "@babel/helper-compilation-targets" "^7.19.3"
+ "@babel/helper-module-transforms" "^7.19.0"
+ "@babel/helpers" "^7.19.0"
+ "@babel/parser" "^7.19.3"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.3"
+ "@babel/types" "^7.19.3"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.1"
semver "^6.3.0"
-"@babel/eslint-parser@^7.18.2":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245"
- integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==
+"@babel/eslint-parser@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4"
+ integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==
dependencies:
- eslint-scope "^5.1.1"
+ "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.0"
-"@babel/generator@^7.18.6", "@babel/generator@^7.7.2":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9"
- integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw==
+"@babel/generator@^7.19.3", "@babel/generator@^7.7.2":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59"
+ integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==
dependencies:
- "@babel/types" "^7.18.6"
- "@jridgewell/gen-mapping" "^0.3.0"
+ "@babel/types" "^7.19.3"
+ "@jridgewell/gen-mapping" "^0.3.2"
jsesc "^2.5.1"
"@babel/helper-annotate-as-pure@^7.18.6":
@@ -90,27 +104,27 @@
"@babel/helper-annotate-as-pure" "^7.18.6"
"@babel/types" "^7.18.6"
-"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96"
- integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==
+"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz#a10a04588125675d7c7ae299af86fa1b2ee038ca"
+ integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==
dependencies:
- "@babel/compat-data" "^7.18.6"
+ "@babel/compat-data" "^7.19.3"
"@babel/helper-validator-option" "^7.18.6"
- browserslist "^4.20.2"
+ browserslist "^4.21.3"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72"
- integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b"
+ integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-environment-visitor" "^7.18.6"
- "@babel/helper-function-name" "^7.18.6"
- "@babel/helper-member-expression-to-functions" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-member-expression-to-functions" "^7.18.9"
"@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/helper-replace-supers" "^7.18.6"
+ "@babel/helper-replace-supers" "^7.18.9"
"@babel/helper-split-export-declaration" "^7.18.6"
"@babel/helper-create-regexp-features-plugin@^7.18.6":
@@ -121,15 +135,21 @@
"@babel/helper-annotate-as-pure" "^7.18.6"
regexpu-core "^5.1.0"
-"@babel/helper-define-polyfill-provider@^0.3.1":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
- integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+"@babel/helper-create-regexp-features-plugin@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b"
+ integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==
dependencies:
- "@babel/helper-compilation-targets" "^7.13.0"
- "@babel/helper-module-imports" "^7.12.13"
- "@babel/helper-plugin-utils" "^7.13.0"
- "@babel/traverse" "^7.13.0"
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ regexpu-core "^5.1.0"
+
+"@babel/helper-define-polyfill-provider@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a"
+ integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.17.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
debug "^4.1.1"
lodash.debounce "^4.0.8"
resolve "^1.14.2"
@@ -140,6 +160,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7"
integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
+ integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+
"@babel/helper-explode-assignable-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096"
@@ -155,6 +180,22 @@
"@babel/template" "^7.18.6"
"@babel/types" "^7.18.6"
+"@babel/helper-function-name@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0"
+ integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==
+ dependencies:
+ "@babel/template" "^7.18.6"
+ "@babel/types" "^7.18.9"
+
+"@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
+
"@babel/helper-hoist-variables@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
@@ -162,33 +203,33 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-member-expression-to-functions@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc"
- integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==
+"@babel/helper-member-expression-to-functions@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815"
+ integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==
dependencies:
- "@babel/types" "^7.18.6"
+ "@babel/types" "^7.18.9"
-"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6":
+"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-module-transforms@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8"
- integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==
+"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30"
+ integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==
dependencies:
- "@babel/helper-environment-visitor" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-module-imports" "^7.18.6"
"@babel/helper-simple-access" "^7.18.6"
"@babel/helper-split-export-declaration" "^7.18.6"
"@babel/helper-validator-identifier" "^7.18.6"
- "@babel/template" "^7.18.6"
- "@babel/traverse" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.0"
+ "@babel/types" "^7.19.0"
"@babel/helper-optimise-call-expression@^7.18.6":
version "7.18.6"
@@ -197,10 +238,10 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d"
- integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
+ integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
"@babel/helper-remap-async-to-generator@^7.18.6":
version "7.18.6"
@@ -212,16 +253,26 @@
"@babel/helper-wrap-function" "^7.18.6"
"@babel/types" "^7.18.6"
-"@babel/helper-replace-supers@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420"
- integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==
+"@babel/helper-remap-async-to-generator@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
+ integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==
dependencies:
- "@babel/helper-environment-visitor" "^7.18.6"
- "@babel/helper-member-expression-to-functions" "^7.18.6"
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-wrap-function" "^7.18.9"
+ "@babel/types" "^7.18.9"
+
+"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78"
+ integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-member-expression-to-functions" "^7.18.9"
"@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/traverse" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/traverse" "^7.19.1"
+ "@babel/types" "^7.19.0"
"@babel/helper-simple-access@^7.18.6":
version "7.18.6"
@@ -230,12 +281,12 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-skip-transparent-expression-wrappers@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9"
- integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==
+"@babel/helper-skip-transparent-expression-wrappers@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818"
+ integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==
dependencies:
- "@babel/types" "^7.18.6"
+ "@babel/types" "^7.18.9"
"@babel/helper-split-export-declaration@^7.18.6":
version "7.18.6"
@@ -244,6 +295,11 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-string-parser@^7.18.10":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
+ integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
+
"@babel/helper-validator-identifier@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
@@ -254,6 +310,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==
+"@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
"@babel/helper-validator-option@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
@@ -269,14 +330,24 @@
"@babel/traverse" "^7.18.6"
"@babel/types" "^7.18.6"
-"@babel/helpers@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd"
- integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==
+"@babel/helper-wrap-function@^7.18.9":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz#a7fcd3ab9b1be4c9b52cf7d7fdc1e88c2ce93396"
+ integrity sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==
dependencies:
- "@babel/template" "^7.18.6"
- "@babel/traverse" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/helper-function-name" "^7.18.9"
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.18.10"
+ "@babel/types" "^7.18.10"
+
+"@babel/helpers@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18"
+ integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/traverse" "^7.19.0"
+ "@babel/types" "^7.19.0"
"@babel/highlight@^7.10.4":
version "7.12.13"
@@ -296,10 +367,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc"
- integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a"
+ integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
@@ -308,23 +379,23 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8"
- integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50"
+ integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6"
- "@babel/plugin-proposal-optional-chaining" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+ "@babel/plugin-proposal-optional-chaining" "^7.18.9"
-"@babel/plugin-proposal-async-generator-functions@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17"
- integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==
+"@babel/plugin-proposal-async-generator-functions@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7"
+ integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==
dependencies:
- "@babel/helper-environment-visitor" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-remap-async-to-generator" "^7.18.6"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-remap-async-to-generator" "^7.18.9"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-proposal-class-properties@^7.18.6":
@@ -344,16 +415,16 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
-"@babel/plugin-proposal-decorators@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.6.tgz#68e9fd0f022b944f84a8824bb28bfaee724d2595"
- integrity sha512-gAdhsjaYmiZVxx5vTMiRfj31nB7LhwBJFMSLzeDxc7X4tKLixup0+k9ughn0RcpBrv9E3PBaXJW7jF5TCihAOg==
+"@babel/plugin-proposal-decorators@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz#c1977e4902a18cdf9051bf7bf08d97db2fd8b110"
+ integrity sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-replace-supers" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-replace-supers" "^7.19.1"
"@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/plugin-syntax-decorators" "^7.18.6"
+ "@babel/plugin-syntax-decorators" "^7.19.0"
"@babel/plugin-proposal-dynamic-import@^7.18.6":
version "7.18.6"
@@ -363,12 +434,12 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-dynamic-import" "^7.8.3"
-"@babel/plugin-proposal-export-namespace-from@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491"
- integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==
+"@babel/plugin-proposal-export-namespace-from@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203"
+ integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
"@babel/plugin-proposal-json-strings@^7.18.6":
@@ -379,12 +450,12 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-json-strings" "^7.8.3"
-"@babel/plugin-proposal-logical-assignment-operators@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665"
- integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==
+"@babel/plugin-proposal-logical-assignment-operators@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23"
+ integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6":
@@ -403,16 +474,16 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-proposal-object-rest-spread@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf"
- integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==
+"@babel/plugin-proposal-object-rest-spread@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7"
+ integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==
dependencies:
- "@babel/compat-data" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/compat-data" "^7.18.8"
+ "@babel/helper-compilation-targets" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-transform-parameters" "^7.18.6"
+ "@babel/plugin-transform-parameters" "^7.18.8"
"@babel/plugin-proposal-optional-catch-binding@^7.18.6":
version "7.18.6"
@@ -422,13 +493,13 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b"
- integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==
+"@babel/plugin-proposal-optional-chaining@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993"
+ integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-proposal-private-methods@^7.18.6":
@@ -485,12 +556,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1"
- integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==
+"@babel/plugin-syntax-decorators@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599"
+ integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
@@ -534,7 +605,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-syntax-jsx@^7.18.6":
+"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
@@ -627,40 +698,41 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-block-scoping@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c"
- integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==
+"@babel/plugin-transform-block-scoping@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d"
+ integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-classes@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f"
- integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==
+"@babel/plugin-transform-classes@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20"
+ integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-environment-visitor" "^7.18.6"
- "@babel/helper-function-name" "^7.18.6"
+ "@babel/helper-compilation-targets" "^7.19.0"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
"@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-replace-supers" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-replace-supers" "^7.18.9"
"@babel/helper-split-export-declaration" "^7.18.6"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032"
- integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==
+"@babel/plugin-transform-computed-properties@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e"
+ integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-destructuring@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f"
- integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==
+"@babel/plugin-transform-destructuring@^7.18.13":
+ version "7.18.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5"
+ integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4":
version "7.18.6"
@@ -670,12 +742,12 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-duplicate-keys@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473"
- integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==
+"@babel/plugin-transform-duplicate-keys@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e"
+ integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-transform-exponentiation-operator@^7.18.6":
version "7.18.6"
@@ -685,28 +757,28 @@
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-for-of@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c"
- integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==
+"@babel/plugin-transform-for-of@^7.18.8":
+ version "7.18.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1"
+ integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-function-name@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4"
- integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==
+"@babel/plugin-transform-function-name@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0"
+ integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==
dependencies:
- "@babel/helper-compilation-targets" "^7.18.6"
- "@babel/helper-function-name" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-compilation-targets" "^7.18.9"
+ "@babel/helper-function-name" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-literals@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205"
- integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==
+"@babel/plugin-transform-literals@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc"
+ integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-transform-member-expression-literals@^7.18.6":
version "7.18.6"
@@ -734,14 +806,14 @@
"@babel/helper-simple-access" "^7.18.6"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-systemjs@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54"
- integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==
+"@babel/plugin-transform-modules-systemjs@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f"
+ integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==
dependencies:
"@babel/helper-hoist-variables" "^7.18.6"
- "@babel/helper-module-transforms" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-module-transforms" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.19.0"
"@babel/helper-validator-identifier" "^7.18.6"
babel-plugin-dynamic-import-node "^2.3.3"
@@ -753,13 +825,13 @@
"@babel/helper-module-transforms" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d"
- integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888"
+ integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-create-regexp-features-plugin" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.19.0"
"@babel/plugin-transform-new-target@^7.18.6":
version "7.18.6"
@@ -776,10 +848,10 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/helper-replace-supers" "^7.18.6"
-"@babel/plugin-transform-parameters@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc"
- integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==
+"@babel/plugin-transform-parameters@^7.18.8":
+ version "7.18.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a"
+ integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
@@ -846,16 +918,16 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-runtime@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz#77b14416015ea93367ca06979710f5000ff34ccb"
- integrity sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==
+"@babel/plugin-transform-runtime@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6"
+ integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==
dependencies:
"@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
- babel-plugin-polyfill-corejs2 "^0.3.1"
- babel-plugin-polyfill-corejs3 "^0.5.2"
- babel-plugin-polyfill-regenerator "^0.3.1"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ babel-plugin-polyfill-corejs2 "^0.3.3"
+ babel-plugin-polyfill-corejs3 "^0.6.0"
+ babel-plugin-polyfill-regenerator "^0.4.1"
semver "^6.3.0"
"@babel/plugin-transform-shorthand-properties@^7.18.6":
@@ -865,13 +937,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-spread@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6"
- integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==
+"@babel/plugin-transform-spread@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6"
+ integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
"@babel/plugin-transform-sticky-regex@^7.18.6":
version "7.18.6"
@@ -880,26 +952,26 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-template-literals@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2"
- integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==
+"@babel/plugin-transform-template-literals@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e"
+ integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-typeof-symbol@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92"
- integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==
+"@babel/plugin-transform-typeof-symbol@^7.18.9":
+ version "7.18.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0"
+ integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-unicode-escapes@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27"
- integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==
+"@babel/plugin-transform-unicode-escapes@^7.18.10":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246"
+ integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.9"
"@babel/plugin-transform-unicode-regex@^7.18.6":
version "7.18.6"
@@ -909,29 +981,29 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/preset-env@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace"
- integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==
+"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.3":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754"
+ integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==
dependencies:
- "@babel/compat-data" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/compat-data" "^7.19.3"
+ "@babel/helper-compilation-targets" "^7.19.3"
+ "@babel/helper-plugin-utils" "^7.19.0"
"@babel/helper-validator-option" "^7.18.6"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6"
- "@babel/plugin-proposal-async-generator-functions" "^7.18.6"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9"
+ "@babel/plugin-proposal-async-generator-functions" "^7.19.1"
"@babel/plugin-proposal-class-properties" "^7.18.6"
"@babel/plugin-proposal-class-static-block" "^7.18.6"
"@babel/plugin-proposal-dynamic-import" "^7.18.6"
- "@babel/plugin-proposal-export-namespace-from" "^7.18.6"
+ "@babel/plugin-proposal-export-namespace-from" "^7.18.9"
"@babel/plugin-proposal-json-strings" "^7.18.6"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
"@babel/plugin-proposal-numeric-separator" "^7.18.6"
- "@babel/plugin-proposal-object-rest-spread" "^7.18.6"
+ "@babel/plugin-proposal-object-rest-spread" "^7.18.9"
"@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
- "@babel/plugin-proposal-optional-chaining" "^7.18.6"
+ "@babel/plugin-proposal-optional-chaining" "^7.18.9"
"@babel/plugin-proposal-private-methods" "^7.18.6"
"@babel/plugin-proposal-private-property-in-object" "^7.18.6"
"@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
@@ -953,41 +1025,41 @@
"@babel/plugin-transform-arrow-functions" "^7.18.6"
"@babel/plugin-transform-async-to-generator" "^7.18.6"
"@babel/plugin-transform-block-scoped-functions" "^7.18.6"
- "@babel/plugin-transform-block-scoping" "^7.18.6"
- "@babel/plugin-transform-classes" "^7.18.6"
- "@babel/plugin-transform-computed-properties" "^7.18.6"
- "@babel/plugin-transform-destructuring" "^7.18.6"
+ "@babel/plugin-transform-block-scoping" "^7.18.9"
+ "@babel/plugin-transform-classes" "^7.19.0"
+ "@babel/plugin-transform-computed-properties" "^7.18.9"
+ "@babel/plugin-transform-destructuring" "^7.18.13"
"@babel/plugin-transform-dotall-regex" "^7.18.6"
- "@babel/plugin-transform-duplicate-keys" "^7.18.6"
+ "@babel/plugin-transform-duplicate-keys" "^7.18.9"
"@babel/plugin-transform-exponentiation-operator" "^7.18.6"
- "@babel/plugin-transform-for-of" "^7.18.6"
- "@babel/plugin-transform-function-name" "^7.18.6"
- "@babel/plugin-transform-literals" "^7.18.6"
+ "@babel/plugin-transform-for-of" "^7.18.8"
+ "@babel/plugin-transform-function-name" "^7.18.9"
+ "@babel/plugin-transform-literals" "^7.18.9"
"@babel/plugin-transform-member-expression-literals" "^7.18.6"
"@babel/plugin-transform-modules-amd" "^7.18.6"
"@babel/plugin-transform-modules-commonjs" "^7.18.6"
- "@babel/plugin-transform-modules-systemjs" "^7.18.6"
+ "@babel/plugin-transform-modules-systemjs" "^7.19.0"
"@babel/plugin-transform-modules-umd" "^7.18.6"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1"
"@babel/plugin-transform-new-target" "^7.18.6"
"@babel/plugin-transform-object-super" "^7.18.6"
- "@babel/plugin-transform-parameters" "^7.18.6"
+ "@babel/plugin-transform-parameters" "^7.18.8"
"@babel/plugin-transform-property-literals" "^7.18.6"
"@babel/plugin-transform-regenerator" "^7.18.6"
"@babel/plugin-transform-reserved-words" "^7.18.6"
"@babel/plugin-transform-shorthand-properties" "^7.18.6"
- "@babel/plugin-transform-spread" "^7.18.6"
+ "@babel/plugin-transform-spread" "^7.19.0"
"@babel/plugin-transform-sticky-regex" "^7.18.6"
- "@babel/plugin-transform-template-literals" "^7.18.6"
- "@babel/plugin-transform-typeof-symbol" "^7.18.6"
- "@babel/plugin-transform-unicode-escapes" "^7.18.6"
+ "@babel/plugin-transform-template-literals" "^7.18.9"
+ "@babel/plugin-transform-typeof-symbol" "^7.18.9"
+ "@babel/plugin-transform-unicode-escapes" "^7.18.10"
"@babel/plugin-transform-unicode-regex" "^7.18.6"
"@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.18.6"
- babel-plugin-polyfill-corejs2 "^0.3.1"
- babel-plugin-polyfill-corejs3 "^0.5.2"
- babel-plugin-polyfill-regenerator "^0.3.1"
- core-js-compat "^3.22.1"
+ "@babel/types" "^7.19.3"
+ babel-plugin-polyfill-corejs2 "^0.3.3"
+ babel-plugin-polyfill-corejs3 "^0.6.0"
+ babel-plugin-polyfill-regenerator "^0.4.1"
+ core-js-compat "^3.25.1"
semver "^6.3.0"
"@babel/preset-modules@^0.1.5":
@@ -1028,44 +1100,45 @@
dependencies:
regenerator-runtime "^0.12.0"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
- integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259"
+ integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/template@^7.18.6", "@babel/template@^7.3.3":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31"
- integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==
+"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3":
+ version "7.18.10"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
+ integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
dependencies:
"@babel/code-frame" "^7.18.6"
- "@babel/parser" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/parser" "^7.18.10"
+ "@babel/types" "^7.18.10"
-"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d"
- integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==
+"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4"
+ integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==
dependencies:
"@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.18.6"
- "@babel/helper-environment-visitor" "^7.18.6"
- "@babel/helper-function-name" "^7.18.6"
+ "@babel/generator" "^7.19.3"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
"@babel/helper-hoist-variables" "^7.18.6"
"@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/parser" "^7.18.6"
- "@babel/types" "^7.18.6"
+ "@babel/parser" "^7.19.3"
+ "@babel/types" "^7.19.3"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0"
- integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA==
+"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.19.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624"
+ integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==
dependencies:
- "@babel/helper-validator-identifier" "^7.18.6"
+ "@babel/helper-string-parser" "^7.18.10"
+ "@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
"@bcoe/v8-coverage@^0.2.3":
@@ -1073,10 +1146,10 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@csstools/selector-specificity@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87"
- integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==
+"@csstools/selector-specificity@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36"
+ integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==
"@emotion/babel-plugin@^11.7.1":
version "11.9.2"
@@ -1233,110 +1306,110 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
-"@jest/console@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d"
- integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==
+"@jest/console@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.0.3.tgz#a222ab87e399317a89db88a58eaec289519e807a"
+ integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
chalk "^4.0.0"
- jest-message-util "^28.1.1"
- jest-util "^28.1.1"
+ jest-message-util "^29.0.3"
+ jest-util "^29.0.3"
slash "^3.0.0"
-"@jest/core@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092"
- integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==
+"@jest/core@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd"
+ integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ==
dependencies:
- "@jest/console" "^28.1.1"
- "@jest/reporters" "^28.1.1"
- "@jest/test-result" "^28.1.1"
- "@jest/transform" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/console" "^29.0.3"
+ "@jest/reporters" "^29.0.3"
+ "@jest/test-result" "^29.0.3"
+ "@jest/transform" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
ci-info "^3.2.0"
exit "^0.1.2"
graceful-fs "^4.2.9"
- jest-changed-files "^28.0.2"
- jest-config "^28.1.1"
- jest-haste-map "^28.1.1"
- jest-message-util "^28.1.1"
- jest-regex-util "^28.0.2"
- jest-resolve "^28.1.1"
- jest-resolve-dependencies "^28.1.1"
- jest-runner "^28.1.1"
- jest-runtime "^28.1.1"
- jest-snapshot "^28.1.1"
- jest-util "^28.1.1"
- jest-validate "^28.1.1"
- jest-watcher "^28.1.1"
+ jest-changed-files "^29.0.0"
+ jest-config "^29.0.3"
+ jest-haste-map "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-regex-util "^29.0.0"
+ jest-resolve "^29.0.3"
+ jest-resolve-dependencies "^29.0.3"
+ jest-runner "^29.0.3"
+ jest-runtime "^29.0.3"
+ jest-snapshot "^29.0.3"
+ jest-util "^29.0.3"
+ jest-validate "^29.0.3"
+ jest-watcher "^29.0.3"
micromatch "^4.0.4"
- pretty-format "^28.1.1"
- rimraf "^3.0.0"
+ pretty-format "^29.0.3"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f"
- integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==
+"@jest/environment@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.0.3.tgz#7745ec30a954e828e8cc6df6a13280d3b51d8f35"
+ integrity sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA==
dependencies:
- "@jest/fake-timers" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/fake-timers" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
- jest-mock "^28.1.1"
+ jest-mock "^29.0.3"
-"@jest/expect-utils@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587"
- integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==
+"@jest/expect-utils@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2"
+ integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==
dependencies:
- jest-get-type "^28.0.2"
+ jest-get-type "^29.0.0"
-"@jest/expect@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326"
- integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==
+"@jest/expect@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30"
+ integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==
dependencies:
- expect "^28.1.1"
- jest-snapshot "^28.1.1"
+ expect "^29.0.3"
+ jest-snapshot "^29.0.3"
-"@jest/fake-timers@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1"
- integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==
+"@jest/fake-timers@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c"
+ integrity sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ==
dependencies:
- "@jest/types" "^28.1.1"
- "@sinonjs/fake-timers" "^9.1.1"
+ "@jest/types" "^29.0.3"
+ "@sinonjs/fake-timers" "^9.1.2"
"@types/node" "*"
- jest-message-util "^28.1.1"
- jest-mock "^28.1.1"
- jest-util "^28.1.1"
+ jest-message-util "^29.0.3"
+ jest-mock "^29.0.3"
+ jest-util "^29.0.3"
-"@jest/globals@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061"
- integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==
+"@jest/globals@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5"
+ integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==
dependencies:
- "@jest/environment" "^28.1.1"
- "@jest/expect" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/environment" "^29.0.3"
+ "@jest/expect" "^29.0.3"
+ "@jest/types" "^29.0.3"
+ jest-mock "^29.0.3"
-"@jest/reporters@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662"
- integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==
+"@jest/reporters@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.0.3.tgz#735f110e08b44b38729d8dbbb74063bdf5aba8a5"
+ integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^28.1.1"
- "@jest/test-result" "^28.1.1"
- "@jest/transform" "^28.1.1"
- "@jest/types" "^28.1.1"
- "@jridgewell/trace-mapping" "^0.3.7"
+ "@jest/console" "^29.0.3"
+ "@jest/test-result" "^29.0.3"
+ "@jest/transform" "^29.0.3"
+ "@jest/types" "^29.0.3"
+ "@jridgewell/trace-mapping" "^0.3.15"
"@types/node" "*"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
@@ -1348,67 +1421,67 @@
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.1.3"
- jest-message-util "^28.1.1"
- jest-util "^28.1.1"
- jest-worker "^28.1.1"
+ jest-message-util "^29.0.3"
+ jest-util "^29.0.3"
+ jest-worker "^29.0.3"
slash "^3.0.0"
string-length "^4.0.1"
strip-ansi "^6.0.0"
terminal-link "^2.0.0"
- v8-to-istanbul "^9.0.0"
+ v8-to-istanbul "^9.0.1"
-"@jest/schemas@^28.0.2":
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613"
- integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==
+"@jest/schemas@^29.0.0":
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a"
+ integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==
dependencies:
- "@sinclair/typebox" "^0.23.3"
+ "@sinclair/typebox" "^0.24.1"
-"@jest/source-map@^28.0.2":
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90"
- integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==
+"@jest/source-map@^29.0.0":
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.0.0.tgz#f8d1518298089f8ae624e442bbb6eb870ee7783c"
+ integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==
dependencies:
- "@jridgewell/trace-mapping" "^0.3.7"
+ "@jridgewell/trace-mapping" "^0.3.15"
callsites "^3.0.0"
graceful-fs "^4.2.9"
-"@jest/test-result@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a"
- integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==
+"@jest/test-result@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.0.3.tgz#b03d8ef4c58be84cd5d5d3b24d4b4c8cabbf2746"
+ integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==
dependencies:
- "@jest/console" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/console" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e"
- integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==
+"@jest/test-sequencer@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz#0681061ad21fb8e293b49c4fdf7e631ca79240ba"
+ integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ==
dependencies:
- "@jest/test-result" "^28.1.1"
+ "@jest/test-result" "^29.0.3"
graceful-fs "^4.2.9"
- jest-haste-map "^28.1.1"
+ jest-haste-map "^29.0.3"
slash "^3.0.0"
-"@jest/transform@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27"
- integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==
+"@jest/transform@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.0.3.tgz#9eb1fed2072a0354f190569807d1250572fb0970"
+ integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==
dependencies:
"@babel/core" "^7.11.6"
- "@jest/types" "^28.1.1"
- "@jridgewell/trace-mapping" "^0.3.7"
+ "@jest/types" "^29.0.3"
+ "@jridgewell/trace-mapping" "^0.3.15"
babel-plugin-istanbul "^6.1.1"
chalk "^4.0.0"
convert-source-map "^1.4.0"
- fast-json-stable-stringify "^2.0.0"
+ fast-json-stable-stringify "^2.1.0"
graceful-fs "^4.2.9"
- jest-haste-map "^28.1.1"
- jest-regex-util "^28.0.2"
- jest-util "^28.1.1"
+ jest-haste-map "^29.0.3"
+ jest-regex-util "^29.0.0"
+ jest-util "^29.0.3"
micromatch "^4.0.4"
pirates "^4.0.4"
slash "^3.0.0"
@@ -1435,24 +1508,24 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
-"@jest/types@^28.1.1":
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b"
- integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==
+"@jest/types@^29.0.3":
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63"
+ integrity sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==
dependencies:
- "@jest/schemas" "^28.0.2"
+ "@jest/schemas" "^29.0.0"
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
"@types/node" "*"
"@types/yargs" "^17.0.8"
chalk "^4.0.0"
-"@jridgewell/gen-mapping@^0.3.0":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9"
- integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==
+"@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
dependencies:
- "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/set-array" "^1.0.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
@@ -1461,10 +1534,10 @@
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72"
integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==
-"@jridgewell/set-array@^1.0.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01"
- integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==
+"@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.10"
@@ -1479,10 +1552,18 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/trace-mapping@^0.3.7":
- version "0.3.9"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
- integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
+"@jridgewell/trace-mapping@^0.3.12":
+ version "0.3.14"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
+ integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/trace-mapping@^0.3.15":
+ version "0.3.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
+ integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
@@ -1495,6 +1576,13 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
+ version "5.1.1-v1"
+ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
+ integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
+ dependencies:
+ eslint-scope "5.1.1"
+
"@node-redis/bloom@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e"
@@ -1563,15 +1651,52 @@
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
-"@rails/ujs@^6.1.6":
- version "6.1.6"
- resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031"
- integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA==
+"@rails/ujs@^6.1.7":
+ version "6.1.7"
+ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.7.tgz#b09dc5b2105dd267e8374c47e4490240451dc7f6"
+ integrity sha512-0e7WQ4LE/+LEfW2zfAw9ppsB6A8RmxbdAUPAF++UT80epY+7emuQDkKXmaK0a9lp6An50RvzezI0cIQjp1A58w==
+
+"@rollup/plugin-babel@^5.2.0":
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283"
+ integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==
+ dependencies:
+ "@babel/helper-module-imports" "^7.10.4"
+ "@rollup/pluginutils" "^3.1.0"
+
+"@rollup/plugin-node-resolve@^11.2.1":
+ version "11.2.1"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60"
+ integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ "@types/resolve" "1.17.1"
+ builtin-modules "^3.1.0"
+ deepmerge "^4.2.2"
+ is-module "^1.0.0"
+ resolve "^1.19.0"
+
+"@rollup/plugin-replace@^2.4.1":
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a"
+ integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ magic-string "^0.25.7"
+
+"@rollup/pluginutils@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
+ integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
+ dependencies:
+ "@types/estree" "0.0.39"
+ estree-walker "^1.0.1"
+ picomatch "^2.2.2"
-"@sinclair/typebox@^0.23.3":
- version "0.23.5"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d"
- integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==
+"@sinclair/typebox@^0.24.1":
+ version "0.24.20"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd"
+ integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==
"@sinonjs/commons@^1.7.0":
version "1.8.1"
@@ -1580,13 +1705,23 @@
dependencies:
type-detect "4.0.8"
-"@sinonjs/fake-timers@^9.1.1":
+"@sinonjs/fake-timers@^9.1.2":
version "9.1.2"
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c"
integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
dependencies:
"@sinonjs/commons" "^1.7.0"
+"@surma/rollup-plugin-off-main-thread@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053"
+ integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==
+ dependencies:
+ ejs "^3.1.6"
+ json5 "^2.2.0"
+ magic-string "^0.25.0"
+ string.prototype.matchall "^4.0.6"
+
"@testing-library/dom@^8.0.0":
version "8.1.0"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.1.0.tgz#f8358b1883844ea569ba76b7e94582168df5370d"
@@ -1601,16 +1736,16 @@
lz-string "^1.4.4"
pretty-format "^27.0.2"
-"@testing-library/jest-dom@^5.16.4":
- version "5.16.4"
- resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd"
- integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==
+"@testing-library/jest-dom@^5.16.5":
+ version "5.16.5"
+ resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e"
+ integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==
dependencies:
+ "@adobe/css-tools" "^4.0.1"
"@babel/runtime" "^7.9.2"
"@types/testing-library__jest-dom" "^5.9.1"
aria-query "^5.0.0"
chalk "^3.0.0"
- css "^3.0.0"
css.escape "^1.5.1"
dom-accessibility-api "^0.5.6"
lodash "^4.17.15"
@@ -1673,6 +1808,11 @@
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+"@types/estree@0.0.39":
+ version "0.0.39"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
"@types/events@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
@@ -1737,14 +1877,14 @@
jest-diff "^25.2.1"
pretty-format "^25.2.1"
-"@types/jsdom@^16.2.4":
- version "16.2.14"
- resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720"
- integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==
+"@types/jsdom@^20.0.0":
+ version "20.0.0"
+ resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.0.tgz#4414fb629465167f8b7b3804b9e067bdd99f1791"
+ integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==
dependencies:
"@types/node" "*"
- "@types/parse5" "*"
"@types/tough-cookie" "*"
+ parse5 "^7.0.0"
"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
version "7.0.6"
@@ -1781,11 +1921,6 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-"@types/parse5@*":
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
- integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==
-
"@types/prettier@^2.1.5":
version "2.2.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0"
@@ -1843,6 +1978,13 @@
"@types/scheduler" "*"
csstype "^3.0.2"
+"@types/resolve@1.17.1":
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
+ integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
+ dependencies:
+ "@types/node" "*"
+
"@types/scheduler@*":
version "0.16.1"
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
@@ -1870,6 +2012,11 @@
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397"
integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==
+"@types/trusted-types@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
+ integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
+
"@types/yargs-parser@*":
version "15.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
@@ -2051,7 +2198,7 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-abab@^2.0.5, abab@^2.0.6:
+abab@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
@@ -2064,48 +2211,43 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
-acorn-globals@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
- integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+acorn-globals@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3"
+ integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==
dependencies:
- acorn "^7.1.1"
- acorn-walk "^7.1.1"
+ acorn "^8.1.0"
+ acorn-walk "^8.0.2"
acorn-jsx@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
-acorn-walk@^7.1.1:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
- integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-
acorn-walk@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.0.tgz#56ae4c0f434a45fff4a125e7ea95fa9c98f67a16"
integrity sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA==
+acorn-walk@^8.0.2:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
+
acorn@^6.4.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
-acorn@^7.1.1, acorn@^7.4.0:
+acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.4:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88"
- integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==
-
-acorn@^8.5.0, acorn@^8.7.1:
- version "8.7.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
- integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
+acorn@^8.0.4, acorn@^8.1.0, acorn@^8.5.0, acorn@^8.8.0:
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
+ integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
agent-base@6:
version "6.0.2"
@@ -2152,6 +2294,16 @@ ajv@^8.0.1:
require-from-string "^2.0.2"
uri-js "^4.2.2"
+ajv@^8.6.0:
+ version "8.11.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
+ integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@@ -2420,11 +2572,21 @@ async@^2.6.2:
dependencies:
lodash "^4.17.14"
+async@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
+ integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -2448,10 +2610,10 @@ autoprefixer@^9.8.8:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
-axe-core@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c"
- integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==
+axe-core@^4.4.3:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f"
+ integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==
axios@^0.27.2:
version "0.27.2"
@@ -2466,15 +2628,15 @@ axobject-query@^2.2.0:
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
-babel-jest@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586"
- integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==
+babel-jest@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.0.3.tgz#64e156a47a77588db6a669a88dedff27ed6e260f"
+ integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg==
dependencies:
- "@jest/transform" "^28.1.1"
+ "@jest/transform" "^29.0.3"
"@types/babel__core" "^7.1.14"
babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^28.1.1"
+ babel-preset-jest "^29.0.2"
chalk "^4.0.0"
graceful-fs "^4.2.9"
slash "^3.0.0"
@@ -2507,10 +2669,10 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11"
- integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==
+babel-plugin-jest-hoist@^29.0.2:
+ version "29.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz#ae61483a829a021b146c016c6ad39b8bcc37c2c8"
+ integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
@@ -2546,29 +2708,29 @@ babel-plugin-macros@^3.0.1:
cosmiconfig "^7.0.0"
resolve "^1.19.0"
-babel-plugin-polyfill-corejs2@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
- integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+babel-plugin-polyfill-corejs2@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122"
+ integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==
dependencies:
- "@babel/compat-data" "^7.13.11"
- "@babel/helper-define-polyfill-provider" "^0.3.1"
+ "@babel/compat-data" "^7.17.7"
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
semver "^6.1.1"
-babel-plugin-polyfill-corejs3@^0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
- integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+babel-plugin-polyfill-corejs3@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a"
+ integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.1"
- core-js-compat "^3.21.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
+ core-js-compat "^3.25.1"
-babel-plugin-polyfill-regenerator@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
- integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
+babel-plugin-polyfill-regenerator@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747"
+ integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.1"
+ "@babel/helper-define-polyfill-provider" "^0.3.3"
babel-plugin-preval@^5.1.0:
version "5.1.0"
@@ -2616,12 +2778,12 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4"
- integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==
+babel-preset-jest@^29.0.2:
+ version "29.0.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz#e14a7124e22b161551818d89e5bdcfb3b2b0eac7"
+ integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA==
dependencies:
- babel-plugin-jest-hoist "^28.1.1"
+ babel-plugin-jest-hoist "^29.0.2"
babel-preset-current-node-syntax "^1.0.0"
balanced-match@^1.0.0:
@@ -2657,11 +2819,6 @@ batch@0.6.1:
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
-big.js@^3.1.3:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
- integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -2689,10 +2846,10 @@ bluebird@^3.5.5:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-blurhash@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.5.tgz#3034104cd5dce5a3e5caa871ae2f0f1f2d0ab566"
- integrity sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg==
+blurhash@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-2.0.3.tgz#5c1166bf5b65e09e337fe5b8c6b53e1218085b0b"
+ integrity sha512-nTnJTOheiaV3b189f7rH5AbbrnQB2r3CcOZBg47GUDaE9DrxyBPD2w0HYp4ME2UBlTP7LMIa6nMWqg/58oyIzA==
bmp-js@^0.1.0:
version "0.1.0"
@@ -2794,11 +2951,6 @@ brorand@^1.0.1, brorand@^1.1.0:
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-browser-process-hrtime@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
- integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.2.0"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
@@ -2871,26 +3023,15 @@ browserslist@^4.0.0, browserslist@^4.12.0:
escalade "^3.1.1"
node-releases "^1.1.71"
-browserslist@^4.20.2:
- version "4.20.3"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf"
- integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==
- dependencies:
- caniuse-lite "^1.0.30001332"
- electron-to-chromium "^1.4.118"
- escalade "^3.1.1"
- node-releases "^2.0.3"
- picocolors "^1.0.0"
-
-browserslist@^4.21.0:
- version "4.21.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe"
- integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==
+browserslist@^4.21.3, browserslist@^4.21.4:
+ version "4.21.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
+ integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
dependencies:
- caniuse-lite "^1.0.30001358"
- electron-to-chromium "^1.4.164"
- node-releases "^2.0.5"
- update-browserslist-db "^1.0.0"
+ caniuse-lite "^1.0.30001400"
+ electron-to-chromium "^1.4.251"
+ node-releases "^2.0.6"
+ update-browserslist-db "^1.0.9"
bser@2.1.1:
version "2.1.1"
@@ -2900,9 +3041,9 @@ bser@2.1.1:
node-int64 "^0.4.0"
buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
buffer-indexof@^1.0.0:
version "1.1.1"
@@ -2935,6 +3076,11 @@ bufferutil@^4.0.6:
dependencies:
node-gyp-build "^4.3.0"
+builtin-modules@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
+ integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
+
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -3070,20 +3216,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219:
- version "1.0.30001310"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8"
- integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg==
-
-caniuse-lite@^1.0.30001332:
- version "1.0.30001335"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a"
- integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w==
-
-caniuse-lite@^1.0.30001358:
- version "1.0.30001359"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e"
- integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001400:
+ version "1.0.30001414"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz"
+ integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==
chalk@^1.1.3:
version "1.1.3"
@@ -3113,10 +3249,10 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
- integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+chalk@^4.0, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
@@ -3205,10 +3341,10 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-classnames@^2.2.5, classnames@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
- integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
+classnames@^2.2.5, classnames@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
+ integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==
clean-stack@^2.0.0:
version "2.2.0"
@@ -3224,13 +3360,13 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
-cliui@^7.0.2:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.3.tgz#ef180f26c8d9bff3927ee52428bfec2090427981"
- integrity sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw==
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
- strip-ansi "^6.0.0"
+ strip-ansi "^6.0.1"
wrap-ansi "^7.0.0"
clone-deep@^4.0.1:
@@ -3242,13 +3378,6 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
-clone-regexp@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f"
- integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==
- dependencies:
- is-regexp "^2.0.0"
-
cluster-key-slot@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
@@ -3268,10 +3397,10 @@ coa@^2.0.2:
chalk "^2.4.1"
q "^1.1.2"
-cocoon-js-vanilla@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.2.0.tgz#595348499d315d3b5828dd77a20974756cf59321"
- integrity sha512-qLomIVL0Krfc983WLgaYPPktMjMtBN+F/CV15NPVDc9U9BCe2OL5WyAIYkPrVhDRphoYBmHCdIlZkq+vSBI4xg==
+cocoon-js-vanilla@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.3.0.tgz#1e53663f5d314e5e9b315b63eaf8ae701df113c0"
+ integrity sha512-rMnbfW6oFhvELUg141vfqZKzsowfLJRxs5FksfmDr1ZBs6LTNVYE63NQyvgRqyYUOK54cKKbI+V83dQKeeRuPg==
collect-v8-coverage@^1.0.0:
version "1.0.1"
@@ -3336,10 +3465,10 @@ color@^3.0.0:
color-convert "^1.9.1"
color-string "^1.5.2"
-colord@^2.9.2:
- version "2.9.2"
- resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
- integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==
+colord@^2.9.3:
+ version "2.9.3"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
+ integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
colorette@^1.2.2:
version "1.2.2"
@@ -3363,6 +3492,11 @@ commander@^7.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+common-tags@^1.8.0:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
+ integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -3485,13 +3619,12 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-core-js-compat@^3.21.0, core-js-compat@^3.22.1:
- version "3.23.3"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9"
- integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==
+core-js-compat@^3.25.1:
+ version "3.25.2"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138"
+ integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==
dependencies:
- browserslist "^4.21.0"
- semver "7.0.0"
+ browserslist "^4.21.4"
core-js-pure@^3.0.0:
version "3.6.5"
@@ -3615,6 +3748,11 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
+crypto-random-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+ integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+
css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -3727,15 +3865,6 @@ css.escape@^1.5.1:
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
-css@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d"
- integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==
- dependencies:
- inherits "^2.0.4"
- source-map "^0.6.1"
- source-map-resolve "^0.6.0"
-
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
@@ -3861,7 +3990,7 @@ damerau-levenshtein@^1.0.8:
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
-data-urls@^3.0.1, data-urls@^3.0.2:
+data-urls@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143"
integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==
@@ -3904,10 +4033,10 @@ decamelize@^1.1.0, decamelize@^1.2.0:
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-decimal.js@^10.3.1:
- version "10.3.1"
- resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
- integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==
+decimal.js@^10.4.1:
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.1.tgz#be75eeac4a2281aace80c1a8753587c27ef053e7"
+ integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==
decode-uri-component@^0.2.0:
version "0.2.0"
@@ -3931,11 +4060,6 @@ deep-equal@^1.0.1:
object-keys "^1.1.1"
regexp.prototype.flags "^1.2.0"
-deep-extend@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
- integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==
-
deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -4062,10 +4186,10 @@ diff-sequences@^25.2.6:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
-diff-sequences@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6"
- integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==
+diff-sequences@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f"
+ integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==
diffie-hellman@^5.0.0:
version "5.0.3"
@@ -4182,10 +4306,10 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
-dotenv@^16.0.1:
- version "16.0.1"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
- integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
+dotenv@^16.0.3:
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
+ integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
duplexer@^0.1.2:
version "0.1.2"
@@ -4207,25 +4331,22 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-ejs@^2.3.4:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
- integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
+ejs@^3.1.6:
+ version "3.1.8"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
+ integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
+ dependencies:
+ jake "^10.8.5"
electron-to-chromium@^1.3.723:
version "1.3.736"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052"
integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig==
-electron-to-chromium@^1.4.118:
- version "1.4.129"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238"
- integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==
-
-electron-to-chromium@^1.4.164:
- version "1.4.170"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4"
- integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==
+electron-to-chromium@^1.4.251:
+ version "1.4.254"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6"
+ integrity sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==
elliptic@^6.5.3:
version "6.5.4"
@@ -4269,11 +4390,6 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
- integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
-
emojis-list@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
@@ -4312,10 +4428,10 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
-entities@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656"
- integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg==
+entities@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
+ integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
errno@^0.1.3, errno@~0.1.7:
version "0.1.7"
@@ -4510,34 +4626,34 @@ eslint-plugin-import@~2.26.0:
resolve "^1.22.0"
tsconfig-paths "^3.14.1"
-eslint-plugin-jsx-a11y@~6.6.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415"
- integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==
+eslint-plugin-jsx-a11y@~6.6.1:
+ version "6.6.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff"
+ integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==
dependencies:
- "@babel/runtime" "^7.18.3"
+ "@babel/runtime" "^7.18.9"
aria-query "^4.2.2"
array-includes "^3.1.5"
ast-types-flow "^0.0.7"
- axe-core "^4.4.2"
+ axe-core "^4.4.3"
axobject-query "^2.2.0"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
has "^1.0.3"
- jsx-ast-utils "^3.3.1"
+ jsx-ast-utils "^3.3.2"
language-tags "^1.0.5"
minimatch "^3.1.2"
semver "^6.3.0"
-eslint-plugin-promise@~6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18"
- integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==
+eslint-plugin-promise@~6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423"
+ integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==
-eslint-plugin-react@~7.30.1:
- version "7.30.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22"
- integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==
+eslint-plugin-react@~7.31.8:
+ version "7.31.8"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf"
+ integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==
dependencies:
array-includes "^3.1.5"
array.prototype.flatmap "^1.3.0"
@@ -4554,6 +4670,14 @@ eslint-plugin-react@~7.30.1:
semver "^6.3.0"
string.prototype.matchall "^4.0.7"
+eslint-scope@5.1.1, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@@ -4562,14 +4686,6 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
eslint-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
@@ -4582,12 +4698,7 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
- integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-
-eslint-visitor-keys@^2.1.0:
+eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
@@ -4676,6 +4787,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+estree-walker@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
+ integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -4739,13 +4855,6 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-execall@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45"
- integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==
- dependencies:
- clone-regexp "^2.1.0"
-
exif-js@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814"
@@ -4776,16 +4885,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies:
homedir-polyfill "^1.0.1"
-expect@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420"
- integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==
+expect@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.3.tgz#6be65ddb945202f143c4e07c083f4f39f3bd326f"
+ integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==
dependencies:
- "@jest/expect-utils" "^28.1.1"
- jest-get-type "^28.0.2"
- jest-matcher-utils "^28.1.1"
- jest-message-util "^28.1.1"
- jest-util "^28.1.1"
+ "@jest/expect-utils" "^29.0.3"
+ jest-get-type "^29.0.0"
+ jest-matcher-utils "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-util "^29.0.3"
express@^4.17.1, express@^4.18.1:
version "4.18.1"
@@ -4865,10 +4974,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.2.11, fast-glob@^3.2.9:
- version "3.2.11"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
- integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+fast-glob@^3.2.12, fast-glob@^3.2.9:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
@@ -4876,7 +4985,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@^2.0.0:
+fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -4886,10 +4995,10 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-fastest-levenshtein@^1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
- integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+fastest-levenshtein@^1.0.16:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
+ integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
fastq@^1.6.0:
version "1.13.0"
@@ -4947,6 +5056,13 @@ file-uri-to-path@1.0.0:
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+filelist@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
+ integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+ dependencies:
+ minimatch "^5.0.1"
+
fill-range@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -5111,6 +5227,16 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
+fs-extra@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -5141,7 +5267,7 @@ fsevents@^1.2.7:
bindings "^1.5.0"
nan "^2.12.1"
-fsevents@^2.3.2, fsevents@~2.3.1:
+fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
@@ -5214,16 +5340,16 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
has "^1.0.3"
has-symbols "^1.0.1"
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
-get-stdin@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
- integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
-
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@@ -5264,7 +5390,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
-glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -5637,10 +5763,10 @@ http-errors@~1.6.2:
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
-http-link-header@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.4.tgz#f4efc76c6151ed0ba0d1a2d679798a18854a4a99"
- integrity sha512-Cnv3Q+FF+35avekdnH/ML8dls++tdnSgrvUIWw0YEszrWeLSuw5Iq1vyCVTb5v0rEUgFTy0x4shxXyrO0MDUzw==
+http-link-header@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.5.tgz#8e6d9ed1d393e8d5e01aa5c48bd97aa38d7e261c"
+ integrity sha512-msKrMbv/xHzhdOD4sstbEr+NbGqpv8ZtZliiCeByGENJo1jK1GZ/81zHF9HpWtEH5ihovPpdqHXniwZapJCKEA==
"http-parser-js@>=0.4.0 <0.4.11":
version "0.4.10"
@@ -5685,7 +5811,7 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
+https-proxy-agent@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -5722,6 +5848,11 @@ idb-keyval@^3.2.0:
resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6"
integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ==
+idb@^7.0.1:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892"
+ integrity sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg==
+
ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
@@ -6148,6 +6279,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+ integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
is-nan@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
@@ -6178,6 +6314,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
is-obj@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
@@ -6239,10 +6380,10 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-regexp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d"
- integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
is-resolvable@^1.0.0:
version "1.1.0"
@@ -6383,82 +6524,92 @@ istanbul-reports@^3.1.3:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
-jest-changed-files@^28.0.2:
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531"
- integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==
+jake@^10.8.5:
+ version "10.8.5"
+ resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
+ integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
+ dependencies:
+ async "^3.2.3"
+ chalk "^4.0.2"
+ filelist "^1.0.1"
+ minimatch "^3.0.4"
+
+jest-changed-files@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.0.0.tgz#aa238eae42d9372a413dd9a8dadc91ca1806dce0"
+ integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==
dependencies:
execa "^5.0.0"
- throat "^6.0.1"
+ p-limit "^3.1.0"
-jest-circus@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4"
- integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==
+jest-circus@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.0.3.tgz#90faebc90295291cfc636b27dbd82e3bfb9e7a48"
+ integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg==
dependencies:
- "@jest/environment" "^28.1.1"
- "@jest/expect" "^28.1.1"
- "@jest/test-result" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/environment" "^29.0.3"
+ "@jest/expect" "^29.0.3"
+ "@jest/test-result" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
dedent "^0.7.0"
is-generator-fn "^2.0.0"
- jest-each "^28.1.1"
- jest-matcher-utils "^28.1.1"
- jest-message-util "^28.1.1"
- jest-runtime "^28.1.1"
- jest-snapshot "^28.1.1"
- jest-util "^28.1.1"
- pretty-format "^28.1.1"
+ jest-each "^29.0.3"
+ jest-matcher-utils "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-runtime "^29.0.3"
+ jest-snapshot "^29.0.3"
+ jest-util "^29.0.3"
+ p-limit "^3.1.0"
+ pretty-format "^29.0.3"
slash "^3.0.0"
stack-utils "^2.0.3"
- throat "^6.0.1"
-jest-cli@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe"
- integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==
+jest-cli@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.0.3.tgz#fd8f0ef363a7a3d9c53ef62e0651f18eeffa77b9"
+ integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==
dependencies:
- "@jest/core" "^28.1.1"
- "@jest/test-result" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/core" "^29.0.3"
+ "@jest/test-result" "^29.0.3"
+ "@jest/types" "^29.0.3"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.9"
import-local "^3.0.2"
- jest-config "^28.1.1"
- jest-util "^28.1.1"
- jest-validate "^28.1.1"
+ jest-config "^29.0.3"
+ jest-util "^29.0.3"
+ jest-validate "^29.0.3"
prompts "^2.0.1"
yargs "^17.3.1"
-jest-config@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f"
- integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==
+jest-config@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.0.3.tgz#c2e52a8f5adbd18de79f99532d8332a19e232f13"
+ integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==
dependencies:
"@babel/core" "^7.11.6"
- "@jest/test-sequencer" "^28.1.1"
- "@jest/types" "^28.1.1"
- babel-jest "^28.1.1"
+ "@jest/test-sequencer" "^29.0.3"
+ "@jest/types" "^29.0.3"
+ babel-jest "^29.0.3"
chalk "^4.0.0"
ci-info "^3.2.0"
deepmerge "^4.2.2"
glob "^7.1.3"
graceful-fs "^4.2.9"
- jest-circus "^28.1.1"
- jest-environment-node "^28.1.1"
- jest-get-type "^28.0.2"
- jest-regex-util "^28.0.2"
- jest-resolve "^28.1.1"
- jest-runner "^28.1.1"
- jest-util "^28.1.1"
- jest-validate "^28.1.1"
+ jest-circus "^29.0.3"
+ jest-environment-node "^29.0.3"
+ jest-get-type "^29.0.0"
+ jest-regex-util "^29.0.0"
+ jest-resolve "^29.0.3"
+ jest-runner "^29.0.3"
+ jest-util "^29.0.3"
+ jest-validate "^29.0.3"
micromatch "^4.0.4"
parse-json "^5.2.0"
- pretty-format "^28.1.1"
+ pretty-format "^29.0.3"
slash "^3.0.0"
strip-json-comments "^3.1.1"
@@ -6472,128 +6623,128 @@ jest-diff@^25.2.1:
jest-get-type "^25.2.6"
pretty-format "^25.5.0"
-jest-diff@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c"
- integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==
+jest-diff@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.3.tgz#41cc02409ad1458ae1bf7684129a3da2856341ac"
+ integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==
dependencies:
chalk "^4.0.0"
- diff-sequences "^28.1.1"
- jest-get-type "^28.0.2"
- pretty-format "^28.1.1"
+ diff-sequences "^29.0.0"
+ jest-get-type "^29.0.0"
+ pretty-format "^29.0.3"
-jest-docblock@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8"
- integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==
+jest-docblock@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.0.0.tgz#3151bcc45ed7f5a8af4884dcc049aee699b4ceae"
+ integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==
dependencies:
detect-newline "^3.0.0"
-jest-each@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4"
- integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==
+jest-each@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.0.3.tgz#7ef3157580b15a609d7ef663dd4fc9b07f4e1299"
+ integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
chalk "^4.0.0"
- jest-get-type "^28.0.2"
- jest-util "^28.1.1"
- pretty-format "^28.1.1"
-
-jest-environment-jsdom@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.1.tgz#8bd721915b32f9b196723292c4461a0ad548b55b"
- integrity sha512-41ZvgSoPNcKG5q3LuuOcAczdBxRq9DbZkPe24okN6ZCmiZdAfFtPg3z+lOtsT1fM6OAERApKT+3m0MRDQH2zIA==
- dependencies:
- "@jest/environment" "^28.1.1"
- "@jest/fake-timers" "^28.1.1"
- "@jest/types" "^28.1.1"
- "@types/jsdom" "^16.2.4"
+ jest-get-type "^29.0.0"
+ jest-util "^29.0.3"
+ pretty-format "^29.0.3"
+
+jest-environment-jsdom@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz#0c6ee841133dd6acbe957bceaceea93b7ec60ca9"
+ integrity sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw==
+ dependencies:
+ "@jest/environment" "^29.0.3"
+ "@jest/fake-timers" "^29.0.3"
+ "@jest/types" "^29.0.3"
+ "@types/jsdom" "^20.0.0"
"@types/node" "*"
- jest-mock "^28.1.1"
- jest-util "^28.1.1"
- jsdom "^19.0.0"
-
-jest-environment-node@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67"
- integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==
- dependencies:
- "@jest/environment" "^28.1.1"
- "@jest/fake-timers" "^28.1.1"
- "@jest/types" "^28.1.1"
+ jest-mock "^29.0.3"
+ jest-util "^29.0.3"
+ jsdom "^20.0.0"
+
+jest-environment-node@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.0.3.tgz#293804b1e0fa5f0e354dacbe510655caa478a3b2"
+ integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg==
+ dependencies:
+ "@jest/environment" "^29.0.3"
+ "@jest/fake-timers" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
- jest-mock "^28.1.1"
- jest-util "^28.1.1"
+ jest-mock "^29.0.3"
+ jest-util "^29.0.3"
jest-get-type@^25.2.6:
version "25.2.6"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
-jest-get-type@^28.0.2:
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203"
- integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
+jest-get-type@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80"
+ integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==
-jest-haste-map@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3"
- integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==
+jest-haste-map@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.0.3.tgz#d7f3f7180f558d760eacc5184aac5a67f20ef939"
+ integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
"@types/graceful-fs" "^4.1.3"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
graceful-fs "^4.2.9"
- jest-regex-util "^28.0.2"
- jest-util "^28.1.1"
- jest-worker "^28.1.1"
+ jest-regex-util "^29.0.0"
+ jest-util "^29.0.3"
+ jest-worker "^29.0.3"
micromatch "^4.0.4"
walker "^1.0.8"
optionalDependencies:
fsevents "^2.3.2"
-jest-leak-detector@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb"
- integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==
+jest-leak-detector@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f"
+ integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ==
dependencies:
- jest-get-type "^28.0.2"
- pretty-format "^28.1.1"
+ jest-get-type "^29.0.0"
+ pretty-format "^29.0.3"
-jest-matcher-utils@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304"
- integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==
+jest-matcher-utils@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz#b8305fd3f9e27cdbc210b21fc7dbba92d4e54560"
+ integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==
dependencies:
chalk "^4.0.0"
- jest-diff "^28.1.1"
- jest-get-type "^28.0.2"
- pretty-format "^28.1.1"
+ jest-diff "^29.0.3"
+ jest-get-type "^29.0.0"
+ pretty-format "^29.0.3"
-jest-message-util@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89"
- integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==
+jest-message-util@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.3.tgz#f0254e1ffad21890c78355726202cc91d0a40ea8"
+ integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
graceful-fs "^4.2.9"
micromatch "^4.0.4"
- pretty-format "^28.1.1"
+ pretty-format "^29.0.3"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371"
- integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==
+jest-mock@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9"
+ integrity sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -6601,156 +6752,166 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-jest-regex-util@^28.0.2:
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead"
- integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
+jest-regex-util@^29.0.0:
+ version "29.0.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de"
+ integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==
-jest-resolve-dependencies@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27"
- integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==
+jest-resolve-dependencies@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz#f23a54295efc6374b86b198cf8efed5606d6b762"
+ integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw==
dependencies:
- jest-regex-util "^28.0.2"
- jest-snapshot "^28.1.1"
+ jest-regex-util "^29.0.0"
+ jest-snapshot "^29.0.3"
-jest-resolve@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5"
- integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==
+jest-resolve@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.0.3.tgz#329a3431e3b9eb6629a2cd483e9bed95b26827b9"
+ integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg==
dependencies:
chalk "^4.0.0"
graceful-fs "^4.2.9"
- jest-haste-map "^28.1.1"
+ jest-haste-map "^29.0.3"
jest-pnp-resolver "^1.2.2"
- jest-util "^28.1.1"
- jest-validate "^28.1.1"
+ jest-util "^29.0.3"
+ jest-validate "^29.0.3"
resolve "^1.20.0"
resolve.exports "^1.1.0"
slash "^3.0.0"
-jest-runner@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c"
- integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==
+jest-runner@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.0.3.tgz#2e47fe1e8777aea9b8970f37e8f83630b508fb87"
+ integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw==
dependencies:
- "@jest/console" "^28.1.1"
- "@jest/environment" "^28.1.1"
- "@jest/test-result" "^28.1.1"
- "@jest/transform" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/console" "^29.0.3"
+ "@jest/environment" "^29.0.3"
+ "@jest/test-result" "^29.0.3"
+ "@jest/transform" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
chalk "^4.0.0"
emittery "^0.10.2"
graceful-fs "^4.2.9"
- jest-docblock "^28.1.1"
- jest-environment-node "^28.1.1"
- jest-haste-map "^28.1.1"
- jest-leak-detector "^28.1.1"
- jest-message-util "^28.1.1"
- jest-resolve "^28.1.1"
- jest-runtime "^28.1.1"
- jest-util "^28.1.1"
- jest-watcher "^28.1.1"
- jest-worker "^28.1.1"
+ jest-docblock "^29.0.0"
+ jest-environment-node "^29.0.3"
+ jest-haste-map "^29.0.3"
+ jest-leak-detector "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-resolve "^29.0.3"
+ jest-runtime "^29.0.3"
+ jest-util "^29.0.3"
+ jest-watcher "^29.0.3"
+ jest-worker "^29.0.3"
+ p-limit "^3.1.0"
source-map-support "0.5.13"
- throat "^6.0.1"
-
-jest-runtime@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf"
- integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==
- dependencies:
- "@jest/environment" "^28.1.1"
- "@jest/fake-timers" "^28.1.1"
- "@jest/globals" "^28.1.1"
- "@jest/source-map" "^28.0.2"
- "@jest/test-result" "^28.1.1"
- "@jest/transform" "^28.1.1"
- "@jest/types" "^28.1.1"
+
+jest-runtime@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa"
+ integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ==
+ dependencies:
+ "@jest/environment" "^29.0.3"
+ "@jest/fake-timers" "^29.0.3"
+ "@jest/globals" "^29.0.3"
+ "@jest/source-map" "^29.0.0"
+ "@jest/test-result" "^29.0.3"
+ "@jest/transform" "^29.0.3"
+ "@jest/types" "^29.0.3"
+ "@types/node" "*"
chalk "^4.0.0"
cjs-module-lexer "^1.0.0"
collect-v8-coverage "^1.0.0"
- execa "^5.0.0"
glob "^7.1.3"
graceful-fs "^4.2.9"
- jest-haste-map "^28.1.1"
- jest-message-util "^28.1.1"
- jest-mock "^28.1.1"
- jest-regex-util "^28.0.2"
- jest-resolve "^28.1.1"
- jest-snapshot "^28.1.1"
- jest-util "^28.1.1"
+ jest-haste-map "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-mock "^29.0.3"
+ jest-regex-util "^29.0.0"
+ jest-resolve "^29.0.3"
+ jest-snapshot "^29.0.3"
+ jest-util "^29.0.3"
slash "^3.0.0"
strip-bom "^4.0.0"
-jest-snapshot@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848"
- integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==
+jest-snapshot@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.0.3.tgz#0a024706986a915a6eefae74d7343069d2fc8eef"
+ integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==
dependencies:
"@babel/core" "^7.11.6"
"@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-jsx" "^7.7.2"
"@babel/plugin-syntax-typescript" "^7.7.2"
"@babel/traverse" "^7.7.2"
"@babel/types" "^7.3.3"
- "@jest/expect-utils" "^28.1.1"
- "@jest/transform" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/expect-utils" "^29.0.3"
+ "@jest/transform" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/babel__traverse" "^7.0.6"
"@types/prettier" "^2.1.5"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^28.1.1"
+ expect "^29.0.3"
graceful-fs "^4.2.9"
- jest-diff "^28.1.1"
- jest-get-type "^28.0.2"
- jest-haste-map "^28.1.1"
- jest-matcher-utils "^28.1.1"
- jest-message-util "^28.1.1"
- jest-util "^28.1.1"
+ jest-diff "^29.0.3"
+ jest-get-type "^29.0.0"
+ jest-haste-map "^29.0.3"
+ jest-matcher-utils "^29.0.3"
+ jest-message-util "^29.0.3"
+ jest-util "^29.0.3"
natural-compare "^1.4.0"
- pretty-format "^28.1.1"
+ pretty-format "^29.0.3"
semver "^7.3.5"
-jest-util@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05"
- integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==
+jest-util@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0"
+ integrity sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-validate@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8"
- integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==
+jest-validate@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6"
+ integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw==
dependencies:
- "@jest/types" "^28.1.1"
+ "@jest/types" "^29.0.3"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^28.0.2"
+ jest-get-type "^29.0.0"
leven "^3.1.0"
- pretty-format "^28.1.1"
+ pretty-format "^29.0.3"
-jest-watcher@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c"
- integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==
+jest-watcher@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f"
+ integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==
dependencies:
- "@jest/test-result" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/test-result" "^29.0.3"
+ "@jest/types" "^29.0.3"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
emittery "^0.10.2"
- jest-util "^28.1.1"
+ jest-util "^29.0.3"
string-length "^4.0.1"
+jest-worker@^26.2.1:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
jest-worker@^26.5.0:
version "26.5.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30"
@@ -6760,24 +6921,24 @@ jest-worker@^26.5.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
-jest-worker@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28"
- integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==
+jest-worker@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.3.tgz#c2ba0aa7e41eec9eb0be8e8a322ae6518df72647"
+ integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e"
- integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==
+jest@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d"
+ integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==
dependencies:
- "@jest/core" "^28.1.1"
- "@jest/types" "^28.1.1"
+ "@jest/core" "^29.0.3"
+ "@jest/types" "^29.0.3"
import-local "^3.0.2"
- jest-cli "^28.1.1"
+ jest-cli "^29.0.3"
js-base64@^2.1.9:
version "2.6.4"
@@ -6804,51 +6965,18 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-jsdom@^19.0.0:
- version "19.0.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a"
- integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==
- dependencies:
- abab "^2.0.5"
- acorn "^8.5.0"
- acorn-globals "^6.0.0"
- cssom "^0.5.0"
- cssstyle "^2.3.0"
- data-urls "^3.0.1"
- decimal.js "^10.3.1"
- domexception "^4.0.0"
- escodegen "^2.0.0"
- form-data "^4.0.0"
- html-encoding-sniffer "^3.0.0"
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.0"
- is-potential-custom-element-name "^1.0.1"
- nwsapi "^2.2.0"
- parse5 "6.0.1"
- saxes "^5.0.1"
- symbol-tree "^3.2.4"
- tough-cookie "^4.0.0"
- w3c-hr-time "^1.0.2"
- w3c-xmlserializer "^3.0.0"
- webidl-conversions "^7.0.0"
- whatwg-encoding "^2.0.0"
- whatwg-mimetype "^3.0.0"
- whatwg-url "^10.0.0"
- ws "^8.2.3"
- xml-name-validator "^4.0.0"
-
-jsdom@^20.0.0:
- version "20.0.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.0.tgz#882825ac9cc5e5bbee704ba16143e1fa78361ebf"
- integrity sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==
+jsdom@^20.0.0, jsdom@^20.0.1:
+ version "20.0.1"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.1.tgz#d95b4a3b6e1eec6520aa01d9d908eade8c6ba153"
+ integrity sha512-pksjj7Rqoa+wdpkKcLzQRHhJCEE42qQhl/xLMUKHgoSejaKOdaXEAnqs6uDNwMl/fciHTzKeR8Wm8cw7N+g98A==
dependencies:
abab "^2.0.6"
- acorn "^8.7.1"
- acorn-globals "^6.0.0"
+ acorn "^8.8.0"
+ acorn-globals "^7.0.0"
cssom "^0.5.0"
cssstyle "^2.3.0"
data-urls "^3.0.2"
- decimal.js "^10.3.1"
+ decimal.js "^10.4.1"
domexception "^4.0.0"
escodegen "^2.0.0"
form-data "^4.0.0"
@@ -6856,18 +6984,17 @@ jsdom@^20.0.0:
http-proxy-agent "^5.0.0"
https-proxy-agent "^5.0.1"
is-potential-custom-element-name "^1.0.1"
- nwsapi "^2.2.0"
- parse5 "^7.0.0"
+ nwsapi "^2.2.2"
+ parse5 "^7.1.1"
saxes "^6.0.0"
symbol-tree "^3.2.4"
- tough-cookie "^4.0.0"
- w3c-hr-time "^1.0.2"
+ tough-cookie "^4.1.2"
w3c-xmlserializer "^3.0.0"
webidl-conversions "^7.0.0"
whatwg-encoding "^2.0.0"
whatwg-mimetype "^3.0.0"
whatwg-url "^11.0.0"
- ws "^8.8.0"
+ ws "^8.9.0"
xml-name-validator "^4.0.0"
jsesc@^2.5.1:
@@ -6900,6 +7027,11 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+json-schema@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
@@ -6917,11 +7049,6 @@ json3@^3.3.3:
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
-json5@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
- integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
-
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
@@ -6929,7 +7056,7 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
-json5@^2.1.2, json5@^2.2.1:
+json5@^2.1.2, json5@^2.2.0, json5@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
@@ -6941,15 +7068,29 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
-"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44"
- integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==
+jsonpointer@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
+ integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd"
+ integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==
dependencies:
array-includes "^3.1.5"
object.assign "^4.1.2"
@@ -7032,16 +7173,6 @@ loader-runner@^2.4.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-loader-utils@0.2.x:
- version "0.2.17"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
- integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
- object-assign "^4.0.1"
-
loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
@@ -7135,6 +7266,11 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
lodash.truncate@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
@@ -7181,6 +7317,13 @@ lz-string@^1.4.4:
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
+magic-string@^0.25.0, magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
make-dir@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -7230,10 +7373,10 @@ mark-loader@^0.1.6:
resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5"
integrity sha1-CrtHfcp0IdcOIBKP9kifXK6GdtU=
-marky@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f"
- integrity sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w==
+marky@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0"
+ integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==
mathml-tag-names@^2.1.3:
version "2.1.3"
@@ -7438,7 +7581,7 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -7691,15 +7834,10 @@ node-releases@^1.1.71:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe"
integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==
-node-releases@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476"
- integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==
-
-node-releases@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666"
- integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==
+node-releases@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
+ integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
normalize-package-data@^2.5.0:
version "2.5.0"
@@ -7779,10 +7917,10 @@ num2fraction@^1.2.2:
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-nwsapi@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
- integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+nwsapi@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0"
+ integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==
object-assign@^4.0.1, object-assign@^4.1.1:
version "4.1.1"
@@ -7908,17 +8046,6 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-offline-plugin@^5.0.7:
- version "5.0.7"
- resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz#26936ad1a7699f4d67e0a095a258972a4ccf1788"
- integrity sha512-ArMFt4QFjK0wg8B5+R/6tt65u6Dk+Pkx4PAcW5O7mgIF3ywMepaQqFOQgfZD4ybanuGwuJihxUwMRgkzd+YGYw==
- dependencies:
- deep-extend "^0.5.1"
- ejs "^2.3.4"
- loader-utils "0.2.x"
- minimatch "^3.0.3"
- slash "^1.0.0"
-
on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
@@ -8024,6 +8151,13 @@ p-limit@^3.0.2:
dependencies:
p-try "^2.0.0"
+p-limit@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -8159,17 +8293,12 @@ parse-passwd@^1.0.0:
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
-parse5@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
- integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
-
-parse5@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a"
- integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==
+parse5@^7.0.0, parse5@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746"
+ integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==
dependencies:
- entities "^4.3.0"
+ entities "^4.4.0"
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
@@ -8335,16 +8464,16 @@ picomatch@^2.0.4, picomatch@^2.2.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+picomatch@^2.2.2, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
picomatch@^2.2.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
-picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -8698,10 +8827,10 @@ postcss-safe-parser@^6.0.0:
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
-postcss-scss@^4.0.2, postcss-scss@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.4.tgz#aa8f60e19ee18259bc193db9e4b96edfce3f3b1f"
- integrity sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==
+postcss-scss@^4.0.2, postcss-scss@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.5.tgz#8ee33c1dda8d9d4753b565ec79014803dc6edabf"
+ integrity sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==
postcss-selector-parser@^3.0.0:
version "3.1.2"
@@ -8767,10 +8896,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32:
source-map "^0.6.1"
supports-color "^6.1.0"
-postcss@^8.2.15, postcss@^8.4.14:
- version "8.4.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
- integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
+postcss@^8.2.15, postcss@^8.4.16, postcss@^8.4.17:
+ version "8.4.17"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5"
+ integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==
dependencies:
nanoid "^3.3.4"
picocolors "^1.0.0"
@@ -8813,6 +8942,11 @@ prettier@^2.7.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
+pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+
pretty-format@^25.2.1, pretty-format@^25.5.0:
version "25.5.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
@@ -8833,13 +8967,12 @@ pretty-format@^27.0.2:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^28.1.1:
- version "28.1.1"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb"
- integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==
+pretty-format@^29.0.3:
+ version "29.0.3"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.3.tgz#23d5f8cabc9cbf209a77d49409d093d61166a811"
+ integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==
dependencies:
- "@jest/schemas" "^28.0.2"
- ansi-regex "^5.0.1"
+ "@jest/schemas" "^29.0.0"
ansi-styles "^5.0.0"
react-is "^18.0.0"
@@ -9065,6 +9198,21 @@ react-event-listener@^0.6.0:
prop-types "^15.6.0"
warning "^4.0.1"
+react-fast-compare@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
+ integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+
+react-helmet@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
+ integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.7.2"
+ react-fast-compare "^3.1.1"
+ react-side-effect "^2.1.0"
+
react-hotkeys@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz#a0712aa2e0c03a759fd7885808598497a4dace72"
@@ -9131,7 +9279,7 @@ react-is@^18.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==
-react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4:
+react-lifecycles-compat@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
@@ -9173,18 +9321,18 @@ react-overlays@^0.9.3:
react-transition-group "^2.2.1"
warning "^3.0.0"
-react-redux-loading-bar@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.0.8.tgz#e84d59d1517b79f53b0f39c8ddb40682af648c1b"
- integrity sha512-BpR1tlYrYKFtGhxa7nAKc0dpcV33ZgXJ/jKNLpDDaxu2/cCxbkWQt9YlWT+VLw1x/7qyNYY4DH48bZdtmciSpg==
+react-redux-loading-bar@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-5.0.4.tgz#06dffcc53a447828dec1a26903e6b22807dd4254"
+ integrity sha512-ttLFYETh9zfyxJdTa5a1+KTWquxX3UN7F/XYslNTeCE8cpnWNpBbUOg8TcaZmOoWEWjCe/i5sV/Mvvr0xsGBBw==
dependencies:
- prop-types "^15.6.2"
- react-lifecycles-compat "^3.0.2"
+ prop-types "^15.7.2"
+ react-lifecycles-compat "^3.0.4"
-react-redux@^7.2.8:
- version "7.2.8"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de"
- integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==
+react-redux@^7.2.9:
+ version "7.2.9"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d"
+ integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==
dependencies:
"@babel/runtime" "^7.15.4"
"@types/react-redux" "^7.1.20"
@@ -9226,10 +9374,10 @@ react-router@^4.3.1:
prop-types "^15.6.1"
warning "^4.0.1"
-react-select@^5.3.2:
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.2.tgz#ecee0d5c59ed4acb7f567f7de3c75a488d93dacb"
- integrity sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ==
+react-select@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.4.0.tgz#81f6ac73906126706f104751ee14437bd16798f4"
+ integrity sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg==
dependencies:
"@babel/runtime" "^7.12.0"
"@emotion/cache" "^11.4.0"
@@ -9239,6 +9387,11 @@ react-select@^5.3.2:
prop-types "^15.6.0"
react-transition-group "^4.3.0"
+react-side-effect@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a"
+ integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==
+
react-sparklines@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60"
@@ -9296,10 +9449,10 @@ react-textarea-autosize@^8.3.4:
use-composed-ref "^1.3.0"
use-latest "^1.2.1"
-react-toggle@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.2.tgz#b00500832f925ad524356d909821821ae39f6c52"
- integrity sha512-4Ohw31TuYQdhWfA6qlKafeXx3IOH7t4ZHhmRdwsm1fQREwOBGxJT+I22sgHqR/w8JRdk+AeMCJXPImEFSrNXow==
+react-toggle@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.3.tgz#99193392cca8e495710860c49f55e74c4e6cf452"
+ integrity sha512-WoPrvbwfQSvoagbrDnXPrlsxwzuhQIrs+V0I162j/s+4XPgY/YDAUmHSeWiroznfI73wj+MBydvW95zX8ABbSg==
dependencies:
classnames "^2.2.5"
@@ -9682,7 +9835,7 @@ rimraf@^2.5.4, rimraf@^2.6.3:
dependencies:
glob "^7.1.3"
-rimraf@^3.0.0, rimraf@^3.0.2:
+rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@@ -9697,6 +9850,23 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
+rollup-plugin-terser@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
+ integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ jest-worker "^26.2.1"
+ serialize-javascript "^4.0.0"
+ terser "^5.0.0"
+
+rollup@^2.43.1:
+ version "2.72.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045"
+ integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -9744,10 +9914,10 @@ sass-loader@^10.2.0:
schema-utils "^3.0.0"
semver "^7.3.2"
-sass@^1.53.0:
- version "1.53.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.53.0.tgz#eab73a7baac045cc57ddc1d1ff501ad2659952eb"
- integrity sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==
+sass@^1.55.0:
+ version "1.55.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c"
+ integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
@@ -9758,13 +9928,6 @@ sax@~1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-saxes@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
- integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
- dependencies:
- xmlchars "^2.2.0"
-
saxes@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
@@ -9832,11 +9995,6 @@ selfsigned@^1.10.8:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
- integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
@@ -9873,6 +10031,13 @@ serialize-javascript@^2.1.2:
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
serialize-javascript@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
@@ -10017,11 +10182,6 @@ sisteransi@^1.0.4:
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
- integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@@ -10108,14 +10268,6 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-resolve@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
- integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
- dependencies:
- atob "^2.1.2"
- decode-uri-component "^0.2.0"
-
source-map-support@0.5.13:
version "0.5.13"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
@@ -10124,10 +10276,10 @@ source-map-support@0.5.13:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map-support@~0.5.12, source-map-support@~0.5.19:
- version "0.5.19"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
- integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+source-map-support@~0.5.12, source-map-support@~0.5.19, source-map-support@~0.5.20:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -10152,11 +10304,23 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@^0.8.0-beta.0, source-map@~0.8.0-beta.0:
+ version "0.8.0-beta.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
+ integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
+ dependencies:
+ whatwg-url "^7.0.0"
+
source-map@~0.7.2:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
spdx-correct@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
@@ -10356,7 +10520,7 @@ string-width@^3.0.0, string-width@^3.1.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
-string.prototype.matchall@^4.0.7:
+string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==
@@ -10402,6 +10566,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
stringz@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/stringz/-/stringz-2.1.0.tgz#5896b4713eac31157556040fb90258fb02c1630c"
@@ -10481,34 +10654,34 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
-stylelint-config-recommended-scss@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz#02baeace2b7f30f80369b6ee2da77aae5a01bff6"
- integrity sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig==
+stylelint-config-recommended-scss@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz#db16b6ae6055e72e3398916c0f13d6eb685902a2"
+ integrity sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA==
dependencies:
postcss-scss "^4.0.2"
- stylelint-config-recommended "^7.0.0"
+ stylelint-config-recommended "^8.0.0"
stylelint-scss "^4.0.0"
-stylelint-config-recommended@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz#7497372ae83ab7a6fffc18d7d7b424c6480ae15e"
- integrity sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==
+stylelint-config-recommended@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz#7736be9984246177f017c39ec7b1cd0f19ae9117"
+ integrity sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==
-stylelint-config-standard-scss@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-4.0.0.tgz#9c1dc99eea73394bf22ad15648a5b1d9b74ff649"
- integrity sha512-xizu8PTEyB6zYXBiVg6VtvUYn9m57x+6ZtaOdaxsfpbe5eagLPGNlbYnKfm/CfN69ArUpnwR6LjgsTHzlGbtXQ==
+stylelint-config-standard-scss@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-5.0.0.tgz#afc5e43c73e7a15875b8f30f54204b01a2634743"
+ integrity sha512-zoXLibojHZYPFjtkc4STZtAJ2yGTq3Bb4MYO0oiyO6f/vNxDKRcSDZYoqN260Gv2eD5niQIr1/kr5SXlFj9kcQ==
dependencies:
- stylelint-config-recommended-scss "^6.0.0"
- stylelint-config-standard "^25.0.0"
+ stylelint-config-recommended-scss "^7.0.0"
+ stylelint-config-standard "^26.0.0"
-stylelint-config-standard@^25.0.0:
- version "25.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz#2c916984e6655d40d6e8748b19baa8603b680bff"
- integrity sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==
+stylelint-config-standard@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-26.0.0.tgz#4701b8d582d34120eec7d260ba779e4c2d953635"
+ integrity sha512-hUuB7LaaqM8abvkOO84wh5oYSkpXgTzHu2Zza6e7mY+aOmpNTjoFBRxSLlzY0uAOMWEFx0OMKzr+reG1BUtcqQ==
dependencies:
- stylelint-config-recommended "^7.0.0"
+ stylelint-config-recommended "^8.0.0"
stylelint-scss@^4.0.0:
version "4.2.0"
@@ -10521,22 +10694,20 @@ stylelint-scss@^4.0.0:
postcss-selector-parser "^6.0.6"
postcss-value-parser "^4.1.0"
-stylelint@^14.9.1:
- version "14.9.1"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.9.1.tgz#6494ed38f148b1e75b402d678a3b6a8aae86dfda"
- integrity sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA==
+stylelint@^14.13.0:
+ version "14.13.0"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.13.0.tgz#0c0b8ba8c5cf39522a50c9928f5e44897c678538"
+ integrity sha512-NJSAdloiAB/jgVJKxMR90mWlctvmeBFGFVUvyKngi9+j/qPSJ5ZB+u8jOmGbLTnS7OHrII9NFGehPRyar8U5vg==
dependencies:
- "@csstools/selector-specificity" "^2.0.1"
+ "@csstools/selector-specificity" "^2.0.2"
balanced-match "^2.0.0"
- colord "^2.9.2"
+ colord "^2.9.3"
cosmiconfig "^7.0.1"
css-functions-list "^3.1.0"
debug "^4.3.4"
- execall "^2.0.0"
- fast-glob "^3.2.11"
- fastest-levenshtein "^1.0.12"
+ fast-glob "^3.2.12"
+ fastest-levenshtein "^1.0.16"
file-entry-cache "^6.0.1"
- get-stdin "^8.0.0"
global-modules "^2.0.0"
globby "^11.1.0"
globjoin "^0.1.4"
@@ -10551,7 +10722,7 @@ stylelint@^14.9.1:
micromatch "^4.0.5"
normalize-path "^3.0.0"
picocolors "^1.0.0"
- postcss "^8.4.14"
+ postcss "^8.4.16"
postcss-media-query-parser "^0.2.3"
postcss-resolve-nested-selector "^0.1.1"
postcss-safe-parser "^6.0.0"
@@ -10561,11 +10732,11 @@ stylelint@^14.9.1:
string-width "^4.2.3"
strip-ansi "^6.0.1"
style-search "^0.1.0"
- supports-hyperlinks "^2.2.0"
+ supports-hyperlinks "^2.3.0"
svg-tags "^1.0.0"
table "^6.8.0"
v8-compile-cache "^2.3.0"
- write-file-atomic "^4.0.1"
+ write-file-atomic "^4.0.2"
stylis@4.0.13:
version "4.0.13"
@@ -10617,10 +10788,10 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
-supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb"
- integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==
+supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
+ integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
dependencies:
has-flag "^4.0.0"
supports-color "^7.0.0"
@@ -10692,6 +10863,21 @@ tcomb@^2.5.0:
resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0"
integrity sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA=
+temp-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
+ integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
+
+tempy@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3"
+ integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==
+ dependencies:
+ is-stream "^2.0.0"
+ temp-dir "^2.0.0"
+ type-fest "^0.16.0"
+ unique-string "^2.0.0"
+
terminal-link@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
@@ -10731,14 +10917,24 @@ terser-webpack-plugin@^4.2.3:
webpack-sources "^1.4.3"
terser@^4.1.2:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
- integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f"
+ integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
+terser@^5.0.0:
+ version "5.13.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799"
+ integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==
+ dependencies:
+ acorn "^8.5.0"
+ commander "^2.20.0"
+ source-map "~0.8.0-beta.0"
+ source-map-support "~0.5.20"
+
terser@^5.3.4:
version "5.3.4"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.4.tgz#e510e05f86e0bd87f01835c3238839193f77a60c"
@@ -10784,11 +10980,6 @@ text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-throat@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375"
- integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==
-
throng@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/throng/-/throng-4.0.0.tgz#983c6ba1993b58eae859998aa687ffe88df84c17"
@@ -10893,14 +11084,22 @@ totalist@^1.0.0:
resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
-tough-cookie@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
- integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
+tough-cookie@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
+ integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
dependencies:
psl "^1.1.33"
punycode "^2.1.1"
- universalify "^0.1.2"
+ universalify "^0.2.0"
+ url-parse "^1.5.3"
+
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+ dependencies:
+ punycode "^2.1.0"
tr46@^3.0.0:
version "3.0.0"
@@ -10978,6 +11177,11 @@ type-fest@^0.11.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+type-fest@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
+ integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
+
type-fest@^0.18.0:
version "0.18.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
@@ -11088,11 +11292,28 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
-universalify@^0.1.0, universalify@^0.1.2:
+unique-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+ integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
+ dependencies:
+ crypto-random-string "^2.0.0"
+
+universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
+ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -11111,15 +11332,15 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-upath@^1.1.1:
+upath@^1.1.1, upath@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-browserslist-db@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824"
- integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==
+update-browserslist-db@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18"
+ integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==
dependencies:
escalade "^3.1.1"
picocolors "^1.0.0"
@@ -11136,7 +11357,7 @@ urix@^0.1.0:
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-url-parse@^1.4.3, url-parse@^1.4.7:
+url-parse@^1.4.3, url-parse@^1.4.7, url-parse@^1.5.3:
version "1.5.10"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
@@ -11230,12 +11451,12 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
-v8-to-istanbul@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511"
- integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==
+v8-to-istanbul@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4"
+ integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==
dependencies:
- "@jridgewell/trace-mapping" "^0.3.7"
+ "@jridgewell/trace-mapping" "^0.3.12"
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"
@@ -11272,13 +11493,6 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-w3c-hr-time@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
- integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
- dependencies:
- browser-process-hrtime "^1.0.0"
-
w3c-xmlserializer@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923"
@@ -11337,6 +11551,11 @@ webidl-conversions@^3.0.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
webidl-conversions@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
@@ -11357,10 +11576,10 @@ webpack-assets-manifest@^4.0.6:
tapable "^1.0"
webpack-sources "^1.0"
-webpack-bundle-analyzer@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5"
- integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==
+webpack-bundle-analyzer@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#bee2ee05f4ba4ed430e4831a319126bb4ed9f5a6"
+ integrity sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw==
dependencies:
acorn "^8.0.4"
acorn-walk "^8.0.0"
@@ -11527,14 +11746,6 @@ whatwg-mimetype@^3.0.0:
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
-whatwg-url@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da"
- integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==
- dependencies:
- tr46 "^3.0.0"
- webidl-conversions "^7.0.0"
-
whatwg-url@^11.0.0:
version "11.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018"
@@ -11551,6 +11762,15 @@ whatwg-url@^5.0.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
@@ -11603,6 +11823,175 @@ word-wrap@^1.2.3, word-wrap@~1.2.3:
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+workbox-background-sync@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9"
+ integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==
+ dependencies:
+ idb "^7.0.1"
+ workbox-core "6.5.4"
+
+workbox-broadcast-update@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66"
+ integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-build@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389"
+ integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==
+ dependencies:
+ "@apideck/better-ajv-errors" "^0.3.1"
+ "@babel/core" "^7.11.1"
+ "@babel/preset-env" "^7.11.0"
+ "@babel/runtime" "^7.11.2"
+ "@rollup/plugin-babel" "^5.2.0"
+ "@rollup/plugin-node-resolve" "^11.2.1"
+ "@rollup/plugin-replace" "^2.4.1"
+ "@surma/rollup-plugin-off-main-thread" "^2.2.3"
+ ajv "^8.6.0"
+ common-tags "^1.8.0"
+ fast-json-stable-stringify "^2.1.0"
+ fs-extra "^9.0.1"
+ glob "^7.1.6"
+ lodash "^4.17.20"
+ pretty-bytes "^5.3.0"
+ rollup "^2.43.1"
+ rollup-plugin-terser "^7.0.0"
+ source-map "^0.8.0-beta.0"
+ stringify-object "^3.3.0"
+ strip-comments "^2.0.1"
+ tempy "^0.6.0"
+ upath "^1.2.0"
+ workbox-background-sync "6.5.4"
+ workbox-broadcast-update "6.5.4"
+ workbox-cacheable-response "6.5.4"
+ workbox-core "6.5.4"
+ workbox-expiration "6.5.4"
+ workbox-google-analytics "6.5.4"
+ workbox-navigation-preload "6.5.4"
+ workbox-precaching "6.5.4"
+ workbox-range-requests "6.5.4"
+ workbox-recipes "6.5.4"
+ workbox-routing "6.5.4"
+ workbox-strategies "6.5.4"
+ workbox-streams "6.5.4"
+ workbox-sw "6.5.4"
+ workbox-window "6.5.4"
+
+workbox-cacheable-response@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137"
+ integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-core@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba"
+ integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==
+
+workbox-expiration@6.5.4, workbox-expiration@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539"
+ integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==
+ dependencies:
+ idb "^7.0.1"
+ workbox-core "6.5.4"
+
+workbox-google-analytics@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d"
+ integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==
+ dependencies:
+ workbox-background-sync "6.5.4"
+ workbox-core "6.5.4"
+ workbox-routing "6.5.4"
+ workbox-strategies "6.5.4"
+
+workbox-navigation-preload@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212"
+ integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-precaching@6.5.4, workbox-precaching@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72"
+ integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==
+ dependencies:
+ workbox-core "6.5.4"
+ workbox-routing "6.5.4"
+ workbox-strategies "6.5.4"
+
+workbox-range-requests@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399"
+ integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-recipes@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb"
+ integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==
+ dependencies:
+ workbox-cacheable-response "6.5.4"
+ workbox-core "6.5.4"
+ workbox-expiration "6.5.4"
+ workbox-precaching "6.5.4"
+ workbox-routing "6.5.4"
+ workbox-strategies "6.5.4"
+
+workbox-routing@6.5.4, workbox-routing@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da"
+ integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-strategies@6.5.4, workbox-strategies@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d"
+ integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==
+ dependencies:
+ workbox-core "6.5.4"
+
+workbox-streams@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69"
+ integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==
+ dependencies:
+ workbox-core "6.5.4"
+ workbox-routing "6.5.4"
+
+workbox-sw@6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736"
+ integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==
+
+workbox-webpack-plugin@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7"
+ integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==
+ dependencies:
+ fast-json-stable-stringify "^2.1.0"
+ pretty-bytes "^5.4.1"
+ upath "^1.2.0"
+ webpack-sources "^1.4.3"
+ workbox-build "6.5.4"
+
+workbox-window@6.5.4, workbox-window@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91"
+ integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==
+ dependencies:
+ "@types/trusted-types" "^2.0.2"
+ workbox-core "6.5.4"
+
worker-farm@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
@@ -11633,10 +12022,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-write-file-atomic@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f"
- integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==
+write-file-atomic@^4.0.1, write-file-atomic@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
+ integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
dependencies:
imurmurhash "^0.1.4"
signal-exit "^3.0.7"
@@ -11653,10 +12042,10 @@ ws@^7.3.1:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
-ws@^8.2.3, ws@^8.8.0:
- version "8.8.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769"
- integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==
+ws@^8.9.0:
+ version "8.9.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e"
+ integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==
xml-name-validator@^4.0.0:
version "4.0.0"
@@ -11732,12 +12121,12 @@ yargs@^13.3.2:
y18n "^4.0.0"
yargs-parser "^13.1.2"
-yargs@^17.3.1, yargs@^17.5.1:
- version "17.5.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e"
- integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==
+yargs@^17.3.1, yargs@^17.6.0:
+ version "17.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c"
+ integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==
dependencies:
- cliui "^7.0.2"
+ cliui "^8.0.1"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
@@ -11745,6 +12134,11 @@ yargs@^17.3.1, yargs@^17.5.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
zlibjs@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/zlibjs/-/zlibjs-0.3.1.tgz#50197edb28a1c42ca659cc8b4e6a9ddd6d444554"