);
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index 837bf8fcb38..70897848153 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -16,13 +16,14 @@ import SensitiveButtonContainer from '../containers/sensitive_button_container';
import EmojiPickerDropdown from './emoji_picker_dropdown';
import UploadFormContainer from '../containers/upload_form_container';
import WarningContainer from '../containers/warning_container';
+import { isMobile } from '../../../is_mobile';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { length } from 'stringz';
import { isMobile } from '../../../is_mobile';
const messages = defineMessages({
placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },
- spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Content warning' },
+ spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' },
publish: { id: 'compose_form.publish', defaultMessage: 'Toot' },
publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' },
});
diff --git a/app/javascript/mastodon/features/ui/components/bundle.js b/app/javascript/mastodon/features/ui/components/bundle.js
index 72798f69061..fc88e0c70f1 100644
--- a/app/javascript/mastodon/features/ui/components/bundle.js
+++ b/app/javascript/mastodon/features/ui/components/bundle.js
@@ -52,14 +52,8 @@ class Bundle extends React.Component {
load = (props) => {
const { fetchComponent, onFetch, onFetchSuccess, onFetchFail, renderDelay } = props || this.props;
- this.setState({ mod: undefined });
onFetch();
- if (renderDelay !== 0) {
- this.timestamp = new Date();
- this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
- }
-
if (Bundle.cache[fetchComponent.name]) {
const mod = Bundle.cache[fetchComponent.name];
@@ -68,6 +62,13 @@ class Bundle extends React.Component {
return Promise.resolve();
}
+ this.setState({ mod: undefined });
+
+ if (renderDelay !== 0) {
+ this.timestamp = new Date();
+ this.timeout = setTimeout(() => this.setState({ forceRender: true }), renderDelay);
+ }
+
return fetchComponent()
.then((mod) => {
Bundle.cache[fetchComponent.name] = mod;
diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js
index 515c377b9d4..7de66ce3f9d 100644
--- a/app/javascript/mastodon/features/ui/components/columns_area.js
+++ b/app/javascript/mastodon/features/ui/components/columns_area.js
@@ -1,5 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
+import { injectIntl } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
@@ -21,6 +22,7 @@ const componentMap = {
'FAVOURITES': FavouritedStatuses,
};
+@injectIntl
export default class ColumnsArea extends ImmutablePureComponent {
static contextTypes = {
@@ -28,6 +30,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
};
static propTypes = {
+ intl: PropTypes.object.isRequired,
columns: ImmutablePropTypes.list.isRequired,
singleColumn: PropTypes.bool,
children: PropTypes.node,
@@ -64,8 +67,8 @@ export default class ColumnsArea extends ImmutablePureComponent {
renderView = (link, index) => {
const columnIndex = getIndex(this.context.router.history.location.pathname);
- const title = link.props.children[1] && React.cloneElement(link.props.children[1]);
- const icon = (link.props.children[0] || link.props.children).props.className.split(' ')[2].split('-')[1];
+ const title = this.props.intl.formatMessage({ id: link.props['data-preview-title-id'] });
+ const icon = link.props['data-preview-icon'];
const view = (index === columnIndex) ?
React.cloneElement(this.props.children) :
diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js
index b4153ff459c..baec86d0d52 100644
--- a/app/javascript/mastodon/features/ui/components/tabs_bar.js
+++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js
@@ -3,14 +3,14 @@ import NavLink from 'react-router-dom/NavLink';
import { FormattedMessage } from 'react-intl';
export const links = [
- ,
- ,
- ,
+ ,
+ ,
+ ,
- ,
- ,
+ ,
+ ,
- ,
+ ,
];
export function getIndex (path) {
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 89ddb2d154e..7f27d78cd3b 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,7 +1,7 @@
{
"account.block": "حظر @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "هذا المستخدم من مثيل خادم آخر. قد يكون هذا الرقم أكبر.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "تعديل الملف الشخصي",
"account.follow": "تابِع",
"account.followers": "المتابعون",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "إلغاء المتابعة",
"account.unmute": "إلغاء الكتم عن @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 3dba91b822b..68aaf56b0e8 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -1,7 +1,7 @@
{
"account.block": "Блокирай",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Редактирай профила си",
"account.follow": "Последвай",
"account.followers": "Последователи",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Не следвай",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 54f2e5e221c..6fdcde4b44c 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloquejar @{name}",
"account.block_domain": "Amagar tot de {domain}",
- "account.disclaimer": "Aquest usuari és d'un altra instància. Aquest número podria ser més gran.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidors",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Mostra {domain}",
"account.unfollow": "Deixar de seguir",
"account.unmute": "Treure silenci de @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Pots premer {combo} per saltar-te això el proper cop",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index a041e665509..f911c7b75e7 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -1,7 +1,7 @@
{
"account.block": "@{name} blocken",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Dieser Benutzer ist von einer anderen Instanz. Diese Zahl könnte größer sein.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Profil bearbeiten",
"account.follow": "Folgen",
"account.followers": "Folgende",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Entfolgen",
"account.unmute": "@{name} nicht mehr stummschalten",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 956878f57eb..a7b8f01d0c9 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -358,10 +358,6 @@
"defaultMessage": "Media",
"id": "account.media"
},
- {
- "defaultMessage": "This user is from another instance. This number may be larger.",
- "id": "account.disclaimer"
- },
{
"defaultMessage": "Hide everything from {domain}",
"id": "account.block_domain"
@@ -370,6 +366,14 @@
"defaultMessage": "Unhide {domain}",
"id": "account.unblock_domain"
},
+ {
+ "defaultMessage": "Information below may reflect the user's profile incompletely.",
+ "id": "account.disclaimer_full"
+ },
+ {
+ "defaultMessage": "View full profile",
+ "id": "account.view_full_profile"
+ },
{
"defaultMessage": "Posts",
"id": "account.posts"
@@ -452,7 +456,7 @@
"id": "compose_form.placeholder"
},
{
- "defaultMessage": "Content warning",
+ "defaultMessage": "Write your warning here",
"id": "compose_form.spoiler_placeholder"
},
{
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index fe2bd4cb4dc..3a201b9c111 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -1,7 +1,7 @@
{
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Edit profile",
"account.follow": "Follow",
"account.followers": "Followers",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
@@ -45,7 +46,7 @@
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Mark media as sensitive",
"compose_form.spoiler": "Hide text behind warning",
- "compose_form.spoiler_placeholder": "Content warning",
+ "compose_form.spoiler_placeholder": "Write your warning here",
"confirmation_modal.cancel": "Cancel",
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 029cef883df..0bb5159c8cd 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloki @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Redakti la profilon",
"account.follow": "Sekvi",
"account.followers": "Sekvantoj",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Malsekvi",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 36ad66aceba..a39b608c697 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloquear",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Dejar de seguir",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 113daef77b7..6842558d990 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -1,7 +1,7 @@
{
"account.block": "مسدودسازی @{name}",
"account.block_domain": "پنهانسازی همه چیز از سرور {domain}",
- "account.disclaimer": "این کاربر عضو سرور متفاوتی است. شاید عدد واقعی بیشتر از این باشد.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "ویرایش نمایه",
"account.follow": "پی بگیرید",
"account.followers": "پیگیران",
@@ -17,6 +17,7 @@
"account.unblock_domain": "رفع پنهانسازی از {domain}",
"account.unfollow": "پایان پیگیری",
"account.unmute": "باصدا کردن @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index da9e5d0f28e..efc9b1053ac 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -1,7 +1,7 @@
{
"account.block": "Estä @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Muokkaa",
"account.follow": "Seuraa",
"account.followers": "Seuraajia",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Lopeta seuraaminen",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index fc33052b1d6..3cc1f152aa9 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloquer",
"account.block_domain": "Tout masquer de {domain}",
- "account.disclaimer": "Ce compte est situé sur une autre instance. Les nombres peuvent être plus grands.",
+ "account.disclaimer_full": "Les données ci-dessous peuvent ne pas refléter ce profil dans sa totalité.",
"account.edit_profile": "Modifier le profil",
"account.follow": "Suivre",
"account.followers": "Abonné⋅e⋅s",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Ne plus masquer {domain}",
"account.unfollow": "Ne plus suivre",
"account.unmute": "Ne plus masquer",
+"account.view_full_profile": "Afficher le profil complet",
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour pouvoir passer ceci, la prochaine fois",
"bundle_column_error.body": "Une erreur s'est produite lors du chargement de ce composant.",
"bundle_column_error.retry": "Réessayer",
@@ -41,11 +42,11 @@
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Qu’avez-vous en tête ?",
"compose_form.privacy_disclaimer": "Votre statut privé va être transmis aux personnes mentionnées sur {domains}. Avez-vous confiance en {domainsCount, plural, one {ce serveur} other {ces serveurs}} pour ne pas divulguer votre statut ? Les statuts privés ne fonctionnent que sur les instances de Mastodon. Si {domains} {domainsCount, plural, one {n’est pas une instance de Mastodon} other {ne sont pas des instances de Mastodon}}, il n’y aura aucune indication que votre statut est privé, et il pourrait être partagé ou rendu visible d’une autre manière à d’autres personnes imprévues.",
- "compose_form.publish": "Pouet ",
+ "compose_form.publish": "Pouet ",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive": "Marquer le média comme délicat",
+ "compose_form.sensitive": "Marquer le média comme sensible",
"compose_form.spoiler": "Masquer le texte derrière un avertissement",
- "compose_form.spoiler_placeholder": "Avertissement",
+ "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
"confirmation_modal.cancel": "Annuler",
"confirmations.block.confirm": "Bloquer",
"confirmations.block.message": "Confirmez vous le blocage de {name} ?",
@@ -68,13 +69,13 @@
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux et voyages",
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",
- "empty_column.hashtag": "Il n’y a encore aucun contenu relatif à ce hashtag",
+ "empty_column.hashtag": "Il n’y a encore aucun contenu associé à ce hashtag",
"empty_column.home": "Vous ne suivez encore personne. Visitez {public} ou bien utilisez la recherche pour vous connecter à d’autres utilisateur⋅ice⋅s.",
"empty_column.home.inactivity": "Votre accueil est vide. Si vous ne vous êtes pas connecté⋅e depuis un moment, il se remplira automatiquement très bientôt.",
"empty_column.home.public_timeline": "le fil public",
"empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres utilisateur⋅ice⋅s pour débuter la conversation.",
"empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des utilisateur⋅ice⋅s d’autres instances pour remplir le fil public.",
- "follow_request.authorize": "Autoriser",
+ "follow_request.authorize": "Accepter",
"follow_request.reject": "Rejeter",
"getting_started.appsshort": "Applications",
"getting_started.faq": "FAQ",
@@ -126,8 +127,8 @@
"onboarding.page_one.welcome": "Bienvenue sur Mastodon !",
"onboarding.page_six.admin": "L’administrateur⋅trice de votre instance est {admin}",
"onboarding.page_six.almost_done": "Nous y sommes presque…",
- "onboarding.page_six.appetoot": "Bon Appetoot!",
- "onboarding.page_six.apps_available": "De nombreuses {apps} sont disponibles pour iOS, Android et autres. Et maintenant… Bon Appetoot!",
+ "onboarding.page_six.appetoot": "Bon Appétoot!",
+ "onboarding.page_six.apps_available": "De nombreuses {apps} sont disponibles pour iOS, Android et autres. Et maintenant… Bon Appétoot!",
"onboarding.page_six.github": "Mastodon est un logiciel libre, gratuit et open-source. Vous pouvez rapporter des bogues, suggérer des fonctionnalités, ou contribuer à son développement sur {github}.",
"onboarding.page_six.guidelines": "règles de la communauté",
"onboarding.page_six.read_guidelines": "S’il vous plaît, n’oubliez pas de lire les {guidelines} !",
@@ -151,7 +152,7 @@
"report.target": "Signalement",
"search.placeholder": "Rechercher",
"search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
- "standalone.public_title": "Coup d'oeil",
+ "standalone.public_title": "Coup d'œil",
"status.cannot_reblog": "Cette publication ne peut être boostée",
"status.delete": "Effacer",
"status.favourite": "Ajouter aux favoris",
@@ -165,8 +166,8 @@
"status.reply": "Répondre",
"status.replyAll": "Répondre au fil",
"status.report": "Signaler @{name}",
- "status.sensitive_toggle": "Cliquer pour dévoiler",
- "status.sensitive_warning": "Contenu délicat",
+ "status.sensitive_toggle": "Cliquer pour afficher",
+ "status.sensitive_warning": "Contenu sensible",
"status.show_less": "Replier",
"status.show_more": "Déplier",
"status.unmute_conversation": "Ne plus masquer la conversation",
@@ -180,7 +181,7 @@
"upload_form.undo": "Annuler",
"upload_progress.label": "Envoi en cours…",
"video_player.expand": "Agrandir la vidéo",
- "video_player.toggle_sound": "Mettre/Couper le son",
+ "video_player.toggle_sound": "Activer/Désactiver le son",
"video_player.toggle_visible": "Afficher/Cacher la vidéo",
"video_player.video_error": "Erreur lors de la lecture de la vidéo"
}
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index c8dc4fe8dbd..36be0842be6 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -1,7 +1,7 @@
{
"account.block": "חסימת @{name}",
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
- "account.disclaimer": "משתמש זה מגיע מקהילה אחרת. המספר הזה עשוי להיות גדול יותר.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "עריכת פרופיל",
"account.follow": "מעקב",
"account.followers": "עוקבים",
@@ -17,6 +17,7 @@
"account.unblock_domain": "הסר חסימה מקהילת {domain}",
"account.unfollow": "הפסקת מעקב",
"account.unmute": "הפסקת השתקת @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index fd669b2b27a..363c4c490e1 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokiraj @{name}",
"account.block_domain": "Sakrij sve sa {domain}",
- "account.disclaimer": "Ovaj korisnik je sa druge instance. Ovaj broj bi mogao biti veći.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Uredi profil",
"account.follow": "Slijedi",
"account.followers": "Sljedbenici",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Otkrij {domain}",
"account.unfollow": "Prestani slijediti",
"account.unmute": "Poništi utišavanje @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Možeš pritisnuti {combo} kako bi ovo preskočio sljedeći put",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index b3672cb7a40..d43570f0d31 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokkolás",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Profil szerkesztése",
"account.follow": "Követés",
"account.followers": "Követők",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Követés abbahagyása",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 8a17262fe80..916f313bb0e 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokir @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Pengguna ini berasal dari server lain. Angka berikut mungkin lebih besar.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Ubah profil",
"account.follow": "Ikuti",
"account.followers": "Pengikut",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Berhenti mengikuti",
"account.unmute": "Berhenti membisukan @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 154ca66ceea..a87cc932861 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokusar @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Ca uzero esas de altra instaluro. Ca nombro forsan esas plu granda.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Modifikar profilo",
"account.follow": "Sequar",
"account.followers": "Sequanti",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Ne plus sequar",
"account.unmute": "Ne plus celar @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 6cb274bae9c..243ed7344af 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -1,7 +1,7 @@
{
"account.block": "Blocca @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Questo utente si trova su un altro server. Questo numero potrebbe essere maggiore.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Modifica profilo",
"account.follow": "Segui",
"account.followers": "Seguaci",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Non seguire",
"account.unmute": "Non silenziare @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 7fe27a092cf..ca36122f7f9 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,7 +1,7 @@
{
"account.block": "ブロック",
"account.block_domain": "{domain}全体を非表示",
- "account.disclaimer": "このユーザーは他のインスタンスに所属しているため、数字が正確で無い場合があります。",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "プロフィールを編集",
"account.follow": "フォロー",
"account.followers": "フォロワー",
@@ -17,6 +17,7 @@
"account.unblock_domain": "{domain}を表示",
"account.unfollow": "フォロー解除",
"account.unmute": "ミュート解除",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "次からは{combo}を押せば、これをスキップできます。",
"bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。",
"bundle_column_error.retry": "再試行",
@@ -45,7 +46,7 @@
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "メディアを閲覧注意としてマークする",
"compose_form.spoiler": "テキストを隠す",
- "compose_form.spoiler_placeholder": "警告",
+ "compose_form.spoiler_placeholder": "ここに警告を書いてください",
"confirmation_modal.cancel": "キャンセル",
"confirmations.block.confirm": "ブロック",
"confirmations.block.message": "本当に{name}をブロックしますか?",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index fbd0098d756..768efa37d36 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -1,7 +1,7 @@
{
"account.block": "차단",
"account.block_domain": "{domain} 전체를 숨김",
- "account.disclaimer": "이 사용자는 다른 인스턴스에 소속되어 있으므로, 수치가 정확하지 않을 수도 있습니다.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "프로필 편집",
"account.follow": "팔로우",
"account.followers": "팔로워",
@@ -17,6 +17,7 @@
"account.unblock_domain": "{domain} 숨김 해제",
"account.unfollow": "팔로우 해제",
"account.unmute": "뮤트 해제",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "다음부터 {combo}를 누르면 이 과정을 건너뛸 수 있습니다.",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index f7b0bbf68ae..fbfabc5d145 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokkeer @{name}",
"account.block_domain": "Negeer alles van {domain}",
- "account.disclaimer": "Deze gebruiker zit op een andere server. Dit getal kan hoger zijn.",
+ "account.disclaimer_full": "De informatie hieronder kan mogelijk een incompleet beeld geven van dit gebruikersprofiel.",
"account.edit_profile": "Profiel bewerken",
"account.follow": "Volgen",
"account.followers": "Volgers",
@@ -17,13 +17,14 @@
"account.unblock_domain": "{domain} niet meer negeren",
"account.unfollow": "Ontvolgen",
"account.unmute": "@{name} niet meer negeren",
+ "account.view_full_profile": "Volledig profiel tonen",
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
- "bundle_column_error.body": "Something went wrong while loading this component.",
- "bundle_column_error.retry": "Try again",
- "bundle_column_error.title": "Network error",
- "bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
- "bundle_modal_error.retry": "Try again",
+ "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
+ "bundle_column_error.retry": "Opnieuw proberen",
+ "bundle_column_error.title": "Netwerkfout",
+ "bundle_modal_error.close": "Sluiten",
+ "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
+ "bundle_modal_error.retry": "Opnieuw proberen",
"column.blocks": "Geblokkeerde gebruikers",
"column.community": "Lokale tijdlijn",
"column.favourites": "Favorieten",
@@ -43,20 +44,20 @@
"compose_form.privacy_disclaimer": "Jouw privétoot wordt afgeleverd aan de vermelde gebruikers op {domains}. Vertrouw jij {domainsCount, plural, one {die server} other {die servers}}? Het privé plaatsen van toots werkt alleen op Mastodon-servers. Wanneer {domains} {domainsCount, plural, one {geen Mastodon-server is} other {geen Mastodon-servers zijn}}, dan wordt er niet aangegeven dat de toot privé is, waardoor het kan worden geboost of op een andere manier zichtbaar wordt gemaakt voor mensen waarvoor het niet was bedoeld.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive": "Media als gevoelig markeren",
+ "compose_form.sensitive": "Media als gevoelig markeren (nsfw)",
"compose_form.spoiler": "Tekst achter waarschuwing verbergen",
"compose_form.spoiler_placeholder": "Waarschuwingstekst",
"confirmation_modal.cancel": "Annuleren",
"confirmations.block.confirm": "Blokkeren",
- "confirmations.block.message": "Weet je zeker dat je {name} wilt blokkeren?",
+ "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?",
"confirmations.delete.confirm": "Verwijderen",
- "confirmations.delete.message": "Weet je zeker dat je deze toot wilt verwijderen?",
+ "confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?",
"confirmations.domain_block.confirm": "Negeer alles van deze server",
"confirmations.domain_block.message": "Weet je het echt, echt zeker dat je alles van {domain} wil negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en gewenst.",
"confirmations.mute.confirm": "Negeren",
- "confirmations.mute.message": "Weet je zeker dat je {name} wilt negeren?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
+ "confirmations.unfollow.confirm": "Ontvolgen",
+ "confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
"emoji_button.activity": "Activiteiten",
"emoji_button.flags": "Vlaggen",
"emoji_button.food": "Eten en drinken",
@@ -67,7 +68,7 @@
"emoji_button.search": "Zoeken...",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
- "empty_column.community": "De lokale tijdlijn is leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
+ "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
"empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
"empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
"empty_column.home.inactivity": "Deze tijdlijn is leeg. Wanneer je een tijdje inactief bent geweest wordt deze snel opnieuw aangemaakt.",
@@ -106,13 +107,13 @@
"notification.mention": "{name} vermeldde jou",
"notification.reblog": "{name} boostte jouw toot",
"notifications.clear": "Meldingen verwijderen",
- "notifications.clear_confirmation": "Weet je zeker dat je al jouw meldingen wilt verwijderen?",
+ "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?",
"notifications.column_settings.alert": "Desktopmeldingen",
"notifications.column_settings.favourite": "Favorieten:",
"notifications.column_settings.follow": "Nieuwe volgers:",
"notifications.column_settings.mention": "Vermeldingen:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
+ "notifications.column_settings.push": "Pushmeldingen",
+ "notifications.column_settings.push_meta": "Dit apparaat",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "In kolom tonen",
"notifications.column_settings.sound": "Geluid afspelen",
@@ -146,12 +147,12 @@
"privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
"privacy.unlisted.short": "Minder openbaar",
"reply_indicator.cancel": "Annuleren",
+ "report.heading": "Rapporteren",
"report.placeholder": "Extra opmerkingen",
"report.submit": "Verzenden",
"report.target": "Rapporteren van",
"search.placeholder": "Zoeken",
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
- "standalone.public_title": "A look inside...",
"status.cannot_reblog": "Deze toot kan niet geboost worden",
"status.delete": "Verwijderen",
"status.favourite": "Favoriet",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 98f59f7740a..8727f61471c 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokkér @{name}",
"account.block_domain": "Skjul alt fra {domain}",
- "account.disclaimer": "Denne brukeren er fra en annen instans. Dette tallet kan være høyere.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Rediger profil",
"account.follow": "Følg",
"account.followers": "Følgere",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Vis {domain}",
"account.unfollow": "Avfølg",
"account.unmute": "Avdemp @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index ca094c18ad6..c39d5733321 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,7 +1,7 @@
{
"account.block": "Blocar @{name}",
"account.block_domain": "Tot amagar del domeni {domain}",
- "account.disclaimer": "Aqueste compte es sus una autra instància. Los nombres pòdon èsser mai grandes.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Modificar lo perfil",
"account.follow": "Sègre",
"account.followers": "Seguidors",
@@ -17,19 +17,20 @@
"account.unblock_domain": "Desblocar {domain}",
"account.unfollow": "Quitar de sègre",
"account.unmute": "Quitar de rescondre @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
- "bundle_column_error.body": "Something went wrong while loading this component.",
- "bundle_column_error.retry": "Try again",
- "bundle_column_error.title": "Network error",
- "bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
- "bundle_modal_error.retry": "Try again",
+ "bundle_column_error.body": "Quicòm a fach meuca pendent lo cargament d’aqueste compausant.",
+ "bundle_column_error.retry": "Tornar ensejar",
+ "bundle_column_error.title": "Error de ret",
+ "bundle_modal_error.close": "Tampar",
+ "bundle_modal_error.message": "Quicòm a fach meuca pendent lo cargament d’aqueste compausant.",
+ "bundle_modal_error.retry": "Tornar ensejar",
"column.blocks": "Personas blocadas",
- "column.community": "Flux d’actualitat public local",
+ "column.community": "Flux public local",
"column.favourites": "Favorits",
"column.follow_requests": "Demandas d’abonament",
"column.home": "Acuèlh",
- "column.mutes": "Personas mesas en silenci",
+ "column.mutes": "Personas en silenci",
"column.notifications": "Notificacions",
"column.public": "Flux public global",
"column_back_button.label": "Tornar",
@@ -55,8 +56,8 @@
"confirmations.domain_block.message": "Sètz segur segur de voler blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.",
"confirmations.mute.confirm": "Metre en silenci",
"confirmations.mute.message": "Sètz segur de voler metre en silenci {name} ?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "confirmations.unfollow.confirm": "Quitar de sègre",
+ "confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?",
"emoji_button.activity": "Activitat",
"emoji_button.flags": "Drapèus",
"emoji_button.food": "Beure e manjar",
@@ -69,7 +70,7 @@
"emoji_button.travel": "Viatges & lòcs",
"empty_column.community": "Lo flux public local es void. Escribètz quicòm per lo garnir !",
"empty_column.hashtag": "I a pas encara de contengut ligat a aqueste hashtag",
- "empty_column.home": "Pel moment segètz pas segun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
+ "empty_column.home": "Pel moment segètz pas degun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
"empty_column.home.inactivity": "Vòstra pagina d’acuèlh es voida. Se sètz estat inactiu per un moment, serà tornada generar per vos dins una estona.",
"empty_column.home.public_timeline": "lo flux public",
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
@@ -111,8 +112,8 @@
"notifications.column_settings.favourite": "Favorits :",
"notifications.column_settings.follow": "Nòus seguidors :",
"notifications.column_settings.mention": "Mencions :",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
+ "notifications.column_settings.push": "Notificacions",
+ "notifications.column_settings.push_meta": "Aqueste periferic",
"notifications.column_settings.reblog": "Partatges :",
"notifications.column_settings.show": "Mostrar dins la colomna",
"notifications.column_settings.sound": "Emetre un son",
@@ -125,7 +126,7 @@
"onboarding.page_one.handle": "Sètz sus {domain}, doncas vòstre identificant complet es {handle}",
"onboarding.page_one.welcome": "Benvengut a Mastodon !",
"onboarding.page_six.admin": "Vòstre administrator d’instància es {admin}.",
- "onboarding.page_six.almost_done": "Gaireben acabat...",
+ "onboarding.page_six.almost_done": "Gaireben acabat…",
"onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.apps_available": "I a d’aplicacions per mobil per iOS, Android e mai.",
"onboarding.page_six.github": "Mastodon es un logicial liure e open-source. Podètz senhalar de bugs, demandar de foncionalitats e contribuir al còdi sus {github}.",
@@ -151,14 +152,14 @@
"report.target": "Senhalar {target}",
"search.placeholder": "Recercar",
"search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
- "standalone.public_title": "A look inside...",
+ "standalone.public_title": "Una ulhada dedins…",
"status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
"status.delete": "Escafar",
"status.favourite": "Apondre als favorits",
"status.load_more": "Cargar mai",
"status.media_hidden": "Mèdia rescondut",
"status.mention": "Mencionar",
- "status.mute_conversation": "Mute conversation",
+ "status.mute_conversation": "Rescondre la conversacion",
"status.open": "Desplegar aqueste estatut",
"status.reblog": "Partejar",
"status.reblogged_by": "{name} a partejat :",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 3489846483d..af069b6d720 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -1,7 +1,7 @@
{
"account.block": "Blokuj @{name}",
"account.block_domain": "Blokuj wszystko z {domain}",
- "account.disclaimer": "Ten użytkownik pochodzi z innej instancji. Ta liczba może być większa.",
+ "account.disclaimer_full": "Poniższe informacje mogą nie odwzorowywać bezbłędnie profilu użytkownika.",
"account.edit_profile": "Edytuj profil",
"account.follow": "Śledź",
"account.followers": "Śledzący",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Odblokuj domenę {domain}",
"account.unfollow": "Przestań śledzić",
"account.unmute": "Cofnij wyciszenie @{name}",
+ "account.view_full_profile": "Wyświetl pełny profil",
"boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem",
"bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.",
"bundle_column_error.retry": "Spróbuj ponownie",
@@ -45,7 +46,7 @@
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Oznacz treści jako wrażliwe",
"compose_form.spoiler": "Ukryj tekst za ostrzeżeniem",
- "compose_form.spoiler_placeholder": "Ostrzeżenie o zawartości",
+ "compose_form.spoiler_placeholder": "Wprowadź swoje ostrzeżenie o zawartości",
"confirmation_modal.cancel": "Anuluj",
"confirmations.block.confirm": "Zablokuj",
"confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 3944e33e9ce..86da7c4e676 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloquear @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index 3944e33e9ce..86da7c4e676 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -1,7 +1,7 @@
{
"account.block": "Bloquear @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index cffc285f456..16af3fe7e7a 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -1,7 +1,7 @@
{
"account.block": "Блокировать",
"account.block_domain": "Блокировать все с {domain}",
- "account.disclaimer": "Это пользователь с другого узла. Число может быть больше.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Изменить профиль",
"account.follow": "Подписаться",
"account.followers": "Подписаны",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Разблокировать {domain}",
"account.unfollow": "Отписаться",
"account.unmute": "Снять глушение",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Нажмите {combo}, чтобы пропустить это в следующий раз",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
@@ -45,7 +46,7 @@
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Отметить как чувствительный контент",
"compose_form.spoiler": "Скрыть текст за предупреждением",
- "compose_form.spoiler_placeholder": "Предупреждение о скрытом тексте",
+ "compose_form.spoiler_placeholder": "Напишите свое предупреждение здесь",
"confirmation_modal.cancel": "Отмена",
"confirmations.block.confirm": "Заблокировать",
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 63bed6d8c1f..be5c0815df8 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -1,7 +1,7 @@
{
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Edit profile",
"account.follow": "Follow",
"account.followers": "Followers",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 5bd308e9524..9d4d5fa17ea 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -1,7 +1,7 @@
{
"account.block": "Engelle @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "Bu kullanıcının hesabı farklı sunucuda bulunduğu için bu sayı daha fazla olabilir.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Profili düzenle",
"account.follow": "Takip et",
"account.followers": "Takipçiler",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "Takipten vazgeç",
"account.unmute": "Sesi aç @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Bir dahaki sefere {combo} tuşuna basabilirsiniz",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index e1611505dec..60a551bb622 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -1,7 +1,7 @@
{
"account.block": "Заблокувати",
"account.block_domain": "Заглушити {domain}",
- "account.disclaimer": "Це користувач з іншої інстанції. Число може бути більше.",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "Налаштування профілю",
"account.follow": "Підписатися",
"account.followers": "Підписники",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Розблокувати {domain}",
"account.unfollow": "Відписатися",
"account.unmute": "Зняти глушення",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 18bf872e593..97f1f5e2758 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,7 +1,7 @@
{
"account.block": "屏蔽 @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "由于这个账户处于另一个服务器实例上,实际数字会比这个更多。",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "修改个人资料",
"account.follow": "关注",
"account.followers": "关注者",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "取消关注",
"account.unmute": "取消 @{name} 的静音",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "如你想在下次路过时显示,请按{combo},",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index a461085c7f8..c65c3d45ccf 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -1,7 +1,7 @@
{
"account.block": "封鎖 @{name}",
"account.block_domain": "Hide everything from {domain}",
- "account.disclaimer": "由於這個用戶在另一個服務站,實際數字會比這個更多。",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "修改個人資料",
"account.follow": "關注",
"account.followers": "關注的人",
@@ -17,6 +17,7 @@
"account.unblock_domain": "Unhide {domain}",
"account.unfollow": "取消關注",
"account.unmute": "取消 @{name} 的靜音",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index d766fb3943c..12e840b1697 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,7 +1,7 @@
{
"account.block": "封鎖 @{name}",
"account.block_domain": "隱藏來自 {domain} 的一切",
- "account.disclaimer": "這使用者來自其他副本,實際數字可能更大。",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.edit_profile": "編輯用戶資訊",
"account.follow": "關注",
"account.followers": "專注者",
@@ -17,6 +17,7 @@
"account.unblock_domain": "不再隱藏 {domain}",
"account.unfollow": "取消關注",
"account.unmute": "不再消音 @{name}",
+ "account.view_full_profile": "View full profile",
"boost_modal.combo": "下次你可以按 {combo} 來跳過",
"bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again",
diff --git a/app/javascript/mastodon/web_push_subscription.js b/app/javascript/mastodon/web_push_subscription.js
index 391d3bcec46..96ac63b52fa 100644
--- a/app/javascript/mastodon/web_push_subscription.js
+++ b/app/javascript/mastodon/web_push_subscription.js
@@ -37,7 +37,7 @@ const unsubscribe = ({ registration, subscription }) =>
const sendSubscriptionToBackend = (subscription) =>
axios.post('/api/web/push_subscriptions', {
- data: subscription,
+ subscription,
}).then(response => response.data);
// Last one checks for payload support: https://web-push-book.gauntface.com/chapter-06/01-non-standards-browsers/#no-payload
diff --git a/app/javascript/styles/about.scss b/app/javascript/styles/about.scss
index 687c12fac89..af1d45a0933 100644
--- a/app/javascript/styles/about.scss
+++ b/app/javascript/styles/about.scss
@@ -120,18 +120,55 @@
}
.information-board {
- margin: 20px 0;
- display: flex;
- justify-content: space-between;
- border-top: 1px solid lighten($ui-base-color, 10%);
- border-bottom: 1px solid lighten($ui-base-color, 10%);
- padding-right: 14px;
+ background: darken($ui-base-color, 4%);
+ padding: 40px 0;
+
+ .panel {
+ position: absolute;
+ width: 280px;
+ box-sizing: border-box;
+ background: darken($ui-base-color, 8%);
+ padding: 20px;
+ padding-top: 10px;
+ border-radius: 4px 4px 0 0;
+ right: 0;
+ bottom: -40px;
+
+ .panel-header {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ font-weight: 500;
+ color: $ui-base-lighter-color;
+ padding-bottom: 5px;
+ margin-bottom: 15px;
+ border-bottom: 1px solid lighten($ui-base-color, 4%);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+
+ span {
+ font-weight: 400;
+ color: lighten($ui-base-color, 34%);
+ }
+ }
+ }
+
+ .container {
+ position: relative;
+ padding-right: 280px + 15px;
+ }
+
+ .information-board-sections {
+ display: flex;
+ justify-content: space-between;
+ }
.section {
flex: 1 0 0;
- padding: 14px;
- text-align: right;
font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
+ text-align: right;
+ padding: 0 15px;
span,
strong {
@@ -143,7 +180,6 @@
&:last-child {
color: $ui-secondary-color;
- font-size: 14px;
}
}
@@ -201,100 +237,6 @@
}
}
-.contact-email {
- text-align: center;
- margin: 40px 0;
-
- strong {
- display: block;
- color: $primary-text-color;
- word-break: break-word;
- }
-}
-
-.sidebar-layout {
- display: flex;
-
- .main {
- flex: 1 1 auto;
- padding: 14px 0;
-
- .panel {
- padding-right: 14px;
- }
- }
-
- .sidebar {
- border-left: 1px solid lighten($ui-base-color, 10%);
- width: 200px;
- flex: 0 0 auto;
- }
-
- .panel {
- .panel-header {
- background: lighten($ui-base-color, 10%);
- padding: 7px 14px;
- text-transform: uppercase;
- font-size: 12px;
- font-weight: 500;
- }
-
- .panel-body {
- padding: 14px;
- }
-
- .panel-list {
- ul {
- list-style: none;
- margin: 0;
-
- li {
- margin: 0;
- font-family: inherit;
- font-size: 13px;
- line-height: 18px;
-
- a {
- display: block;
- padding: 7px 14px;
- color: rgba($primary-text-color, 0.7);
- text-decoration: none;
- transition: all 200ms linear;
-
- i.fa {
- margin-right: 5px;
- }
-
- &:hover {
- color: $primary-text-color;
- background-color: darken($ui-base-color, 5%);
- transition: all 100ms linear;
- }
-
- &.selected {
- color: $primary-text-color;
- background-color: $ui-highlight-color;
-
- &:hover {
- background-color: lighten($ui-highlight-color, 5%);
- }
- }
- }
- }
- }
- }
- }
-
- @media screen and (max-width: 625px) {
- flex-direction: column;
-
- .sidebar {
- border: 1px solid lighten($ui-base-color, 10%);
- width: auto;
- }
- }
-}
-
.features-list__row {
display: flex;
padding: 10px 0;
@@ -320,7 +262,7 @@
.text {
font-size: 16px;
line-height: 30px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
h6 {
font-weight: 500;
@@ -336,6 +278,15 @@
background: linear-gradient(150deg, lighten($ui-base-color, 8%), $ui-base-color);
position: relative;
+ &.compact {
+ background: $ui-base-color;
+ padding-bottom: 15px;
+
+ .hero .heading {
+ padding-bottom: 30px;
+ }
+ }
+
.mascot-container {
max-width: 800px;
margin: 0 auto;
@@ -388,10 +339,9 @@
position: absolute;
transition: all 0.1s linear;
animation-name: floating;
- animation-duration: 1.7s;
animation-iteration-count: infinite;
animation-direction: alternate;
- animation-timing-function: linear;
+ animation-timing-function: ease-in-out;
z-index: 2;
}
@@ -400,7 +350,8 @@
height: 170px;
right: -120px;
bottom: 0;
- background-image: url('data:image/svg+xml;utf8,');
+ animation-duration: 3s;
+ background-image: url('data:image/svg+xml;utf8,');
}
.float-2 {
@@ -408,8 +359,9 @@
height: 100px;
right: 210px;
bottom: 0;
+ animation-duration: 3.5s;
animation-delay: 0.2s;
- background-image: url('data:image/svg+xml;utf8,');
+ background-image: url('data:image/svg+xml;utf8,');
}
.float-3 {
@@ -417,8 +369,9 @@
height: 140px;
right: 110px;
top: -30px;
- animation-delay: 0.1s;
- background-image: url('data:image/svg+xml;utf8,');
+ animation-duration: 4s;
+ animation-delay: 0.5s;
+ background-image: url('data:image/svg+xml;utf8,');
}
}
@@ -500,13 +453,15 @@
.brand {
a {
padding-left: 0;
+ padding-right: 0;
color: $white;
}
img {
- width: 32px;
height: 32px;
- margin-right: 10px;
+ position: relative;
+ top: 4px;
+ left: -10px;
}
}
}
@@ -530,6 +485,42 @@
padding: 50px 0;
}
+ .extended-description {
+ padding: 50px 0;
+
+ ul,
+ ol {
+ list-style: inherit;
+ margin-left: 20px;
+
+ &[type='a'] {
+ list-style-type: lower-alpha;
+ }
+
+ &[type='i'] {
+ list-style-type: lower-roman;
+ }
+ }
+
+ li > ol,
+ li > ul {
+ margin-top: 20px;
+ }
+
+ p,
+ li {
+ font: 16px/28px 'mastodon-font-sans-serif', sans-serif;
+ font-weight: 400;
+ margin-bottom: 12px;
+ color: $ui-base-lighter-color;
+
+ a {
+ color: $ui-highlight-color;
+ text-decoration: underline;
+ }
+ }
+ }
+
h3 {
font-family: 'mastodon-font-display', sans-serif;
font-size: 16px;
@@ -542,7 +533,7 @@
p {
font-size: 16px;
line-height: 30px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
.features {
@@ -584,6 +575,11 @@
line-height: inherit;
font-weight: inherit;
color: $primary-text-color;
+ margin-bottom: 20px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
a {
color: $ui-secondary-color;
@@ -629,14 +625,14 @@
display: block;
font-size: 18px;
font-weight: 400;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
}
.footer-links {
padding-bottom: 50px;
text-align: right;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
p {
font-size: 14px;
@@ -653,6 +649,29 @@
padding: 0 20px;
}
+ .information-board {
+ padding-bottom: 20px;
+ }
+
+ .information-board .container {
+ padding-right: 20px;
+
+ .panel {
+ position: static;
+ margin-top: 30px;
+ width: 100%;
+ border-radius: 4px;
+
+ .panel-header {
+ text-align: center;
+ }
+ }
+ }
+
+ .information-board .section {
+ text-align: center;
+ }
+
.header-wrapper .mascot {
left: 20px;
}
@@ -700,10 +719,25 @@
text-align: center;
}
+ .nav {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-around;
+ }
+
+ .links a {
+ padding: 12px 8px;
+ }
+
.heading h1 {
padding: 30px 0;
}
+ .links .brand img {
+ left: 0;
+ top: 0;
+ }
+
.hero {
.simple_form,
.closed-registrations-message {
diff --git a/app/javascript/styles/boost.scss b/app/javascript/styles/boost.scss
index e44df2ea45c..bcd97359aff 100644
--- a/app/javascript/styles/boost.scss
+++ b/app/javascript/styles/boost.scss
@@ -6,7 +6,7 @@
}
button.icon-button i.fa-retweet {
- background-image: url("data:image/svg+xml;utf8,");
+ background-image: url("data:image/svg+xml;utf8,");
&:hover {
background-image: url("data:image/svg+xml;utf8,");
diff --git a/app/javascript/styles/components.scss b/app/javascript/styles/components.scss
index 43df263d5ea..9e5d34f539c 100644
--- a/app/javascript/styles/components.scss
+++ b/app/javascript/styles/components.scss
@@ -107,7 +107,7 @@
.icon-button {
display: inline-block;
padding: 0;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
border: none;
background: transparent;
cursor: pointer;
@@ -145,7 +145,7 @@
&:hover,
&:active,
&:focus {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
&.active {
@@ -185,7 +185,7 @@
&:hover,
&:active,
&:focus {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
transition: color 200ms ease-out;
}
@@ -807,7 +807,7 @@
margin-left: auto;
padding-left: 18px;
width: 120px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
font-size: 14px;
text-align: right;
white-space: nowrap;
@@ -816,7 +816,7 @@
}
.status__display-name {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
.status__info .status__display-name {
@@ -865,13 +865,13 @@
.status__prepend {
margin: -10px 0 10px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
padding: 8px 0 2px;
font-size: 14px;
position: relative;
.status__display-name strong {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
}
@@ -963,7 +963,7 @@
.detailed-status__meta {
margin-top: 15px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
font-size: 14px;
line-height: 18px;
}
@@ -1096,6 +1096,28 @@
}
}
+.account__disclaimer {
+ padding: 10px;
+ border-top: 1px solid lighten($ui-base-color, 8%);
+ color: $ui-base-lighter-color;
+
+ strong {
+ font-weight: 500;
+ }
+
+ a {
+ font-weight: 500;
+ color: inherit;
+ text-decoration: underline;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: none;
+ }
+ }
+}
+
.account__header__content {
color: $ui-primary-color;
font-size: 14px;
@@ -1238,7 +1260,7 @@
}
abbr {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
}
@@ -1332,11 +1354,11 @@
.muted {
.status__content p,
.status__content a {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
.status__display-name strong {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
.status__avatar, .emojione {
@@ -1344,7 +1366,7 @@
}
a.status__content__spoiler-link {
- background: lighten($ui-base-color, 26%);
+ background: $ui-base-lighter-color;
color: lighten($ui-base-color, 4%);
&:hover {
@@ -1560,7 +1582,7 @@
.static-content {
padding: 10px;
padding-top: 20px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
h1 {
font-size: 16px;
@@ -2041,7 +2063,7 @@
.column-subheading {
background: $ui-base-color;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
padding: 8px 20px;
font-size: 12px;
font-weight: 500;
@@ -2161,7 +2183,7 @@
.getting-started__wrapper {
position: relative;
- flex: 0 0 auto;
+ overflow-y: auto;
}
.getting-started__footer {
@@ -2180,7 +2202,7 @@
}
a {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
}
}
@@ -2244,7 +2266,7 @@ button.icon-button.active i.fa-retweet {
font-size: 14px;
border: 1px solid lighten($ui-base-color, 8%);
border-radius: 4px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
margin-top: 14px;
text-decoration: none;
overflow: hidden;
@@ -2339,7 +2361,7 @@ button.icon-button.active i.fa-retweet {
.load-more {
display: block;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
background-color: transparent;
border: 0;
font-size: inherit;
@@ -2529,11 +2551,72 @@ button.icon-button.active i.fa-retweet {
}
.loading-indicator {
- color: $ui-secondary-color;
- font-size: 16px;
- font-weight: 500;
- padding-top: 120px;
- text-align: center;
+ color: lighten($ui-base-color, 26%);
+ font-size: 12px;
+ font-weight: 400;
+ text-transform: uppercase;
+ overflow: visible;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+
+ span {
+ display: block;
+ float: left;
+ margin-left: 50%;
+ transform: translateX(-50%);
+ margin: 82px 0 0 50%;
+ white-space: nowrap;
+ animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
+ }
+}
+
+.loading-indicator__figure {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 0;
+ height: 0;
+ box-sizing: border-box;
+ border: 0 solid lighten($ui-base-color, 26%);
+ border-radius: 50%;
+ animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
+}
+
+@keyframes loader-figure {
+ 0% {
+ width: 0;
+ height: 0;
+ background-color: lighten($ui-base-color, 26%);
+ }
+
+ 29% {
+ background-color: lighten($ui-base-color, 26%);
+ }
+
+ 30% {
+ width: 42px;
+ height: 42px;
+ background-color: transparent;
+ border-width: 21px;
+ opacity: 1;
+ }
+
+ 100% {
+ width: 42px;
+ height: 42px;
+ border-width: 0;
+ opacity: 0;
+ background-color: transparent;
+ }
+}
+
+@keyframes loader-label {
+ 0% { opacity: 0.25; }
+ 30% { opacity: 1; }
+ 100% { opacity: 0.25; }
}
.video-error-cover {
@@ -2987,13 +3070,13 @@ button.icon-button.active i.fa-retweet {
color: $ui-secondary-color;
font-size: 18px;
font-weight: 500;
- border: 2px dashed lighten($ui-base-color, 26%);
+ border: 2px dashed $ui-base-lighter-color;
border-radius: 4px;
}
.upload-progress {
padding: 10px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
overflow: hidden;
display: flex;
@@ -3018,7 +3101,7 @@ button.icon-button.active i.fa-retweet {
width: 100%;
height: 6px;
border-radius: 6px;
- background: lighten($ui-base-color, 26%);
+ background: $ui-base-lighter-color;
position: relative;
margin-top: 5px;
}
@@ -3303,7 +3386,7 @@ button.icon-button.active i.fa-retweet {
}
.search-results__header {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
background: lighten($ui-base-color, 2%);
border-bottom: 1px solid darken($ui-base-color, 4%);
padding: 15px 10px;
@@ -3399,6 +3482,10 @@ button.icon-button.active i.fa-retweet {
}
}
+.media-modal__content {
+ background: $base-overlay-background;
+}
+
.media-modal__close {
position: absolute;
right: 4px;
@@ -3897,7 +3984,7 @@ button.icon-button.active i.fa-retweet {
.attachment-list__icon {
flex: 0 0 auto;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
padding: 8px 18px;
cursor: default;
border-right: 1px solid lighten($ui-base-color, 8%);
@@ -3927,7 +4014,7 @@ button.icon-button.active i.fa-retweet {
a {
text-decoration: none;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
font-weight: 500;
&:hover {
@@ -4124,7 +4211,7 @@ button.icon-button.active i.fa-retweet {
}
.account-section-headline {
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
background: lighten($ui-base-color, 2%);
border-bottom: 1px solid lighten($ui-base-color, 4%);
padding: 15px 10px;
@@ -4160,10 +4247,24 @@ button.icon-button.active i.fa-retweet {
noscript {
text-align: center;
- div {
- font-size: 20px;
- margin: 20px 0;
+ img {
+ width: 200px;
+ opacity: 0.5;
+ animation: flicker 4s infinite;
}
+
+ div {
+ font-size: 14px;
+ margin: 30px auto;
+ color: $ui-secondary-color;
+ max-width: 400px;
+ }
+}
+
+@keyframes flicker {
+ 0% { opacity: 1; }
+ 30% { opacity: 0.75; }
+ 100% { opacity: 1; }
}
@media screen and (max-width: 1024px) and (max-height: 400px) {
diff --git a/app/javascript/styles/containers.scss b/app/javascript/styles/containers.scss
index 44d4c11187c..7dcf2c0062d 100644
--- a/app/javascript/styles/containers.scss
+++ b/app/javascript/styles/containers.scss
@@ -23,8 +23,7 @@
align-items: center;
img {
- width: 32px;
- height: 32px;
+ height: 42px;
margin-right: 10px;
}
diff --git a/app/javascript/styles/forms.scss b/app/javascript/styles/forms.scss
index c467aa7db33..cffb6f19727 100644
--- a/app/javascript/styles/forms.scss
+++ b/app/javascript/styles/forms.scss
@@ -32,7 +32,7 @@ code {
line-height: 18px;
margin-top: 15px;
margin-bottom: 0;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
a {
color: $ui-primary-color;
@@ -308,7 +308,7 @@ code {
padding: 7px 4px;
padding-bottom: 9px;
font-size: 16px;
- color: lighten($ui-base-color, 26%);
+ color: $ui-base-lighter-color;
font-family: inherit;
pointer-events: none;
cursor: default;
diff --git a/app/javascript/styles/stream_entries.scss b/app/javascript/styles/stream_entries.scss
index a9111d7c9bb..baacb491303 100644
--- a/app/javascript/styles/stream_entries.scss
+++ b/app/javascript/styles/stream_entries.scss
@@ -36,6 +36,18 @@
}
}
+ &.with-header {
+ .entry {
+ &:first-child {
+ &,
+ .detailed-status.light,
+ .status.light {
+ border-radius: 0;
+ }
+ }
+ }
+ }
+
.status.light {
padding: 14px 14px 14px (48px + 14px * 2);
position: relative;
@@ -247,7 +259,9 @@
border: medium none;
display: block;
flex: 1 1 auto;
+ width: 100%;
height: 100%;
+ overflow: hidden;
margin-right: 2px;
&:last-child {
diff --git a/app/javascript/styles/variables.scss b/app/javascript/styles/variables.scss
index bf8c12bc048..090706ff54c 100644
--- a/app/javascript/styles/variables.scss
+++ b/app/javascript/styles/variables.scss
@@ -22,10 +22,11 @@ $valid-value-color: $success-green !default;
$error-value-color: $error-red !default;
// Tell UI to use selected colors
-$ui-base-color: $classic-base-color !default; // Darkest
-$ui-primary-color: $classic-primary-color !default; // Lighter
-$ui-secondary-color: $classic-secondary-color !default; // Lightest
-$ui-highlight-color: $classic-highlight-color !default; // Vibrant
+$ui-base-color: $classic-base-color !default; // Darkest
+$ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
+$ui-primary-color: $classic-primary-color !default; // Lighter
+$ui-secondary-color: $classic-secondary-color !default; // Lightest
+$ui-highlight-color: $classic-highlight-color !default; // Vibrant
// Avatar border size (8% default, 100% for rounded avatars)
$ui-avatar-border-size: 8%;
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index f26e8183ffc..aea8919af83 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -12,7 +12,7 @@
#
class DomainBlock < ApplicationRecord
- enum severity: [:silence, :suspend]
+ enum severity: [:silence, :suspend, :noop]
attr_accessor :retroactive
diff --git a/app/models/user.rb b/app/models/user.rb
index 25dc2586434..96a2d09b778 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -53,6 +53,7 @@ class User < ApplicationRecord
scope :admins, -> { where(admin: true) }
scope :confirmed, -> { where.not(confirmed_at: nil) }
scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) }
+ scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended: false }) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
scope :with_recent_ip_address, ->(value) { where(arel_table[:current_sign_in_ip].eq(value).or(arel_table[:last_sign_in_ip].eq(value))) }
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index e8b3a870d37..a6b3c4cdbfc 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -11,16 +11,16 @@ class BlockDomainService < BaseService
private
def process_domain_block
+ clear_media! if domain_block.reject_media?
if domain_block.silence?
silence_accounts!
- else
+ elsif domain_block.suspend?
suspend_accounts!
end
end
def silence_accounts!
blocked_domain_accounts.in_batches.update_all(silenced: true)
- clear_media! if domain_block.reject_media?
end
def clear_media!
diff --git a/app/services/unblock_domain_service.rb b/app/services/unblock_domain_service.rb
index 169d2f78190..946b6d465c3 100644
--- a/app/services/unblock_domain_service.rb
+++ b/app/services/unblock_domain_service.rb
@@ -10,7 +10,7 @@ class UnblockDomainService < BaseService
end
def process_retroactive_updates
- blocked_accounts.in_batches.update_all(update_options)
+ blocked_accounts.in_batches.update_all(update_options) unless domain_block.noop?
end
def blocked_accounts
diff --git a/app/views/about/_contact.html.haml b/app/views/about/_contact.html.haml
index 292a58575ae..82263996222 100644
--- a/app/views/about/_contact.html.haml
+++ b/app/views/about/_contact.html.haml
@@ -1,5 +1,8 @@
.panel
- .panel-header= t 'about.contact'
+ .panel-header
+ = succeed ':' do
+ = t 'about.contact'
+ %span{ title: contact.site_contact_email.presence }= contact.site_contact_email.presence
.panel-body
- if contact.contact_account
.owner
@@ -8,8 +11,9 @@
= link_to TagManager.instance.url_for(contact.contact_account) do
%span.display_name.emojify= display_name(contact.contact_account)
%span.username @#{contact.contact_account.acct}
-
- - unless contact.site_contact_email.blank?
- .contact-email
- = t 'about.business_email'
- %strong= contact.site_contact_email
+ - else
+ .owner
+ .avatar= image_tag full_asset_url('avatars/original/missing.png', skip_pipeline: true)
+ .name
+ %span.display_name= t 'about.contact_missing'
+ %span.username= t 'about.contact_unavailable'
diff --git a/app/views/about/_links.html.haml b/app/views/about/_links.html.haml
deleted file mode 100644
index d7fe317e61d..00000000000
--- a/app/views/about/_links.html.haml
+++ /dev/null
@@ -1,12 +0,0 @@
-.panel
- .panel-header= t 'about.links'
- .panel-list
- %ul
- - if user_signed_in?
- %li= link_to t('about.get_started'), root_path
- - else
- - if instance.open_registrations
- %li= link_to t('about.get_started'), new_user_registration_path
- %li= link_to t('auth.login'), new_user_session_path
- %li= link_to t('about.terms'), terms_path
- %li= link_to t('about.source_code'), 'https://github.com/chronister/mastodon'
diff --git a/app/views/about/_version.html.haml b/app/views/about/_version.html.haml
deleted file mode 100644
index 3ed35da51da..00000000000
--- a/app/views/about/_version.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-.panel
- .panel-header= t 'about.version'
- .panel-body
- - if @instance_presenter.commit_hash == ""
- %strong= version.version_number
- - else
- %strong= version.version_number
- %strong= "#{@instance_presenter.commit_hash}"
-
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index cce74956101..11315fefaa9 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -1,16 +1,44 @@
- content_for :page_title do
= site_hostname
-.wrapper.thicc
- .sidebar-layout
- .main
- .panel
- %h2= site_hostname
+- content_for :header_tags do
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- - unless @instance_presenter.site_description.blank?
- %p!= @instance_presenter.site_description
+ %meta{ property: 'og:site_name', content: site_title }/
+ %meta{ property: 'og:url', content: about_url }/
+ %meta{ property: 'og:type', content: 'website' }/
+ %meta{ property: 'og:title', content: site_hostname }/
+ %meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) }/
+ %meta{ property: 'og:image', content: asset_pack_path('mastodon_small.jpg', protocol: :request) }/
+ %meta{ property: 'og:image:width', content: '400' }/
+ %meta{ property: 'og:image:height', content: '400' }/
+ %meta{ property: 'twitter:card', content: 'summary' }/
- .information-board
+.landing-page
+ .header-wrapper.compact
+ .header
+ .container.links
+ .brand
+ = link_to root_url do
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
+
+ %ul.nav
+ %li
+ - if user_signed_in?
+ = link_to t('settings.back'), root_url, class: 'webapp-btn'
+ - else
+ = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
+ %li= link_to t('about.about_this'), about_more_path
+ %li= link_to t('about.other_instances'), 'https://joinmastodon.org/'
+
+ .container.hero
+ .heading
+ %h3= t('about.description_headline', domain: site_hostname)
+ %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
+
+ .information-board
+ .container
+ .information-board-sections
.section
%span= t 'about.user_count_before'
%strong= number_with_delimiter @instance_presenter.user_count
@@ -23,11 +51,14 @@
%span= t 'about.domain_count_before'
%strong= number_with_delimiter @instance_presenter.domain_count
%span= t 'about.domain_count_after'
-
- - unless @instance_presenter.site_extended_description.blank?
- .panel!= @instance_presenter.site_extended_description
-
- .sidebar
= render 'contact', contact: @instance_presenter
- = render 'links', instance: @instance_presenter
- = render 'version', version: @instance_presenter
+
+ .extended-description
+ .container
+ = @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
+
+ .footer-links
+ .container
+ %p
+ = link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
+ = " (#{@instance_presenter.version_number})"
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 999d1e37b66..a3c8e4a84a2 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -24,8 +24,7 @@
.container.links
.brand
= link_to root_url do
- = image_tag asset_pack_path('logo.svg'), alt: '', role: 'presentation'
- Mastodon
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
%ul.nav
%li
diff --git a/app/views/about/terms.html.haml b/app/views/about/terms.html.haml
index 58064f0bed9..7004cb0b13f 100644
--- a/app/views/about/terms.html.haml
+++ b/app/views/about/terms.html.haml
@@ -1,8 +1,23 @@
- content_for :page_title do
= t('terms.title', instance: site_hostname)
-.wrapper
- - if @instance_presenter.site_terms.present?
- = raw @instance_presenter.site_terms
- - else
- = t('terms.body_html')
+.landing-page
+ .header-wrapper.compact
+ .header
+ .container.links
+ .brand
+ = link_to root_url do
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
+
+ %ul.nav
+ %li
+ - if user_signed_in?
+ = link_to t('settings.back'), root_url, class: 'webapp-btn'
+ - else
+ = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
+ %li= link_to t('about.about_this'), about_more_path
+ %li= link_to t('about.other_instances'), 'https://joinmastodon.org/'
+
+ .extended-description
+ .container
+ = @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index 7ed634e5d28..150c1479116 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -23,9 +23,9 @@
.accounts-grid
= render 'nothing_here'
- else
- .activity-stream
+ .activity-stream.with-header
= render partial: 'stream_entries/status', collection: @statuses, as: :status
- .pagination
- - if @statuses.size == 20
+ - if @statuses.size == 20
+ .pagination
= link_to safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), short_account_url(@account, max_id: @statuses.last.id), class: 'next', rel: 'next'
diff --git a/app/views/admin/domain_blocks/show.html.haml b/app/views/admin/domain_blocks/show.html.haml
index 70dfef9b2d5..ea1929d44f7 100644
--- a/app/views/admin/domain_blocks/show.html.haml
+++ b/app/views/admin/domain_blocks/show.html.haml
@@ -3,13 +3,18 @@
= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
- = f.input :retroactive,
- as: :boolean,
- wrapper: :with_label,
- label: t(".retroactive.#{@domain_block.severity}"),
- hint: t(:affected_accounts,
- scope: [:admin, :domain_blocks, :show],
- count: @domain_block.accounts_count)
+ - if (@domain_block.noop?)
+ = f.input :retroactive,
+ as: :hidden,
+ input_html: { :value => "0" }
+ - else
+ = f.input :retroactive,
+ as: :boolean,
+ wrapper: :with_label,
+ label: t(".retroactive.#{@domain_block.severity}"),
+ hint: t(:affected_accounts,
+ scope: [:admin, :domain_blocks, :show],
+ count: @domain_block.accounts_count)
.actions
= f.button :button, t('.undo'), type: :submit
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index f0f7bd619cc..1ed5c1ae063 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -7,6 +7,7 @@
.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
%noscript
- = image_tag asset_pack_path('logo.png')
+ = image_tag asset_pack_path('logo.svg'), alt: 'Mastodon'
+
%div
= t('errors.noscript')
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index 59d95a0c684..c98d85f7bfe 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -6,7 +6,7 @@
.sidebar-wrapper
.sidebar
= link_to root_path do
- = image_tag asset_pack_path('logo.png'), class: 'logo'
+ = image_tag asset_pack_path('logo.svg'), class: 'logo', alt: 'Mastodon'
= render_navigation
.content-wrapper
diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml
index b4f1bd0f35a..d8ac733f913 100644
--- a/app/views/layouts/auth.html.haml
+++ b/app/views/layouts/auth.html.haml
@@ -6,8 +6,7 @@
.logo-container
%h1
= link_to root_path do
- = image_tag asset_pack_path('logo.svg')
- Mastodon
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
.form-container
= render 'flashes'
diff --git a/app/views/manifests/show.json.rabl b/app/views/manifests/show.json.rabl
index 0aa1728e76c..ee0a703249a 100644
--- a/app/views/manifests/show.json.rabl
+++ b/app/views/manifests/show.json.rabl
@@ -2,7 +2,7 @@ object false
node(:name) { Setting.site_title }
node(:short_name) { Setting.site_title }
-node(:description) { strip_tags(Setting.site_description.presence || I18n.t('about.about_mastodon')) }
+node(:description) { strip_tags(Setting.site_description.presence || I18n.t('about.about_mastodon_html')) }
node(:icons) { [{ src: '/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }] }
node(:theme_color) { '#282c37' }
node(:background_color) { '#d9e1e8' }
diff --git a/app/views/well_known/webfinger/show.json.rabl b/app/views/well_known/webfinger/show.json.rabl
index af11cd20700..762d1860d73 100644
--- a/app/views/well_known/webfinger/show.json.rabl
+++ b/app/views/well_known/webfinger/show.json.rabl
@@ -8,7 +8,7 @@ end
node(:links) do
[
- { rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: account_url(@account) },
+ { rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: short_account_url(@account) },
{ rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom') },
{ rel: 'self', type: 'application/activity+json', href: account_url(@account) },
{ rel: 'salmon', href: api_salmon_url(@account.id) },
diff --git a/app/views/well_known/webfinger/show.xml.ruby b/app/views/well_known/webfinger/show.xml.ruby
index 844742d68a0..b0158b8bd1d 100644
--- a/app/views/well_known/webfinger/show.xml.ruby
+++ b/app/views/well_known/webfinger/show.xml.ruby
@@ -3,7 +3,7 @@ Nokogiri::XML::Builder.new do |xml|
xml.Subject @canonical_account_uri
xml.Alias short_account_url(@account)
xml.Alias account_url(@account)
- xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: TagManager.instance.url_for(@account))
+ xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: short_account_url(@account))
xml.Link(rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom'))
xml.Link(rel: 'self', type: 'application/activity+json', href: account_url(@account))
xml.Link(rel: 'salmon', href: api_salmon_url(@account.id))
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
new file mode 100644
index 00000000000..a8f8fbd83df
--- /dev/null
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+require 'sidekiq-scheduler'
+
+class Scheduler::UserCleanupScheduler
+ include Sidekiq::Worker
+
+ def perform
+ User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
+ Account.where(id: batch.map(&:account_id)).delete_all
+ User.where(id: batch.map(&:id)).delete_all
+ end
+ end
+end
diff --git a/config/deploy.rb b/config/deploy.rb
index 0f35114858c..33b88b109cb 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-lock '3.8.1'
+lock '3.8.2'
set :repo_url, ENV.fetch('REPO', 'https://github.com/tootsuite/mastodon.git')
set :branch, ENV.fetch('BRANCH', 'master')
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
new file mode 100644
index 00000000000..b39c8cd780b
--- /dev/null
+++ b/config/locales/activerecord.nl.yml
@@ -0,0 +1,12 @@
+nl:
+ activerecord:
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: alleen letters, nummers en underscores
+ status:
+ attributes:
+ reblog:
+ taken: van toot bestaat al
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index d395dc9c371..ec051591aba 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -1,21 +1,17 @@
---
ar:
about:
- about_mastodon: ماستدون شبكة إجتماعية حرة و مفتوحة المصدر. هو بديل لامركزي لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في الشبكات الاجتماعية بكل شفافية.
+ about_mastodon_html: ماستدون شبكة إجتماعية حرة و مفتوحة المصدر. هو بديل لامركزي لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في الشبكات الاجتماعية بكل شفافية.
about_this: عن مثيل الخادوم هذا
- business_email: 'البريد الإلكتروني المهني :'
closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا.
contact: للتواصل معنا
description_headline: ما هو %{domain}?
domain_count_after: خوادم أخرى
domain_count_before: متصل بـ
- get_started: إبدأ الآن
- links: الروابط
other_instances: خوادم أخرى
source_code: الشفرة المصدرية
status_count_after: منشورا
status_count_before: نشروا
- terms: شروط الاستعمال
user_count_after: مستخدم
user_count_before: يستضيف
accounts:
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 042d609b033..65ff5c02515 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -1,21 +1,17 @@
---
bg:
about:
- about_mastodon: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа.
+ about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа.
about_this: За тази инстанция
- business_email: 'Служебен e-mail:'
closed_registrations: В момента регистрациите за тази инстанция са затворени.
contact: За контакти
description_headline: Какво е %{domain}?
domain_count_after: други инстанции
domain_count_before: Свързани към
- get_started: Първи стъпки
- links: Връзки
other_instances: Други инстанции
source_code: Програмен код
status_count_after: публикации
status_count_before: Написали
- terms: Условия
user_count_after: потребители
user_count_before: Дом на
accounts:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 0ba893a122a..ce4831ac2b4 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -1,24 +1,19 @@
---
ca:
about:
- about_mastodon: Mastodon és un servidor de xarxa social lliure i de codi obert. Una alternativa descentralitzada a plataformes comercials, que evita el risc que una única companyia monopolitzi la teva comunicació. Qualsevol pot executar Mastodon i participar sense problemes en la xarxa social.
+ about_mastodon_html: Mastodon és un servidor de xarxa social lliure i de codi obert. Una alternativa descentralitzada a plataformes comercials, que evita el risc que una única companyia monopolitzi la teva comunicació. Qualsevol pot executar Mastodon i participar sense problemes en la xarxa social.
about_this: Sobre aquesta instància
- business_email: 'Adreça de contacte:'
closed_registrations: Els registres estan actualment tancats en aquesta instància.
contact: Contacte
description_headline: Què es %{domain}?
domain_count_after: altres instàncies
domain_count_before: Connectat a
- get_started: Començar
- links: Vincles
other_instances: Altres instàncies
source_code: Codi font
status_count_after: estats
status_count_before: Que han escrit
- terms: Termes
user_count_after: usuaris registrats
user_count_before: Tenim
- version: Versió
accounts:
follow: Seguir
followers: Seguidors
diff --git a/config/locales/de.yml b/config/locales/de.yml
index b084aca3159..04d3fd0b899 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1,24 +1,19 @@
---
de:
about:
- about_mastodon: Mastodon ist ein freier, quelloffener sozialer Netzwerkserver. Als dezentralisierte Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am sozialen Netzwerk teilnehmen.
+ about_mastodon_html: Mastodon ist ein freier, quelloffener sozialer Netzwerkserver. Als dezentralisierte Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am sozialen Netzwerk teilnehmen.
about_this: Über diese Instanz
- business_email: 'Geschäftliche E-Mail:'
closed_registrations: Die Registrierung ist auf dieser Instanz momentan geschlossen.
contact: Kontakt
description_headline: Was ist %{domain}?
domain_count_after: andere Instanzen
domain_count_before: Verbunden mit
- get_started: Erste Schritte
- links: Links
other_instances: Andere Instanzen
source_code: Quellcode
status_count_after: Beiträge verfassten
status_count_before: die
- terms: AGB
user_count_after: Benutzer
user_count_before: Heimat für
- version: Version
accounts:
follow: Folgen
followers: Folgende
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index 1739feacd29..f8f59e6608d 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -2,7 +2,7 @@
nl:
devise:
confirmations:
- confirmed: Je account is bevestigd.
+ confirmed: Jouw account is bevestigd.
send_instructions: Je ontvangt via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw account kunt bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
failure:
@@ -10,8 +10,8 @@ nl:
inactive: Jouw account is nog niet geactiveerd.
invalid: Ongeldig e-mailadres of wachtwoord.
invalid_token: Ongeldige bevestigingscode.
- last_attempt: Je hebt nog één poging over voordat jouw account geblokkeerd wordt.
- locked: Jouw account is geblokkeerd.
+ last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
+ locked: Jouw account is opgeschort.
not_found_in_database: Ongeldig e-mailadres of wachtwoord.
timeout: Jouw sessie is verlopen, log opnieuw in.
unauthenticated: Je dient in te loggen of te registreren.
@@ -24,21 +24,21 @@ nl:
reset_password_instructions:
subject: 'Mastodon: Wachtwoord opnieuw instellen'
unlock_instructions:
- subject: 'Mastodon: Instructies om account te deblokkeren'
+ subject: 'Mastodon: Instructies om opschorten account ongedaan te maken'
omniauth_callbacks:
failure: Kon je niet aanmelden met jouw %{kind} account, omdat "%{reason}".
success: Successvol aangemeld met jouw %{kind} account.
passwords:
no_token: Je kunt deze pagina niet benaderen zonder dat je een e-mail om je wachtwoord opnieuw in te stellen hebt ontvangen.
send_instructions: Je ontvangt via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
- send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
+ send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw wachtwoord opnieuw kunt instellen. Kijk tussen je spam wanneer niks werd ontvangen.
updated: Jouw wachtwoord is gewijzigd. Je bent nu ingelogd.
updated_not_active: Jouw wachtwoord is gewijzigd.
registrations:
destroyed: Jouw account is verwijderd. Wellicht tot ziens!
signed_up: Je bent geregistreerd.
signed_up_but_inactive: Je bent geregistreerd. Je kon alleen niet automatisch ingelogd worden omdat jouw account nog niet geactiveerd is.
- signed_up_but_locked: Je bent ingeschreven. Je kon alleen niet automatisch ingelogd worden omdat jouw account geblokkeerd is.
+ signed_up_but_locked: Je bent ingeschreven. Je kon alleen niet automatisch ingelogd worden omdat jouw account is opgeschort.
signed_up_but_unconfirmed: Je ontvangt via e-mail instructies hoe je jouw account kunt activeren. Kijk tussen je spam wanneer niks werd ontvangen.
update_needs_confirmation: Je hebt je e-mailadres succesvol gewijzigd, maar we moeten je nieuwe mailadres nog bevestigen. Controleer jouw e-mail en klik op de link in de mail om jouw e-mailadres te bevestigen. Kijk tussen je spam wanneer niks werd ontvangen.
updated: Jouw accountgegevens zijn opgeslagen.
@@ -46,16 +46,16 @@ nl:
signed_in: Je bent succesvol ingelogd.
signed_out: Je bent succesvol uitgelogd.
unlocks:
- send_instructions: Je ontvangt via e-mail instructies hoe je jouw account kunt deblokkeren. Kijk tussen je spam wanneer niks werd ontvangen.
- send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je jouw account kunt deblokkeren. Kijk tussen je spam wanneer niks werd ontvangen.
- unlocked: Jouw account is gedeblokkeerd. Je kunt nu weer inloggen.
+ send_instructions: Je ontvangt via e-mail instructies hoe je het opschorten van jouw account ongedaan kunt maken. Kijk tussen je spam wanneer niks werd ontvangen.
+ send_paranoid_instructions: Als jouw e-mailadres in de database staat, ontvang je via e-mail instructies hoe je het opschorten van jouw account ongedaan kunt maken. Kijk tussen je spam wanneer niks werd ontvangen.
+ unlocked: Jouw account is niet meer opgeschort. Je kunt nu weer inloggen.
errors:
messages:
already_confirmed: is reeds bevestigd
confirmation_period_expired: moet worden bevestigd binnen %{period}, probeer het nog een keer
expired: is verlopen, vraag een nieuwe aan
not_found: niet gevonden
- not_locked: is niet geblokkeerd
+ not_locked: is niet opgeschort
not_saved:
one: '1 fout verhinderde het opslaan van deze %{resource}:'
other: "%{count} fouten verhinderden het opslaan van deze %{resource}:"
diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml
index 9edbb8c9f1f..77cf2503b41 100644
--- a/config/locales/doorkeeper.nl.yml
+++ b/config/locales/doorkeeper.nl.yml
@@ -109,6 +109,6 @@ nl:
application:
title: OAuth-autorisatie vereist
scopes:
- follow: volg, blokkeer, deblokkeer en stop het volgen van accounts
- read: lees jouw accountgegevens
- write: namens jou plaatsen
+ follow: accounts te volgen, te negeren en te blokkeren.
+ read: jouw accountgegevens te lezen
+ write: namens jou berichten te plaatsen
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 47f276ca13a..8fa1ac0e38e 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -3,12 +3,16 @@ en:
about:
about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.
about_this: About
- business_email: 'Business e-mail:'
closed_registrations: Registrations are currently closed on this instance. However! You can find a different instance to make an account on and get access to the very same network from there.
contact: Contact
+ contact_missing: Not set
+ contact_unavailable: N/A
description_headline: What is %{domain}?
domain_count_after: other instances
domain_count_before: Connected to
+ extended_description_html: |
+
A good place for rules
+
The extended description has not been set up yet.
features:
humane_approach_body: Learning from failures of other networks, Mastodon aims to make ethical design choices to combat the misuse of social media.
humane_approach_title: A more humane approach
@@ -20,18 +24,14 @@ en:
within_reach_title: Always within reach
find_another_instance: Find another instance
generic_description: "%{domain} is one server in the network"
- get_started: Get started
hosted_on: Mastodon hosted on %{domain}
learn_more: Learn more
- links: Links
other_instances: Instance list
source_code: Source code
status_count_after: statuses
status_count_before: Who authored
- terms: Terms
user_count_after: users
user_count_before: Home to
- version: Version
what_is_mastodon: What is Mastodon?
accounts:
follow: Follow
@@ -108,13 +108,15 @@ en:
create: Create block
hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts.
severity:
- desc_html: "Silence will make the account's posts invisible to anyone who isn't following them. Suspend will remove all of the account's content, media, and profile data."
+ desc_html: "Silence will make the account's posts invisible to anyone who isn't following them. Suspend will remove all of the account's content, media, and profile data. Use None if you just want to reject media files."
+ noop: None
silence: Silence
suspend: Suspend
title: New domain block
reject_media: Reject media files
reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
severities:
+ noop: None
silence: Silence
suspend: Suspend
severity: Severity
@@ -198,8 +200,8 @@ en:
show: Show media
title: Media
no_media: No media
- with_media: With media
title: Account statuses
+ with_media: With media
subscriptions:
callback_url: Callback URL
confirmed: Confirmed
@@ -272,7 +274,7 @@ en:
content: Security verification failed. Are you blocking cookies?
title: Security verification failed
'429': Throttled
- noscript: To use Mastodon, please enable JavaScript.
+ noscript: To use the Mastodon web application, please enable JavaScript. Alternatively, find a native app for Mastodon for your platform.
exports:
blocks: You block
csv: CSV
@@ -347,15 +349,15 @@ en:
follow:
title: "%{name} is now following you"
mention:
- action_boost: 'Boost'
- action_expand: 'Show more'
- action_favourite: 'Favourite'
+ action_boost: Boost
+ action_expand: Show more
+ action_favourite: Favourite
title: "%{name} mentioned you"
reblog:
title: "%{name} boosted your status"
subscribed:
- body: "You can now receive push notifications."
- title: "Subscription registered!"
+ body: You can now receive push notifications.
+ title: Subscription registered!
remote_follow:
acct: Enter your username@domain you want to follow from
missing_resource: Could not find the required redirect URL for your account
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index d47a5db0edf..6673b6516ac 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -1,20 +1,16 @@
---
eo:
about:
- about_mastodon: Mastodon estas senpaga, malfermitkoda socia reto. Ĝi estas sencentra alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la socia reto tute glate.
+ about_mastodon_html: Mastodon estas senpaga, malfermitkoda socia reto. Ĝi estas sencentra alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la socia reto tute glate.
about_this: Pri tiu aperaĵo
- business_email: 'Profesia retpoŝt-adreso:'
contact: Kontakti
description_headline: Kio estas %{domain}?
domain_count_after: aliaj aperaĵoj
domain_count_before: Konektita al
- get_started: Komenci
- links: Ligiloj
other_instances: Aliaj aperaĵoj
source_code: Fontkodo
status_count_after: mesaĝoj
status_count_before: Kiu publikigis
- terms: Terms
user_count_after: uzantoj
user_count_before: Hejmo de
accounts:
diff --git a/config/locales/es.yml b/config/locales/es.yml
index c051c9a08d3..89e2828d0be 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1,21 +1,17 @@
---
es:
about:
- about_mastodon: Mastodon es un servidor de red social libre y de código abierto. Una alternativa descentralizada a plataformas comerciales, que evita el riesgo de que una única compañía monopolice tu comunicación. Cualquiera puede ejecutar Mastodon y participar sin problemas en la red social.
+ about_mastodon_html: Mastodon es un servidor de red social libre y de código abierto. Una alternativa descentralizada a plataformas comerciales, que evita el riesgo de que una única compañía monopolice tu comunicación. Cualquiera puede ejecutar Mastodon y participar sin problemas en la red social.
about_this: Acerca de esta instancia
- business_email: 'Correo de negocios:'
closed_registrations: Los registros están actualmente cerrados en esta instancia.
contact: Contacto
description_headline: "¿Qué es %{domain}?"
domain_count_after: otras instancias
domain_count_before: Conectado a
- get_started: Comenzar
- links: Enlaces
other_instances: Otras instancias
source_code: Código fuente
status_count_after: estados
status_count_before: Que han escrito
- terms: Términos
user_count_after: usuarios registrados
user_count_before: Tenemos
accounts:
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 218d859bb44..c42016eb3e8 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -1,24 +1,19 @@
---
fa:
about:
- about_mastodon: ماستدون (Mastodon) یک شبکهٔ اجتماعی آزاد و کدباز است. یک جایگزین غیرمتمرکز برای شبکههای تجاری، که نمیگذارد ارتباطهای شما را یک شرکت در انحصار خود بگیرد. یک سرور مورد اعتماد را انتخاب کنید — هر سروری که باشد، همچنان میتوانید با سرورهای دیگر ارتباط داشته باشید. هر کسی میتواند سرور ماستدون خود را راه بیندازد و در شبکهٔ اجتماعی سهیم شود.
+ about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی آزاد و کدباز است. یک جایگزین غیرمتمرکز برای شبکههای تجاری، که نمیگذارد ارتباطهای شما را یک شرکت در انحصار خود بگیرد. یک سرور مورد اعتماد را انتخاب کنید — هر سروری که باشد، همچنان میتوانید با سرورهای دیگر ارتباط داشته باشید. هر کسی میتواند سرور ماستدون خود را راه بیندازد و در شبکهٔ اجتماعی سهیم شود.
about_this: دربارهٔ این سرور
- business_email: 'ایمیل کاری:'
closed_registrations: امکان ثبت نام روی این سرور هماینک فعال نیست.
contact: تماس
description_headline: "%{domain} چیست؟"
domain_count_after: سرور دیگر
domain_count_before: متصل به
- get_started: آغاز کنید
- links: پیوندها
other_instances: سرورهای دیگر
source_code: کدهای منبع
status_count_after: چیز نوشتهاند
status_count_before: که جمعاً
- terms: شرایط استفاده
user_count_after: کاربر
user_count_before: دارای
- version: نسخه
accounts:
follow: پی بگیرید
followers: پیگیران
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index a2488530fec..23c844741c8 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -1,20 +1,16 @@
---
fi:
about:
- about_mastodon: Mastodon on ilmainen, avoimeen lähdekoodiin perustuva sosiaalinen verkosto. Hajautettu vaihtoehto kaupallisille alustoille, se välttää eiskit yhden yrityksen monopolisoinnin sinun viestinnässäsi. Valitse palvelin mihin luotat — minkä tahansa valitset, voit vuorovaikuttaa muiden kanssa. Kuka tahansa voi luoda Mastodon palvelimen ja ottaa osaa sosiaaliseen verkkoon saumattomasti.
+ about_mastodon_html: Mastodon on ilmainen, avoimeen lähdekoodiin perustuva sosiaalinen verkosto. Hajautettu vaihtoehto kaupallisille alustoille, se välttää eiskit yhden yrityksen monopolisoinnin sinun viestinnässäsi. Valitse palvelin mihin luotat — minkä tahansa valitset, voit vuorovaikuttaa muiden kanssa. Kuka tahansa voi luoda Mastodon palvelimen ja ottaa osaa sosiaaliseen verkkoon saumattomasti.
about_this: Tietoja tästä palvelimesta
- business_email: 'Business e-mail:'
contact: Ota yhteyttä
description_headline: Mikä on %{domain}?
domain_count_after: muuhun palvelimeen
domain_count_before: Yhdistyneenä
- get_started: Aloita käyttö
- links: Linkit
other_instances: Muut palvelimet
source_code: Lähdekoodi
status_count_after: statusta
status_count_before: Ovat luoneet
- terms: Ehdot
user_count_after: käyttäjälle
user_count_before: Koti
accounts:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 7ba9e2525e3..13514bfc3e9 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -3,7 +3,6 @@ fr:
about:
about_mastodon_html: Mastodon est un réseau social utilisant des formats ouverts et des logiciels libres. Comme le courriel, il est décentralisé.
about_this: À propos
- business_email: Courriel professionnel
closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. Cependant, vous pouvez trouver une autre instance sur laquelle vous créer un compte et à partir de laquelle vous pourrez accéder au même réseau.
contact: Contact
description_headline: Qu’est-ce que %{domain} ?
@@ -20,18 +19,14 @@ fr:
within_reach_title: Toujours à portée de main
find_another_instance: Trouver une autre instance
generic_description: "%{domain} est seulement un serveur du réseau"
- get_started: Rejoindre le réseau
hosted_on: Instance Mastodon hébergée par %{domain}
learn_more: En savoir plus
- links: Liens
other_instances: Liste des instances
source_code: Code source
status_count_after: posts
status_count_before: Ayant publié
- terms: Conditions d’utilisation
user_count_after: utilisateur⋅ice⋅s
user_count_before: Abrite
- version: Version
what_is_mastodon: Qu’est-ce que Mastodon ?
accounts:
follow: Suivre
@@ -432,70 +427,7 @@ fr:
reblogged: partagé
sensitive_content: Contenu sensible
terms:
- body_html: |
-
Politique de confidentialité
-
-
Quelles données collectons-nous?
-
-
Nous collectons des données lorsque vous vous enregistrez sur notre site et les récoltons lorsque vous participez dans le forum en lisant, écrivant, et évaluant le contenu partagé ici.
-
-
Lors de l'enregistrement sur notre site, il peut vous être demandé de renseigner votre nom et adresse e-mail. Vous pouvez, cependant, visiter notre site sans inscription. Votre adresse e-mail devra être vérifiée grâce à un e-mail contenant un lien unique. Si ce lien est visité, nous savons que vous contrôlez cette adresse e-mail.
-
-
Lors de l'inscription et de la publication de statuts, nous enregistrons l'adresse IP de laquelle le(s) status viennent. Nous pouvons également conserver des historiques serveurs qui contiendront l'adresse IP de chaque requête adressée à notre serveur.
-
-
Que faisons-nous avec vos données?
-
-
Toute information que nous collectons pourra être utilisée d'une des manières suivantes :
-
-
-
Pour personnaliser votre expérience — vos données nous aident à mieux répondre à vos besoins individuels.
-
Pour améliorer notre site — nous faisons tout notre possible pour améliorer notre site en fonction des données, retours et suggestions que nous recevons.
-
Afin d'améliorer le support client — vos données nous aident à mieux répondre à vos requêtes et demandes de support.
-
Afin d'envoyer des e-mails à intervalles réguliers — l'adresse e-mail que vous renseignez peut être utilisée pour vous envoyer des données et notifications concernant des changements ou en réponse à votre nom d'utilisateur⋅trice, en réponse à vos demandes et/ou autres requêtes ou questions
-
-
-
Comment protégeons-nous vos données?
-
-
Nous appliquons une multitude de mesures afin de maintenir la sécurité de vos données personnelles lorsque vous entrez, soumettez, ou accédez à ces dernières.
-
-
Quelle est notre politique de conservation des données?
-
-
Nous nous efforçons de:
-
-
-
Ne pas garder les historiques serveurs contenant l'adresse IP de chaque requête adressée à ce serveur plus de 90 jours.
-
Ne pas conserver les adresses IP associées aux utilisateur⋅trices et leur contenu plus de 5 ans.
-
-
-
Utilisons nous des "cookies"?
-
-
Oui. Les cookies sont de petits fichiers qu'un site ou prestataires de services transfèrent sur le disque dur de votre ordinateur par le biais de votre navigateur Web (si ce dernier le permet). Ces cookies permettent au site de reconnaître votre navigateur et, si vous disposez d'un compte, l'associer à votre compte.
-
-
Nous utilisons les cookies pour enregistrer vos préférences pour de futures visites, compiler des données agrégées à propos du trafic et des interactions effectuées sur le site afin de proposer une meilleure expérience dans le futur. Nous pouvons contracter les services d'acteurs tiers afin de nous aider à mieux comprendre les visiteurs de notre site. Ces acteurs ont l'autorisation d'utiliser ces données seulement à des fins d'améliorations.
-
-
Divulguons-nous des données à des acteurs tiers ?
-
-
Nous n'échangeons pas, ne vendons pas ni effectuons de quelconques transferts avec des acteurs tiers d'informations permettant de vous identifier personnellement. Cela n'inclut pas les acteurs de confiance qui nous aident à gérer notre entreprise et à vous servir tant que ces acteurs s'accordent à garder lesdites informations confidentielles. Nous pouvons être amenés à délivrer vos informations lorsque jugé adéquat afin de respecter la loi, d'appliquer la politique de notre site, ou afin de protéger nos droits, ceux des autres, notre propriété ou sécurité. Cependant, aucune information permettant l'identification de nos visiteurs ne sera divulguée à des fins publicitaires, commerciales ou tout autre usage.
-
-
Liens vers des acteurs tiers
-
-
Nous pouvons être amenés à inclure ou offrir les services ou produits d'acteurs tiers sur notre site. Ces acteurs tiers possèdent leur propre politique de confidentialité. Nous ne sommes donc pas responsables du contenu ou activités desdits acteurs. Néanmoins, nous cherchons à protéger l'intégrité de notre site et sommes ouverts à toute remarque concernant ces acteurs.
-
-
Children's Online Privacy Protection Act
-
-
Notre site, nos produits et services sont tous dirigés à l'usage de personnes étant âgés de 13 ans ou plus. Si ce serveur est hébergé aux États-Unis et que vous êtes âgé⋅e de moins de 13 ans, au vu du COPPA (Children's Online Privacy Protection Act) n'utilisez pas ce site.
-
-
Votre consentement
-
-
En utilisant notre site, vous consentez à la politique de confiedentialité de notre site Web.
-
-
Changements de notre politique de confidentialité
-
-
Si nous décidons d'apporter des changements à notre politique de confidentialité, nous les mettrons à disposition sur cette page.
-
-
Ce document est distribué sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 31 Mai 2013. Il a été traduit en français en Juillet 2017.
-
-
Originellement adapté à partir de la politique de confidentialité de Discourse
.
+ body_html: "
Politique de confidentialité
\n\n
Quelles données collectons-nous?
\n\n
Nous collectons des données lorsque vous vous enregistrez sur notre site et les récoltons lorsque vous participez dans le forum en lisant, écrivant, et évaluant le contenu partagé ici.
\n\n
Lors de l'enregistrement sur notre site, il peut vous être demandé de renseigner votre nom et adresse e-mail. Vous pouvez, cependant, visiter notre site sans inscription. Votre adresse e-mail devra être vérifiée grâce à un e-mail contenant un lien unique. Si ce lien est visité, nous savons que vous contrôlez cette adresse e-mail.
\n\n
Lors de l'inscription et de la publication de statuts, nous enregistrons l'adresse IP de laquelle le(s) status viennent. Nous pouvons également conserver des historiques serveurs qui contiendront l'adresse IP de chaque requête adressée à notre serveur.
\n\n
Que faisons-nous avec vos données?
\n\n
Toute information que nous collectons pourra être utilisée d'une des manières suivantes :
\n\n
\n
Pour personnaliser votre expérience — vos données nous aident à mieux répondre à vos besoins individuels.
\n
Pour améliorer notre site — nous faisons tout notre possible pour améliorer notre site en fonction des données, retours et suggestions que nous recevons.
\n
Afin d'améliorer le support client — vos données nous aident à mieux répondre à vos requêtes et demandes de support.
\n
Afin d'envoyer des e-mails à intervalles réguliers — l'adresse e-mail que vous renseignez peut être utilisée pour vous envoyer des données et notifications concernant des changements ou en réponse à votre nom d'utilisateur⋅trice, en réponse à vos demandes et/ou autres requêtes ou questions
\n
\n\n
Comment protégeons-nous vos données?
\n \n
Nous appliquons une multitude de mesures afin de maintenir la sécurité de vos données personnelles lorsque vous entrez, soumettez, ou accédez à ces dernières.
\n\n
Quelle est notre politique de conservation des données?
\n\n
Nous nous efforçons de:
\n\n
\n
Ne pas garder les historiques serveurs contenant l'adresse IP de chaque requête adressée à ce serveur plus de 90 jours.
\n
Ne pas conserver les adresses IP associées aux utilisateur⋅trices et leur contenu plus de 5 ans.
\n
\n\n
Utilisons nous des \"cookies\"?
\n\n
Oui. Les cookies sont de petits fichiers qu'un site ou prestataires de services transfèrent sur le disque dur de votre ordinateur par le biais de votre navigateur Web (si ce dernier le permet). Ces cookies permettent au site de reconnaître votre navigateur et, si vous disposez d'un compte, l'associer à votre compte.
\n\n
Nous utilisons les cookies pour enregistrer vos préférences pour de futures visites, compiler des données agrégées à propos du trafic et des interactions effectuées sur le site afin de proposer une meilleure expérience dans le futur. Nous pouvons contracter les services d'acteurs tiers afin de nous aider à mieux comprendre les visiteurs de notre site. Ces acteurs ont l'autorisation d'utiliser ces données seulement à des fins d'améliorations.
\n\n
Divulguons-nous des données à des acteurs tiers ?
\n\n
Nous n'échangeons pas, ne vendons pas ni effectuons de quelconques transferts avec des acteurs tiers d'informations permettant de vous identifier personnellement. Cela n'inclut pas les acteurs de confiance qui nous aident à gérer notre entreprise et à vous servir tant que ces acteurs s'accordent à garder lesdites informations confidentielles. Nous pouvons être amenés à délivrer vos informations lorsque jugé adéquat afin de respecter la loi, d'appliquer la politique de notre site, ou afin de protéger nos droits, ceux des autres, notre propriété ou sécurité. Cependant, aucune information permettant l'identification de nos visiteurs ne sera divulguée à des fins publicitaires, commerciales ou tout autre usage.
\n\n
Liens vers des acteurs tiers
\n\n
Nous pouvons être amenés à inclure ou offrir les services ou produits d'acteurs tiers sur notre site. Ces acteurs tiers possèdent leur propre politique de confidentialité. Nous ne sommes donc pas responsables du contenu ou activités desdits acteurs. Néanmoins, nous cherchons à protéger l'intégrité de notre site et sommes ouverts à toute remarque concernant ces acteurs.
\n\n
Children's Online Privacy Protection Act
\n\n
Notre site, nos produits et services sont tous dirigés à l'usage de personnes étant âgés de 13 ans ou plus. Si ce serveur est hébergé aux États-Unis et que vous êtes âgé⋅e de moins de 13 ans, au vu du COPPA (Children's Online Privacy Protection Act) n'utilisez pas ce site.
\n\n
Votre consentement
\n\n
En utilisant notre site, vous consentez à la politique de confiedentialité de notre site Web.
\n\n
Changements de notre politique de confidentialité
\n\n
Si nous décidons d'apporter des changements à notre politique de confidentialité, nous les mettrons à disposition sur cette page.
\n\n
Ce document est distribué sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 31 Mai 2013. Il a été traduit en français en Juillet 2017.
\n\n
Originellement adapté à partir de la politique de confidentialité de Discourse
.\n"
title: "%{instance} Conditions d'utilisations et Politique de confidentialité"
time:
formats:
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 251b6914e5c..dc6caf87ac2 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1,24 +1,19 @@
---
he:
about:
- about_mastodon: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק.
+ about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק.
about_this: אודות שרת זה
- business_email: 'דוא"ל עסקי:'
closed_registrations: הרשמות סגורות לשרת זה לעת עתה.
contact: צור קשר
description_headline: מהו %{domain}?
domain_count_after: שרתים אחרים
domain_count_before: מחובר אל
- get_started: בואו נתחיל
- links: קישורים
other_instances: שרתים אחרים
source_code: קוד מקור
status_count_after: הודעות
status_count_before: שכתבו
- terms: תנאים
user_count_after: משתמשים
user_count_before: ביתם של
- version: גרסה
accounts:
follow: לעקוב
followers: עוקבים
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 8297ca6296f..2d43fcad816 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -1,21 +1,17 @@
---
hr:
about:
- about_mastodon: Mastodon je besplatna, open-source socijalna mreža. Decentralizirana alternativa komercijalnim platformama, izbjegava rizik toga da jedna tvrtka monopolizira vašu komunikaciju. Izaberite server kojem ćete vjerovati — koji god odabrali, moći ćete komunicirati sa svima ostalima. Bilo tko može imati svoju vlastitu Mastodon instancu i sudjelovati u socijalnoj mreži bez problema.
+ about_mastodon_html: Mastodon je besplatna, open-source socijalna mreža. Decentralizirana alternativa komercijalnim platformama, izbjegava rizik toga da jedna tvrtka monopolizira vašu komunikaciju. Izaberite server kojem ćete vjerovati — koji god odabrali, moći ćete komunicirati sa svima ostalima. Bilo tko može imati svoju vlastitu Mastodon instancu i sudjelovati u socijalnoj mreži bez problema.
about_this: O ovoj instanci
- business_email: 'Poslovni e-mail:'
closed_registrations: Registracije na ovoj instanci su trenutno zatvorene.
contact: Kontakt
description_headline: Što je %{domain}?
domain_count_after: druge instance
domain_count_before: Spojen na
- get_started: Započni
- links: Linkovi
other_instances: Druge instance
source_code: Izvorni kod
status_count_after: statusi
status_count_before: Tko je autor
- terms: Uvjeti
user_count_after: korisnici
user_count_before: Home to
accounts:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 24996e39d26..53319a673e7 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1,10 +1,8 @@
---
hu:
about:
- about_mastodon: Mastodon egy szabad, nyílt forráskódú szociális hálózati kiszolgálo. Egy központosítatlan alternatíva a kereskedelmi platformokra, elkerüli a kommunikációd monopolizációját veszélyét. Bárki futtathatja a Mastodon-t és részt vehet a szociális hálózatban.
- get_started: Első lépések
+ about_mastodon_html: Mastodon egy szabad, nyílt forráskódú szociális hálózati kiszolgálo. Egy központosítatlan alternatíva a kereskedelmi platformokra, elkerüli a kommunikációd monopolizációját veszélyét. Bárki futtathatja a Mastodon-t és részt vehet a szociális hálózatban.
source_code: Forráskód
- terms: Feltételek
accounts:
follow: Követés
followers: Követők
@@ -32,7 +30,7 @@ hu:
validation_errors:
one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant
other: Valami nincs rendjén! Kérlek tekintsd meg a %{count} darab hibát alant.
- landing_strip_html: %{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse.
+ landing_strip_html: "%{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
landing_strip_signup_html: If you don't, you can sign up here.
notification_mailer:
favourite:
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 7bda52c789a..e0e82d378e7 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -1,24 +1,19 @@
---
id:
about:
- about_mastodon: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah.
+ about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah.
about_this: Tentang server ini
- business_email: 'E-mail bisnis:'
closed_registrations: Pendaftaran untuk server ini sedang ditutup.
contact: Kontak
description_headline: Apa itu %{domain}?
domain_count_after: server lain
domain_count_before: Terhubung dengan
- get_started: Mulai
- links: Link
other_instances: Server lain
source_code: Kode sumber
status_count_after: status
status_count_before: Yang telah menulis
- terms: Ketentuan
user_count_after: pengguna
user_count_before: Tempat bernaung bagi
- version: Versi
accounts:
follow: Ikuti
followers: Pengikut
diff --git a/config/locales/io.yml b/config/locales/io.yml
index b587d4bc63d..4f7323a6f29 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -1,21 +1,17 @@
---
io:
about:
- about_mastodon: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate.
+ about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate.
about_this: Pri ta instaluro
- business_email: 'Profesionala retpost-adreso:'
closed_registrations: Membresko ne nun esas posible en ta instaluro.
contact: Kontaktar
description_headline: Quo esas %{domain}?
domain_count_after: altra instaluri
domain_count_before: Konektita ad
- get_started: Komencar
- links: Ligili
other_instances: Altra instaluri
source_code: Fontkodexo
status_count_after: mesaji
status_count_before: Qua publikigis
- terms: Terms
user_count_after: uzeri
user_count_before: Hemo di
accounts:
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 5c014c61d2c..de96825890d 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -1,21 +1,17 @@
---
it:
about:
- about_mastodon: Mastodon è un social network gratuito e open-source. Un'alternativa decentralizzata alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del social network.
+ about_mastodon_html: Mastodon è un social network gratuito e open-source. Un'alternativa decentralizzata alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del social network.
about_this: A proposito di questo server
- business_email: 'Email di lavoro:'
closed_registrations: Al momento le iscrizioni a questo server sono chiuse.
contact: Contatti
description_headline: Cos'è %{domain}?
domain_count_after: altri server
domain_count_before: Connesso a
- get_started: Inizia
- links: Links
other_instances: Altri server
source_code: Codice sorgente
status_count_after: status
status_count_before: Che hanno pubblicato
- terms: Termini di Utilizzo
user_count_after: utenti
user_count_before: Casa di
accounts:
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 632f93ea3b0..6763ed301ac 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -2,8 +2,7 @@
ja:
about:
about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。
- about_this: このインスタンスについて
- business_email: 'ビジネスメールアドレス:'
+ about_this: 詳細情報
closed_registrations: 現在このインスタンスでの新規登録は受け付けていません。しかし、他のインスタンスにアカウントを作成しても全く同じネットワークに参加することができます。
contact: 連絡先
description_headline: "%{domain} とは?"
@@ -20,18 +19,14 @@ ja:
within_reach_title: いつでも身近に
find_another_instance: 他のインスタンスを探す
generic_description: "%{domain} は、Mastodon インスタンスの一つです。"
- get_started: 参加する
hosted_on: Mastodon hosted on %{domain}
learn_more: もっと詳しく
- links: リンク
other_instances: 他のインスタンス
source_code: ソースコード
status_count_after: トゥート
status_count_before: トゥート数
- terms: プライバシーポリシー
user_count_after: 人
user_count_before: ユーザー数
- version: バージョン
what_is_mastodon: Mastodon とは?
accounts:
follow: フォロー
@@ -198,8 +193,8 @@ ja:
show: メディアを表示
title: メディア
no_media: メディアなし
- with_media: メディアあり
title: トゥート一覧
+ with_media: メディアあり
subscriptions:
callback_url: コールバックURL
confirmed: 確認済み
@@ -272,7 +267,7 @@ ja:
content: セキュリティ認証に失敗しました。Cookieをブロックしていませんか?
title: セキュリティ認証に失敗
'429': リクエストの制限に達しました。
- noscript: Mastodonを利用する場合はJavaScriptを有効にしてください。
+ noscript: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けのMastodonネイティブアプリを探すことができます。
exports:
blocks: ブロック
csv: CSV
@@ -345,12 +340,12 @@ ja:
favourite:
title: あなたのトゥートが %{name} さんにお気に入り登録されました
follow:
- title: '%{name} さんにフォローされました'
+ title: "%{name} さんにフォローされました"
mention:
action_boost: ブースト
action_expand: もっと見る
action_favourite: お気に入り
- title: '%{name} さんから返信がありました'
+ title: "%{name} さんから返信がありました"
reblog:
title: あなたのトゥートが %{name} さんにブーストされました
subscribed:
@@ -400,7 +395,7 @@ ja:
title: セッション
settings:
authorized_apps: 認証済みアプリ
- back: 戻る
+ back: Mastodon に戻る
delete: アカウントの削除
edit_profile: プロフィールを編集
export: データのエクスポート
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index c7c310cfed2..a081de38da7 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1,24 +1,19 @@
---
ko:
about:
- about_mastodon: Mastodon 은자유로운 오픈 소스소셜 네트워크입니다. 상용 플랫폼의 대체로써 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 Mastodon 인스턴스를 만들 수 있으며, Seamless하게 소셜 네트워크에 참가할 수 있습니다.
+ about_mastodon_html: Mastodon 은자유로운 오픈 소스소셜 네트워크입니다. 상용 플랫폼의 대체로써 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 Mastodon 인스턴스를 만들 수 있으며, Seamless하게 소셜 네트워크에 참가할 수 있습니다.
about_this: 이 인스턴스에 대해서
- business_email: '비즈니스 메일 주소:'
closed_registrations: 현재 이 인스턴스에서는 신규 등록을 받고 있지 않습니다.
contact: 연락처
description_headline: "%{domain} 는 무엇인가요?"
domain_count_after: 개의 인스턴스
domain_count_before: 연결됨
- get_started: 참가하기
- links: 링크
other_instances: 다른 인스턴스
source_code: 소스 코드
status_count_after: Toot
status_count_before: Toot 수
- terms: 개인 정보 보호 정책
user_count_after: 명
user_count_before: 사용자 수
- version: 버전
accounts:
follow: 팔로우
followers: 팔로워
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index dfc58f6b35a..58282259d17 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -1,23 +1,38 @@
---
nl:
about:
- about_mastodon: Mastodon is een vrij, gratis en open-source sociaal netwerk. Een gedecentraliseerd alternatief voor commerciële platforms. Het voorkomt de risico's van een enkel bedrijf dat jouw communicatie monopoliseert. Kies een server die je vertrouwt — welke je ook kiest, je kunt met elke andere server communiceren. Iedereen kan een eigen Mastodon-server draaien en naadloos deelnemen in het sociale netwerk.
+ about_mastodon_html: Mastodon is een vrij, gratis en open-source sociaal netwerk. Een gedecentraliseerd alternatief voor commerciële platforms. Het voorkomt de risico's van een enkel bedrijf dat jouw communicatie monopoliseert. Kies een server die je vertrouwt — welke je ook kiest, je kunt met elke andere server communiceren. Iedereen kan een eigen Mastodon-server draaien en naadloos deelnemen in het sociale netwerk.
about_this: Over deze server
- business_email: 'E-mailadres:'
closed_registrations: Registreren op deze server is momenteel uitgeschakeld.
contact: Contact
+ contact_missing: Niet ingesteld
+ contact_unavailable: N/A
description_headline: Wat is %{domain}?
domain_count_after: andere servers
domain_count_before: Verbonden met
- get_started: Beginnen
- links: Links
+ extended_description_html: |
+
Een goede plek voor richtlijnen
+
De uitgebreide omschrijving is nog niet ingevuld.
+ features:
+ humane_approach_body: Na van de fouten van andere netwerken te hebben geleerd, tracht Mastodon ethische ontwerpkeuzes te maken om misbruik van social media te voorkomen.
+ humane_approach_title: Een meer menselijke aanpak
+ not_a_product_body: Mastodon is geen commercieel netwerk. Dus geen advertenties, geen datamining en geen besloten systemen. Er is geen centrale organisatie die alles bepaald.
+ not_a_product_title: Jij bent een persoon, geen product
+ real_conversation_body: Met 500 karakters tot jouw beschikking, en ondersteuning voor tekst- en media-waarschuwingen, kan je jezelf uiten zoals jij dat wil.
+ real_conversation_title: Voor echte gesprekken gemaakt
+ within_reach_body: Meerdere apps voor iOS, Android en andere platformen, met dank aan het ontwikkelaarsvriendelijke API-systeem, zorgen ervoor dat je overal op de hoogte blijft.
+ within_reach_title: Altijd binnen bereik
+ find_another_instance: Vind een andere server
+ generic_description: "%{domain} is een server in het Mastodon-netwerk"
+ hosted_on: Mastodon op %{domain}
+ learn_more: Meer leren
other_instances: Andere servers
source_code: Broncode
status_count_after: toots
status_count_before: Zij schreven
- terms: Voorwaarden
user_count_after: gebruikers
user_count_before: Thuisbasis van
+ what_is_mastodon: Wat is Mastodon?
accounts:
follow: Volgen
followers: Volgers
@@ -27,8 +42,99 @@ nl:
people_who_follow: Mensen die %{name} volgen
posts: Toots
remote_follow: Extern volgen
+ reserved_username: Deze gebruikersnaam is gereserveerd
unfollow: Ontvolgen
admin:
+ accounts:
+ are_you_sure: Weet je het zeker?
+ confirm: Bevestigen
+ confirmed: Bevestigd
+ disable_two_factor_authentication: 2FA uitschakelen
+ display_name: Weergavenaam
+ domain: Domein
+ edit: Bewerken
+ email: E-mail
+ feed_url: Feed-URL
+ followers: Volgers
+ follows: Volgt
+ ip: IP
+ location:
+ all: Alles
+ local: Lokaal
+ remote: Extern
+ title: Locatie
+ media_attachments: Media-bijlagen
+ moderation:
+ all: Alles
+ silenced: Genegeerd
+ suspended: Opgeschort
+ title: Moderatie
+ most_recent_activity: Laatst actief
+ most_recent_ip: Laatst gebruikt IP-adres
+ not_subscribed: Niet geabonneerd
+ order:
+ alphabetic: Alfabetisch
+ most_recent: Meest recent
+ title:
+ perform_full_suspension: Volledig opschorten
+ profile_url: Profiel-URL
+ public: Openbaar
+ push_subscription_expires: PuSH-abonnement verloopt op
+ redownload: Avatar vernieuwen
+ reset: Opnieuw
+ reset_password: Wachtwoord opnieuw instellen
+ resubscribe: Opnieuw abonneren
+ salmon_url: Salmon-URL
+ search: Zoeken
+ show:
+ created_reports: Toots door dit account gerapporteerd
+ report: gerapporteerd
+ targeted_reports: Toots van dit account gerapporteerd
+ silence: Negeren
+ statuses: Toots
+ subscribe: Abonneren
+ title: Accounts
+ undo_silenced: Niet meer negeren
+ undo_suspension: Niet meer opschorten
+ unsubscribe: Opzeggen
+ username: Gebruikersnaam
+ web: Webapp
+ domain_blocks:
+ add_new: Nieuwe toevoegen
+ created_msg: Domeinblokkade wordt nu verwerkt
+ destroyed_msg: Domeinblokkade is ongedaan gemaakt
+ domain: Domein
+ new:
+ create: Blokkade aanmaken
+ hint: Een domeinblokkade voorkomt niet dat accountgegevens van dit domein aan de database worden toegevoegd, maar dat er met terugwerkende kracht en automatisch bepaalde moderatiemethoden op deze accounts worden toegepast.
+ severity:
+ desc_html: "Negeren zorgt ervoor dat berichten van accounts van dit domein voor iedereen onzichtbaar zijn, behalve als een account wordt gevolgd. Opschorten zorgt ervoor dat alle berichten, media en profielgegevens van accounts van dit domein worden verwijderd. Gebruik Geen wanneer je alleen mediabestanden wilt weigeren."
+ noop: Geen
+ silence: Negeren
+ suspend: Opschorten
+ title: Nieuwe domeinblokkade
+ reject_media: Mediabestanden verwerpen
+ reject_media_hint: Verwijderd lokaal opgeslagen mediabestanden en weigert deze in de toekomst te downloaden. Irrelevant voor opgeschorte domeinen.
+ severities:
+ noop: Geen
+ silence: Negeren
+ suspend: Opschorten
+ severity: Zwaarte
+ show:
+ affected_accounts:
+ one: Eén account in de database aangepast
+ other: "%{count} accounts in de database aangepast"
+ retroactive:
+ silence: Alle genegeerde accounts van dit domein niet meer negeren
+ suspend: Alle opgeschorste accounts van dit domein niet meer opschorten
+ title: Domeinblokkade voor %{domain} ongedaan maken
+ undo: Ongedaan maken
+ title: Domeinblokkades
+ undo: Ongedaan maken
+ instances:
+ account_count: Bekende accounts
+ domain_name: Domein
+ title: Bekende servers
reports:
action_taken_by: Actie uitgevoerd door
are_you_sure: Weet je het zeker?
@@ -42,13 +148,14 @@ nl:
'false': Media tonen
'true': Media verbergen
report: 'Gerapporteerde toot #%{id}'
+ report_contents: Inhoud
reported_account: Gerapporteerde account
reported_by: Gerapporteerd door
resolved: Opgelost
- silence_account: Account stilzwijgen
+ silence_account: Account negeren
status: Toot
- suspend_account: Account blokkeren
- target: Target
+ suspend_account: Account opschorten
+ target: Gerapporteerde account
title: Gerapporteerde toots
unresolved: Onopgelost
view: Weergeven
@@ -60,7 +167,11 @@ nl:
closed_message:
desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld En ook hier kan je HTML gebruiken
title: Bericht wanneer registratie is uitgeschakeld
+ deletion:
+ desc_html: Toestaan dat iedereen hun eigen account kan verwijderen
+ title: Verwijderen account toestaan
open:
+ desc_html: Toestaan dat iedereen een account kan registereren
title: Open registratie
site_description:
desc_html: Dit wordt als een alinea op de voorpagina getoond en gebruikt als meta-tag in de paginabron. Je kan HTML gebruiken, zoals <a> en <em>.
@@ -68,8 +179,35 @@ nl:
site_description_extended:
desc_html: Wordt op de uitgebreide informatiepagina weergegeven Je kan ook hier HTML gebruiken
title: Uitgebreide omschrijving Mastodon-server
+ site_terms:
+ desc_html: Je kan hier jouw eigen privacybeleid, gebruikersvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken.
+ title: Aangepaste gebruikersvoorwaarden
site_title: Naam Mastodon-server
+ timeline_preview:
+ desc_html: Toon de openbare tijdlijn op de startpagina
+ title: Voorbeeld tijdlijn
title: Server-instellingen
+ statuses:
+ back_to_account: Terug naar accountpagina
+ batch:
+ delete: Verwijderen
+ nsfw_off: NSFW UIT
+ nsfw_on: NSFW AAN
+ execute: Uitvoeren
+ failed_to_execute: Uitvoeren mislukt
+ media:
+ hide: Media verbergen
+ show: Media tonen
+ title: Media
+ no_media: Geen media
+ title: Toots van account
+ subscriptions:
+ callback_url: Callback-URL
+ confirmed: Bevestigd
+ expires_in: Verloopt over
+ last_delivery: Laatste bezorging
+ title: PubSubHubbub
+ topic: Account
title: Beheer
admin_mailer:
new_report:
@@ -80,8 +218,9 @@ nl:
signature: Mastodon-meldingen van %{instance}
view: 'Bekijk:'
applications:
- invalid_url: De opgegevens URL is ongeldig
+ invalid_url: De opgegeven URL is ongeldig
auth:
+ agreement_html: Wanneer je op registeren klikt ga je akkoord met onze gebruikersvoorwaarden en ons privacybeleid.
change_password: Beveiliging
delete_account: Account verwijderen
delete_account_html: Wanneer je jouw account graag wilt verwijderen, kan je dat hier doen. We vragen jou daar om een bevestiging.
@@ -96,6 +235,12 @@ nl:
authorize_follow:
error: Helaas, er is een fout opgetreden bij het opzoeken van de externe account
follow: Volgen
+ follow_request: 'Jij hebt een volgverzoek ingediend bij:'
+ following: 'Succes! Jij volgt nu:'
+ post_follow:
+ close: Of je kan dit venster gewoon sluiten.
+ return: Ga terug naar het profiel van de gebruiker
+ web: Ga naar de webapp
prompt_html: 'Je (%{self}) hebt toestemming gevraagd om iemand te mogen volgen:'
title: Volg %{acct}
datetime:
@@ -128,7 +273,7 @@ nl:
content: Veiligheidsverificatie mislukt. Blokkeer je toevallig cookies?
title: Veiligheidsverificatie mislukt
'429': Te veel verbindingsaanvragen.
- noscript: Schakel JavaScript in om Mastodon te kunnen gebruiken.
+ noscript: Schakel JavaScript in om de webapplicatie van Mastodon te gebruiken. Als alternatief kan je een Mastodon-app zoeken voor jouw platform.
exports:
blocks: Jij blokkeert
csv: CSV
@@ -162,8 +307,12 @@ nl:
following: Volglijst
muting: Negeerlijst
upload: Uploaden
- landing_strip_html: "%{name} is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je ergens in deze fediverse een account hebt."
+ landing_strip_html: %{name} is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je ergens in deze fediverse een account hebt.
landing_strip_signup_html: Als je dat niet hebt, kun je je hier registreren.
+ media_attachments:
+ validations:
+ images_and_video: Een video kan niet aan een toot met afbeeldingen worden gekoppeld
+ too_many: Er kunnen niet meer dan 4 afbeeldingen toegevoegd worden
notification_mailer:
digest:
body: 'Hier is een korte samenvatting van wat je hebt gemist op %{instance} sinds jouw laatste bezoek op %{since}:'
@@ -188,10 +337,26 @@ nl:
subject: Jij bent vermeld door %{name}
reblog:
body: 'Jouw toot werd door %{name} geboost:'
- subject: "%{name} booste jouw toot"
+ subject: "%{name} boostte jouw toot"
pagination:
next: Volgende
prev: Vorige
+ truncate: "…"
+ push_notifications:
+ favourite:
+ title: "%{name} markeerde jouw toot als favoriet"
+ follow:
+ title: "%{name} volgt jou nu"
+ mention:
+ action_boost: Boost
+ action_expand: Meer tonen
+ action_favourite: Favoriet
+ title: "%{name} vermeldde jou"
+ reblog:
+ title: "%{name} boostte jouw toot"
+ subscribed:
+ body: Je kan nu pushmeldingen ontvangen.
+ title: Aanmelding bevestigd!
remote_follow:
acct: Geef jouw account@domein.tld op waarvandaan je wilt volgen
missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden
@@ -233,10 +398,13 @@ nl:
windows: Windows
windows_mobile: Windows Mobile
windows_phone: Windows Phone
+ revoke: Intrekken
+ revoke_success: Sessie succesvol ingetrokken
title: Sessies
settings:
authorized_apps: Geautoriseerde apps
back: Terug naar Mastodon
+ delete: Account deletion
edit_profile: Profiel bewerken
export: Export
followers: Geautoriseerde volgers
@@ -245,9 +413,9 @@ nl:
settings: Instellingen
two_factor_authentication: Tweestapsverificatie
statuses:
- open_in_web: Openen in web
+ open_in_web: In de webapp openen
over_character_limit: Limiet van %{max} tekens overschreden
- show_more: Toon meer
+ show_more: Meer tonen
visibilities:
private: Alleen volgers
private_long: Alleen aan volgers tonen
@@ -259,6 +427,76 @@ nl:
click_to_show: Klik om te tonen
reblogged: boostte
sensitive_content: Gevoelige inhoud
+ terms:
+ body_html: |
+
Privacy Policy
+
+
What information do we collect?
+
+
We collect information from you when you register on our site and gather data when you participate in the forum by reading, writing, and evaluating the content shared here.
+
+
When registering on our site, you may be asked to enter your name and e-mail address. You may, however, visit our site without registering. Your e-mail address will be verified by an email containing a unique link. If that link is visited, we know that you control the e-mail address.
+
+
When registered and posting, we record the IP address that the post originated from. 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 one of the following ways:
+
+
+
To personalize your experience — your information helps us to better respond to your individual needs.
+
To improve our site — we continually strive to improve our site offerings based on the information and feedback we receive from you.
+
To improve customer service — your information helps us to more effectively respond to your customer service requests and support needs.
+
To send periodic emails — The email address you provide may be used to send you information, notifications that you request about changes to topics or in response to your user name, 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.
+
+
What is your data retention policy?
+
+
We will make a good faith effort to:
+
+
+
Retain server logs containing the IP address of all requests to this server no more than 90 days.
+
Retain the IP addresses associated with registered users and their posts no more than 5 years.
+
+
+
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 and compile aggregate data about site traffic and site interaction so that we can offer better site experiences and tools in the future. We may contract with third-party service providers to assist us in better understanding our site visitors. These service providers are not permitted to use the information collected on our behalf except to help us conduct and improve our business.
+
+
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. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses.
+
+
Third party links
+
+
Occasionally, at our discretion, we may include or offer third party products or services on our site. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these linked sites. Nonetheless, we seek to protect the integrity of our site and welcome any feedback about these sites.
Our site, products and services are all directed to people who are at least 13 years old. If this server is in the USA, and you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.
+
+
Online Privacy Policy Only
+
+
This online privacy policy applies only to information collected through our site and not to information collected offline.
+
+
Your Consent
+
+
By using our site, you consent to our web site privacy policy.
+
+
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 31, 2013.
+ title: "%{instance} Terms of Service and Privacy Policy"
time:
formats:
default: "%d %B %Y om %H:%M"
@@ -267,11 +505,13 @@ nl:
description_html: Na het instellen van tweestapsverificatie, kun jij je alleen aanmelden als je jouw mobiele telefoon bij je hebt. Hiermee genereer je namelijk de in te voeren aanmeldcode.
disable: Uitschakelen
enable: Inschakelen
+ enabled: Tweestapsverificatie is ingeschakeld
enabled_success: Inschakelen tweestapsverificatie geslaagd
generate_recovery_codes: Herstelcodes genereren
instructions_html: "Scan deze QR-code in Google Authenticator of een soortgelijke app op jouw mobiele telefoon. Van nu af aan genereert deze app aanmeldcodes die je bij het aanmelden moet invoeren."
lost_recovery_codes: Met herstelcodes kun je toegang tot jouw account krijgen wanneer je jouw telefoon bent kwijtgeraakt. Wanneer je jouw herstelcodes bent kwijtgeraakt, kan je ze hier opnieuw genereren. Jouw oude herstelcodes zijn daarna ongeldig.
- manual_instructions: Hieronder vind je de geheime code in platte tekst. Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren.
+ manual_instructions: 'Hieronder vind je de geheime code in platte tekst. Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren.'
+ recovery_codes: Herstelcodes back-uppen
recovery_codes_regenerated: Opnieuw genereren herstelcodes geslaagd
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.)
setup: Instellen
diff --git a/config/locales/no.yml b/config/locales/no.yml
index cf94524d294..122ad567585 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -1,24 +1,19 @@
---
'no':
about:
- about_mastodon: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket.
+ about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket.
about_this: Om denne instansen
- business_email: 'Bedriftsepost:'
closed_registrations: Registreringer er for øyeblikket lukket på denne instansen.
contact: Kontakt
description_headline: Hva er %{domain}?
domain_count_after: andre instanser
domain_count_before: Koblet til
- get_started: Kom i gang
- links: Lenker
other_instances: Andre instanser
source_code: Kildekode
status_count_after: statuser
status_count_before: Som skrev
- terms: Betingelser
user_count_after: brukere
user_count_before: Her bor
- version: Versjon
accounts:
follow: Følg
followers: Følgere
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 2eb85be5852..6d9996dbcc8 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -1,31 +1,26 @@
---
oc:
about:
- about_mastodon: Mastodon es un malhum social liure e open-source. Una alternativa decentralizada a las platformas comercialas, aquò evita qu’una sola companiá monopolize vòstra comunicacion. Causissètz une servidor que vos fisatz, quina que siague vòstra causida, podètz interagir amb tot lo mond. Qual que siague pòt aver son instància Mastodon e participar al malhum social sens cap de problèmas.
+ about_mastodon_html: Mastodon es un malhum social liure e open-source. Una alternativa descentralizada a las plat-formas comercialas, aquò evita qu’una sola companhiá monopolize vòstra comunicacion. Causissètz un servidor que vos fisatz, quina que siasque vòstra causida, podètz interagir amb tot lo mond. Qual que siasque pòt aver son instància Mastodon e participar al malhum social sens cap de problèmas.
about_this: A prepaus d’aquesta instància
- business_email: 'Corrièl professional :'
closed_registrations: Las inscripcions son clavadas pel moment sus aquesta instància.
contact: Contacte
description_headline: Qué es %{domain} ?
domain_count_after: autras instàncias
domain_count_before: Connectat a
- get_started: Venètz al malhum
- links: Ligams
other_instances: Autras instàncias
source_code: Còdi font
status_count_after: estatuts
status_count_before: qu’an escrich
- terms: Tèrmes
user_count_after: personas
user_count_before: Ostal de
- version: Version
accounts:
follow: Sègre
followers: Seguidors
following: Abonaments
nothing_here: I a pas res aquí !
people_followed_by: Lo mond que %{name} sèc
- people_who_follow: Lo mond que ségon %{name}
+ people_who_follow: Lo mond que sègon %{name}
posts: Estatuts
remote_follow: Sègre a distància
unfollow: Quitar de sègre
@@ -60,7 +55,7 @@ oc:
order:
alphabetic: Alfabetic
most_recent: Mai recent
- title: Order
+ title: Ordre
perform_full_suspension: Botar en tren la suspension complèta
profile_url: URL del perfil
public: Public
@@ -94,7 +89,7 @@ oc:
suspend: Suspendre
title: Nòu blocatge domeni
reject_media: Regetar los fichièrs mèdias
- reject_media_hint: Lèva los fichièrs gardats localament e regeta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions
+ reject_media_hint: Lèva los fichièrs gardats localament e regèta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions
severities:
silence: Silenci
suspend: Suspendre
@@ -108,7 +103,7 @@ oc:
suspend: Levar la suspension de totes los comptes d’aqueste domeni
title: Restablir lo blocatge de domeni de %{domain}
undo: Restablir
- title: Bloc de domeni
+ title: Blòc de domeni
undo: Restablir
instances:
account_count: Comptes coneguts
@@ -125,7 +120,7 @@ oc:
nsfw:
'false': Sens contengut sensible
'true': Contengut sensible activat
- report: 'enhalament #%{id}'
+ report: 'senhalament #%{id}'
report_contents: Contenguts
reported_account: Compte senhalat
reported_by: Senhalat per
@@ -145,16 +140,41 @@ oc:
closed_message:
desc_html: Afichat sus las pagina d’acuèlh quand las inscripcions son tampadas. Podètz utilizar de balisas HTML
title: Messatge de barradura de las inscripcions
+ deletion:
+ desc_html: Autorizar al monde a suprimir lor compte
+ title: Possibilitat de suprimir lo compte
open:
+ desc_html: Autorizar lo monde a se marcar
title: Inscripcions
site_description:
- desc_html: Afichada jos la forma de paragrafe sus la pagina d’acuèlh e utilizada coma balisa meta. Podètz utilizar de balisas HTML, coma <a> et <em>.
+ desc_html: Afichada jos la forma de paragrafe sus la pagina d’acuèlh e utilizada coma balisa meta. Podètz utilizar de balisas HTML, coma <a> e <em>.
title: Descripcion del site
site_description_extended:
desc_html: Afichada sus la pagina d’informacion complementària del site Podètz utilizar de balisas HTML
title: Descripcion espandida del site
+ 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 site
+ timeline_preview:
+ desc_html: Mostrar lo flux public sus la pagina d’acuèlh
+ title: Apercebut flux public
title: Paramètres del site
+ statuses:
+ back_to_account: Tornar a la pagina Compte
+ batch:
+ delete: Suprimir
+ nsfw_off: NSFW OFF
+ nsfw_on: NSFW ON
+ execute: Lançar
+ failed_to_execute: Fracàs
+ media:
+ hide: Amagar mèdia
+ show: Mostrar mèdia
+ title: Mèdia
+ no_media: Cap mèdia
+ title: Estatuts del compteAccount statuses
+ with_media: Amb mèdia
subscriptions:
callback_url: URL de rapèl
confirmed: Confirmat
@@ -261,11 +281,11 @@ oc:
x_seconds: Fa %{count} segondas
deletes:
bad_password_msg: Ben ensajat pirata ! Senhal incorrècte
- confirm_password: Picatz vòstre senhal acutal per verificar vòstra identitat
+ confirm_password: Picatz vòstre senhal actual per verificar vòstra identitat
description_html: Aquò suprimirà definitivament e sens possibilitat de retorn lo contengut de vòstre compte e lo desactivarà. Lo nom d’utilizaire serà gardat per evitar una futura impostura.
- proceed: Delete account
- success_msg: Your account was successfully deleted
- warning_html: La supression del contengut d’aquesta instància es sola assegurada. Lo contengut fòrça partejat daissarà problablament de traças. Los servidors fòra-linha e los que vos sègon pas mai auràn pas la mesa a jorn de lor basa de donada.
+ proceed: Suprimir lo compte
+ success_msg: Compte ben suprimit
+ warning_html: La supression del contengut d’aquesta instància es sola assegurada. Lo contengut fòrça partejat daissarà probablament de traças. Los servidors fòra-linha e los que vos sègon pas mai auràn pas la mesa a jorn de lor basa de donada.
warning_title: Disponibilitat del contengut difusat
errors:
'404': La pagina que recercatz existís pas.
@@ -282,7 +302,7 @@ oc:
storage: Mèdias gardats
followers:
domain: Domeni
- explanation_html: Se volètz vos assegurar de la confidencialitat de vòstres estatuts, vos cal saber qual sèc vòstre compte. Vòstres estatuts privats son enviats a totas las instàncias qu’an de mond que vos sègon.. Benlèu que volètz repassar vòstra lista e tirar los seguidors s’avètz de dubtes tocant las politica de confidencialitat de lor instàncias.
+ explanation_html: Se volètz vos assegurar de la confidencialitat de vòstres estatuts, vos cal saber qual sèc vòstre compte. Vòstres estatuts privats son enviats a totas las instàncias qu’an de mond que vos sègon.. Benlèu que volètz repassar vòstra lista e tirar los seguidors s’avètz de dobtes tocant las politica de confidencialitat de lor instàncias.
followers_count: Nombre de seguidors
lock_link: Clavar vòstre compte
purge: Tirar dels seguidors
@@ -307,7 +327,7 @@ oc:
following: Lista de mond que seguètz
muting: Lista de mond que volètz pas legir
upload: Importar
- landing_strip_html: "%{name} es un utilizaire de %{link_to_root_path}. Podètz lo/la sègre o interagir amb el o ela s’avètz un compte ont que siasgue sul fediverse."
+ landing_strip_html: "%{name} es un utilizaire de %{link_to_root_path}. Podètz lo/la sègre o interagir amb el o ela s’avètz un compte ont que siasque sul fediverse."
landing_strip_signup_html: S’es pas lo cas, podètz vos marcar aquí.
media_attachments:
validations:
@@ -347,6 +367,45 @@ oc:
missing_resource: URL de redireccion pas trobada
proceed: Contunhatz per sègre
prompt: 'Sètz per sègre :'
+ sessions:
+ activity: Darrièra activitat
+ browser: Navigator
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ firefox: Firefox
+ generic: Navigator desconegut
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Session en cors
+ description: "%{browser} sus %{platform}"
+ explanation: Aquí los navigators connectats a vòstre compte Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: plataforma desconeguda
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Revocar
+ revoke_success: Session ben revocada
+ title: Sessions
settings:
authorized_apps: Aplicacions autorizadas
back: Tornar a Mastodon
@@ -354,7 +413,7 @@ oc:
edit_profile: Modificar lo perfil
export: Export donadas
followers: Seguidors autorizats
- import: Import
+ import: Importar
preferences: Preferéncias
settings: Paramètres
two_factor_authentication: Autentificacion en dos temps
@@ -373,6 +432,76 @@ oc:
click_to_show: Clicatz per afichar
reblogged: a partejat
sensitive_content: Contengut sensible
+ terms:
+ body_html: |
+
Politica de confidencialitat
+
+
Quinas informacions collectem ?
+
+
Collectem informacions sus vos quand vos marcatz sus nòstre site e juntem las donadas quand participatz a nòstre forum ne legissent, escrivent e notant lo contengut partejat aquí.
+
+
Pendent l’inscripcion podèm vos demandar vòstre nom e adreça de corrièl. Podètz çaquelà visitar nòstre site sens vos marcar. Verificarem vòstra adreça amb un messatge donant un ligam unic. Se clicatz sul ligam sauprem qu’avètz lo contraròtle de l’adreça.
+
+
Quand sètz marcat e que publicatz quicòm, enregistrem l’adreça IP d’origina. Podèm tanben salvagardar los jornals del servidor que tenon l’adreça IP de totas las demandas fachas al nòstre servidor.
+
+
Qué fasèm de vòstras informacions ?
+
+
Totas las informacions que collectem de vos pòdon servir dins los cases seguents :
+
+
+
Per personalizar vòstre experiéncia — vòstras informacions nos ajudaràn a respondre melhor a vòstres besonhs individuals.
+
Per melhorar nòstre site — s’eforcem de longa a melhorar çò que nòstre site ofrís segon las informacions e los comentaris que recebèm de vòstra part.
+
Per melhorar nòstre servici client — vòstras informacions nos ajudan per respondre amb mai eficacitat a vòstras demandas d’assisténcia.
+
Per enviar periodicament de corrièls — Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
+
+
+
Cossí protegèm vòstras informacions ?
+
+
Apliquem tota una mena de mesuras de seguretat per manténer la fisança de vòstras informacions personalas quand las picatz, mandatz, o i accedètz.
+
+
Quala es vòstra politica de conservacion de donadas ?
+
+
Farem esfòrces per :
+
+
+
Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
+
Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 5 ans.
+
+
+
Empleguem de cookies ?
+
+
Òc-ben. Los cookies son de pichons fichièrs qu’un site o sos forneires de servicis plaçan dins lo disc dur de vòstre ordenador via lo navigator Web (Se los acceptatz). Aqueles cookies permeton al site de reconéisser vòstre navigator e se tenètz un compte enregistrat de l’associar a vòstre compte.
+
+
Empleguem de cookies per comprendre e enregistrar vòstras preferéncias per vòstras visitas venentas, per recampar de donadas sul trafic del site e las interaccions per fin que posquem ofrir una melhora experiéncia del site e de las aisinas pel futur. Pòt arribar que contractèssem amb de forneires de servicis tèrces per nos ajudar a comprendre melhor nòstres visitors. Aqueles forneires an pas lo drech que d’utilizar las donadas collectadas per nos ajudar a menar e melhorar nòstre afar.
+
+
Divulguem d’informacions a de partits exteriors ?
+
+
Vendèm pas, comercem o qualque transferiment que siasque a de partits exteriors vòstras informacions personalas identificablas. Aquò inclutz pas los tèrces partits de confisança que nos assiston a menar nòstre site, menar nòstre afar o vos servir, baste que son d’acòrd per gardar aquelas informacions confidencialas. Pòt tanben arribar que liberèssem vòstras informacions quand cresèm qu’es apropriat d’o far per se sometre a la lei, per refortir nòstras politicas, o per protegir los dreches, proprietats o seguritat de qualqu’un o de nosautres. Pasmens es possible que mandèssem d’informacions non-personalas e identificablas de nòstres visitors a d’autres partits per d’utilizacion en marketing, publicitat o un emplec mai.
+
+
Ligams de tèrces partits
+
+
Pòt arribar, a nòstra discrecion, qu’incluguèssem o ofriguèssem de produches o servicis de tèrces partits sus nòstre site. Aqueles sites tèrces an de politicas de confidencialitats separadas e independentas. En consequéncia avèm pas cap de responsabilitat pel contengut e las activitats d’aqueles sites ligats. Pasmens cerquem de protegir l’integritat de nòstre site e aculhèm los comentaris tocant aqueles sites.
+
+
Conformitat amb la lei de proteccion de la confidencialitat dels mainatges
+
+
Nòstre site, nòstres produches e servicis son totes destinats a de monde d’almens 13 ans. S’aqueste servidor se tròba en los Estats Units per acontentar las exigéncias del COPPA (Children's Online Privacy Protection Act) utilizetz pas aqueste site.
+
+
Politica de confidencialitat en linha solament
+
+
Aquesta politica de confidencialitat s’aplica pas qu’a las informacions collectadas via nòstre site e non pas a las informacions collectadas fòra linha.
+
+
Vòstre consentiment
+
+
N’utilizant nòstre site, consentètz a nòstra politica de confidencialitat.
+
+
Cambiament dins nòstra politica de confidencialitat
+
+
Se decidèm de cambiar nòstra politica de confidencialitat, publicarem los cambiaments sus aquesta pagina.
+
+
Aqueste document es jos licéncia CC-BY-SA. Darrièra mesa a jorn lo 31 de mai de 2013
+ title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
time:
formats:
default: Lo %d %b de %Y a %Ho%M
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 325d52b45ce..02c97e955d3 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -3,12 +3,16 @@ pl:
about:
about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform.
about_this: O tej instancji
- business_email: 'Służbowy adres e-mail:'
closed_registrations: Rejestracja na tej instancji jest obecnie zamknięta. Możesz jednak zarejestrować się na innej instancji, uzyskując dostęp do tej samej sieci.
contact: Kontakt
+ contact_missing: Nie ustawiono
+ contact_unavailable: Nie dotyczy
description_headline: Czym jest %{domain}?
domain_count_after: instancji
domain_count_before: Serwer połączony z
+ extended_description_html: |
+
Dobre miejsce na zasady użytkowania
+
Nie ustawiono jeszcze szczegółowego opisu
features:
humane_approach_body: Nauczeni na błędach innych sieci społecznościowych, zaprojektowaliśmy Mastodona tak, aby uniknąć częstych nadużyć.
humane_approach_title: Bardziej ludzkie podejście
@@ -20,18 +24,14 @@ pl:
within_reach_title: Zawsze w Twoim zasięgu
find_another_instance: Znajdź inną instancję
generic_description: "%{domain} jest jednym z serwerów sieci"
- get_started: Rozpocznijmy!
hosted_on: Mastodon uruchomiony na %{domain}
learn_more: Dowiedz się więcej
- links: Odnośniki
other_instances: Lista instancji
source_code: Kod źródłowy
status_count_after: wpisów
status_count_before: Są autorami
- terms: Regulamin
user_count_after: użytkowników
user_count_before: Z serwera korzysta
- version: Wersja
what_is_mastodon: Czym jest Mastodon?
accounts:
follow: Śledź
@@ -198,8 +198,8 @@ pl:
show: Pokaż zawartość multimedialną
title: Media
no_media: Bez zawartości multimedialnej
- with_media: Z zawartością multimedialną
title: Statusy konta
+ with_media: Z zawartością multimedialną
subscriptions:
callback_url: URL zwrotny
confirmed: Potwierdzono
@@ -272,7 +272,7 @@ pl:
content: Sprawdzanie bezpieczeństwa nie powiodło się. Czy blokujesz pliki cookie?
title: Sprawdzanie bezpieczeństwa nie powiodło się
'429': Uduszono
- noscript: Aby korzystać z Mastodona, włącz JavaScript.
+ noscript: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z natywnej aplikacji obsługującej Twoje urządzenie.
exports:
blocks: Blokujesz
csv: CSV
@@ -351,15 +351,15 @@ pl:
follow:
title: "%{name} zaczął Cię śledzić"
mention:
- action_boost: 'Podbij'
- action_expand: 'Pokaż więcej'
- action_favourite: 'Dodaj do ulubionych'
+ action_boost: Podbij
+ action_expand: Pokaż więcej
+ action_favourite: Dodaj do ulubionych
title: "%{name} wspomniał o Tobie"
reblog:
title: "%{name} podbił Twój status"
subscribed:
- body: "Otrzymujesz teraz powiadomienia push."
- title: "Zarejestrowano subskrypcję!"
+ body: Otrzymujesz teraz powiadomienia push.
+ title: Zarejestrowano subskrypcję!
remote_follow:
acct: Podaj swój adres (nazwa@domena), z którego chcesz śledzić
missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny
@@ -486,7 +486,7 @@ pl:
Polityka prywatności dotyczy tylko Internetu
-
Ta polityka prywatności dotyczy jedynie danych zbieranych w Internecie, nie tych, które przechowywane są na Twoim kompurerze, np. pliki cookies.
+
Ta polityka prywatności dotyczy jedynie danych zbieranych w Internecie, nie tych, które przechowywane są na Twoim komputerze, np. pliki cookies.
Wyrażenie zgody
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 5ba763ae410..9bd1b0d2823 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -1,24 +1,19 @@
---
pt-BR:
about:
- about_mastodon: Mastodon é um servidor de rede social grátis, e open-source. Uma alternativa descentralizada ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Escolha um servidor que você confie — qualquer um que escolher, você poderá interagir com todo o resto. Qualquer um pode ter uma instância Mastodon e assim participar na rede social federada sem problemas.
+ about_mastodon_html: Mastodon é um servidor de rede social grátis, e open-source. Uma alternativa descentralizada ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Escolha um servidor que você confie — qualquer um que escolher, você poderá interagir com todo o resto. Qualquer um pode ter uma instância Mastodon e assim participar na rede social federada sem problemas.
about_this: Sobre essa instância
- business_email: 'Email comercial:'
closed_registrations: Registros estão fechadas para essa instância.
contact: Contato
description_headline: O que é %{domain}?
domain_count_after: outras instâncias
domain_count_before: Conectado a
- get_started: Comece aqui
- links: Links
other_instances: Outras instâncias
source_code: Source code
status_count_after: status
status_count_before: Quem autorizou
- terms: Termos
user_count_after: usuários
user_count_before: Lugar de
- version: Versão
accounts:
follow: Seguir
followers: Seguidores
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 346fcdda88b..6bf592d1cb3 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -1,24 +1,19 @@
---
pt:
about:
- about_mastodon: Mastodon é uma rede social grátis e em código aberto. Uma alternativa descentralizada às plataformas comerciais, que evita o risco de uma única empresa monopolizar a tua comunicação. Escolhe um servidor que confies, não importa qual, pois vais poder comunicar com todos os outros. Qualquer um pode criar uma instância Mastodon e participar nesta rede social.
+ about_mastodon_html: Mastodon é uma rede social grátis e em código aberto. Uma alternativa descentralizada às plataformas comerciais, que evita o risco de uma única empresa monopolizar a tua comunicação. Escolhe um servidor que confies, não importa qual, pois vais poder comunicar com todos os outros. Qualquer um pode criar uma instância Mastodon e participar nesta rede social.
about_this: Sobre esta instância
- business_email: 'Email comercial:'
closed_registrations: Novos registos estão fechados nesta instância.
contact: Contacto
description_headline: O que é o %{domain}?
domain_count_after: outras instâncias
domain_count_before: Ligado a
- get_started: Começar
- links: Links
other_instances: Outras instâncias
source_code: Código fonte
status_count_after: publicações
status_count_before: Que fizeram
- terms: Termos
user_count_after: utilizadores
user_count_before: Casa para
- version: Versão
accounts:
follow: Seguir
followers: Seguidores
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 5cfc2b1caf8..141017f40f4 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -1,24 +1,19 @@
---
ru:
about:
- about_mastodon: Mastodon - это свободная социальная сеть с открытым исходным кодом. Как децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в социальной сети совершенно бесшовно.
+ about_mastodon_html: Mastodon - это свободная социальная сеть с открытым исходным кодом. Как децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в социальной сети совершенно бесшовно.
about_this: Об этом узле
- business_email: 'Деловой e-mail:'
closed_registrations: В данный момент регистрация на этом узле закрыта.
contact: Связаться
description_headline: Что такое %{domain}?
domain_count_after: другими узлами
domain_count_before: Связан с
- get_started: Начать
- links: Ссылки
other_instances: Другие узлы
source_code: Исходный код
status_count_after: статусов
status_count_before: Опубликовано
- terms: Условия
user_count_after: пользователей
user_count_before: Здесь живет
- version: Версия
accounts:
follow: Подписаться
followers: Подписчики
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 536bb06e10e..fb8524a24c0 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -41,9 +41,9 @@ en:
setting_default_privacy: Post privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
+ setting_noindex: Opt-out of search engine indexing
setting_system_font_ui: Use system's default font
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
- setting_noindex: Opt-out of search engine indexing
severity: Severity
type: Import type
username: Username
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 65845e1aa5a..70389e94826 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -9,7 +9,6 @@ ja:
locked: フォロワーを手動で承認する必要があります。
note: あと%{count}文字入力できます。
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
-
imports:
data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい
sessions:
@@ -38,9 +37,9 @@ ja:
setting_default_privacy: 投稿の公開範囲
setting_default_sensitive: メディアを常に閲覧注意としてマークする
setting_delete_modal: トゥートを削除する前に確認ダイアログを表示する
+ setting_noindex: 検索エンジンによるインデックスを拒否する
setting_system_font_ui: システムのデフォルトフォントを使う
setting_unfollow_modal: フォロー解除する前に確認ダイアログを表示する
- setting_noindex: 検索エンジンによるインデックスを拒否する
severity: 重大性
type: インポートする項目
username: ユーザー名
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index a8f25905716..43cb52201ae 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -27,6 +27,7 @@ oc:
data: Data
display_name: Escais
email: Corrièl
+ filtered_languages: Lengas filtradas
header: Bandièra
locale: Lenga
locked: Far venir lo compte privat
@@ -37,7 +38,11 @@ oc:
setting_auto_play_gif: Lectura automatica dels GIFS animats
setting_boost_modal: Afichar una fenèstra de confirmacion abans de partejar un estatut
setting_default_privacy: Confidencialitat de las publicacions
+ setting_default_sensitive: Totjorn marcar los mèdias coma sensibles
setting_delete_modal: Afichar una fenèstra de confirmacion abans de suprimir un estatut
+ setting_noindex: Èsser pas indexat pels motors de recèrca
+ setting_system_font_ui: Utilizar la policia Font del sisèma
+ setting_unfollow_modal: Afichar una confirmacion abans de quitar de sègre qualqu’un
severity: Severitat
type: Tip d’impòrt
username: Nom d’utilizaire
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index dc5492ea5ef..7e84472b9c3 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -40,14 +40,13 @@ pl:
otp_attempt: Kod uwierzytelnienia dwustopniowego
password: Hasło
setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
-
setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
setting_default_privacy: Widoczność posta
setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
setting_delete_modal: Pytaj o potwierdzenie przed usunięciem postu
+ setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
setting_system_font_ui: Używaj domyślnej czcionki systemu
setting_unfollow_modal: Pytaj o potwierdzenie przed usunięciem śledzenia
- setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
severity: Priorytet
type: Typ importu
username: Nazwa użytkownika
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 17eb96110de..89782209e78 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -1,24 +1,19 @@
---
th:
about:
- about_mastodon: แมสโทดอน เป็น ดีเซ็นทรัลไลซ์ฟรีโอเพ่นซอร์ส โซเชี่ยวเน็ตเวริ์ค. เป็นทางเลือกทดแทนโซเชี่ยวเน็ตเวิร์คที่ทำเป็นธุรกิจการค้า, ป้องกันการผูกขาดช่องทางการสื่อสารของคุณ. เลือกเซร์ฟเวอร์ที่คุณไว้ใจ — ที่คุณเลือกได้เอง, สื่อสารกับคนที่คุณต้องการได้เสมอ. ใครๆก็รันแมสโทดอนอินซะแตนซ์ได้ และ เชื่อมต่อกับโซเชี่ยวเน็ตเวิร์ค โดยไม่มีอะไรมาขวางกั้น.
+ about_mastodon_html: แมสโทดอน เป็น ดีเซ็นทรัลไลซ์ฟรีโอเพ่นซอร์ส โซเชี่ยวเน็ตเวริ์ค. เป็นทางเลือกทดแทนโซเชี่ยวเน็ตเวิร์คที่ทำเป็นธุรกิจการค้า, ป้องกันการผูกขาดช่องทางการสื่อสารของคุณ. เลือกเซร์ฟเวอร์ที่คุณไว้ใจ — ที่คุณเลือกได้เอง, สื่อสารกับคนที่คุณต้องการได้เสมอ. ใครๆก็รันแมสโทดอนอินซะแตนซ์ได้ และ เชื่อมต่อกับโซเชี่ยวเน็ตเวิร์ค โดยไม่มีอะไรมาขวางกั้น.
about_this: เกี่ยวกับอินซะแตนซ์นี้
- business_email: 'อีเมล์ธุรกิจ:'
closed_registrations: อินซะแตนซ์นี้ปิดรับลงทะเบียนแล้ว.
contact: ติดต่อ
description_headline: โดเมนคือ %{domain} ?
domain_count_after: อินซะแตนซ์อื่นๆ
domain_count_before: เชื่อมต่อกับ
- get_started: เริ่มกันเลย
- links: ลิงก์
other_instances: อินซะแตนซ์อื่นๆ
source_code: ซอร์สโค๊ด
status_count_after: สถานะ
status_count_before: Who authored
- terms: เงื่อนไข
user_count_after: ผู้ใช้
user_count_before: Home to
- version: เวอร์ชั่น
accounts:
follow: ติดตาม
followers: ผู้ติดตาม
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index bb83991cd92..a1f2d2078a0 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1,24 +1,19 @@
---
tr:
about:
- about_mastodon: 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_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: Bu sunucu hakkında
- business_email: 'İş e-postası:'
closed_registrations: Bu sunucu şu anda yeni kayıt almamaktadır.
contact: İletişim
description_headline: Peki %{domain} nedir?
domain_count_after: sunucu var.
domain_count_before: Bağlı olduğu
- get_started: Kayıt ol
- links: Bağlantılar
other_instances: Diğer sunucular
source_code: Kaynak kodu
status_count_after: adet gönderi yazıldı.
status_count_before: Şu ana kadar
- terms: Kullanım koşulları
user_count_after: kullanıcı var.
user_count_before: Kayıtlı
- version: Sürüm
accounts:
follow: Takip et
followers: Takipçiler
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 129fc5bb79f..3237ea1db71 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1,24 +1,19 @@
---
uk:
about:
- about_mastodon: Mastodon - це вільна соціальна мережа з відкритим вихідним кодом. Вона є децентралізованою альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте — що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в соціальній мережі.
+ about_mastodon_html: Mastodon - це вільна соціальна мережа з відкритим вихідним кодом. Вона є децентралізованою альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте — що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в соціальній мережі.
about_this: Про цю інстанцію
- business_email: 'Діловий email:'
closed_registrations: На даний момент реєстрація на цій інстанції закрита.
contact: Зв'язатися
description_headline: Що таке %{domain}?
domain_count_after: іншими інстанціями
domain_count_before: Зв'язаний з
- get_started: Почати
- links: Посилання
other_instances: Інші інстанції
source_code: Вихідний код
status_count_after: статусів
status_count_before: Опубліковано
- terms: Умови
user_count_after: користувачів
user_count_before: Тут живе
- version: Версія
accounts:
follow: Підписатися
followers: Підписники
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 0526ec1ba1d..0b026329454 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -1,24 +1,19 @@
---
zh-CN:
about:
- about_mastodon: Mastodon(长毛象)是一个自由、开放源码的社交网站。它是一个分布式的服务,避免你的通信被单一商业机构垄断操控。请你选择一家你信任的 Mastodon 实例,在上面创建帐号,然后你就可以和任一 Mastodon 实例上的用户互通,享受无缝的社交交流。
+ about_mastodon_html: Mastodon(长毛象)是一个自由、开放源码的社交网站。它是一个分布式的服务,避免你的通信被单一商业机构垄断操控。请你选择一家你信任的 Mastodon 实例,在上面创建帐号,然后你就可以和任一 Mastodon 实例上的用户互通,享受无缝的社交交流。
about_this: 关于本实例
- business_email: 商业电邮︰
closed_registrations: 这个实例目前不开放注册 _(:3」∠)_
contact: 联络
description_headline: 关于 %{domain}
domain_count_after: 个其它实例
domain_count_before: 现已接入
- get_started: 上手使用
- links: 链接
other_instances: 其它实例
source_code: 源码
status_count_after: 条嘟文
status_count_before: 他们共嘟出了
- terms: 条款
user_count_after: 位用户
user_count_before: 这里共注册有
- version: 版本
accounts:
follow: 关注
followers: 粉丝
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 06f9ab63d48..40087ed532b 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -1,24 +1,19 @@
---
zh-HK:
about:
- about_mastodon: Mastodon(萬象)是自由、開源的社交網絡。服務站各自獨立而互連,避免單一商業機構壟斷。找你所信任的服務站,建立帳號,你即可與任何服務站上的用戶溝通,享受無縫的網絡交流。
+ about_mastodon_html: Mastodon(萬象)是自由、開源的社交網絡。服務站各自獨立而互連,避免單一商業機構壟斷。找你所信任的服務站,建立帳號,你即可與任何服務站上的用戶溝通,享受無縫的網絡交流。
about_this: 關於本服務站
- business_email: 聯絡網站管理者︰
closed_registrations: 本服務站暫時停止接受登記。
contact: 聯絡
description_headline: 關於 %{domain}
domain_count_after: 個其他服務站
domain_count_before: 已連接至
- get_started: 立即登記
- links: 連結
other_instances: 其他服務站
source_code: 源代碼
status_count_after: 篇文章
status_count_before: 他們共發佈了
- terms: 使用條款
user_count_after: 位使用者
user_count_before: 這裏共註冊有
- version: 版本
accounts:
follow: 關注
followers: 關注者
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 67aa2830fa4..e25edc8905d 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1,21 +1,17 @@
---
zh-TW:
about:
- about_mastodon: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 服務站,在上面建立帳號,然後您就可以和任一 Mastodon 服務站上的使用者互通,享受無縫的社群網路交流。
+ about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 服務站,在上面建立帳號,然後您就可以和任一 Mastodon 服務站上的使用者互通,享受無縫的社群網路交流。
about_this: 關於本服務站
- business_email: 商務信箱︰
closed_registrations: 本服務站暫時停止接受註冊。
contact: 聯絡我們
description_headline: 關於 %{domain}
domain_count_after: 個服務站相連
domain_count_before: 與其他
- get_started: 立即註冊
- links: 連結
other_instances: 其他服務站
source_code: 原始碼
status_count_after: 篇文章
status_count_before: 他們共發佈了
- terms: 使用條款
user_count_after: 位註冊使用者
user_count_before: 這裡共有
accounts:
diff --git a/config/routes.rb b/config/routes.rb
index 50e32cce01a..71729fee5e3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -26,7 +26,7 @@ Rails.application.routes.draw do
confirmations: 'auth/confirmations',
}
- get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? }
+ get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] do
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 78aaa311cf3..8273c120192 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -18,3 +18,6 @@
doorkeeper_cleanup_scheduler:
cron: '1 1 * * 0'
class: Scheduler::DoorkeeperCleanupScheduler
+ user_cleanup_scheduler:
+ cron: '4 5 * * *'
+ class: Scheduler::UserCleanupScheduler
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 3c92ce41792..07969aff4b7 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,23 +9,27 @@ module Mastodon
end
def minor
- 4
+ 5
end
def patch
- 7
+ 0
end
def pre
nil
end
+ def flags
+ 'rc1'
+ end
+
def to_a
[major, minor, patch, pre].compact
end
def to_s
- to_a.join('.')
+ [to_a.join('.'), flags].join
end
end
end
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index bceeeaf0114..2265235548b 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -1,18 +1,10 @@
# frozen_string_literal: true
namespace :mastodon do
- desc 'Execute daily tasks'
+ desc 'Execute daily tasks (deprecated)'
task :daily do
- %w(
- mastodon:feeds:clear
- mastodon:media:clear
- mastodon:users:clear
- mastodon:push:refresh
- ).each do |task|
- puts "Starting #{task} at #{Time.now.utc}"
- Rake::Task[task].invoke
- end
- puts "Completed daily tasks at #{Time.now.utc}"
+ # No-op
+ # All of these tasks are now executed via sidekiq-scheduler
end
desc 'Turn a user into an admin, identified by the USERNAME environment variable'
@@ -143,6 +135,13 @@ namespace :mastodon do
task clear_all: :environment do
Redis.current.keys('feed:*').each { |key| Redis.current.del(key) }
end
+
+ desc 'Generates home timelines for users who logged in in the past two weeks'
+ task build: :environment do
+ User.active.includes(:account).find_each do |u|
+ PrecomputeFeedService.new.call(u.account)
+ end
+ end
end
namespace :emails do
@@ -155,14 +154,10 @@ namespace :mastodon do
end
namespace :users do
- desc 'Clear out unconfirmed users'
+ desc 'Clear out unconfirmed users (deprecated)'
task clear: :environment do
- # Users that never confirmed e-mail never signed in, means they
- # only have a user record and an avatar record, with no files uploaded
- User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
- Account.where(id: batch.map(&:account_id)).delete_all
- User.where(id: batch.map(&:id)).delete_all
- end
+ # No-op
+ # This task is now executed via sidekiq-scheduler
end
desc 'List e-mails of all admin users'
diff --git a/package.json b/package.json
index c90e49db5c8..132d7017d53 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
"compression-webpack-plugin": "^0.4.0",
"cross-env": "^5.0.1",
"css-loader": "^0.28.4",
+ "detect-passive-events": "^1.0.2",
"dotenv": "^4.0.0",
"emojione": "^2.2.7",
"emojione-picker": "^2.2.1",
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
index 3a475f61f31..0b4eb9fdf88 100644
Binary files a/public/android-chrome-192x192.png and b/public/android-chrome-192x192.png differ
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
index b05996b3744..829263f8396 100644
Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ
diff --git a/public/badge.png b/public/badge.png
index fc1f42dca13..a1f2f8b0897 100644
Binary files a/public/badge.png and b/public/badge.png differ
diff --git a/public/browserconfig.xml b/public/browserconfig.xml
index fcf794bc22c..7fdab5058ed 100644
--- a/public/browserconfig.xml
+++ b/public/browserconfig.xml
@@ -3,7 +3,7 @@
- #1ea21e
+ #282c37
diff --git a/public/favicon-dev.ico b/public/favicon-dev.ico
index 5f725d58700..3836044068b 100644
Binary files a/public/favicon-dev.ico and b/public/favicon-dev.ico differ
diff --git a/public/favicon.ico b/public/favicon.ico
index 3673ac0d546..79000c9cc43 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/mask-icon.svg b/public/mask-icon.svg
index c3523011733..f91ff5067b9 100644
--- a/public/mask-icon.svg
+++ b/public/mask-icon.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png
index 57eae8355d0..e8e289eaac9 100644
Binary files a/public/mstile-150x150.png and b/public/mstile-150x150.png differ
diff --git a/scalingo.json b/scalingo.json
index 4afaa6b4e01..8df2caba16f 100644
--- a/scalingo.json
+++ b/scalingo.json
@@ -2,7 +2,7 @@
"name": "Mastodon",
"description": "A GNU Social-compatible microblogging server",
"repository": "https://github.com/tootsuite/mastodon",
- "logo": "https://github.com/tootsuite/mastodon/raw/master/app/assets/images/logo.png",
+ "logo": "https://github.com/tootsuite/mastodon/raw/master/app/javascript/images/logo.svg",
"env": {
"LOCAL_DOMAIN": {
"description": "The domain that your Mastodon instance will run on (this can be appname.scalingo.io or a custom domain)",
diff --git a/spec/controllers/api/web/push_subscriptions_controller_spec.rb b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
index 871176a07a0..7e83b801d14 100644
--- a/spec/controllers/api/web/push_subscriptions_controller_spec.rb
+++ b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
@@ -9,7 +9,7 @@ describe Api::Web::PushSubscriptionsController do
let(:create_payload) do
{
- data: {
+ subscription: {
endpoint: 'https://fcm.googleapis.com/fcm/send/fiuH06a27qE:APA91bHnSiGcLwdaxdyqVXNDR9w1NlztsHb6lyt5WDKOC_Z_Q8BlFxQoR8tWFSXUIDdkyw0EdvxTu63iqamSaqVSevW5LfoFwojws8XYDXv_NRRLH6vo2CdgiN4jgHv5VLt2A8ah6lUX',
keys: {
p256dh: 'BEm_a0bdPDhf0SOsrnB2-ategf1hHoCnpXgQsFj5JCkcoMrMt2WHoPfEYOYPzOIs9mZE8ZUaD7VA5vouy0kEkr8=',
@@ -36,25 +36,17 @@ describe Api::Web::PushSubscriptionsController do
it 'saves push subscriptions' do
sign_in(user)
- stub_request(:post, create_payload[:data][:endpoint]).to_return(status: 200)
+ stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
post :create, format: :json, params: create_payload
user.reload
- push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:data][:endpoint])
+ push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
- expect(push_subscription['endpoint']).to eq(create_payload[:data][:endpoint])
- expect(push_subscription['key_p256dh']).to eq(create_payload[:data][:keys][:p256dh])
- expect(push_subscription['key_auth']).to eq(create_payload[:data][:keys][:auth])
- end
-
- it 'sends welcome notification' do
- sign_in(user)
-
- stub_request(:post, create_payload[:data][:endpoint]).to_return(status: 200)
-
- post :create, format: :json, params: create_payload
+ expect(push_subscription['endpoint']).to eq(create_payload[:subscription][:endpoint])
+ expect(push_subscription['key_p256dh']).to eq(create_payload[:subscription][:keys][:p256dh])
+ expect(push_subscription['key_auth']).to eq(create_payload[:subscription][:keys][:auth])
end
end
@@ -62,15 +54,15 @@ describe Api::Web::PushSubscriptionsController do
it 'changes alert settings' do
sign_in(user)
- stub_request(:post, create_payload[:data][:endpoint]).to_return(status: 200)
+ stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
post :create, format: :json, params: create_payload
- alerts_payload[:id] = Web::PushSubscription.find_by(endpoint: create_payload[:data][:endpoint]).id
+ alerts_payload[:id] = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint]).id
put :update, format: :json, params: alerts_payload
- push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:data][:endpoint])
+ push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
expect(push_subscription.data['follow']).to eq(alerts_payload[:data][:follow])
expect(push_subscription.data['favourite']).to eq(alerts_payload[:data][:favourite])
diff --git a/spec/views/about/_contact.html.haml_spec.rb b/spec/views/about/_contact.html.haml_spec.rb
index d2e7a459899..25ba1579464 100644
--- a/spec/views/about/_contact.html.haml_spec.rb
+++ b/spec/views/about/_contact.html.haml_spec.rb
@@ -31,12 +31,5 @@ describe 'about/_contact.html.haml' do
expect(rendered).to have_content('admin@example.com')
end
-
- it 'does not show info when email is missing' do
- contact = double(site_contact_email: nil, contact_account: nil)
- render 'about/contact', contact: contact
-
- expect(rendered).not_to have_content(I18n.t('about.business_email'))
- end
end
end
diff --git a/spec/views/about/_links.html.haml_spec.rb b/spec/views/about/_links.html.haml_spec.rb
deleted file mode 100644
index 2d7f7467a04..00000000000
--- a/spec/views/about/_links.html.haml_spec.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe 'about/_links.html.haml' do
- context 'when signed in' do
- before do
- allow(view).to receive(:user_signed_in?).and_return(true)
- end
-
- it 'does not show sign in link' do
- render 'about/links', instance: InstancePresenter.new
-
- expect(rendered).to have_content(I18n.t('about.get_started'))
- expect(rendered).not_to have_content(I18n.t('auth.login'))
- end
- end
-
- context 'when signed out' do
- before do
- allow(view).to receive(:user_signed_in?).and_return(false)
- end
-
- it 'shows get started link when registrations are allowed' do
- render 'about/links', instance: double(open_registrations: true)
-
- expect(rendered).to have_content(I18n.t('about.get_started'))
- expect(rendered).to have_content(I18n.t('auth.login'))
- end
-
- it 'hides get started link when registrations are closed' do
- render 'about/links', instance: double(open_registrations: false)
-
- expect(rendered).not_to have_content(I18n.t('about.get_started'))
- expect(rendered).to have_content(I18n.t('auth.login'))
- end
- end
-end
diff --git a/spec/workers/pubsubhubbub/confirmation_worker_spec.rb b/spec/workers/pubsubhubbub/confirmation_worker_spec.rb
index 8f66b4520c0..1eecdd2b5b6 100644
--- a/spec/workers/pubsubhubbub/confirmation_worker_spec.rb
+++ b/spec/workers/pubsubhubbub/confirmation_worker_spec.rb
@@ -83,6 +83,6 @@ describe Pubsubhubbub::ConfirmationWorker do
end
def http_headers
- { 'Connection' => 'close', 'Host' => 'example.com', 'User-Agent' => 'http.rb/2.2.2 (Mastodon/1.4.7; +https://cb6e6126.ngrok.io/)' }
+ { 'Connection' => 'close', 'Host' => 'example.com' }
end
end
diff --git a/spec/workers/pubsubhubbub/delivery_worker_spec.rb b/spec/workers/pubsubhubbub/delivery_worker_spec.rb
index b720015680e..c0e0d51866f 100644
--- a/spec/workers/pubsubhubbub/delivery_worker_spec.rb
+++ b/spec/workers/pubsubhubbub/delivery_worker_spec.rb
@@ -59,7 +59,6 @@ describe Pubsubhubbub::DeliveryWorker do
'Content-Type' => 'application/atom+xml',
'Host' => 'example.com',
'Link' => "; rel=\"hub\", ; rel=\"self\"",
- 'User-Agent' => 'http.rb/2.2.2 (Mastodon/1.4.7; +https://cb6e6126.ngrok.io/)',
}.tap do |basic|
known_digest = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), subscription.secret.to_s, payload)
basic.merge('X-Hub-Signature' => "sha1=#{known_digest}") if subscription.secret?
diff --git a/yarn.lock b/yarn.lock
index dcf09643e05..0f895f3b61b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2328,6 +2328,10 @@ detect-node@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
+detect-passive-events@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.2.tgz#0e39d7b675907eff55b8965f5be3fc0b0f4178b9"
+
diff@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"