- {!onCloseVideo &&
}
+ {!onCloseVideo &&
}
{(!fullscreen && onOpenVideo) &&
}
{onCloseVideo &&
}
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index 8c2e9d2de..125508c23 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -13,9 +13,12 @@ export const deleteModal = getMeta('delete_modal');
export const me = getMeta('me');
export const searchEnabled = getMeta('search_enabled');
export const invitesEnabled = getMeta('invites_enabled');
+export const repository = getMeta('repository');
+export const source_url = getMeta('source_url');
export const version = getMeta('version');
export const mascot = getMeta('mascot');
export const profile_directory = getMeta('profile_directory');
export const isStaff = getMeta('is_staff');
+export const forceSingleColumn = !getMeta('advanced_layout');
export default initialState;
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 6ed799941..2898c139e 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -71,12 +71,13 @@
"compose_form.lock_disclaimer": "حسابك ليس {locked}. يمكن لأي شخص متابعتك و عرض المنشورات.",
"compose_form.lock_disclaimer.lock": "مقفل",
"compose_form.placeholder": "فيمَ تفكّر؟",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "إضافة خيار",
+ "compose_form.poll.duration": "مدة استطلاع الرأي",
+ "compose_form.poll.option_placeholder": "الخيار {number}",
+ "compose_form.poll.remove_option": "إزالة هذا الخيار",
"compose_form.publish": "بوّق",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "لقد تم تحديد هذه الصورة كحساسة",
"compose_form.sensitive.unmarked": "لم يتم تحديد الصورة كحساسة",
"compose_form.spoiler.marked": "إنّ النص مخفي وراء تحذير",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "رموز",
"emoji_button.travel": "أماكن و أسفار",
"empty_column.account_timeline": "ليس هناك تبويقات!",
+ "empty_column.account_unavailable": "الملف الشخصي غير متوفر",
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
"empty_column.community": "الخط الزمني المحلي فارغ. أكتب شيئا ما للعامة كبداية !",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
@@ -150,7 +152,7 @@
"hashtag.column_settings.tag_mode.all": "كلها",
"hashtag.column_settings.tag_mode.any": "أي كان مِن هذه",
"hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود",
"home.column_settings.basic": "أساسية",
"home.column_settings.show_reblogs": "عرض الترقيات",
"home.column_settings.show_replies": "عرض الردود",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "للتركيز على البحث",
"keyboard_shortcuts.start": "لفتح عمود \"هيا نبدأ\"",
"keyboard_shortcuts.toggle_hidden": "لعرض أو إخفاء النص مِن وراء التحذير",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "لتحرير تبويق جديد",
"keyboard_shortcuts.unfocus": "لإلغاء التركيز على حقل النص أو نافذة البحث",
"keyboard_shortcuts.up": "للإنتقال إلى أعلى القائمة",
"lightbox.close": "إغلاق",
"lightbox.next": "التالي",
"lightbox.previous": "العودة",
+ "lightbox.view_context": "View context",
"lists.account.add": "أضف إلى القائمة",
"lists.account.remove": "إحذف من القائمة",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "المفضلة",
"navigation_bar.filters": "الكلمات المكتومة",
"navigation_bar.follow_requests": "طلبات المتابعة",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "عن هذا الخادم",
"navigation_bar.keyboard_shortcuts": "إختصارات لوحة المفاتيح",
"navigation_bar.lists": "القوائم",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "التبويقات المثبتة",
"navigation_bar.preferences": "التفضيلات",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "الخيط العام الموحد",
"navigation_bar.security": "الأمان",
"notification.favourite": "أُعجِب {name} بمنشورك",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "عرض",
"notifications.column_settings.follow": "متابعُون جُدُد :",
"notifications.column_settings.mention": "الإشارات :",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "نتائج استطلاع الرأي:",
"notifications.column_settings.push": "الإخطارات المدفوعة",
"notifications.column_settings.reblog": "الترقيّات:",
"notifications.column_settings.show": "إعرِضها في عمود",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "المفضلة",
"notifications.filter.follows": "يتابِع",
"notifications.filter.mentions": "الإشارات",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "نتائج استطلاع الرأي",
"notifications.group": "{count} إشعارات",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
+ "poll.closed": "انتهى",
+ "poll.refresh": "تحديث",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.vote": "صَوّت",
+ "poll_button.add_poll": "إضافة استطلاع للرأي",
+ "poll_button.remove_poll": "إزالة استطلاع الرأي",
"privacy.change": "إضبط خصوصية المنشور",
"privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط",
"privacy.direct.short": "مباشر",
@@ -339,7 +345,6 @@
"status.reply": "ردّ",
"status.replyAll": "رُد على الخيط",
"status.report": "إبلِغ عن @{name}",
- "status.sensitive_toggle": "اضغط للعرض",
"status.sensitive_warning": "محتوى حساس",
"status.share": "مشاركة",
"status.show_less": "إعرض أقلّ",
@@ -366,7 +371,7 @@
"upload_area.title": "إسحب ثم أفلت للرفع",
"upload_button.label": "إضافة وسائط (JPEG، PNG، GIF، WebM، MP4، MOV)",
"upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.focus": "قص",
"upload_form.undo": "حذف",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index a341567a7..0c00bda42 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "El testu nun va anubrise darrera d'una alvertencia",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes y llugares",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Entá nun bloquiesti a dengún usuariu.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "p'abrir la columna «entamar»",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "p'apenzar un toot nuevu",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "pa xubir na llista",
"lightbox.close": "Close",
"lightbox.next": "Siguiente",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Amestar a la llista",
"lists.account.remove": "Desaniciar de la llista",
"lists.delete": "Desaniciar la llista",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Pallabres silenciaes",
"navigation_bar.follow_requests": "Solicitúes de siguimientu",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Tocante a esta instancia",
"navigation_bar.keyboard_shortcuts": "Atayos",
"navigation_bar.lists": "Llistes",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toots fixaos",
"navigation_bar.preferences": "Preferencies",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Llinia temporal federada",
"navigation_bar.security": "Seguranza",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Responder",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Fai clic pa velu",
"status.sensitive_warning": "Conteníu sensible",
"status.share": "Share",
"status.show_less": "Amosar menos",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 49e043582..0480c8ca6 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Раздумай",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Затвори",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Extended information",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Предпочитания",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Публичен канал",
"navigation_bar.security": "Security",
"notification.favourite": "{name} хареса твоята публикация",
@@ -339,7 +345,6 @@
"status.reply": "Отговор",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Покажи",
"status.sensitive_warning": "Деликатно съдържание",
"status.share": "Share",
"status.show_less": "Show less",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 0d095bdeb..1afcce1a6 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -1,383 +1,388 @@
{
- "account.add_or_remove_from_list": "লিস্টে আরো যুক্ত বা মুছে ফেলুন",
+ "account.add_or_remove_from_list": "তালিকাতে আরো যুক্ত বা মুছে ফেলুন",
"account.badges.bot": "রোবট",
- "account.block": "@{name} কে বন্ধ করুন",
+ "account.block": "@{name} বন্ধ করুন",
"account.block_domain": "{domain} থেকে সব সরিয়ে ফেলুন",
"account.blocked": "বন্ধ করা হয়েছে",
- "account.direct": "@{name}কে সরকারি পাঠান",
- "account.domain_blocked": "বেবিসিটটি সরানো আছে",
- "account.edit_profile": "Edit profile",
- "account.endorse": "Feature on profile",
- "account.follow": "Follow",
- "account.followers": "Followers",
- "account.followers.empty": "No one follows this user yet.",
- "account.follows": "Follows",
- "account.follows.empty": "This user doesn't follow anyone yet.",
- "account.follows_you": "Follows you",
- "account.hide_reblogs": "Hide boosts from @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
- "account.media": "Media",
- "account.mention": "Mention @{name}",
- "account.moved_to": "{name} has moved to:",
- "account.mute": "Mute @{name}",
- "account.mute_notifications": "Mute notifications from @{name}",
- "account.muted": "Muted",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots and replies",
- "account.report": "Report @{name}",
- "account.requested": "Awaiting approval. Click to cancel follow request",
- "account.share": "Share @{name}'s profile",
- "account.show_reblogs": "Show boosts from @{name}",
- "account.unblock": "Unblock @{name}",
- "account.unblock_domain": "Unhide {domain}",
- "account.unendorse": "Don't feature on profile",
- "account.unfollow": "Unfollow",
- "account.unmute": "Unmute @{name}",
- "account.unmute_notifications": "Unmute notifications from @{name}",
- "alert.unexpected.message": "An unexpected error occurred.",
- "alert.unexpected.title": "Oops!",
- "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",
- "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",
- "column.blocks": "Blocked users",
- "column.community": "Local timeline",
- "column.direct": "Direct messages",
- "column.domain_blocks": "Hidden domains",
- "column.favourites": "Favourites",
- "column.follow_requests": "Follow requests",
- "column.home": "Home",
- "column.lists": "Lists",
- "column.mutes": "Muted users",
- "column.notifications": "Notifications",
- "column.pins": "Pinned toot",
- "column.public": "Federated timeline",
- "column_back_button.label": "Back",
- "column_header.hide_settings": "Hide settings",
- "column_header.moveLeft_settings": "Move column to the left",
- "column_header.moveRight_settings": "Move column to the right",
- "column_header.pin": "Pin",
- "column_header.show_settings": "Show settings",
- "column_header.unpin": "Unpin",
- "column_subheading.settings": "Settings",
- "community.column_settings.media_only": "Media Only",
- "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
- "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
- "compose_form.lock_disclaimer.lock": "locked",
- "compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
+ "account.direct": "@{name}কে সরকারি লিখুন",
+ "account.domain_blocked": "ওয়েবসাইট সরিয়ে ফেলা হয়েছে",
+ "account.edit_profile": "নিজের পাতা সম্পাদনা করুন",
+ "account.endorse": "নিজের পাতায় দেখান",
+ "account.follow": "অনুসরণ করুন",
+ "account.followers": "অনুসরণকারক",
+ "account.followers.empty": "এই ব্যবহারকারীকে কেও এখনো অনুসরণ করে না।",
+ "account.follows": "যাদেরকে অনুসরণ করেন",
+ "account.follows.empty": "এই ব্যবহারকারী কাওকে এখনো অনুসরণ করেন না।",
+ "account.follows_you": "আপনাকে অনুসরণ করে",
+ "account.hide_reblogs": "@{name}র সমর্থনগুলি সরিয়ে ফেলুন",
+ "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিকে",
+ "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।",
+ "account.media": "ছবি বা ভিডিও",
+ "account.mention": "@{name} কে উল্লেখ করুন",
+ "account.moved_to": "{name} চলে গেছে এখানে:",
+ "account.mute": "@{name}র কার্যক্রম সরিয়ে ফেলুন",
+ "account.mute_notifications": "@{name}র প্রজ্ঞাপন আপনার কাছ থেকে সরিয়ে ফেলুন",
+ "account.muted": "সরানো আছে",
+ "account.posts": "টুট",
+ "account.posts_with_replies": "টুট এবং মতামত",
+ "account.report": "@{name}কে রিপোর্ট করে দিন",
+ "account.requested": "অনুমতির অপেক্ষায় আছে। অনুসরণ করার অনুরোধ বাতিল করতে এখানে ক্লিক করুন",
+ "account.share": "@{name}র পাতা অন্যদের দেখান",
+ "account.show_reblogs": "@{name}র সমর্থনগুলো দেখুন",
+ "account.unblock": "@{name}র কার্যকলাপ আবার দেখুন",
+ "account.unblock_domain": "{domain}থেকে আবার দেখুন",
+ "account.unendorse": "নিজের পাতায় এটা দেখতে চান না",
+ "account.unfollow": "অনুসরণ বন্ধ করুন",
+ "account.unmute": "@{name}র কার্যকলাপ আবার দেখুন",
+ "account.unmute_notifications": "@{name}র প্রজ্ঞাপন দেওয়ার অনুমতি দিন",
+ "alert.unexpected.message": "অপ্রত্যাশিত একটি সমস্যা হয়েছে।",
+ "alert.unexpected.title": "ওহো!",
+ "boost_modal.combo": "পরেরবার আপনি {combo} চাপ দিলে এটার শেষে চলে যেতে পারবেন",
+ "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।",
+ "bundle_column_error.retry": "আবার চেষ্টা করুন",
+ "bundle_column_error.title": "নেটওয়ার্কের সমস্যা হচ্ছে",
+ "bundle_modal_error.close": "বন্ধ করুন",
+ "bundle_modal_error.message": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।",
+ "bundle_modal_error.retry": "আবার চেষ্টা করুন",
+ "column.blocks": "যাদের বন্ধ করে রাখা হয়েছে",
+ "column.community": "স্থানীয় সময়সারি",
+ "column.direct": "সরাসরি লেখা",
+ "column.domain_blocks": "সরিয়ে ফেলা ওয়েবসাইট",
+ "column.favourites": "পছন্দের গুলো",
+ "column.follow_requests": "অনুসরণের অনুমতি চেয়েছে যারা",
+ "column.home": "বাড়ি",
+ "column.lists": "তালিকাগুলো",
+ "column.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে",
+ "column.notifications": "প্রজ্ঞাপনগুলো",
+ "column.pins": "পিন করা টুট",
+ "column.public": "যুক্ত সময়রেখা",
+ "column_back_button.label": "পেছনে",
+ "column_header.hide_settings": "সেটিংগুলো সরান",
+ "column_header.moveLeft_settings": "কলমটা বামে সরান",
+ "column_header.moveRight_settings": "কলমটা ডানে সরান",
+ "column_header.pin": "পিন দিয়ে রাখুন",
+ "column_header.show_settings": "সেটিং দেখান",
+ "column_header.unpin": "পিন খুলুন",
+ "column_subheading.settings": "সেটিং",
+ "community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও",
+ "compose_form.direct_message_warning": "শুধুমাত্র যাদেরকে উল্লেখ করা হয়েছে তাদেরকেই এই টুটটি পাঠানো হবে ।",
+ "compose_form.direct_message_warning_learn_more": "আরো জানুন",
+ "compose_form.hashtag_warning": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।",
+ "compose_form.lock_disclaimer": "আপনার নিবন্ধনে তালা দেওয়া নেই, যে কেও আপনাকে অনুসরণ করতে পারবে এবং অনুশারকদের জন্য লেখা দেখতে পারবে।",
+ "compose_form.lock_disclaimer.lock": "তালা দেওয়া",
+ "compose_form.placeholder": "আপনি কি ভাবছেন ?",
+ "compose_form.poll.add_option": "আরেকটি বিকল্প যোগ করুন",
+ "compose_form.poll.duration": "ভোটগ্রহনের সময়",
+ "compose_form.poll.option_placeholder": "বিকল্প {number}",
+ "compose_form.poll.remove_option": "এই বিকল্পটি মুছে ফেলুন",
+ "compose_form.publish": "টুট",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "Write your warning here",
- "confirmation_modal.cancel": "Cancel",
- "confirmations.block.block_and_report": "Block & Report",
- "confirmations.block.confirm": "Block",
- "confirmations.block.message": "Are you sure you want to block {name}?",
- "confirmations.delete.confirm": "Delete",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
- "confirmations.domain_block.confirm": "Hide entire domain",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
- "confirmations.mute.confirm": "Mute",
- "confirmations.mute.message": "Are you sure you want to mute {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Here is what it will look like:",
- "emoji_button.activity": "Activity",
- "emoji_button.custom": "Custom",
- "emoji_button.flags": "Flags",
- "emoji_button.food": "Food & Drink",
- "emoji_button.label": "Insert emoji",
- "emoji_button.nature": "Nature",
- "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
- "emoji_button.objects": "Objects",
- "emoji_button.people": "People",
- "emoji_button.recent": "Frequently used",
- "emoji_button.search": "Search...",
- "emoji_button.search_results": "Search results",
- "emoji_button.symbols": "Symbols",
- "emoji_button.travel": "Travel & Places",
- "empty_column.account_timeline": "No toots here!",
- "empty_column.blocks": "You haven't blocked any users yet.",
- "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
- "empty_column.hashtag": "There is nothing in this hashtag yet.",
- "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
- "empty_column.home.public_timeline": "the public timeline",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
- "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
- "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
- "follow_request.authorize": "Authorize",
- "follow_request.reject": "Reject",
- "getting_started.developers": "Developers",
- "getting_started.directory": "Profile directory",
- "getting_started.documentation": "Documentation",
- "getting_started.heading": "Getting started",
- "getting_started.invite": "Invite people",
- "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Show replies",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়েছে",
+ "compose_form.sensitive.unmarked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়নি",
+ "compose_form.spoiler.marked": "লেখাটি সাবধানতার পেছনে লুকানো আছে",
+ "compose_form.spoiler.unmarked": "লেখাটি লুকানো নেই",
+ "compose_form.spoiler_placeholder": "আপনার সাবধানতা এখানে লিখুন",
+ "confirmation_modal.cancel": "বাতিল করুন",
+ "confirmations.block.block_and_report": "বন্ধ করুন এবং রিপোর্ট করুন",
+ "confirmations.block.confirm": "বন্ধ করুন",
+ "confirmations.block.message": "আপনি কি নিশ্চিত {name} কে বন্ধ করতে চান ?",
+ "confirmations.delete.confirm": "মুছে ফেলুন",
+ "confirmations.delete.message": "আপনি কি নিশ্চিত যে এই লেখাটি মুছে ফেলতে চান ?",
+ "confirmations.delete_list.confirm": "মুছে ফেলুন",
+ "confirmations.delete_list.message": "আপনি কি নিশ্চিত যে আপনি এই তালিকাটি স্থায়িভাবে মুছে ফেলতে চান ?",
+ "confirmations.domain_block.confirm": "এই ওয়েবসাইট থেকে সব সরান",
+ "confirmations.domain_block.message": "আপনি কি সত্যি সত্যি নিশ্চিত যে {domain} ওয়েবসাইট থেকে সব সরাতে চান ? সাধারণত কিছু লক্ষ্যবস্তু বন্ধ এবং সরানোযা যথেষ্ট। নিশ্চিত করলে ওই ওয়েবসাইট থেকে কোনোকিছু কোনখানে দেখবেন না। যারা আপনাকে অনুসরণ করে ওই ওয়েবসাইট থেকে তাদেরকেও মুছে ফেলা হবে।",
+ "confirmations.mute.confirm": "সরিয়ে ফেলুন",
+ "confirmations.mute.message": "আপনি কি নিশ্চিত {name} সরিয়ে ফেলতে চান ?",
+ "confirmations.redraft.confirm": "মুছে ফেলুন এবং আবার সম্পাদন করুন",
+ "confirmations.redraft.message": "আপনি কি নিশ্চিত এটি মুছে ফেলে এবং আবার সম্পাদন করতে চান ? এটাতে যা পছন্দিত, সমর্থন বা মতামত আছে সেগুলো নতুন লেখার সাথে যুক্ত থাকবে না।",
+ "confirmations.reply.confirm": "মতামত",
+ "confirmations.reply.message": "এখন মতামত লিখতে গেলে আপনার এখন যেটা লিখছেন সেটা মুছে যাবে। আপনি নি নিশ্চিত এটা করতে চান ?",
+ "confirmations.unfollow.confirm": "অনুসরণ বন্ধ করুন",
+ "confirmations.unfollow.message": "আপনি কি নিশ্চিত {name} কে আর অনুসরণ করতে চান না ?",
+ "embed.instructions": "এই লেখাটি আপনার ওয়েবসাইটে যুক্ত করতে নিচের কোডটি বেবহার করুন।",
+ "embed.preview": "সেটা দেখতে এরকম হবে:",
+ "emoji_button.activity": "কার্যকলাপ",
+ "emoji_button.custom": "প্রথা",
+ "emoji_button.flags": "পতাকা",
+ "emoji_button.food": "খাদ্য ও পানীয়",
+ "emoji_button.label": "এমজি যুক্ত করুন",
+ "emoji_button.nature": "প্রকৃতি",
+ "emoji_button.not_found": "ইমোজি পাওয়া যায়নি !! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "বস্তূ",
+ "emoji_button.people": "মানুষ",
+ "emoji_button.recent": "ঘন ব্যাবহৃত",
+ "emoji_button.search": "খুজুন...",
+ "emoji_button.search_results": "খোঁজার ফলাফল",
+ "emoji_button.symbols": "প্রতীক",
+ "emoji_button.travel": "ভ্রমণ এবং স্থান",
+ "empty_column.account_timeline": "এখানে কোনো টুট নেই!",
+ "empty_column.account_unavailable": "নিজস্ব পাতা নেই",
+ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের বন্ধ করেন নি।",
+ "empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!",
+ "empty_column.direct": "আপনার কাছে সরাসরি পাঠানো কোনো লেখা নেই। যদি কেও পাঠায়, সেটা এখানে দেখা যাবে।",
+ "empty_column.domain_blocks": "এখনো কোনো সরানো ওয়েবসাইট নেই।",
+ "empty_column.favourited_statuses": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।",
+ "empty_column.favourites": "কেও এখনো এটাকে পছন্দের টুট হিসেবে চিহ্নিত করেনি। যদি করে, তখন তাদের এখানে পাওয়া যাবে।",
+ "empty_column.follow_requests": "আপনার এখনো কোনো অনুসরণের আবেদন পাঠানো নেই। যদি পাঠায়, এখানে পাওয়া যাবে।",
+ "empty_column.hashtag": "এই হেসটাগে এখনো কিছু নেই।",
+ "empty_column.home": "আপনার বাড়ির সময়রেখা এখনো খালি! {public}এ ঘুরে আসুন অথবা অনুসন্ধান বেবহার করে শুরু করতে পারেন এবং অন্য ব্যবহারকারীদের সাথে সাক্ষাৎ করতে পারেন।",
+ "empty_column.home.public_timeline": "প্রকাশ্য সময়রেখা",
+ "empty_column.list": "এই তালিকাতে এখনো কিছু নেই. যখন এই তালিকায় থাকা ব্যবহারকারী নতুন কিছু লিখবে, সেগুলো এখানে পাওয়া যাবে।",
+ "empty_column.lists": "আপনার এখনো কোনো তালিকা তৈরী নেই। যদি বা যখন তৈরী করেন, সেগুলো এখানে পাওয়া যাবে।",
+ "empty_column.mutes": "আপনি এখনো কোনো ব্যবহারকারীকে সরাননি।",
+ "empty_column.notifications": "আপনার এখনো কোনো প্রজ্ঞাপন নেই। কথোপকথন শুরু করতে, অন্যদের সাথে মেলামেশা করতে পারেন।",
+ "empty_column.public": "এখানে এখনো কিছু নেই! প্রকাশ্য ভাবে কিছু লিখুন বা অন্য সার্ভার থেকে কাওকে অনুসরণ করে এই জায়গা ভরে ফেলুন",
+ "follow_request.authorize": "অনুমতি দিন",
+ "follow_request.reject": "প্রত্যাখ্যান করুন",
+ "getting_started.developers": "তৈরিকারকদের জন্য",
+ "getting_started.directory": "নিজস্ব পাতার তালিকা",
+ "getting_started.documentation": "নথিপত্র",
+ "getting_started.heading": "শুরু করা",
+ "getting_started.invite": "অন্যদের আমন্ত্রণ করুন",
+ "getting_started.open_source_notice": "মাস্টাডন একটি মুক্ত সফটওয়্যার। আপনি তৈরিতে সাহায্য করতে পারেন অথবা সমস্যা রিপোর্ট করতে পারেন গিটহাবে {github}।",
+ "getting_started.security": "নিরাপত্তা",
+ "getting_started.terms": "ব্যবহারের নিয়মাবলী",
+ "hashtag.column_header.tag_mode.all": "এবং {additional}",
+ "hashtag.column_header.tag_mode.any": "অথবা {additional}",
+ "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}",
+ "hashtag.column_settings.select.no_options_message": "কোনটা পাওয়া যায় নি",
+ "hashtag.column_settings.select.placeholder": "হ্যাশট্যাগের ভেতরে ঢুকুন…",
+ "hashtag.column_settings.tag_mode.all": "এগুলো সব",
+ "hashtag.column_settings.tag_mode.any": "এর ভেতরে যেকোনোটা",
+ "hashtag.column_settings.tag_mode.none": "এগুলোর একটাও না",
+ "hashtag.column_settings.tag_toggle": "আরো ট্যাগ এই কলামে যুক্ত করুন",
+ "home.column_settings.basic": "সাধারণ",
+ "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান",
+ "home.column_settings.show_replies": "মতামত দেখান",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
- "introduction.interactions.action": "Finish toot-orial!",
- "introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.direct": "to open direct messages column",
- "keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.home": "to open home timeline",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.local": "to open local timeline",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.requests": "to open follow requests list",
- "keyboard_shortcuts.search": "to focus search",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toot": "to start a brand new toot",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
- "lightbox.close": "Close",
- "lightbox.next": "Next",
- "lightbox.previous": "Previous",
- "lists.account.add": "Add to list",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Delete list",
- "lists.edit": "Edit list",
- "lists.edit.submit": "Change title",
- "lists.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
- "loading_indicator.label": "Loading...",
- "media_gallery.toggle_visible": "Toggle visibility",
- "missing_indicator.label": "Not found",
- "missing_indicator.sublabel": "This resource could not be found",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Mobile apps",
- "navigation_bar.blocks": "Blocked users",
- "navigation_bar.community_timeline": "Local timeline",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Edit profile",
- "navigation_bar.favourites": "Favourites",
- "navigation_bar.filters": "Muted words",
- "navigation_bar.follow_requests": "Follow requests",
- "navigation_bar.info": "About this server",
- "navigation_bar.keyboard_shortcuts": "Hotkeys",
- "navigation_bar.lists": "Lists",
- "navigation_bar.logout": "Logout",
- "navigation_bar.mutes": "Muted users",
- "navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Pinned toots",
- "navigation_bar.preferences": "Preferences",
- "navigation_bar.public_timeline": "Federated timeline",
- "navigation_bar.security": "Security",
- "notification.favourite": "{name} favourited your status",
- "notification.follow": "{name} followed you",
- "notification.mention": "{name} mentioned you",
- "notification.poll": "A poll you have voted in has ended",
- "notification.reblog": "{name} boosted your status",
- "notifications.clear": "Clear notifications",
- "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
- "notifications.column_settings.alert": "Desktop notifications",
- "notifications.column_settings.favourite": "Favourites:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
- "notifications.column_settings.follow": "New followers:",
- "notifications.column_settings.mention": "Mentions:",
- "notifications.column_settings.poll": "Poll results:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boosts:",
- "notifications.column_settings.show": "Show in column",
- "notifications.column_settings.sound": "Play sound",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Post to public timelines",
- "privacy.public.short": "Public",
- "privacy.unlisted.long": "Do not show in public timelines",
- "privacy.unlisted.short": "Unlisted",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
- "reply_indicator.cancel": "Cancel",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
- "report.placeholder": "Additional comments",
- "report.submit": "Submit",
- "report.target": "Report {target}",
- "search.placeholder": "Search",
- "search_popout.search_format": "Advanced search format",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
- "search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
- "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
- "status.cannot_reblog": "This post cannot be boosted",
- "status.copy": "Copy link to status",
- "status.delete": "Delete",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
- "status.embed": "Embed",
- "status.favourite": "Favourite",
- "status.filtered": "Filtered",
- "status.load_more": "Load more",
- "status.media_hidden": "Media hidden",
- "status.mention": "Mention @{name}",
- "status.more": "More",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
- "status.open": "Expand this status",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
- "status.reblog": "Boost",
- "status.reblog_private": "Boost to original audience",
- "status.reblogged_by": "{name} boosted",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
- "status.reply": "Reply",
- "status.replyAll": "Reply to thread",
- "status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
- "status.sensitive_warning": "Sensitive content",
- "status.share": "Share",
- "status.show_less": "Show less",
- "status.show_less_all": "Show less for all",
- "status.show_more": "Show more",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
- "status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
- "tabs_bar.federated_timeline": "Federated",
- "tabs_bar.home": "Home",
- "tabs_bar.local_timeline": "Local",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.search": "Search",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
- "upload_area.title": "Drag & drop to upload",
- "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
- "upload_form.description": "Describe for the visually impaired",
- "upload_form.focus": "Crop",
- "upload_form.undo": "Delete",
- "upload_progress.label": "Uploading...",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Play",
- "video.unmute": "Unmute sound"
+ "introduction.federation.action": "পরবর্তী",
+ "introduction.federation.federated.headline": "যুক্তবিশ্ব",
+ "introduction.federation.federated.text": "অন্যান্য যুক্তবিশ্বের সার্ভারের লেখাগুলি যুক্তবিশ্বের সময়রেখাতে আসবে ।",
+ "introduction.federation.home.headline": "বাড়ি",
+ "introduction.federation.home.text": "যাদেরকে অনুসরণ করেন তাদের লেখাগুলো আপনার বাড়ি-সময়রেখাতে আসবে। আপনি এখান থেকে যুক্তবিশ্বে যেকোনো সার্ভারের যে কাওকে অনুসরণ করতে পারেন!",
+ "introduction.federation.local.headline": "স্থানীয়",
+ "introduction.federation.local.text": "আপনি যে সার্ভারে আছেন সেখানকার মানুষের প্রকাশ্য লেখাগুলো স্থানীয় সময়রেখাতে আসবে।",
+ "introduction.interactions.action": "ব্যবহার জানার অংশটি শেষ করুন!",
+ "introduction.interactions.favourite.headline": "পছন্দের",
+ "introduction.interactions.favourite.text": "পরে পড়ার জন্য বা লেখা পছন্ধ হয়েছে সেটা লেখককে জানাতে, কোনো লেখা পছন্দের হিসেবে চিহ্নিত করতে পারেন।",
+ "introduction.interactions.reblog.headline": "সমর্থন",
+ "introduction.interactions.reblog.text": "কারোর লেখা সমর্থন দিয়ে চিহ্নিত করে সেটা আপনার অনুসরণকারীদের দেখতে পারেন।",
+ "introduction.interactions.reply.headline": "মতামত",
+ "introduction.interactions.reply.text": "আপনি অন্যদের এবং নিজের লেখায় মতামত টুট করতে পারেন, যেগুলো লেখার সাথে কথোপকথন হিসেবে যুক্ত থাকবে।",
+ "introduction.welcome.action": "শুরু করা যাক!",
+ "introduction.welcome.headline": "প্রথম ধাপ",
+ "introduction.welcome.text": "যুক্তবিশ্বে স্বাগতম! কিছুক্ষনের মধ্যেই আপনি আপনার লেখা বিভিন্ন সার্ভারে সম্প্রচার করতে পারবেন। কিন্তু মনে রাখবে যে এটা একটা বিশেষ সার্ভার, {domain} কারণ এখানে আপনার নিজেস্ব পাতা রাখা হচ্ছে।",
+ "keyboard_shortcuts.back": "পেছনে যেতে",
+ "keyboard_shortcuts.blocked": "বন্ধ করা ব্যবহারকারীদের তালিকা দেখতে",
+ "keyboard_shortcuts.boost": "সমর্থন করতে",
+ "keyboard_shortcuts.column": "কোনো কলামএ কোনো লেখা ফোকাস করতে",
+ "keyboard_shortcuts.compose": "লেখা সম্পদনার জায়গায় ফোকাস করতে",
+ "keyboard_shortcuts.description": "বিবরণ",
+ "keyboard_shortcuts.direct": "সরাসরি পাঠানো লেখা দেখতে",
+ "keyboard_shortcuts.down": "তালিকার ভেতরে নিচে যেতে",
+ "keyboard_shortcuts.enter": "অবস্থা দেখতে",
+ "keyboard_shortcuts.favourite": "পছন্দের দেখতে",
+ "keyboard_shortcuts.favourites": "পছন্দের তালিকা বের করতে",
+ "keyboard_shortcuts.federated": "যুক্তবিশ্বের সময়রেখাতে যেতে",
+ "keyboard_shortcuts.heading": "কিবোর্ডের দ্রুতকারক (শর্টকাট)",
+ "keyboard_shortcuts.home": "বাড়ির সময়রেখা খুলতে",
+ "keyboard_shortcuts.hotkey": "দ্রুতকারক ছবিগুলো",
+ "keyboard_shortcuts.legend": "এই প্রদর্শনঅর্থ(legend) দেখতে",
+ "keyboard_shortcuts.local": "স্থানীয় সময়রেখাতে যেতে",
+ "keyboard_shortcuts.mention": "লেখককে উল্লেখ করতে",
+ "keyboard_shortcuts.muted": "বন্ধ করা ব্যবহারকারীদের তালিকা খুলতে",
+ "keyboard_shortcuts.my_profile": "নিজের পাতা দেখতে",
+ "keyboard_shortcuts.notifications": "প্রজ্ঞাপনের কলাম খুলতে",
+ "keyboard_shortcuts.pinned": "পিন দেওয়া টুটের তালিকা খুলতে",
+ "keyboard_shortcuts.profile": "লেখকের পাতা দেখতে",
+ "keyboard_shortcuts.reply": "মতামত দিতে",
+ "keyboard_shortcuts.requests": "অনুসরণ অনুরোধের তালিকা দেখতে",
+ "keyboard_shortcuts.search": "খোঁজার অংশে ফোকাস করতে",
+ "keyboard_shortcuts.start": "\"প্রথম শুরুর\" কলাম বের করতে",
+ "keyboard_shortcuts.toggle_hidden": "CW লেখা দেখতে বা লুকাতে",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "নতুন একটা টুট লেখা শুরু করতে",
+ "keyboard_shortcuts.unfocus": "লেখা বা খোঁজার জায়গায় ফোকাস না করতে",
+ "keyboard_shortcuts.up": "তালিকার উপরের দিকে যেতে",
+ "lightbox.close": "বন্ধ",
+ "lightbox.next": "পরবর্তী",
+ "lightbox.previous": "পূর্ববর্তী",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "তালিকাতে যুক্ত করতে",
+ "lists.account.remove": "তালিকা থেকে বাদ দিতে",
+ "lists.delete": "তালিকা মুছে ফেলতে",
+ "lists.edit": "তালিকা সম্পাদনা করতে",
+ "lists.edit.submit": "শিরোনাম সম্পাদনা করতে",
+ "lists.new.create": "তালিকাতে যুক্ত করতে",
+ "lists.new.title_placeholder": "তালিকার নতুন শিরোনাম দিতে",
+ "lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন",
+ "lists.subheading": "আপনার তালিকা",
+ "loading_indicator.label": "আসছে...",
+ "media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
+ "missing_indicator.label": "খুঁজে পাওয়া যায়নি",
+ "missing_indicator.sublabel": "জিনিসটা খুঁজে পাওয়া যায়নি",
+ "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?",
+ "navigation_bar.apps": "মোবাইলের আপ্প",
+ "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী",
+ "navigation_bar.community_timeline": "স্থানীয় সময়রেখা",
+ "navigation_bar.compose": "নতুন টুট লিখুন",
+ "navigation_bar.direct": "সরাসরি লেখা",
+ "navigation_bar.discover": "ঘুরে দেখুন",
+ "navigation_bar.domain_blocks": "বন্ধ করা ওয়েবসাইট",
+ "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করুন",
+ "navigation_bar.favourites": "পছন্দের",
+ "navigation_bar.filters": "বন্ধ করা শব্দ",
+ "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "এই সার্ভার সম্পর্কে",
+ "navigation_bar.keyboard_shortcuts": "চাবি ব্যবহার",
+ "navigation_bar.lists": "তালিকাগুলো",
+ "navigation_bar.logout": "বাইরে যান",
+ "navigation_bar.mutes": "যেসব বেভহারকারীদের কার্যক্রম বন্ধ করা আছে",
+ "navigation_bar.personal": "নিজস্ব",
+ "navigation_bar.pins": "পিন দেওয়া টুট",
+ "navigation_bar.preferences": "পছন্দসমূহ",
+ "navigation_bar.profile_directory": "Profile directory",
+ "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা",
+ "navigation_bar.security": "নিরাপত্তা",
+ "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন",
+ "notification.follow": "{name} আপনাকে অনুসরণ করেছেন",
+ "notification.mention": "{name} আপনাকে উল্লেখ করেছেন",
+ "notification.poll": "আপনি ভোট দিয়েছিলেন এমন এক নির্বাচনের ভোটের সময় শেষ হয়েছে",
+ "notification.reblog": "{name} আপনার কার্যক্রমে সমর্থন দেখিয়েছেন",
+ "notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে",
+ "notifications.clear_confirmation": "আপনি কি নির্চিত প্রজ্ঞাপনগুলো মুছে ফেলতে চান ?",
+ "notifications.column_settings.alert": "কম্পিউটারে প্রজ্ঞাপন",
+ "notifications.column_settings.favourite": "পছন্দের:",
+ "notifications.column_settings.filter_bar.advanced": "সব শ্রেণীগুলো দেখতে",
+ "notifications.column_settings.filter_bar.category": "দ্রুত ছাঁকনি বার",
+ "notifications.column_settings.filter_bar.show": "দেখতে",
+ "notifications.column_settings.follow": "নতুন অনুসরণকারীরা:",
+ "notifications.column_settings.mention": "প্রজ্ঞাপনগুলো:",
+ "notifications.column_settings.poll": "নির্বাচনের ফলাফল:",
+ "notifications.column_settings.push": "পুশ প্রজ্ঞাপন",
+ "notifications.column_settings.reblog": "সমর্থনগুলো:",
+ "notifications.column_settings.show": "কলামে দেখান",
+ "notifications.column_settings.sound": "শব্দ বাজাতে",
+ "notifications.filter.all": "সব",
+ "notifications.filter.boosts": "সমর্থনগুলো",
+ "notifications.filter.favourites": "পছন্দের গুলো",
+ "notifications.filter.follows": "অনুসরণের",
+ "notifications.filter.mentions": "উল্লেখিত",
+ "notifications.filter.polls": "নির্বাচনের ফলাফল",
+ "notifications.group": "{count} প্রজ্ঞাপন",
+ "poll.closed": "বন্ধ",
+ "poll.refresh": "আবার সতেজ করতে",
+ "poll.total_votes": "{count, plural, one {# ভোট} other {# ভোট}}",
+ "poll.vote": "ভোট",
+ "poll_button.add_poll": "একটা নির্বাচন যোগ করতে",
+ "poll_button.remove_poll": "নির্বাচন বাদ দিতে",
+ "privacy.change": "লেখার গোপনীয়তা অবস্থা ঠিক করতে",
+ "privacy.direct.long": "শুধুমাত্র উল্লেখিত ব্যবহারকারীদের কাছে লিখতে",
+ "privacy.direct.short": "সরাসরি",
+ "privacy.private.long": "শুধুমাত্র আপনার অনুসরণকারীদের লিখতে",
+ "privacy.private.short": "শুধুমাত্র অনুসরণকারীদের জন্য",
+ "privacy.public.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে লিখতে",
+ "privacy.public.short": "সর্বজনীন প্রকাশ্য",
+ "privacy.unlisted.long": "সর্বজনীন প্রকাশ্য সময়রেখাতে না দেখাতে",
+ "privacy.unlisted.short": "প্রকাশ্য নয়",
+ "regeneration_indicator.label": "আসছে…",
+ "regeneration_indicator.sublabel": "আপনার বাড়ির-সময়রেখা প্রস্তূত করা হচ্ছে!",
+ "relative_time.days": "{number} দিন",
+ "relative_time.hours": "{number} ঘন্টা",
+ "relative_time.just_now": "এখন",
+ "relative_time.minutes": "{number} মাস",
+ "relative_time.seconds": "{number} সেকেন্ড",
+ "reply_indicator.cancel": "বাতিল করতে",
+ "report.forward": "এটা আরো পাঠান {target} তে",
+ "report.forward_hint": "এই নিবন্ধনটি অন্য একটি সার্ভারে। অপ্রকাশিতনামাভাবে রিপোর্টের কপি সেখানেও কি পাঠাতে চান ?",
+ "report.hint": "রিপোর্টটি আপনার সার্ভারের পরিচালকের কাছে পাঠানো হবে। রিপোর্ট পাঠানোর কারণ নিচে বিস্তারিত লিখতে পারেন:",
+ "report.placeholder": "অন্য কোনো মন্তব্য",
+ "report.submit": "জমা দিন",
+ "report.target": "{target} রিপোর্ট করুন",
+ "search.placeholder": "খুঁজতে",
+ "search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি",
+ "search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।",
+ "search_popout.tips.hashtag": "হ্যাশট্যাগ",
+ "search_popout.tips.status": "লেখা",
+ "search_popout.tips.text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো",
+ "search_popout.tips.user": "ব্যবহারকারী",
+ "search_results.accounts": "মানুষ",
+ "search_results.hashtags": "হ্যাশট্যাগগুলি",
+ "search_results.statuses": "টুট",
+ "search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}",
+ "status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন",
+ "status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন",
+ "status.block": "@{name}কে বন্ধ করুন",
+ "status.cancel_reblog_private": "সমর্থন বাতিল করতে",
+ "status.cannot_reblog": "এটিতে সমর্থন দেওয়া যাবেনা",
+ "status.copy": "লেখাটির লিংক কপি করতে",
+ "status.delete": "মুছে ফেলতে",
+ "status.detailed_status": "বিস্তারিত কথোপকথনের হিসেবে দেখতে",
+ "status.direct": "@{name} কে সরাসরি পাঠান",
+ "status.embed": "এমবেড করতে",
+ "status.favourite": "পছন্দের করতে",
+ "status.filtered": "ছাঁকনিদিত",
+ "status.load_more": "আরো দেখুন",
+ "status.media_hidden": "ছবি বা ভিডিও পেছনে",
+ "status.mention": "@{name}কে উল্লেখ করতে",
+ "status.more": "আরো",
+ "status.mute": "@{name}র কার্যক্রম সরিয়ে ফেলতে",
+ "status.mute_conversation": "কথোপকথননের প্রজ্ঞাপন সরিয়ে ফেলতে",
+ "status.open": "এটার সম্পূর্ণটা দেখতে",
+ "status.pin": "নিজের পাতায় এটা পিন করতে",
+ "status.pinned": "পিন করা টুট",
+ "status.read_more": "আরো পড়ুন",
+ "status.reblog": "সমর্থন দিতে",
+ "status.reblog_private": "আপনার অনুসরণকারীদের কাছে এটার সমর্থন দেখাতে",
+ "status.reblogged_by": "{name} সমর্থন দিয়েছে",
+ "status.reblogs.empty": "এখনো কেও এটাতে সমর্থন দেয়নি। যখন কেও দেয়, সেটা তখন এখানে দেখা যাবে।",
+ "status.redraft": "মুছে আবার নতুন করে লিখতে",
+ "status.reply": "মতামত জানাতে",
+ "status.replyAll": "লেখাযুক্ত সবার কাছে মতামত জানাতে",
+ "status.report": "@{name}কে রিপোর্ট করতে",
+ "status.sensitive_warning": "সংবেদনশীল কিছু",
+ "status.share": "অন্যদের জানান",
+ "status.show_less": "কম দেখতে",
+ "status.show_less_all": "সবগুলোতে কম দেখতে",
+ "status.show_more": "আরো দেখাতে",
+ "status.show_more_all": "সবগুলোতে আরো দেখতে",
+ "status.show_thread": "আলোচনা দেখতে",
+ "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে",
+ "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে",
+ "suggestions.dismiss": "সাহায্যের জন্য পরামর্শগুলো সরাতে",
+ "suggestions.header": "আপনি হয়তোবা এগুলোতে আগ্রহী হতে পারেন…",
+ "tabs_bar.federated_timeline": "যুক্তবিশ্ব",
+ "tabs_bar.home": "বাড়ি",
+ "tabs_bar.local_timeline": "স্থানীয়",
+ "tabs_bar.notifications": "প্রজ্ঞাপনগুলো",
+ "tabs_bar.search": "খুঁজতে",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} বাকি আছে",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} বাকি আছে",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} বাকি আছে",
+ "time_remaining.moments": "সময় বাকি আছে",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} বাকি আছে",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} কথা বলছে",
+ "ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, মাস্টাডন থেকে চলে গেলে এটা মুছে যাবে।",
+ "upload_area.title": "টেনে এখানে ছেড়ে দিলে এখানে যুক্ত করা যাবে",
+ "upload_button.label": "ছবি বা ভিডিও যুক্ত করতে (এসব ধরণের JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_error.limit": "যা যুক্ত করতে চাচ্ছেন সেটি বেশি বড়, এখানকার সর্বাধিকের মেমোরির উপরে চলে গেছে।",
+ "upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।",
+ "upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে",
+ "upload_form.focus": "সাধারণ দেখাটি পরিবর্তন করতে",
+ "upload_form.undo": "মুছে ফেলতে",
+ "upload_progress.label": "যুক্ত করতে পাঠানো হচ্ছে...",
+ "video.close": "ভিডিওটি বন্ধ করতে",
+ "video.exit_fullscreen": "পূর্ণ পর্দা থেকে বাইরে বের হতে",
+ "video.expand": "ভিডিওটি বড়ো করতে",
+ "video.fullscreen": "পূর্ণ পর্দা করতে",
+ "video.hide": "ভিডিওটি লুকাতে",
+ "video.mute": "শব্দ বন্ধ করতে",
+ "video.pause": "থামাতে",
+ "video.play": "শুরু করতে",
+ "video.unmute": "শব্দ চালু করতে"
}
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 6c98c6ae7..0e10668b5 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -17,7 +17,7 @@
"account.hide_reblogs": "Amaga els impulsos de @{name}",
"account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}",
"account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.",
- "account.media": "Media",
+ "account.media": "Mèdia",
"account.mention": "Esmentar @{name}",
"account.moved_to": "{name} s'ha mogut a:",
"account.mute": "Silencia @{name}",
@@ -71,12 +71,13 @@
"compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
"compose_form.lock_disclaimer.lock": "blocat",
"compose_form.placeholder": "En què estàs pensant?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Afegeix una opció",
+ "compose_form.poll.duration": "Durada de l'enquesta",
+ "compose_form.poll.option_placeholder": "Opció {number}",
+ "compose_form.poll.remove_option": "Elimina aquesta opció",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Marcar mèdia com a sensible",
"compose_form.sensitive.marked": "Mèdia marcat com a sensible",
"compose_form.sensitive.unmarked": "Mèdia no està marcat com a sensible",
"compose_form.spoiler.marked": "Text es ocult sota l'avís",
@@ -85,7 +86,7 @@
"confirmation_modal.cancel": "Cancel·la",
"confirmations.block.block_and_report": "Block & Report",
"confirmations.block.confirm": "Bloca",
- "confirmations.block.message": "Estàs segur que vols blocar {name}?",
+ "confirmations.block.message": "Estàs segur que vols bloquejar a {name}?",
"confirmations.delete.confirm": "Suprimeix",
"confirmations.delete.message": "Estàs segur que vols suprimir aquest estat?",
"confirmations.delete_list.confirm": "Suprimeix",
@@ -108,7 +109,7 @@
"emoji_button.food": "Menjar i beure",
"emoji_button.label": "Insereix un emoji",
"emoji_button.nature": "Natura",
- "emoji_button.not_found": "Emojos no!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Emojis no!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objectes",
"emoji_button.people": "Gent",
"emoji_button.recent": "Usats freqüentment",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs",
"empty_column.account_timeline": "No hi ha toots aquí!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Encara no has bloquejat cap usuari.",
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per fer rodar la pilota!",
"empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.",
@@ -124,7 +126,7 @@
"empty_column.favourited_statuses": "Encara no tens cap toot favorit. Quan en tinguis, apareixerà aquí.",
"empty_column.favourites": "Encara ningú ha marcat aquest toot com a favorit. Quan algú ho faci, apareixera aquí.",
"empty_column.follow_requests": "Encara no teniu cap petició de seguiment. Quan rebeu una, apareixerà aquí.",
- "empty_column.hashtag": "Encara no hi ha res amb aquesta etiqueta.",
+ "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.",
"empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.",
"empty_column.home.public_timeline": "la línia de temps pública",
"empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous estats, apareixeran aquí.",
@@ -154,8 +156,8 @@
"home.column_settings.basic": "Bàsic",
"home.column_settings.show_reblogs": "Mostrar impulsos",
"home.column_settings.show_replies": "Mostrar respostes",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
+ "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
"introduction.federation.action": "Següent",
"introduction.federation.federated.headline": "Federada",
@@ -179,14 +181,14 @@
"keyboard_shortcuts.boost": "impulsar",
"keyboard_shortcuts.column": "per centrar un estat en una de les columnes",
"keyboard_shortcuts.compose": "per centrar l'area de composició de text",
- "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.description": "Descripció",
"keyboard_shortcuts.direct": "per obrir la columna de missatges directes",
"keyboard_shortcuts.down": "per baixar en la llista",
"keyboard_shortcuts.enter": "ampliar estat",
"keyboard_shortcuts.favourite": "afavorir",
"keyboard_shortcuts.favourites": "per obrir la llista de favorits",
"keyboard_shortcuts.federated": "per obrir la línia de temps federada",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.heading": "Dreçeres de teclat",
"keyboard_shortcuts.home": "per obrir la línia de temps Inici",
"keyboard_shortcuts.hotkey": "Tecla d'accés directe",
"keyboard_shortcuts.legend": "per a mostrar aquesta llegenda",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "per centrar la cerca",
"keyboard_shortcuts.start": "per obrir la columna \"Començar\"",
"keyboard_shortcuts.toggle_hidden": "per a mostrar/amagar text sota CW",
+ "keyboard_shortcuts.toggle_sensitivity": "per a mostrar/amagar mèdia",
"keyboard_shortcuts.toot": "per a començar un toot nou de trinca",
"keyboard_shortcuts.unfocus": "descentrar l'area de composició de text/cerca",
"keyboard_shortcuts.up": "moure amunt en la llista",
"lightbox.close": "Tancar",
"lightbox.next": "Següent",
"lightbox.previous": "Anterior",
+ "lightbox.view_context": "Veure el context",
"lists.account.add": "Afegir a la llista",
"lists.account.remove": "Treure de la llista",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorits",
"navigation_bar.filters": "Paraules silenciades",
"navigation_bar.follow_requests": "Sol·licituds de seguiment",
+ "navigation_bar.follows_and_followers": "Seguits i seguidors",
"navigation_bar.info": "Sobre aquest servidor",
"navigation_bar.keyboard_shortcuts": "Dreceres de teclat",
"navigation_bar.lists": "Llistes",
@@ -241,13 +246,14 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toots fixats",
"navigation_bar.preferences": "Preferències",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Línia de temps federada",
"navigation_bar.security": "Seguretat",
"notification.favourite": "{name} ha afavorit el teu estat",
"notification.follow": "{name} et segueix",
"notification.mention": "{name} t'ha esmentat",
"notification.poll": "Ha finalitzat una enquesta en la que has votat",
- "notification.reblog": "{name} ha retootejat el teu estat",
+ "notification.reblog": "{name} ha impulsat el teu estat",
"notifications.clear": "Netejar notificacions",
"notifications.clear_confirmation": "Estàs segur que vols esborrar permanenment totes les teves notificacions?",
"notifications.column_settings.alert": "Notificacions d'escriptori",
@@ -258,7 +264,7 @@
"notifications.column_settings.follow": "Nous seguidors:",
"notifications.column_settings.mention": "Mencions:",
"notifications.column_settings.poll": "Resultats de l’enquesta:",
- "notifications.column_settings.push": "Push notificacions",
+ "notifications.column_settings.push": "Notificacions push",
"notifications.column_settings.reblog": "Impulsos:",
"notifications.column_settings.show": "Mostrar en la columna",
"notifications.column_settings.sound": "Reproduïr so",
@@ -273,8 +279,8 @@
"poll.refresh": "Actualitza",
"poll.total_votes": "{count, plural, one {# vot} other {# vots}}",
"poll.vote": "Vota",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Afegeix una enquesta",
+ "poll_button.remove_poll": "Elimina l'enquesta",
"privacy.change": "Ajusta l'estat de privacitat",
"privacy.direct.long": "Publicar només per als usuaris esmentats",
"privacy.direct.short": "Directe",
@@ -311,9 +317,9 @@
"search_results.total": "{count, number} {count, plural, un {result} altres {results}}",
"status.admin_account": "Obre l'interfície de moderació per a @{name}",
"status.admin_status": "Obre aquest estat a la interfície de moderació",
- "status.block": "Block @{name}",
+ "status.block": "Bloqueja @{name}",
"status.cancel_reblog_private": "Desfer l'impuls",
- "status.cannot_reblog": "Aquesta publicació no pot ser retootejada",
+ "status.cannot_reblog": "Aquesta publicació no pot ser impulsada",
"status.copy": "Copia l'enllaç a l'estat",
"status.delete": "Esborrar",
"status.detailed_status": "Visualització detallada de la conversa",
@@ -333,13 +339,12 @@
"status.read_more": "Llegir més",
"status.reblog": "Impuls",
"status.reblog_private": "Impulsar a l'audiència original",
- "status.reblogged_by": "{name} ha retootejat",
+ "status.reblogged_by": "{name} ha impulsat",
"status.reblogs.empty": "Encara ningú no ha impulsat aquest toot. Quan algú ho faci, apareixeran aquí.",
"status.redraft": "Esborrar i reescriure",
"status.reply": "Respondre",
"status.replyAll": "Respondre al tema",
"status.report": "Informar sobre @{name}",
- "status.sensitive_toggle": "Clic per veure",
"status.sensitive_warning": "Contingut sensible",
"status.share": "Compartir",
"status.show_less": "Mostra menys",
@@ -366,7 +371,7 @@
"upload_area.title": "Arrossega i deixa anar per carregar",
"upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "S'ha superat el límit de càrrega d'arxius.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "No es permet l'enviament de fitxers amb les enquestes.",
"upload_form.description": "Descriure els problemes visuals",
"upload_form.focus": "Modificar la previsualització",
"upload_form.undo": "Esborra",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index acc680c53..606171371 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "Toglie sta scelta",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Indicà u media cum'è sensibile",
"compose_form.sensitive.marked": "Media indicatu cum'è sensibile",
"compose_form.sensitive.unmarked": "Media micca indicatu cum'è sensibile",
"compose_form.spoiler.marked": "Testu piattatu daret'à un'avertimentu",
"compose_form.spoiler.unmarked": "Testu micca piattatu",
"compose_form.spoiler_placeholder": "Scrive u vostr'avertimentu quì",
"confirmation_modal.cancel": "Annullà",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Bluccà è signalà",
"confirmations.block.confirm": "Bluccà",
"confirmations.block.message": "Site sicuru·a che vulete bluccà @{name}?",
"confirmations.delete.confirm": "Toglie",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simbuli",
"emoji_button.travel": "Lochi è Viaghju",
"empty_column.account_timeline": "Nisun statutu quì!",
+ "empty_column.account_unavailable": "Prufile micca dispunibule",
"empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.",
"empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!",
"empty_column.direct": "Ùn avete ancu nisun missaghju direttu. S'è voi mandate o ricevete unu, u vidarete quì.",
@@ -136,7 +138,7 @@
"follow_request.reject": "Righjittà",
"getting_started.developers": "Sviluppatori",
"getting_started.directory": "Annuariu di i prufili",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "Ducumentazione",
"getting_started.heading": "Per principià",
"getting_started.invite": "Invità ghjente",
"getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "fucalizà nant'à l'area di circata",
"keyboard_shortcuts.start": "per apre a culonna \"per principià\"",
"keyboard_shortcuts.toggle_hidden": "vede/piattà u testu daretu à l'avertimentu CW",
+ "keyboard_shortcuts.toggle_sensitivity": "vede/piattà i media",
"keyboard_shortcuts.toot": "scrive un novu statutu",
"keyboard_shortcuts.unfocus": "ùn fucalizà più l'area di testu",
"keyboard_shortcuts.up": "cullà indè a lista",
"lightbox.close": "Chjudà",
"lightbox.next": "Siguente",
"lightbox.previous": "Pricidente",
+ "lightbox.view_context": "Vede u cuntestu",
"lists.account.add": "Aghjunghje à a lista",
"lists.account.remove": "Toglie di a lista",
"lists.delete": "Supprime a lista",
@@ -233,14 +237,16 @@
"navigation_bar.favourites": "Favuriti",
"navigation_bar.filters": "Parolle silenzate",
"navigation_bar.follow_requests": "Dumande d'abbunamentu",
+ "navigation_bar.follows_and_followers": "Abbunati è abbunamenti",
"navigation_bar.info": "À prupositu di u servore",
"navigation_bar.keyboard_shortcuts": "Accorte cù a tastera",
"navigation_bar.lists": "Liste",
"navigation_bar.logout": "Scunnettassi",
"navigation_bar.mutes": "Utilizatori piattati",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "Persunale",
"navigation_bar.pins": "Statuti puntarulati",
"navigation_bar.preferences": "Preferenze",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Linea pubblica glubale",
"navigation_bar.security": "Sicurità",
"notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
@@ -339,7 +345,6 @@
"status.reply": "Risponde",
"status.replyAll": "Risponde à tutti",
"status.report": "Palisà @{name}",
- "status.sensitive_toggle": "Cliccate per vede",
"status.sensitive_warning": "Cuntinutu sensibile",
"status.share": "Sparte",
"status.show_less": "Ripiegà",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 1a776cf95..1bd2ae84d 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -26,7 +26,7 @@
"account.posts": "Tooty",
"account.posts_with_replies": "Tooty a odpovědi",
"account.report": "Nahlásit uživatele @{name}",
- "account.requested": "Požadavek čeká na schválení. Kliknutím zrušíte požadavek o sledování",
+ "account.requested": "Čekám na schválení. Kliknutím zrušíte požadavek o sledování",
"account.share": "Sdílet profil uživatele @{name}",
"account.show_reblogs": "Zobrazit boosty od uživatele @{name}",
"account.unblock": "Odblokovat uživatele @{name}",
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "Odstranit tuto volbu",
"compose_form.publish": "Tootnout",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Označit média jako citlivá",
"compose_form.sensitive.marked": "Média jsou označena jako citlivá",
"compose_form.sensitive.unmarked": "Média nejsou označena jako citlivá",
"compose_form.spoiler.marked": "Text je skrytý za varováním",
"compose_form.spoiler.unmarked": "Text není skrytý",
"compose_form.spoiler_placeholder": "Sem napište vaše varování",
"confirmation_modal.cancel": "Zrušit",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Blokovat a nahlásit",
"confirmations.block.confirm": "Blokovat",
"confirmations.block.message": "Jste si jistý/á, že chcete zablokovat uživatele {name}?",
"confirmations.delete.confirm": "Smazat",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestování a místa",
"empty_column.account_timeline": "Tady nejsou žádné tooty!",
+ "empty_column.account_unavailable": "Profil nedostupný",
"empty_column.blocks": "Ještě jste nezablokoval/a žádného uživatele.",
"empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!",
"empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "k zaměření na hledání",
"keyboard_shortcuts.start": "k otevření sloupce „začínáme“",
"keyboard_shortcuts.toggle_hidden": "k zobrazení/skrytí textu za varováním o obsahu",
+ "keyboard_shortcuts.toggle_sensitivity": "k zobrazení/skrytí médií",
"keyboard_shortcuts.toot": "k napsání úplně nového tootu",
"keyboard_shortcuts.unfocus": "ke zrušení zaměření na psací prostor/hledání",
"keyboard_shortcuts.up": "k posunutí nahoru v seznamu",
"lightbox.close": "Zavřít",
"lightbox.next": "Další",
"lightbox.previous": "Předchozí",
+ "lightbox.view_context": "Zobrazit kontext",
"lists.account.add": "Přidat do seznamu",
"lists.account.remove": "Odebrat ze seznamu",
"lists.delete": "Smazat seznam",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Oblíbené",
"navigation_bar.filters": "Skrytá slova",
"navigation_bar.follow_requests": "Požadavky o sledování",
+ "navigation_bar.follows_and_followers": "Sledovaní a sledující",
"navigation_bar.info": "O tomto serveru",
"navigation_bar.keyboard_shortcuts": "Klávesové zkratky",
"navigation_bar.lists": "Seznamy",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Osobní",
"navigation_bar.pins": "Připnuté tooty",
"navigation_bar.preferences": "Předvolby",
+ "navigation_bar.profile_directory": "Adresář profilů",
"navigation_bar.public_timeline": "Federovaná časová osa",
"navigation_bar.security": "Zabezpečení",
"notification.favourite": "{name} si oblíbil/a váš toot",
@@ -318,7 +324,7 @@
"status.delete": "Smazat",
"status.detailed_status": "Detailní zobrazení konverzace",
"status.direct": "Poslat přímou zprávu uživateli @{name}",
- "status.embed": "Vložit",
+ "status.embed": "Vložit na web",
"status.favourite": "Oblíbit",
"status.filtered": "Filtrováno",
"status.load_more": "Zobrazit více",
@@ -327,7 +333,7 @@
"status.more": "Více",
"status.mute": "Skrýt uživatele @{name}",
"status.mute_conversation": "Skrýt konverzaci",
- "status.open": "Rozbalit tento toot",
+ "status.open": "Otevřít tento toot",
"status.pin": "Připnout na profil",
"status.pinned": "Připnutý toot",
"status.read_more": "Číst více",
@@ -339,7 +345,6 @@
"status.reply": "Odpovědět",
"status.replyAll": "Odpovědět na vlákno",
"status.report": "Nahlásit uživatele @{name}",
- "status.sensitive_toggle": "Klikněte pro zobrazení",
"status.sensitive_warning": "Citlivý obsah",
"status.share": "Sdílet",
"status.show_less": "Zobrazit méně",
@@ -350,7 +355,7 @@
"status.unmute_conversation": "Odkrýt konverzaci",
"status.unpin": "Odepnout z profilu",
"suggestions.dismiss": "Odmítnout návrh",
- "suggestions.header": "Mohlo by vás zajímat…",
+ "suggestions.header": "Mohli by vás zajímat…",
"tabs_bar.federated_timeline": "Federovaná",
"tabs_bar.home": "Domů",
"tabs_bar.local_timeline": "Místní",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index f03b54750..66d128c9d 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tŵt",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif",
"compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif",
"compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbolau",
"emoji_button.travel": "Teithio & Llefydd",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
"empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!",
"empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "i ffocysu chwilio",
"keyboard_shortcuts.start": "i agor colofn \"dechrau arni\"",
"keyboard_shortcuts.toggle_hidden": "i ddangos/cuddio testun tu ôl i CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon",
"keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio",
"keyboard_shortcuts.up": "i symud yn uwch yn y rhestr",
"lightbox.close": "Cau",
"lightbox.next": "Nesaf",
"lightbox.previous": "Blaenorol",
+ "lightbox.view_context": "View context",
"lists.account.add": "Ychwanegwch at restr",
"lists.account.remove": "Dileu o'r rhestr",
"lists.delete": "Dileu rhestr",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Ffefrynnau",
"navigation_bar.filters": "Geiriau a dawelwyd",
"navigation_bar.follow_requests": "Ceisiadau dilyn",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Ynghylch yr achos hwn",
"navigation_bar.keyboard_shortcuts": "Bysellau brys",
"navigation_bar.lists": "Rhestrau",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personol",
"navigation_bar.pins": "Tŵtiau wedi eu pinio",
"navigation_bar.preferences": "Dewisiadau",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
"navigation_bar.security": "Diogelwch",
"notification.favourite": "hoffodd {name} eich tŵt",
@@ -339,7 +345,6 @@
"status.reply": "Ateb",
"status.replyAll": "Ateb i edefyn",
"status.report": "Adrodd @{name}",
- "status.sensitive_toggle": "Clicio i weld",
"status.sensitive_warning": "Cynnwys sensitif",
"status.share": "Rhannu",
"status.show_less": "Dangos llai",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 1be8d989d..ba8ba7a28 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Trut",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Medie er markeret som værende følsomt",
"compose_form.sensitive.unmarked": "Mediet er ikke markeret som værende følsomt",
"compose_form.spoiler.marked": "Teksten er skjult bag en advarsel",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Rejser & steder",
"empty_column.account_timeline": "Ingen bidrag her!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Du har ikke blokeret nogen endnu.",
"empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at starte lavinen!",
"empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager en, vil den vises her.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "for at fokusere søgningen",
"keyboard_shortcuts.start": "for at åbne \"kom igen\" kolonnen",
"keyboard_shortcuts.toggle_hidden": "for at vise/skjule tekst bag CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "for at påbegynde et helt nyt trut",
"keyboard_shortcuts.unfocus": "for at fjerne fokus fra skriveområde/søgning",
"keyboard_shortcuts.up": "for at bevæge dig op ad listen",
"lightbox.close": "Luk",
"lightbox.next": "Næste",
"lightbox.previous": "Forrige",
+ "lightbox.view_context": "View context",
"lists.account.add": "Tilføj til liste",
"lists.account.remove": "Fjern fra liste",
"lists.delete": "Slet liste",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritter",
"navigation_bar.filters": "Dæmpede ord",
"navigation_bar.follow_requests": "Følgeanmodninger",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Om denne instans",
"navigation_bar.keyboard_shortcuts": "Hurtigtast",
"navigation_bar.lists": "Lister",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personligt",
"navigation_bar.pins": "Fastgjorte trut",
"navigation_bar.preferences": "Præferencer",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Fælles tidslinje",
"navigation_bar.security": "Sikkerhed",
"notification.favourite": "{name} favoriserede din status",
@@ -339,7 +345,6 @@
"status.reply": "Svar",
"status.replyAll": "Svar samtale",
"status.report": "Anmeld @{name}",
- "status.sensitive_toggle": "Tryk for at se",
"status.sensitive_warning": "Følsomt indhold",
"status.share": "Del",
"status.show_less": "Vis mindre",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index a335af1bd..ff1a1eebc 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Auswahl entfernen",
"compose_form.publish": "Tröt",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Medien sind als heikel markiert",
"compose_form.sensitive.unmarked": "Medien sind nicht als heikel markiert",
"compose_form.spoiler.marked": "Text ist hinter einer Warnung versteckt",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reisen und Orte",
"empty_column.account_timeline": "Keine Beiträge!",
+ "empty_column.account_unavailable": "Konto nicht verfügbar",
"empty_column.blocks": "Du hast keine Profile blockiert.",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!",
"empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "Suche fokussieren",
"keyboard_shortcuts.start": "\"Erste Schritte-Spalte öffnen",
"keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "einen neuen Toot beginnen",
"keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren",
"keyboard_shortcuts.up": "sich in der Liste hinauf bewegen",
"lightbox.close": "Schließen",
"lightbox.next": "Weiter",
"lightbox.previous": "Zurück",
+ "lightbox.view_context": "View context",
"lists.account.add": "Zur Liste hinzufügen",
"lists.account.remove": "Von der Liste entfernen",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoriten",
"navigation_bar.filters": "Stummgeschaltene Wörter",
"navigation_bar.follow_requests": "Folgeanfragen",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Über diesen Server",
"navigation_bar.keyboard_shortcuts": "Tastenkombinationen",
"navigation_bar.lists": "Listen",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Angeheftete Beiträge",
"navigation_bar.preferences": "Einstellungen",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Föderierte Zeitleiste",
"navigation_bar.security": "Sicherheit",
"notification.favourite": "{name} hat deinen Beitrag favorisiert",
@@ -339,7 +345,6 @@
"status.reply": "Antworten",
"status.replyAll": "Auf Thread antworten",
"status.report": "@{name} melden",
- "status.sensitive_toggle": "Zum Ansehen klicken",
"status.sensitive_warning": "Heikle Inhalte",
"status.share": "Teilen",
"status.show_less": "Weniger anzeigen",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index cf0da6e47..f76caaf96 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -180,10 +180,6 @@
{
"defaultMessage": "Media hidden",
"id": "status.media_hidden"
- },
- {
- "defaultMessage": "Click to view",
- "id": "status.sensitive_toggle"
}
],
"path": "app/javascript/mastodon/components/media_gallery.json"
@@ -203,26 +199,6 @@
},
{
"descriptors": [
- {
- "defaultMessage": "Moments remaining",
- "id": "time_remaining.moments"
- },
- {
- "defaultMessage": "{number, plural, one {# second} other {# seconds}} left",
- "id": "time_remaining.seconds"
- },
- {
- "defaultMessage": "{number, plural, one {# minute} other {# minutes}} left",
- "id": "time_remaining.minutes"
- },
- {
- "defaultMessage": "{number, plural, one {# hour} other {# hours}} left",
- "id": "time_remaining.hours"
- },
- {
- "defaultMessage": "{number, plural, one {# day} other {# days}} left",
- "id": "time_remaining.days"
- },
{
"defaultMessage": "Closed",
"id": "poll.closed"
@@ -263,6 +239,26 @@
{
"defaultMessage": "{number}d",
"id": "relative_time.days"
+ },
+ {
+ "defaultMessage": "Moments remaining",
+ "id": "time_remaining.moments"
+ },
+ {
+ "defaultMessage": "{number, plural, one {# second} other {# seconds}} left",
+ "id": "time_remaining.seconds"
+ },
+ {
+ "defaultMessage": "{number, plural, one {# minute} other {# minutes}} left",
+ "id": "time_remaining.minutes"
+ },
+ {
+ "defaultMessage": "{number, plural, one {# hour} other {# hours}} left",
+ "id": "time_remaining.hours"
+ },
+ {
+ "defaultMessage": "{number, plural, one {# day} other {# days}} left",
+ "id": "time_remaining.days"
}
],
"path": "app/javascript/mastodon/components/relative_timestamp.json"
@@ -551,6 +547,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Profile unavailable",
+ "id": "empty_column.account_unavailable"
+ },
{
"defaultMessage": "No toots here!",
"id": "empty_column.account_timeline"
@@ -1092,6 +1092,10 @@
{
"defaultMessage": "Media is not marked as sensitive",
"id": "compose_form.sensitive.unmarked"
+ },
+ {
+ "defaultMessage": "Mark media as sensitive",
+ "id": "compose_form.sensitive.hide"
}
],
"path": "app/javascript/mastodon/features/compose/containers/sensitive_button_container.json"
@@ -1251,6 +1255,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Profile unavailable",
+ "id": "empty_column.account_unavailable"
+ },
{
"defaultMessage": "No one follows this user yet.",
"id": "account.followers.empty"
@@ -1260,6 +1268,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Profile unavailable",
+ "id": "empty_column.account_unavailable"
+ },
{
"defaultMessage": "This user doesn't follow anyone yet.",
"id": "account.follows.empty"
@@ -1344,46 +1356,6 @@
{
"defaultMessage": "Profile directory",
"id": "getting_started.directory"
- },
- {
- "defaultMessage": "Invite people",
- "id": "getting_started.invite"
- },
- {
- "defaultMessage": "Hotkeys",
- "id": "navigation_bar.keyboard_shortcuts"
- },
- {
- "defaultMessage": "Security",
- "id": "getting_started.security"
- },
- {
- "defaultMessage": "About this server",
- "id": "navigation_bar.info"
- },
- {
- "defaultMessage": "Mobile apps",
- "id": "navigation_bar.apps"
- },
- {
- "defaultMessage": "Terms of service",
- "id": "getting_started.terms"
- },
- {
- "defaultMessage": "Developers",
- "id": "getting_started.developers"
- },
- {
- "defaultMessage": "Documentation",
- "id": "getting_started.documentation"
- },
- {
- "defaultMessage": "Logout",
- "id": "navigation_bar.logout"
- },
- {
- "defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
- "id": "getting_started.open_source_notice"
}
],
"path": "app/javascript/mastodon/features/getting_started/index.json"
@@ -1587,6 +1559,10 @@
"defaultMessage": "to show/hide text behind CW",
"id": "keyboard_shortcuts.toggle_hidden"
},
+ {
+ "defaultMessage": "to show/hide media",
+ "id": "keyboard_shortcuts.toggle_sensitivity"
+ },
{
"defaultMessage": "to move up in the list",
"id": "keyboard_shortcuts.up"
@@ -2144,6 +2120,10 @@
},
{
"descriptors": [
+ {
+ "defaultMessage": "Unboost",
+ "id": "status.cancel_reblog_private"
+ },
{
"defaultMessage": "Boost",
"id": "status.reblog"
@@ -2224,6 +2204,60 @@
],
"path": "app/javascript/mastodon/features/ui/components/embed_modal.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Follow requests",
+ "id": "navigation_bar.follow_requests"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/follow_requests_nav_link.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Invite people",
+ "id": "getting_started.invite"
+ },
+ {
+ "defaultMessage": "Hotkeys",
+ "id": "navigation_bar.keyboard_shortcuts"
+ },
+ {
+ "defaultMessage": "Security",
+ "id": "getting_started.security"
+ },
+ {
+ "defaultMessage": "About this server",
+ "id": "navigation_bar.info"
+ },
+ {
+ "defaultMessage": "Mobile apps",
+ "id": "navigation_bar.apps"
+ },
+ {
+ "defaultMessage": "Terms of service",
+ "id": "getting_started.terms"
+ },
+ {
+ "defaultMessage": "Developers",
+ "id": "getting_started.developers"
+ },
+ {
+ "defaultMessage": "Documentation",
+ "id": "getting_started.documentation"
+ },
+ {
+ "defaultMessage": "Logout",
+ "id": "navigation_bar.logout"
+ },
+ {
+ "defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "id": "getting_started.open_source_notice"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/link_footer.json"
+ },
{
"descriptors": [
{
@@ -2237,6 +2271,10 @@
{
"defaultMessage": "Next",
"id": "lightbox.next"
+ },
+ {
+ "defaultMessage": "View context",
+ "id": "lightbox.view_context"
}
],
"path": "app/javascript/mastodon/features/ui/components/media_modal.json"
@@ -2262,6 +2300,51 @@
],
"path": "app/javascript/mastodon/features/ui/components/mute_modal.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Home",
+ "id": "tabs_bar.home"
+ },
+ {
+ "defaultMessage": "Notifications",
+ "id": "tabs_bar.notifications"
+ },
+ {
+ "defaultMessage": "Local",
+ "id": "tabs_bar.local_timeline"
+ },
+ {
+ "defaultMessage": "Federated",
+ "id": "tabs_bar.federated_timeline"
+ },
+ {
+ "defaultMessage": "Direct messages",
+ "id": "navigation_bar.direct"
+ },
+ {
+ "defaultMessage": "Favourites",
+ "id": "navigation_bar.favourites"
+ },
+ {
+ "defaultMessage": "Lists",
+ "id": "navigation_bar.lists"
+ },
+ {
+ "defaultMessage": "Preferences",
+ "id": "navigation_bar.preferences"
+ },
+ {
+ "defaultMessage": "Follows and followers",
+ "id": "navigation_bar.follows_and_followers"
+ },
+ {
+ "defaultMessage": "Profile directory",
+ "id": "navigation_bar.profile_directory"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/navigation_panel.json"
+ },
{
"descriptors": [
{
@@ -2329,6 +2412,15 @@
],
"path": "app/javascript/mastodon/features/ui/components/upload_area.json"
},
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "View context",
+ "id": "lightbox.view_context"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/video_modal.json"
+ },
{
"descriptors": [
{
@@ -2383,10 +2475,6 @@
{
"defaultMessage": "Media hidden",
"id": "status.media_hidden"
- },
- {
- "defaultMessage": "Click to view",
- "id": "status.sensitive_toggle"
}
],
"path": "app/javascript/mastodon/features/video/index.json"
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 701410a81..314c34e6e 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -71,12 +71,13 @@
"compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.",
"compose_form.lock_disclaimer.lock": "κλειδωμένος",
"compose_form.placeholder": "Τι σκέφτεσαι;",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Προσθήκη επιλογής",
+ "compose_form.poll.duration": "Διάρκεια δημοσκόπησης",
+ "compose_form.poll.option_placeholder": "Επιλογή {number}",
+ "compose_form.poll.remove_option": "Αφαίρεση επιλογής",
"compose_form.publish": "Τουτ",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο",
"compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο",
"compose_form.spoiler.marked": "Κείμενο κρυμμένο πίσω από προειδοποίηση",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Σύμβολα",
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
"empty_column.account_timeline": "Δεν έχει τουτ εδώ!",
+ "empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!",
"empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.",
@@ -154,8 +156,8 @@
"home.column_settings.basic": "Βασικά",
"home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
"home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
+ "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
"introduction.federation.action": "Επόμενο",
"introduction.federation.federated.headline": "Ομοσπονδιακή",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "εστίαση αναζήτησης",
"keyboard_shortcuts.start": "άνοιγμα κολώνας \"Ξεκινώντας\"",
"keyboard_shortcuts.toggle_hidden": "εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "δημιουργία νέου τουτ",
"keyboard_shortcuts.unfocus": "απο-εστίαση του πεδίου σύνθεσης/αναζήτησης",
"keyboard_shortcuts.up": "κίνηση προς την κορυφή της λίστας",
"lightbox.close": "Κλείσιμο",
"lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο",
+ "lightbox.view_context": "View context",
"lists.account.add": "Πρόσθεσε στη λίστα",
"lists.account.remove": "Βγάλε από τη λίστα",
"lists.delete": "Διαγραφή λίστας",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Αγαπημένα",
"navigation_bar.filters": "Αποσιωπημένες λέξεις",
"navigation_bar.follow_requests": "Αιτήματα ακολούθησης",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Πληροφορίες κόμβου",
"navigation_bar.keyboard_shortcuts": "Συντομεύσεις",
"navigation_bar.lists": "Λίστες",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Προσωπικά",
"navigation_bar.pins": "Καρφιτσωμένα τουτ",
"navigation_bar.preferences": "Προτιμήσεις",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
"navigation_bar.security": "Ασφάλεια",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
@@ -273,8 +279,8 @@
"poll.refresh": "Ανανέωση",
"poll.total_votes": "{count, plural, one {# ψήφος} other {# ψήφοι}}",
"poll.vote": "Ψήφισε",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Προσθήκη δημοσκόπησης",
+ "poll_button.remove_poll": "Αφαίρεση δημοσκόπησης",
"privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης",
"privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται",
"privacy.direct.short": "Προσωπικά",
@@ -339,7 +345,6 @@
"status.reply": "Απάντησε",
"status.replyAll": "Απάντησε στην συζήτηση",
"status.report": "Κατάγγειλε @{name}",
- "status.sensitive_toggle": "Κλικ για να δεις",
"status.sensitive_warning": "Ευαίσθητο περιεχόμενο",
"status.share": "Μοιράσου",
"status.show_less": "Δείξε λιγότερα",
@@ -366,7 +371,7 @@
"upload_area.title": "Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε πολυμέσα (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
"upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",
"upload_form.focus": "Αλλαγή προεπισκόπησης",
"upload_form.undo": "Διαγραφή",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index bf0c1bfab..34ec1ca23 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this server",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_less": "Show less",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index dd2188d8e..dc50cd3e9 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -71,19 +71,20 @@
"compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.",
"compose_form.lock_disclaimer.lock": "ŝlosita",
"compose_form.placeholder": "Pri kio vi pensas?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Aldoni elekto",
+ "compose_form.poll.duration": "Balotenketo daŭro",
+ "compose_form.poll.option_placeholder": "elekto {number}",
+ "compose_form.poll.remove_option": "Forigi ĉi tiu elekton",
"compose_form.publish": "Hup",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla",
"compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla",
"compose_form.spoiler.marked": "Teksto kaŝita malantaŭ averto",
"compose_form.spoiler.unmarked": "Teksto ne kaŝita",
"compose_form.spoiler_placeholder": "Skribu vian averton ĉi tie",
"confirmation_modal.cancel": "Nuligi",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Bloki & Signali",
"confirmations.block.confirm": "Bloki",
"confirmations.block.message": "Ĉu vi certas, ke vi volas bloki {name}?",
"confirmations.delete.confirm": "Forigi",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboloj",
"emoji_button.travel": "Vojaĝoj kaj lokoj",
"empty_column.account_timeline": "Neniu mesaĝo ĉi tie!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.",
"empty_column.community": "La loka tempolinio estas malplena. Skribu ion por plenigi ĝin!",
"empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
@@ -154,15 +156,15 @@
"home.column_settings.basic": "Bazaj agordoj",
"home.column_settings.show_reblogs": "Montri diskonigojn",
"home.column_settings.show_replies": "Montri respondojn",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
+ "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
"introduction.federation.action": "Sekva",
- "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.headline": "Federacio",
"introduction.federation.federated.text": "Publikaj mesaĝoj el aliaj serviloj de la Fediverse aperos en la fratara tempolinio.",
- "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.headline": "Heimo",
"introduction.federation.home.text": "Mesaĝoj de homoj, kiujn vi sekvas, aperos en via hejma fluo. Vi povas sekvi iun ajn de ajna servilo!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "Loka",
"introduction.federation.local.text": "Publikaj mesaĝoj de homoj de via servilo aperos en la loka tempolinio.",
"introduction.interactions.action": "Fini la lernilon!",
"introduction.interactions.favourite.headline": "Stelumi",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "por fokusigi la serĉilon",
"keyboard_shortcuts.start": "por malfermi la kolumnon «por komenci»",
"keyboard_shortcuts.toggle_hidden": "por montri/kaŝi tekston malantaŭ enhava averto",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "por komenci tute novan mesaĝon",
"keyboard_shortcuts.unfocus": "por malfokusigi la tekstujon aŭ la serĉilon",
"keyboard_shortcuts.up": "por iri supren en la listo",
"lightbox.close": "Fermi",
"lightbox.next": "Sekva",
"lightbox.previous": "Antaŭa",
+ "lightbox.view_context": "View context",
"lists.account.add": "Aldoni al la listo",
"lists.account.remove": "Forigi de la listo",
"lists.delete": "Forigi la liston",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Stelumoj",
"navigation_bar.filters": "Silentigitaj vortoj",
"navigation_bar.follow_requests": "Petoj de sekvado",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Pri ĉi tiu servilo",
"navigation_bar.keyboard_shortcuts": "Rapidklavoj",
"navigation_bar.lists": "Listoj",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Persone",
"navigation_bar.pins": "Alpinglitaj mesaĝoj",
"navigation_bar.preferences": "Preferoj",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Fratara tempolinio",
"navigation_bar.security": "Sekureco",
"notification.favourite": "{name} stelumis vian mesaĝon",
"notification.follow": "{name} eksekvis vin",
"notification.mention": "{name} menciis vin",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Balotenketo ke vi balotis estas finita",
"notification.reblog": "{name} diskonigis vian mesaĝon",
"notifications.clear": "Forviŝi sciigojn",
"notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Montri",
"notifications.column_settings.follow": "Novaj sekvantoj:",
"notifications.column_settings.mention": "Mencioj:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Balotenketo rezulto:",
"notifications.column_settings.push": "Puŝsciigoj",
"notifications.column_settings.reblog": "Diskonigoj:",
"notifications.column_settings.show": "Montri en kolumno",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "Stelumoj",
"notifications.filter.follows": "Sekvoj",
"notifications.filter.mentions": "Mencioj",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Balotenketoj rezultoj",
"notifications.group": "{count} sciigoj",
"poll.closed": "Finita",
"poll.refresh": "Aktualigi",
"poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}",
"poll.vote": "Voĉdoni",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Aldoni balotenketon",
+ "poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaĝan privatecon",
"privacy.direct.long": "Afiŝi nur al menciitaj uzantoj",
"privacy.direct.short": "Rekta",
@@ -339,7 +345,6 @@
"status.reply": "Respondi",
"status.replyAll": "Respondi al la fadeno",
"status.report": "Signali @{name}",
- "status.sensitive_toggle": "Alklaki por vidi",
"status.sensitive_warning": "Tikla enhavo",
"status.share": "Diskonigi",
"status.show_less": "Malgrandigi",
@@ -356,17 +361,17 @@
"tabs_bar.local_timeline": "Loka tempolinio",
"tabs_bar.notifications": "Sciigoj",
"tabs_bar.search": "Serĉi",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "time_remaining.days": "{number, plural, one {# tago} other {# tagoj}} restanta",
+ "time_remaining.hours": "{number, plural, one {# horo} other {# horoj}} restanta",
+ "time_remaining.minutes": "{number, plural, one {# minuto} other {# minutoj}} restanta",
+ "time_remaining.moments": "Momento restanta",
+ "time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundoj}} restanta",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persono} other {personoj}} parolas",
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
"upload_area.title": "Altreni kaj lasi por alŝuti",
"upload_button.label": "Aldoni aŭdovidaĵon (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Limo de dosiera alŝutado transpasita.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "Alŝuto de dosiero ne permisita kun balotenketo",
"upload_form.description": "Priskribi por misvidantaj homoj",
"upload_form.focus": "Antaŭvido de ŝanĝo",
"upload_form.undo": "Forigi",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 97d03d840..1962d9447 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tootear",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Material marcado como sensible",
"compose_form.sensitive.unmarked": "Material no marcado como sensible",
"compose_form.spoiler.marked": "Texto oculto tras la advertencia",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
"empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "para poner el foco en la búsqueda",
"keyboard_shortcuts.start": "abrir la columna \"comenzar\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "para comenzar un nuevo toot",
"keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda",
"keyboard_shortcuts.up": "para ir hacia arriba en la lista",
"lightbox.close": "Cerrar",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
+ "lightbox.view_context": "View context",
"lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palabras silenciadas",
"navigation_bar.follow_requests": "Solicitudes para seguirte",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Información adicional",
"navigation_bar.keyboard_shortcuts": "Atajos",
"navigation_bar.lists": "Listas",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toots fijados",
"navigation_bar.preferences": "Preferencias",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Historia federada",
"navigation_bar.security": "Seguridad",
"notification.favourite": "{name} marcó tu estado como favorito",
@@ -339,7 +345,6 @@
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.report": "Reportar",
- "status.sensitive_toggle": "Haz clic para ver",
"status.sensitive_warning": "Contenido sensible",
"status.share": "Compartir",
"status.show_less": "Mostrar menos",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 17f84dc27..4f66e6b39 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
"compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
"compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Sinboloak",
"emoji_button.travel": "Bidaiak eta tokiak",
"empty_column.account_timeline": "Ez dago toot-ik hemen!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
"empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
"empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "bilaketan fokua jartzea",
"keyboard_shortcuts.start": "\"Menua\" zutabea irekitzeko",
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "toot berria hastea",
"keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
"keyboard_shortcuts.up": "zerrendan gora mugitzea",
"lightbox.close": "Itxi",
"lightbox.next": "Hurrengoa",
"lightbox.previous": "Aurrekoa",
+ "lightbox.view_context": "View context",
"lists.account.add": "Gehitu zerrendara",
"lists.account.remove": "Kendu zerrendatik",
"lists.delete": "Ezabatu zerrenda",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Gogokoak",
"navigation_bar.filters": "Mutututako hitzak",
"navigation_bar.follow_requests": "Jarraitzeko eskariak",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Zerbitzari honi buruz",
"navigation_bar.keyboard_shortcuts": "Laster-teklak",
"navigation_bar.lists": "Zerrendak",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Finkatutako toot-ak",
"navigation_bar.preferences": "Hobespenak",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federatutako denbora-lerroa",
"navigation_bar.security": "Segurtasuna",
"notification.favourite": "{name}(e)k zure mezua gogoko du",
@@ -339,7 +345,6 @@
"status.reply": "Erantzun",
"status.replyAll": "Erantzun harian",
"status.report": "Salatu @{name}",
- "status.sensitive_toggle": "Egin klik ikusteko",
"status.sensitive_warning": "Kontuz: Eduki hunkigarria",
"status.share": "Partekatu",
"status.show_less": "Erakutsi gutxiago",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 0bfafd222..d80487875 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "حذف این گزینه",
"compose_form.publish": "بوق",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "این تصویر به عنوان حساس علامتگذاری شده",
"compose_form.sensitive.unmarked": "این تصویر به عنوان حساس علامتگذاری نشده",
"compose_form.spoiler.marked": "نوشته پشت هشدار محتوا پنهان است",
"compose_form.spoiler.unmarked": "نوشته پنهان نیست",
"compose_form.spoiler_placeholder": "هشدار محتوا",
"confirmation_modal.cancel": "بیخیال",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "مسدودسازی و گزارش",
"confirmations.block.confirm": "مسدود کن",
"confirmations.block.message": "آیا واقعاً میخواهید {name} را مسدود کنید؟",
"confirmations.delete.confirm": "پاک کن",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان",
"empty_column.account_timeline": "هیچ بوقی اینجا نیست!",
+ "empty_column.account_unavailable": "نمایهٔ ناموجود",
"empty_column.blocks": "شما هنوز هیچ کسی را مسدود نکردهاید.",
"empty_column.community": "فهرست نوشتههای محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
"empty_column.direct": "شما هیچ پیغام مستقیمی ندارید. اگر چنین پیغامی بگیرید یا بفرستید اینجا نمایش خواهد یافت.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "برای فعالکردن جستجو",
"keyboard_shortcuts.start": "برای گشودن ستون «آغاز کنید»",
"keyboard_shortcuts.toggle_hidden": "برای نمایش/نهفتن نوشتهٔ پشت هشدار محتوا",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "برای آغاز یک بوق تازه",
"keyboard_shortcuts.unfocus": "برای برداشتن توجه از نوشتن/جستجو",
"keyboard_shortcuts.up": "برای بالا رفتن در فهرست",
"lightbox.close": "بستن",
"lightbox.next": "بعدی",
"lightbox.previous": "قبلی",
+ "lightbox.view_context": "View context",
"lists.account.add": "افزودن به فهرست",
"lists.account.remove": "پاککردن از فهرست",
"lists.delete": "حذف فهرست",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "پسندیدهها",
"navigation_bar.filters": "واژگان بیصداشده",
"navigation_bar.follow_requests": "درخواستهای پیگیری",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "دربارهٔ این سرور",
"navigation_bar.keyboard_shortcuts": "میانبرهای صفحهکلید",
"navigation_bar.lists": "فهرستها",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "شخصی",
"navigation_bar.pins": "نوشتههای ثابت",
"navigation_bar.preferences": "ترجیحات",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "نوشتههای همهجا",
"navigation_bar.security": "امنیت",
"notification.favourite": "{name} نوشتهٔ شما را پسندید",
@@ -339,7 +345,6 @@
"status.reply": "پاسخ",
"status.replyAll": "به نوشته پاسخ دهید",
"status.report": "گزارش دادن @{name}",
- "status.sensitive_toggle": "برای دیدن کلیک کنید",
"status.sensitive_warning": "محتوای حساس",
"status.share": "همرسانی",
"status.show_less": "نهفتن",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 68381f6b3..f17a967b5 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tuuttaa",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media on merkitty arkaluontoiseksi",
"compose_form.sensitive.unmarked": "Mediaa ei ole merkitty arkaluontoiseksi",
"compose_form.spoiler.marked": "Teksti on piilotettu varoituksen taakse",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbolit",
"emoji_button.travel": "Matkailu",
"empty_column.account_timeline": "Ei ole 'toots' täällä!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.",
"empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!",
"empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "siirry hakukenttään",
"keyboard_shortcuts.start": "avaa \"Aloitus\" -sarake",
"keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "ala kirjoittaa uutta tuuttausta",
"keyboard_shortcuts.unfocus": "siirry pois tekstikentästä tai hakukentästä",
"keyboard_shortcuts.up": "siirry listassa ylöspäin",
"lightbox.close": "Sulje",
"lightbox.next": "Seuraava",
"lightbox.previous": "Edellinen",
+ "lightbox.view_context": "View context",
"lists.account.add": "Lisää listaan",
"lists.account.remove": "Poista listasta",
"lists.delete": "Poista lista",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Suosikit",
"navigation_bar.filters": "Mykistetyt sanat",
"navigation_bar.follow_requests": "Seuraamispyynnöt",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Tietoa tästä instanssista",
"navigation_bar.keyboard_shortcuts": "Näppäinkomennot",
"navigation_bar.lists": "Listat",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Kiinnitetyt tuuttaukset",
"navigation_bar.preferences": "Asetukset",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Yleinen aikajana",
"navigation_bar.security": "Tunnukset",
"notification.favourite": "{name} tykkäsi tilastasi",
@@ -339,7 +345,6 @@
"status.reply": "Vastaa",
"status.replyAll": "Vastaa ketjuun",
"status.report": "Raportoi @{name}",
- "status.sensitive_toggle": "Klikkaa nähdäksesi",
"status.sensitive_warning": "Arkaluontoista sisältöä",
"status.share": "Jaa",
"status.show_less": "Näytä vähemmän",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 4d7451248..0dcee350d 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -71,12 +71,13 @@
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Qu’avez-vous en tête ?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Ajouter un choix",
+ "compose_form.poll.duration": "Durée du sondage",
+ "compose_form.poll.option_placeholder": "Choix {number}",
+ "compose_form.poll.remove_option": "Supprimer ce choix",
"compose_form.publish": "Pouet",
"compose_form.publish_loud": "{publish} !",
+ "compose_form.sensitive.hide": "Marquer le média comme sensible",
"compose_form.sensitive.marked": "Média marqué comme sensible",
"compose_form.sensitive.unmarked": "Média non marqué comme sensible",
"compose_form.spoiler.marked": "Le texte est caché derrière un avertissement",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux & Voyages",
"empty_column.account_timeline": "Aucun pouet ici !",
+ "empty_column.account_unavailable": "Profil non disponible",
"empty_column.blocks": "Vous n’avez bloqué aucun·e utilisateur·rice pour le moment.",
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !",
"empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.",
@@ -154,8 +156,8 @@
"home.column_settings.basic": "Basique",
"home.column_settings.show_reblogs": "Afficher les partages",
"home.column_settings.show_replies": "Afficher les réponses",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
+ "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"introduction.federation.action": "Suivant",
"introduction.federation.federated.headline": "Fil public global",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "pour cibler la recherche",
"keyboard_shortcuts.start": "pour ouvrir la colonne \"pour commencer\"",
"keyboard_shortcuts.toggle_hidden": "pour afficher/cacher un texte derrière CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "pour démarrer un tout nouveau pouet",
"keyboard_shortcuts.unfocus": "pour quitter la zone de composition/recherche",
"keyboard_shortcuts.up": "pour remonter dans la liste",
"lightbox.close": "Fermer",
"lightbox.next": "Suivant",
"lightbox.previous": "Précédent",
+ "lightbox.view_context": "Voir le contexte",
"lists.account.add": "Ajouter à la liste",
"lists.account.remove": "Supprimer de la liste",
"lists.delete": "Effacer la liste",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoris",
"navigation_bar.filters": "Mots silenciés",
"navigation_bar.follow_requests": "Demandes de suivi",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Plus d’informations",
"navigation_bar.keyboard_shortcuts": "Raccourcis clavier",
"navigation_bar.lists": "Listes",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Personnel",
"navigation_bar.pins": "Pouets épinglés",
"navigation_bar.preferences": "Préférences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Fil public global",
"navigation_bar.security": "Sécurité",
"notification.favourite": "{name} a ajouté à ses favoris :",
"notification.follow": "{name} vous suit",
"notification.mention": "{name} vous a mentionné :",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Un sondage auquel vous avez participé vient de se terminer",
"notification.reblog": "{name} a partagé votre statut :",
"notifications.clear": "Nettoyer les notifications",
"notifications.clear_confirmation": "Voulez-vous vraiment supprimer toutes vos notifications ?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Afficher",
"notifications.column_settings.follow": "Nouveaux⋅elles abonné⋅e·s :",
"notifications.column_settings.mention": "Mentions :",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Résultats du sondage :",
"notifications.column_settings.push": "Notifications",
"notifications.column_settings.reblog": "Partages :",
"notifications.column_settings.show": "Afficher dans la colonne",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "Favoris",
"notifications.filter.follows": "Abonné·e·s",
"notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Résultats des sondages",
"notifications.group": "{count} notifications",
"poll.closed": "Fermé",
"poll.refresh": "Actualiser",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Voter",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Ajouter un sondage",
+ "poll_button.remove_poll": "Supprimer le sondage",
"privacy.change": "Ajuster la confidentialité du message",
"privacy.direct.long": "N’envoyer qu’aux personnes mentionnées",
"privacy.direct.short": "Direct",
@@ -339,7 +345,6 @@
"status.reply": "Répondre",
"status.replyAll": "Répondre au fil",
"status.report": "Signaler @{name}",
- "status.sensitive_toggle": "Cliquer pour afficher",
"status.sensitive_warning": "Contenu sensible",
"status.share": "Partager",
"status.show_less": "Replier",
@@ -366,7 +371,7 @@
"upload_area.title": "Glissez et déposez pour envoyer",
"upload_button.label": "Joindre un média (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "L'envoi de fichiers n'est pas autorisé avec les sondages.",
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.focus": "Modifier l’aperçu",
"upload_form.undo": "Supprimer",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 3011e7d07..7cf7e4026 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Medios marcados como sensibles",
"compose_form.sensitive.unmarked": "Os medios non están marcados como sensibles",
"compose_form.spoiler.marked": "O texto está agochado tras un aviso",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes e Lugares",
"empty_column.account_timeline": "Sen toots por aquí!",
+ "empty_column.account_unavailable": "Perfil non dispoñible",
"empty_column.blocks": "Non bloqueou ningunha usuaria polo de agora.",
"empty_column.community": "A liña temporal local está baldeira. Escriba algo de xeito público para que rule!",
"empty_column.direct": "Aínda non ten mensaxes directas. Cando envíe ou reciba unha, aparecerá aquí.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "para centrar a busca",
"keyboard_shortcuts.start": "abrir columna \"comezando\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/agochar un texto detrás do AC",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "escribir un toot novo",
"keyboard_shortcuts.unfocus": "quitar o foco do área de escritura/busca",
"keyboard_shortcuts.up": "ir hacia arriba na lista",
"lightbox.close": "Fechar",
"lightbox.next": "Seguinte",
"lightbox.previous": "Anterior",
+ "lightbox.view_context": "View context",
"lists.account.add": "Engadir á lista",
"lists.account.remove": "Eliminar da lista",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritas",
"navigation_bar.filters": "Palabras acaladas",
"navigation_bar.follow_requests": "Peticións de seguimento",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Sobre este servidor",
"navigation_bar.keyboard_shortcuts": "Atallos",
"navigation_bar.lists": "Listas",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Persoal",
"navigation_bar.pins": "Mensaxes fixadas",
"navigation_bar.preferences": "Preferencias",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Liña temporal federada",
"navigation_bar.security": "Seguridade",
"notification.favourite": "{name} marcou como favorito o seu estado",
@@ -339,7 +345,6 @@
"status.reply": "Resposta",
"status.replyAll": "Resposta a conversa",
"status.report": "Informar @{name}",
- "status.sensitive_toggle": "Pulse para ver",
"status.sensitive_warning": "Contido sensible",
"status.share": "Compartir",
"status.show_less": "Mostrar menos",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index c136c111f..b6fc8c6ab 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "ללחוש",
"compose_form.publish_loud": "לחצרץ!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "להתמקד בחלון החיפוש",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "להתחיל חיצרוץ חדש",
"keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש",
"keyboard_shortcuts.up": "לנוע במעלה הרשימה",
"lightbox.close": "סגירה",
"lightbox.next": "הלאה",
"lightbox.previous": "הקודם",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "חיבובים",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "בקשות מעקב",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "מידע נוסף",
"navigation_bar.keyboard_shortcuts": "קיצורי מקלדת",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "חיצרוצים מקובעים",
"navigation_bar.preferences": "העדפות",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
"navigation_bar.security": "Security",
"notification.favourite": "חצרוצך חובב על ידי {name}",
@@ -339,7 +345,6 @@
"status.reply": "תגובה",
"status.replyAll": "תגובה לכולם",
"status.report": "דיווח על @{name}",
- "status.sensitive_toggle": "לחצו כדי לראות",
"status.sensitive_warning": "תוכן רגיש",
"status.share": "שיתוף",
"status.show_less": "הראה פחות",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
new file mode 100644
index 000000000..ac58514d4
--- /dev/null
+++ b/app/javascript/mastodon/locales/hi.json
@@ -0,0 +1,388 @@
+{
+ "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.badges.bot": "Bot",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Hide everything from {domain}",
+ "account.blocked": "Blocked",
+ "account.direct": "Direct message @{name}",
+ "account.domain_blocked": "Domain hidden",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval. Click to cancel follow request",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "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",
+ "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",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.domain_blocks": "Hidden domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.media_only": "Media Only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.poll.add_option": "Add a choice",
+ "compose_form.poll.duration": "Poll duration",
+ "compose_form.poll.option_placeholder": "Choice {number}",
+ "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.developers": "Developers",
+ "getting_started.directory": "Profile directory",
+ "getting_started.documentation": "Documentation",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.select.no_options_message": "No suggestions found",
+ "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "introduction.federation.action": "Next",
+ "introduction.federation.federated.headline": "Federated",
+ "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+ "introduction.federation.home.headline": "Home",
+ "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+ "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.interactions.action": "Finish toot-orial!",
+ "introduction.interactions.favourite.headline": "Favourite",
+ "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.reblog.headline": "Boost",
+ "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reply.headline": "Reply",
+ "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.welcome.action": "Let's go!",
+ "introduction.welcome.headline": "First steps",
+ "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.edit.submit": "Change title",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
+ "navigation_bar.info": "About this server",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.mention": "{name} mentioned you",
+ "notification.poll": "A poll you have voted in has ended",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.filter_bar.advanced": "Display all categories",
+ "notifications.column_settings.filter_bar.category": "Quick filter bar",
+ "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.filter.all": "All",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favourites",
+ "notifications.filter.follows": "Follows",
+ "notifications.filter.mentions": "Mentions",
+ "notifications.filter.polls": "Poll results",
+ "notifications.group": "{count} notifications",
+ "poll.closed": "Closed",
+ "poll.refresh": "Refresh",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Vote",
+ "poll_button.add_poll": "Add a poll",
+ "poll_button.remove_poll": "Remove poll",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.admin_account": "Open moderation interface for @{name}",
+ "status.admin_status": "Open this status in the moderation interface",
+ "status.block": "Block @{name}",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.copy": "Copy link to status",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+ "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+ "time_remaining.moments": "Moments remaining",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_error.limit": "File upload limit exceeded.",
+ "upload_error.poll": "File upload not allowed with polls.",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.focus": "Crop",
+ "upload_form.undo": "Delete",
+ "upload_progress.label": "Uploading...",
+ "video.close": "Close video",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 86bd01a79..9f0ad1985 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & Mjesta",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Zatvori",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoriti",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Zahtjevi za slijeđenje",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Više informacija",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Postavke",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federalni timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} je lajkao tvoj status",
@@ -339,7 +345,6 @@
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na temu",
"status.report": "Prijavi @{name}",
- "status.sensitive_toggle": "Klikni da bi vidio",
"status.sensitive_warning": "Osjetljiv sadržaj",
"status.share": "Share",
"status.show_less": "Pokaži manje",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 507e04400..9fc9444a7 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tülk",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Szimbólumok",
"emoji_button.travel": "Utazás és Helyek",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "A helyi idővonal üres. Írj egy publikus stástuszt, hogy elindítsd a labdát!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "kereső kiemelése",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "új tülk megkezdése",
"keyboard_shortcuts.unfocus": "tülk szerkesztés/keresés fókuszpontból való kivétele",
"keyboard_shortcuts.up": "fennebb helyezés a listában",
"lightbox.close": "Bezárás",
"lightbox.next": "Következő",
"lightbox.previous": "Előző",
+ "lightbox.view_context": "View context",
"lists.account.add": "Hozzáadás a listához",
"lists.account.remove": "Eltávolít a listából",
"lists.delete": "Lista törlése",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Kedvencek",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Követési kérések",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Ezen szerverről",
"navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk",
"navigation_bar.lists": "Listák",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Kitűzött tülkök",
"navigation_bar.preferences": "Beállítások",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Nyilvános időfolyam",
"navigation_bar.security": "Security",
"notification.favourite": "{name} kedvencnek jelölte az állapotod",
@@ -339,7 +345,6 @@
"status.reply": "Válasz",
"status.replyAll": "Válaszolj a beszélgetésre",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Katt a megtekintéshez",
"status.sensitive_warning": "Érzékeny tartalom",
"status.share": "Megosztás",
"status.show_less": "Kevesebb",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index a4c8bffba..74079ba18 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Թթել",
"compose_form.publish_loud": "Թթե՜լ",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Նշաններ",
"emoji_button.travel": "Ուղեւորություն եւ տեղանքներ",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Տեղական հոսքը դատա՛րկ է։ Հրապարակային մի բան գրիր շարժիչը խոդ տալու համար։",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "որոնման դաշտին սեւեռվելու համար",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "թարմ թութ սկսելու համար",
"keyboard_shortcuts.unfocus": "տեքստի/որոնման տիրույթից ապասեւեռվելու համար",
"keyboard_shortcuts.up": "ցանկով վերեւ շարժվելու համար",
"lightbox.close": "Փակել",
"lightbox.next": "Հաջորդ",
"lightbox.previous": "Նախորդ",
+ "lightbox.view_context": "View context",
"lists.account.add": "Ավելացնել ցանկին",
"lists.account.remove": "Հանել ցանկից",
"lists.delete": "Ջնջել ցանկը",
@@ -233,16 +237,18 @@
"navigation_bar.favourites": "Հավանածներ",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Հետեւելու հայցեր",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Այս հանգույցի մասին",
"navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ",
"navigation_bar.lists": "Ցանկեր",
"navigation_bar.logout": "Դուրս գալ",
"navigation_bar.mutes": "Լռեցրած օգտատերեր",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "Անձնական",
"navigation_bar.pins": "Ամրացված թթեր",
"navigation_bar.preferences": "Նախապատվություններ",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Դաշնային հոսք",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Անվտանգություն",
"notification.favourite": "{name} հավանեց թութդ",
"notification.follow": "{name} սկսեց հետեւել քեզ",
"notification.mention": "{name} նշեց քեզ",
@@ -308,7 +314,7 @@
"search_results.accounts": "People",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "search_results.total": "{count, number} {count, plural, one {արդյունք} other {արդյունք}}",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Արգելափակել @{name}֊ին",
@@ -339,7 +345,6 @@
"status.reply": "Պատասխանել",
"status.replyAll": "Պատասխանել թելին",
"status.report": "Բողոքել @{name}֊ից",
- "status.sensitive_toggle": "Կտացրու՝ դիտելու համար",
"status.sensitive_warning": "Կասկածելի բովանդակություն",
"status.share": "Կիսվել",
"status.show_less": "Պակաս",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 5319705dc..a97f0bd86 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Sumber ini telah ditandai sebagai sumber sensitif.",
"compose_form.sensitive.unmarked": "Sumber ini tidak ditandai sebagai sumber sensitif",
"compose_form.spoiler.marked": "Teks disembunyikan dibalik peringatan",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simbol",
"emoji_button.travel": "Tempat Wisata",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "untuk fokus mencari",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Tutup",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorit",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Permintaan mengikuti",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Informasi selengkapnya",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Pengaturan",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Linimasa gabungan",
"navigation_bar.security": "Security",
"notification.favourite": "{name} menyukai status anda",
@@ -339,7 +345,6 @@
"status.reply": "Balas",
"status.replyAll": "Balas ke semua",
"status.report": "Laporkan @{name}",
- "status.sensitive_toggle": "Klik untuk menampilkan",
"status.sensitive_warning": "Konten sensitif",
"status.share": "Share",
"status.show_less": "Tampilkan lebih sedikit",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 300bc4484..00936134a 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Siflar",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Klozar",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorati",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Demandi di sequado",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Detaloza informi",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferi",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federata tempolineo",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favorizis tua mesajo",
@@ -339,7 +345,6 @@
"status.reply": "Respondar",
"status.replyAll": "Respondar a filo",
"status.report": "Denuncar @{name}",
- "status.sensitive_toggle": "Kliktar por vidar",
"status.sensitive_warning": "Trubliva kontenajo",
"status.share": "Share",
"status.show_less": "Montrar mine",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index d70a88dbb..d5e88c4f3 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Questo media è contrassegnato come sensibile",
"compose_form.sensitive.unmarked": "Questo media non è contrassegnato come sensibile",
"compose_form.spoiler.marked": "Il testo è nascosto dall'avviso",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Viaggi e luoghi",
"empty_column.account_timeline": "Non ci sono toot qui!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Non hai ancora bloccato nessun utente.",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
"empty_column.direct": "Non hai ancora nessun messaggio diretto. Quando ne manderai o riceverai qualcuno, apparirà qui.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "per spostare il focus sulla ricerca",
"keyboard_shortcuts.start": "per aprire la colonna \"Come iniziare\"",
"keyboard_shortcuts.toggle_hidden": "per mostrare/nascondere il testo dei CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "per iniziare a scrivere un toot completamente nuovo",
"keyboard_shortcuts.unfocus": "per uscire dall'area di composizione o dalla ricerca",
"keyboard_shortcuts.up": "per spostarsi in alto nella lista",
"lightbox.close": "Chiudi",
"lightbox.next": "Successivo",
"lightbox.previous": "Precedente",
+ "lightbox.view_context": "View context",
"lists.account.add": "Aggiungi alla lista",
"lists.account.remove": "Togli dalla lista",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Apprezzati",
"navigation_bar.filters": "Parole silenziate",
"navigation_bar.follow_requests": "Richieste di amicizia",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Informazioni su questo server",
"navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida",
"navigation_bar.lists": "Liste",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toot fissati in cima",
"navigation_bar.preferences": "Impostazioni",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Timeline federata",
"navigation_bar.security": "Sicurezza",
"notification.favourite": "{name} ha apprezzato il tuo post",
@@ -339,7 +345,6 @@
"status.reply": "Rispondi",
"status.replyAll": "Rispondi alla conversazione",
"status.report": "Segnala @{name}",
- "status.sensitive_toggle": "Clicca per vedere",
"status.sensitive_warning": "Materiale sensibile",
"status.share": "Condividi",
"status.show_less": "Mostra meno",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 766ae0ec5..e86142869 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,12 +1,12 @@
{
- "account.add_or_remove_from_list": "リストに追加または外す",
+ "account.add_or_remove_from_list": "リストから追加または外す",
"account.badges.bot": "Bot",
"account.block": "@{name}さんをブロック",
"account.block_domain": "{domain}全体を非表示",
"account.blocked": "ブロック済み",
"account.direct": "@{name}さんにダイレクトメッセージ",
"account.domain_blocked": "ドメイン非表示中",
- "account.edit_profile": "プロフィールを編集",
+ "account.edit_profile": "プロフィール編集",
"account.endorse": "プロフィールで紹介する",
"account.follow": "フォロー",
"account.followers": "フォロワー",
@@ -16,7 +16,7 @@
"account.follows_you": "フォローされています",
"account.hide_reblogs": "@{name}さんからのブーストを非表示",
"account.link_verified_on": "このリンクの所有権は{date}に確認されました",
- "account.locked_info": "このアカウントは承認制アカウントです。相手が確認するまでフォローは完了しません。",
+ "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。",
"account.media": "メディア",
"account.mention": "@{name}さんにトゥート",
"account.moved_to": "{name}さんは引っ越しました:",
@@ -30,7 +30,7 @@
"account.share": "@{name}さんのプロフィールを共有する",
"account.show_reblogs": "@{name}さんからのブーストを表示",
"account.unblock": "@{name}さんのブロックを解除",
- "account.unblock_domain": "{domain}を表示",
+ "account.unblock_domain": "{domain}の非表示を解除",
"account.unendorse": "プロフィールから外す",
"account.unfollow": "フォロー解除",
"account.unmute": "@{name}さんのミュートを解除",
@@ -67,23 +67,24 @@
"community.column_settings.media_only": "メディアのみ表示",
"compose_form.direct_message_warning": "このトゥートはメンションされた人にのみ送信されます。",
"compose_form.direct_message_warning_learn_more": "もっと詳しく",
- "compose_form.hashtag_warning": "このトゥートは未収載なのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。",
+ "compose_form.hashtag_warning": "このトゥートは公開設定ではないのでハッシュタグの一覧に表示されません。公開トゥートだけがハッシュタグで検索できます。",
"compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。",
"compose_form.lock_disclaimer.lock": "承認制",
"compose_form.placeholder": "今なにしてる?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "投票期間",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "追加",
+ "compose_form.poll.duration": "アンケート期間",
+ "compose_form.poll.option_placeholder": "項目 {number}",
+ "compose_form.poll.remove_option": "この項目を削除",
"compose_form.publish": "トゥート",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "メディアを閲覧注意にする",
"compose_form.sensitive.marked": "メディアに閲覧注意が設定されています",
"compose_form.sensitive.unmarked": "メディアに閲覧注意が設定されていません",
"compose_form.spoiler.marked": "閲覧注意が設定されています",
"compose_form.spoiler.unmarked": "閲覧注意が設定されていません",
"compose_form.spoiler_placeholder": "ここに警告を書いてください",
"confirmation_modal.cancel": "キャンセル",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "ブロックし通報",
"confirmations.block.confirm": "ブロック",
"confirmations.block.message": "本当に{name}さんをブロックしますか?",
"confirmations.delete.confirm": "削除",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "記号",
"emoji_button.travel": "旅行と場所",
"empty_column.account_timeline": "トゥートがありません!",
+ "empty_column.account_unavailable": "プロフィールは利用できません",
"empty_column.blocks": "まだ誰もブロックしていません。",
"empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
"empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。",
@@ -154,8 +156,8 @@
"home.column_settings.basic": "基本設定",
"home.column_settings.show_reblogs": "ブースト表示",
"home.column_settings.show_replies": "返信表示",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number}日",
+ "intervals.full.hours": "{number}時間",
"intervals.full.minutes": "{number}分",
"introduction.federation.action": "次へ",
"introduction.federation.federated.headline": "連合タイムライン",
@@ -173,7 +175,7 @@
"introduction.interactions.reply.text": "自身や人々のトゥートに返信することで、一連の会話に繋げることができます。",
"introduction.welcome.action": "はじめる!",
"introduction.welcome.headline": "はじめに",
- "introduction.welcome.text": "Fediverseの世界へようこそ!あと少しでメッセージを配信したり、さまざまなサーバーを越えた友達と話せるようになります。ところでここ{domain}は特別なサーバーです…あなたのプロフィールを持つ主体のサーバーですので、名前を覚えておきましょう。",
+ "introduction.welcome.text": "Fediverseの世界へようこそ!あと少しでメッセージを配信したり、さまざまなサーバーを越えた友達と話せるようになります。ところで、ここ{domain}は特別なサーバーです…あなたのプロフィールを持つ主体のサーバーですので、名前を覚えておきましょう。",
"keyboard_shortcuts.back": "戻る",
"keyboard_shortcuts.blocked": "ブロックしたユーザーのリストを開く",
"keyboard_shortcuts.boost": "ブースト",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "検索欄に移動",
"keyboard_shortcuts.start": "\"スタート\" カラムを開く",
"keyboard_shortcuts.toggle_hidden": "CWで隠れた文を見る/隠す",
+ "keyboard_shortcuts.toggle_sensitivity": "非表示のメディアを見る/隠す",
"keyboard_shortcuts.toot": "新規トゥート",
"keyboard_shortcuts.unfocus": "トゥート入力欄・検索欄から離れる",
"keyboard_shortcuts.up": "カラム内一つ上に移動",
"lightbox.close": "閉じる",
"lightbox.next": "次",
"lightbox.previous": "前",
+ "lightbox.view_context": "トゥートを表示",
"lists.account.add": "リストに追加",
"lists.account.remove": "リストから外す",
"lists.delete": "リストを削除",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "お気に入り",
"navigation_bar.filters": "フィルター設定",
"navigation_bar.follow_requests": "フォローリクエスト",
+ "navigation_bar.follows_and_followers": "フォロー・フォロワー",
"navigation_bar.info": "このサーバーについて",
"navigation_bar.keyboard_shortcuts": "ホットキー",
"navigation_bar.lists": "リスト",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "個人用",
"navigation_bar.pins": "固定したトゥート",
"navigation_bar.preferences": "ユーザー設定",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "連合タイムライン",
"navigation_bar.security": "セキュリティ",
"notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name}さんにフォローされました",
"notification.mention": "{name}さんがあなたに返信しました",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "アンケートが終了しました",
"notification.reblog": "{name}さんがあなたのトゥートをブーストしました",
"notifications.clear": "通知を消去",
"notifications.clear_confirmation": "本当に通知を消去しますか?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "表示",
"notifications.column_settings.follow": "新しいフォロワー:",
"notifications.column_settings.mention": "返信:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "アンケート結果:",
"notifications.column_settings.push": "プッシュ通知",
"notifications.column_settings.reblog": "ブースト:",
"notifications.column_settings.show": "カラムに表示",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "お気に入り",
"notifications.filter.follows": "フォロー",
"notifications.filter.mentions": "返信",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "アンケート結果",
"notifications.group": "{count} 件の通知",
"poll.closed": "終了",
"poll.refresh": "更新",
"poll.total_votes": "{count}票",
- "poll.vote": "Vote",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "投票を削除",
+ "poll.vote": "投票",
+ "poll_button.add_poll": "アンケートを追加",
+ "poll_button.remove_poll": "アンケートを削除",
"privacy.change": "公開範囲を変更",
"privacy.direct.long": "メンションしたユーザーだけに公開",
"privacy.direct.short": "ダイレクト",
@@ -339,7 +345,6 @@
"status.reply": "返信",
"status.replyAll": "全員に返信",
"status.report": "@{name}さんを通報",
- "status.sensitive_toggle": "クリックして表示",
"status.sensitive_warning": "閲覧注意",
"status.share": "共有",
"status.show_less": "隠す",
@@ -366,7 +371,7 @@
"upload_area.title": "ドラッグ&ドロップでアップロード",
"upload_button.label": "メディアを追加 (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "アップロードできる上限を超えています。",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "アンケートではファイルをアップロードできません。",
"upload_form.description": "視覚障害者のための説明",
"upload_form.focus": "プレビューを変更",
"upload_form.undo": "削除",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index fa1d823d0..d33de2352 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "ტუტი",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "მედია მონიშნულია მგრძნობიარედ",
"compose_form.sensitive.unmarked": "მედია არაა მონიშნული მგრძნობიარედ",
"compose_form.spoiler.marked": "გაფრთხილების უკან ტექსტი დამალულია",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "სიმბოლოები",
"emoji_button.travel": "მოგზაურობა და ადგილები",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!",
"empty_column.direct": "ჯერ პირდაპირი წერილები არ გაქვთ. როდესაც მიიღებთ ან გააგზავნით, გამოჩნდება აქ.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "ძიებაზე ფოკუსირებისთვის",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "გაფრთხილების უკან ტექსტის გამოსაჩენად/დასამალვად",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "ახალი ტუტის დასაწყებად",
"keyboard_shortcuts.unfocus": "შედგენის ტექსტ-არეაზე ფოკუსის მოსაშორებლად",
"keyboard_shortcuts.up": "სიაში ზემოთ გადასაადგილებლად",
"lightbox.close": "დახურვა",
"lightbox.next": "შემდეგი",
"lightbox.previous": "წინა",
+ "lightbox.view_context": "View context",
"lists.account.add": "სიაში დამატება",
"lists.account.remove": "სიიდან ამოშლა",
"lists.delete": "სიის წაშლა",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "ფავორიტები",
"navigation_bar.filters": "გაჩუმებული სიტყვები",
"navigation_bar.follow_requests": "დადევნების მოთხოვნები",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "ამ ინსტანციის შესახებ",
"navigation_bar.keyboard_shortcuts": "ცხელი კლავიშები",
"navigation_bar.lists": "სიები",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "პირადი",
"navigation_bar.pins": "აპინული ტუტები",
"navigation_bar.preferences": "პრეფერენსიები",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "ფედერალური თაიმლაინი",
"navigation_bar.security": "უსაფრთხოება",
"notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად",
@@ -339,7 +345,6 @@
"status.reply": "პასუხი",
"status.replyAll": "უპასუხე თემას",
"status.report": "დაარეპორტე @{name}",
- "status.sensitive_toggle": "დააწკაპუნეთ სანახავად",
"status.sensitive_warning": "მგრძნობიარე კონტენტი",
"status.share": "გაზიარება",
"status.show_less": "აჩვენე ნაკლები",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 12cdf25c9..b9bd7cac3 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Бұл жауапты өшір",
"compose_form.publish": "Түрт",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Медиа нәзік деп белгіленген",
"compose_form.sensitive.unmarked": "Медиа нәзік деп белгіленбеген",
"compose_form.spoiler.marked": "Мәтін ескертумен жасырылған",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Таңбалар",
"emoji_button.travel": "Саяхат",
"empty_column.account_timeline": "Жазба жоқ ешқандай!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Ешкімді бұғаттамағансыз.",
"empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!",
"empty_column.direct": "Әзірше дым хат жоқ. Өзіңіз жазып көріңіз алдымен.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "іздеу",
"keyboard_shortcuts.start": "бастапқы бағанға бару",
"keyboard_shortcuts.toggle_hidden": "жабық мәтінді CW ашу/жабу",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "жаңа жазба бастау",
"keyboard_shortcuts.unfocus": "жазба қалдыру алаңынан шығу",
"keyboard_shortcuts.up": "тізімде жоғары шығу",
"lightbox.close": "Жабу",
"lightbox.next": "Келесі",
"lightbox.previous": "Алдыңғы",
+ "lightbox.view_context": "View context",
"lists.account.add": "Тізімге қосу",
"lists.account.remove": "Тізімнен шығару",
"lists.delete": "Тізімді өшіру",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Таңдаулылар",
"navigation_bar.filters": "Үнсіз сөздер",
"navigation_bar.follow_requests": "Жазылуға сұранғандар",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Сервер туралы",
"navigation_bar.keyboard_shortcuts": "Ыстық пернелер",
"navigation_bar.lists": "Тізімдер",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Жеке",
"navigation_bar.pins": "Жабыстырылғандар",
"navigation_bar.preferences": "Басымдықтар",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Жаһандық желі",
"navigation_bar.security": "Қауіпсіздік",
"notification.favourite": "{name} жазбаңызды таңдаулыға қосты",
"notification.follow": "{name} сізге жазылды",
"notification.mention": "{name} сізді атап өтті",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Бұл сауалнаманың мерзімі аяқталыпты",
"notification.reblog": "{name} жазбаңызды бөлісті",
"notifications.clear": "Ескертпелерді тазарт",
"notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Көрсету",
"notifications.column_settings.follow": "Жаңа оқырмандар:",
"notifications.column_settings.mention": "Аталымдар:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Нәтижелері:",
"notifications.column_settings.push": "Push ескертпелер",
"notifications.column_settings.reblog": "Бөлісулер:",
"notifications.column_settings.show": "Бағанда көрсет",
@@ -267,7 +273,7 @@
"notifications.filter.favourites": "Таңдаулылар",
"notifications.filter.follows": "Жазылулар",
"notifications.filter.mentions": "Аталымдар",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Сауалнама нәтижелері",
"notifications.group": "{count} ескертпе",
"poll.closed": "Жабық",
"poll.refresh": "Жаңарту",
@@ -339,7 +345,6 @@
"status.reply": "Жауап",
"status.replyAll": "Тақырыпқа жауап",
"status.report": "Шағым @{name}",
- "status.sensitive_toggle": "Қарау үшін басыңыз",
"status.sensitive_warning": "Нәзік контент",
"status.share": "Бөлісу",
"status.show_less": "Аздап көрсет",
@@ -366,7 +371,7 @@
"upload_area.title": "Жүктеу үшін сүйреп әкеліңіз",
"upload_button.label": "Медиа қосу (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Файл жүктеу лимитінен асып кеттіңіз.",
- "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды",
+ "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.",
"upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз",
"upload_form.focus": "Превьюді өзгерту",
"upload_form.undo": "Өшіру",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 568359651..42c166fb5 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "이 항목 삭제",
"compose_form.publish": "툿",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "미디어가 열람주의로 설정되어 있습니다",
"compose_form.sensitive.unmarked": "미디어가 열람주의로 설정 되어 있지 않습니다",
"compose_form.spoiler.marked": "열람주의가 설정되어 있습니다",
"compose_form.spoiler.unmarked": "열람주의가 설정 되어 있지 않습니다",
"compose_form.spoiler_placeholder": "경고",
"confirmation_modal.cancel": "취소",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "차단하고 신고하기",
"confirmations.block.confirm": "차단",
"confirmations.block.message": "정말로 {name}를 차단하시겠습니까?",
"confirmations.delete.confirm": "삭제",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "기호",
"emoji_button.travel": "여행과 장소",
"empty_column.account_timeline": "여긴 툿이 없어요!",
+ "empty_column.account_unavailable": "프로필 사용 불가",
"empty_column.blocks": "아직 아무도 차단하지 않았습니다.",
"empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",
"empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "검색창에 포커스",
"keyboard_shortcuts.start": "\"시작하기\" 컬럼 열기",
"keyboard_shortcuts.toggle_hidden": "CW로 가려진 텍스트를 표시/비표시",
+ "keyboard_shortcuts.toggle_sensitivity": "이미지 보이기/숨기기",
"keyboard_shortcuts.toot": "새 툿 작성",
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
"keyboard_shortcuts.up": "리스트에서 위로 이동",
"lightbox.close": "닫기",
"lightbox.next": "다음",
"lightbox.previous": "이전",
+ "lightbox.view_context": "View context",
"lists.account.add": "리스트에 추가",
"lists.account.remove": "리스트에서 제거",
"lists.delete": "리스트 삭제",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "즐겨찾기",
"navigation_bar.filters": "뮤트",
"navigation_bar.follow_requests": "팔로우 요청",
+ "navigation_bar.follows_and_followers": "팔로우와 팔로워",
"navigation_bar.info": "이 서버에 대해서",
"navigation_bar.keyboard_shortcuts": "단축키",
"navigation_bar.lists": "리스트",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "개인용",
"navigation_bar.pins": "고정된 툿",
"navigation_bar.preferences": "사용자 설정",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "연합 타임라인",
"navigation_bar.security": "보안",
"notification.favourite": "{name}님이 즐겨찾기 했습니다",
@@ -339,14 +345,13 @@
"status.reply": "답장",
"status.replyAll": "전원에게 답장",
"status.report": "신고",
- "status.sensitive_toggle": "클릭해서 표시하기",
"status.sensitive_warning": "민감한 미디어",
"status.share": "공유",
"status.show_less": "숨기기",
"status.show_less_all": "모두 접기",
"status.show_more": "더 보기",
"status.show_more_all": "모두 펼치기",
- "status.show_thread": "스레드 보기",
+ "status.show_thread": "글타래 보기",
"status.unmute_conversation": "이 대화의 뮤트 해제하기",
"status.unpin": "고정 해제",
"suggestions.dismiss": "추천 지우기",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 0fa0c4fde..8c864f910 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Publicēt",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Mēdijs ir atzīmēts kā sensitīvs",
"compose_form.sensitive.unmarked": "Mēdijs nav atzīmēts kā sensitīvs",
"compose_form.spoiler.marked": "Teksts ir paslēpts aiz brīdinājuma",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Ceļošana & Vietas",
"empty_column.account_timeline": "Šeit ziņojumu nav!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Tu neesi vēl nevienu bloķējis.",
"empty_column.community": "Lokālā laika līnija ir tukša. :/ Ieraksti kaut ko lai sākas rosība!",
"empty_column.direct": "Tev nav privāto ziņu. Tiklīdz saņemsi tās šeit parādīsies.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this instance",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_less": "Show less",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index eedd4c6f3..19312633a 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this instance",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_less": "Show less",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index e5e4748d7..60d24273d 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -11,7 +11,7 @@
"account.follow": "Volgen",
"account.followers": "Volgers",
"account.followers.empty": "Niemand volgt nog deze gebruiker.",
- "account.follows": "Volgt",
+ "account.follows": "Volgend",
"account.follows.empty": "Deze gebruiker volgt nog niemand.",
"account.follows_you": "Volgt jou",
"account.hide_reblogs": "Verberg boosts van @{name}",
@@ -71,19 +71,20 @@
"compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.",
"compose_form.lock_disclaimer.lock": "besloten",
"compose_form.placeholder": "Wat wil je kwijt?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Keuze toevoegen",
+ "compose_form.poll.duration": "Duur van de poll",
+ "compose_form.poll.option_placeholder": "Keuze {number}",
+ "compose_form.poll.remove_option": "Deze keuze verwijderen",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Media als gevoelig markeren",
"compose_form.sensitive.marked": "Media is als gevoelig gemarkeerd",
"compose_form.sensitive.unmarked": "Media is niet als gevoelig gemarkeerd",
"compose_form.spoiler.marked": "Tekst is achter een waarschuwing verborgen",
"compose_form.spoiler.unmarked": "Tekst is niet verborgen",
"compose_form.spoiler_placeholder": "Waarschuwingstekst",
"confirmation_modal.cancel": "Annuleren",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Blokkeren en rapporteren",
"confirmations.block.confirm": "Blokkeren",
"confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?",
"confirmations.delete.confirm": "Verwijderen",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
"empty_column.account_timeline": "Hier zijn geen toots!",
+ "empty_column.account_unavailable": "Profiel is niet beschikbaar",
"empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
"empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.",
@@ -154,9 +156,9 @@
"home.column_settings.basic": "Algemeen",
"home.column_settings.show_reblogs": "Boosts tonen",
"home.column_settings.show_replies": "Reacties tonen",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}",
+ "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}",
+ "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}",
"introduction.federation.action": "Volgende",
"introduction.federation.federated.headline": "Globaal",
"introduction.federation.federated.text": "Openbare toots van mensen op andere servers in de fediverse verschijnen op de globale tijdlijn.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "om het zoekvak te focussen",
"keyboard_shortcuts.start": "om de \"Aan de slag\"-kolom te tonen",
"keyboard_shortcuts.toggle_hidden": "om tekst achter een waarschuwing (CW) te tonen/verbergen",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "om een nieuwe toot te starten",
"keyboard_shortcuts.unfocus": "om het tekst- en zoekvak te ontfocussen",
"keyboard_shortcuts.up": "om omhoog te bewegen in de lijst",
"lightbox.close": "Sluiten",
"lightbox.next": "Volgende",
"lightbox.previous": "Vorige",
+ "lightbox.view_context": "View context",
"lists.account.add": "Aan lijst toevoegen",
"lists.account.remove": "Uit lijst verwijderen",
"lists.delete": "Lijst verwijderen",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorieten",
"navigation_bar.filters": "Filters",
"navigation_bar.follow_requests": "Volgverzoeken",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Over deze server",
"navigation_bar.keyboard_shortcuts": "Sneltoetsen",
"navigation_bar.lists": "Lijsten",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Persoonlijk",
"navigation_bar.pins": "Vastgezette toots",
"navigation_bar.preferences": "Instellingen",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Globale tijdlijn",
"navigation_bar.security": "Beveiliging",
"notification.favourite": "{name} voegde jouw toot als favoriet toe",
"notification.follow": "{name} volgt jou nu",
"notification.mention": "{name} vermeldde jou",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd",
"notification.reblog": "{name} boostte jouw toot",
"notifications.clear": "Meldingen verwijderen",
"notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Tonen",
"notifications.column_settings.follow": "Nieuwe volgers:",
"notifications.column_settings.mention": "Vermeldingen:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Pollresultaten:",
"notifications.column_settings.push": "Pushmeldingen",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "In kolom tonen",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "Favorieten",
"notifications.filter.follows": "Die jij volgt",
"notifications.filter.mentions": "Vermeldingen",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Pollresultaten",
"notifications.group": "{count} meldingen",
"poll.closed": "Gesloten",
"poll.refresh": "Vernieuwen",
"poll.total_votes": "{count, plural, one {# stem} other {# stemmen}}",
"poll.vote": "Stemmen",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Poll toevoegen",
+ "poll_button.remove_poll": "Poll verwijderen",
"privacy.change": "Zichtbaarheid toot aanpassen",
"privacy.direct.long": "Alleen aan vermelde gebruikers tonen",
"privacy.direct.short": "Direct",
@@ -339,7 +345,6 @@
"status.reply": "Reageren",
"status.replyAll": "Reageer op iedereen",
"status.report": "Rapporteer @{name}",
- "status.sensitive_toggle": "Klik om te bekijken",
"status.sensitive_warning": "Gevoelige inhoud",
"status.share": "Delen",
"status.show_less": "Minder tonen",
@@ -366,7 +371,7 @@
"upload_area.title": "Hierin slepen om te uploaden",
"upload_button.label": "Media toevoegen (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Uploadlimiet van bestand overschreden.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.",
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
"upload_form.focus": "Voorvertoning aanpassen",
"upload_form.undo": "Verwijderen",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 9556c5ad8..ee7b504f9 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "å fokusere søk",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "å starte en helt ny tut",
"keyboard_shortcuts.unfocus": "å ufokusere komponerings-/søkefeltet",
"keyboard_shortcuts.up": "å flytte opp i listen",
"lightbox.close": "Lukk",
"lightbox.next": "Neste",
"lightbox.previous": "Forrige",
+ "lightbox.view_context": "View context",
"lists.account.add": "Legg til i listen",
"lists.account.remove": "Fjern fra listen",
"lists.delete": "Slett listen",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritter",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Følgeforespørsler",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Utvidet informasjon",
"navigation_bar.keyboard_shortcuts": "Tastatursnarveier",
"navigation_bar.lists": "Lister",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Festa tuter",
"navigation_bar.preferences": "Preferanser",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Felles tidslinje",
"navigation_bar.security": "Security",
"notification.favourite": "{name} likte din status",
@@ -339,7 +345,6 @@
"status.reply": "Svar",
"status.replyAll": "Svar til samtale",
"status.report": "Rapporter @{name}",
- "status.sensitive_toggle": "Klikk for å vise",
"status.sensitive_warning": "Følsomt innhold",
"status.share": "Del",
"status.show_less": "Vis mindre",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 8fc8762a4..3178f200d 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "Levar aquesta opcion",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish} !",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible",
"compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible",
"compose_form.spoiler.marked": "Lo tèxte es rescondut jos l’avertiment",
"compose_form.spoiler.unmarked": "Lo tèxte es pas rescondut",
"compose_form.spoiler_placeholder": "Escrivètz l’avertiment aquí",
"confirmation_modal.cancel": "Anullar",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Blocar e senhalar",
"confirmations.block.confirm": "Blocar",
"confirmations.block.message": "Volètz vertadièrament blocar {name} ?",
"confirmations.delete.confirm": "Escafar",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
"empty_column.account_timeline": "Cap de tuts aquí !",
+ "empty_column.account_unavailable": "Perfil pas disponible",
"empty_column.blocks": "Avètz pas blocat degun pel moment.",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
"empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "anar a la recèrca",
"keyboard_shortcuts.start": "dobrir la colomna « Per començar »",
"keyboard_shortcuts.toggle_hidden": "mostrar/amagar lo tèxte dels avertiments",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "començar un estatut tot novèl",
"keyboard_shortcuts.unfocus": "quitar lo camp tèxte/de recèrca",
"keyboard_shortcuts.up": "far montar dins la lista",
"lightbox.close": "Tampar",
"lightbox.next": "Seguent",
"lightbox.previous": "Precedent",
+ "lightbox.view_context": "View context",
"lists.account.add": "Ajustar a la lista",
"lists.account.remove": "Levar de la lista",
"lists.delete": "Suprimir la lista",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorits",
"navigation_bar.filters": "Mots ignorats",
"navigation_bar.follow_requests": "Demandas d’abonament",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Tocant aqueste servidor",
"navigation_bar.keyboard_shortcuts": "Acorchis clavièr",
"navigation_bar.lists": "Listas",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Tuts penjats",
"navigation_bar.preferences": "Preferéncias",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Flux public global",
"navigation_bar.security": "Seguretat",
"notification.favourite": "{name} a ajustat a sos favorits",
@@ -339,7 +345,6 @@
"status.reply": "Respondre",
"status.replyAll": "Respondre a la conversacion",
"status.report": "Senhalar @{name}",
- "status.sensitive_toggle": "Clicar per mostrar",
"status.sensitive_warning": "Contengut sensible",
"status.share": "Partejar",
"status.show_less": "Tornar plegar",
@@ -358,7 +363,7 @@
"tabs_bar.search": "Recèrcas",
"time_remaining.days": "demòra{number, plural, one { # jorn} other {n # jorns}}",
"time_remaining.hours": "demòra{number, plural, one { # ora} other {n # oras}}",
- "time_remaining.minutes": "demòr{number, plural, one { # minuta} other {nn # minutas}}",
+ "time_remaining.minutes": "demòra{number, plural, one { # minuta} other {n # minutas}}",
"time_remaining.moments": "Moments restants",
"time_remaining.seconds": "demòra{number, plural, one { # segonda} other {n # segondas}}",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 63d4f60e0..251057fec 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Usuń tę opcję",
"compose_form.publish": "Wyślij",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Zawartość multimedia jest oznaczona jako wrażliwa",
"compose_form.sensitive.unmarked": "Zawartość multimedialna nie jest oznaczona jako wrażliwa",
"compose_form.spoiler.marked": "Tekst jest ukryty za ostrzeżeniem",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca",
"empty_column.account_timeline": "Brak wpisów tutaj!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
"empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
"keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”",
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "aby utworzyć nowy wpis",
"keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
"keyboard_shortcuts.up": "aby przejść na górę listy",
"lightbox.close": "Zamknij",
"lightbox.next": "Następne",
"lightbox.previous": "Poprzednie",
+ "lightbox.view_context": "View context",
"lists.account.add": "Dodaj do listy",
"lists.account.remove": "Usunąć z listy",
"lists.delete": "Usuń listę",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Ulubione",
"navigation_bar.filters": "Wyciszone słowa",
"navigation_bar.follow_requests": "Prośby o śledzenie",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Szczegółowe informacje",
"navigation_bar.keyboard_shortcuts": "Skróty klawiszowe",
"navigation_bar.lists": "Listy",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Osobiste",
"navigation_bar.pins": "Przypięte wpisy",
"navigation_bar.preferences": "Preferencje",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Globalna oś czasu",
"navigation_bar.security": "Bezpieczeństwo",
"notification.favourite": "{name} dodał(a) Twój wpis do ulubionych",
"notification.follow": "{name} zaczął(-ęła) Cię śledzić",
"notification.mention": "{name} wspomniał(a) o tobie",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyła się",
"notification.reblog": "{name} podbił(a) Twój wpis",
"notifications.clear": "Wyczyść powiadomienia",
"notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Pokaż",
"notifications.column_settings.follow": "Nowi śledzący:",
"notifications.column_settings.mention": "Wspomnienia:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Wyniki głosowania:",
"notifications.column_settings.push": "Powiadomienia push",
"notifications.column_settings.reblog": "Podbicia:",
"notifications.column_settings.show": "Pokaż w kolumnie",
@@ -339,7 +345,6 @@
"status.reply": "Odpowiedz",
"status.replyAll": "Odpowiedz na wątek",
"status.report": "Zgłoś @{name}",
- "status.sensitive_toggle": "Naciśnij aby wyświetlić",
"status.sensitive_warning": "Wrażliwa zawartość",
"status.share": "Udostępnij",
"status.show_less": "Zwiń",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 7533a462b..dca087af9 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -71,19 +71,20 @@
"compose_form.lock_disclaimer": "A sua conta não está {locked}. Qualquer pessoa pode te seguir e visualizar postagens direcionadas a apenas seguidores.",
"compose_form.lock_disclaimer.lock": "trancada",
"compose_form.placeholder": "No que você está pensando?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Adicionar uma opção",
+ "compose_form.poll.duration": "Duração da enquete",
+ "compose_form.poll.option_placeholder": "Opção {number}",
+ "compose_form.poll.remove_option": "Remover essa opção",
"compose_form.publish": "Publicar",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Mídia está marcada como sensível",
"compose_form.sensitive.unmarked": "Mídia não está marcada como sensível",
"compose_form.spoiler.marked": "O texto está escondido por um aviso de conteúdo",
"compose_form.spoiler.unmarked": "O texto não está escondido",
"compose_form.spoiler_placeholder": "Aviso de conteúdo",
"confirmation_modal.cancel": "Cancelar",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
"confirmations.block.message": "Você tem certeza de que quer bloquear {name}?",
"confirmations.delete.confirm": "Excluir",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
"empty_column.account_timeline": "Não há toots aqui!",
+ "empty_column.account_unavailable": "Perfil indisponível",
"empty_column.blocks": "Você ainda não bloqueou nenhum usuário.",
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
"empty_column.direct": "Você não tem nenhuma mensagem direta ainda. Quando você enviar ou receber uma, as mensagens aparecerão por aqui.",
@@ -145,17 +147,17 @@
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sem {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.select.no_options_message": "Nenhuma sugestão encontrada",
+ "hashtag.column_settings.select.placeholder": "Adicione as hashtags…",
"hashtag.column_settings.tag_mode.all": "Todas essas",
"hashtag.column_settings.tag_mode.any": "Qualquer uma dessas",
"hashtag.column_settings.tag_mode.none": "Nenhuma dessas",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.column_settings.tag_toggle": "Incluir outras hashtags nessa coluna",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar compartilhamentos",
"home.column_settings.show_replies": "Mostrar as respostas",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+ "intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
+ "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"introduction.federation.action": "Próximo",
"introduction.federation.federated.headline": "Federated",
@@ -202,17 +204,19 @@
"keyboard_shortcuts.search": "para focar a pesquisa",
"keyboard_shortcuts.start": "para abrir a coluna \"primeiros passos\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/esconder o texto com aviso de conteúdo",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "para compor um novo toot",
"keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa",
"keyboard_shortcuts.up": "para mover para cima na lista",
"lightbox.close": "Fechar",
"lightbox.next": "Próximo",
"lightbox.previous": "Anterior",
+ "lightbox.view_context": "View context",
"lists.account.add": "Adicionar a listas",
"lists.account.remove": "Remover da lista",
"lists.delete": "Delete list",
"lists.edit": "Editar lista",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Mudar o título",
"lists.new.create": "Adicionar lista",
"lists.new.title_placeholder": "Novo título da lista",
"lists.search": "Procurar entre as pessoas que você segue",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palavras silenciadas",
"navigation_bar.follow_requests": "Seguidores pendentes",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Mais informações",
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
"navigation_bar.lists": "Listas",
@@ -241,12 +246,13 @@
"navigation_bar.personal": "Pessoal",
"navigation_bar.pins": "Postagens fixadas",
"navigation_bar.preferences": "Preferências",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Segurança",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu",
"notification.mention": "{name} te mencionou",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Uma enquete em que você votou chegou ao fim",
"notification.reblog": "{name} compartilhou a sua postagem",
"notifications.clear": "Limpar notificações",
"notifications.clear_confirmation": "Você tem certeza de que quer limpar todas as suas notificações permanentemente?",
@@ -257,7 +263,7 @@
"notifications.column_settings.filter_bar.show": "Mostrar",
"notifications.column_settings.follow": "Novos seguidores:",
"notifications.column_settings.mention": "Menções:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Resultados da enquete:",
"notifications.column_settings.push": "Enviar notificações",
"notifications.column_settings.reblog": "Compartilhamento:",
"notifications.column_settings.show": "Mostrar nas colunas",
@@ -267,14 +273,14 @@
"notifications.filter.favourites": "Favoritos",
"notifications.filter.follows": "Seguidores",
"notifications.filter.mentions": "Menções",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.polls": "Resultados da enquete",
"notifications.group": "{count} notificações",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.closed": "Fechada",
+ "poll.refresh": "Atualizar",
+ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
"poll.vote": "Votar",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll_button.add_poll": "Adicionar uma enquete",
+ "poll_button.remove_poll": "Remover enquete",
"privacy.change": "Ajustar a privacidade da mensagem",
"privacy.direct.long": "Apenas para usuários mencionados",
"privacy.direct.short": "Direta",
@@ -314,7 +320,7 @@
"status.block": "Block @{name}",
"status.cancel_reblog_private": "Desfazer compartilhamento",
"status.cannot_reblog": "Esta postagem não pode ser compartilhada",
- "status.copy": "Copy link to status",
+ "status.copy": "Copiar o link para o status",
"status.delete": "Excluir",
"status.detailed_status": "Visão detalhada da conversa",
"status.direct": "Enviar mensagem direta a @{name}",
@@ -339,7 +345,6 @@
"status.reply": "Responder",
"status.replyAll": "Responder à sequência",
"status.report": "Denunciar @{name}",
- "status.sensitive_toggle": "Clique para ver",
"status.sensitive_warning": "Conteúdo sensível",
"status.share": "Compartilhar",
"status.show_less": "Mostrar menos",
@@ -356,17 +361,17 @@
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificações",
"tabs_bar.search": "Buscar",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "time_remaining.days": "{number, plural, one {# dia restante} other {# dias restantes}}",
+ "time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}",
+ "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}",
+ "time_remaining.moments": "Momentos restantes",
+ "time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
"upload_area.title": "Arraste e solte para enviar",
"upload_button.label": "Adicionar mídia (JPEG, PNG, GIF, WebM, MP4, MOV)",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Limite de envio de arquivos excedido.",
+ "upload_error.poll": "Envio de arquivos não é permitido com enquetes.",
"upload_form.description": "Descreva a imagem para deficientes visuais",
"upload_form.focus": "Ajustar foco",
"upload_form.undo": "Remover",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index 001a48b04..157090c55 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Publicar",
"compose_form.publish_loud": "{publicar}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media marcado como sensível",
"compose_form.sensitive.unmarked": "Media não está marcado como sensível",
"compose_form.spoiler.marked": "Texto escondido atrás de aviso",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
"empty_column.account_timeline": "Sem publicações!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.",
"empty_column.community": "Ainda não existe conteúdo local para mostrar!",
"empty_column.direct": "Ainda não tens qualquer mensagem directa. Quando enviares ou receberes alguma, ela irá aparecer aqui.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "para focar na pesquisa",
"keyboard_shortcuts.start": "para abrir a coluna dos \"primeiros passos\"",
"keyboard_shortcuts.toggle_hidden": "para mostrar/esconder texto atrás de CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "para compor um novo post",
"keyboard_shortcuts.unfocus": "para remover o foco da área de publicação/pesquisa",
"keyboard_shortcuts.up": "para mover para cima na lista",
"lightbox.close": "Fechar",
"lightbox.next": "Próximo",
"lightbox.previous": "Anterior",
+ "lightbox.view_context": "View context",
"lists.account.add": "Adicionar à lista",
"lists.account.remove": "Remover da lista",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palavras silenciadas",
"navigation_bar.follow_requests": "Seguidores pendentes",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Sobre este servidor",
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
"navigation_bar.lists": "Listas",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Posts fixos",
"navigation_bar.preferences": "Preferências",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Segurança",
"notification.favourite": "{name} adicionou o teu post aos favoritos",
@@ -339,7 +345,6 @@
"status.reply": "Responder",
"status.replyAll": "Responder à conversa",
"status.report": "Denunciar @{name}",
- "status.sensitive_toggle": "Clique para ver",
"status.sensitive_warning": "Conteúdo sensível",
"status.share": "Compartilhar",
"status.show_less": "Mostrar menos",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 7192e10b9..dcb7a088d 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Postează",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Conținutul media este marcat ca sensibil",
"compose_form.sensitive.unmarked": "Conținutul media nu este marcat ca sensibil",
"compose_form.spoiler.marked": "Textul este ascuns sub o avertizare",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboluri",
"emoji_button.travel": "Călătorii si Locuri",
"empty_column.account_timeline": "Nici o postare aici!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Nu ai blocat nici un utilizator incă.",
"empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a împinge bila la vale!",
"empty_column.direct": "Nu ai nici un mesaj direct incă. Când trimiți sau primești unul, va fi afișat aici.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "să focuseze căutarea",
"keyboard_shortcuts.start": "să deschidă coloana \"Începere\"",
"keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul in spatele CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "să înceapă o postare nouă",
"keyboard_shortcuts.unfocus": "să dezactiveze zona de compunere/căutare",
"keyboard_shortcuts.up": "să mute mai sus în listă",
"lightbox.close": "Închide",
"lightbox.next": "Următorul",
"lightbox.previous": "Precedentul",
+ "lightbox.view_context": "View context",
"lists.account.add": "Adaugă în listă",
"lists.account.remove": "Elimină din listă",
"lists.delete": "Șterge lista",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favorite",
"navigation_bar.filters": "Cuvinte oprite",
"navigation_bar.follow_requests": "Cereri de urmărire",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Despre această instanță",
"navigation_bar.keyboard_shortcuts": "Prescurtări",
"navigation_bar.lists": "Liste",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Postări fixate",
"navigation_bar.preferences": "Preferințe",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Flux global",
"navigation_bar.security": "Securitate",
"notification.favourite": "{name} a adăugat statusul tău la favorite",
@@ -339,7 +345,6 @@
"status.reply": "Răspunde",
"status.replyAll": "Răspunde la topic",
"status.report": "Raportează @{name}",
- "status.sensitive_toggle": "Afișează",
"status.sensitive_warning": "Conținut sensibil",
"status.share": "Distribuie",
"status.show_less": "Arată mai puțin",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 09425c32e..2b98ba96b 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -1,5 +1,5 @@
{
- "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.add_or_remove_from_list": "Добавить или удалить из списков",
"account.badges.bot": "Бот",
"account.block": "Блокировать",
"account.block_domain": "Блокировать все с {domain}",
@@ -15,8 +15,8 @@
"account.follows.empty": "Этот пользователь ни на кого не подписан.",
"account.follows_you": "Подписан(а) на Вас",
"account.hide_reblogs": "Скрыть продвижения от @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
- "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+ "account.link_verified_on": "Владение этой ссылкой было проверено {date}",
+ "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.",
"account.media": "Медиа",
"account.mention": "Упомянуть",
"account.moved_to": "Ищите {name} здесь:",
@@ -71,19 +71,20 @@
"compose_form.lock_disclaimer": "Ваш аккаунт не {locked}. Любой человек может подписаться на Вас и просматривать посты для подписчиков.",
"compose_form.lock_disclaimer.lock": "закрыт",
"compose_form.placeholder": "О чем Вы думаете?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.add_option": "Добавить",
+ "compose_form.poll.duration": "Длительность опроса",
+ "compose_form.poll.option_placeholder": "Вариант {number}",
+ "compose_form.poll.remove_option": "Удалить этот вариант",
"compose_form.publish": "Трубить",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Медиафайлы не отмечены как чувствительные",
"compose_form.sensitive.unmarked": "Медиафайлы не отмечены как чувствительные",
"compose_form.spoiler.marked": "Текст скрыт за предупреждением",
"compose_form.spoiler.unmarked": "Текст не скрыт",
"compose_form.spoiler_placeholder": "Текст предупреждения",
"confirmation_modal.cancel": "Отмена",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Заблокировать и пожаловаться",
"confirmations.block.confirm": "Заблокировать",
"confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?",
"confirmations.delete.confirm": "Удалить",
@@ -96,8 +97,8 @@
"confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
"confirmations.redraft.confirm": "Удалить и исправить",
"confirmations.redraft.message": "Вы уверены, что хотите удалить этот статус и превратить в черновик? Вы потеряете все ответы, продвижения и отметки 'нравится' к нему.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Ответить",
+ "confirmations.reply.message": "При ответе текст набираемого сообщения будет перезаписан. Продолжить?",
"confirmations.unfollow.confirm": "Отписаться",
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
"embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
@@ -116,7 +117,8 @@
"emoji_button.search_results": "Результаты поиска",
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
- "empty_column.account_timeline": "No toots here!",
+ "empty_column.account_timeline": "Статусов нет!",
+ "empty_column.account_unavailable": "Профиль недоступен",
"empty_column.blocks": "Вы ещё никого не заблокировали.",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
"empty_column.direct": "У Вас пока нет личных сообщений. Когда Вы начнёте их отправлять или получать, они появятся здесь.",
@@ -135,45 +137,45 @@
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
"getting_started.developers": "Для разработчиков",
- "getting_started.directory": "Profile directory",
+ "getting_started.directory": "Каталог профилей",
"getting_started.documentation": "Документация",
"getting_started.heading": "Добро пожаловать",
"getting_started.invite": "Пригласить людей",
"getting_started.open_source_notice": "Mastodon - сервис с открытым исходным кодом. Вы можете помочь проекту или сообщить о проблемах на GitHub по адресу {github}.",
"getting_started.security": "Безопасность",
"getting_started.terms": "Условия использования",
- "hashtag.column_header.tag_mode.all": "and {additional}",
- "hashtag.column_header.tag_mode.any": "or {additional}",
- "hashtag.column_header.tag_mode.none": "without {additional}",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
- "hashtag.column_settings.tag_mode.all": "All of these",
- "hashtag.column_settings.tag_mode.any": "Any of these",
- "hashtag.column_settings.tag_mode.none": "None of these",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.column_header.tag_mode.all": "и {additional}",
+ "hashtag.column_header.tag_mode.any": "или {additional}",
+ "hashtag.column_header.tag_mode.none": "без {additional}",
+ "hashtag.column_settings.select.no_options_message": "Предложений не найдено",
+ "hashtag.column_settings.select.placeholder": "Введите хэштеги…",
+ "hashtag.column_settings.tag_mode.all": "Все из списка",
+ "hashtag.column_settings.tag_mode.any": "Любой из списка",
+ "hashtag.column_settings.tag_mode.none": "Ни один из списка",
+ "hashtag.column_settings.tag_toggle": "Включая дополнительные хэштеге из этой колонки",
"home.column_settings.basic": "Основные",
"home.column_settings.show_reblogs": "Показывать продвижения",
"home.column_settings.show_replies": "Показывать ответы",
- "intervals.full.days": "{number, plural, one {# day} other {# days}}",
- "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
- "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
- "introduction.federation.action": "Next",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
- "introduction.federation.home.headline": "Home",
- "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
- "introduction.federation.local.headline": "Local",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
- "introduction.interactions.action": "Finish tutorial!",
- "introduction.interactions.favourite.headline": "Favourite",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
- "introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
- "introduction.interactions.reply.headline": "Reply",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
- "introduction.welcome.action": "Let's go!",
- "introduction.welcome.headline": "First steps",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+ "intervals.full.days": "{number, plural, one {# день} few {# дня} many {# дней} other {# дней}}",
+ "intervals.full.hours": "{number, plural, one {# час} few {# часа} many {# часов} other {# часов}}",
+ "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} many {# минут} other {# минут}}",
+ "introduction.federation.action": "Далее",
+ "introduction.federation.federated.headline": "Глобальная лента",
+ "introduction.federation.federated.text": "Публичные статусы с других серверов федеративной сети расположатся в глобальной ленте.",
+ "introduction.federation.home.headline": "Домашняя лента",
+ "introduction.federation.home.text": "Статусы от тех, на кого вы подписаны, появятся в вашей домашней ленте. Вы можете подписаться на кого угодно с любого сервера!",
+ "introduction.federation.local.headline": "Локальная лента",
+ "introduction.federation.local.text": "Публичные статусы от людей с того же сервера, что и вы, будут отображены в локальной ленте.",
+ "introduction.interactions.action": "Завершить обучение",
+ "introduction.interactions.favourite.headline": "Отметки \"нравится\"",
+ "introduction.interactions.favourite.text": "Вы можете отметить статус, чтобы вернуться к нему позже и дать знать автору, что запись вам понравилась, поставив отметку \"нравится\".",
+ "introduction.interactions.reblog.headline": "Продвижения",
+ "introduction.interactions.reblog.text": "Вы можете делиться статусами других людей, продвигая их в своём аккаунте.",
+ "introduction.interactions.reply.headline": "Ответы",
+ "introduction.interactions.reply.text": "Вы можете отвечать свои и чужие посты, образуя цепочки сообщений (обсуждения).",
+ "introduction.welcome.action": "Поехали!",
+ "introduction.welcome.headline": "Первые шаги",
+ "introduction.welcome.text": "Добро пожаловать в федеративную сеть! Уже через мгновение вы сможете отправлять сообщения и общаться со своими друзьями на любом сервере. Но этот сервер — {domain} — особенный: на нём располагается ваш профиль. Запомните его название.",
"keyboard_shortcuts.back": "перейти назад",
"keyboard_shortcuts.blocked": "чтобы открыть список заблокированных",
"keyboard_shortcuts.boost": "продвинуть пост",
@@ -202,17 +204,19 @@
"keyboard_shortcuts.search": "перейти к поиску",
"keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"",
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "начать писать новый пост",
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
"keyboard_shortcuts.up": "вверх по списку",
"lightbox.close": "Закрыть",
"lightbox.next": "Далее",
"lightbox.previous": "Назад",
+ "lightbox.view_context": "View context",
"lists.account.add": "Добавить в список",
"lists.account.remove": "Убрать из списка",
"lists.delete": "Удалить список",
"lists.edit": "Изменить список",
- "lists.edit.submit": "Change title",
+ "lists.edit.submit": "Изменить название",
"lists.new.create": "Новый список",
"lists.new.title_placeholder": "Заголовок списка",
"lists.search": "Искать из ваших подписок",
@@ -222,7 +226,7 @@
"missing_indicator.label": "Не найдено",
"missing_indicator.sublabel": "Запрашиваемый ресурс не найден",
"mute_modal.hide_notifications": "Убрать уведомления от этого пользователя?",
- "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.apps": "Мобильные приложения",
"navigation_bar.blocks": "Список блокировки",
"navigation_bar.community_timeline": "Локальная лента",
"navigation_bar.compose": "Создать новый статус",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Понравившееся",
"navigation_bar.filters": "Заглушенные слова",
"navigation_bar.follow_requests": "Запросы на подписку",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Об узле",
"navigation_bar.keyboard_shortcuts": "Сочетания клавиш",
"navigation_bar.lists": "Списки",
@@ -241,40 +246,41 @@
"navigation_bar.personal": "Личное",
"navigation_bar.pins": "Закреплённые посты",
"navigation_bar.preferences": "Опции",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Глобальная лента",
"navigation_bar.security": "Безопасность",
"notification.favourite": "{name} понравился Ваш статус",
"notification.follow": "{name} подписался(-лась) на Вас",
"notification.mention": "{name} упомянул(а) Вас",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Опрос, в котором вы приняли участие, завершился",
"notification.reblog": "{name} продвинул(а) Ваш статус",
"notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
"notifications.column_settings.alert": "Десктопные уведомления",
"notifications.column_settings.favourite": "Нравится:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.filter_bar.advanced": "Отображать все категории",
+ "notifications.column_settings.filter_bar.category": "Фильтры по категориям",
+ "notifications.column_settings.filter_bar.show": "Показывать",
"notifications.column_settings.follow": "Новые подписчики:",
"notifications.column_settings.mention": "Упоминания:",
- "notifications.column_settings.poll": "Poll results:",
+ "notifications.column_settings.poll": "Результаты опроса:",
"notifications.column_settings.push": "Push-уведомления",
"notifications.column_settings.reblog": "Продвижения:",
"notifications.column_settings.show": "Показывать в колонке",
"notifications.column_settings.sound": "Проигрывать звук",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
+ "notifications.filter.all": "Все",
+ "notifications.filter.boosts": "Продвижения",
+ "notifications.filter.favourites": "Отметки \"нравится\"",
+ "notifications.filter.follows": "Новые подписчики",
+ "notifications.filter.mentions": "Упоминания",
+ "notifications.filter.polls": "Результаты опросов",
"notifications.group": "{count} уведомл.",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
- "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.closed": "Завершён",
+ "poll.refresh": "Обновить",
+ "poll.total_votes": "{count, plural, one {# голос} few {# голоса} many {# голосов} other {# голосов}}",
+ "poll.vote": "Голосовать",
+ "poll_button.add_poll": "Добавить опрос",
+ "poll_button.remove_poll": "Удалить опрос",
"privacy.change": "Изменить видимость статуса",
"privacy.direct.long": "Показать только упомянутым",
"privacy.direct.short": "Направленный",
@@ -292,12 +298,12 @@
"relative_time.minutes": "{number}м",
"relative_time.seconds": "{number}с",
"reply_indicator.cancel": "Отмена",
- "report.forward": "Переслать для {target}",
+ "report.forward": "Переслать в {target}",
"report.forward_hint": "Этот аккаунт расположен на другом сервере. Отправить туда анонимную копию Вашей жалобы?",
"report.hint": "Жалоба будет отправлена модераторам Вашего сервера. Вы также можете указать подробную причину жалобы ниже:",
"report.placeholder": "Комментарий",
"report.submit": "Отправить",
- "report.target": "Жалуемся на {target}",
+ "report.target": "Жалоба на {target}",
"search.placeholder": "Поиск",
"search_popout.search_format": "Продвинутый формат поиска",
"search_popout.tips.full_text": "Возвращает посты, которые Вы написали, отметили как 'избранное', продвинули или в которых были упомянуты, а также содержащие юзернейм, имя и хэштеги.",
@@ -309,12 +315,12 @@
"search_results.hashtags": "Хэштеги",
"search_results.statuses": "Посты",
"search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}",
- "status.admin_account": "Open moderation interface for @{name}",
- "status.admin_status": "Open this status in the moderation interface",
+ "status.admin_account": "Открыть интерфейс модератора для @{name}",
+ "status.admin_status": "Открыть этот статус в интерфейсе модератора",
"status.block": "Заблокировать @{name}",
"status.cancel_reblog_private": "Не продвигать",
"status.cannot_reblog": "Этот статус не может быть продвинут",
- "status.copy": "Copy link to status",
+ "status.copy": "Копировать ссылку на запись",
"status.delete": "Удалить",
"status.detailed_status": "Подробный просмотр обсуждения",
"status.direct": "Написать @{name}",
@@ -326,11 +332,11 @@
"status.mention": "Упомянуть @{name}",
"status.more": "Больше",
"status.mute": "Заглушить @{name}",
- "status.mute_conversation": "Заглушить всю цепочку",
+ "status.mute_conversation": "Заглушить всё обсуждение",
"status.open": "Развернуть статус",
"status.pin": "Закрепить в профиле",
"status.pinned": "Закреплённый статус",
- "status.read_more": "Read more",
+ "status.read_more": "Ещё",
"status.reblog": "Продвинуть",
"status.reblog_private": "Продвинуть для своей аудитории",
"status.reblogged_by": "{name} продвинул(а)",
@@ -339,34 +345,33 @@
"status.reply": "Ответить",
"status.replyAll": "Ответить всем",
"status.report": "Пожаловаться",
- "status.sensitive_toggle": "Нажмите для просмотра",
"status.sensitive_warning": "Чувствительный контент",
"status.share": "Поделиться",
"status.show_less": "Свернуть",
"status.show_less_all": "Свернуть для всех",
"status.show_more": "Развернуть",
"status.show_more_all": "Развернуть для всех",
- "status.show_thread": "Show thread",
- "status.unmute_conversation": "Снять глушение с треда",
+ "status.show_thread": "Показать обсуждение",
+ "status.unmute_conversation": "Снять глушение с обсуждения",
"status.unpin": "Открепить от профиля",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Удалить предложение",
+ "suggestions.header": "Вам может быть интересно…",
"tabs_bar.federated_timeline": "Глобальная",
"tabs_bar.home": "Главная",
"tabs_bar.local_timeline": "Локальная",
"tabs_bar.notifications": "Уведомления",
"tabs_bar.search": "Поиск",
- "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
- "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
- "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
- "time_remaining.moments": "Moments remaining",
- "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+ "time_remaining.days": "{number, plural, one {остался # день} few {осталось # дня} many {осталось # дней} other {осталось # дней}}",
+ "time_remaining.hours": "{number, plural, one {остался # час} few {осталось # часа} many {осталось # часов} other {осталось # часов}}",
+ "time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}",
+ "time_remaining.moments": "остались считанные мгновения",
+ "time_remaining.seconds": "{number, plural, one {осталась # секунду} few {осталось # секунды} many {осталось # секунд} other {осталось # секунд}}",
"trends.count_by_accounts": "Популярно у {count} {rawCount, plural, one {человека} few {человек} many {человек} other {человек}}",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"upload_area.title": "Перетащите сюда, чтобы загрузить",
"upload_button.label": "Добавить медиаконтент",
- "upload_error.limit": "File upload limit exceeded.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.limit": "Достигнут лимит загруженных файлов.",
+ "upload_error.poll": "К опросам нельзя прикреплять файлы.",
"upload_form.description": "Описать для людей с нарушениями зрения",
"upload_form.focus": "Обрезать",
"upload_form.undo": "Отменить",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 5542198f7..56edf5469 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -6,7 +6,7 @@
"account.blocked": "Blokovaný/á",
"account.direct": "Súkromná správa pre @{name}",
"account.domain_blocked": "Doména ukrytá",
- "account.edit_profile": "Upraviť profil",
+ "account.edit_profile": "Uprav profil",
"account.endorse": "Zobrazuj na profile",
"account.follow": "Následuj",
"account.followers": "Sledujúci",
@@ -14,38 +14,38 @@
"account.follows": "Následuje",
"account.follows.empty": "Tento užívateľ ešte nikoho nenásleduje.",
"account.follows_you": "Následuje ťa",
- "account.hide_reblogs": "Skryť povýšenia od @{name}",
+ "account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
"account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
"account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.",
"account.media": "Médiá",
"account.mention": "Spomeň @{name}",
"account.moved_to": "{name} sa presunul/a na:",
"account.mute": "Ignorovať @{name}",
- "account.mute_notifications": "Stĺmiť oboznámenia od @{name}",
+ "account.mute_notifications": "Stĺm oboznámenia od @{name}",
"account.muted": "Utíšený/á",
"account.posts": "Príspevky",
"account.posts_with_replies": "Príspevky aj s odpoveďami",
"account.report": "Nahlás @{name}",
- "account.requested": "Čaká na schválenie. Kliknite pre zrušenie žiadosti",
- "account.share": "Zdieľať @{name} profil",
+ "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti",
+ "account.share": "Zdieľaj @{name} profil",
"account.show_reblogs": "Ukáž vyzdvihnutia od @{name}",
"account.unblock": "Odblokuj @{name}",
"account.unblock_domain": "Prestaň skrývať {domain}",
"account.unendorse": "Nezobrazuj na profile",
"account.unfollow": "Prestaň následovať",
"account.unmute": "Prestaň ignorovať @{name}",
- "account.unmute_notifications": "Zrušiť stlmenie oznámení od @{name}",
+ "account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}",
"alert.unexpected.message": "Vyskytla sa nečakaná chyba.",
"alert.unexpected.title": "Oops!",
"boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie",
"bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.",
"bundle_column_error.retry": "Skús to znova",
"bundle_column_error.title": "Chyba siete",
- "bundle_modal_error.close": "Zatvoriť",
+ "bundle_modal_error.close": "Zatvor",
"bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.",
"bundle_modal_error.retry": "Skúsiť znova",
"column.blocks": "Blokovaní užívatelia",
- "column.community": "Lokálna časová os",
+ "column.community": "Miestna časová os",
"column.direct": "Súkromné správy",
"column.domain_blocks": "Skryté domény",
"column.favourites": "Obľúbené",
@@ -64,11 +64,11 @@
"column_header.show_settings": "Ukáž nastavenia",
"column_header.unpin": "Odopnúť",
"column_subheading.settings": "Nastavenia",
- "community.column_settings.media_only": "Iba media",
+ "community.column_settings.media_only": "Iba médiá",
"compose_form.direct_message_warning": "Tento príspevok bude videný výhradne iba spomenutými užívateľmi. Ber ale na vedomie že správci tvojej a všetkých iných zahrnutých instancií majú možnosť skontrolovať túto správu.",
"compose_form.direct_message_warning_learn_more": "Zistiť viac",
"compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.",
- "compose_form.lock_disclaimer": "Váš účet nie je {locked}. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.",
+ "compose_form.lock_disclaimer": "Tvoj účet nie je {locked}. Ktokoľvek ťa môže nasledovať a vidieť tvoje správy pre sledujúcich.",
"compose_form.lock_disclaimer.lock": "zamknutý",
"compose_form.placeholder": "Čo máš na mysli?",
"compose_form.poll.add_option": "Pridaj voľbu",
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Odstráň túto voľbu",
"compose_form.publish": "Pošli",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Médiálny obsah je označený ako chúlostivý",
"compose_form.sensitive.unmarked": "Médiálny obsah nieje označený ako chúlostivý",
"compose_form.spoiler.marked": "Text je ukrytý za varovaním",
@@ -90,33 +91,34 @@
"confirmations.delete.message": "Si si istý/á, že chceš vymazať túto správu?",
"confirmations.delete_list.confirm": "Vymaž",
"confirmations.delete_list.message": "Si si istý/á, že chceš natrvalo vymazať tento zoznam?",
- "confirmations.domain_block.confirm": "Skryť celú doménu",
- "confirmations.domain_block.message": "Si si naozaj istý, že chceš blokovať celú {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.",
+ "confirmations.domain_block.confirm": "Skry celú doménu",
+ "confirmations.domain_block.message": "Si si naozaj istý/á, že chceš blokovať celú doménu {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.",
"confirmations.mute.confirm": "Ignoruj",
- "confirmations.mute.message": "Naozaj chcete ignorovať {name}?",
- "confirmations.redraft.confirm": "Vyčistiť a prepísať",
+ "confirmations.mute.message": "Naozaj chceš ignorovať {name}?",
+ "confirmations.redraft.confirm": "Vyčisti a prepíš",
"confirmations.redraft.message": "Si si istý/á, že chceš premazať a prepísať tento príspevok? Jeho nadobudnuté vyzdvihnutia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
"confirmations.reply.confirm": "Odpovedz",
"confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?",
- "confirmations.unfollow.confirm": "Nesledovať",
- "confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?",
+ "confirmations.unfollow.confirm": "Nesleduj",
+ "confirmations.unfollow.message": "Naozaj chceš prestať sledovať {name}?",
"embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
"embed.preview": "Tu je ako to bude vyzerať:",
"emoji_button.activity": "Aktivita",
"emoji_button.custom": "Vlastné",
"emoji_button.flags": "Vlajky",
"emoji_button.food": "Jedlá a nápoje",
- "emoji_button.label": "Vložiť emotikony",
+ "emoji_button.label": "Vlož emotikony",
"emoji_button.nature": "Prírodné",
"emoji_button.not_found": "Nie emotikony!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Predmety",
"emoji_button.people": "Ľudia",
"emoji_button.recent": "Často používané",
- "emoji_button.search": "Hľadať...",
+ "emoji_button.search": "Hľadaj...",
"emoji_button.search_results": "Nájdené",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestovanie a miesta",
"empty_column.account_timeline": "Niesú tu žiadne príspevky!",
+ "empty_column.account_unavailable": "Profil nedostupný",
"empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
"empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!",
"empty_column.direct": "Ešte nemáš žiadne súkromné správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
@@ -158,16 +160,16 @@
"intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodiny}}",
"intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}",
"introduction.federation.action": "Ďalej",
- "introduction.federation.federated.headline": "Federated",
- "introduction.federation.federated.text": "Verejné príspevky z ostatných serverov vo fediverse budú zobrazenie vo federovanej časovej osi.",
- "introduction.federation.home.headline": "Home",
+ "introduction.federation.federated.headline": "Federovaná",
+ "introduction.federation.federated.text": "Verejné príspevky z ostatných serverov vo fediverse budú zobrazené vo federovanej časovej osi.",
+ "introduction.federation.home.headline": "Domovská",
"introduction.federation.home.text": "Príspevky od ľudí ktorých následuješ sa zobrazia na tvojej domovskej nástenke. Môžeš následovať hocikoho na ktoromkoľvek serveri!",
- "introduction.federation.local.headline": "Local",
+ "introduction.federation.local.headline": "Miestna",
"introduction.federation.local.text": "Verejné príspevky od ľudí v rámci toho istého serveru na akom si aj ty, budú zobrazované na miestnej časovej osi.",
"introduction.interactions.action": "Ukonči návod!",
"introduction.interactions.favourite.headline": "Obľúbené",
"introduction.interactions.favourite.text": "Obľúbením si môžeš príspevok uložiť na neskôr, a zároveň dať jeho autorovi vedieť, že sa ti páčil.",
- "introduction.interactions.reblog.headline": "Povýš",
+ "introduction.interactions.reblog.headline": "Vyzdvihni",
"introduction.interactions.reblog.text": "Môžeš zdieľať príspevky iných ľudí s vašimi následovateľmi tým, že ich povýšiš.",
"introduction.interactions.reply.headline": "Odpovedz",
"introduction.interactions.reply.text": "Odpovedať môžeš na príspevky iných ľudí, aj na svoje vlastné, čím sa spolu prepoja do konverzácie.",
@@ -177,91 +179,95 @@
"keyboard_shortcuts.back": "dostať sa naspäť",
"keyboard_shortcuts.blocked": "otvor zoznam blokovaných užívateľov",
"keyboard_shortcuts.boost": "vyzdvihnúť",
- "keyboard_shortcuts.column": "zamerať sa na status v jednom zo stĺpcov",
- "keyboard_shortcuts.compose": "zamerať sa na písaciu plochu",
+ "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov",
+ "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu",
"keyboard_shortcuts.description": "Popis",
"keyboard_shortcuts.direct": "otvor panel súkromných správ",
"keyboard_shortcuts.down": "posunúť sa dole v zozname",
"keyboard_shortcuts.enter": "otvoriť správu",
- "keyboard_shortcuts.favourite": "pridať do obľúbených",
+ "keyboard_shortcuts.favourite": "pridaj do obľúbených",
"keyboard_shortcuts.favourites": "otvor zoznam obľúbených",
"keyboard_shortcuts.federated": "otvor federovanú časovú os",
"keyboard_shortcuts.heading": "Klávesové skratky",
"keyboard_shortcuts.home": "otvor domácu časovú os",
"keyboard_shortcuts.hotkey": "Klávesa",
- "keyboard_shortcuts.legend": "zobraziť túto legendu",
+ "keyboard_shortcuts.legend": "zobraz túto legendu",
"keyboard_shortcuts.local": "otvor miestnu časovú os",
- "keyboard_shortcuts.mention": "spomenúť autora",
+ "keyboard_shortcuts.mention": "spomeň autora",
"keyboard_shortcuts.muted": "otvor zoznam stíšených užívateľov",
"keyboard_shortcuts.my_profile": "otvor svoj profil",
"keyboard_shortcuts.notifications": "otvor panel oboznámení",
"keyboard_shortcuts.pinned": "otvor zoznam pripnutých príspevkov",
"keyboard_shortcuts.profile": "otvor autorov profil",
"keyboard_shortcuts.reply": "odpovedať",
- "keyboard_shortcuts.requests": "otvor zoznam požiadavok k následovaniu",
- "keyboard_shortcuts.search": "zamerať sa na vyhľadávanie",
+ "keyboard_shortcuts.requests": "otvor zoznam žiadostí o sledovanie",
+ "keyboard_shortcuts.search": "zameraj sa na vyhľadávanie",
"keyboard_shortcuts.start": "otvor panel ''začíname''",
"keyboard_shortcuts.toggle_hidden": "ukáž/skry text za CW",
- "keyboard_shortcuts.toot": "začať úplne novú hlášku",
- "keyboard_shortcuts.unfocus": "nesústrediť sa na písaciu plochu, alebo hľadanie",
- "keyboard_shortcuts.up": "posunúť sa vyššie v zozname",
- "lightbox.close": "Zatvoriť",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "začni úplne nový príspevok",
+ "keyboard_shortcuts.unfocus": "nesústreď sa na písaciu plochu, alebo hľadanie",
+ "keyboard_shortcuts.up": "posuň sa vyššie v zozname",
+ "lightbox.close": "Zatvor",
"lightbox.next": "Ďalšie",
"lightbox.previous": "Predchádzajúci",
- "lists.account.add": "Pridať do zoznamu",
- "lists.account.remove": "Odobrať zo zoznamu",
- "lists.delete": "Vymazať list",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Pridaj do zoznamu",
+ "lists.account.remove": "Odober zo zoznamu",
+ "lists.delete": "Vymaž list",
"lists.edit": "Uprav zoznam",
"lists.edit.submit": "Zmeň názov",
"lists.new.create": "Pridaj zoznam",
"lists.new.title_placeholder": "Názov nového zoznamu",
- "lists.search": "Vyhľadávajte medzi užívateľmi ktorých sledujete",
+ "lists.search": "Vyhľadávaj medzi užívateľmi, ktorých sleduješ",
"lists.subheading": "Tvoje zoznamy",
"loading_indicator.label": "Načítam...",
- "media_gallery.toggle_visible": "Zapnúť/Vypnúť viditeľnosť",
+ "media_gallery.toggle_visible": "Zapni/Vypni viditeľnosť",
"missing_indicator.label": "Nenájdené",
"missing_indicator.sublabel": "Tento zdroj sa ešte nepodarilo nájsť",
- "mute_modal.hide_notifications": "Skryť oznámenia od tohto používateľa?",
- "navigation_bar.apps": "Mobilné aplikácie",
+ "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?",
+ "navigation_bar.apps": "Aplikácie",
"navigation_bar.blocks": "Blokovaní užívatelia",
- "navigation_bar.community_timeline": "Lokálna časová os",
+ "navigation_bar.community_timeline": "Miestna časová os",
"navigation_bar.compose": "Napíš nový príspevok",
"navigation_bar.direct": "Súkromné správy",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "Skryté domény",
- "navigation_bar.edit_profile": "Upraviť profil",
+ "navigation_bar.edit_profile": "Uprav profil",
"navigation_bar.favourites": "Obľúbené",
- "navigation_bar.filters": "Utĺmené slová",
+ "navigation_bar.filters": "Filtrované slová",
"navigation_bar.follow_requests": "Žiadosti o sledovanie",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "O tomto serveri",
"navigation_bar.keyboard_shortcuts": "Klávesové skratky",
"navigation_bar.lists": "Zoznamy",
"navigation_bar.logout": "Odhlás sa",
"navigation_bar.mutes": "Ignorovaní užívatelia",
"navigation_bar.personal": "Osobné",
- "navigation_bar.pins": "Pripnuté tooty",
+ "navigation_bar.pins": "Pripnuté príspevky",
"navigation_bar.preferences": "Voľby",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federovaná časová os",
"navigation_bar.security": "Zabezbečenie",
"notification.favourite": "{name} si obľúbil/a tvoj príspevok",
"notification.follow": "{name} ťa začal/a následovať",
"notification.mention": "{name} ťa spomenul/a",
"notification.poll": "Anketa v ktorej si hlasoval/a sa skončila",
- "notification.reblog": "{name} zdieľal/a tvoj status",
- "notifications.clear": "Vyčistiť zoznam notifikácii",
- "notifications.clear_confirmation": "Naozaj chcete nenávratne prečistiť všetky vaše notifikácie?",
- "notifications.column_settings.alert": "Notifikácie na ploche",
+ "notification.reblog": "{name} zdieľal/a tvoj príspevok",
+ "notifications.clear": "Vyčistiť zoznam oboznámení",
+ "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?",
+ "notifications.column_settings.alert": "Oboznámenia na ploche",
"notifications.column_settings.favourite": "Obľúbené:",
"notifications.column_settings.filter_bar.advanced": "Zobraz všetky kategórie",
"notifications.column_settings.filter_bar.category": "Rýchle triedenie",
"notifications.column_settings.filter_bar.show": "Ukáž",
- "notifications.column_settings.follow": "Noví následujúci:",
+ "notifications.column_settings.follow": "Noví sledujúci:",
"notifications.column_settings.mention": "Zmienenia:",
"notifications.column_settings.poll": "Výsledky ankiet:",
"notifications.column_settings.push": "Push notifikácie",
- "notifications.column_settings.reblog": "Boosty:",
- "notifications.column_settings.show": "Zobraziť v stĺpci",
- "notifications.column_settings.sound": "Prehrať zvuk",
+ "notifications.column_settings.reblog": "Vyzdvihnutia:",
+ "notifications.column_settings.show": "Zobraz v stĺpci",
+ "notifications.column_settings.sound": "Prehraj zvuk",
"notifications.filter.all": "Všetky",
"notifications.filter.boosts": "Vyzdvihnutia",
"notifications.filter.favourites": "Obľúbené",
@@ -276,13 +282,13 @@
"poll_button.add_poll": "Pridaj anketu",
"poll_button.remove_poll": "Odstráň anketu",
"privacy.change": "Uprav súkromie príspevku",
- "privacy.direct.long": "Pošli iba spomenutým používateľom",
+ "privacy.direct.long": "Pošli iba spomenutým užívateľom",
"privacy.direct.short": "Súkromne",
- "privacy.private.long": "Poslať iba následovateľom",
+ "privacy.private.long": "Pošli iba následovateľom",
"privacy.private.short": "Iba pre sledujúcich",
- "privacy.public.long": "Poslať všetkým verejne",
+ "privacy.public.long": "Pošli všetkým verejne",
"privacy.public.short": "Verejné",
- "privacy.unlisted.long": "Neposielať do verejných časových osí",
+ "privacy.unlisted.long": "Neposielaj do verejných časových osí",
"privacy.unlisted.short": "Verejne, ale nezobraziť v osi",
"regeneration_indicator.label": "Načítava sa…",
"regeneration_indicator.sublabel": "Vaša domovská nástenka sa pripravuje!",
@@ -293,11 +299,11 @@
"relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Zrušiť",
"report.forward": "Posuň ku {target}",
- "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu reportu aj tam?",
+ "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?",
"report.hint": "Toto nahlásenie bude zaslané správcom tvojho servera. Môžeš napísať odvôvodnenie, prečo nahlasuješ tento účet:",
"report.placeholder": "Ďalšie komentáre",
- "report.submit": "Poslať",
- "report.target": "Nahlásenie {target}",
+ "report.submit": "Odošli",
+ "report.target": "Nahlás {target}",
"search.placeholder": "Hľadaj",
"search_popout.search_format": "Pokročilé vyhľadávanie",
"search_popout.tips.full_text": "Vráti jednoduchý textový výpis príspevkov ktoré si napísal/a, ktoré si obľúbil/a, povýšil/a, alebo aj tých, v ktorých si bol/a spomenutý/á, a potom všetky zadaniu odpovedajúce prezívky, mená a haštagy.",
@@ -311,9 +317,9 @@
"search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}",
"status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}",
"status.admin_status": "Otvor tento príspevok v moderovacom rozhraní",
- "status.block": "Blokovať @{name}",
+ "status.block": "Blokuj @{name}",
"status.cancel_reblog_private": "Nezdieľaj",
- "status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý",
+ "status.cannot_reblog": "Tento príspevok nemôže byť zdieľaný",
"status.copy": "Skopíruj odkaz na príspevok",
"status.delete": "Zmazať",
"status.detailed_status": "Podrobný náhľad celej konverzácie",
@@ -325,23 +331,22 @@
"status.media_hidden": "Skryté médiá",
"status.mention": "Spomeň @{name}",
"status.more": "Viac",
- "status.mute": "Utíšiť @{name}",
- "status.mute_conversation": "Ignorovať konverzáciu",
- "status.open": "Otvoriť tento status",
+ "status.mute": "Utíš @{name}",
+ "status.mute_conversation": "Ignoruj konverzáciu",
+ "status.open": "Otvor tento príspevok",
"status.pin": "Pripni na profil",
"status.pinned": "Pripnutý príspevok",
"status.read_more": "Čítaj ďalej",
- "status.reblog": "Povýšiť",
- "status.reblog_private": "Povýš k pôvodnému publiku",
+ "status.reblog": "Vyzdvihni",
+ "status.reblog_private": "Vyzdvihni k pôvodnému publiku",
"status.reblogged_by": "{name} povýšil/a",
- "status.reblogs.empty": "Nikto ešte nepovýšil tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.",
+ "status.reblogs.empty": "Nikto ešte nevyzdvihol tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.",
"status.redraft": "Vymaž a prepíš",
"status.reply": "Odpovedať",
- "status.replyAll": "Odpovedať na diskusiu",
- "status.report": "Nahlásiť @{name}",
- "status.sensitive_toggle": "Klikni pre zobrazenie",
+ "status.replyAll": "Odpovedz na diskusiu",
+ "status.report": "Nahlás @{name}",
"status.sensitive_warning": "Chúlostivý obsah",
- "status.share": "Zdieľať",
+ "status.share": "Zdieľaj",
"status.show_less": "Zobraz menej",
"status.show_less_all": "Všetkým ukáž menej",
"status.show_more": "Ukáž viac",
@@ -352,32 +357,32 @@
"suggestions.dismiss": "Zavrhni návrh",
"suggestions.header": "Mohlo by ťa zaujímať…",
"tabs_bar.federated_timeline": "Federovaná",
- "tabs_bar.home": "Domov",
- "tabs_bar.local_timeline": "Lokálna",
- "tabs_bar.notifications": "Notifikácie",
+ "tabs_bar.home": "Domovská",
+ "tabs_bar.local_timeline": "Miestna",
+ "tabs_bar.notifications": "Oboznámenia",
"tabs_bar.search": "Hľadaj",
- "time_remaining.days": "Zostáva {number, plural, one {# deň} few {# dní} many {# dni} other {# dni}}",
- "time_remaining.hours": "Zostáva {number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodiny}}",
- "time_remaining.minutes": "Zostáva {number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}",
+ "time_remaining.days": "Ostáva {number, plural, one {# deň} few {# dní} many {# dni} other {# dni}}",
+ "time_remaining.hours": "Ostáva {number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodiny}}",
+ "time_remaining.minutes": "Ostáva {number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}",
"time_remaining.moments": "Ostáva už iba chviľka",
- "time_remaining.seconds": "Zostáva {number, plural, one {# sekunda} few {# sekúnd} many {# sekúnd} other {# sekundy}}",
+ "time_remaining.seconds": "Ostáva {number, plural, one {# sekunda} few {# sekúnd} many {# sekúnd} other {# sekundy}}",
"trends.count_by_accounts": "{count} {rawCount, plural, one {človek vraví} other {ľudia vravia}}",
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
"upload_area.title": "Pretiahni a pusť pre nahratie",
- "upload_button.label": "Pridať médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_button.label": "Pridaj médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Limit pre nahrávanie súborov bol prekročený.",
- "upload_error.poll": "Nahrávanie súborov pri anketách nieje dovolené.",
+ "upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.",
"upload_form.description": "Opis pre slabo vidiacich",
"upload_form.focus": "Pozmeň náhľad",
"upload_form.undo": "Vymaž",
"upload_progress.label": "Nahráva sa...",
- "video.close": "Zavrieť video",
- "video.exit_fullscreen": "Vpnúť zobrazenie na celú obrazovku",
- "video.expand": "Zväčšiť video",
- "video.fullscreen": "Zobraziť na celú obrazovku",
- "video.hide": "Skryť video",
- "video.mute": "Vypnúť zvuk",
+ "video.close": "Zavri video",
+ "video.exit_fullscreen": "Vypni zobrazenie na celú obrazovku",
+ "video.expand": "Zväčši video",
+ "video.fullscreen": "Zobraz na celú obrazovku",
+ "video.hide": "Skry video",
+ "video.mute": "Vypni zvuk",
"video.pause": "Pauza",
- "video.play": "Prehrať",
- "video.unmute": "Zapnúť zvuk"
+ "video.play": "Prehraj",
+ "video.unmute": "Zapni zvuk"
}
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index bef4efe0e..1f7082d82 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tutni",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Medij je označen kot občutljiv",
"compose_form.sensitive.unmarked": "Medij ni označen kot občutljiv",
"compose_form.spoiler.marked": "Besedilo je skrito za opozorilom",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Potovanja in Kraji",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Niste še blokirali nobenega uporabnika.",
"empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
"empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga pošljete ali prejmete, se prikaže tukaj.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "da začnete povsem nov tut",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "O tem vozlišču",
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pripeti tuti",
"navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na objavo",
"status.report": "Prijavi @{name}",
- "status.sensitive_toggle": "Kliknite za ogled",
"status.sensitive_warning": "Občutljiva vsebina",
"status.share": "Deli",
"status.show_less": "Prikaži manj",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index b86c6e2ee..5dc6d1ceb 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Mesazh",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media është shënuar si rezervat",
"compose_form.sensitive.unmarked": "Media s’është shënuar si rezervat",
"compose_form.spoiler.marked": "Teksti është fshehur pas sinjalizimit",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simbole",
"emoji_button.travel": "Udhëtime & Vende",
"empty_column.account_timeline": "S’ka mesazhe këtu!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.",
"empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!",
"empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejt. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "për kalim fokusi te kërkimi",
"keyboard_shortcuts.start": "për hapjen e shtyllës \"fillojani\"",
"keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri",
"keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve",
"keyboard_shortcuts.up": "për ngjitje sipër nëpër listë",
"lightbox.close": "Mbylle",
"lightbox.next": "Pasuesja",
"lightbox.previous": "E mëparshmja",
+ "lightbox.view_context": "View context",
"lists.account.add": "Shto në listë",
"lists.account.remove": "Hiqe nga lista",
"lists.delete": "Fshije listën",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Të parapëlqyer",
"navigation_bar.filters": "Fjalë të heshtuara",
"navigation_bar.follow_requests": "Kërkesa për ndjekje",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Mbi këtë shërbyes",
"navigation_bar.keyboard_shortcuts": "Taste përkatës",
"navigation_bar.lists": "Lista",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personale",
"navigation_bar.pins": "Mesazhe të fiksuar",
"navigation_bar.preferences": "Parapëlqime",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Rrjedhë kohore të federuarish",
"navigation_bar.security": "Siguri",
"notification.favourite": "{name} parapëlqeu gjendjen tuaj",
@@ -339,7 +345,6 @@
"status.reply": "Përgjigjuni",
"status.replyAll": "Përgjigjuni rrjedhës",
"status.report": "Raportojeni @{name}",
- "status.sensitive_toggle": "Klikoni që ta shihni",
"status.sensitive_warning": "Lëndë me spec",
"status.share": "Ndajeni me të tjerët",
"status.show_less": "Shfaq më pak",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 155935306..1e5e89919 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Tutni",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & mesta",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "da se prebacite na pretragu",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "da započnete skroz novi tut",
"keyboard_shortcuts.unfocus": "da ne budete više na pretrazi/pravljenju novog tuta",
"keyboard_shortcuts.up": "da se pomerite na gore u listi",
"lightbox.close": "Zatvori",
"lightbox.next": "Sledeći",
"lightbox.previous": "Prethodni",
+ "lightbox.view_context": "View context",
"lists.account.add": "Dodaj na listu",
"lists.account.remove": "Ukloni sa liste",
"lists.delete": "Obriši listu",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Omiljeni",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Zahtevi za praćenje",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "O ovoj instanci",
"navigation_bar.keyboard_shortcuts": "Prečice na tastaturi",
"navigation_bar.lists": "Liste",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Prikačeni tutovi",
"navigation_bar.preferences": "Podešavanja",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federisana lajna",
"navigation_bar.security": "Security",
"notification.favourite": "{name} je stavio Vaš status kao omiljeni",
@@ -339,7 +345,6 @@
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na diskusiju",
"status.report": "Prijavi korisnika @{name}",
- "status.sensitive_toggle": "Kliknite da vidite",
"status.sensitive_warning": "Osetljiv sadržaj",
"status.share": "Podeli",
"status.show_less": "Prikaži manje",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 1124ed8d5..845abe7b2 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Труби",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Медији су означени као осетљиви",
"compose_form.sensitive.unmarked": "Медији су означени као не-осетљиви",
"compose_form.spoiler.marked": "Текст је сакривен иза упозорења",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Симболи",
"emoji_button.travel": "Путовања и места",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Још увек немате блокираних корисника.",
"empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!",
"empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "да се пребаците на претрагу",
"keyboard_shortcuts.start": "да отворите колону \"почнимо\"",
"keyboard_shortcuts.toggle_hidden": "да прикажете/сакријте текст иза CW-а",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "да започнете скроз нову трубу",
"keyboard_shortcuts.unfocus": "да одфокусирате/не будете више на претрази/прављењу нове трубе",
"keyboard_shortcuts.up": "да се померите на горе у листи",
"lightbox.close": "Затвори",
"lightbox.next": "Следећи",
"lightbox.previous": "Претходни",
+ "lightbox.view_context": "View context",
"lists.account.add": "Додај на листу",
"lists.account.remove": "Уклони са листе",
"lists.delete": "Обриши листу",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Омиљене",
"navigation_bar.filters": "Пригушене речи",
"navigation_bar.follow_requests": "Захтеви за праћење",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "О овој инстанци",
"navigation_bar.keyboard_shortcuts": "Пречице на тастатури",
"navigation_bar.lists": "Листе",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Прикачене трубе",
"navigation_bar.preferences": "Подешавања",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Здружена временска линија",
"navigation_bar.security": "Безбедност",
"notification.favourite": "{name} је ставио/ла Ваш статус као омиљени",
@@ -339,7 +345,6 @@
"status.reply": "Одговори",
"status.replyAll": "Одговори на дискусију",
"status.report": "Пријави корисника @{name}",
- "status.sensitive_toggle": "Кликните да видите",
"status.sensitive_warning": "Осетљив садржај",
"status.share": "Подели",
"status.show_less": "Прикажи мање",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 9093637b3..44d0c3d30 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media har markerats som känsligt",
"compose_form.sensitive.unmarked": "Media har inte markerats som känsligt",
"compose_form.spoiler.marked": "Texten har dolts bakom en varning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Resor & Platser",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att få bollen att rulla!",
"empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot kommer den att dyka upp här.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "att fokusera sökfältet",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "att visa/gömma text bakom CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "att börja en helt ny toot",
"keyboard_shortcuts.unfocus": "att avfokusera komponera text fält / sökfält",
"keyboard_shortcuts.up": "att flytta upp i listan",
"lightbox.close": "Stäng",
"lightbox.next": "Nästa",
"lightbox.previous": "Tidigare",
+ "lightbox.view_context": "View context",
"lists.account.add": "Lägg till i lista",
"lists.account.remove": "Ta bort från lista",
"lists.delete": "Radera lista",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favoriter",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Följförfrågningar",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Om denna instans",
"navigation_bar.keyboard_shortcuts": "Tangentbordsgenvägar",
"navigation_bar.lists": "Listor",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Nålade inlägg (toots)",
"navigation_bar.preferences": "Inställningar",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Förenad tidslinje",
"navigation_bar.security": "Säkerhet",
"notification.favourite": "{name} favoriserade din status",
@@ -339,7 +345,6 @@
"status.reply": "Svara",
"status.replyAll": "Svara på tråden",
"status.report": "Rapportera @{name}",
- "status.sensitive_toggle": "Klicka för att se",
"status.sensitive_warning": "Känsligt innehåll",
"status.share": "Dela",
"status.show_less": "Visa mindre",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index eedd4c6f3..19312633a 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
+ "lightbox.view_context": "View context",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this instance",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.favourite": "{name} favourited your status",
@@ -339,7 +345,6 @@
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_less": "Show less",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index c93ff63df..269ea45c3 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "ఈ ఎంపికను తొలగించు",
"compose_form.publish": "టూట్",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "మీడియా సున్నితమైనదిగా గుర్తించబడింది",
"compose_form.sensitive.unmarked": "మీడియా సున్నితమైనదిగా గుర్తించబడలేదు",
"compose_form.spoiler.marked": "హెచ్చరిక వెనుక పాఠ్యం దాచబడింది",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "చిహ్నాలు",
"emoji_button.travel": "ప్రయాణం & ప్రదేశాలు",
"empty_column.account_timeline": "ఇక్కడ ఏ టూట్లూ లేవు!No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.",
"empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!",
"empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "శోధనపై దృష్టి పెట్టండి",
"keyboard_shortcuts.start": "\"ఇక్కడ ప్రారంభించండి\" నిలువు వరుసను తెరవడానికి",
"keyboard_shortcuts.toggle_hidden": "CW వెనుక ఉన్న పాఠ్యాన్ని చూపడానికి / దాచడానికి",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "ఒక సరికొత్త టూట్ను ప్రారంభించడానికి",
"keyboard_shortcuts.unfocus": "పాఠ్యం వ్రాసే ఏరియా/శోధన పట్టిక నుండి బయటకు రావడానికి",
"keyboard_shortcuts.up": "జాబితాలో పైకి తరలించడానికి",
"lightbox.close": "మూసివేయు",
"lightbox.next": "తరువాత",
"lightbox.previous": "మునుపటి",
+ "lightbox.view_context": "View context",
"lists.account.add": "జాబితాకు జోడించు",
"lists.account.remove": "జాబితా నుండి తొలగించు",
"lists.delete": "జాబితాను తొలగించు",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "ఇష్టపడినవి",
"navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు",
"navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "ఈ సేవిక గురించి",
"navigation_bar.keyboard_shortcuts": "హాట్ కీలు",
"navigation_bar.lists": "జాబితాలు",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "వ్యక్తిగతం",
"navigation_bar.pins": "అతికించిన టూట్లు",
"navigation_bar.preferences": "ప్రాధాన్యతలు",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం",
"navigation_bar.security": "భద్రత",
"notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు",
@@ -339,7 +345,6 @@
"status.reply": "ప్రత్యుత్తరం",
"status.replyAll": "సంభాషణకు ప్రత్యుత్తరం ఇవ్వండి",
"status.report": "@{name}పై ఫిర్యాదుచేయు",
- "status.sensitive_toggle": "వీక్షించడానికి క్లిక్ చేయండి",
"status.sensitive_warning": "సున్నితమైన కంటెంట్",
"status.share": "పంచుకోండి",
"status.show_less": "తక్కువ చూపించు",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index e15382402..95ecdc0c8 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -7,7 +7,7 @@
"account.direct": "ส่งข้อความโดยตรงถึง @{name}",
"account.domain_blocked": "ซ่อนโดเมนอยู่",
"account.edit_profile": "แก้ไขโปรไฟล์",
- "account.endorse": "Feature on profile",
+ "account.endorse": "แสดงให้เห็นในโปรไฟล์",
"account.follow": "ติดตาม",
"account.followers": "ผู้ติดตาม",
"account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้",
@@ -15,7 +15,7 @@
"account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร",
"account.follows_you": "ติดตามคุณ",
"account.hide_reblogs": "ซ่อนการดันจาก @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "สื่อ",
"account.mention": "กล่าวถึง @{name}",
@@ -31,18 +31,18 @@
"account.show_reblogs": "แสดงการดันจาก @{name}",
"account.unblock": "เลิกปิดกั้น @{name}",
"account.unblock_domain": "เลิกซ่อน {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "ไม่แสดงให้เห็นในโปรไฟล์",
"account.unfollow": "เลิกติดตาม",
"account.unmute": "เลิกปิดเสียง @{name}",
"account.unmute_notifications": "เลิกปิดเสียงการแจ้งเตือนจาก @{name}",
"alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
"alert.unexpected.title": "อุปส์!",
"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.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
"bundle_column_error.retry": "ลองอีกครั้ง",
"bundle_column_error.title": "ข้อผิดพลาดเครือข่าย",
"bundle_modal_error.close": "ปิด",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
"bundle_modal_error.retry": "ลองอีกครั้ง",
"column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่",
"column.community": "เส้นเวลาในเว็บ",
@@ -77,13 +77,14 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "โพสต์",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Media is marked as sensitive",
"compose_form.sensitive.unmarked": "Media is not marked as sensitive",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "เขียนคำเตือนของคุณที่นี่",
"confirmation_modal.cancel": "ยกเลิก",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "ปิดกั้นแล้วรายงาน",
"confirmations.block.confirm": "ปิดกั้น",
"confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?",
"confirmations.delete.confirm": "ลบ",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "สัญลักษณ์",
"emoji_button.travel": "การเดินทางและสถานที่",
"empty_column.account_timeline": "ไม่มีโพสต์ที่นี่!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -141,7 +143,7 @@
"getting_started.invite": "เชิญผู้คน",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.security": "ความปลอดภัย",
- "getting_started.terms": "Terms of service",
+ "getting_started.terms": "เงื่อนไขการให้บริการ",
"hashtag.column_header.tag_mode.all": "และ {additional}",
"hashtag.column_header.tag_mode.any": "หรือ {additional}",
"hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "ปิด",
"lightbox.next": "ถัดไป",
"lightbox.previous": "ก่อนหน้า",
+ "lightbox.view_context": "View context",
"lists.account.add": "เพิ่มไปยังรายการ",
"lists.account.remove": "เอาออกจากรายการ",
"lists.delete": "ลบรายการ",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "รายการโปรด",
"navigation_bar.filters": "คำที่ปิดเสียงอยู่",
"navigation_bar.follow_requests": "คำขอติดตาม",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "เกี่ยวกับเซิร์ฟเวอร์นี้",
"navigation_bar.keyboard_shortcuts": "ปุ่มลัด",
"navigation_bar.lists": "รายการ",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "ส่วนบุคคล",
"navigation_bar.pins": "โพสต์ที่ปักหมุด",
"navigation_bar.preferences": "การกำหนดลักษณะ",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก",
"navigation_bar.security": "ความปลอดภัย",
"notification.favourite": "{name} ได้ชื่นชอบสถานะของคุณ",
@@ -339,7 +345,6 @@
"status.reply": "ตอบกลับ",
"status.replyAll": "ตอบกลับกระทู้",
"status.report": "รายงาน @{name}",
- "status.sensitive_toggle": "คลิกเพื่อดู",
"status.sensitive_warning": "เนื้อหาที่ละเอียดอ่อน",
"status.share": "แบ่งปัน",
"status.show_less": "แสดงน้อยลง",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index cbe1c5726..ec4657b9b 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -4,7 +4,7 @@
"account.block": "Engelle @{name}",
"account.block_domain": "{domain} alanından her şeyi gizle",
"account.blocked": "Engellenmiş",
- "account.direct": "Direct Message @{name}",
+ "account.direct": "Mesaj gönder : @{name}",
"account.domain_blocked": "Alan adı gizlendi",
"account.edit_profile": "Profili düzenle",
"account.endorse": "Profildeki özellik",
@@ -19,28 +19,28 @@
"account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini elle inceler.",
"account.media": "Medya",
"account.mention": "@{name} kullanıcısından bahset",
- "account.moved_to": "{name} has moved to:",
+ "account.moved_to": "{name} şuraya taşındı:",
"account.mute": "@{name} kullanıcısını sessize al",
"account.mute_notifications": "@{name} kullanıcısının bildirimlerini kapat",
- "account.muted": "Sessiz",
+ "account.muted": "Sesi kısık",
"account.posts": "Gönderiler",
"account.posts_with_replies": "Gönderiler ve yanıtlar",
"account.report": "@{name} kullanıcısını bildir",
"account.requested": "Onay bekliyor. Takip isteğini iptal etmek için tıklayın",
"account.share": "@{name} kullanıcısının profilini paylaş",
- "account.show_reblogs": "@{name} kullanıcısından boost'ları göster",
+ "account.show_reblogs": "@{name} kullanıcısından boostları göster",
"account.unblock": "Engeli kaldır @{name}",
"account.unblock_domain": "{domain} göster",
"account.unendorse": "Profilde özellik yok",
"account.unfollow": "Takipten vazgeç",
- "account.unmute": "Sesi aç @{name}",
+ "account.unmute": "Sesi aç : @{name}",
"account.unmute_notifications": "@{name} kullanıcısından bildirimleri aç",
"alert.unexpected.message": "Beklenmedik bir hata oluştu.",
"alert.unexpected.title": "Hay aksi!",
"boost_modal.combo": "Bir dahaki sefere {combo} tuşuna basabilirsiniz",
"bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.",
"bundle_column_error.retry": "Tekrar deneyin",
- "bundle_column_error.title": "Network error",
+ "bundle_column_error.title": "Ağ hatası",
"bundle_modal_error.close": "Kapat",
"bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.",
"bundle_modal_error.retry": "Tekrar deneyin",
@@ -54,7 +54,7 @@
"column.lists": "Listeler",
"column.mutes": "Susturulmuş kullanıcılar",
"column.notifications": "Bildirimler",
- "column.pins": "Pinned toot",
+ "column.pins": "Sabitlenmiş gönderi",
"column.public": "Federe zaman tüneli",
"column_back_button.label": "Geri",
"column_header.hide_settings": "Ayarları gizle",
@@ -66,41 +66,42 @@
"column_subheading.settings": "Ayarlar",
"community.column_settings.media_only": "Sadece medya",
"compose_form.direct_message_warning": "Bu gönderi sadece belirtilen kullanıcılara gönderilecektir.",
- "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edin",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin",
+ "compose_form.hashtag_warning": "Bu paylaşım liste dışı olduğu için hiç bir hashtag'de yer almayacak. Sadece herkese açık gönderiler hashtaglerde bulunabilir.",
"compose_form.lock_disclaimer": "Hesabınız {locked} değil. Sadece takipçilerle paylaştığınız gönderileri görebilmek için sizi herhangi bir kullanıcı takip edebilir.",
"compose_form.lock_disclaimer.lock": "kilitli",
"compose_form.placeholder": "Aklınızdan ne geçiyor?",
- "compose_form.poll.add_option": "Add a choice",
- "compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
- "compose_form.publish": "Toot",
+ "compose_form.poll.add_option": "Bir seçenek ekleyin",
+ "compose_form.poll.duration": "Anket süresi",
+ "compose_form.poll.option_placeholder": "Seçim {number}",
+ "compose_form.poll.remove_option": "Bu seçimi kaldır",
+ "compose_form.publish": "Gönder",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Medya hassas olarak işaretlendi",
"compose_form.sensitive.unmarked": "Medya hassas olarak işaretlenmemiş",
"compose_form.spoiler.marked": "Metin uyarının arkasına gizlenir",
"compose_form.spoiler.unmarked": "Metin gizli değil",
"compose_form.spoiler_placeholder": "İçerik uyarısı",
"confirmation_modal.cancel": "İptal",
- "confirmations.block.block_and_report": "Block & Report",
+ "confirmations.block.block_and_report": "Engelle & Bildir",
"confirmations.block.confirm": "Engelle",
"confirmations.block.message": "{name} kullanıcısını engellemek istiyor musunuz?",
"confirmations.delete.confirm": "Sil",
"confirmations.delete.message": "Bu gönderiyi silmek istiyor musunuz?",
- "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.confirm": "Sil",
"confirmations.delete_list.message": "Bu listeyi kalıcı olarak silmek istediğinize emin misiniz?",
"confirmations.domain_block.confirm": "Alan adının tamamını gizle",
- "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.",
+ "confirmations.domain_block.message": "tüm {domain} alan adını engellemek istediğinizden emin misiniz? Genellikle birkaç hedefli engel ve susturma işi görür ve tercih edilir.",
"confirmations.mute.confirm": "Sessize al",
"confirmations.mute.message": "{name} kullanıcısını sessize almak istiyor musunuz?",
"confirmations.redraft.confirm": "Sil ve yeniden tasarla",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
+ "confirmations.redraft.message": "Bu durumu silip tekrar taslaklaştırmak istediğinizden emin misiniz? Tüm cevapları, boostları ve favorileri kaybedeceksiniz.",
"confirmations.reply.confirm": "Yanıtla",
"confirmations.reply.message": "Şimdi yanıtlarken o an oluşturduğunuz mesajın üzerine yazılır. Devam etmek istediğinize emin misiniz?",
"confirmations.unfollow.confirm": "Takibi kaldır",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "embed.instructions": "Embed this status on your website by copying the code below.",
+ "confirmations.unfollow.message": "{name}'yi takipten çıkarmak istediğinizden emin misiniz?",
+ "embed.instructions": "Aşağıdaki kodu kopyalayarak bu durumu sitenize gömün.",
"embed.preview": "İşte nasıl görüneceği:",
"emoji_button.activity": "Aktivite",
"emoji_button.custom": "Özel",
@@ -112,22 +113,23 @@
"emoji_button.objects": "Nesneler",
"emoji_button.people": "İnsanlar",
"emoji_button.recent": "Sık kullanılan",
- "emoji_button.search": "Emoji ara...",
+ "emoji_button.search": "Ara...",
"emoji_button.search_results": "Arama sonuçları",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
"empty_column.account_timeline": "Burada hiç gönderi yok!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.",
"empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!",
"empty_column.direct": "Henüz doğrudan mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.",
"empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.favourited_statuses": "Hiç favori gönderiminiz yok. Bir tane olursa burada görünecek.",
+ "empty_column.favourites": "Kimse bu gönderiyi favorilerine eklememiş. Biri eklerse burada görünecek.",
+ "empty_column.follow_requests": "Hiç takip isteğiniz yok. Bir tane aldığınızda burada görünecek.",
"empty_column.hashtag": "Henüz bu hashtag’e sahip hiçbir gönderi yok.",
"empty_column.home": "Henüz kimseyi takip etmiyorsunuz. {public} ziyaret edebilir veya arama kısmını kullanarak diğer kullanıcılarla iletişime geçebilirsiniz.",
"empty_column.home.public_timeline": "herkese açık zaman tüneli",
- "empty_column.list": "There is nothing in this list yet.",
+ "empty_column.list": "Bu listede henüz hiçbir şey yok.",
"empty_column.lists": "Henüz hiç listeniz yok. Bir tane oluşturduğunuzda burada görünecek.",
"empty_column.mutes": "Henüz hiçbir kullanıcıyı sessize almadınız.",
"empty_column.notifications": "Henüz hiçbir bildiriminiz yok. Diğer insanlarla sobhet edebilmek için etkileşime geçebilirsiniz.",
@@ -136,7 +138,7 @@
"follow_request.reject": "Reddet",
"getting_started.developers": "Geliştiriciler",
"getting_started.directory": "Profil dizini",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "Belgeler",
"getting_started.heading": "Başlangıç",
"getting_started.invite": "İnsanları davet edin",
"getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. Github {github}. {apps} üzerinden katkıda bulunabilir, hata raporlayabilirsiniz.",
@@ -145,12 +147,12 @@
"hashtag.column_header.tag_mode.all": "ve {additional}",
"hashtag.column_header.tag_mode.any": "ya da {additional}",
"hashtag.column_header.tag_mode.none": "{additional} olmadan",
- "hashtag.column_settings.select.no_options_message": "No suggestions found",
- "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+ "hashtag.column_settings.select.no_options_message": "Hiç öneri bulunamadı",
+ "hashtag.column_settings.select.placeholder": "Hashtagler girin…",
"hashtag.column_settings.tag_mode.all": "Bunların hepsi",
"hashtag.column_settings.tag_mode.any": "Bunların hiçbiri",
"hashtag.column_settings.tag_mode.none": "Bunların hiçbiri",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.column_settings.tag_toggle": "Bu sütundaki ek etiketleri içer",
"home.column_settings.basic": "Temel",
"home.column_settings.show_reblogs": "Boost edilenleri göster",
"home.column_settings.show_replies": "Cevapları göster",
@@ -159,122 +161,126 @@
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"introduction.federation.action": "İleri",
"introduction.federation.federated.headline": "Birleşik",
- "introduction.federation.federated.text": "Diğer dosya sunucularından gelen genel yayınlar, birleşik zaman çizelgesinde görünecektir.",
+ "introduction.federation.federated.text": "Diğer dosya sunucularından gelen genel gönderiler, birleşik zaman çizelgesinde görünecektir.",
"introduction.federation.home.headline": "Ana sayfa",
"introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "Yerel",
- "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+ "introduction.federation.local.text": "Aynı sunucudaki kişilerin gönderileri yerel zaman tünelinde gözükecektir.",
"introduction.interactions.action": "Öğreticiyi bitirin!",
"introduction.interactions.favourite.headline": "Favori",
- "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+ "introduction.interactions.favourite.text": "Bir gönderiyi favorilerinize alarak sonrası için saklayabilirsiniz ve yazara gönderiyi beğendiğinizi söyleyebilirsiniz.",
"introduction.interactions.reblog.headline": "Boost",
- "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+ "introduction.interactions.reblog.text": "Başkalarının gönderilerini boostlayarak kendi takipçilerinizle paylaşabillirsiniz.",
"introduction.interactions.reply.headline": "Yanıt",
- "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+ "introduction.interactions.reply.text": "Başkalarının gönderilerini ve kendi gönderilerinizi yanıtlayabilirsiniz. Bir konuşmada zincirli bir şekilde olacaklardır.",
"introduction.welcome.action": "Hadi gidelim!",
"introduction.welcome.headline": "İlk adımlar",
- "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "introduction.welcome.text": "Krallığa hoş geldiniz! Az sonra, geniş bir sunucu yelpazesinde mesaj gönderip arkadaşlarınızla konuşabileceksiniz. Ama bu sunucu, {domain}, özel (profilinizi barındırır, bu yüzden adresini hatırlayın).",
+ "keyboard_shortcuts.back": "geriye gitmek için",
+ "keyboard_shortcuts.blocked": "engelli kullanıcılar listesini açmak için",
+ "keyboard_shortcuts.boost": "boostlamak için",
+ "keyboard_shortcuts.column": "sütunlardan birindeki duruma odaklanmak için",
+ "keyboard_shortcuts.compose": "yazma alanına odaklanmak için",
"keyboard_shortcuts.description": "Açıklama",
- "keyboard_shortcuts.direct": "to open direct messages column",
- "keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.direct": "direkt mesajlar sütununu açmak için",
+ "keyboard_shortcuts.down": "listede aşağıya inmek için",
+ "keyboard_shortcuts.enter": "durumu açmak için",
+ "keyboard_shortcuts.favourite": "favorilere eklemek için",
+ "keyboard_shortcuts.favourites": "favoriler listesini açmak için",
+ "keyboard_shortcuts.federated": "federe edilmiş zaman tünelini açmak için",
"keyboard_shortcuts.heading": "Klavye kısayolları",
- "keyboard_shortcuts.home": "Ana sayfa zaman çizelgesini açmak için",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.local": "to open local timeline",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.requests": "to open follow requests list",
- "keyboard_shortcuts.search": "to focus search",
- "keyboard_shortcuts.start": "to open \"get started\" column",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toot": "to start a brand new toot",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
+ "keyboard_shortcuts.home": "ana sayfa zaman çizelgesini açmak için",
+ "keyboard_shortcuts.hotkey": "Kısatuş",
+ "keyboard_shortcuts.legend": "bu efsaneyi görüntülemek için",
+ "keyboard_shortcuts.local": "yerel zaman tünelini açmak için",
+ "keyboard_shortcuts.mention": "yazardan bahsetmek için",
+ "keyboard_shortcuts.muted": "susturulmuş kullanıcı listesini açmak için",
+ "keyboard_shortcuts.my_profile": "profilinizi açmak için",
+ "keyboard_shortcuts.notifications": "bildirimler sütununu açmak için",
+ "keyboard_shortcuts.pinned": "sabitlenmiş gönderiler listesini açmak için",
+ "keyboard_shortcuts.profile": "yazarın profilini açmak için",
+ "keyboard_shortcuts.reply": "cevaplamak için",
+ "keyboard_shortcuts.requests": "takip istekleri listesini açmak için",
+ "keyboard_shortcuts.search": "aramaya odaklanmak için",
+ "keyboard_shortcuts.start": "\"başlayın\" sütununu açmak için",
+ "keyboard_shortcuts.toggle_hidden": "CW'den önceki yazıyı göstermek/gizlemek için",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+ "keyboard_shortcuts.toot": "yeni bir gönderiye başlamak için",
+ "keyboard_shortcuts.unfocus": "aramada bir gönderiye odaklanmamak için",
+ "keyboard_shortcuts.up": "listede yukarıya çıkmak için",
"lightbox.close": "Kapat",
- "lightbox.next": "Next",
- "lightbox.previous": "Previous",
- "lists.account.add": "Add to list",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Delete list",
- "lists.edit": "Edit list",
- "lists.edit.submit": "Change title",
- "lists.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
+ "lightbox.next": "Sonraki",
+ "lightbox.previous": "Önceli",
+ "lightbox.view_context": "View context",
+ "lists.account.add": "Listeye ekle",
+ "lists.account.remove": "Listeden kaldır",
+ "lists.delete": "Listeyi sil",
+ "lists.edit": "listeyi düzenle",
+ "lists.edit.submit": "Başlığı değiştir",
+ "lists.new.create": "Liste ekle",
+ "lists.new.title_placeholder": "Yeni liste başlığı",
+ "lists.search": "Takip ettiğiniz kişiler arasından arayın",
+ "lists.subheading": "Listeleriniz",
"loading_indicator.label": "Yükleniyor...",
"media_gallery.toggle_visible": "Görünürlüğü değiştir",
"missing_indicator.label": "Bulunamadı",
- "missing_indicator.sublabel": "This resource could not be found",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Mobile apps",
+ "missing_indicator.sublabel": "Bu kaynak bulunamadı",
+ "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?",
+ "navigation_bar.apps": "Mobil uygulamalar",
"navigation_bar.blocks": "Engellenen kullanıcılar",
"navigation_bar.community_timeline": "Yerel zaman tüneli",
- "navigation_bar.compose": "Compose new toot",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Yeni bir gönderi yazın",
+ "navigation_bar.direct": "Direkt Mesajlar",
+ "navigation_bar.discover": "Keşfet",
+ "navigation_bar.domain_blocks": "Gizli alan adları",
"navigation_bar.edit_profile": "Profili düzenle",
"navigation_bar.favourites": "Favoriler",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Susturulmuş kelimeler",
"navigation_bar.follow_requests": "Takip istekleri",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Genişletilmiş bilgi",
- "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
- "navigation_bar.lists": "Lists",
+ "navigation_bar.keyboard_shortcuts": "Klavye kısayolları",
+ "navigation_bar.lists": "Listeler",
"navigation_bar.logout": "Çıkış",
"navigation_bar.mutes": "Sessize alınmış kullanıcılar",
- "navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.personal": "Kişisel",
+ "navigation_bar.pins": "Sabitlenmiş gönderiler",
"navigation_bar.preferences": "Tercihler",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Federe zaman tüneli",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Güvenlik",
"notification.favourite": "{name} senin durumunu favorilere ekledi",
"notification.follow": "{name} seni takip ediyor",
"notification.mention": "{name} mentioned you",
- "notification.poll": "A poll you have voted in has ended",
+ "notification.poll": "Oy verdiğiniz bir anket bitti",
"notification.reblog": "{name} senin durumunu boost etti",
"notifications.clear": "Bildirimleri temizle",
"notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?",
"notifications.column_settings.alert": "Masaüstü bildirimleri",
"notifications.column_settings.favourite": "Favoriler:",
- "notifications.column_settings.filter_bar.advanced": "Display all categories",
- "notifications.column_settings.filter_bar.category": "Quick filter bar",
- "notifications.column_settings.filter_bar.show": "Show",
+ "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri göster",
+ "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu",
+ "notifications.column_settings.filter_bar.show": "Göster",
"notifications.column_settings.follow": "Yeni takipçiler:",
"notifications.column_settings.mention": "Bahsedilenler:",
- "notifications.column_settings.poll": "Poll results:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boost’lar:",
+ "notifications.column_settings.poll": "Anket sonuçları:",
+ "notifications.column_settings.push": "Push bildirimleri",
+ "notifications.column_settings.reblog": "Boostlar:",
"notifications.column_settings.show": "Bildirimlerde göster",
"notifications.column_settings.sound": "Ses çal",
- "notifications.filter.all": "All",
- "notifications.filter.boosts": "Boosts",
- "notifications.filter.favourites": "Favourites",
- "notifications.filter.follows": "Follows",
- "notifications.filter.mentions": "Mentions",
- "notifications.filter.polls": "Poll results",
- "notifications.group": "{count} notifications",
- "poll.closed": "Closed",
- "poll.refresh": "Refresh",
+ "notifications.filter.all": "Tümü",
+ "notifications.filter.boosts": "Boostlar",
+ "notifications.filter.favourites": "Favoriler",
+ "notifications.filter.follows": "Takip edilenler",
+ "notifications.filter.mentions": "Bahsetmeler",
+ "notifications.filter.polls": "Anket sonuçları",
+ "notifications.group": "{count} bildirim",
+ "poll.closed": "Kapandı",
+ "poll.refresh": "Yenile",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
- "poll.vote": "Vote",
- "poll_button.add_poll": "Add a poll",
- "poll_button.remove_poll": "Remove poll",
+ "poll.vote": "Oy ver",
+ "poll_button.add_poll": "Bir anket ekleyin",
+ "poll_button.remove_poll": "Anket kaldır",
"privacy.change": "Gönderi gizliliğini ayarla",
"privacy.direct.long": "Sadece bahsedilen kişilere gönder",
"privacy.direct.short": "Direkt",
@@ -284,100 +290,99 @@
"privacy.public.short": "Herkese açık",
"privacy.unlisted.long": "Herkese açık zaman tüneline gönderme",
"privacy.unlisted.short": "Listelenmemiş",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
+ "regeneration_indicator.label": "Yükleniyor…",
+ "regeneration_indicator.sublabel": "Ev akışınız hazırlanıyor!",
+ "relative_time.days": "{number}g",
+ "relative_time.hours": "{number}s",
+ "relative_time.just_now": "şimdi",
+ "relative_time.minutes": "{number}dk",
+ "relative_time.seconds": "{number}sn",
"reply_indicator.cancel": "İptal",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.forward": "Şu kişiye ilet : {target}",
+ "report.forward_hint": "Bu hesap başka bir sunucudan. Anonimleştirilmiş bir rapor oraya da gönderilsin mi?",
+ "report.hint": "Bu rapor sunucu moderatörlerine gönderilecek. Bu hesabı neden bildirdiğiniz hakkında bilgi verebirsiniz:",
"report.placeholder": "Ek yorumlar",
"report.submit": "Gönder",
"report.target": "Raporlama",
"search.placeholder": "Ara",
- "search_popout.search_format": "Advanced search format",
+ "search_popout.search_format": "Gelişmiş arama formatı",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag",
- "search_popout.tips.status": "status",
+ "search_popout.tips.status": "durum",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
- "search_popout.tips.user": "user",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
+ "search_popout.tips.user": "kullanıcı",
+ "search_results.accounts": "İnsanlar",
+ "search_results.hashtags": "Hashtagler",
+ "search_results.statuses": "Gönderiler",
"search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuçlar}}",
"status.admin_account": "@{name} için denetim arayüzünü açın",
"status.admin_status": "Denetim arayüzünde bu durumu açın",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
+ "status.block": "Engelle : @{name}",
+ "status.cancel_reblog_private": "Boost'u geri al",
"status.cannot_reblog": "Bu gönderi boost edilemez",
"status.copy": "Bağlantı durumunu kopyala",
"status.delete": "Sil",
- "status.detailed_status": "Detailed conversation view",
- "status.direct": "Direct message @{name}",
- "status.embed": "Embed",
+ "status.detailed_status": "Detaylı yazışma dökümü",
+ "status.direct": "@{name}'e gönder",
+ "status.embed": "Gömülü",
"status.favourite": "Favorilere ekle",
- "status.filtered": "Filtered",
+ "status.filtered": "Filtrelenmiş",
"status.load_more": "Daha fazla",
"status.media_hidden": "Gizli görsel",
- "status.mention": "Bahset @{name}",
- "status.more": "More",
- "status.mute": "Mute @{name}",
- "status.mute_conversation": "Mute conversation",
+ "status.mention": "Bahset : @{name}",
+ "status.more": "Daha fazla",
+ "status.mute": "Sustur : @{name}",
+ "status.mute_conversation": "Yazışmayı sustur",
"status.open": "Bu gönderiyi genişlet",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
- "status.read_more": "Read more",
- "status.reblog": "Boost'la",
+ "status.pin": "Profile sabitle",
+ "status.pinned": "Sabitlenmiş gönderi",
+ "status.read_more": "Daha dazla oku",
+ "status.reblog": "Boostla",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boost etti",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.reblogs.empty": "Kimse bu gönderiyi boostlamadı. Biri yaptığında burada gözükecek.",
+ "status.redraft": "Sil & tekrar taslakla",
"status.reply": "Cevapla",
"status.replyAll": "Konuşmayı cevapla",
"status.report": "@{name}'i raporla",
- "status.sensitive_toggle": "Görmek için tıklayınız",
"status.sensitive_warning": "Hassas içerik",
- "status.share": "Share",
- "status.show_less": "Daha azı",
- "status.show_less_all": "Show less for all",
- "status.show_more": "Daha fazlası",
- "status.show_more_all": "Show more for all",
- "status.show_thread": "Show thread",
+ "status.share": "Paylaş",
+ "status.show_less": "Daha az göster",
+ "status.show_less_all": "Hepsi için daha az göster",
+ "status.show_more": "Daha fazla göster",
+ "status.show_more_all": "Hepsi için daha fazla göster",
+ "status.show_thread": "Başlığı göster",
"status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "status.unpin": "Profilden sabitlemeyi kaldır",
+ "suggestions.dismiss": "Öneriyi görmezden gel",
+ "suggestions.header": "Şuna ilgi duyuyor olabilirsiniz…",
"tabs_bar.federated_timeline": "Federe",
"tabs_bar.home": "Ana sayfa",
"tabs_bar.local_timeline": "Yerel",
"tabs_bar.notifications": "Bildirimler",
- "tabs_bar.search": "Search",
+ "tabs_bar.search": "Ara",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
- "upload_area.title": "Upload için sürükle bırak yapınız",
+ "ui.beforeunload": "Mastodon'dan ayrılırsanız taslağınız kaybolacak.",
+ "upload_area.title": "Karşıya yükleme için sürükle bırak yapınız",
"upload_button.label": "Görsel ekle",
"upload_error.limit": "Dosya yükleme sınırı aşıldı.",
- "upload_error.poll": "File upload not allowed with polls.",
+ "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.focus": "Crop",
+ "upload_form.focus": "Kırp",
"upload_form.undo": "Geri al",
"upload_progress.label": "Yükleniyor...",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Play",
- "video.unmute": "Unmute sound"
+ "video.close": "Videoyu kapat",
+ "video.exit_fullscreen": "Tam ekrandan çık",
+ "video.expand": "Videoyu genişlet",
+ "video.fullscreen": "Tam ekran",
+ "video.hide": "Videoyu gizle",
+ "video.mute": "Sesi kıs",
+ "video.pause": "Duraklat",
+ "video.play": "Oynat",
+ "video.unmute": "Sesi aç"
}
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index fc1c4f5d5..8aca4c1e7 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "Дмухнути",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "Медіа відмічене
несприйнятливим",
"compose_form.sensitive.unmarked": "Медіа відмічене сприйнятливим",
"compose_form.spoiler.marked": "Текст приховано за попередженням",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",
"empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "сфокусуватися на пошуку",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "показати/приховати прихований текст",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "почати писати новий дмух",
"keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку",
"keyboard_shortcuts.up": "рухатися вверх списком",
"lightbox.close": "Закрити",
"lightbox.next": "Далі",
"lightbox.previous": "Назад",
+ "lightbox.view_context": "View context",
"lists.account.add": "Додати до списку",
"lists.account.remove": "Видалити зі списку",
"lists.delete": "Видалити список",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "Вподобане",
"navigation_bar.filters": "Приховані слова",
"navigation_bar.follow_requests": "Запити на підписку",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Про сайт",
"navigation_bar.keyboard_shortcuts": "Гарячі клавіши",
"navigation_bar.lists": "Списки",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Особисте",
"navigation_bar.pins": "Закріплені дмухи",
"navigation_bar.preferences": "Налаштування",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "Глобальна стрічка",
"navigation_bar.security": "Безпека",
"notification.favourite": "{name} вподобав(-ла) ваш допис",
@@ -339,7 +345,6 @@
"status.reply": "Відповісти",
"status.replyAll": "Відповісти на тред",
"status.report": "Поскаржитися",
- "status.sensitive_toggle": "Натисніть, щоб подивитися",
"status.sensitive_warning": "Непристойний зміст",
"status.share": "Share",
"status.show_less": "Згорнути",
diff --git a/app/javascript/mastodon/locales/whitelist_hi.json b/app/javascript/mastodon/locales/whitelist_hi.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_hi.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 702be0ded..f6e3d73d3 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "嘟嘟",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "媒体已被标记为敏感内容",
"compose_form.sensitive.unmarked": "媒体未被标记为敏感内容",
"compose_form.spoiler.marked": "正文已被折叠在警告信息之后",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站时间轴暂时没有内容,快嘟几个来抢头香啊!",
"empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "选择搜索框",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "发送新嘟文",
"keyboard_shortcuts.unfocus": "取消输入",
"keyboard_shortcuts.up": "在列表中让光标上移",
"lightbox.close": "关闭",
"lightbox.next": "下一步",
"lightbox.previous": "上一步",
+ "lightbox.view_context": "View context",
"lists.account.add": "添加到列表",
"lists.account.remove": "从列表中删除",
"lists.delete": "删除列表",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "收藏的内容",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "关注请求",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "关于本站",
"navigation_bar.keyboard_shortcuts": "快捷键列表",
"navigation_bar.lists": "列表",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "个人",
"navigation_bar.pins": "置顶嘟文",
"navigation_bar.preferences": "首选项",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "跨站公共时间轴",
"navigation_bar.security": "安全",
"notification.favourite": "{name} 收藏了你的嘟文",
@@ -339,7 +345,6 @@
"status.reply": "回复",
"status.replyAll": "回复所有人",
"status.report": "举报 @{name}",
- "status.sensitive_toggle": "点击显示",
"status.sensitive_warning": "敏感内容",
"status.share": "分享",
"status.show_less": "隐藏内容",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 5ea738bc9..d7303b91b 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.publish": "發文",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "媒體被標示為敏感",
"compose_form.sensitive.unmarked": "媒體沒有被標示為敏感",
"compose_form.spoiler.marked": "文字被警告隱藏",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
"empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "把標示移動到搜索",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "新的推文",
"keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
"keyboard_shortcuts.up": "在列表往上移動",
"lightbox.close": "關閉",
"lightbox.next": "繼續",
"lightbox.previous": "回退",
+ "lightbox.view_context": "View context",
"lists.account.add": "新增到列表",
"lists.account.remove": "從列表刪除",
"lists.delete": "刪除列表",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "最愛的內容",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "關注請求",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "關於本服務站",
"navigation_bar.keyboard_shortcuts": "鍵盤快速鍵",
"navigation_bar.lists": "列表",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "置頂文章",
"navigation_bar.preferences": "偏好設定",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "跨站時間軸",
"navigation_bar.security": "安全",
"notification.favourite": "{name} 收藏了你的文章",
@@ -339,7 +345,6 @@
"status.reply": "回應",
"status.replyAll": "回應所有人",
"status.report": "舉報 @{name}",
- "status.sensitive_toggle": "點擊顯示",
"status.sensitive_warning": "敏感內容",
"status.share": "分享",
"status.show_less": "減少顯示",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 6d33ef070..5715ef01a 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -77,6 +77,7 @@
"compose_form.poll.remove_option": "移除此選擇",
"compose_form.publish": "嘟掉",
"compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.hide": "Mark media as sensitive",
"compose_form.sensitive.marked": "此媒體被標記為敏感內容",
"compose_form.sensitive.unmarked": "此媒體未被標記為敏感內容",
"compose_form.spoiler.marked": "正文已隱藏在警告之後",
@@ -117,6 +118,7 @@
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
"empty_column.account_timeline": "這裡還沒有嘟文!",
+ "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "你還沒有封鎖任何使用者。",
"empty_column.community": "本地時間軸是空的。快公開嘟些文搶頭香啊!",
"empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
@@ -202,12 +204,14 @@
"keyboard_shortcuts.search": "將焦點移至搜尋框",
"keyboard_shortcuts.start": "開啟「開始使用」欄位",
"keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文",
+ "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "開始發出新嘟文",
"keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點",
"keyboard_shortcuts.up": "在名單中往上移動",
"lightbox.close": "關閉",
"lightbox.next": "下一步",
"lightbox.previous": "上一步",
+ "lightbox.view_context": "View context",
"lists.account.add": "新增至名單",
"lists.account.remove": "從名單中移除",
"lists.delete": "刪除名單",
@@ -233,6 +237,7 @@
"navigation_bar.favourites": "最愛內容",
"navigation_bar.filters": "靜音詞彙",
"navigation_bar.follow_requests": "關注請求",
+ "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "關於此伺服器",
"navigation_bar.keyboard_shortcuts": "快速鍵",
"navigation_bar.lists": "名單",
@@ -241,6 +246,7 @@
"navigation_bar.personal": "個人",
"navigation_bar.pins": "釘選的嘟文",
"navigation_bar.preferences": "偏好設定",
+ "navigation_bar.profile_directory": "Profile directory",
"navigation_bar.public_timeline": "聯邦時間軸",
"navigation_bar.security": "安全性",
"notification.favourite": "{name} 把你的嘟文加入了最愛",
@@ -339,7 +345,6 @@
"status.reply": "回覆",
"status.replyAll": "回覆所有人",
"status.report": "檢舉 @{name}",
- "status.sensitive_toggle": "點擊顯示",
"status.sensitive_warning": "敏感內容",
"status.share": "分享",
"status.show_less": "減少顯示",
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index b45def281..29c691144 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -131,13 +131,15 @@ function removeMedia(state, mediaId) {
});
};
-const insertSuggestion = (state, position, token, completion) => {
+const insertSuggestion = (state, position, token, completion, path) => {
return state.withMutations(map => {
- map.update('text', oldText => `${oldText.slice(0, position)}${completion} ${oldText.slice(position + token.length)}`);
+ map.updateIn(path, oldText => `${oldText.slice(0, position)}${completion} ${oldText.slice(position + token.length)}`);
map.set('suggestion_token', null);
- map.update('suggestions', ImmutableList(), list => list.clear());
- map.set('focusDate', new Date());
- map.set('caretPosition', position + completion.length + 1);
+ map.set('suggestions', ImmutableList());
+ if (path.length === 1 && path[0] === 'text') {
+ map.set('focusDate', new Date());
+ map.set('caretPosition', position + completion.length + 1);
+ }
map.set('idempotencyKey', uuid());
});
};
@@ -304,7 +306,7 @@ export default function compose(state = initialState, action) {
case COMPOSE_SUGGESTIONS_READY:
return state.set('suggestions', ImmutableList(action.accounts ? action.accounts.map(item => item.id) : action.emojis)).set('suggestion_token', action.token);
case COMPOSE_SUGGESTION_SELECT:
- return insertSuggestion(state, action.position, action.token, action.completion);
+ return insertSuggestion(state, action.position, action.token, action.completion, action.path);
case COMPOSE_SUGGESTION_TAGS_UPDATE:
return updateSuggestionTags(state, action.token);
case COMPOSE_TAG_HISTORY_UPDATE:
@@ -329,13 +331,14 @@ export default function compose(state = initialState, action) {
}));
case REDRAFT:
return state.withMutations(map => {
- map.set('text', unescapeHTML(expandMentions(action.status)));
+ map.set('text', action.raw_text || unescapeHTML(expandMentions(action.status)));
map.set('in_reply_to', action.status.get('in_reply_to_id'));
map.set('privacy', action.status.get('visibility'));
map.set('media_attachments', action.status.get('media_attachments'));
map.set('focusDate', new Date());
map.set('caretPosition', null);
map.set('idempotencyKey', uuid());
+ map.set('sensitive', action.status.get('sensitive'));
if (action.status.get('spoiler_text').length > 0) {
map.set('spoiler', true);
diff --git a/app/javascript/mastodon/reducers/identity_proofs.js b/app/javascript/mastodon/reducers/identity_proofs.js
new file mode 100644
index 000000000..58af0a5fa
--- /dev/null
+++ b/app/javascript/mastodon/reducers/identity_proofs.js
@@ -0,0 +1,25 @@
+import { Map as ImmutableMap, fromJS } from 'immutable';
+import {
+ IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST,
+ IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS,
+ IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL,
+} from '../actions/identity_proofs';
+
+const initialState = ImmutableMap();
+
+export default function identityProofsReducer(state = initialState, action) {
+ switch(action.type) {
+ case IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST:
+ return state.set('isLoading', true);
+ case IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL:
+ return state.set('isLoading', false);
+ case IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS:
+ return state.update(identity_proofs => identity_proofs.withMutations(map => {
+ map.set('isLoading', false);
+ map.set('loaded', true);
+ map.set(action.accountId, fromJS(action.identity_proofs));
+ }));
+ default:
+ return state;
+ }
+};
diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js
index a7e9c4d0f..981ad8e64 100644
--- a/app/javascript/mastodon/reducers/index.js
+++ b/app/javascript/mastodon/reducers/index.js
@@ -30,6 +30,7 @@ import filters from './filters';
import conversations from './conversations';
import suggestions from './suggestions';
import polls from './polls';
+import identity_proofs from './identity_proofs';
const reducers = {
dropdown_menu,
@@ -56,6 +57,7 @@ const reducers = {
notifications,
height_cache,
custom_emojis,
+ identity_proofs,
lists,
listEditor,
listAdder,
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index c891f4a52..4d9604de9 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -18,7 +18,7 @@ import compareId from '../compare_id';
const initialState = ImmutableMap({
items: ImmutableList(),
hasMore: true,
- top: true,
+ top: false,
unread: 0,
isLoading: false,
});
diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js
index 6a972f967..309a95a19 100644
--- a/app/javascript/mastodon/reducers/timelines.js
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -35,14 +35,12 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
if (!next && !isLoadingRecent) mMap.set('hasMore', false);
- if (!statuses.isEmpty()) {
+ if (timeline.endsWith(':pinned')) {
+ mMap.set('items', statuses.map(status => status.get('id')));
+ } else if (!statuses.isEmpty()) {
mMap.update('items', ImmutableList(), oldIds => {
const newIds = statuses.map(status => status.get('id'));
- if (timeline.indexOf(':pinned') !== -1) {
- return newIds;
- }
-
const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1;
const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0);
diff --git a/app/javascript/mastodon/stream.js b/app/javascript/mastodon/stream.js
index 306a068b7..c4642344f 100644
--- a/app/javascript/mastodon/stream.js
+++ b/app/javascript/mastodon/stream.js
@@ -71,11 +71,7 @@ export function connectStream(path, pollingRefresh = null, callbacks = () => ({
export default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {
const params = [ `stream=${stream}` ];
- if (accessToken !== null) {
- params.push(`access_token=${accessToken}`);
- }
-
- const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`);
+ const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken);
ws.onopen = connected;
ws.onmessage = e => received(JSON.parse(e.data));
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index 4ab27c769..3135636cf 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -126,15 +126,15 @@ function main() {
return false;
});
- delegate(document, '.status__content__spoiler-link', 'click', ({ target }) => {
- const contentEl = target.parentNode.parentNode.querySelector('.e-content');
+ delegate(document, '.status__content__spoiler-link', 'click', function() {
+ const contentEl = this.parentNode.parentNode.querySelector('.e-content');
if (contentEl.style.display === 'block') {
contentEl.style.display = 'none';
- target.parentNode.style.marginBottom = 0;
+ this.parentNode.style.marginBottom = 0;
} else {
contentEl.style.display = 'block';
- target.parentNode.style.marginBottom = null;
+ this.parentNode.style.marginBottom = null;
}
return false;
@@ -173,6 +173,21 @@ function main() {
avatar.src = url;
});
+ const getProfileAvatarAnimationHandler = (swapTo) => {
+ //animate avatar gifs on the profile page when moused over
+ return ({ target }) => {
+ const swapSrc = target.getAttribute(swapTo);
+ //only change the img source if autoplay is off and the image src is actually different
+ if(target.getAttribute('data-autoplay') === 'false' && target.src !== swapSrc) {
+ target.src = swapSrc;
+ }
+ };
+ };
+
+ delegate(document, 'img#profile_page_avatar', 'mouseover', getProfileAvatarAnimationHandler('data-original'));
+
+ delegate(document, 'img#profile_page_avatar', 'mouseout', getProfileAvatarAnimationHandler('data-static'));
+
delegate(document, '#account_header', 'change', ({ target }) => {
const header = document.querySelector('.card .card__img img');
const [file] = target.files || [];
@@ -192,14 +207,20 @@ function main() {
});
delegate(document, '.input-copy input', 'click', ({ target }) => {
+ target.focus();
target.select();
+ target.setSelectionRange(0, target.value.length);
});
delegate(document, '.input-copy button', 'click', ({ target }) => {
const input = target.parentNode.querySelector('.input-copy__wrapper input');
+ const oldReadOnly = input.readonly;
+
+ input.readonly = false;
input.focus();
input.select();
+ input.setSelectionRange(0, input.value.length);
try {
if (document.execCommand('copy')) {
@@ -213,6 +234,8 @@ function main() {
} catch (err) {
console.error(err);
}
+
+ input.readonly = oldReadOnly;
});
}
diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss
index 8429103b8..5a40e7d79 100644
--- a/app/javascript/styles/contrast/diff.scss
+++ b/app/javascript/styles/contrast/diff.scss
@@ -5,7 +5,7 @@
&-description {
input {
&::placeholder {
- opacity: 1.0;
+ opacity: 1;
}
}
}
@@ -67,3 +67,11 @@
text-decoration: none;
}
}
+
+.nothing-here {
+ color: $darker-text-color;
+}
+
+.public-layout .public-account-header__tabs__tabs .counter.active::after {
+ border-bottom: 4px solid $ui-highlight-color;
+}
diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss
index f6cadf029..cfe3b21db 100644
--- a/app/javascript/styles/contrast/variables.scss
+++ b/app/javascript/styles/contrast/variables.scss
@@ -20,5 +20,5 @@ $highlight-text-color: $classic-highlight-color !default;
$action-button-color: #8d9ac2;
$inverted-text-color: $black !default;
-$lighter-text-color: darken($ui-base-color,6%) !default;
+$lighter-text-color: darken($ui-base-color, 6%) !default;
$light-text-color: darken($ui-primary-color, 40%) !default;
diff --git a/app/javascript/styles/fonts/montserrat.scss b/app/javascript/styles/fonts/montserrat.scss
index 206f1865e..8079dc6fc 100644
--- a/app/javascript/styles/fonts/montserrat.scss
+++ b/app/javascript/styles/fonts/montserrat.scss
@@ -10,7 +10,7 @@
@font-face {
font-family: 'mastodon-font-display';
- src: local('Montserrat'),
+ src: local('Montserrat Medium'),
url('../fonts/montserrat/Montserrat-Medium.ttf') format('truetype');
font-weight: 500;
font-style: normal;
diff --git a/app/javascript/styles/fonts/roboto.scss b/app/javascript/styles/fonts/roboto.scss
index 345d9ad50..f9c7c50fe 100644
--- a/app/javascript/styles/fonts/roboto.scss
+++ b/app/javascript/styles/fonts/roboto.scss
@@ -1,6 +1,6 @@
@font-face {
font-family: 'mastodon-font-sans-serif';
- src: local('Roboto'),
+ src: local('Roboto Italic'),
url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'),
url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
@@ -11,7 +11,7 @@
@font-face {
font-family: 'mastodon-font-sans-serif';
- src: local('Roboto'),
+ src: local('Roboto Bold'),
url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'),
url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
@@ -22,7 +22,7 @@
@font-face {
font-family: 'mastodon-font-sans-serif';
- src: local('Roboto'),
+ src: local('Roboto Medium'),
url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'),
url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss
index 74d1df8ed..b4fb1d709 100644
--- a/app/javascript/styles/mailer.scss
+++ b/app/javascript/styles/mailer.scss
@@ -279,6 +279,8 @@ h5 {
}
.hero-with-button {
+ padding-bottom: 16px;
+
h1 {
margin-bottom: 4px;
}
@@ -286,8 +288,6 @@ h5 {
p.lead {
margin-bottom: 32px;
}
-
- padding-bottom: 16px;
}
.header {
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index de03cf1a6..ee8a7d265 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -1,6 +1,10 @@
// Notes!
// Sass color functions, "darken" and "lighten" are automatically replaced.
+html {
+ scrollbar-color: $ui-base-color rgba($ui-base-color, 0.25);
+}
+
// Change the colors of button texts
.button {
color: $white;
@@ -11,18 +15,139 @@
}
// Change default background colors of columns
-.column {
- > .scrollable {
+.column > .scrollable,
+.getting-started,
+.column-inline-form {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+}
+
+.column-back-button,
+.column-header {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-top: 0;
+ }
+
+ &--slim-button {
+ border: 0;
+ top: -49px;
+ right: 1px;
+ }
+}
+
+.column-header__back-button,
+.column-header__button,
+.column-header__button.active,
+.account__header__bar {
+ background: $white;
+}
+
+.column-header__button.active {
+ color: $ui-highlight-color;
+
+ &:hover,
+ &:active,
+ &:focus {
+ color: $ui-highlight-color;
background: $white;
}
}
-.drawer__inner {
+.account__header__bar .avatar .account__avatar {
+ border-color: $white;
+}
+
+.getting-started__footer a {
+ color: $ui-secondary-color;
+ text-decoration: underline;
+}
+
+.column-subheading {
+ background: darken($ui-base-color, 4%);
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+}
+
+.getting-started,
+.scrollable {
+ .column-link {
+ background: $white;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+ &:hover,
+ &:active,
+ &:focus {
+ background: $ui-base-color;
+ }
+ }
+}
+
+.getting-started .navigation-bar {
+ border-top: 1px solid lighten($ui-base-color, 8%);
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-top: 0;
+ }
+}
+
+.compose-form__autosuggest-wrapper,
+.poll__text input[type="text"],
+.compose-form .spoiler-input__input,
+.compose-form__poll-wrapper select,
+.search__input,
+.setting-text,
+.box-widget input[type="text"],
+.box-widget input[type="email"],
+.box-widget input[type="password"],
+.box-widget textarea,
+.statuses-grid .detailed-status {
+ border: 1px solid lighten($ui-base-color, 8%);
+}
+
+.search__input {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-top: 0;
+ border-bottom: 0;
+ }
+}
+
+.list-editor .search .search__input {
+ border-top: 0;
+ border-bottom: 0;
+}
+
+.compose-form__poll-wrapper select {
+ background: $simple-background-color url("data:image/svg+xml;utf8,
") no-repeat right 8px center / auto 16px;
+}
+
+.compose-form__poll-wrapper,
+.compose-form__poll-wrapper .poll__footer {
+ border-top-color: lighten($ui-base-color, 8%);
+}
+
+.notification__filter-bar {
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+}
+
+.compose-form .compose-form__buttons-wrapper {
background: $ui-base-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+}
+
+.drawer__header,
+.drawer__inner {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
}
.drawer__inner__mastodon {
- background: $ui-base-color url('data:image/svg+xml;utf8,
') no-repeat bottom / 100% auto;
+ background: $white url('data:image/svg+xml;utf8,
') no-repeat bottom / 100% auto;
}
// Change the colors used in compose-form
@@ -93,16 +218,16 @@
.detailed-status,
.detailed-status__action-bar {
- background: darken($ui-base-color, 6%);
+ background: $white;
}
// Change the background colors of status__content__spoiler-link
.reply-indicator__content .status__content__spoiler-link,
.status__content .status__content__spoiler-link {
- background: $ui-base-lighter-color;
+ background: $ui-base-color;
&:hover {
- background: lighten($ui-base-lighter-color, 6%);
+ background: lighten($ui-base-color, 4%);
}
}
@@ -112,41 +237,47 @@
background: $ui-base-color;
}
+.privacy-dropdown.active .privacy-dropdown__value.active .icon-button {
+ color: $white;
+}
+
.account-gallery__item a {
background-color: $ui-base-color;
}
// Change the colors used in the dropdown menu
.dropdown-menu {
- background: $ui-base-color;
+ background: $white;
&__arrow {
&.left {
- border-left-color: $ui-base-color;
+ border-left-color: $white;
}
&.top {
- border-top-color: $ui-base-color;
+ border-top-color: $white;
}
&.bottom {
- border-bottom-color: $ui-base-color;
+ border-bottom-color: $white;
}
&.right {
- border-right-color: $ui-base-color;
+ border-right-color: $white;
}
}
&__item {
a {
- background: $ui-base-color;
+ background: $white;
color: $darker-text-color;
}
}
}
// Change the text colors on inverted background
+.privacy-dropdown__option.active,
+.privacy-dropdown__option:hover,
.privacy-dropdown__option.active .privacy-dropdown__option__content,
.privacy-dropdown__option.active .privacy-dropdown__option__content strong,
.privacy-dropdown__option:hover .privacy-dropdown__option__content,
@@ -162,7 +293,7 @@
.actions-modal ul li:not(:empty) a:focus button,
.actions-modal ul li:not(:empty) a:hover,
.actions-modal ul li:not(:empty) a:hover button,
-.admin-wrapper .sidebar ul ul a.selected,
+.admin-wrapper .sidebar ul .simple-navigation-active-leaf a,
.simple_form .block-button,
.simple_form .button,
.simple_form button {
@@ -170,7 +301,7 @@
}
.dropdown-menu__separator {
- border-bottom-color: lighten($ui-base-color, 12%);
+ border-bottom-color: lighten($ui-base-color, 4%);
}
// Change the background colors of modals
@@ -185,6 +316,12 @@
background: $ui-base-color;
}
+.column-header__collapsible-inner {
+ background: darken($ui-base-color, 4%);
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+}
+
.boost-modal__action-bar,
.confirmation-modal__action-bar,
.mute-modal__action-bar,
@@ -230,6 +367,38 @@
.empty-column-indicator,
.error-column {
color: $primary-text-color;
+ background: $white;
+}
+
+.tabs-bar {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-bottom: 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-top: 0;
+ }
+
+ &__link {
+ padding-bottom: 14px;
+ border-bottom-width: 1px;
+ border-bottom-color: lighten($ui-base-color, 8%);
+
+ &:hover,
+ &:active,
+ &:focus {
+ background: $ui-base-color;
+ }
+
+ &.active {
+ &:hover,
+ &:active,
+ &:focus {
+ background: transparent;
+ border-bottom-color: $ui-highlight-color;
+ }
+ }
+ }
}
// Change the default colors used on some parts of the profile pages
@@ -238,7 +407,102 @@
border-bottom-color: lighten($ui-base-color, 8%);
}
+.box-widget,
+.nothing-here,
+.page-header,
+.directory__tag > a,
+.directory__tag > div,
+.landing-page__call-to-action,
+.contact-widget,
+.landing .hero-widget__text,
+.landing-page__information.contact-widget {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-left: 0;
+ border-right: 0;
+ border-top: 0;
+ }
+}
+
+.landing .hero-widget__text {
+ border-top: 0;
+ border-bottom: 0;
+}
+
+.simple_form {
+ input[type=text],
+ input[type=number],
+ input[type=email],
+ input[type=password],
+ textarea {
+ &:hover {
+ border-color: lighten($ui-base-color, 12%);
+ }
+ }
+}
+
+.landing .hero-widget__footer {
+ background: $white;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border: 0;
+ }
+}
+
+.brand__tagline {
+ color: $ui-secondary-color;
+}
+
+.directory__tag > a {
+ &:hover,
+ &:active,
+ &:focus {
+ background: $ui-base-color;
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border: 0;
+ }
+}
+
+.directory__tag.active > a,
+.directory__tag.active > div {
+ border-color: $ui-highlight-color;
+
+ &,
+ h4,
+ h4 small,
+ .fa,
+ .trends__item__current {
+ color: $white;
+ }
+
+ &:hover,
+ &:active,
+ &:focus {
+ background: $ui-highlight-color;
+ }
+}
+
+.batch-table {
+ &__toolbar,
+ &__row,
+ .nothing-here {
+ border-color: lighten($ui-base-color, 8%);
+ }
+}
+
.activity-stream {
+ border: 1px solid lighten($ui-base-color, 8%);
+
+ &--under-tabs {
+ border-top: 0;
+ }
+
.entry {
background: $account-background-color;
@@ -293,6 +557,22 @@
background: rgba($error-red, 0.5);
text-shadow: none;
}
+
+ .recommended {
+ border-color: $ui-highlight-color;
+ color: $ui-highlight-color;
+ background-color: rgba($ui-highlight-color, 0.1);
+ }
+}
+
+.compose-form .compose-form__warning {
+ border-color: $ui-highlight-color;
+ background-color: rgba($ui-highlight-color, 0.1);
+
+ &,
+ a {
+ color: $ui-highlight-color;
+ }
}
.status__content,
@@ -305,20 +585,47 @@
.button.logo-button {
color: $white;
- svg path:first-child {
+ svg {
fill: $white;
}
}
.public-layout {
+ .account__section-headline {
+ border: 1px solid lighten($ui-base-color, 8%);
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-top: 0;
+ }
+ }
+
.header,
.public-account-header,
.public-account-bio {
box-shadow: none;
}
+ .public-account-bio,
+ .hero-widget__text {
+ background: $account-background-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+ }
+
.header {
- background: lighten($ui-base-color, 12%);
+ background: $ui-base-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border: 0;
+ }
+
+ .brand {
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 4%);
+ }
+ }
}
.public-account-header {
@@ -330,17 +637,50 @@
}
}
+ &__bar {
+ &::before {
+ background: $account-background-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+ }
+
+ .avatar img {
+ border-color: $account-background-color;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ background: $account-background-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-top: 0;
+ }
+ }
+
&__tabs {
&__name {
h1,
h1 small {
color: $white;
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ color: $primary-text-color;
+ }
}
}
}
+
+ &__extra {
+ .public-account-bio {
+ border: 0;
+ }
+
+ .public-account-bio .account__header__fields {
+ border-color: lighten($ui-base-color, 8%);
+ }
+ }
}
}
+.notification__filter-bar button.active::after,
.account__section-headline a.active::after {
border-color: transparent transparent $white;
}
@@ -354,6 +694,9 @@
.activity-stream,
.nothing-here,
.directory__tag > a,
-.directory__tag > div {
+.directory__tag > div,
+.card > a,
+.page-header,
+.compose-form .compose-form__warning {
box-shadow: none;
}
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index 9f6d470b1..01748148f 100644
--- a/app/javascript/styles/mastodon-light/variables.scss
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -17,7 +17,7 @@ $ui-base-color: $classic-secondary-color !default;
$ui-base-lighter-color: #b0c0cf;
$ui-primary-color: #9bcbed;
$ui-secondary-color: $classic-base-color !default;
-$ui-highlight-color: #2b5fd9;
+$ui-highlight-color: #2b90d9;
$primary-text-color: $black !default;
$darker-text-color: $classic-base-color !default;
diff --git a/app/javascript/styles/mastodon/_mixins.scss b/app/javascript/styles/mastodon/_mixins.scss
index 08806599e..faaffb30f 100644
--- a/app/javascript/styles/mastodon/_mixins.scss
+++ b/app/javascript/styles/mastodon/_mixins.scss
@@ -1,21 +1,21 @@
-@mixin avatar-radius() {
+@mixin avatar-radius {
border-radius: 4px;
background: transparent no-repeat;
background-position: 50%;
background-clip: padding-box;
}
-@mixin avatar-size($size:48px) {
+@mixin avatar-size($size: 48px) {
width: $size;
height: $size;
background-size: $size $size;
}
-@mixin search-input() {
+@mixin search-input {
outline: 0;
box-sizing: border-box;
width: 100%;
- border: none;
+ border: 0;
box-shadow: none;
font-family: inherit;
background: $ui-base-color;
@@ -42,7 +42,7 @@
}
}
-@mixin search-popout() {
+@mixin search-popout {
background: $simple-background-color;
border-radius: 4px;
padding: 10px 14px;
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index d3b4a5909..61637ce96 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -659,7 +659,8 @@ $small-breakpoint: 960px;
align-items: center;
padding: 50px;
- img {
+ svg {
+ fill: $primary-text-color;
height: 52px;
}
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index f4f458cf4..f95313a25 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -68,6 +68,7 @@
margin: 0;
border-radius: 4px;
background: darken($ui-base-color, 8%);
+ object-fit: cover;
}
}
@@ -196,7 +197,8 @@
}
}
-.account-role {
+.account-role,
+.simple_form .recommended {
display: inline-block;
padding: 4px 6px;
cursor: default;
@@ -292,3 +294,29 @@
.directory__tag .trends__item__current {
width: auto;
}
+
+.pending-account {
+ &__header {
+ color: $darker-text-color;
+
+ a {
+ color: $ui-secondary-color;
+ text-decoration: none;
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: underline;
+ }
+ }
+
+ strong {
+ color: $primary-text-color;
+ font-weight: 700;
+ }
+ }
+
+ &__body {
+ margin-top: 10px;
+ }
+}
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index fd5c08f04..373a10260 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -50,6 +50,7 @@ $content-width: 840px;
color: $darker-text-color;
text-decoration: none;
transition: all 200ms linear;
+ transition-property: color, background-color;
border-radius: 4px 0 0 4px;
i.fa {
@@ -60,6 +61,7 @@ $content-width: 840px;
color: $primary-text-color;
background-color: darken($ui-base-color, 5%);
transition: all 100ms linear;
+ transition-property: color, background-color;
}
&.selected {
@@ -169,7 +171,7 @@ $content-width: 840px;
text-transform: none;
padding-bottom: 0;
margin-bottom: 0;
- border-bottom: none;
+ border-bottom: 0;
}
& > p {
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index 4411ca0b4..b5a77ce94 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -2,7 +2,8 @@
@if type-of($color) == 'color' {
$color: str-slice(ie-hex-str($color), 4);
}
- @return '%23' + unquote($color)
+
+ @return '%23' + unquote($color);
}
body {
@@ -15,7 +16,7 @@ body {
text-rendering: optimizelegibility;
font-feature-settings: "kern";
text-size-adjust: none;
- -webkit-tap-highlight-color: rgba(0,0,0,0);
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-tap-highlight-color: transparent;
&.system-font {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index f63c66d46..1093bf54f 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -46,7 +46,8 @@
}
}
- &:disabled {
+ &:disabled,
+ &.disabled {
background-color: $ui-primary-color;
cursor: default;
}
@@ -127,7 +128,7 @@
display: inline-block;
padding: 0;
color: $action-button-color;
- border: none;
+ border: 0;
background: transparent;
cursor: pointer;
transition: color 100ms ease-in;
@@ -195,7 +196,7 @@
.text-icon-button {
color: $lighter-text-color;
- border: none;
+ border: 0;
background: transparent;
cursor: pointer;
font-weight: 600;
@@ -263,6 +264,41 @@
.compose-form {
padding: 10px;
+ &__sensitive-button {
+ padding: 10px;
+ padding-top: 0;
+
+ font-size: 14px;
+ font-weight: 500;
+
+ &.active {
+ color: $highlight-text-color;
+ }
+
+ input[type=checkbox] {
+ display: none;
+ }
+
+ .checkbox {
+ display: inline-block;
+ position: relative;
+ border: 1px solid $ui-primary-color;
+ box-sizing: border-box;
+ width: 18px;
+ height: 18px;
+ flex: 0 0 auto;
+ margin-right: 10px;
+ top: -1px;
+ border-radius: 4px;
+ vertical-align: middle;
+
+ &.active {
+ border-color: $highlight-text-color;
+ background: $highlight-text-color;
+ }
+ }
+ }
+
.compose-form__warning {
color: $inverted-text-color;
margin-bottom: 10px;
@@ -297,17 +333,19 @@
}
}
+ .emoji-picker-dropdown {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ z-index: 1;
+ }
+
.compose-form__autosuggest-wrapper {
position: relative;
-
- .emoji-picker-dropdown {
- position: absolute;
- right: 5px;
- top: 5px;
- }
}
.autosuggest-textarea,
+ .autosuggest-input,
.spoiler-input {
position: relative;
}
@@ -315,11 +353,12 @@
.spoiler-input {
height: 0;
transform-origin: bottom;
- opacity: 0.0;
+ opacity: 0;
&.spoiler-input--visible {
- height: 47px;
- opacity: 1.0;
+ height: 36px;
+ margin-bottom: 11px;
+ opacity: 1;
}
}
@@ -369,6 +408,20 @@
}
}
+ .autosuggest-textarea__suggestions-wrapper {
+ position: relative;
+ height: 0;
+ }
+
+ .emoji-picker-wrapper {
+ position: relative;
+ height: 0;
+
+ &.emoji-picker-wrapper--hidden {
+ display: none;
+ }
+ }
+
.autosuggest-textarea__suggestions {
box-sizing: border-box;
display: none;
@@ -529,6 +582,7 @@
border-radius: 0 0 4px 4px;
display: flex;
justify-content: space-between;
+ flex: 0 0 auto;
.compose-form__buttons {
display: flex;
@@ -577,6 +631,7 @@
display: flex;
justify-content: flex-end;
min-width: 0;
+ flex: 0 0 auto;
.compose-form__publish-button-wrapper {
overflow: hidden;
@@ -607,6 +662,9 @@
margin-bottom: 10px;
background: $ui-primary-color;
padding: 10px;
+ min-height: 23px;
+ overflow-y: auto;
+ flex: 0 2 auto;
}
.reply-indicator__header {
@@ -673,7 +731,7 @@
white-space: pre-wrap;
&:last-child {
- margin-bottom: 0;
+ margin-bottom: 2px;
}
}
@@ -1135,7 +1193,7 @@
}
.account__avatar {
- @include avatar-radius();
+ @include avatar-radius;
position: relative;
&-inline {
@@ -1145,11 +1203,11 @@
}
&-composite {
- @include avatar-radius();
+ @include avatar-radius;
overflow: hidden;
& > div {
- @include avatar-radius();
+ @include avatar-radius;
float: left;
position: relative;
box-sizing: border-box;
@@ -1165,12 +1223,12 @@ a .account__avatar {
@include avatar-size(48px);
&-base {
- @include avatar-radius();
+ @include avatar-radius;
@include avatar-size(36px);
}
&-overlay {
- @include avatar-radius();
+ @include avatar-radius;
@include avatar-size(24px);
position: absolute;
@@ -1375,6 +1433,15 @@ a.account__display-name {
width: 48px;
}
+.status__expand {
+ width: 68px;
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ cursor: pointer;
+}
+
.muted {
.status__content p,
.status__content a {
@@ -1539,13 +1606,13 @@ a.account__display-name {
.icon-button.close {
position: absolute;
pointer-events: none;
- transform: scale(0.0, 1.0) translate(-100%, 0);
+ transform: scale(0, 1) translate(-100%, 0);
opacity: 0;
}
.compose__action-bar .icon-button {
pointer-events: auto;
- transform: scale(1.0, 1.0) translate(0, 0);
+ transform: scale(1, 1) translate(0, 0);
opacity: 1;
}
}
@@ -1740,15 +1807,42 @@ a.account__display-name {
&.unscrollable {
overflow-x: hidden;
}
-}
-@media screen and (min-width: 360px) {
- .columns-area {
- padding: 10px;
- }
+ &__panels {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ height: 100%;
- .react-swipeable-view-container .columns-area {
- height: calc(100% - 20px) !important;
+ &__pane {
+ height: 100%;
+ overflow: hidden;
+ pointer-events: none;
+ display: flex;
+ justify-content: flex-end;
+
+ &--start {
+ justify-content: flex-start;
+ }
+
+ &__inner {
+ width: 285px;
+ pointer-events: auto;
+ height: 100%;
+ }
+ }
+
+ &__main {
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 600px;
+ display: flex;
+ flex-direction: column;
+
+ @media screen and (min-width: $no-gap-breakpoint) {
+ padding: 0 10px;
+ }
+ }
}
}
@@ -1814,36 +1908,6 @@ a.account__display-name {
overflow: hidden;
}
-@media screen and (min-width: 360px) {
- .tabs-bar {
- margin: 10px;
- margin-bottom: 0;
- }
-
- .getting-started__wrapper,
- .getting-started__trends,
- .search {
- margin-bottom: 10px;
- }
-}
-
-@media screen and (max-width: 630px) {
- .column,
- .drawer {
- width: 100%;
- padding: 0;
- }
-
- .columns-area {
- flex-direction: column;
- }
-
- .search__input,
- .autosuggest-textarea__textarea {
- font-size: 16px;
- }
-}
-
@media screen and (min-width: 631px) {
.columns-area {
padding: 0;
@@ -1874,6 +1938,331 @@ a.account__display-name {
}
}
+.tabs-bar {
+ box-sizing: border-box;
+ display: flex;
+ background: lighten($ui-base-color, 8%);
+ flex: 0 0 auto;
+ overflow-y: auto;
+}
+
+.tabs-bar__link {
+ display: block;
+ flex: 1 1 auto;
+ padding: 15px 10px;
+ padding-bottom: 13px;
+ color: $primary-text-color;
+ text-decoration: none;
+ text-align: center;
+ font-size: 14px;
+ font-weight: 500;
+ border-bottom: 2px solid lighten($ui-base-color, 8%);
+ transition: all 50ms linear;
+ transition-property: border-bottom, background, color;
+
+ .fa {
+ font-weight: 400;
+ font-size: 16px;
+ }
+
+ &.active {
+ border-bottom: 2px solid $highlight-text-color;
+ color: $highlight-text-color;
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ @media screen and (min-width: 631px) {
+ background: lighten($ui-base-color, 14%);
+ border-bottom-color: lighten($ui-base-color, 14%);
+ }
+ }
+
+ span {
+ margin-left: 5px;
+ display: none;
+ }
+}
+
+@media screen and (min-width: 600px) {
+ .tabs-bar__link {
+ span {
+ display: inline;
+ }
+ }
+}
+
+.columns-area--mobile {
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ margin: 0 auto;
+
+ .column,
+ .drawer {
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ }
+
+ .autosuggest-textarea__textarea {
+ font-size: 16px;
+ }
+
+ .search__input {
+ line-height: 18px;
+ font-size: 16px;
+ padding: 15px;
+ padding-right: 30px;
+ }
+
+ .search__icon .fa {
+ top: 15px;
+ }
+
+ @media screen and (min-width: $no-gap-breakpoint) {
+ padding: 10px 0;
+ }
+
+ @media screen and (min-width: 630px) {
+ .detailed-status {
+ padding: 15px;
+
+ .media-gallery,
+ .video-player {
+ margin-top: 15px;
+ }
+ }
+
+ .account__header__bar {
+ padding: 5px 10px;
+ }
+
+ .navigation-bar,
+ .compose-form {
+ padding: 15px;
+ }
+
+ .compose-form .compose-form__publish .compose-form__publish-button-wrapper {
+ padding-top: 15px;
+ }
+
+ .status {
+ padding: 15px 15px 15px (48px + 15px * 2);
+ min-height: 48px + 2px;
+
+ &__avatar {
+ left: 15px;
+ top: 17px;
+ }
+
+ &__content {
+ padding-top: 5px;
+ }
+
+ &__prepend {
+ margin-left: 48px + 15px * 2;
+ padding-top: 15px;
+ }
+
+ &__prepend-icon-wrapper {
+ left: -32px;
+ }
+
+ .media-gallery,
+ &__action-bar,
+ .video-player {
+ margin-top: 10px;
+ }
+ }
+
+ .account {
+ padding: 15px 10px;
+
+ &__header__bio {
+ margin: 0 -10px;
+ }
+ }
+
+ .notification {
+ &__message {
+ margin-left: 48px + 15px * 2;
+ padding-top: 15px;
+ }
+
+ &__favourite-icon-wrapper {
+ left: -32px;
+ }
+
+ .status {
+ padding-top: 8px;
+ }
+
+ .account {
+ padding-top: 8px;
+ }
+
+ .account__avatar-wrapper {
+ margin-left: 17px;
+ margin-right: 15px;
+ }
+ }
+ }
+}
+
+.floating-action-button {
+ position: fixed;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 3.9375rem;
+ height: 3.9375rem;
+ bottom: 1.3125rem;
+ right: 1.3125rem;
+ background: darken($ui-highlight-color, 3%);
+ color: $white;
+ border-radius: 50%;
+ font-size: 21px;
+ line-height: 21px;
+ text-decoration: none;
+ box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4);
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-highlight-color, 7%);
+ }
+}
+
+@media screen and (min-width: $no-gap-breakpoint) {
+ .tabs-bar {
+ margin: 10px auto;
+ margin-bottom: 0;
+ width: 100%;
+ }
+
+ .react-swipeable-view-container .columns-area--mobile {
+ height: calc(100% - 20px) !important;
+ }
+
+ .getting-started__wrapper,
+ .getting-started__trends,
+ .search {
+ margin-bottom: 10px;
+ }
+}
+
+@media screen and (max-width: 600px + (285px * 1) + (10px * 1)) {
+ .columns-area__panels__pane--compositional {
+ display: none;
+ }
+}
+
+@media screen and (min-width: 600px + (285px * 1) + (10px * 1)) {
+ .floating-action-button,
+ .tabs-bar__link.optional {
+ display: none;
+ }
+
+ .search-page .search {
+ display: none;
+ }
+}
+
+@media screen and (max-width: 600px + (285px * 2) + (10px * 2)) {
+ .columns-area__panels__pane--navigational {
+ display: none;
+ }
+}
+
+@media screen and (min-width: 600px + (285px * 2) + (10px * 2)) {
+ .tabs-bar {
+ display: none;
+ }
+}
+
+.icon-with-badge {
+ position: relative;
+
+ &__badge {
+ position: absolute;
+ left: 9px;
+ top: -13px;
+ background: $ui-highlight-color;
+ border: 2px solid lighten($ui-base-color, 8%);
+ padding: 1px 6px;
+ border-radius: 6px;
+ font-size: 10px;
+ font-weight: 500;
+ line-height: 14px;
+ color: $primary-text-color;
+ }
+}
+
+.column-link--transparent .icon-with-badge__badge {
+ border-color: darken($ui-base-color, 8%);
+}
+
+.compose-panel {
+ width: 285px;
+ margin-top: 10px;
+ display: flex;
+ flex-direction: column;
+ height: calc(100% - 10px);
+ overflow-y: hidden;
+
+ .navigation-bar {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ flex: 0 1 48px;
+ min-height: 20px;
+ }
+
+ .flex-spacer {
+ background: transparent;
+ }
+
+ .compose-form {
+ flex: 1;
+ overflow-y: hidden;
+ display: flex;
+ flex-direction: column;
+ min-height: 310px;
+ padding-bottom: 71px;
+ margin-bottom: -71px;
+ }
+
+ .compose-form__autosuggest-wrapper {
+ overflow-y: auto;
+ background-color: $white;
+ border-radius: 4px 4px 0 0;
+ flex: 0 1 auto;
+ }
+
+ .autosuggest-textarea__textarea {
+ overflow-y: hidden;
+ }
+
+ .compose-form__upload-thumbnail {
+ height: 80px;
+ }
+}
+
+.navigation-panel {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ height: calc(100% - 20px);
+ overflow-y: auto;
+
+ hr {
+ border: 0;
+ background: transparent;
+ border-top: 1px solid lighten($ui-base-color, 4%);
+ margin: 10px 0;
+ }
+}
+
.drawer__pager {
box-sizing: border-box;
padding: 0;
@@ -1906,6 +2295,7 @@ a.account__display-name {
background: lighten($ui-base-color, 13%) url('data:image/svg+xml;utf8,
') no-repeat bottom / 100% auto;
flex: 1;
min-height: 47px;
+ display: none;
> img {
display: block;
@@ -1917,6 +2307,10 @@ a.account__display-name {
user-drag: none;
user-select: none;
}
+
+ @media screen and (min-height: 640px) {
+ display: block;
+ }
}
.pseudo-drawer {
@@ -1943,63 +2337,6 @@ a.account__display-name {
}
}
-.tabs-bar {
- display: flex;
- background: lighten($ui-base-color, 8%);
- flex: 0 0 auto;
- overflow-y: auto;
-}
-
-.tabs-bar__link {
- display: block;
- flex: 1 1 auto;
- padding: 15px 10px;
- color: $primary-text-color;
- text-decoration: none;
- text-align: center;
- font-size: 14px;
- font-weight: 500;
- border-bottom: 2px solid lighten($ui-base-color, 8%);
- transition: all 50ms linear;
-
- .fa {
- font-weight: 400;
- font-size: 16px;
- }
-
- &.active {
- border-bottom: 2px solid $highlight-text-color;
- color: $highlight-text-color;
- }
-
- &:hover,
- &:focus,
- &:active {
- @media screen and (min-width: 631px) {
- background: lighten($ui-base-color, 14%);
- }
- }
-
- span {
- margin-left: 5px;
- display: none;
- }
-}
-
-@media screen and (min-width: 600px) {
- .tabs-bar__link {
- span {
- display: inline;
- }
- }
-}
-
-@media screen and (min-width: 631px) {
- .tabs-bar {
- display: none;
- }
-}
-
.scrollable {
overflow-y: scroll;
overflow-x: hidden;
@@ -2126,7 +2463,7 @@ a.account__display-name {
padding: 0;
border-radius: 30px;
background-color: $ui-base-color;
- transition: all 0.2s ease;
+ transition: background-color 0.2s ease;
}
.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
@@ -2179,7 +2516,6 @@ a.account__display-name {
}
.react-toggle-thumb {
- transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
position: absolute;
top: 1px;
left: 1px;
@@ -2190,6 +2526,7 @@ a.account__display-name {
background-color: darken($simple-background-color, 2%);
box-sizing: border-box;
transition: all 0.25s ease;
+ transition-property: border-color, left;
}
.react-toggle--checked .react-toggle-thumb {
@@ -2205,9 +2542,31 @@ a.account__display-name {
padding: 15px;
text-decoration: none;
- &:hover {
+ &:hover,
+ &:focus,
+ &:active {
background: lighten($ui-base-color, 11%);
}
+
+ &:focus {
+ outline: 0;
+ }
+
+ &--transparent {
+ background: transparent;
+ color: $ui-secondary-color;
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: transparent;
+ color: $primary-text-color;
+ }
+
+ &.active {
+ color: $ui-highlight-color;
+ }
+ }
}
.column-link__icon {
@@ -2339,21 +2698,22 @@ a.account__display-name {
}
.setting-text {
- color: $darker-text-color;
- background: transparent;
- border: none;
- border-bottom: 2px solid $ui-primary-color;
- box-sizing: border-box;
display: block;
- font-family: inherit;
- margin-bottom: 10px;
- padding: 7px 0;
+ box-sizing: border-box;
width: 100%;
+ margin: 0;
+ color: $inverted-text-color;
+ background: $simple-background-color;
+ padding: 10px;
+ font-family: inherit;
+ font-size: 14px;
+ resize: vertical;
+ border: 0;
+ outline: 0;
+ border-radius: 4px;
- &:focus,
- &:active {
- color: $primary-text-color;
- border-bottom-color: $highlight-text-color;
+ &:focus {
+ outline: 0;
}
@media screen and (max-width: 600px) {
@@ -2411,7 +2771,7 @@ a.account__display-name {
& > div {
background: rgba($base-shadow-color, 0.6);
- border-radius: 4px;
+ border-radius: 8px;
padding: 12px 9px;
flex: 0 0 auto;
display: flex;
@@ -2422,19 +2782,18 @@ a.account__display-name {
button,
a {
display: inline;
- color: $primary-text-color;
+ color: $secondary-text-color;
background: transparent;
border: 0;
- padding: 0 5px;
+ padding: 0 8px;
text-decoration: none;
- opacity: 0.6;
font-size: 18px;
line-height: 18px;
&:hover,
&:active,
&:focus {
- opacity: 1;
+ color: $primary-text-color;
}
}
@@ -2680,7 +3039,7 @@ a.status-card.compact:hover {
& > button {
margin: 0;
- border: none;
+ border: 0;
padding: 15px 0 15px 15px;
color: inherit;
background: transparent;
@@ -2845,11 +3204,11 @@ a.status-card.compact:hover {
}
.no-reduce-motion .loading-indicator span {
- animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
+ animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
}
.no-reduce-motion .loading-indicator__figure {
- animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
+ animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
}
@keyframes loader-figure {
@@ -2931,15 +3290,49 @@ a.status-card.compact:hover {
}
.spoiler-button {
- display: none;
- left: 4px;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
position: absolute;
- text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
- top: 4px;
z-index: 100;
- &.spoiler-button--visible {
+ &--minified {
display: block;
+ left: 4px;
+ top: 4px;
+ width: auto;
+ height: auto;
+ }
+
+ &--hidden {
+ display: none;
+ }
+
+ &__overlay {
+ display: block;
+ background: transparent;
+ width: 100%;
+ height: 100%;
+ border: 0;
+
+ &__label {
+ display: inline-block;
+ background: rgba($base-overlay-background, 0.5);
+ border-radius: 8px;
+ padding: 8px 12px;
+ color: $primary-text-color;
+ font-weight: 500;
+ font-size: 14px;
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ .spoiler-button__overlay__label {
+ background: rgba($base-overlay-background, 0.8);
+ }
+ }
}
}
@@ -2982,7 +3375,7 @@ a.status-card.compact:hover {
.column-select {
&__control {
- @include search-input();
+ @include search-input;
}
&__placeholder {
@@ -3033,7 +3426,7 @@ a.status-card.compact:hover {
}
&__menu {
- @include search-popout();
+ @include search-popout;
padding: 0;
background: $ui-secondary-color;
}
@@ -3064,15 +3457,19 @@ a.status-card.compact:hover {
.relationship-tag {
color: $primary-text-color;
margin-bottom: 4px;
- opacity: 0.7;
display: block;
vertical-align: top;
- background-color: rgba($base-overlay-background, 0.4);
+ background-color: $base-overlay-background;
text-transform: uppercase;
font-size: 11px;
font-weight: 500;
padding: 4px;
border-radius: 4px;
+ opacity: 0.7;
+
+ &:hover {
+ opacity: 1;
+ }
}
.setting-toggle {
@@ -3106,6 +3503,10 @@ a.status-card.compact:hover {
contain: strict;
}
+ & > span {
+ max-width: 400px;
+ }
+
a {
color: $highlight-text-color;
text-decoration: none;
@@ -3186,7 +3587,7 @@ a.status-card.compact:hover {
.no-reduce-motion .shake-bottom {
transform-origin: 50% 100%;
- animation: shake-bottom 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) 2s 2 both;
+ animation: shake-bottom 0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955) 2s 2 both;
}
.emoji-picker-dropdown__menu {
@@ -3195,6 +3596,7 @@ a.status-card.compact:hover {
box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
border-radius: 4px;
margin-top: 5px;
+ z-index: 2;
.emoji-mart-scroll {
transition: opacity 200ms ease;
@@ -3222,11 +3624,11 @@ a.status-card.compact:hover {
box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
overflow: hidden;
- li {
+ button {
display: block;
cursor: pointer;
border: 0;
- padding: 3px 8px;
+ padding: 4px 8px;
background: transparent;
&:hover,
@@ -3480,10 +3882,13 @@ a.status-card.compact:hover {
}
.search__input {
+ @include search-input;
+
display: block;
- padding: 10px;
+ padding: 15px;
padding-right: 30px;
- @include search-input();
+ line-height: 18px;
+ font-size: 16px;
}
.search__icon {
@@ -3498,12 +3903,13 @@ a.status-card.compact:hover {
.fa {
position: absolute;
- top: 10px;
+ top: 16px;
right: 10px;
z-index: 2;
display: inline-block;
opacity: 0;
transition: all 100ms linear;
+ transition-property: transform, opacity;
font-size: 18px;
width: 18px;
height: 18px;
@@ -3527,7 +3933,7 @@ a.status-card.compact:hover {
}
.fa-times-circle {
- top: 11px;
+ top: 17px;
transform: rotate(0deg);
color: $action-button-color;
cursor: pointer;
@@ -3723,6 +4129,31 @@ a.status-card.compact:hover {
pointer-events: none;
}
+.media-modal__meta {
+ text-align: center;
+ position: absolute;
+ left: 0;
+ bottom: 20px;
+ width: 100%;
+ pointer-events: none;
+
+ &--shifted {
+ bottom: 62px;
+ }
+
+ a {
+ text-decoration: none;
+ font-weight: 500;
+ color: $ui-secondary-color;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ }
+ }
+}
+
.media-modal__page-dot {
display: inline-block;
}
@@ -3956,14 +4387,6 @@ a.status-card.compact:hover {
font-size: 14px;
}
-.confirmation-modal {
- max-width: 85vw;
-
- @media screen and (min-width: 480px) {
- max-width: 380px;
- }
-}
-
.mute-modal {
line-height: 24px;
}
@@ -4073,14 +4496,14 @@ a.status-card.compact:hover {
}
.actions-modal {
+ max-height: 80vh;
+ max-width: 80vw;
+
.status {
overflow-y: auto;
max-height: 300px;
}
- max-height: 80vh;
- max-width: 80vw;
-
.actions-modal__item-label {
font-weight: 500;
}
@@ -4088,6 +4511,11 @@ a.status-card.compact:hover {
ul {
overflow-y: auto;
flex-shrink: 0;
+ max-height: 80vh;
+
+ &.with-status {
+ max-height: calc(80vh - 75px);
+ }
li:empty {
margin: 0;
@@ -4142,6 +4570,10 @@ a.status-card.compact:hover {
color: darken($lighter-text-color, 4%);
}
}
+
+ .confirmation-modal__secondary-button {
+ flex-shrink: 1;
+ }
}
.confirmation-modal__container,
@@ -4194,6 +4626,7 @@ a.status-card.compact:hover {
pointer-events: none;
opacity: 0.9;
transition: opacity 0.1s ease;
+ line-height: 18px;
}
.media-gallery__gifv {
@@ -4285,7 +4718,7 @@ a.status-card.compact:hover {
}
.media-gallery__item {
- border: none;
+ border: 0;
box-sizing: border-box;
display: block;
float: left;
@@ -4306,7 +4739,8 @@ a.status-card.compact:hover {
display: block;
text-decoration: none;
color: $secondary-text-color;
- line-height: 0;
+ position: relative;
+ z-index: 1;
&,
img {
@@ -4319,6 +4753,21 @@ a.status-card.compact:hover {
}
}
+.media-gallery__preview {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 0;
+ background: $base-overlay-background;
+
+ &--hidden {
+ display: none;
+ }
+}
+
.media-gallery__gifv {
height: 100%;
overflow: hidden;
@@ -4614,6 +5063,23 @@ a.status-card.compact:hover {
}
}
+ &__link {
+ padding: 2px 10px;
+
+ a {
+ text-decoration: none;
+ font-size: 14px;
+ font-weight: 500;
+ color: $white;
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: underline;
+ }
+ }
+ }
+
&__seek {
cursor: pointer;
height: 24px;
@@ -4706,54 +5172,18 @@ a.status-card.compact:hover {
.account-gallery__container {
display: flex;
- justify-content: center;
flex-wrap: wrap;
- padding: 2px;
+ padding: 4px 2px;
}
.account-gallery__item {
- flex-grow: 1;
- width: 50%;
- overflow: hidden;
+ border: 0;
+ box-sizing: border-box;
+ display: block;
position: relative;
-
- &::before {
- content: "";
- display: block;
- padding-top: 100%;
- }
-
- a {
- display: block;
- width: calc(100% - 4px);
- height: calc(100% - 4px);
- margin: 2px;
- top: 0;
- left: 0;
- background-color: $base-overlay-background;
- background-size: cover;
- background-position: center;
- position: absolute;
- color: $darker-text-color;
- text-decoration: none;
- border-radius: 4px;
-
- &:hover,
- &:active,
- &:focus {
- outline: 0;
- color: $secondary-text-color;
-
- &::before {
- content: "";
- display: block;
- width: 100%;
- height: 100%;
- background: rgba($base-overlay-background, 0.3);
- border-radius: 4px;
- }
- }
- }
+ border-radius: 4px;
+ overflow: hidden;
+ margin: 2px;
&__icons {
position: absolute;
@@ -4821,7 +5251,7 @@ a.status-card.compact:hover {
}
.search-popout {
- @include search-popout();
+ @include search-popout;
}
noscript {
@@ -4923,14 +5353,14 @@ noscript {
.icon-button.close {
pointer-events: auto;
opacity: 1;
- transform: scale(1.0, 1.0) translate(0, 0);
+ transform: scale(1, 1) translate(0, 0);
bottom: 5px;
}
.compose__action-bar .icon-button {
pointer-events: none;
opacity: 0;
- transform: scale(0.0, 1.0) translate(100%, 0);
+ transform: scale(0, 1) translate(100%, 0);
}
}
}
@@ -4960,7 +5390,7 @@ noscript {
box-sizing: border-box;
display: block;
width: 100%;
- border: none;
+ border: 0;
padding: 10px;
font-family: $font-monospace, monospace;
background: $ui-base-color;
@@ -5035,8 +5465,8 @@ noscript {
}
.column-inline-form {
- padding: 7px 15px;
- padding-right: 5px;
+ padding: 15px;
+ padding-right: 0;
display: flex;
justify-content: flex-start;
align-items: center;
@@ -5047,7 +5477,6 @@ noscript {
input {
width: 100%;
- margin-bottom: 6px;
&:focus {
outline: 0;
@@ -5057,7 +5486,7 @@ noscript {
.icon-button {
flex: 0 0 auto;
- margin: 0 5px;
+ margin: 0 10px;
}
}
@@ -5208,30 +5637,6 @@ noscript {
}
}
-.floating-action-button {
- position: fixed;
- display: flex;
- justify-content: center;
- align-items: center;
- width: 3.9375rem;
- height: 3.9375rem;
- bottom: 1.3125rem;
- right: 1.3125rem;
- background: darken($ui-highlight-color, 3%);
- color: $white;
- border-radius: 50%;
- font-size: 21px;
- line-height: 21px;
- text-decoration: none;
- box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4);
-
- &:hover,
- &:focus,
- &:active {
- background: lighten($ui-highlight-color, 7%);
- }
-}
-
.account__header__content {
color: $darker-text-color;
font-size: 14px;
@@ -5304,6 +5709,7 @@ noscript {
margin-left: -2px;
.account__avatar {
+ background: darken($ui-base-color, 8%);
border: 2px solid lighten($ui-base-color, 4%);
}
}
@@ -5499,3 +5905,49 @@ noscript {
}
}
}
+
+.layout-toggle {
+ display: flex;
+ padding: 5px;
+
+ button {
+ box-sizing: border-box;
+ flex: 0 0 50%;
+ background: transparent;
+ padding: 5px;
+ border: 0;
+ position: relative;
+
+ &:hover,
+ &:focus,
+ &:active {
+ svg path:first-child {
+ fill: lighten($ui-base-color, 16%);
+ }
+ }
+ }
+
+ svg {
+ width: 100%;
+ height: auto;
+
+ path:first-child {
+ fill: lighten($ui-base-color, 12%);
+ }
+
+ path:last-child {
+ fill: darken($ui-base-color, 14%);
+ }
+ }
+
+ &__active {
+ color: $ui-highlight-color;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background: lighten($ui-base-color, 12%);
+ border-radius: 50%;
+ padding: 0.35rem;
+ }
+}
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 2b1d988f2..3564bf07b 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -10,12 +10,10 @@
}
.logo-container {
- margin: 100px auto;
- margin-bottom: 50px;
+ margin: 100px auto 50px;
- @media screen and (max-width: 400px) {
- margin: 30px auto;
- margin-bottom: 20px;
+ @media screen and (max-width: 500px) {
+ margin: 40px auto 0;
}
h1 {
@@ -23,7 +21,8 @@
justify-content: center;
align-items: center;
- img {
+ svg {
+ fill: $primary-text-color;
height: 42px;
margin-right: 10px;
}
@@ -123,7 +122,7 @@
grid-auto-rows: max-content;
.column-0 {
- grid-column: 1/3;
+ grid-column: 1 / 3;
grid-row: 1;
}
@@ -138,7 +137,7 @@
}
.column-3 {
- grid-column: 1/3;
+ grid-column: 1 / 3;
grid-row: 3;
}
@@ -258,12 +257,13 @@
display: block;
padding: 15px;
- img {
+ svg {
display: block;
height: 18px;
width: auto;
position: relative;
bottom: -2px;
+ fill: $primary-text-color;
@media screen and (max-width: $no-gap-breakpoint) {
height: 20px;
@@ -361,10 +361,6 @@
.logo-button {
background-color: $secondary-text-color;
-
- svg path:last-child {
- fill: $secondary-text-color;
- }
}
}
diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss
index d53f41a0b..4bfd66504 100644
--- a/app/javascript/styles/mastodon/emoji_picker.scss
+++ b/app/javascript/styles/mastodon/emoji_picker.scss
@@ -1,16 +1,14 @@
-@import '../../../node_modules/emoji-mart/css/emoji-mart.css';
-
.emoji-mart {
+ font-size: 13px;
+ display: inline-block;
+ color: $inverted-text-color;
+
&,
* {
box-sizing: border-box;
line-height: 1.15;
}
- font-size: 13px;
- display: inline-block;
- color: $inverted-text-color;
-
.emoji-mart-emoji {
padding: 6px;
}
@@ -53,14 +51,6 @@
&:hover {
color: darken($lighter-text-color, 4%);
-
- svg {
- fill: darken($lighter-text-color, 4%);
- }
- }
-
- svg {
- fill: $lighter-text-color;
}
}
@@ -69,19 +59,11 @@
&:hover {
color: darken($highlight-text-color, 4%);
-
- svg {
- fill: darken($highlight-text-color, 4%);
- }
}
.emoji-mart-anchor-bar {
bottom: -1px;
}
-
- svg {
- fill: $highlight-text-color;
- }
}
.emoji-mart-anchor-bar {
@@ -101,6 +83,7 @@
}
svg {
+ fill: currentColor;
max-height: 18px;
}
}
@@ -120,14 +103,15 @@
}
.emoji-mart-search {
- margin: 10px 40px 10px 5px;
+ padding: 10px;
+ padding-right: 45px;
background: $simple-background-color;
input {
font-size: 14px;
font-weight: 400;
padding: 7px 9px;
- font-family: $font-sans-serif;
+ font-family: inherit;
display: block;
width: 100%;
background: rgba($ui-secondary-color, 0.3);
@@ -182,7 +166,6 @@
font-weight: 500;
padding: 5px 6px;
background: $simple-background-color;
- font-family: $font-sans-serif;
}
}
diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss
index 4d75477e0..f74c004e9 100644
--- a/app/javascript/styles/mastodon/footer.scss
+++ b/app/javascript/styles/mastodon/footer.scss
@@ -122,10 +122,7 @@
height: 36px;
width: auto;
margin: 0 auto;
-
- path {
- fill: lighten($ui-base-color, 34%);
- }
+ fill: lighten($ui-base-color, 34%);
}
&:hover,
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 3ea104786..456ee4e0d 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -79,6 +79,12 @@ code {
text-decoration: none;
}
}
+
+ .recommended {
+ position: absolute;
+ margin: 0 4px;
+ margin-top: -2px;
+ }
}
}
@@ -443,6 +449,10 @@ code {
height: 41px;
}
+ h4 {
+ margin-bottom: 15px !important;
+ }
+
.label_input {
&__wrapper {
position: relative;
@@ -533,6 +543,17 @@ code {
color: $error-value-color;
}
+ a {
+ display: inline-block;
+ color: $darker-text-color;
+ text-decoration: none;
+
+ &:hover {
+ color: $primary-text-color;
+ text-decoration: underline;
+ }
+ }
+
p {
margin-bottom: 15px;
}
@@ -542,7 +563,7 @@ code {
box-sizing: border-box;
display: block;
width: 100%;
- border: none;
+ border: 0;
padding: 10px;
font-family: $font-monospace, monospace;
background: $ui-base-color;
@@ -854,13 +875,19 @@ code {
flex: 1;
flex-direction: column;
flex-shrink: 1;
+ max-width: 50%;
&-sep {
+ align-self: center;
flex-grow: 0;
overflow: visible;
position: relative;
z-index: 1;
}
+
+ p {
+ word-break: break-word;
+ }
}
.account__avatar {
@@ -882,12 +909,13 @@ code {
height: 100%;
left: 50%;
position: absolute;
+ top: 0;
width: 1px;
}
}
&__row {
- align-items: center;
+ align-items: flex-start;
display: flex;
flex-direction: row;
}
diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss
index d8bc5473a..12f57b7a9 100644
--- a/app/javascript/styles/mastodon/polls.scss
+++ b/app/javascript/styles/mastodon/polls.scss
@@ -37,14 +37,16 @@
display: none;
}
+ .autossugest-input {
+ flex: 1 1 auto;
+ }
+
input[type=text] {
display: block;
box-sizing: border-box;
- flex: 1 1 auto;
- width: 20px;
+ width: 100%;
font-size: 14px;
color: $inverted-text-color;
- display: block;
outline: 0;
font-family: inherit;
background: $simple-background-color;
@@ -64,6 +66,7 @@
&.editable {
display: flex;
align-items: center;
+ overflow: visible;
}
}
@@ -114,11 +117,14 @@
text-decoration: underline;
font-size: inherit;
- &:hover,
- &:focus,
- &:active {
+ &:hover {
text-decoration: none;
}
+
+ &:active,
+ &:focus {
+ background-color: rgba($dark-text-color, .1);
+ }
}
.button {
diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss
index 940dc8af2..58bc53b14 100644
--- a/app/javascript/styles/mastodon/rtl.scss
+++ b/app/javascript/styles/mastodon/rtl.scss
@@ -43,6 +43,10 @@ body.rtl {
left: 10px;
}
+ .columns-area {
+ direction: rtl;
+ }
+
.column-header__buttons {
left: 0;
right: auto;
@@ -180,7 +184,6 @@ body.rtl {
}
.fa-ul {
- margin-left: 0;
margin-left: 2.14285714em;
}
diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss
index d8bd30377..19ce0ab8f 100644
--- a/app/javascript/styles/mastodon/stream_entries.scss
+++ b/app/javascript/styles/mastodon/stream_entries.scss
@@ -4,6 +4,10 @@
overflow: hidden;
margin-bottom: 10px;
+ &--under-tabs {
+ border-radius: 0 0 4px 4px;
+ }
+
@media screen and (max-width: $no-gap-breakpoint) {
margin-bottom: 0;
border-radius: 0;
@@ -89,23 +93,21 @@
height: auto;
vertical-align: middle;
margin-right: 5px;
-
- path:first-child {
- fill: $primary-text-color;
- }
-
- path:last-child {
- fill: $ui-highlight-color;
- }
+ fill: $primary-text-color;
}
&:active,
&:focus,
&:hover {
background: lighten($ui-highlight-color, 10%);
+ }
- svg path:last-child {
- fill: lighten($ui-highlight-color, 10%);
+ &:disabled,
+ &.disabled {
+ &:active,
+ &:focus,
+ &:hover {
+ background: $ui-primary-color;
}
}
@@ -114,10 +116,6 @@
&:focus,
&:hover {
background: $error-red;
-
- svg path:last-child {
- fill: $error-red;
- }
}
}
diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss
index 645192ea4..acaf5b024 100644
--- a/app/javascript/styles/mastodon/widgets.scss
+++ b/app/javascript/styles/mastodon/widgets.scss
@@ -4,7 +4,6 @@
&__img {
width: 100%;
- height: 167px;
position: relative;
overflow: hidden;
border-radius: 4px 4px 0 0;
@@ -352,6 +351,7 @@
border-radius: 50%;
position: relative;
margin-left: -10px;
+ background: darken($ui-base-color, 8%);
border: 2px solid $ui-base-color;
&:nth-child(1) {
@@ -376,6 +376,10 @@
border: 0;
}
+ strong {
+ font-weight: 700;
+ }
+
thead th {
text-align: center;
text-transform: uppercase;
@@ -413,6 +417,11 @@
}
}
+ &__comment {
+ width: 50%;
+ vertical-align: initial !important;
+ }
+
@media screen and (max-width: $no-gap-breakpoint) {
tbody td.optional {
display: none;
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 54b175613..66b5763a9 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -143,7 +143,7 @@ class ActivityPub::Activity
# If the boosted toot is embedded and it is a self-boost, handle it like a Create
unless unsupported_object_type?
- actor_id = value_or_id(first_of_value(@object['attributedTo'])) || @account.uri
+ actor_id = value_or_id(first_of_value(@object['attributedTo']))
if actor_id == @account.uri
return ActivityPub::Activity.factory({ 'type' => 'Create', 'actor' => actor_id, 'object' => @object }, @account).perform
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index dabdcbcf7..f55dd35b2 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -194,7 +194,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
next if attachment['url'].blank?
href = Addressable::URI.parse(attachment['url']).normalize.to_s
- media_attachment = MediaAttachment.create(account: @account, remote_url: href, description: attachment['name'].presence, focus: attachment['focalPoint'])
+ media_attachment = MediaAttachment.create(account: @account, remote_url: href, description: attachment['name'].presence, focus: attachment['focalPoint'], blurhash: supported_blurhash?(attachment['blurhash']) ? attachment['blurhash'] : nil)
media_attachments << media_attachment
next if unsupported_media_type?(attachment['mediaType']) || skip_download?
@@ -234,7 +234,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
@account.polls.new(
multiple: multiple,
expires_at: expires_at,
- options: items.map { |item| item['name'].presence || item['content'] },
+ options: items.map { |item| item['name'].presence || item['content'] }.compact,
cached_tallies: items.map { |item| item.dig('replies', 'totalItems') || 0 }
)
end
@@ -267,7 +267,11 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def conversation_from_uri(uri)
return nil if uri.nil?
return Conversation.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if OStatus::TagManager.instance.local_id?(uri)
- Conversation.find_by(uri: uri) || Conversation.create(uri: uri)
+ begin
+ Conversation.find_or_create_by!(uri: uri)
+ rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique
+ retry
+ end
end
def visibility_from_audience
@@ -369,6 +373,11 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
mime_type.present? && !(MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES).include?(mime_type)
end
+ def supported_blurhash?(blurhash)
+ components = blurhash.blank? ? nil : Blurhash.components(blurhash)
+ components.present? && components.none? { |comp| comp > 5 }
+ end
+
def skip_download?
return @skip_download if defined?(@skip_download)
@skip_download ||= DomainBlock.find_by(domain: @account.domain)&.reject_media?
diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb
index 4236af071..0eb14b89c 100644
--- a/app/lib/activitypub/activity/delete.rb
+++ b/app/lib/activitypub/activity/delete.rb
@@ -45,7 +45,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
rebloggers_ids = @status.reblogs.includes(:account).references(:account).merge(Account.local).pluck(:account_id)
inboxes = Account.where(id: ::Follow.where(target_account_id: rebloggers_ids).select(:account_id)).inboxes - [@account.preferred_inbox_url]
- ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
+ ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
[payload, rebloggers_ids.first, inbox_url]
end
end
@@ -61,7 +61,12 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
def forward_for_reply
return unless @json['signature'].present? && reply_to_local?
- ActivityPub::RawDistributionWorker.perform_async(Oj.dump(@json), replied_to_status.account_id, [@account.preferred_inbox_url])
+
+ inboxes = replied_to_status.account.followers.inboxes - [@account.preferred_inbox_url]
+
+ ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
+ [payload, replied_to_status.account_id, inbox_url]
+ end
end
def delete_now!
diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb
index 1e805c0d1..3eb88339a 100644
--- a/app/lib/activitypub/activity/follow.rb
+++ b/app/lib/activitypub/activity/follow.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class ActivityPub::Activity::Follow < ActivityPub::Activity
+ include Payloadable
+
def perform
target_account = account_from_uri(object_uri)
@@ -28,7 +30,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
end
def reject_follow_request!(target_account)
- json = ActiveModelSerializers::SerializableResource.new(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), serializer: ActivityPub::RejectFollowSerializer, adapter: ActivityPub::Adapter).to_json
+ json = Oj.dump(serialize_payload(FollowRequest.new(account: @account, target_account: target_account, uri: @json['id']), ActivityPub::RejectFollowSerializer))
ActivityPub::DeliveryWorker.perform_async(json, target_account.id, @account.inbox_url)
end
end
diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb
index 7e0b16c25..c259c96f4 100644
--- a/app/lib/activitypub/adapter.rb
+++ b/app/lib/activitypub/adapter.rb
@@ -18,6 +18,8 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
atom_uri: { 'ostatus' => 'http://ostatus.org#', 'atomUri' => 'ostatus:atomUri' },
conversation: { 'ostatus' => 'http://ostatus.org#', 'inReplyToAtomUri' => 'ostatus:inReplyToAtomUri', 'conversation' => 'ostatus:conversation' },
focal_point: { 'toot' => 'http://joinmastodon.org/ns#', 'focalPoint' => { '@container' => '@list', '@id' => 'toot:focalPoint' } },
+ identity_proof: { 'toot' => 'http://joinmastodon.org/ns#', 'IdentityProof' => 'toot:IdentityProof' },
+ blurhash: { 'toot' => 'http://joinmastodon.org/ns#', 'blurhash' => 'toot:blurhash' },
}.freeze
def self.default_key_transform
diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb
index 892bb9974..595291342 100644
--- a/app/lib/activitypub/tag_manager.rb
+++ b/app/lib/activitypub/tag_manager.rb
@@ -65,7 +65,14 @@ class ActivityPub::TagManager
when 'unlisted', 'private'
[account_followers_url(status.account)]
when 'direct', 'limited'
- status.active_mentions.map { |mention| uri_for(mention.account) }
+ if status.account.silenced?
+ # Only notify followers if the account is locally silenced
+ account_ids = status.active_mentions.pluck(:account_id)
+ to = status.account.followers.where(id: account_ids).map { |account| uri_for(account) }
+ to.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).map { |request| uri_for(request.account) })
+ else
+ status.active_mentions.map { |mention| uri_for(mention.account) }
+ end
end
end
@@ -86,7 +93,16 @@ class ActivityPub::TagManager
cc << COLLECTIONS[:public]
end
- cc.concat(status.active_mentions.map { |mention| uri_for(mention.account) }) unless status.direct_visibility? || status.limited_visibility?
+ unless status.direct_visibility? || status.limited_visibility?
+ if status.account.silenced?
+ # Only notify followers if the account is locally silenced
+ account_ids = status.active_mentions.pluck(:account_id)
+ cc.concat(status.account.followers.where(id: account_ids).map { |account| uri_for(account) })
+ cc.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).map { |request| uri_for(request.account) })
+ else
+ cc.concat(status.active_mentions.map { |mention| uri_for(mention.account) })
+ end
+ end
cc
end
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 59dfc9004..8a1aad41a 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -187,7 +187,7 @@ class Formatter
end
def rewrite(text, entities)
- chars = text.to_s.to_char_a
+ text = text.to_s
# Sort by start index
entities = entities.sort_by do |entity|
@@ -199,12 +199,12 @@ class Formatter
last_index = entities.reduce(0) do |index, entity|
indices = entity.respond_to?(:indices) ? entity.indices : entity[:indices]
- result << encode(chars[index...indices.first].join)
+ result << encode(text[index...indices.first])
result << yield(entity)
indices.last
end
- result << encode(chars[last_index..-1].join)
+ result << encode(text[last_index..-1])
result.flatten.join
end
@@ -231,23 +231,14 @@ class Formatter
# Note: I couldn't obtain list_slug with @user/list-name format
# for mention so this requires additional check
special = Extractor.extract_urls_with_indices(escaped, options).map do |extract|
- # exactly one of :url, :hashtag, :screen_name, :cashtag keys is present
- key = (extract.keys & [:url, :hashtag, :screen_name, :cashtag]).first
-
new_indices = [
old_to_new_index.find_index(extract[:indices].first),
old_to_new_index.find_index(extract[:indices].last),
]
- has_prefix_char = [:hashtag, :screen_name, :cashtag].include?(key)
- value_indices = [
- new_indices.first + (has_prefix_char ? 1 : 0), # account for #, @ or $
- new_indices.last - 1,
- ]
-
next extract.merge(
- :indices => new_indices,
- key => text[value_indices.first..value_indices.last]
+ indices: new_indices,
+ url: text[new_indices.first..new_indices.last - 1]
)
end
diff --git a/app/lib/proof_provider/keybase.rb b/app/lib/proof_provider/keybase.rb
index 96322a265..8e51d7146 100644
--- a/app/lib/proof_provider/keybase.rb
+++ b/app/lib/proof_provider/keybase.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
class ProofProvider::Keybase
- BASE_URL = 'https://keybase.io'
+ BASE_URL = ENV.fetch('KEYBASE_BASE_URL', 'https://keybase.io')
+ DOMAIN = ENV.fetch('KEYBASE_DOMAIN', Rails.configuration.x.web_domain)
class Error < StandardError; end
@@ -27,7 +28,8 @@ class ProofProvider::Keybase
return
end
- return if @proof.provider_username.blank?
+ # Do not perform synchronous validation for remote accounts
+ return if @proof.provider_username.blank? || !@proof.account.local?
if verifier.valid?
@proof.verified = true
@@ -48,12 +50,20 @@ class ProofProvider::Keybase
end
def badge
- @badge ||= ProofProvider::Keybase::Badge.new(@proof.account.username, @proof.provider_username, @proof.token)
+ @badge ||= ProofProvider::Keybase::Badge.new(@proof.account.username, @proof.provider_username, @proof.token, domain)
+ end
+
+ def verifier
+ @verifier ||= ProofProvider::Keybase::Verifier.new(@proof.account.username, @proof.provider_username, @proof.token, domain)
end
private
- def verifier
- @verifier ||= ProofProvider::Keybase::Verifier.new(@proof.account.username, @proof.provider_username, @proof.token)
+ def domain
+ if @proof.account.local?
+ DOMAIN
+ else
+ @proof.account.domain
+ end
end
end
diff --git a/app/lib/proof_provider/keybase/badge.rb b/app/lib/proof_provider/keybase/badge.rb
index 3aa067ecf..f587b1cc7 100644
--- a/app/lib/proof_provider/keybase/badge.rb
+++ b/app/lib/proof_provider/keybase/badge.rb
@@ -3,10 +3,11 @@
class ProofProvider::Keybase::Badge
include RoutingHelper
- def initialize(local_username, provider_username, token)
+ def initialize(local_username, provider_username, token, domain)
@local_username = local_username
@provider_username = provider_username
@token = token
+ @domain = domain
end
def proof_url
@@ -18,7 +19,7 @@ class ProofProvider::Keybase::Badge
end
def icon_url
- "#{ProofProvider::Keybase::BASE_URL}/#{@provider_username}/proof_badge/#{@token}?username=#{@local_username}&domain=#{domain}"
+ "#{ProofProvider::Keybase::BASE_URL}/#{@provider_username}/proof_badge/#{@token}?username=#{@local_username}&domain=#{@domain}"
end
def avatar_url
@@ -41,8 +42,4 @@ class ProofProvider::Keybase::Badge
def default_avatar_url
asset_pack_path('media/images/proof_providers/keybase.png')
end
-
- def domain
- Rails.configuration.x.local_domain
- end
end
diff --git a/app/lib/proof_provider/keybase/config_serializer.rb b/app/lib/proof_provider/keybase/config_serializer.rb
index 557bafe84..2840f1823 100644
--- a/app/lib/proof_provider/keybase/config_serializer.rb
+++ b/app/lib/proof_provider/keybase/config_serializer.rb
@@ -14,7 +14,7 @@ class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer
end
def domain
- Rails.configuration.x.local_domain
+ ProofProvider::Keybase::DOMAIN
end
def display_name
@@ -34,7 +34,7 @@ class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer
end
def username
- { min: 1, max: 30, re: '[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?' }
+ { min: 1, max: 30, re: '[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?' }
end
def prefill_url
@@ -66,6 +66,6 @@ class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer
end
def contact
- [Setting.site_contact_email.presence].compact
+ [Setting.site_contact_email.presence || 'unknown'].compact
end
end
diff --git a/app/lib/proof_provider/keybase/verifier.rb b/app/lib/proof_provider/keybase/verifier.rb
index 86f249dd7..af69b1bfc 100644
--- a/app/lib/proof_provider/keybase/verifier.rb
+++ b/app/lib/proof_provider/keybase/verifier.rb
@@ -1,10 +1,11 @@
# frozen_string_literal: true
class ProofProvider::Keybase::Verifier
- def initialize(local_username, provider_username, token)
+ def initialize(local_username, provider_username, token, domain)
@local_username = local_username
@provider_username = provider_username
@token = token
+ @domain = domain
end
def valid?
@@ -49,14 +50,10 @@ class ProofProvider::Keybase::Verifier
def query_params
{
- domain: domain,
+ domain: @domain,
kb_username: @provider_username,
username: @local_username,
sig_hash: @token,
}
end
-
- def domain
- Rails.configuration.x.local_domain
- end
end
diff --git a/app/lib/proof_provider/keybase/worker.rb b/app/lib/proof_provider/keybase/worker.rb
index 2872f59c1..bcdd18cc5 100644
--- a/app/lib/proof_provider/keybase/worker.rb
+++ b/app/lib/proof_provider/keybase/worker.rb
@@ -19,9 +19,8 @@ class ProofProvider::Keybase::Worker
end
def perform(proof_id)
- proof = proof_id.is_a?(AccountIdentityProof) ? proof_id : AccountIdentityProof.find(proof_id)
- verifier = ProofProvider::Keybase::Verifier.new(proof.account.username, proof.provider_username, proof.token)
- status = verifier.status
+ proof = proof_id.is_a?(AccountIdentityProof) ? proof_id : AccountIdentityProof.find(proof_id)
+ status = proof.provider_instance.verifier.status
# If Keybase thinks the proof is valid, and it exists here in Mastodon,
# then it should be live. Keybase just has to notice that it's here
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
index daeb3d936..bf2e5a962 100644
--- a/app/lib/user_settings_decorator.rb
+++ b/app/lib/user_settings_decorator.rb
@@ -33,6 +33,7 @@ class UserSettingsDecorator
user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network')
user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
user.settings['show_application'] = show_application_preference if change?('setting_show_application')
+ user.settings['advanced_layout'] = advanced_layout_preference if change?('setting_advanced_layout')
end
def merged_notification_emails
@@ -107,6 +108,10 @@ class UserSettingsDecorator
boolean_cast_setting 'setting_aggregate_reblogs'
end
+ def advanced_layout_preference
+ boolean_cast_setting 'setting_advanced_layout'
+ end
+
def boolean_cast_setting(key)
ActiveModel::Type::Boolean.new.cast(settings[key])
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 51e01246e..c977f887c 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -28,8 +28,6 @@
# header_updated_at :datetime
# avatar_remote_url :string
# subscription_expires_at :datetime
-# silenced :boolean default(FALSE), not null
-# suspended :boolean default(FALSE), not null
# locked :boolean default(FALSE), not null
# header_remote_url :string default(""), not null
# last_webfingered_at :datetime
@@ -45,6 +43,8 @@
# actor_type :string
# discoverable :boolean
# also_known_as :string is an Array
+# silenced_at :datetime
+# suspended_at :datetime
#
class Account < ApplicationRecord
@@ -75,17 +75,17 @@ class Account < ApplicationRecord
validates_with UniqueUsernameValidator, if: -> { local? && will_save_change_to_username? }
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? }
validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? }
- validates :note, note_length: { maximum: 160 }, if: -> { local? && will_save_change_to_note? }
+ validates :note, note_length: { maximum: 500 }, if: -> { local? && will_save_change_to_note? }
validates :fields, length: { maximum: 4 }, if: -> { local? && will_save_change_to_fields? }
scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
scope :expiring, ->(time) { remote.where.not(subscription_expires_at: nil).where('subscription_expires_at < ?', time) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
- scope :silenced, -> { where(silenced: true) }
- scope :suspended, -> { where(suspended: true) }
- scope :without_suspended, -> { where(suspended: false) }
- scope :without_silenced, -> { where(silenced: false) }
+ scope :silenced, -> { where.not(silenced_at: nil) }
+ scope :suspended, -> { where.not(suspended_at: nil) }
+ scope :without_suspended, -> { where(suspended_at: nil) }
+ scope :without_silenced, -> { where(silenced_at: nil) }
scope :recent, -> { reorder(id: :desc) }
scope :bots, -> { where(actor_type: %w(Application Service)) }
scope :alphabetic, -> { order(domain: :asc, username: :asc) }
@@ -165,25 +165,35 @@ class Account < ApplicationRecord
ResolveAccountService.new.call(acct)
end
- def silence!
- update!(silenced: true)
+ def silenced?
+ silenced_at.present?
+ end
+
+ def silence!(date = nil)
+ date ||= Time.now.utc
+ update!(silenced_at: date)
end
def unsilence!
- update!(silenced: false)
+ update!(silenced_at: nil)
end
- def suspend!
+ def suspended?
+ suspended_at.present?
+ end
+
+ def suspend!(date = nil)
+ date ||= Time.now.utc
transaction do
user&.disable! if local?
- update!(suspended: true)
+ update!(suspended_at: date)
end
end
def unsuspend!
transaction do
user&.enable! if local?
- update!(suspended: false)
+ update!(suspended_at: nil)
end
end
@@ -194,6 +204,10 @@ class Account < ApplicationRecord
end
end
+ def sign?
+ true
+ end
+
def keypair
@keypair ||= OpenSSL::PKey::RSA.new(private_key || public_key)
end
@@ -399,7 +413,7 @@ class Account < ApplicationRecord
ts_rank_cd(#{textsearch}, #{query}, 32) AS rank
FROM accounts
WHERE #{query} @@ #{textsearch}
- AND accounts.suspended = false
+ AND accounts.suspended_at IS NULL
AND accounts.moved_to_account_id IS NULL
ORDER BY rank DESC
LIMIT ? OFFSET ?
@@ -427,7 +441,7 @@ class Account < ApplicationRecord
LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?) OR (accounts.id = f.target_account_id AND f.account_id = ?)
WHERE accounts.id IN (SELECT * FROM first_degree)
AND #{query} @@ #{textsearch}
- AND accounts.suspended = false
+ AND accounts.suspended_at IS NULL
AND accounts.moved_to_account_id IS NULL
GROUP BY accounts.id
ORDER BY rank DESC
@@ -443,7 +457,7 @@ class Account < ApplicationRecord
FROM accounts
LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?) OR (accounts.id = f.target_account_id AND f.account_id = ?)
WHERE #{query} @@ #{textsearch}
- AND accounts.suspended = false
+ AND accounts.suspended_at IS NULL
AND accounts.moved_to_account_id IS NULL
GROUP BY accounts.id
ORDER BY rank DESC
diff --git a/app/models/account_identity_proof.rb b/app/models/account_identity_proof.rb
index e7a3f97e5..10b66cccf 100644
--- a/app/models/account_identity_proof.rb
+++ b/app/models/account_identity_proof.rb
@@ -18,7 +18,7 @@ class AccountIdentityProof < ApplicationRecord
belongs_to :account
validates :provider, inclusion: { in: ProofProvider::SUPPORTED_PROVIDERS }
- validates :provider_username, format: { with: /\A[a-z0-9_]+\z/i }, length: { minimum: 2, maximum: 15 }
+ validates :provider_username, format: { with: /\A[a-z0-9_]+\z/i }, length: { minimum: 2, maximum: 30 }
validates :provider_username, uniqueness: { scope: [:account_id, :provider] }
validates :token, format: { with: /\A[a-f0-9]+\z/ }, length: { maximum: 66 }
@@ -26,16 +26,16 @@ class AccountIdentityProof < ApplicationRecord
scope :active, -> { where(verified: true, live: true) }
- after_create_commit :queue_worker
+ after_commit :queue_worker, if: :saved_change_to_token?
delegate :refresh!, :on_success_path, :badge, to: :provider_instance
- private
-
def provider_instance
@provider_instance ||= ProofProvider.find(provider, self)
end
+ private
+
def queue_worker
provider_instance.worker_class.perform_async(id)
end
diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb
index 7e3bbde09..ccd7bfa12 100644
--- a/app/models/concerns/account_finder_concern.rb
+++ b/app/models/concerns/account_finder_concern.rb
@@ -13,7 +13,7 @@ module AccountFinderConcern
end
def representative
- find_local(Setting.site_contact_username.gsub(/\A@/, '')) || Account.local.find_by(suspended: false)
+ find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) || Account.local.without_suspended.first
end
def find_local(username)
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb
index e1b5e3832..84ff84c4b 100644
--- a/app/models/concerns/ldap_authenticable.rb
+++ b/app/models/concerns/ldap_authenticable.rb
@@ -6,6 +6,7 @@ module LdapAuthenticable
def ldap_setup(_attributes)
self.confirmed_at = Time.now.utc
self.admin = false
+ self.external = true
save!
end
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 1b28b8162..283033083 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -66,6 +66,7 @@ module Omniauthable
email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
password: Devise.friendly_token[0, 20],
agreement: true,
+ external: true,
account_attributes: {
username: ensure_unique_username(auth.uid),
display_name: display_name,
diff --git a/app/models/concerns/pam_authenticable.rb b/app/models/concerns/pam_authenticable.rb
index 2f651c1a3..6169d4dfa 100644
--- a/app/models/concerns/pam_authenticable.rb
+++ b/app/models/concerns/pam_authenticable.rb
@@ -34,6 +34,7 @@ module PamAuthenticable
self.confirmed_at = Time.now.utc
self.admin = false
self.account = account
+ self.external = true
account.destroy! unless save
end
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index 069cda367..84c08c158 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -17,8 +17,6 @@ class DomainBlock < ApplicationRecord
enum severity: [:silence, :suspend, :noop]
- attr_accessor :retroactive
-
validates :domain, presence: true, uniqueness: true
has_many :accounts, foreign_key: :domain, primary_key: :domain
@@ -29,4 +27,16 @@ class DomainBlock < ApplicationRecord
def self.blocked?(domain)
where(domain: domain, severity: :suspend).exists?
end
+
+ def stricter_than?(other_block)
+ return true if suspend?
+ return false if other_block.suspend? && (silence? || noop?)
+ return false if other_block.silence? && noop?
+ (reject_media || !other_block.reject_media) && (reject_reports || !other_block.reject_reports)
+ end
+
+ def affected_accounts_count
+ scope = suspend? ? accounts.where(suspended_at: created_at) : accounts.where(silenced_at: created_at)
+ scope.count
+ end
end
diff --git a/app/models/export.rb b/app/models/export.rb
index 9bf866d35..cab01f11a 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -14,11 +14,19 @@ class Export
end
def to_muted_accounts_csv
- to_csv account.muting.select(:username, :domain)
+ CSV.generate(headers: ['Account address', 'Hide notifications'], write_headers: true) do |csv|
+ account.mute_relationships.includes(:target_account).reorder(id: :desc).each do |mute|
+ csv << [acct(mute.target_account), mute.hide_notifications]
+ end
+ end
end
def to_following_accounts_csv
- to_csv account.following.select(:username, :domain)
+ CSV.generate(headers: ['Account address', 'Show boosts'], write_headers: true) do |csv|
+ account.active_relationships.includes(:target_account).reorder(id: :desc).each do |follow|
+ csv << [acct(follow.target_account), follow.show_reblogs]
+ end
+ end
end
def to_lists_csv
diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb
index 60eaaf0e2..f1b7a4566 100644
--- a/app/models/form/account_batch.rb
+++ b/app/models/form/account_batch.rb
@@ -2,6 +2,8 @@
class Form::AccountBatch
include ActiveModel::Model
+ include Authorization
+ include Payloadable
attr_accessor :account_ids, :action, :current_account
@@ -13,6 +15,10 @@ class Form::AccountBatch
remove_from_followers!
when 'block_domains'
block_domains!
+ when 'approve'
+ approve!
+ when 'reject'
+ reject!
end
end
@@ -49,12 +55,20 @@ class Form::AccountBatch
return unless follow.account.activitypub?
- json = ActiveModelSerializers::SerializableResource.new(
- follow,
- serializer: ActivityPub::RejectFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ ActivityPub::DeliveryWorker.perform_async(Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), current_account.id, follow.account.inbox_url)
+ end
- ActivityPub::DeliveryWorker.perform_async(json, current_account.id, follow.account.inbox_url)
+ def approve!
+ users = accounts.includes(:user).map(&:user)
+
+ users.each { |user| authorize(user, :approve?) }
+ .each(&:approve!)
+ end
+
+ def reject!
+ records = accounts.includes(:user)
+
+ records.each { |account| authorize(account.user, :reject?) }
+ .each { |account| SuspendAccountService.new.call(account, including_user: true, destroy: true, skip_distribution: true) }
end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 2d3aa726d..86a86ec66 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -25,6 +25,9 @@ class Form::AdminSettings
preview_sensitive_media
custom_css
profile_directory
+ thumbnail
+ hero
+ mascot
).freeze
BOOLEAN_KEYS = %i(
@@ -46,7 +49,8 @@ class Form::AdminSettings
attr_accessor(*KEYS)
- validates :site_short_description, :site_description, :site_extended_description, :site_terms, :closed_registrations_message, html: true
+ validates :site_short_description, :site_description, html: { wrap_with: :p }
+ validates :site_extended_description, :site_terms, :closed_registrations_message, html: true
validates :registrations_mode, inclusion: { in: %w(open approved none) }
validates :min_invite_role, inclusion: { in: %w(disabled user moderator admin) }
validates :site_contact_email, :site_contact_username, presence: true
@@ -64,7 +68,7 @@ class Form::AdminSettings
KEYS.each do |key|
value = instance_variable_get("@#{key}")
- if UPLOAD_KEYS.include?(key)
+ if UPLOAD_KEYS.include?(key) && !value.nil?
upload = SiteUpload.where(var: key).first_or_initialize(var: key)
upload.update(file: value)
else
diff --git a/app/models/form/status_batch.rb b/app/models/form/status_batch.rb
index 898728067..933dfdaca 100644
--- a/app/models/form/status_batch.rb
+++ b/app/models/form/status_batch.rb
@@ -35,6 +35,7 @@ class Form::StatusBatch
def delete_statuses
Status.where(id: status_ids).reorder(nil).find_each do |status|
RemovalWorker.perform_async(status.id)
+ Tombstone.find_or_create_by(uri: status.uri, account: status.account, by_moderator: true)
log_action :destroy, status
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index a57ba0b2e..ab794faa0 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -18,6 +18,7 @@
# account_id :bigint(8)
# description :text
# scheduled_status_id :bigint(8)
+# blurhash :string
#
class MediaAttachment < ApplicationRecord
@@ -32,6 +33,11 @@ class MediaAttachment < ApplicationRecord
VIDEO_MIME_TYPES = ['video/webm', 'video/mp4', 'video/quicktime'].freeze
VIDEO_CONVERTIBLE_MIME_TYPES = ['video/webm', 'video/quicktime'].freeze
+ BLURHASH_OPTIONS = {
+ x_comp: 4,
+ y_comp: 4,
+ }.freeze
+
IMAGE_STYLES = {
original: {
pixels: 1_638_400, # 1280x1280px
@@ -41,6 +47,7 @@ class MediaAttachment < ApplicationRecord
small: {
pixels: 160_000, # 400x400px
file_geometry_parser: FastGeometryParser,
+ blurhash: BLURHASH_OPTIONS,
},
}.freeze
@@ -53,6 +60,8 @@ class MediaAttachment < ApplicationRecord
},
format: 'png',
time: 0,
+ file_geometry_parser: FastGeometryParser,
+ blurhash: BLURHASH_OPTIONS,
},
}.freeze
@@ -166,11 +175,11 @@ class MediaAttachment < ApplicationRecord
def file_processors(f)
if f.file_content_type == 'image/gif'
- [:gif_transcoder]
+ [:gif_transcoder, :blurhash_transcoder]
elsif VIDEO_MIME_TYPES.include? f.file_content_type
- [:video_transcoder]
+ [:video_transcoder, :blurhash_transcoder]
else
- [:lazy_thumbnail]
+ [:lazy_thumbnail, :blurhash_transcoder]
end
end
end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 300269e24..498673ff1 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -41,9 +41,13 @@ class Notification < ApplicationRecord
validates :account_id, uniqueness: { scope: [:activity_type, :activity_id] }
validates :activity_type, inclusion: { in: TYPE_CLASS_MAP.values }
- scope :browserable, ->(exclude_types = []) {
+ scope :browserable, ->(exclude_types = [], account_id = nil) {
types = TYPE_CLASS_MAP.values - activity_types_from_types(exclude_types + [:follow_request])
- where(activity_type: types)
+ if account_id.nil?
+ where(activity_type: types)
+ else
+ where(activity_type: types, from_account_id: account_id)
+ end
}
cache_associated :from_account, status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account, poll: [status: STATUS_INCLUDES]
diff --git a/app/models/site_upload.rb b/app/models/site_upload.rb
index 14d683767..cf10b30fc 100644
--- a/app/models/site_upload.rb
+++ b/app/models/site_upload.rb
@@ -18,6 +18,7 @@ class SiteUpload < ApplicationRecord
has_attached_file :file
validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/
+ validates :file, presence: true
validates :var, presence: true, uniqueness: true
before_save :set_meta
diff --git a/app/models/status.rb b/app/models/status.rb
index 8d31fd382..fb9bbc9a9 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -84,8 +84,8 @@ class Status < ApplicationRecord
scope :without_reblogs, -> { where('statuses.reblog_of_id IS NULL') }
scope :with_public_visibility, -> { where(visibility: :public) }
scope :tagged_with, ->(tag) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag }) }
- scope :excluding_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced: false }) }
- scope :including_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced: true }) }
+ scope :excluding_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced_at: nil }) }
+ scope :including_silenced_accounts, -> { left_outer_joins(:account).where.not(accounts: { silenced_at: nil }) }
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
scope :not_domain_blocked_by_account, ->(account) { account.excluded_from_timeline_domains.blank? ? left_outer_joins(:account) : left_outer_joins(:account).where('accounts.domain IS NULL OR accounts.domain NOT IN (?)', account.excluded_from_timeline_domains) }
scope :tagged_with_all, ->(tags) {
@@ -204,6 +204,8 @@ class Status < ApplicationRecord
public_visibility? || unlisted_visibility?
end
+ alias sign? distributable?
+
def with_media?
media_attachments.any?
end
@@ -497,7 +499,7 @@ class Status < ApplicationRecord
return if direct_visibility?
account&.increment_count!(:statuses_count)
- reblog&.increment_count!(:reblogs_count) if reblog? && (public_visibility? || unlisted_visibility?)
+ reblog&.increment_count!(:reblogs_count) if reblog?
thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
@@ -505,7 +507,7 @@ class Status < ApplicationRecord
return if direct_visibility? || marked_for_mass_destruction?
account&.decrement_count!(:statuses_count)
- reblog&.decrement_count!(:reblogs_count) if reblog? && (public_visibility? || unlisted_visibility?)
+ reblog&.decrement_count!(:reblogs_count) if reblog?
thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
diff --git a/app/models/tombstone.rb b/app/models/tombstone.rb
index 997bb65fd..bf666c43a 100644
--- a/app/models/tombstone.rb
+++ b/app/models/tombstone.rb
@@ -4,11 +4,12 @@
#
# Table name: tombstones
#
-# id :bigint(8) not null, primary key
-# account_id :bigint(8)
-# uri :string not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# uri :string not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# by_moderator :boolean
#
class Tombstone < ApplicationRecord
diff --git a/app/models/user.rb b/app/models/user.rb
index d703f9588..eb1a2fece 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -74,8 +74,11 @@ class User < ApplicationRecord
has_many :applications, class_name: 'Doorkeeper::Application', as: :owner
has_many :backups, inverse_of: :user
+ has_one :invite_request, class_name: 'UserInviteRequest', inverse_of: :user, dependent: :destroy
+ accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? }
+
validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale?
- validates_with BlacklistedEmailValidator, if: :email_changed?
+ validates_with BlacklistedEmailValidator, on: :create
validates_with EmailMxValidator, if: :validate_email_dns?
validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create
@@ -85,7 +88,7 @@ class User < ApplicationRecord
scope :confirmed, -> { where.not(confirmed_at: nil) }
scope :enabled, -> { where(disabled: false) }
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 :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where.not(accounts: { suspended_at: nil }) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) }
@@ -101,9 +104,11 @@ class User < ApplicationRecord
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
- :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, to: :settings, prefix: :setting, allow_nil: false
+ :expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
+ :advanced_layout, to: :settings, prefix: :setting, allow_nil: false
attr_reader :invite_code
+ attr_writer :external
def confirmed?
confirmed_at.present?
@@ -113,6 +118,10 @@ class User < ApplicationRecord
invite_id.present?
end
+ def valid_invitation?
+ invite_id.present? && invite.valid_for_use?
+ end
+
def disable!
update!(disabled: true,
last_sign_in_at: current_sign_in_at,
@@ -188,6 +197,10 @@ class User < ApplicationRecord
settings.notification_emails['report']
end
+ def allows_pending_account_emails?
+ settings.notification_emails['pending_account']
+ end
+
def hides_network?
@hides_network ||= settings.hide_network
end
@@ -266,13 +279,17 @@ class User < ApplicationRecord
private
def set_approved
- self.approved = open_registrations? || invited?
+ self.approved = open_registrations? || valid_invitation? || external?
end
def open_registrations?
Setting.registrations_mode == 'open'
end
+ def external?
+ !!@external
+ end
+
def sanitize_languages
return if chosen_languages.nil?
chosen_languages.reject!(&:blank?)
@@ -292,7 +309,7 @@ class User < ApplicationRecord
def notify_staff_about_pending_account!
User.staff.includes(:account).each do |u|
- next unless u.allows_report_emails?
+ next unless u.allows_pending_account_emails?
AdminMailer.new_pending_account(u.account, self).deliver_later
end
end
diff --git a/app/models/user_invite_request.rb b/app/models/user_invite_request.rb
new file mode 100644
index 000000000..2b76c88b9
--- /dev/null
+++ b/app/models/user_invite_request.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: user_invite_requests
+#
+# id :bigint(8) not null, primary key
+# user_id :bigint(8)
+# text :text
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class UserInviteRequest < ApplicationRecord
+ belongs_to :user, inverse_of: :invite_request
+ validates :text, presence: true, length: { maximum: 420 }
+end
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index 74c5ed129..f3a73209a 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -13,7 +13,7 @@ class InstancePresenter
)
def contact_account
- Account.find_local(Setting.site_contact_username.gsub(/\A@/, ''))
+ Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, ''))
end
def user_count
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 4b982b955..0644219fb 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -6,7 +6,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
context :security
context_extensions :manually_approves_followers, :featured, :also_known_as,
- :moved_to, :property_value, :hashtag, :emoji
+ :moved_to, :property_value, :hashtag, :emoji, :identity_proof
attributes :id, :type, :following, :followers,
:inbox, :outbox, :featured,
@@ -115,7 +115,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
end
def virtual_attachments
- object.fields
+ object.fields + object.identity_proofs.active
end
def moved_to
@@ -158,4 +158,24 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
Formatter.instance.format_field(object.account, object.value)
end
end
+
+ class AccountIdentityProofSerializer < ActivityPub::Serializer
+ attributes :type, :name, :signature_algorithm, :signature_value
+
+ def type
+ 'IdentityProof'
+ end
+
+ def name
+ object.provider_username
+ end
+
+ def signature_algorithm
+ object.provider
+ end
+
+ def signature_value
+ object.token
+ end
+ end
end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index d11cfa59a..67f596e78 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -2,7 +2,7 @@
class ActivityPub::NoteSerializer < ActivityPub::Serializer
context_extensions :atom_uri, :conversation, :sensitive,
- :hashtag, :emoji, :focal_point
+ :hashtag, :emoji, :focal_point, :blurhash
attributes :id, :type, :summary,
:in_reply_to, :published, :url,
@@ -153,7 +153,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
class MediaAttachmentSerializer < ActivityPub::Serializer
include RoutingHelper
- attributes :type, :media_type, :url, :name
+ attributes :type, :media_type, :url, :name, :blurhash
attribute :focal_point, if: :focal_point?
def type
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index a7a3d770c..184ed867c 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -14,6 +14,8 @@ class InitialStateSerializer < ActiveModel::Serializer
domain: Rails.configuration.x.local_domain,
admin: object.admin&.id&.to_s,
search_enabled: Chewy.enabled?,
+ repository: Mastodon::Version.repository,
+ source_url: Mastodon::Version.source_url,
version: Mastodon::Version.to_s,
invites_enabled: Setting.min_invite_role == 'user',
mascot: instance_presenter.mascot&.file&.url,
@@ -29,6 +31,7 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:display_media] = object.current_account.user.setting_display_media
store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
store[:reduce_motion] = object.current_account.user.setting_reduce_motion
+ store[:advanced_layout] = object.current_account.user.setting_advanced_layout
store[:is_staff] = object.current_account.user.staff?
end
diff --git a/app/serializers/rest/identity_proof_serializer.rb b/app/serializers/rest/identity_proof_serializer.rb
new file mode 100644
index 000000000..0e7415935
--- /dev/null
+++ b/app/serializers/rest/identity_proof_serializer.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class REST::IdentityProofSerializer < ActiveModel::Serializer
+ attributes :provider, :provider_username, :updated_at, :proof_url, :profile_url
+
+ def proof_url
+ object.badge.proof_url
+ end
+
+ def profile_url
+ object.badge.profile_url
+ end
+
+ def provider
+ object.provider.capitalize
+ end
+end
diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb
index 51011788b..1b3498ea4 100644
--- a/app/serializers/rest/media_attachment_serializer.rb
+++ b/app/serializers/rest/media_attachment_serializer.rb
@@ -5,7 +5,7 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
attributes :id, :type, :url, :preview_url,
:remote_url, :text_url, :meta,
- :description
+ :description, :blurhash
def id
object.id.to_s
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index 106777b6e..c9b76cb16 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -3,7 +3,7 @@
class REST::StatusSerializer < ActiveModel::Serializer
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :language,
- :uri, :content, :url, :replies_count, :reblogs_count,
+ :uri, :url, :replies_count, :reblogs_count,
:favourites_count
attribute :favourited, if: :current_user?
@@ -11,6 +11,9 @@ class REST::StatusSerializer < ActiveModel::Serializer
attribute :muted, if: :current_user?
attribute :pinned, if: :pinnable?
+ attribute :content, unless: :source_requested?
+ attribute :text, if: :source_requested?
+
belongs_to :reblog, serializer: REST::StatusSerializer
belongs_to :application, if: :show_application?
belongs_to :account, serializer: REST::AccountSerializer
@@ -105,6 +108,10 @@ class REST::StatusSerializer < ActiveModel::Serializer
%w(public unlisted).include?(object.visibility)
end
+ def source_requested?
+ instance_options[:source_requested]
+ end
+
def ordered_mentions
object.active_mentions.to_a.sort_by(&:id)
end
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 5e3308428..ad22d37fe 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -24,6 +24,7 @@ class ActivityPub::ProcessAccountService < BaseService
create_account if @account.nil?
update_account
process_tags
+ process_attachments
else
raise Mastodon::RaceConditionError
end
@@ -49,12 +50,12 @@ class ActivityPub::ProcessAccountService < BaseService
def create_account
@account = Account.new
- @account.protocol = :activitypub
- @account.username = @username
- @account.domain = @domain
- @account.suspended = true if auto_suspend?
- @account.silenced = true if auto_silence?
- @account.private_key = nil
+ @account.protocol = :activitypub
+ @account.username = @username
+ @account.domain = @domain
+ @account.private_key = nil
+ @account.suspended_at = domain_block.created_at if auto_suspend?
+ @account.silenced_at = domain_block.created_at if auto_silence?
end
def update_account
@@ -151,7 +152,7 @@ class ActivityPub::ProcessAccountService < BaseService
def property_values
return unless @json['attachment'].is_a?(Array)
- @json['attachment'].select { |attachment| attachment['type'] == 'PropertyValue' }.map { |attachment| attachment.slice('name', 'value') }
+ as_array(@json['attachment']).select { |attachment| attachment['type'] == 'PropertyValue' }.map { |attachment| attachment.slice('name', 'value') }
end
def mismatching_origin?(url)
@@ -231,6 +232,23 @@ class ActivityPub::ProcessAccountService < BaseService
end
end
+ def process_attachments
+ return if @json['attachment'].blank?
+
+ previous_proofs = @account.identity_proofs.to_a
+ current_proofs = []
+
+ as_array(@json['attachment']).each do |attachment|
+ next unless equals_or_includes?(attachment['type'], 'IdentityProof')
+ current_proofs << process_identity_proof(attachment)
+ end
+
+ previous_proofs.each do |previous_proof|
+ next if current_proofs.any? { |current_proof| current_proof.id == previous_proof.id }
+ previous_proof.delete
+ end
+ end
+
def process_emoji(tag)
return if skip_download?
return if tag['name'].blank? || tag['icon'].blank? || tag['icon']['url'].blank?
@@ -247,4 +265,12 @@ class ActivityPub::ProcessAccountService < BaseService
emoji.image_remote_url = image_url
emoji.save
end
+
+ def process_identity_proof(attachment)
+ provider = attachment['signatureAlgorithm']
+ provider_username = attachment['name']
+ token = attachment['signatureValue']
+
+ @account.identity_proofs.where(provider: provider, provider_username: provider_username).find_or_create_by(provider: provider, provider_username: provider_username, token: token)
+ end
end
diff --git a/app/services/after_block_domain_from_account_service.rb b/app/services/after_block_domain_from_account_service.rb
index 180f13403..a87c2e792 100644
--- a/app/services/after_block_domain_from_account_service.rb
+++ b/app/services/after_block_domain_from_account_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class AfterBlockDomainFromAccountService < BaseService
+ include Payloadable
+
# This service does not create an AccountDomainBlock record,
# it's meant to be called after such a record has been created
# synchronously, to "clean up"
@@ -31,12 +33,6 @@ class AfterBlockDomainFromAccountService < BaseService
return unless follow.account.activitypub?
- json = ActiveModelSerializers::SerializableResource.new(
- follow,
- serializer: ActivityPub::RejectFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
-
- ActivityPub::DeliveryWorker.perform_async(json, @account.id, follow.account.inbox_url)
+ ActivityPub::DeliveryWorker.perform_async(Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), @account.id, follow.account.inbox_url)
end
end
diff --git a/app/services/authorize_follow_service.rb b/app/services/authorize_follow_service.rb
index f2e3ebe7d..29b8700c7 100644
--- a/app/services/authorize_follow_service.rb
+++ b/app/services/authorize_follow_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class AuthorizeFollowService < BaseService
+ include Payloadable
+
def call(source_account, target_account, **options)
if options[:skip_follow_request]
follow_request = FollowRequest.new(account: source_account, target_account: target_account, uri: options[:follow_request_uri])
@@ -24,11 +26,7 @@ class AuthorizeFollowService < BaseService
end
def build_json(follow_request)
- ActiveModelSerializers::SerializableResource.new(
- follow_request,
- serializer: ActivityPub::AcceptFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow_request, ActivityPub::AcceptFollowSerializer))
end
def build_xml(follow_request)
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index a1fe93665..497f0394b 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -29,7 +29,7 @@ class BlockDomainService < BaseService
end
def silence_accounts!
- blocked_domain_accounts.in_batches.update_all(silenced: true)
+ blocked_domain_accounts.without_silenced.in_batches.update_all(silenced_at: @domain_block.created_at)
end
def clear_media!
@@ -43,9 +43,9 @@ class BlockDomainService < BaseService
end
def suspend_accounts!
- blocked_domain_accounts.where(suspended: false).reorder(nil).find_each do |account|
+ blocked_domain_accounts.without_suspended.reorder(nil).find_each do |account|
UnsubscribeService.new.call(account) if account.subscribed?
- SuspendAccountService.new.call(account)
+ SuspendAccountService.new.call(account, suspended_at: @domain_block.created_at)
end
end
diff --git a/app/services/block_service.rb b/app/services/block_service.rb
index 140b238df..9050a4858 100644
--- a/app/services/block_service.rb
+++ b/app/services/block_service.rb
@@ -1,11 +1,14 @@
# frozen_string_literal: true
class BlockService < BaseService
+ include Payloadable
+
def call(account, target_account)
return if account.id == target_account.id
UnfollowService.new.call(account, target_account) if account.following?(target_account)
UnfollowService.new.call(target_account, account) if target_account.following?(account)
+ RejectFollowService.new.call(account, target_account) if target_account.requested?(account)
block = account.block!(target_account)
@@ -25,11 +28,7 @@ class BlockService < BaseService
end
def build_json(block)
- ActiveModelSerializers::SerializableResource.new(
- block,
- serializer: ActivityPub::BlockSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(block, ActivityPub::BlockSerializer))
end
def build_xml(block)
diff --git a/app/services/concerns/payloadable.rb b/app/services/concerns/payloadable.rb
new file mode 100644
index 000000000..13d9c3548
--- /dev/null
+++ b/app/services/concerns/payloadable.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Payloadable
+ def serialize_payload(record, serializer, options = {})
+ signer = options.delete(:signer)
+ sign_with = options.delete(:sign_with)
+ payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
+
+ if (record.respond_to?(:sign?) && record.sign?) && signer && signing_enabled?
+ ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with)
+ else
+ payload
+ end
+ end
+
+ def signing_enabled?
+ true
+ end
+end
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
index b565bcc32..128a24ad6 100644
--- a/app/services/favourite_service.rb
+++ b/app/services/favourite_service.rb
@@ -2,6 +2,7 @@
class FavouriteService < BaseService
include Authorization
+ include Payloadable
# Favourite a status and notify remote user
# @param [Account] account
@@ -43,11 +44,7 @@ class FavouriteService < BaseService
end
def build_json(favourite)
- Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(
- favourite,
- serializer: ActivityPub::LikeSerializer,
- adapter: ActivityPub::Adapter
- ).as_json).sign!(favourite.account))
+ Oj.dump(serialize_payload(favourite, ActivityPub::LikeSerializer))
end
def build_xml(favourite)
diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index 7979c312e..494aaed75 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -165,7 +165,7 @@ class FetchLinkCardService < BaseService
end
def meta_property(page, property)
- page.at_xpath("//meta[@property=\"#{property}\"]")&.attribute('content')&.value || page.at_xpath("//meta[@name=\"#{property}\"]")&.attribute('content')&.value
+ page.at_xpath("//meta[contains(concat(' ', normalize-space(@property), ' '), ' #{property} ')]")&.attribute('content')&.value || page.at_xpath("//meta[@name=\"#{property}\"]")&.attribute('content')&.value
end
def lock_options
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 92d8c864a..0305e2d62 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -2,6 +2,7 @@
class FollowService < BaseService
include Redisable
+ include Payloadable
# Follow a remote user, notify remote user about the follow
# @param [Account] source_account From which to follow
@@ -78,10 +79,6 @@ class FollowService < BaseService
end
def build_json(follow_request)
- ActiveModelSerializers::SerializableResource.new(
- follow_request,
- serializer: ActivityPub::FollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow_request, ActivityPub::FollowSerializer))
end
end
diff --git a/app/services/import_service.rb b/app/services/import_service.rb
index 3f558626e..4ee431ea3 100644
--- a/app/services/import_service.rb
+++ b/app/services/import_service.rb
@@ -8,7 +8,6 @@ class ImportService < BaseService
def call(import)
@import = import
@account = @import.account
- @data = CSV.new(import_data).reject(&:blank?)
case @import.type
when 'following'
@@ -25,19 +24,23 @@ class ImportService < BaseService
private
def import_follows!
- import_relationships!('follow', 'unfollow', @account.following, follow_limit)
+ parse_import_data!(['Account address'])
+ import_relationships!('follow', 'unfollow', @account.following, follow_limit, reblogs: 'Show boosts')
end
def import_blocks!
+ parse_import_data!(['Account address'])
import_relationships!('block', 'unblock', @account.blocking, ROWS_PROCESSING_LIMIT)
end
def import_mutes!
- import_relationships!('mute', 'unmute', @account.muting, ROWS_PROCESSING_LIMIT)
+ parse_import_data!(['Account address'])
+ import_relationships!('mute', 'unmute', @account.muting, ROWS_PROCESSING_LIMIT, notifications: 'Hide notifications')
end
def import_domain_blocks!
- items = @data.take(ROWS_PROCESSING_LIMIT).map { |row| row.first.strip }
+ parse_import_data!(['#domain'])
+ items = @data.take(ROWS_PROCESSING_LIMIT).map { |row| row['#domain'].strip }
if @import.overwrite?
presence_hash = items.each_with_object({}) { |id, mapping| mapping[id] = true }
@@ -60,26 +63,34 @@ class ImportService < BaseService
end
end
- def import_relationships!(action, undo_action, overwrite_scope, limit)
- items = @data.take(limit).map { |row| row.first.strip }
+ def import_relationships!(action, undo_action, overwrite_scope, limit, extra_fields = {})
+ items = @data.take(limit).map { |row| [row['Account address']&.strip, Hash[extra_fields.map { |key, header| [key, row[header]&.strip] }]] }.reject { |(id, _)| id.blank? }
if @import.overwrite?
- presence_hash = items.each_with_object({}) { |id, mapping| mapping[id] = true }
+ presence_hash = items.each_with_object({}) { |(id, extra), mapping| mapping[id] = [true, extra] }
overwrite_scope.find_each do |target_account|
if presence_hash[target_account.acct]
items.delete(target_account.acct)
+ extra = presence_hash[target_account.acct][1]
+ Import::RelationshipWorker.perform_async(@account.id, target_account.acct, action, extra)
else
Import::RelationshipWorker.perform_async(@account.id, target_account.acct, undo_action)
end
end
end
- Import::RelationshipWorker.push_bulk(items) do |acct|
- [@account.id, acct, action]
+ Import::RelationshipWorker.push_bulk(items) do |acct, extra|
+ [@account.id, acct, action, extra]
end
end
+ def parse_import_data!(default_headers)
+ data = CSV.parse(import_data, headers: true)
+ data = CSV.parse(import_data, headers: default_headers) unless data.headers&.first&.strip&.include?(' ')
+ @data = data.reject(&:blank?)
+ end
+
def import_data
Paperclip.io_adapters.for(@import.data).read
end
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index e7366c7e8..b470a40e9 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -49,7 +49,7 @@ class PostStatusService < BaseService
def preprocess_attributes!
@text = @options.delete(:spoiler_text) if @text.blank? && @options[:spoiler_text].present?
@visibility = @options[:visibility] || @account.user&.setting_default_privacy
- @visibility = :unlisted if @visibility == :public && @account.silenced
+ @visibility = :unlisted if @visibility == :public && @account.silenced?
@scheduled_at = @options[:scheduled_at]&.to_datetime
@scheduled_at = nil if scheduled_in_the_past?
rescue ArgumentError
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index 2595c5fd3..bc607dff3 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -2,6 +2,7 @@
class ProcessMentionsService < BaseService
include StreamEntryRenderer
+ include Payloadable
# Scan status for mentions and fetch remote mentioned users, create
# local mention pointers, send Salmon notifications to mentioned
@@ -25,7 +26,7 @@ class ProcessMentionsService < BaseService
end
end
- next match if mention_undeliverable?(mentioned_account) || mentioned_account&.suspended
+ next match if mention_undeliverable?(mentioned_account) || mentioned_account&.suspended?
mentions << mentioned_account.mentions.where(status: status).first_or_create(status: status)
@@ -61,12 +62,7 @@ class ProcessMentionsService < BaseService
def activitypub_json
return @activitypub_json if defined?(@activitypub_json)
- payload = ActiveModelSerializers::SerializableResource.new(
- @status,
- serializer: ActivityPub::ActivitySerializer,
- adapter: ActivityPub::Adapter
- ).as_json
- @activitypub_json = Oj.dump(@status.distributable? ? ActivityPub::LinkedDataSignature.new(payload).sign!(@status.account) : payload)
+ @activitypub_json = Oj.dump(serialize_payload(@status, ActivityPub::ActivitySerializer, signer: @status.account))
end
def resolve_account_service
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index ff48d9c75..9cf4bc128 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -3,6 +3,7 @@
class ReblogService < BaseService
include Authorization
include StreamEntryRenderer
+ include Payloadable
# Reblog a status and notify its remote author
# @param [Account] account Account to reblog from
@@ -18,7 +19,9 @@ class ReblogService < BaseService
return reblog unless reblog.nil?
- reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: options[:visibility] || account.user&.setting_default_privacy)
+ visibility = options[:visibility] || account.user&.setting_default_privacy
+ visibility = reblogged_status.visibility if reblogged_status.hidden?
+ reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility)
DistributionWorker.perform_async(reblog.id)
Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id)
@@ -51,10 +54,6 @@ class ReblogService < BaseService
end
def build_json(reblog)
- Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(
- reblog,
- serializer: ActivityPub::ActivitySerializer,
- adapter: ActivityPub::Adapter
- ).as_json).sign!(reblog.account))
+ Oj.dump(serialize_payload(reblog, ActivityPub::ActivitySerializer, signer: reblog.account))
end
end
diff --git a/app/services/reject_follow_service.rb b/app/services/reject_follow_service.rb
index a91266aa4..f87d0ba91 100644
--- a/app/services/reject_follow_service.rb
+++ b/app/services/reject_follow_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class RejectFollowService < BaseService
+ include Payloadable
+
def call(source_account, target_account)
follow_request = FollowRequest.find_by!(account: source_account, target_account: target_account)
follow_request.reject!
@@ -19,11 +21,7 @@ class RejectFollowService < BaseService
end
def build_json(follow_request)
- ActiveModelSerializers::SerializableResource.new(
- follow_request,
- serializer: ActivityPub::RejectFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow_request, ActivityPub::RejectFollowSerializer))
end
def build_xml(follow_request)
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 747f209f3..81adc5aae 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -3,6 +3,7 @@
class RemoveStatusService < BaseService
include StreamEntryRenderer
include Redisable
+ include Payloadable
def call(status, **options)
@payload = Oj.dump(event: :delete, payload: status.id.to_s)
@@ -115,15 +116,7 @@ class RemoveStatusService < BaseService
end
def signed_activity_json
- @signed_activity_json ||= Oj.dump(ActivityPub::LinkedDataSignature.new(activity_json).sign!(@account))
- end
-
- def activity_json
- @activity_json ||= ActiveModelSerializers::SerializableResource.new(
- @status,
- serializer: @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer,
- adapter: ActivityPub::Adapter
- ).as_json
+ @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account))
end
def remove_reblogs
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index 73bd6694f..1e955c1e7 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class ReportService < BaseService
+ include Payloadable
+
def call(source_account, target_account, options = {})
@source_account = source_account
@target_account = target_account
@@ -44,12 +46,7 @@ class ReportService < BaseService
end
def payload
- Oj.dump(ActiveModelSerializers::SerializableResource.new(
- @report,
- serializer: ActivityPub::FlagSerializer,
- adapter: ActivityPub::Adapter,
- account: some_local_account
- ).as_json)
+ Oj.dump(serialize_payload(@report, ActivityPub::FlagSerializer, account: some_local_account))
end
def some_local_account
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index 4ff351c5f..11e33a83a 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -119,9 +119,9 @@ class ResolveAccountService < BaseService
Rails.logger.debug "Creating new remote account for #{@username}@#{@domain}"
@account = Account.new(username: @username, domain: @domain)
- @account.suspended = true if auto_suspend?
- @account.silenced = true if auto_silence?
- @account.private_key = nil
+ @account.suspended_at = domain_block.created_at if auto_suspend?
+ @account.silenced_at = domain_block.created_at if auto_silence?
+ @account.private_key = nil
end
def update_account
diff --git a/app/services/subscribe_service.rb b/app/services/subscribe_service.rb
index 2893b5410..83fd64396 100644
--- a/app/services/subscribe_service.rb
+++ b/app/services/subscribe_service.rb
@@ -43,7 +43,7 @@ class SubscribeService < BaseService
end
def some_local_account
- @some_local_account ||= Account.local.where(suspended: false).first
+ @some_local_account ||= Account.local.without_suspended.first
end
# Any response in the 3xx or 4xx range, except for 429 (rate limit)
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
index 6c2ecad30..a5ce3dbd9 100644
--- a/app/services/suspend_account_service.rb
+++ b/app/services/suspend_account_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class SuspendAccountService < BaseService
+ include Payloadable
+
ASSOCIATIONS_ON_SUSPEND = %w(
account_pins
active_relationships
@@ -88,8 +90,8 @@ class SuspendAccountService < BaseService
return if @options[:destroy]
- @account.silenced = false
- @account.suspended = true
+ @account.silenced_at = nil
+ @account.suspended_at = @options[:suspended_at] || Time.now.utc
@account.locked = false
@account.display_name = ''
@account.note = ''
@@ -118,23 +120,11 @@ class SuspendAccountService < BaseService
end
def delete_actor_json
- return @delete_actor_json if defined?(@delete_actor_json)
-
- payload = ActiveModelSerializers::SerializableResource.new(
- @account,
- serializer: ActivityPub::DeleteActorSerializer,
- adapter: ActivityPub::Adapter
- ).as_json
-
- @delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
+ @delete_actor_json ||= Oj.dump(serialize_payload(@account, ActivityPub::DeleteActorSerializer, signer: @account))
end
def build_reject_json(follow)
- ActiveModelSerializers::SerializableResource.new(
- follow,
- serializer: ActivityPub::RejectFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer))
end
def delivery_inboxes
diff --git a/app/services/unblock_domain_service.rb b/app/services/unblock_domain_service.rb
index 946b6d465..9b8526fbe 100644
--- a/app/services/unblock_domain_service.rb
+++ b/app/services/unblock_domain_service.rb
@@ -3,9 +3,9 @@
class UnblockDomainService < BaseService
attr_accessor :domain_block
- def call(domain_block, retroactive)
+ def call(domain_block)
@domain_block = domain_block
- process_retroactive_updates if retroactive
+ process_retroactive_updates
domain_block.destroy
end
@@ -14,14 +14,19 @@ class UnblockDomainService < BaseService
end
def blocked_accounts
- Account.where(domain: domain_block.domain)
+ scope = Account.where(domain: domain_block.domain)
+ if domain_block.silence?
+ scope.where(silenced_at: @domain_block.created_at)
+ else
+ scope.where(suspended_at: @domain_block.created_at)
+ end
end
def update_options
- { domain_block_impact => false }
+ { domain_block_impact => nil }
end
def domain_block_impact
- domain_block.silence? ? :silenced : :suspended
+ domain_block.silence? ? :silenced_at : :suspended_at
end
end
diff --git a/app/services/unblock_service.rb b/app/services/unblock_service.rb
index 72fc5ab15..95a858e9f 100644
--- a/app/services/unblock_service.rb
+++ b/app/services/unblock_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class UnblockService < BaseService
+ include Payloadable
+
def call(account, target_account)
return unless account.blocking?(target_account)
@@ -20,11 +22,7 @@ class UnblockService < BaseService
end
def build_json(unblock)
- ActiveModelSerializers::SerializableResource.new(
- unblock,
- serializer: ActivityPub::UndoBlockSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(unblock, ActivityPub::UndoBlockSerializer))
end
def build_xml(block)
diff --git a/app/services/unfavourite_service.rb b/app/services/unfavourite_service.rb
index 2fda11bd6..dcc890b7d 100644
--- a/app/services/unfavourite_service.rb
+++ b/app/services/unfavourite_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class UnfavouriteService < BaseService
+ include Payloadable
+
def call(account, status)
favourite = Favourite.find_by!(account: account, status: status)
favourite.destroy!
@@ -21,11 +23,7 @@ class UnfavouriteService < BaseService
end
def build_json(favourite)
- Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(
- favourite,
- serializer: ActivityPub::UndoLikeSerializer,
- adapter: ActivityPub::Adapter
- ).as_json).sign!(favourite.account))
+ Oj.dump(serialize_payload(favourite, ActivityPub::UndoLikeSerializer))
end
def build_xml(favourite)
diff --git a/app/services/unfollow_service.rb b/app/services/unfollow_service.rb
index 95da2a667..17dc29735 100644
--- a/app/services/unfollow_service.rb
+++ b/app/services/unfollow_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class UnfollowService < BaseService
+ include Payloadable
+
# Unfollow and notify the remote user
# @param [Account] source_account Where to unfollow from
# @param [Account] target_account Which to unfollow
@@ -50,19 +52,11 @@ class UnfollowService < BaseService
end
def build_json(follow)
- ActiveModelSerializers::SerializableResource.new(
- follow,
- serializer: ActivityPub::UndoFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow, ActivityPub::UndoFollowSerializer))
end
def build_reject_json(follow)
- ActiveModelSerializers::SerializableResource.new(
- follow,
- serializer: ActivityPub::RejectFollowSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer))
end
def build_xml(follow)
diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb
index 81af9ef3a..0eeb8fd56 100644
--- a/app/services/vote_service.rb
+++ b/app/services/vote_service.rb
@@ -2,6 +2,7 @@
class VoteService < BaseService
include Authorization
+ include Payloadable
def call(account, poll, choices)
authorize_with account, poll, :vote?
@@ -50,10 +51,6 @@ class VoteService < BaseService
end
def build_json(vote)
- ActiveModelSerializers::SerializableResource.new(
- vote,
- serializer: ActivityPub::VoteSerializer,
- adapter: ActivityPub::Adapter
- ).to_json
+ Oj.dump(serialize_payload(vote, ActivityPub::VoteSerializer))
end
end
diff --git a/app/validators/blacklisted_email_validator.rb b/app/validators/blacklisted_email_validator.rb
index a2061fdd3..0d01a1c47 100644
--- a/app/validators/blacklisted_email_validator.rb
+++ b/app/validators/blacklisted_email_validator.rb
@@ -2,7 +2,10 @@
class BlacklistedEmailValidator < ActiveModel::Validator
def validate(user)
+ return if user.valid_invitation?
+
@email = user.email
+
user.errors.add(:email, I18n.t('users.invalid_email')) if blocked_email?
end
@@ -13,7 +16,7 @@ class BlacklistedEmailValidator < ActiveModel::Validator
end
def on_blacklist?
- return true if EmailDomainBlock.block?(@email)
+ return true if EmailDomainBlock.block?(@email)
return false if Rails.configuration.x.email_domains_blacklist.blank?
domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
diff --git a/app/validators/existing_username_validator.rb b/app/validators/existing_username_validator.rb
index 4388a0c98..b31d09827 100644
--- a/app/validators/existing_username_validator.rb
+++ b/app/validators/existing_username_validator.rb
@@ -5,16 +5,10 @@ class ExistingUsernameValidator < ActiveModel::EachValidator
return if value.blank?
if options[:multiple]
- missing_usernames = value.split(',').map { |username| username unless Account.find_local(username) }.compact
+ missing_usernames = value.split(',').map { |username| username.strip.gsub(/\A@/, '') }.map { |username| username unless Account.find_local(username) }.compact
record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: missing_usernames.join(', '))) if missing_usernames.any?
else
- record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) unless Account.find_local(value)
+ record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) unless Account.find_local(value.strip.gsub(/\A@/, ''))
end
end
-
- private
-
- def valid_html?(str)
- Nokogiri::HTML.fragment(str).to_s == str
- end
end
diff --git a/app/validators/html_validator.rb b/app/validators/html_validator.rb
index b7caee5a9..1c9cd303c 100644
--- a/app/validators/html_validator.rb
+++ b/app/validators/html_validator.rb
@@ -1,18 +1,20 @@
# frozen_string_literal: true
class HtmlValidator < ActiveModel::EachValidator
+ ERROR_RE = /Opening and ending tag mismatch|Unexpected end tag/
+
def validate_each(record, attribute, value)
return if value.blank?
+
errors = html_errors(value)
- unless errors.empty?
- record.errors.add(attribute, I18n.t('html_validator.invalid_markup', error: errors.first.to_s))
- end
+
+ record.errors.add(attribute, I18n.t('html_validator.invalid_markup', error: errors.first.to_s)) unless errors.empty?
end
private
def html_errors(str)
- fragment = Nokogiri::HTML.fragment(str)
- fragment.errors
+ fragment = Nokogiri::HTML.fragment(options[:wrap_with] ? "<#{options[:wrap_with]}>#{str}#{options[:wrap_with]}>" : str)
+ fragment.errors.select { |error| ERROR_RE =~ error.message }
end
end
diff --git a/app/validators/poll_validator.rb b/app/validators/poll_validator.rb
index fd497c8d0..9d7321cad 100644
--- a/app/validators/poll_validator.rb
+++ b/app/validators/poll_validator.rb
@@ -14,6 +14,6 @@ class PollValidator < ActiveModel::Validator
poll.errors.add(:options, I18n.t('polls.errors.over_character_limit', max: MAX_OPTION_CHARS)) if poll.options.any? { |option| option.mb_chars.grapheme_length > MAX_OPTION_CHARS }
poll.errors.add(:options, I18n.t('polls.errors.duplicate_options')) unless poll.options.uniq.size == poll.options.size
poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_long')) if poll.expires_at.nil? || poll.expires_at - current_time > MAX_EXPIRATION
- poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_short')) if poll.expires_at.present? && poll.expires_at - current_time < MIN_EXPIRATION
+ poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_short')) if poll.expires_at.present? && (poll.expires_at - current_time).ceil < MIN_EXPIRATION
end
end
diff --git a/app/views/about/_registration.html.haml b/app/views/about/_registration.html.haml
index 09cbe2e28..ff32ec8c4 100644
--- a/app/views/about/_registration.html.haml
+++ b/app/views/about/_registration.html.haml
@@ -10,6 +10,11 @@
= f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' }, hint: false, disabled: closed_registrations?
= f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }, hint: false, disabled: closed_registrations?
+ - if approved_registrations?
+ .fields-group
+ = f.simple_fields_for :invite_request do |invite_request_fields|
+ = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: false
+
.fields-group
= f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), disabled: closed_registrations?
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 45e5f0717..f24f4e195 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -8,7 +8,7 @@
.landing
.landing__brand
= link_to root_url, class: 'brand' do
- = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+ = svg_logo_full
%span.brand__tagline=t 'about.tagline'
.landing__grid
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 370e7e470..4ef9f9478 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -3,7 +3,7 @@
= image_tag (current_account&.user&.setting_auto_play_gif ? account.header_original_url : account.header_static_url), class: 'parallax'
.public-account-header__bar
= link_to short_account_url(account), class: 'avatar' do
- = image_tag (current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url)
+ = image_tag (current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), id: 'profile_page_avatar', data: {original: full_asset_url(account.avatar_original_url), static: full_asset_url(account.avatar_static_url), autoplay: current_account&.user&.setting_auto_play_gif}
.public-account-header__tabs
.public-account-header__tabs__name
%h1
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index 0da69728f..950e61847 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -33,10 +33,12 @@
= active_link_to t('accounts.posts_with_replies'), short_account_with_replies_url(@account)
= active_link_to t('accounts.media'), short_account_media_url(@account)
- - if @statuses.empty?
+ - if user_signed_in? && @account.blocking?(current_account)
+ .nothing-here.nothing-here--under-tabs= t('accounts.unavailable')
+ - elsif @statuses.empty?
= nothing_here 'nothing-here--under-tabs'
- else
- .activity-stream
+ .activity-stream.activity-stream--under-tabs
- if params[:page].to_i.zero?
= render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index 66808add7..7e9adb3ff 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -10,7 +10,7 @@
.filter-subset
%strong= t('admin.accounts.moderation.title')
%ul
- %li= filter_link_to t('admin.accounts.moderation.pending'), pending: '1', silenced: nil, suspended: nil
+ %li= link_to safe_join([t('admin.accounts.moderation.pending'), "(#{number_with_delimiter(User.pending.count)})"], ' '), admin_pending_accounts_path
%li= filter_link_to t('admin.accounts.moderation.active'), silenced: nil, suspended: nil, pending: nil
%li= filter_link_to t('admin.accounts.moderation.silenced'), silenced: '1', suspended: nil, pending: nil
%li= filter_link_to t('admin.accounts.moderation.suspended'), suspended: '1', silenced: nil, pending: nil
diff --git a/app/views/admin/action_logs/_action_log.html.haml b/app/views/admin/action_logs/_action_log.html.haml
index f059814bd..a545e189e 100644
--- a/app/views/admin/action_logs/_action_log.html.haml
+++ b/app/views/admin/action_logs/_action_log.html.haml
@@ -6,7 +6,7 @@
.log-entry__title
= t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target')).html_safe
.log-entry__timestamp
- %time= l action_log.created_at
+ %time.formatted{ datetime: action_log.created_at.iso8601 }
.spacer
.log-entry__icon
= fa_icon icon_for_log(action_log)
diff --git a/app/views/admin/domain_blocks/show.html.haml b/app/views/admin/domain_blocks/show.html.haml
index ea1929d44..dca4dbac7 100644
--- a/app/views/admin/domain_blocks/show.html.haml
+++ b/app/views/admin/domain_blocks/show.html.haml
@@ -3,18 +3,11 @@
= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
- - 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)
+ - unless (@domain_block.noop?)
+ %p= t(".retroactive.#{@domain_block.severity}")
+ %p.hint= t(:affected_accounts,
+ scope: [:admin, :domain_blocks, :show],
+ count: @domain_block.affected_accounts_count)
.actions
= f.button :button, t('.undo'), type: :submit
diff --git a/app/views/admin/pending_accounts/_account.html.haml b/app/views/admin/pending_accounts/_account.html.haml
new file mode 100644
index 000000000..7a9796a67
--- /dev/null
+++ b/app/views/admin/pending_accounts/_account.html.haml
@@ -0,0 +1,16 @@
+.batch-table__row
+ %label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox
+ = f.check_box :account_ids, { multiple: true, include_hidden: false }, account.id
+ .batch-table__row__content.pending-account
+ .pending-account__header
+ = link_to admin_account_path(account.id) do
+ %strong= account.user_email
+ = "(@#{account.username})"
+ %br/
+ = account.user_current_sign_in_ip
+ •
+ = t 'admin.accounts.time_in_queue', time: time_ago_in_words(account.user&.created_at)
+
+ - if account.user&.invite_request&.text&.present?
+ .pending-account__body
+ %p= account.user&.invite_request&.text
diff --git a/app/views/admin/pending_accounts/index.html.haml b/app/views/admin/pending_accounts/index.html.haml
new file mode 100644
index 000000000..7ce5b8213
--- /dev/null
+++ b/app/views/admin/pending_accounts/index.html.haml
@@ -0,0 +1,33 @@
+- content_for :page_title do
+ = t('admin.pending_accounts.title', count: User.pending.count)
+
+- content_for :header_tags do
+ = javascript_pack_tag 'admin', integrity: true, async: true, crossorigin: 'anonymous'
+
+= form_for(@form, url: batch_admin_pending_accounts_path) do |f|
+ = hidden_field_tag :page, params[:page] || 1
+
+ .batch-table
+ .batch-table__toolbar
+ %label.batch-table__toolbar__select.batch-checkbox-all
+ = check_box_tag :batch_checkbox_all, nil, false
+ .batch-table__toolbar__actions
+ = f.button safe_join([fa_icon('check'), t('admin.accounts.approve')]), name: :approve, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }
+
+ = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }
+ .batch-table__body
+ - if @accounts.empty?
+ = nothing_here 'nothing-here--under-tabs'
+ - else
+ = render partial: 'account', collection: @accounts, locals: { f: f }
+
+= paginate @accounts
+
+%hr.spacer/
+
+%div{ style: 'overflow: hidden' }
+ %div{ style: 'float: right' }
+ = link_to t('admin.accounts.reject_all'), reject_all_admin_pending_accounts_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive'
+
+ %div
+ = link_to t('admin.accounts.approve_all'), approve_all_admin_pending_accounts_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button'
diff --git a/app/views/admin_mailer/new_pending_account.text.erb b/app/views/admin_mailer/new_pending_account.text.erb
index ed31ae2eb..a466ee2de 100644
--- a/app/views/admin_mailer/new_pending_account.text.erb
+++ b/app/views/admin_mailer/new_pending_account.text.erb
@@ -2,7 +2,11 @@
<%= raw t('admin_mailer.new_pending_account.body') %>
-<%= raw t('admin.accounts.email') %>: <%= @account.user_email %>
-<%= raw t('admin.accounts.most_recent_ip') %>: <%= @account.user_current_sign_in_ip %>
+<%= @account.user_email %> (@<%= @account.username %>)
+<%= @account.user_current_sign_in_ip %>
+<% if @account.user&.invite_request&.text.present? %>
-<%= raw t('application_mailer.view')%> <%= admin_account_url(@account.id) %>
+<%= quote_wrap(@account.user&.invite_request&.text) %>
+<% end %>
+
+<%= raw t('application_mailer.view')%> <%= admin_pending_accounts_url %>
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index 1caf2b401..b4a7cced5 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -21,14 +21,21 @@
.fields-group
= f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' }
+
.fields-group
= f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }
+ - if approved_registrations? && !@invite.present?
+ .fields-group
+ = f.simple_fields_for :invite_request do |invite_request_fields|
+ = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: false
+
= f.input :invite_code, as: :hidden
- %p.hint= t('auth.agreement_html', rules_path: about_more_path, terms_path: terms_path)
+ .fields-group
+ = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path)
.actions
- = f.button :button, sign_up_message, type: :submit
+ = f.button :button, @invite.present? ? t('auth.register') : sign_up_message, type: :submit
.form-footer= render 'auth/shared/links'
diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml
index 31dab68bf..645dd2de1 100644
--- a/app/views/follower_accounts/index.html.haml
+++ b/app/views/follower_accounts/index.html.haml
@@ -9,6 +9,8 @@
- if @account.user_hides_network?
.nothing-here= t('accounts.network_hidden')
+- elsif user_signed_in? && @account.blocking?(current_account)
+ .nothing-here= t('accounts.unavailable')
- elsif @follows.empty?
= nothing_here
- else
diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml
index 8b49b529b..17fe79018 100644
--- a/app/views/following_accounts/index.html.haml
+++ b/app/views/following_accounts/index.html.haml
@@ -9,6 +9,8 @@
- if @account.user_hides_network?
.nothing-here= t('accounts.network_hidden')
+- elsif user_signed_in? && @account.blocking?(current_account)
+ .nothing-here= t('accounts.unavailable')
- elsif @follows.empty?
= nothing_here
- else
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 3d63dc0f3..747d80bf0 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -33,3 +33,7 @@
%body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
+
+ %div{ style: 'display: none'}
+ = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+ = render file: Rails.root.join('app', 'javascript', 'images', 'logo_full.svg')
diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml
index aa1990972..585e24655 100644
--- a/app/views/layouts/auth.html.haml
+++ b/app/views/layouts/auth.html.haml
@@ -6,7 +6,7 @@
.logo-container
%h1
= link_to root_path do
- = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+ = svg_logo_full
.form-container
= render 'flashes'
diff --git a/app/views/layouts/mailer.html.haml b/app/views/layouts/mailer.html.haml
index 4ffe3d79a..343bcb265 100644
--- a/app/views/layouts/mailer.html.haml
+++ b/app/views/layouts/mailer.html.haml
@@ -46,7 +46,7 @@
%tbody
%td.column-cell
%p= t 'about.hosted_on', domain: site_hostname
- %p= link_to t('application_mailer.notification_preferences'), settings_notifications_url
+ %p= link_to t('application_mailer.notification_preferences'), settings_preferences_notifications_url
%td.column-cell.text-right
= link_to root_url do
= image_tag full_pack_url('media/images/mailer/logo_transparent.png'), alt: 'Mastodon', height: 24
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index d30b2a3ea..2929ac599 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -8,7 +8,7 @@
%nav.header
.nav-left
= link_to root_url, class: 'brand' do
- = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+ = svg_logo_full
= link_to t('directories.directory'), explore_path, class: 'nav-link optional' if Setting.profile_directory
= link_to t('about.about_this'), about_more_path, class: 'nav-link optional'
@@ -38,9 +38,7 @@
%li= link_to t('about.api'), 'https://docs.joinmastodon.org/api/guidelines/'
.column-2
%h4= link_to t('about.what_is_mastodon'), 'https://joinmastodon.org/'
-
- = link_to root_url, class: 'brand' do
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+ = link_to svg_logo, root_url, class: 'brand'
.column-3
%h4= site_hostname
%ul
diff --git a/app/views/settings/identity_proofs/new.html.haml b/app/views/settings/identity_proofs/new.html.haml
index 8ce6e61c9..5e4e9895d 100644
--- a/app/views/settings/identity_proofs/new.html.haml
+++ b/app/views/settings/identity_proofs/new.html.haml
@@ -27,5 +27,10 @@
%p= t('identity_proofs.i_am_html', username: content_tag(:strong, @proof.provider_username), service: @proof.provider.capitalize)
+ .connection-prompt__post
+ = f.input :post_status, label: t('identity_proofs.publicize_checkbox'), as: :boolean, wrapper: :with_label, :input_html => { checked: true }
+
+ = f.input :status_text, as: :text, input_html: { value: t('identity_proofs.publicize_toot', username: @proof.provider_username, service: @proof.provider.capitalize, url: @proof.badge.proof_url), rows: 4 }
+
= f.button :button, t('identity_proofs.authorize'), type: :submit
= link_to t('simple_form.no'), settings_identity_proofs_url, class: 'button negative'
diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml
new file mode 100644
index 000000000..10f009264
--- /dev/null
+++ b/app/views/settings/preferences/appearance/show.html.haml
@@ -0,0 +1,41 @@
+- content_for :page_title do
+ = t('settings.appearance')
+
+= simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put } do |f|
+ .fields-row
+ .fields-group.fields-row__column.fields-row__column-6
+ = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale, hint: false
+ .fields-group.fields-row__column.fields-row__column-6
+ = f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false, hint: false
+
+ %h4= t 'appearance.advanced_web_interface'
+
+ %p.hint= t 'appearance.advanced_web_interface_hint'
+
+ .fields-group
+ = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label, hint: false
+
+ %h4= t 'appearance.animations_and_accessibility'
+
+ .fields-group
+ = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label, recommended: true
+ = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
+ = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
+
+ %h4= t 'appearance.confirmation_dialogs'
+
+ .fields-group
+ = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
+ = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
+ = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
+
+ %h4= t 'appearance.sensitive_content'
+
+ .fields-group
+ = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
+
+ .fields-group
+ = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
+
+ .actions
+ = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml
similarity index 87%
rename from app/views/settings/notifications/show.html.haml
rename to app/views/settings/preferences/notifications/show.html.haml
index 8aaac043b..acc646fc3 100644
--- a/app/views/settings/notifications/show.html.haml
+++ b/app/views/settings/preferences/notifications/show.html.haml
@@ -1,7 +1,7 @@
- content_for :page_title do
= t('settings.notifications')
-= simple_form_for current_user, url: settings_notifications_path, html: { method: :put } do |f|
+= simple_form_for current_user, url: settings_preferences_notifications_path, html: { method: :put } do |f|
= render 'shared/error_messages', object: current_user
.fields-group
@@ -14,6 +14,7 @@
- if current_user.staff?
= ff.input :report, as: :boolean, wrapper: :with_label
+ = ff.input :pending_account, as: :boolean, wrapper: :with_label
.fields-group
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml
new file mode 100644
index 000000000..c966a16bc
--- /dev/null
+++ b/app/views/settings/preferences/other/show.html.haml
@@ -0,0 +1,37 @@
+- content_for :page_title do
+ = t('settings.preferences')
+
+= simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
+ = render 'shared/error_messages', object: current_user
+
+ .fields-group
+ = f.input :setting_noindex, as: :boolean, wrapper: :with_label
+
+ .fields-group
+ = f.input :setting_hide_network, as: :boolean, wrapper: :with_label
+
+ .fields-group
+ = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true
+
+ %h4= t 'preferences.posting_defaults'
+
+ .fields-row
+ .fields-group.fields-row__column.fields-row__column-6
+ = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false
+
+ .fields-group.fields-row__column.fields-row__column-6
+ = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false, hint: false
+
+ .fields-group
+ = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
+
+ .fields-group
+ = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true
+
+ %h4= t 'preferences.public_timelines'
+
+ .fields-group
+ = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+
+ .actions
+ = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/preferences/show.html.haml b/app/views/settings/preferences/show.html.haml
deleted file mode 100644
index 3cb91631e..000000000
--- a/app/views/settings/preferences/show.html.haml
+++ /dev/null
@@ -1,63 +0,0 @@
-- content_for :page_title do
- = t('settings.preferences')
-
-%ul.quick-nav
- %li= link_to t('preferences.languages'), '#settings_languages'
- %li= link_to t('preferences.publishing'), '#settings_publishing'
- %li= link_to t('preferences.other'), '#settings_other'
- %li= link_to t('preferences.web'), '#settings_web'
-
-= simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
- = render 'shared/error_messages', object: current_user
-
- .fields-row#settings_languages
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false
-
- .fields-group
- = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
- %hr#settings_publishing/
-
- .fields-group
- = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_floating_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
- = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
-
- %hr#settings_other/
-
- .fields-group
- = f.input :setting_noindex, as: :boolean, wrapper: :with_label
-
- .fields-group
- = f.input :setting_hide_network, as: :boolean, wrapper: :with_label
-
- .fields-group
- = f.input :setting_show_application, as: :boolean, wrapper: :with_label
-
- %hr#settings_web/
-
- .fields-row
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false, hint: false
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false
-
- .fields-group
- = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
- = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
- = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
-
- .fields-group
- = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
-
- .fields-group
- = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
- = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
- = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
- = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
-
- .actions
- = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index eb232dc57..f8a8fddd3 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -7,7 +7,7 @@
.fields-row
.fields-row__column.fields-group.fields-row__column-6
= f.input :display_name, wrapper: :with_label, input_html: { maxlength: 30 }, hint: false
- = f.input :note, wrapper: :with_label, input_html: { maxlength: 160 }, hint: false
+ = f.input :note, wrapper: :with_label, input_html: { maxlength: 500 }, hint: false
.fields-row
.fields-row__column.fields-row__column-6
@@ -28,7 +28,7 @@
- if Setting.profile_directory
.fields-group
- = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable_html', min_followers: Account::MIN_FOLLOWERS_DISCOVERY, path: explore_path)
+ = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable_html', min_followers: Account::MIN_FOLLOWERS_DISCOVERY, path: explore_path), recommended: true
%hr.spacer/
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 4459581d9..95b96feef 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -19,16 +19,17 @@
- if status.spoiler_text?
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
- %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ %button.status__content__spoiler-link= t('statuses.show_more')
+ .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }
+ = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ - if status.preloadable_poll
+ = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
+ = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
- - if status.preloadable_poll
- = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
- = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
- - elsif !status.media_attachments.empty?
+ - if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 670, height: 380, detailed: true, inline: true, alt: video.description do
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), blurhash: video.blurhash, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 670, height: 380, detailed: true, inline: true, alt: video.description do
= render partial: 'stream_entries/attachment_list', locals: { attachments: status.media_attachments }
- else
= react_component :media_gallery, height: 380, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } do
diff --git a/app/views/stream_entries/_og_image.html.haml b/app/views/stream_entries/_og_image.html.haml
index e1b977da3..67f9274b6 100644
--- a/app/views/stream_entries/_og_image.html.haml
+++ b/app/views/stream_entries/_og_image.html.haml
@@ -7,6 +7,8 @@
- unless media.file.meta.nil?
= opengraph 'og:image:width', media.file.meta.dig('original', 'width')
= opengraph 'og:image:height', media.file.meta.dig('original', 'height')
+ - if media.description.present?
+ = opengraph 'og:image:alt', media.description
- elsif media.video? || media.gifv?
- player_card = true
= opengraph 'og:image', full_asset_url(media.file.url(:small))
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index ba22c5340..0f9c65af0 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -23,16 +23,17 @@
- if status.spoiler_text?
%p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
- %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ %button.status__content__spoiler-link= t('statuses.show_more')
+ .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }
+ = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ - if status.preloadable_poll
+ = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
+ = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
- - if status.preloadable_poll
- = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
- = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
- - elsif !status.media_attachments.empty?
+ - if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description do
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), blurhash: video.blurhash, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description do
= render partial: 'stream_entries/attachment_list', locals: { attachments: status.media_attachments }
- else
= react_component :media_gallery, height: 343, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } do
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index f9c385ea3..5e4c391f0 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -51,7 +51,7 @@ class ActivityPub::DeliveryWorker
end
def response_error_unsalvageable?(response)
- (400...500).cover?(response.code) && response.code != 429
+ (400...500).cover?(response.code) && ![401, 408, 429].include?(response.code)
end
def failure_tracker
diff --git a/app/workers/activitypub/distribute_poll_update_worker.rb b/app/workers/activitypub/distribute_poll_update_worker.rb
index 5eaca6fda..1e87fa4bf 100644
--- a/app/workers/activitypub/distribute_poll_update_worker.rb
+++ b/app/workers/activitypub/distribute_poll_update_worker.rb
@@ -2,6 +2,7 @@
class ActivityPub::DistributePollUpdateWorker
include Sidekiq::Worker
+ include Payloadable
sidekiq_options queue: 'push', unique: :until_executed, retry: 0
@@ -41,20 +42,8 @@ class ActivityPub::DistributePollUpdateWorker
@inboxes
end
- def signed_payload
- Oj.dump(ActivityPub::LinkedDataSignature.new(unsigned_payload).sign!(@account))
- end
-
- def unsigned_payload
- ActiveModelSerializers::SerializableResource.new(
- @status,
- serializer: ActivityPub::UpdatePollSerializer,
- adapter: ActivityPub::Adapter
- ).as_json
- end
-
def payload
- @payload ||= @status.distributable? ? signed_payload : Oj.dump(unsigned_payload)
+ @payload ||= Oj.dump(serialize_payload(@status, ActivityPub::UpdatePollSerializer, signer: @account))
end
def relay!
diff --git a/app/workers/activitypub/distribution_worker.rb b/app/workers/activitypub/distribution_worker.rb
index d83f01700..11b6a6111 100644
--- a/app/workers/activitypub/distribution_worker.rb
+++ b/app/workers/activitypub/distribution_worker.rb
@@ -2,6 +2,7 @@
class ActivityPub::DistributionWorker
include Sidekiq::Worker
+ include Payloadable
sidekiq_options queue: 'push'
@@ -41,20 +42,8 @@ class ActivityPub::DistributionWorker
end
end
- def signed_payload
- Oj.dump(ActivityPub::LinkedDataSignature.new(unsigned_payload).sign!(@account))
- end
-
- def unsigned_payload
- ActiveModelSerializers::SerializableResource.new(
- @status,
- serializer: ActivityPub::ActivitySerializer,
- adapter: ActivityPub::Adapter
- ).as_json
- end
-
def payload
- @payload ||= @status.distributable? ? signed_payload : Oj.dump(unsigned_payload)
+ @payload ||= Oj.dump(serialize_payload(@status, ActivityPub::ActivitySerializer, signer: @account))
end
def relay!
diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb
index a3abe72cf..05139f616 100644
--- a/app/workers/activitypub/processing_worker.rb
+++ b/app/workers/activitypub/processing_worker.rb
@@ -7,5 +7,7 @@ class ActivityPub::ProcessingWorker
def perform(account_id, body, delivered_to_account_id = nil)
ActivityPub::ProcessCollectionService.new.call(body, Account.find(account_id), override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true)
+ rescue ActiveRecord::RecordInvalid => e
+ Rails.logger.debug "Error processing incoming ActivityPub object: #{e}"
end
end
diff --git a/app/workers/activitypub/reply_distribution_worker.rb b/app/workers/activitypub/reply_distribution_worker.rb
index d8fea6c4e..1ff8a657e 100644
--- a/app/workers/activitypub/reply_distribution_worker.rb
+++ b/app/workers/activitypub/reply_distribution_worker.rb
@@ -5,6 +5,7 @@
class ActivityPub::ReplyDistributionWorker
include Sidekiq::Worker
+ include Payloadable
sidekiq_options queue: 'push'
@@ -27,19 +28,7 @@ class ActivityPub::ReplyDistributionWorker
@inboxes ||= @account.followers.inboxes
end
- def signed_payload
- Oj.dump(ActivityPub::LinkedDataSignature.new(unsigned_payload).sign!(@status.account))
- end
-
- def unsigned_payload
- ActiveModelSerializers::SerializableResource.new(
- @status,
- serializer: ActivityPub::ActivitySerializer,
- adapter: ActivityPub::Adapter
- ).as_json
- end
-
def payload
- @payload ||= @status.distributable? ? signed_payload : Oj.dump(unsigned_payload)
+ @payload ||= Oj.dump(serialize_payload(@status, ActivityPub::ActivitySerializer, signer: @status.account))
end
end
diff --git a/app/workers/activitypub/update_distribution_worker.rb b/app/workers/activitypub/update_distribution_worker.rb
index b9e5ff064..3a207f071 100644
--- a/app/workers/activitypub/update_distribution_worker.rb
+++ b/app/workers/activitypub/update_distribution_worker.rb
@@ -2,6 +2,7 @@
class ActivityPub::UpdateDistributionWorker
include Sidekiq::Worker
+ include Payloadable
sidekiq_options queue: 'push'
@@ -27,14 +28,6 @@ class ActivityPub::UpdateDistributionWorker
end
def signed_payload
- @signed_payload ||= Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account, sign_with: @options[:sign_with]))
- end
-
- def payload
- @payload ||= ActiveModelSerializers::SerializableResource.new(
- @account,
- serializer: ActivityPub::UpdateSerializer,
- adapter: ActivityPub::Adapter
- ).as_json
+ @signed_payload ||= Oj.dump(serialize_payload(@account, ActivityPub::UpdateSerializer, signer: @account, sign_with: @options[:sign_with]))
end
end
diff --git a/app/workers/import/relationship_worker.rb b/app/workers/import/relationship_worker.rb
index e9db20a46..616da6da9 100644
--- a/app/workers/import/relationship_worker.rb
+++ b/app/workers/import/relationship_worker.rb
@@ -5,15 +5,16 @@ class Import::RelationshipWorker
sidekiq_options queue: 'pull', retry: 8, dead: false
- def perform(account_id, target_account_uri, relationship)
+ def perform(account_id, target_account_uri, relationship, options = {})
from_account = Account.find(account_id)
target_account = ResolveAccountService.new.call(target_account_uri)
+ options.symbolize_keys!
return if target_account.nil?
case relationship
when 'follow'
- FollowService.new.call(from_account, target_account)
+ FollowService.new.call(from_account, target_account, options)
when 'unfollow'
UnfollowService.new.call(from_account, target_account)
when 'block'
@@ -21,7 +22,7 @@ class Import::RelationshipWorker
when 'unblock'
UnblockService.new.call(from_account, target_account)
when 'mute'
- MuteService.new.call(from_account, target_account)
+ MuteService.new.call(from_account, target_account, options)
when 'unmute'
UnmuteService.new.call(from_account, target_account)
end
diff --git a/babel.config.js b/babel.config.js
index a506ad8ce..55efafc40 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -17,7 +17,7 @@ module.exports = (api) => {
['@babel/proposal-object-rest-spread', { useBuiltIns: true }],
['@babel/proposal-decorators', { legacy: true }],
'@babel/proposal-class-properties',
- ['react-intl', { messagesDir: './build/messages' }],
+ ['react-intl', { messagesDir: './build/messages/' }],
'preval',
],
};
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index 1bcac154b..bc5a05f4a 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -51,7 +51,7 @@ ignore_unused:
- 'activerecord.errors.*'
- '{devise,pagination,doorkeeper}.*'
- '{date,datetime,time,number}.*'
- - 'simple_form.{yes,no}'
+ - 'simple_form.{yes,no,recommended}'
- 'simple_form.{placeholders,hints,labels}.*'
- 'simple_form.{error_notification,required}.:'
- 'errors.messages.*'
diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb
index 28201cc64..24ba16ae3 100644
--- a/config/initializers/rack_attack.rb
+++ b/config/initializers/rack_attack.rb
@@ -13,6 +13,10 @@ class Rack::Attack
)
end
+ def remote_ip
+ @remote_ip ||= (@env["action_dispatch.remote_ip"] || ip).to_s
+ end
+
def authenticated_user_id
authenticated_token&.resource_owner_id
end
@@ -28,6 +32,10 @@ class Rack::Attack
def web_request?
!api_request?
end
+
+ def paging_request?
+ params['page'].present? || params['min_id'].present? || params['max_id'].present? || params['since_id'].present?
+ end
end
PROTECTED_PATHS = %w(
@@ -42,23 +50,36 @@ class Rack::Attack
# (blocklist & throttles are skipped)
Rack::Attack.safelist('allow from localhost') do |req|
# Requests are allowed if the return value is truthy
- req.ip == '127.0.0.1' || req.ip == '::1'
+ req.remote_ip == '127.0.0.1' || req.remote_ip == '::1'
end
throttle('throttle_authenticated_api', limit: 300, period: 5.minutes) do |req|
req.authenticated_user_id if req.api_request?
end
- throttle('throttle_unauthenticated_api', limit: 7_500, period: 5.minutes) do |req|
- req.ip if req.api_request?
+ throttle('throttle_unauthenticated_api', limit: 300, period: 5.minutes) do |req|
+ req.remote_ip if req.api_request? && req.unauthenticated?
end
throttle('throttle_api_media', limit: 30, period: 30.minutes) do |req|
req.authenticated_user_id if req.post? && req.path.start_with?('/api/v1/media')
end
+ throttle('throttle_media_proxy', limit: 30, period: 30.minutes) do |req|
+ req.remote_ip if req.path.start_with?('/media_proxy')
+ end
+
throttle('throttle_api_sign_up', limit: 5, period: 30.minutes) do |req|
- req.ip if req.post? && req.path == '/api/v1/accounts'
+ req.remote_ip if req.post? && req.path == '/api/v1/accounts'
+ end
+
+ # Throttle paging, as it is mainly used for public pages and AP collections
+ throttle('throttle_authenticated_paging', limit: 300, period: 15.minutes) do |req|
+ req.authenticated_user_id if req.paging_request?
+ end
+
+ throttle('throttle_unauthenticated_paging', limit: 300, period: 15.minutes) do |req|
+ req.remote_ip if req.paging_request? && req.unauthenticated?
end
API_DELETE_REBLOG_REGEX = /\A\/api\/v1\/statuses\/[\d]+\/unreblog/.freeze
@@ -69,7 +90,7 @@ class Rack::Attack
end
throttle('protected_paths', limit: 25, period: 5.minutes) do |req|
- req.ip if req.post? && req.path =~ PROTECTED_PATHS_REGEX
+ req.remote_ip if req.post? && req.path =~ PROTECTED_PATHS_REGEX
end
self.throttled_response = lambda do |env|
diff --git a/config/initializers/rack_attack_logging.rb b/config/initializers/rack_attack_logging.rb
index 2ddbfb99c..c30bd8a64 100644
--- a/config/initializers/rack_attack_logging.rb
+++ b/config/initializers/rack_attack_logging.rb
@@ -1,4 +1,6 @@
-ActiveSupport::Notifications.subscribe('rack.attack') do |_name, _start, _finish, _request_id, req|
+ActiveSupport::Notifications.subscribe(/rack_attack/) do |_name, _start, _finish, _request_id, payload|
+ req = payload[:request]
+
next unless [:throttle, :blacklist].include? req.env['rack.attack.match_type']
Rails.logger.info("Rate limit hit (#{req.env['rack.attack.match_type']}): #{req.ip} #{req.request_method} #{req.fullpath}")
end
diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb
index 386ede654..964526819 100644
--- a/config/initializers/simple_form.rb
+++ b/config/initializers/simple_form.rb
@@ -8,7 +8,16 @@ module AppendComponent
end
end
+module RecommendedComponent
+ def recommended(wrapper_options = nil)
+ return unless options[:recommended]
+ options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) }
+ nil
+ end
+end
+
SimpleForm.include_component(AppendComponent)
+SimpleForm.include_component(RecommendedComponent)
SimpleForm.setup do |config|
# Wrappers are used by the form builder to generate a
@@ -65,6 +74,7 @@ SimpleForm.setup do |config|
b.use :html5
b.wrapper tag: :div, class: :label_input do |ba|
+ ba.optional :recommended
ba.use :label
ba.wrapper tag: :div, class: :label_input__wrapper do |bb|
diff --git a/config/initializers/stoplight.rb b/config/initializers/stoplight.rb
index 1bd4ee6e7..7384b2e9a 100644
--- a/config/initializers/stoplight.rb
+++ b/config/initializers/stoplight.rb
@@ -1,3 +1,4 @@
require 'stoplight'
Stoplight::Light.default_data_store = Stoplight::DataStore::Redis.new(Redis.current)
+Stoplight::Light.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
diff --git a/config/locales/activerecord.co.yml b/config/locales/activerecord.co.yml
index 20c35b67f..0a9a936dd 100644
--- a/config/locales/activerecord.co.yml
+++ b/config/locales/activerecord.co.yml
@@ -2,8 +2,9 @@
co:
activerecord:
attributes:
- status:
- owned_poll: Scandagliu
+ poll:
+ expires_at: Fine
+ options: Scelte
errors:
models:
account:
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index e9465228d..57240a19e 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -2,8 +2,9 @@
cs:
activerecord:
attributes:
- status:
- owned_poll: Anketa
+ poll:
+ expires_at: Uzávěrka
+ options: Volby
errors:
models:
account:
diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml
index 19267cc4c..ce465545b 100644
--- a/config/locales/activerecord.de.yml
+++ b/config/locales/activerecord.de.yml
@@ -2,6 +2,9 @@
de:
activerecord:
attributes:
+ poll:
+ expires_at: Frist
+ options: Wahlen
status:
owned_poll: Umfrage
errors:
diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml
index e396860ea..abeca78ac 100644
--- a/config/locales/activerecord.el.yml
+++ b/config/locales/activerecord.el.yml
@@ -2,6 +2,9 @@
el:
activerecord:
attributes:
+ poll:
+ expires_at: Προθεσμία
+ options: Επιλογές
status:
owned_poll: Ψηφοφορία
errors:
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index c4b04c73a..e26e02592 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -1,6 +1,10 @@
---
fr:
activerecord:
+ attributes:
+ poll:
+ expires_at: Date butoir
+ options: Choix
errors:
models:
account:
diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml
index 65a83fbee..3792f3476 100644
--- a/config/locales/activerecord.gl.yml
+++ b/config/locales/activerecord.gl.yml
@@ -2,6 +2,9 @@
gl:
activerecord:
attributes:
+ poll:
+ expires_at: Caducidade
+ options: Opcións
status:
owned_poll: Sondaxe
errors:
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index 7bc4fc308..ce147819a 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -2,6 +2,9 @@
ja:
activerecord:
attributes:
+ poll:
+ expires_at: 期限
+ options: 項目
user:
email: メールアドレス
errors:
@@ -9,8 +12,8 @@ ja:
account:
attributes:
username:
- invalid: アルファベット・数値・アンダーバー(_)で入力してください
+ invalid: アルファベット・数字・アンダーバーの組み合わせで入力してください
status:
attributes:
reblog:
- taken: のブーストはすでに存在します
+ taken: は既にブーストされています
diff --git a/config/locales/activerecord.kk.yml b/config/locales/activerecord.kk.yml
index 41d3b2525..fba2e6054 100644
--- a/config/locales/activerecord.kk.yml
+++ b/config/locales/activerecord.kk.yml
@@ -1,6 +1,10 @@
---
kk:
activerecord:
+ attributes:
+ poll:
+ expires_at: Дедлайн
+ options: Таңдаулар
errors:
models:
account:
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
index eeabab34a..31348b18f 100644
--- a/config/locales/activerecord.nl.yml
+++ b/config/locales/activerecord.nl.yml
@@ -1,6 +1,12 @@
---
nl:
activerecord:
+ attributes:
+ poll:
+ expires_at: Deadline
+ options: Keuzes
+ status:
+ owned_poll: Poll
errors:
models:
account:
diff --git a/config/locales/activerecord.oc.yml b/config/locales/activerecord.oc.yml
index e664bd409..1157d9769 100644
--- a/config/locales/activerecord.oc.yml
+++ b/config/locales/activerecord.oc.yml
@@ -2,8 +2,9 @@
oc:
activerecord:
attributes:
- status:
- owned_poll: Sondatge
+ poll:
+ expires_at: Data limita
+ options: Opcions
errors:
models:
account:
diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml
index d2519fe90..85150c1e7 100644
--- a/config/locales/activerecord.pt-BR.yml
+++ b/config/locales/activerecord.pt-BR.yml
@@ -1,6 +1,10 @@
---
pt-BR:
activerecord:
+ attributes:
+ poll:
+ expires_at: Expira em
+ options: Escolhas
errors:
models:
account:
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 2a2d62a7e..d4529428a 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -1,6 +1,10 @@
---
ru:
activerecord:
+ attributes:
+ poll:
+ expires_at: Крайний срок
+ options: Варианты
errors:
models:
account:
diff --git a/config/locales/activerecord.sk.yml b/config/locales/activerecord.sk.yml
index bba7c66f2..26f6c9737 100644
--- a/config/locales/activerecord.sk.yml
+++ b/config/locales/activerecord.sk.yml
@@ -2,6 +2,9 @@
sk:
activerecord:
attributes:
+ poll:
+ expires_at: Trvá do
+ options: Voľby
status:
owned_poll: Anketa
errors:
@@ -13,4 +16,4 @@ sk:
status:
attributes:
reblog:
- taken: status už existuje
+ taken: príspevku už existuje
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index d409ad99a..0d961e486 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -498,7 +498,6 @@ ar:
warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين !
your_token: رمز نفاذك
auth:
- agreement_html: بمجرد النقر على "التسجيل" أسفله، فإنك تُصرِّح قبول
قواعد مثيل الخادوم و
شروط الخدمة التي نوفرها لك.
change_password: الكلمة السرية
confirm_email: تأكيد عنوان البريد الإلكتروني
delete_account: حذف حساب
@@ -737,10 +736,7 @@ ar:
prev: السابق
truncate: و
preferences:
- languages: اللغات
other: إعدادات أخرى
- publishing: النشر
- web: الويب
remote_follow:
acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط
missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك
@@ -813,9 +809,7 @@ ar:
migrate: تهجير الحساب
notifications: الإخطارات
preferences: التفضيلات
- settings: الإعدادات
two_factor_authentication: المُصادقة بخُطوَتَيْن
- your_apps: تطبيقاتك
statuses:
attached:
description: 'مُرفَق : %{attached}'
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index cbfd27b04..a2df72ba6 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -123,7 +123,6 @@ ast:
invalid_url: La URL apurrida nun ye válida
warning: Ten curiáu con estos datos, ¡enxamás nun los compartas con naide!
auth:
- agreement_html: Faciendo clic en «Aniciar sesión» aceutes siguir
les regles de la instancia y
los nuesos términos del serviciu.
change_password: Contraseña
delete_account: Desaniciu de la cuenta
delete_account_html: Si deseyes desaniciar la to cuenta, pues
siguir equí. Va pidísete la confirmación.
@@ -246,10 +245,6 @@ ast:
format: "%n%u"
pagination:
next: Siguiente
- preferences:
- languages: Llingües
- publishing: Espublización
- web: Web
remote_follow:
acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer
no_account_html: "¿Nun tienes una cuenta? Pues
rexistrate equí"
@@ -301,7 +296,6 @@ ast:
import: Importación
notifications: Avisos
preferences: Preferencies
- settings: Axustes
two_factor_authentication: Autenticación en dos pasos
statuses:
attached:
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 2424d9399..57aa6f87e 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -122,7 +122,6 @@ bg:
export: Експортиране на данни
import: Импортиране
preferences: Предпочитания
- settings: Настройки
two_factor_authentication: Двустепенно удостоверяване
statuses:
open_in_web: Отвори в уеб
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index c9e0e092a..5663afeab 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -68,6 +68,7 @@ ca:
admin: Administrador
bot: Bot
moderator: Moderador
+ unavailable: Perfil inaccessible
unfollow: Deixa de seguir
admin:
account_actions:
@@ -80,6 +81,7 @@ ca:
destroyed_msg: Nota de moderació destruïda amb èxit!
accounts:
approve: Aprova
+ approve_all: Aprova'ls tots
are_you_sure: N'estàs segur?
avatar: Avatar
by_domain: Domini
@@ -132,6 +134,7 @@ ca:
moderation_notes: Notes de moderació
most_recent_activity: Activitat més recent
most_recent_ip: IP més recent
+ no_account_selected: No s'han canviat els comptes perque no s'han seleccionat
no_limits_imposed: Sense límits imposats
not_subscribed: No subscrit
outbox_url: URL de la bústia de sortida
@@ -144,12 +147,13 @@ ca:
push_subscription_expires: La subscripció PuSH expira
redownload: Actualitza el perfil
reject: Rebutja
+ reject_all: Rebutja'ls tots
remove_avatar: Eliminar avatar
remove_header: Treu la capçalera
resend_confirmation:
- already_confirmed: Este usuario ya está confirmado
+ already_confirmed: Aquest usuari ja està confirmat
send: Reenviar el correu electrònic de confirmació
- success: "¡Correo electrónico de confirmación enviado con éxito!"
+ success: Correu electrònic de confirmació enviat amb èxit!
reset: Reinicialitza
reset_password: Restableix la contrasenya
resubscribe: Torna a subscriure
@@ -170,6 +174,7 @@ ca:
statuses: Estats
subscribe: Subscriu
suspended: Suspès
+ time_in_queue: Esperant en la cua %{time}
title: Comptes
unconfirmed_email: Correu electrònic sense confirmar
undo_silenced: Deixa de silenciar
@@ -245,6 +250,7 @@ ca:
feature_profile_directory: Directori de perfils
feature_registrations: Registres
feature_relay: Relay de la Federació
+ feature_timeline_preview: Vista previa de línia de temps
features: Característiques
hidden_service: Federació amb serveis ocults
open_reports: informes oberts
@@ -264,6 +270,7 @@ ca:
created_msg: El bloqueig de domini ara s'està processant
destroyed_msg: El bloqueig de domini s'ha desfet
domain: Domini
+ existing_domain_block_html: Ja has imposat uns limits més estrictes a %{name}, l'hauries de
desbloquejar-lo primer.
new:
create: Crea un bloqueig
hint: El bloqueig de domini no impedirà la creació de nous comptes en la base de dades, però s'aplicaran de manera retroactiva mètodes de moderació específics sobre aquests comptes.
@@ -293,7 +300,7 @@ ca:
undo: Desfés
undo: Desfés el bloqueig del domini
email_domain_blocks:
- add_new: Afegeix
+ add_new: Afegir nou
created_msg: S'ha creat el bloc de domini de correu electrònic
delete: Suprimeix
destroyed_msg: S'ha eliminat correctament el bloc del domini de correu
@@ -316,10 +323,10 @@ ca:
limited: Limitades
title: Moderació
title: Federació
- total_blocked_by_us: Bloquejades per nosaltres
- total_followed_by_them: Seguides per ells
- total_followed_by_us: Seguides per nosaltres
- total_reported: Informes sobre elles
+ total_blocked_by_us: Bloquejats per nosaltres
+ total_followed_by_them: Seguits per ells
+ total_followed_by_us: Seguits per nosaltres
+ total_reported: Informes sobre ells
total_storage: Adjunts multimèdia
invites:
deactivate_all: Desactiva-ho tot
@@ -329,6 +336,8 @@ ca:
expired: Caducat
title: Filtre
title: Convida
+ pending_accounts:
+ title: Comptes pendents (%{count})
relays:
add_new: Afegiu un nou relay
delete: Esborra
@@ -336,7 +345,7 @@ ca:
disable: Inhabilita
disabled: Desactivat
enable: Activat
- enable_hint: Una vegada habilitat, el teu servidor es subscriurà a tots els toots públics d'aquest relay i començarà a enviar-hi tots els toots públics d'aquest servidor.
+ enable_hint: Una vegada habilitat el teu servidor es subscriurà a tots els toots públics d'aquest relay i començarà a enviar-hi tots els toots públics d'aquest servidor.
enabled: Activat
inbox_url: URL del Relay
pending: S'està esperant l'aprovació del relay
@@ -385,7 +394,7 @@ ca:
desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desblocats. El valor predeterminat quan està buit és tots els administradors locals.
title: El seguiment per defecte per als usuaris nous
contact_information:
- email: Introdueix una adreça de correu electrònic píblica
+ email: Introdueix una adreça de correu electrònic pública
username: Nom d'usuari del contacte
custom_css:
desc_html: Modifica l'aspecte amb CSS carregat a cada pàgina
@@ -490,6 +499,12 @@ ca:
body: "%{reporter} ha informat de %{target}"
body_remote: Algú des de el domini %{domain} ha informat sobre %{target}
subject: Informe nou per a %{instance} (#%{id})
+ appearance:
+ advanced_web_interface: Interfície web avançada
+ advanced_web_interface_hint: 'Si vols fer ús de tota l''amplada de la teva pantalla, l''interfície web avançada et permet configurar diverses columnes per a veure molta més informació al mateix temps: Inici, notificacions, línia de temps federada i qualsevol número de llistes i etiquetes.'
+ animations_and_accessibility: Animacions i accessibilitat
+ confirmation_dialogs: Diàlegs de confirmació
+ sensitive_content: Contingut sensible
application_mailer:
notification_preferences: Canvia les preferències de correu
salutation: "%{name},"
@@ -506,7 +521,6 @@ ca:
warning: Aneu amb compte amb aquestes dades. No les compartiu mai amb ningú!
your_token: El teu identificador d'accés
auth:
- agreement_html: Al fer clic en "Registre" acceptes respectar
les normes del servidor i
els nostres termes del servei.
apply_for_account: Demana una invitació
change_password: Contrasenya
checkbox_agreement_html: Estic d'acord amb les
normes del servidor i
els termes del servei
@@ -586,6 +600,9 @@ ca:
content: Ho sentim, però alguna cosa ha fallat a la nostra banda.
title: Aquesta pàgina no es correcta
noscript_html: Per a utilitzar Mastodon, activa el JavaScript. També pots provar una de les
aplicacions natives de Mastodon per a la vostra plataforma.
+ existing_username_validator:
+ not_found: no s'ha pogut trobar cap usuari local amb aquest nom d'usuari
+ not_found_multiple: no s'ha pogut trobar %{usernames}
exports:
archive_takeout:
date: Data
@@ -629,10 +646,31 @@ ca:
all: Tot
changes_saved_msg: Els canvis s'han desat correctament!
copy: Copia
+ order_by: Ordena per
save_changes: Desa els canvis
validation_errors:
one: Alguna cosa no va bé! Si us plau, revisa l'error
other: Alguna cosa no va bé! Si us plau, revisa %{count} errors més a baix
+ html_validator:
+ invalid_markup: 'conté HTML markup no vàlid: %{error}'
+ identity_proofs:
+ active: Actiu
+ authorize: Sí, autoritza
+ authorize_connection_prompt: Autoritzar aquesta connexió criptogràfica?
+ errors:
+ failed: Ha fallat la connexió criptogràfica. Torna-ho a provar des de %{provider}.
+ keybase:
+ invalid_token: Els tokens de Keybase són hashs de signatures i han de tenir 66 caràcters hexadecimals
+ verification_failed: Keybase no reconeix aquest token com a signatura del usuari de Keybase %{kb_username}. Si us plau prova des de Keybase.
+ wrong_user: No es pot crear una prova per a %{proving} mentre es connectava com a %{current}. Inicia sessió com a %{proving} i prova de nou.
+ explanation_html: Aquí pots connectar criptogràficament les teves altres identitats com ara el teu perfil de Keybase. Això permet que altres persones t'envïin missatges xifrats i confiar en el contingut que els hi envies.
+ i_am_html: Sóc %{username} a %{service}.
+ identity: Identitat
+ inactive: Inactiu
+ publicize_checkbox: 'I tooteja això:'
+ publicize_toot: 'Està provat! Sóc %{username} a %{service}: %{url}'
+ status: Estat de verificació
+ view_proof: Veure la prova
imports:
modes:
merge: Fusionar
@@ -645,7 +683,7 @@ ca:
blocking: Llista de blocats
domain_blocking: Llistat de dominis bloquejats
following: Llista de seguits
- muting: Llista d'apagats
+ muting: Llista de silenciats
upload: Carregar
in_memoriam_html: En Memòria.
invites:
@@ -746,13 +784,14 @@ ca:
too_few_options: ha de tenir més d'una opció
too_many_options: no pot contenir més de %{max} opcions
preferences:
- languages: Llengues
other: Altre
- publishing: Publicació
- web: Web
+ posting_defaults: Valors predeterminats de publicació
+ public_timelines: Línies de temps públiques
relationships:
activity: Activitat del compte
dormant: Inactiu
+ last_active: Darrer actiu
+ most_recent: Més recent
moved: Mogut
mutual: Mútua
primary: Primari
@@ -828,21 +867,25 @@ ca:
revoke_success: S'ha revocat la sessió amb èxit
title: Sessions
settings:
+ account: Compte
+ account_settings: Ajustos del compte
+ appearance: Aparènça
authorized_apps: Aplicacions autoritzades
- back: Torna a l'inici
+ back: Torna a Mastodon
delete: Eliminació del compte
development: Desenvolupament
edit_profile: Editar perfil
- export: Exportar informació
+ export: Exportar dades
featured_tags: Etiquetes destacades
+ identity_proofs: Proves d'identitat
import: Importar
+ import_and_export: Importar i exportar
migrate: Migració del compte
notifications: Notificacions
preferences: Preferències
+ profile: Perfil
relationships: Seguits i seguidors
- settings: Configuració
two_factor_authentication: Autenticació de dos factors
- your_apps: Les teves aplicacions
statuses:
attached:
description: 'Adjunt: %{attached}'
@@ -862,7 +905,7 @@ ca:
over_character_limit: Límit de caràcters de %{max} superat
pin_errors:
limit: Ja has fixat el màxim nombre de toots
- ownership: El toot d'algú altre no es pot fixar
+ ownership: No es pot fixar el toot d'algú altre
private: No es pot fixar el toot no públic
reblog: No es pot fixar un impuls
poll:
@@ -886,7 +929,7 @@ ca:
sensitive_content: Contingut sensible
terms:
body_html: |
-
Privacy Policy
+
Política de Privacitat
Quina informació recollim?
@@ -1015,7 +1058,7 @@ ca:
welcome:
edit_profile_action: Configurar perfil
edit_profile_step: Pots personalitzar el teu perfil penjant un avatar, un encapçalament, canviant el teu nom de visualització i molt més. Si prefereixes revisar els seguidors nous abans de que et puguin seguir, pots blocar el teu compte.
- explanation: Aquests són alguns consells per començar
+ explanation: Aquests són alguns consells per a començar
final_action: Comença a publicar
final_step: 'Comença a publicar! Fins i tot sense seguidors, els altres poden veure els teus missatges públics, per exemple, a la línia de temps local i a les etiquetes ("hashtags"). És possible que vulguis presentar-te amb l''etiqueta #introductions.'
full_handle: El teu nom d'usuari sencer
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 71882b7cb..8b2a5fa5b 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -68,6 +68,7 @@ co:
admin: Amministratore
bot: Bot
moderator: Muderatore
+ unavailable: Prufile micca dispunibule
unfollow: Ùn siguità più
admin:
account_actions:
@@ -80,6 +81,7 @@ co:
destroyed_msg: Nota di muderazione sguassata!
accounts:
approve: Appruvà
+ approve_all: Appruvà tuttu
are_you_sure: Site sicuru·a?
avatar: Ritrattu di prufile
by_domain: Duminiu
@@ -132,6 +134,7 @@ co:
moderation_notes: Note di muderazione
most_recent_activity: Attività più ricente
most_recent_ip: IP più ricente
+ no_account_selected: Nisun contu hè statu cambiatu postu ch'ùn c'eranu micca selezziunati
no_limits_imposed: Nisuna limita imposta
not_subscribed: Micca abbunatu
outbox_url: URL di l’outbox
@@ -144,6 +147,7 @@ co:
push_subscription_expires: Spirata di l’abbunamentu PuSH
redownload: Mette à ghjornu u prufile
reject: Righjittà
+ reject_all: Righjittà tutti
remove_avatar: Toglie l’avatar
remove_header: Toglie l'intistatura
resend_confirmation:
@@ -170,6 +174,7 @@ co:
statuses: Statuti
subscribe: Abbunassi
suspended: Suspesu
+ time_in_queue: 'Attesa in fila: %{time}'
title: Conti
unconfirmed_email: E-mail micca cunfirmatu
undo_silenced: Ùn silenzà più
@@ -245,6 +250,7 @@ co:
feature_profile_directory: Annuariu di i prufili
feature_registrations: Arregistramenti
feature_relay: Ripetitore di federazione
+ feature_timeline_preview: Vista di a linea pubblica
features: Funziunalità
hidden_service: Federazione cù servizii piattati
open_reports: signalamenti aperti
@@ -264,6 +270,7 @@ co:
created_msg: U blucchime di u duminiu hè attivu
destroyed_msg: U blucchime di u duminiu ùn hè più attivu
domain: Duminiu
+ existing_domain_block_html: Avete digià impostu limite più strette nant'à %{name}, duvete sbluccallu primu.
new:
create: Creà un blucchime
hint: U blucchime di duminiu ùn impedirà micca a creazione di conti indè a database, mà metudi di muderazione specifiche saranu applicati.
@@ -287,8 +294,8 @@ co:
one: Un contu tuccatu indè a database
other: "%{count} conti tuccati indè a database"
retroactive:
- silence: Ùn silenzà più i conti nant’à stu duminiu
- suspend: Ùn suspende più i conti nant’à stu duminiu
+ silence: Ùn silenzà più i conti affettati di stu duminiu
+ suspend: Ùn suspende più i conti affettati di stu duminiu
title: Ùn bluccà più u duminiu %{domain}
undo: Annullà
undo: Annullà u blucchime di duminiu
@@ -329,6 +336,8 @@ co:
expired: Spirati
title: Filtrà
title: Invitazione
+ pending_accounts:
+ title: Conti in attesa (%{count})
relays:
add_new: Aghjustà un ripetitore
delete: Sguassà
@@ -490,6 +499,12 @@ co:
body: "%{reporter} hà palisatu %{target}"
body_remote: Qualch’unu da %{domain} hà palisatu %{target}
subject: Novu signalamentu nant’à %{instance} (#%{id})
+ appearance:
+ advanced_web_interface: Interfaccia web avanzata
+ advanced_web_interface_hint: 'S''è voi vulete fà usu di a larghezza sana di u vostru screnu, l''interfaccia web avanzata vi permette di cunfigurà parechje culonne sfarente per vede tutta l''infurmazione chì vulete vede in listessu tempu: Accolta, nutificazione, linea pubblica, è tutti l''hashtag è liste chì vulete.'
+ animations_and_accessibility: Animazione è accessibilità
+ confirmation_dialogs: Pop-up di cunfirmazione
+ sensitive_content: Cuntinutu sensibile
application_mailer:
notification_preferences: Cambià e priferenze e-mail
salutation: "%{name},"
@@ -506,7 +521,6 @@ co:
warning: Abbadate à quessi dati. Ùn i date à nisunu!
your_token: Rigenerà a fiscia d’accessu
auth:
- agreement_html: Cliccà "Arregistrassi" quì sottu vole dì chì site d’accunsentu per siguità e regule di u servore è e cundizione d’usu.
apply_for_account: Dumandà un'invitazione
change_password: Chjave d’accessu
checkbox_agreement_html: Sò d'accunsentu cù e regule di u servore è i termini di u serviziu
@@ -586,6 +600,9 @@ co:
content: Scusate, mà c’hè statu un prublemu cù u nostru servore.
title: Sta pagina ùn hè curretta
noscript_html: Mastodon nant’à u web hà bisognu di JavaScript per funziunà. Pudete ancu pruvà l’applicazione native per a vostra piattaforma.
+ existing_username_validator:
+ not_found: ùn si pudeva micca truvà un'utilizatore lucale cù stu cugnome
+ not_found_multiple: ùn si pudeva micca truvà %{usernames}
exports:
archive_takeout:
date: Data
@@ -629,10 +646,31 @@ co:
all: Tuttu
changes_saved_msg: Cambiamenti salvati!
copy: Cupià
+ order_by: Urdinà da
save_changes: Salvà e mudificazione
validation_errors:
one: Qualcosa ùn và bè! Verificate u prublemu quì sottu
other: Qualcosa ùn và bè! Verificate %{count} prublemi quì sottu
+ html_validator:
+ invalid_markup: 'cuntene codice HTML invalidu: %{error}'
+ identity_proofs:
+ active: Attiva
+ authorize: Ié, auturizà
+ authorize_connection_prompt: Auturizà sta cunnessione crittograffica?
+ errors:
+ failed: A cunnessione crittograffica s'hè fiascata. Ripruvate da %{provider}.
+ keybase:
+ invalid_token: E fiscie Keybase sò hash di firme è duvenu fà 66 caratteri esadecimali (0-9 A-F)
+ verification_failed: Keybase ùn ricunosce micca sta fiscia cum'una firma di l'utilizatore Keybase %{kb_username}. Ripruvate da Keybase.
+ wrong_user: Ùn si pò micca creà una prova per %{proving} mentre chì site cunnettatu·a cum'è %{current}. Cunnettatevi cum'è %{proving} è ripruvate.
+ explanation_html: Quì pudete cunnettà crittografficamente e vostre altre identità, cum'è per esempiu un prufile Keybase. Quessu permette à d'altre persone di mandà vi missaghji crittati, è d'affiducià i cuntinuti chì mandate.
+ i_am_html: Sò %{username} nant'à %{service}.
+ identity: Identità
+ inactive: Inattiva
+ publicize_checkbox: 'È mandà stu statutu:'
+ publicize_toot: 'Hè pruvata! Sò %{username} nant’à %{service}: %{url}'
+ status: Statutu di a verificazione
+ view_proof: Vede a prova
imports:
modes:
merge: Unisce
@@ -746,13 +784,14 @@ co:
too_few_options: deve avè più d'un'uzzione
too_many_options: ùn pò micca avè più di %{max} uzzione
preferences:
- languages: Lingue
other: Altre
- publishing: Pubblicazione
- web: Web
+ posting_defaults: Paramettri predefiniti
+ public_timelines: Linee pubbliche
relationships:
activity: Attività di u contu
dormant: Inattivu
+ last_active: Ultima attività
+ most_recent: Più ricente
moved: Spiazzatu
mutual: Mutuale
primary: Primariu
@@ -828,6 +867,9 @@ co:
revoke_success: Sessione rivucata
title: Sessioni
settings:
+ account: Contu
+ account_settings: Parametri di u contu
+ appearance: Apparenza
authorized_apps: Applicazione auturizate
back: Ritornu nant’à Mastodon
delete: Suppressione di u contu
@@ -835,14 +877,15 @@ co:
edit_profile: Mudificà u prufile
export: Spurtazione d’infurmazione
featured_tags: Hashtag in vista
+ identity_proofs: Prove d'identità
import: Impurtazione
+ import_and_export: Impurtazione è spurtazione
migrate: Migrazione di u contu
notifications: Nutificazione
preferences: Priferenze
+ profile: Prufile
relationships: Abbunamenti è abbunati
- settings: Parametri
two_factor_authentication: Identificazione à dui fattori
- your_apps: E vostre applicazione
statuses:
attached:
description: 'Aghjuntu: %{attached}'
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index fa4a00cb5..b9cc3ee7c 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -23,7 +23,7 @@ cs:
federation_hint_html: S účtem na %{instance} můžete sledovat lidi na jakémkoliv serveru Mastodon a jiných službách.
generic_description: "%{domain} je jedním ze serverů v síti"
get_apps: Vyzkoušejte mobilní aplikaci
- hosted_on: Server Mastodon na adrese %{domain}
+ hosted_on: Mastodon na adrese %{domain}
learn_more: Zjistit více
privacy_policy: Zásady soukromí
see_whats_happening: Podívejte se, co se děje
@@ -72,6 +72,7 @@ cs:
admin: Administrátor
bot: Robot
moderator: Moderátor
+ unavailable: Profil nedostupný
unfollow: Přestat sledovat
admin:
account_actions:
@@ -84,6 +85,7 @@ cs:
destroyed_msg: Moderátorská poznámka byla úspěšně zničena!
accounts:
approve: Schválit
+ approve_all: Schválit vše
are_you_sure: Jste si jistý/á?
avatar: Avatar
by_domain: Doména
@@ -136,6 +138,7 @@ cs:
moderation_notes: Moderátorské poznámky
most_recent_activity: Nejnovější aktivita
most_recent_ip: Nejnovější IP
+ no_account_selected: Nebyl změněn žádný účet, neboť žádný nebyl zvolen
no_limits_imposed: Nejsou nastavena žádná omezení
not_subscribed: Neodebírá
outbox_url: URL odchozí schránky
@@ -148,6 +151,7 @@ cs:
push_subscription_expires: Odebírání PuSH expiruje
redownload: Obnovit profil
reject: Zamítnout
+ reject_all: Zamítnout vše
remove_avatar: Odstranit avatar
remove_header: Odstranit záhlaví
resend_confirmation:
@@ -174,6 +178,7 @@ cs:
statuses: Tooty
subscribe: Odebírat
suspended: Pozastaven/a
+ time_in_queue: Čeká ve frontě %{time}
title: Účty
unconfirmed_email: Nepotvrzený e-mail
undo_silenced: Zrušit utišení
@@ -196,7 +201,7 @@ cs:
destroy_domain_block: "%{name} odblokoval/a doménu %{target}"
destroy_email_domain_block: "%{name} odebral/a e-mailovou doménu %{target} z černé listiny"
destroy_status: "%{name} odstranil/a toot uživatele %{target}"
- disable_2fa_user: "%{name} vypnul/a požadavek pro dvoufaktorovou autentikaci pro uživatele %{target}"
+ disable_2fa_user: "%{name} vypnul/a dvoufázové ověřování pro uživatele %{target}"
disable_custom_emoji: "%{name} zakázal/a emoji %{target}"
disable_user: "%{name} zakázal/a přihlašování pro uživatele %{target}"
enable_custom_emoji: "%{name} povolil/a emoji %{target}"
@@ -249,6 +254,7 @@ cs:
feature_profile_directory: Adresář profilů
feature_registrations: Registrace
feature_relay: Federovací most
+ feature_timeline_preview: Náhled časové osy
features: Vlastnosti
hidden_service: Federace se skrytými službami
open_reports: otevřená hlášení
@@ -268,6 +274,7 @@ cs:
created_msg: Blokace domény se právě vyřizuje
destroyed_msg: Blokace domény byla zrušena
domain: Doména
+ existing_domain_block_html: Pro účet %{name} jste již nastavil/a přísnější omezení, musíte jej nejdříve odblokovat.
new:
create: Vytvořit blokaci
hint: Blokace domény nezakáže vytváření záznamů účtů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderování.
@@ -292,8 +299,8 @@ cs:
one: Jeden účet v databázi byl ovlivněn
other: "%{count} účtů v databázi bylo ovlivněno"
retroactive:
- silence: Odtišit všechny existující účty z této domény
- suspend: Zrušit pozastavení všech existujících účtů z této domény
+ silence: Odtišit existující ovlivněné účty z této domény
+ suspend: Zrušit pozastavení existujících ovlivněných účtů z této domény
title: Zrušit blokaci domény %{domain}
undo: Odvolat
undo: Odvolat blokaci domény
@@ -335,6 +342,8 @@ cs:
expired: Vypršelé
title: Filtrovat
title: Pozvánky
+ pending_accounts:
+ title: Čekající účty (%{count})
relays:
add_new: Přidat nový most
delete: Smazat
@@ -496,6 +505,12 @@ cs:
body: "%{reporter} nahlásil/a uživatele %{target}"
body_remote: Někdo z %{domain} nahlásil uživatele %{target}
subject: Nové nahlášení pro %{instance} (#%{id})
+ appearance:
+ advanced_web_interface: Pokročilé webové rozhraní
+ advanced_web_interface_hint: 'Chcete-li využít celé šířky vaší obrazovky, dovolí vám pokročilé webové rozhraní nastavit si mnoho různých sloupců, takže můžete vidět ve stejnou chvíli tolik informací, kolik chcete: domovskou časovou osu, oznámení, federovanou časovou osu a libovolný počet seznamů a hashtagů.'
+ animations_and_accessibility: Animace a přístupnost
+ confirmation_dialogs: Potvrzovací dialogy
+ sensitive_content: Citlivý obsah
application_mailer:
notification_preferences: Změnit volby e-mailu
salutation: "%{name},"
@@ -512,7 +527,6 @@ cs:
warning: Buďte s těmito daty velmi opatrní. Nikdy je s nikým nesdílejte!
your_token: Váš přístupový token
auth:
- agreement_html: Kliknutím na tlačítko „Registrovat“ souhlasíte s následováním pravidel tohoto serveru a našich podmínek používání.
apply_for_account: Vyžádat si pozvánku
change_password: Heslo
checkbox_agreement_html: Souhlasím s pravidly serveru a podmínkami používání
@@ -639,6 +653,7 @@ cs:
all: Všechny
changes_saved_msg: Změny byly úspěšně uloženy!
copy: Kopírovat
+ order_by: Seřadit od
save_changes: Uložit změny
validation_errors:
few: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyby níže
@@ -649,16 +664,19 @@ cs:
identity_proofs:
active: Aktivní
authorize: Ano, autorizovat
- authorize_connection_prompt: Autorizovat tohle kryptografické spojení?
+ authorize_connection_prompt: Autorizovat toto kryptografické spojení?
errors:
failed: Kryptografické spojení selhalo. Prosím zkuste to znovu z %{provider}.
keybase:
invalid_token: Tokeny Keybase jsou hashe podpisů a musí být 66 znaků dlouhé
verification_failed: Keybase nerozpoznává tento token jako podpis uživatele %{kb_username} na Keybase. Prosím zkuste to znovu z Keybase.
+ wrong_user: Nelze vytvořit důkaz pro uživatele %{proving}, zatímco jste přihlášen/a jako %{current}. Přihlaste se jako %{proving} a zkuste to znovu.
explanation_html: Zde můžete kryptograficky připojit vaše ostatní identity, například profil Keybase. To dovolí jiným lidem vám posílat šifrované zprávy a důvěřovat obsahu, který jim pošlete.
i_am_html: Na %{service} jsem %{username}.
identity: Identita
inactive: Neaktivní
+ publicize_checkbox: 'A tootnout tohle:'
+ publicize_toot: 'Je to dokázáno! Na %{service} jsem %{username}: %{url}'
status: Stav ověření
view_proof: Zobrazit důkaz
imports:
@@ -759,6 +777,7 @@ cs:
quadrillion: bld
thousand: tis
trillion: bil
+ unit: ''
pagination:
newer: Novější
next: Další
@@ -776,13 +795,14 @@ cs:
too_few_options: musí mít více než jednu položku
too_many_options: nesmí obsahovat více než %{max} položky
preferences:
- languages: Jazyky
other: Ostatní
- publishing: Publikování
- web: Web
+ posting_defaults: Výchozí možnosti psaní
+ public_timelines: Veřejné časové osy
relationships:
activity: Aktivita účtu
dormant: Nečinné
+ last_active: Naposledy aktivních
+ most_recent: Naposledy přidaných
moved: Přesunuté
mutual: Vzájemné
primary: Primární
@@ -858,6 +878,9 @@ cs:
revoke_success: Relace úspěšně zamítnuta
title: Relace
settings:
+ account: Účet
+ account_settings: Nastavení účtu
+ appearance: Vzhled
authorized_apps: Autorizované aplikace
back: Zpět na Mastodon
delete: Smazání účtu
@@ -867,13 +890,13 @@ cs:
featured_tags: Zvýrazněné hashtagy
identity_proofs: Důkazy identity
import: Import
+ import_and_export: Import a export
migrate: Přesunutí účtu
notifications: Oznámení
preferences: Předvolby
+ profile: Profil
relationships: Sledovaní a sledující
- settings: Nastavení
- two_factor_authentication: Dvoufaktorové ověřování
- your_apps: Vaše aplikace
+ two_factor_authentication: Dvoufázové ověřování
statuses:
attached:
description: 'Přiloženo: %{attached}'
@@ -947,7 +970,7 @@ cs:
Jak vaše informace chráníme?
- Implenentujeme různá bezpečnostní opatření pro udržování bezpečnosti vašich osobních dat, když zadáváte, odesíláte, či přistupujete k vašim osobním datům. Mimo jiné je vaše relace v prohlížeči, jakož i provoz mezi vašimi aplikacemi a API, zabezpečena pomocí SSL, a vaše heslo je hashováno pomocí silného jednosměrného algoritmu. Pro větší zabezpečení vašeho účtu můžete povolit dvoufaktorovou autentikaci.
+ Implenentujeme různá bezpečnostní opatření pro udržování bezpečnosti vašich osobních dat, když zadáváte, odesíláte, či přistupujete k vašim osobním datům. Mimo jiné je vaše relace v prohlížeči, jakož i provoz mezi vašimi aplikacemi a API, zabezpečena pomocí SSL, a vaše heslo je hashováno pomocí silného jednosměrného algoritmu. Pro větší zabezpečení vašeho účtu můžete povolit dvoufázové ověřování.
@@ -1011,21 +1034,21 @@ cs:
default: "%d. %b %Y, %H:%M"
month: "%b %Y"
two_factor_authentication:
- code_hint: Pro potvrzení zadejte kód vygenerovaný vaší autentikační aplikací
- description_html: Povolíte-li dvoufaktorové ověřování, budete při přihlášení potřebovat telefon, který vám vygeneruje přístupové tokeny, které musíte zadat.
+ code_hint: Pro potvrzení zadejte kód vygenerovaný vaší ověřovací aplikací
+ description_html: Povolíte-li dvoufázové ověřování, budete při přihlášení potřebovat telefon, který vám vygeneruje přístupové tokeny, které musíte zadat.
disable: Zakázat
enable: Povolit
- enabled: Dvoufaktorové ověřování je povoleno
- enabled_success: Dvoufaktorové ověřování bylo úspěšně povoleno
+ enabled: Dvoufázové ověřování je povoleno
+ enabled_success: Dvoufázové ověřování bylo úspěšně povoleno
generate_recovery_codes: Vygenerovat záložní kódy
instructions_html: "Naskenujte tento QR kód Google Authenticatorem nebo jinou TOTP aplikací na vašem telefonu. Od teď bude tato aplikace generovat tokeny, které budete muset zadat při přihlášení."
lost_recovery_codes: Záložní kódy vám dovolí dostat se k vašemu účtu, pokud ztratíte telefon. Ztratíte-li záložní kódy, můžete je zde znovu vygenerovat. Vaše staré záložní kódy budou zneplatněny.
manual_instructions: 'Nemůžete-li oskenovat QR kód a je potřeba ho zadat ručně, zde je tajemství v prostém textu:'
recovery_codes: Záložní kódy pro obnovu
- recovery_codes_regenerated: Záložní kódy byly úspěšně znovu vygenerované
+ recovery_codes_regenerated: Záložní kódy byly úspěšně znovu vygenerovány
recovery_instructions_html: Ztratíte-li někdy přístup k vašemu telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů. Uchovávejte tyto kódy v bezpečí. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty.
setup: Nastavit
- wrong_code: Zadaný kód byl neplatný! Je serverový čas a čas na zařízení správný?
+ wrong_code: Zadaný kód byl neplatný! Je čas na serveru a na zařízení správný?
user_mailer:
backup_ready:
explanation: Vyžádal/a jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení!
@@ -1051,8 +1074,8 @@ cs:
edit_profile_action: Nastavit profil
edit_profile_step: Můžete si přizpůsobit svůj profil nahráním avataru a obrázku záhlaví, změnou zobrazovaného jména a dalších. Chcete-li posoudit nové sledující předtím, než vás mohou sledovat, můžete svůj účet uzamknout.
explanation: Zde je pár tipů na začátek
- final_action: Začněte přispívat
- final_step: 'Začněte psát! I když nemáte sledující, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a mezi hashtagy. Můžete se ostatním představit pomocí hashtagu #introductions.'
+ final_action: Začít psát
+ final_step: 'Začněte psát! I když nemáte sledující, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a v hashtazích. Můžete se ostatním představit pomocí hashtagu #introductions.'
full_handle: Vaše celá adresa profilu
full_handle_hint: Tohle je, co byste řekl/a svým přátelům, aby vám mohli posílat zprávy nebo vás sledovat z jiného serveru.
review_preferences_action: Změnit nastavení
@@ -1067,7 +1090,7 @@ cs:
users:
follow_limit_reached: Nemůžete sledovat více než %{limit} lidí
invalid_email: E-mailová adresa je neplatná
- invalid_otp_token: Neplatný kód pro dvoufaktorovou autentikaci
+ invalid_otp_token: Neplatný kód pro dvoufázové ověřování
otp_lost_help_html: Pokud jste ztratil/a přístup k oběma, můžete se spojit %{email}
seamless_external_login: Jste přihlášen/a přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná.
signed_in_as: 'Přihlášen/a jako:'
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 68a445e4c..3893d597f 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -506,7 +506,6 @@ cy:
warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth!
your_token: Eich tocyn mynediad
auth:
- agreement_html: Wrth glicio "Cofrestru" isod yr ydych yn cytuno i ddilyn y rheolau ar gyfer yr achos hwn a ein termau gwasanaeth.
change_password: Cyfrinair
confirm_email: Cadarnhau e-bost
delete_account: Dileu cyfrif
@@ -747,10 +746,7 @@ cy:
prev: Blaenorol
truncate: "…"
preferences:
- languages: Ieithoedd
other: Arall
- publishing: Cyhoeddi
- web: Gwe
remote_follow:
acct: Mewnbynnwch eich enwdefnyddiwr@parth yr ydych eisiau gweithredu ohonno
missing_resource: Ni ellir canfod yr URL ailgyferio angenrheidiol i'ch cyfrif
@@ -813,9 +809,7 @@ cy:
migrate: Mudo cyfrif
notifications: Hysbysiadau
preferences: Dewisiadau
- settings: Gosodiadau
two_factor_authentication: Awdurdodi dau-gam
- your_apps: Eich rhaglenni
statuses:
attached:
description: 'Ynghlwm: %{attached}'
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 88bf05d17..d0190d4a2 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -432,7 +432,6 @@ da:
warning: Vær meget forsigtig med disse data. Del dem aldrig med nogen!
your_token: Din adgangs token
auth:
- agreement_html: Ved at oprette dig erklærer du dig enig i at følge serverens regler og vores servicevilkår.
change_password: Kodeord
confirm_email: Bekræft email
delete_account: Slet konto
@@ -635,10 +634,7 @@ da:
prev: Forrige
truncate: "...…"
preferences:
- languages: Sprog
other: Andet
- publishing: Offentligører
- web: Web
remote_follow:
acct: Indtast dit brugernavn@domæne du vil handle fra
missing_resource: Kunne ikke finde det påkrævede omdirigerings link for din konto
@@ -701,9 +697,7 @@ da:
migrate: Konto migrering
notifications: Notifikationer
preferences: Præferencer
- settings: Indstillinger
two_factor_authentication: To-faktor godkendelse
- your_apps: Dine applikationer
statuses:
attached:
description: 'Vedhæftede: %{attached}'
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 6ac6e346b..04a3e7eaf 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -3,7 +3,7 @@ de:
about:
about_hashtag_html: Dies sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren.
about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!).
- about_this: Über diese Instanz
+ about_this: Über diesen Server
active_count_after: aktiv
active_footnote: Monatlich Aktive User (MAU)
administered_by: 'Administriert von:'
@@ -11,7 +11,7 @@ de:
apps: Mobile Apps
apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen
browse_directory: Durchsuche ein Profilverzeichnis und filtere nach Interessen
- browse_public_posts: Durchsuche einen Zeitleiste an öffentlichen Beiträgen auf Mastodon
+ browse_public_posts: Durchsuche eine Zeitleiste an öffentlichen Beiträgen auf Mastodon
contact: Kontakt
contact_missing: Nicht angegeben
contact_unavailable: N/A
@@ -68,6 +68,7 @@ de:
admin: Admin
bot: Bot
moderator: Moderator
+ unavailable: Profil nicht verfügbar
unfollow: Entfolgen
admin:
account_actions:
@@ -80,6 +81,7 @@ de:
destroyed_msg: Moderationsnotiz erfolgreich gelöscht!
accounts:
approve: Aktzeptieren
+ approve_all: Alle aktzeptieren
are_you_sure: Bist du sicher?
avatar: Profilbild
by_domain: Domain
@@ -132,6 +134,7 @@ de:
moderation_notes: Moderationsnotizen
most_recent_activity: Letzte Aktivität
most_recent_ip: Letzte IP-Adresse
+ no_account_selected: Keine Konten wurden verändert, da keine ausgewählt wurden
no_limits_imposed: Keine Limits eingesetzt
not_subscribed: Nicht abonniert
outbox_url: Postausgangs-URL
@@ -144,6 +147,7 @@ de:
push_subscription_expires: PuSH-Abonnement läuft aus
redownload: Profil neu laden
reject: Ablehnen
+ reject_all: Alle ablehnen
remove_avatar: Profilbild entfernen
remove_header: Header entfernen
resend_confirmation:
@@ -245,6 +249,7 @@ de:
feature_profile_directory: Profilverzeichnis
feature_registrations: Registrierung
feature_relay: Föderations-Relay
+ feature_timeline_preview: Zeitleistenvorschau
features: Eigenschaften
hidden_service: Föderation mit versteckten Diensten
open_reports: Offene Meldungen
@@ -329,6 +334,8 @@ de:
expired: Ausgelaufen
title: Filter
title: Einladungen
+ pending_accounts:
+ title: Ausstehende Konten (%{count})
relays:
add_new: Neues Relay hinzufügen
delete: Löschen
@@ -422,17 +429,17 @@ de:
open: Jeder kann sich registrieren
title: Registrierungsmodus
show_known_fediverse_at_about_page:
- desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage der Instanz angezeigt.
+ desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt.
title: Verwende öffentliche Zeitleiste für die Vorschau
show_staff_badge:
desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite
title: Zeige Mitarbeiter-Badge
site_description:
- desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diese Mastodon-Instanz ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>.
+ desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>.
title: Beschreibung des Servers
site_description_extended:
desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen
- title: Erweiterte Beschreibung der Instanz
+ title: Erweiterte Beschreibung des Servers
site_short_description:
desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server ausmacht. Falls leer, wird die Server-Beschreibung verwendet.
title: Kurze Server-Beschreibung
@@ -446,7 +453,7 @@ de:
timeline_preview:
desc_html: Auf der Frontseite die öffentliche Zeitleiste anzeigen
title: Zeitleisten-Vorschau
- title: Instanz-Einstellungen
+ title: Server-Einstellungen
statuses:
back_to_account: Zurück zum Konto
batch:
@@ -506,7 +513,6 @@ de:
warning: Sei mit diesen Daten sehr vorsichtig. Teile sie mit niemandem!
your_token: Dein Zugangs-Token
auth:
- agreement_html: Indem du dich registrierst, erklärst du dich mit den untenstehenden Regeln des Servers und der Datenschutzerklärung einverstanden.
apply_for_account: Eine Einladung anfragen
change_password: Passwort
checkbox_agreement_html: Ich akzeptiere die Server-Regeln und die Nutzungsbedingungen
@@ -530,7 +536,7 @@ de:
reset_password: Passwort zurücksetzen
security: Sicherheit
set_new_password: Neues Passwort setzen
- trouble_logging_in: Schwierigkeiten beim anmelden?
+ trouble_logging_in: Schwierigkeiten beim Anmelden?
authorize_follow:
already_following: Du folgst diesem Konto bereits
error: Das Remote-Konto konnte nicht geladen werden
@@ -632,6 +638,7 @@ de:
all: Alle
changes_saved_msg: Änderungen gespeichert!
copy: Kopieren
+ order_by: Sortieren nach
save_changes: Änderungen speichern
validation_errors:
one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler
@@ -647,10 +654,13 @@ de:
keybase:
invalid_token: Keybase-Tokens sind Hashsignaturen und müssen 66 Hexadezimalzeichen lang sein
verification_failed: Keybase nimmt dieses Token nicht als Signatur für Keybase-Benutzer %{kb_username} an. Bitte versuche es nochmal über Keybase.
+ wrong_user: Kann keinen Beweis für %{proving} erstellen während du als %{current} angemeldet bist. Melde dich als %{proving} an und versuche es noch einmal.
explanation_html: Hier kannst du kryptographisch deine anderen Identitäten wie dein Keybase-Profil verbinden. Dadurch können andere Leute dir verschlüsselte Nachrichten senden und dem Inhalt, den sie dir senden, vertrauen.
i_am_html: Ich bin %{username} auf %{service}.
identity: Identität
inactive: Inaktiv
+ publicize_checkbox: 'Und poste das:'
+ publicize_toot: 'Es ist offiziell! Ich bin %{username} auf %{service}: %{url}'
status: Verifizierungsstatus
view_proof: Zeige Nachweis
imports:
@@ -766,13 +776,12 @@ de:
too_few_options: muss mindestens einen Eintrag haben
too_many_options: kann nicht mehr als %{max} Einträge beinhalten
preferences:
- languages: Sprachen
other: Weiteres
- publishing: Beiträge
- web: Web
relationships:
activity: Kontoaktivität
dormant: Inaktiv
+ last_active: Zuletzt aktiv
+ most_recent: Neuste
moved: Umgezogen
mutual: Bekannt
primary: Primär
@@ -848,6 +857,9 @@ de:
revoke_success: Sitzung erfolgreich geschlossen
title: Sitzungen
settings:
+ account: Konto
+ account_settings: Konto & Sicherheit
+ appearance: Bearbeiten
authorized_apps: Autorisierte Anwendungen
back: Zurück zu Mastodon
delete: Konto löschen
@@ -857,13 +869,13 @@ de:
featured_tags: Empfohlene Hashtags
identity_proofs: Identitätsnachweise
import: Datenimport
+ import_and_export: Importieren und Exportieren
migrate: Konto-Umzug
notifications: Benachrichtigungen
preferences: Einstellungen
+ profile: Profil
relationships: Folgende und Follower
- settings: Einstellungen
two_factor_authentication: Zwei-Faktor-Auth
- your_apps: Deine Anwendungen
statuses:
attached:
description: 'Angehängt: %{attached}'
@@ -982,7 +994,7 @@ de:
Änderung an unserer Datenschutzerklärung
- Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wird diese Änderungen auf dieser Seite bekannt gegeben.
+ Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wir diese Änderungen auf dieser Seite bekannt gegeben.
Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index f0a5414b8..2d3c86c1f 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -8,10 +8,11 @@ fr:
failure:
already_authenticated: Vous êtes déjà connecté⋅e.
inactive: Votre compte n’est pas encore activé.
- invalid: "%{authentication_keys} invalide."
+ invalid: "%{authentication_keys} ou mot de passe invalide."
last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé.
locked: Votre compte est verrouillé.
- not_found_in_database: "%{authentication_keys} invalide."
+ not_found_in_database: "%{authentication_keys} ou mot de passe invalide."
+ pending: Votre compte est toujours en cours d'approbation.
timeout: Votre session a expiré. Veuillez vous reconnecter pour continuer.
unauthenticated: Vous devez vous connecter ou vous inscrire pour continuer.
unconfirmed: Vous devez valider votre compte pour continuer.
@@ -20,17 +21,18 @@ fr:
action: Vérifier l’adresse courriel
action_with_app: Confirmer et retourner à %{app}
explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel.
- extra_html: Merci de consultez également les règles de l’instance et nos conditions d’utilisation.
+ explanation_when_pending: Vous avez demandé à vous inscrire à %{host} avec cette adresse courriel. Une fois que vous aurez confirmé cette adresse, nous étudierons votre demande. Vous ne pourrez pas vous connecté d'ici-là. Si votre demande est refusée, vos données seront supprimées du serveur, aucune action supplémentaire de votre part n'est donc requise. Si vous n'êtes pas à l'origine de cette demande, veuillez ignorer ce courriel.
+ extra_html: Merci de consultez également les règles du serveur et nos conditions d’utilisation.
subject: 'Mastodon : Merci de confirmer votre inscription sur %{instance}'
title: Vérifier l’adresse courriel
email_changed:
explanation: 'L’adresse courriel de votre compte est en cours de modification pour devenir :'
- extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
+ extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte.
subject: 'Mastodon : Courriel modifié'
title: Nouvelle adresse courriel
password_change:
explanation: Le mot de passe de votre compte a été changé.
- extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
+ extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte.
subject: 'Mastodon : Votre mot de passe a été modifié avec succès'
title: Mot de passe modifié
reconfirmation_instructions:
@@ -60,6 +62,7 @@ fr:
signed_up: Bienvenue ! Vous êtes connecté⋅e.
signed_up_but_inactive: Vous êtes bien enregistré⋅e. Vous ne pouvez cependant pas vous connecter car votre compte n’est pas encore activé.
signed_up_but_locked: Vous êtes bien enregistré⋅e. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé.
+ signed_up_but_pending: Un message avec un lien de confirmation a été envoyé à votre adresse courriel. Après avoir cliqué sur le lien, nous étudierons votre demande. Vous serez informé·e si elle a été approuvée.
signed_up_but_unconfirmed: Un message contenant un lien de confirmation a été envoyé à votre adresse courriel. Ouvrez ce lien pour activer votre compte. Veuillez vérifier votre dossier d'indésirables si vous ne recevez pas le courriel.
update_needs_confirmation: Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse courriel. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. Si vous n'avez pas reçu le courriel, vérifiez votre dossier d'indésirables.
updated: Votre compte a été modifié avec succès.
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index 3dac63050..eed45efb7 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -12,7 +12,7 @@ ja:
last_attempt: あと1回失敗するとアカウントがロックされます。
locked: アカウントはロックされました。
not_found_in_database: "%{authentication_keys}かパスワードが誤っています。"
- pending: あなたのアカウントはまだ審査中です。
+ pending: あなたのアカウントはまだ承認待ちです。
timeout: セッションの有効期限が切れました。続行するには再度ログインしてください。
unauthenticated: 続行するにはログインするか、アカウントを作成してください。
unconfirmed: 続行するにはメールアドレスを確認する必要があります。
@@ -21,7 +21,7 @@ ja:
action: メールアドレスの確認
action_with_app: 確認し %{app} に戻る
explanation: このメールアドレスで%{host}にアカウントを作成しました。有効にするまであと一歩です。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。
- explanation_when_pending: このメールアドレスで%{host}への登録を申請しました。メールアドレスを確認したら、サーバー管理者が申請を審査します。それまでログインできません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。
+ explanation_when_pending: このメールアドレスで%{host}への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。それまでログインできません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。
extra_html: また サーバーのルール と 利用規約 もお読みください。
subject: 'Mastodon: メールアドレスの確認 %{instance}'
title: メールアドレスの確認
diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml
new file mode 100644
index 000000000..33ca8f842
--- /dev/null
+++ b/config/locales/devise.ko.yml
@@ -0,0 +1,76 @@
+---
+ko:
+ devise:
+ confirmations:
+ confirmed: 이메일이 성공적으로 확인 되었습니다.
+ send_instructions: 몇 분 이내로 확인 이메일이 발송 됩니다. 이메일을 받지 못 한 경우, 스팸 폴더를 확인하세요.
+ send_paranoid_instructions: 당신의 이메일이 우리의 DB에 있을 경우 몇 분 이내로 확인 메일이 발송 됩니다. 이메일을 받지 못 한 경우, 스팸 폴더를 확인하세요.
+ failure:
+ already_authenticated: 이미 로그인 된 상태입니다.
+ inactive: 계정이 활성화 되지 않았습니다.
+ invalid: 올바르지 않은 %{authentication_keys} 혹은 패스워드입니다.
+ last_attempt: 계정이 잠기기까지 한 번의 시도가 남았습니다.
+ locked: 계정이 잠겼습니다.
+ not_found_in_database: 올바르지 않은 %{authentication_keys} 혹은 패스워드입니다.
+ pending: 계정이 아직 심사 중입니다.
+ timeout: 세션이 만료 되었습니다. 다시 로그인 해 주세요.
+ unauthenticated: 계속 하려면 로그인을 해야 합니다.
+ unconfirmed: 계속 하려면 이메일을 확인 받아야 합니다.
+ mailer:
+ confirmation_instructions:
+ action: 이메일 확인
+ action_with_app: 확인하고 %{app}으로 돌아가기
+ explanation: 당신은 %{host}에서 이 이메일로 가입하셨습니다. 클릭만 하시면 계정이 활성화 됩니다. 만약 당신이 가입한 게 아니라면 이 메일을 무시해 주세요.
+ explanation_when_pending: 당신은 %{host}에 가입 요청을 하셨습니다. 이 이메일이 확인 되면 우리가 가입 요청을 리뷰하고 승인할 수 있습니다. 그 전까지는 로그인을 할 수 없습니다. 당신의 가입 요청이 거부 될 경우 당신에 대한 정보는 모두 삭제 되며 따로 요청 할 필요는 없습니다. 만약 당신이 가입 요청을 한 게 아니라면 이 메일을 무시해 주세요.
+ extra_html: 서버의 룰과 이용 약관도 확인해 주세요.
+ subject: '마스토돈: %{instance}에 대한 확인 메일'
+ title: 이메일 주소 확인
+ email_changed:
+ explanation: '당신의 계정에 대한 이메일이 다음과 같이 바뀌려고 합니다:'
+ extra: 만약 당신이 메일을 바꾸지 않았다면 누군가가 당신의 계정에 대한 접근 권한을 얻은 것입니다. 즉시 패스워드를 바꾼 후, 계정이 잠겼다면 서버의 관리자에게 연락 하세요.
+ subject: '마스토돈: 이메일이 변경 되었습니다'
+ title: 새 이메일 주소
+ password_change:
+ explanation: 당신의 계정 패스워드가 변경되었습니다.
+ extra: 만약 패스워드 변경을 하지 않았다면 누군가가 당신의 계정에 대한 접근 권한을 얻은 것입니다. 즉시 패스워드를 바꾼 후, 계정이 잠겼다면 서버의 관리자에게 연락 하세요.
+ subject: '마스토돈: 패스워드가 변경 되었습니다'
+ title: 패스워드가 변경 되었습니다
+ reconfirmation_instructions:
+ explanation: 이메일 주소를 바꾸려면 새 이메일 주소를 확인해야 합니다.
+ extra: 당신이 시도한 것이 아니라면 이 메일을 무시해 주세요. 위 링크를 클릭하지 않으면 이메일 변경은 일어나지 않습니다.
+ subject: '마스토돈: %{instance}에 대한 이메일 확인'
+ title: 이메일 주소 확인
+ reset_password_instructions:
+ action: 패스워드 변경
+ explanation: 계정에 대한 패스워드 변경을 요청하였습니다.
+ extra: 만약 당신이 시도한 것이 아니라면 이 메일을 무시해 주세요. 위 링크를 클릭해 패스워드를 새로 설정하기 전까지는 패스워드가 바뀌지 않습니다.
+ subject: '마스토돈: 패스워드 재설정 방법'
+ title: 패스워드 재설정
+ unlock_instructions:
+ subject: '마스토돈: 잠금 해제 방법'
+ omniauth_callbacks:
+ failure: '"%{reason}" 때문에 당신을 %{kind}에서 인증할 수 없습니다.'
+ success: 성공적으로 %{kind} 계정을 인증 했습니다.
+ passwords:
+ no_token: 패스워드 재설정 이메일을 거치지 않고는 여기에 올 수 없습니다. 만약 패스워드 재설정 메일에서 온 것이라면 URL이 맞는지 확인해 주세요.
+ send_instructions: 당신의 이메일 주소가 우리의 DB에 있아면 패스워드 복구 링크가 몇 분 이내에 메일로 발송 됩니다. 만약 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ send_paranoid_instructions: 당신의 이메일 주소가 우리의 DB에 있아면 패스워드 복구 링크가 몇 분 이내에 메일로 발송 됩니다. 만약 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ updated: 패스워드가 재설정 되었습니다. 로그인 되었습니다.
+ updated_not_active: 패스워드가 성공적으로 변경 되었습니다.
+ registrations:
+ destroyed: 안녕히 가세요! 계정이 성공적으로 제거되었습니다. 다시 만나기를 희망합니다.
+ signed_up: 안녕하세요! 성공적으로 가입했습니다.
+ signed_up_but_inactive: 성공적으로 가입 했습니다. 그러나, 계정이 활성화 되지 않았기 때문에 아직 로그인 할 수 없습니다.
+ signed_up_but_locked: 성공적으로 가입 했습니다. 그러나, 계정이 잠겨있기 때문에 아직 로그인 할 수 없습니다.
+ signed_up_but_pending: 확인 링크를 포함한 메일이 발송 되었습니다. 링크를 클릭한 이후, 우리가 당신의 신청양식을 검토합니다. 승인이 되면 알림을 발송합니다.
+ signed_up_but_unconfirmed: 확인 링크를 포함한 메일이 발송 되었습니다. 링크를 클릭해 계정을 활성화 하세요. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ update_needs_confirmation: 계정 정보를 업데이트 했습니다. 하지만 새 이메일 주소에 대한 확인이 필요합니다. 이메일을 확인 한 후 링크를 통해 새 이메일을 확인 하세요. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ updated: 계정 정보가 성공적으로 업데이트 되었습니다.
+ sessions:
+ already_signed_out: 로그아웃 되었습니다.
+ signed_in: 로그인 되었습니다.
+ signed_out: 로그아웃 되었습니다.
+ unlocks:
+ send_instructions: 몇 분 이내로 계정 잠금 해제에 대한 안내 메일이 발송 됩니다. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ send_paranoid_instructions: 계정이 존재한다면 몇 분 이내로 계정 잠금 해제에 대한 안내 메일이 발송 됩니다. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
+ unlocked: 계정이 성공적으로 잠금 해제 되었습니다. 계속 하려면 로그인 하세요.
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index a768d3c1d..96d14d9d2 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -13,6 +13,7 @@ nl:
last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
locked: Jouw account is opgeschort.
not_found_in_database: "%{authentication_keys} of wachtwoord ongeldig."
+ pending: Jouw account moet nog steeds worden beoordeeld.
timeout: Jouw sessie is verlopen, log opnieuw in.
unauthenticated: Je dient in te loggen of te registreren.
unconfirmed: Je dient eerst jouw account te bevestigen.
@@ -21,6 +22,7 @@ nl:
action: E-mailadres verifiëren
action_with_app: Bevestigen en naar %{app} teruggaan
explanation: Je hebt een account op %{host} aangemaakt en met één klik kun je deze activeren. Wanneer jij dit account niet hebt aangemaakt, mag je deze e-mail negeren.
+ explanation_when_pending: Je vroeg met dit e-mailadres een uitnodiging aan voor %{host}. Nadat je jouw e-mailadres hebt bevestigd, beoordelen we jouw aanvraag. Je kunt tot dan nog niet inloggen. Wanneer jouw aanvraag wordt afgekeurd, worden jouw gegevens verwijderd en hoef je daarna verder niets meer te doen. Wanneer jij dit niet was, kun je deze e-mail negeren.
extra_html: Bekijk ook de regels van de Mastodonserver en onze gebruiksvoorwaarden.
subject: 'Mastodon: E-mail bevestigen voor %{instance}'
title: E-mailadres verifiëren
@@ -61,6 +63,7 @@ nl:
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 is opgeschort.
+ signed_up_but_pending: Er is een bericht met een bevestigingslink naar jouw e-mailadres verzonden. Nadat je op deze link hebt geklikt nemen we jouw aanvraag in behandeling. Je wordt op de hoogte gesteld wanneer deze wordt goedgekeurd.
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.
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 4f9007e1d..a0af51c32 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -12,6 +12,7 @@ pl:
last_attempt: Masz jeszcze jedną próbę; Twoje konto zostanie zablokowane jeśli się nie powiedzie.
locked: Twoje konto zostało zablokowane.
not_found_in_database: Nieprawidłowy %{authentication_keys} lub hasło.
+ pending: Twoje konto oczekuje na przegląd.
timeout: Twoja sesja wygasła. Zaloguj się ponownie, aby kontynuować..
unauthenticated: Zapisz się lub zaloguj, aby kontynuować.
unconfirmed: Zweryfikuj adres e-mail, aby kontynuować.
@@ -20,6 +21,7 @@ pl:
action: Zweryfikuj adres e-mail
action_with_app: Potwierdź i wróć do %{app}
explanation: Utworzyłeś(-aś) konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail.
+ explanation_when_pending: Poprosiłeś(-aś) o zaproszenie na %{host} używajac tego adresu e-mail. Kiedy potwierdzisz swój adres e-mail, przejrzymy Twoje podanie. Do tego czasu nie możesz się zalogować. Jeżeli Twoje podanie zostanie odrzucone, Twoje dane zostaną usunięte i nie będziesz musiał(-a) podejmować żadnych dodatkowych działań. Jeżeli to nie Ty, zignoruj ten e-mail.
extra_html: Przeczytaj też regulamin serwera i nasze zasady użytkowania.
subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail na %{instance}'
title: Zweryfikuj adres e-mail
@@ -60,6 +62,7 @@ pl:
signed_up: Witamy! Twoje konto zostało utworzone.
signed_up_but_inactive: Twoje konto zostało utworzone. Nie mogliśmy Cię jednak zalogować, ponieważ konto nie zostało jeszcze aktywowane.
signed_up_but_locked: Twoje konto zostało utworzone. Nie mogliśmy Cię jednak zalogować, ponieważ konto jest zablokowane.
+ signed_up_but_pending: Na Twój adres e-mail została wysłana wiadomosć z odnośnikiem potwierdzającym. Po kliknięciu w odnośnik, przejrzymy Twoje podanie. Zostaniesz poinformowany(-a), gdy zostanie ono przyjęte.
signed_up_but_unconfirmed: Na Twój adres e-mail została wysłana wiadomosć z odnośnikiem potwierdzającym. Kliknij w odnośnik, aby aktywować konto. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
update_needs_confirmation: Konto zostało zaktualizowane, musimy jednak zweryfikować Twój nowy adres e-mail. Została na niego wysłana wiadomość z odnośnikiem potwierdzającym. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
updated: Konto zostało zaktualizowane.
diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml
index ede004892..0b6d36187 100644
--- a/config/locales/devise.pt-BR.yml
+++ b/config/locales/devise.pt-BR.yml
@@ -12,6 +12,7 @@ pt-BR:
last_attempt: Você tem apenas mais uma tentativa sobrando antes que a sua conta seja bloqueada.
locked: A sua conta está bloqueada.
not_found_in_database: "%{authentication_keys} ou senha inválida."
+ pending: Sua conta ainda está sendo revisada.
timeout: A sua sessão expirou. Por favor, entre novamente para continuar.
unauthenticated: Você precisa entrar ou cadastrar-se antes de continuar.
unconfirmed: Você precisa confirmar o seu endereço de e-mail antes de continuar.
@@ -20,6 +21,7 @@ pt-BR:
action: Verificar endereço de e-mail
action_with_app: Confirmar e voltar para %{app}
explanation: Você criou uma conta em %{host} com esse endereço de e-mail. Você está a um clique de ativá-la. Se não foi você, por favor ignore esse e-mail.
+ explanation_when_pending: Você pediu um convite para %{host} com esse endereço de email. Assim que você confirmar o seu endereço de e-mail, iremos revisar o seu pedido. Você não poderá fazer login até então. Se sua aplicação for rejeitada, seus dados serão removidos e nenhuma ação será necessária da sua parte. Se você não pediu por isso, por favor ignore esse e-mail.
extra_html: Por favor confira também as regras da instância e nossos termos de serviço.
subject: 'Mastodon: Instruções de confirmação para %{instance}'
title: Verifique o endereço de e-mail
@@ -60,6 +62,7 @@ pt-BR:
signed_up: Bem vindo! A sua conta foi registrada com sucesso.
signed_up_but_inactive: A sua conta foi registrada. No entanto, não abrimos a sua sessão porque a sua conta ainda não foi ativada.
signed_up_but_locked: A sua conta foi registrada. No entanto, não abrimos a sua sessão porque a sua conta está bloqueada.
+ signed_up_but_pending: Uma mensagem com um link de confirmação foi enviada ao seu endereço de e-mail. Depois que você clicar no link, revisaremos seu pedido. Você será notificado se seu pedido for aprovado.
signed_up_but_unconfirmed: Uma mensagem com um link de confirmação foi enviada para o seu endereço de e-mail. Por favor, siga o link para ativar a sua conta e, caso não tenha recebido esta mensagem, cheque a sua pasta de spam.
update_needs_confirmation: Você mudou o seu endereço de e-mail ou a sua senha, mas é necessário confirmar a mudança. Por favor siga o link que foi enviado para o seu novo endereço de e-mail e, caso não tenha recebido esta mensagem, cheque a sua pasta de spam.
updated: A sua conta foi alterada com sucesso.
diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml
index 2186066c9..65441f24b 100644
--- a/config/locales/devise.ru.yml
+++ b/config/locales/devise.ru.yml
@@ -3,8 +3,8 @@ ru:
devise:
confirmations:
confirmed: Ваш адрес e-mail был успешно подтвержден.
- send_instructions: Вы получите e-mail с инструкцией по подтверждению Вашего адреса e-mail в течение нескольких минут.
- send_paranoid_instructions: Если Ваш адрес e-mail есть в нашей базе данных, вы получите e-mail с инструкцией по подтверждению Вашего адреса в течение нескольких минут.
+ send_instructions: Вы получите e-mail с инструкцией по подтверждению вашего адреса e-mail в течение нескольких минут.
+ send_paranoid_instructions: Если Ваш адрес e-mail есть в нашей базе данных, вы получите e-mail с инструкцией по подтверждению вашего адреса в течение нескольких минут.
failure:
already_authenticated: Вы уже авторизованы.
inactive: Ваш аккаунт еще не активирован.
@@ -12,63 +12,67 @@ ru:
last_attempt: У Вас есть последняя попытка, после чего вход будет заблокирован.
locked: Ваш аккаунт заблокирован.
not_found_in_database: Неверно введены %{authentication_keys} или пароль.
+ pending: Ваша заявка на вступление всё ещё рассматривается.
timeout: Ваша сессия истекла. Пожалуйста, войдите снова, чтобы продолжить.
unauthenticated: Вам необходимо войти или зарегистрироваться.
unconfirmed: Вам необходимо подтвердить ваш адрес e-mail для продолжения.
mailer:
confirmation_instructions:
action: Подтвердите e-mail адрес
+ action_with_app: Подтвердить и вернуться в %{app}
explanation: Вы создали учётную запись на сайте %{host}, используя этот e-mail адрес. Остался лишь один шаг для активации. Если это были не вы, просто игнорируйте письмо.
+ explanation_when_pending: Вы подали заявку на %{host}, используя этот адрес e-mail. Как только вы его подтвердите, мы начнём изучать вашу заявку. До тех пор вы не сможете войти на сайт. Если ваша заявка будет отклонена, все данные будут автоматически удалены, от вас не потребуется никаких дополнительных действий. Если это были не вы, пожалуйста, проигнорируйте данное письмо.
extra_html: Пожалуйста, ознакомьтесь правилами узла and условиями пользования Сервисом.
subject: 'Mastodon: Инструкция по подтверждению на узле %{instance}'
title: Подтвердите e-mail адрес
email_changed:
- explanation: 'E-mail адрес Вашей учётной записи будет изменён на:'
- extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи.
+ explanation: 'E-mail адрес вашей учётной записи будет изменён на:'
+ extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у вас нет доступа к учётной записи.
subject: 'Mastodon: Адрес e-mail изменён'
title: Новый адрес e-mail
password_change:
explanation: Пароль Вашей учётной записи был изменён.
- extra: Если Вы не меняли пароль, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи.
+ extra: Если Вы не меняли пароль, возможно кто-то получил доступ к вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у вас нет доступа к учётной записи.
subject: 'Mastodon: Пароль изменен'
title: Пароль изменён
reconfirmation_instructions:
explanation: Подтвердите новый адрес для смены e-mail.
- extra: Если смену e-mail инициировали не Вы, пожалуйста, игнорируйте это письмо. Адрес e-mail для учётной записи Mastodon не будет изменён, пока Вы не перейдёте по ссылке выше.
+ extra: Если смену e-mail инициировали не вы, пожалуйста, игнорируйте это письмо. Адрес e-mail для учётной записи Mastodon не будет изменён, пока вы не перейдёте по ссылке выше.
subject: 'Mastodon: Подтверждение e-mail для узла %{instance}'
title: Подтвердите e-mail адрес
reset_password_instructions:
action: Смена пароля
- explanation: Вы запросили новый пароль для Вашей учётной записи.
- extra: Если это сделали не Вы, пожалуйста, игнорируйте письмо. Ваш пароль не будет изменён, пока Вы не перейдёте по ссылке выше и не создадите новый пароль.
+ explanation: Вы запросили новый пароль для вашей учётной записи.
+ extra: Если это сделали не вы, пожалуйста, игнорируйте письмо. Ваш пароль не будет изменён, пока вы не перейдёте по ссылке выше и не создадите новый пароль.
subject: 'Mastodon: инструкция по смене пароля'
title: Сброс пароля
unlock_instructions:
subject: 'Mastodon: Инструкция по разблокировке'
omniauth_callbacks:
- failure: Не получилось аутентифицировать Вас с помощью %{kind} по следующей причине - "%{reason}".
+ failure: Не получилось аутентифицировать вас с помощью %{kind} по следующей причине - "%{reason}".
success: Аутентификация с помощью аккаунта %{kind} прошла успешно.
passwords:
- no_token: Вы можете получить доступ к этой странице, только перейдя по ссылке в e-mail для сброса пароля. Если Вы действительно перешли по такой ссылке, пожалуйста, удостоверьтесь, что ссылка была введена полностью и без изменений.
+ no_token: Вы можете получить доступ к этой странице, только перейдя по ссылке в e-mail для сброса пароля. Если вы действительно перешли по такой ссылке, пожалуйста, удостоверьтесь, что ссылка была введена полностью и без изменений.
send_instructions: Вы получите e-mail с инструкцией по сбросу пароля в течение нескольких минут.
- send_paranoid_instructions: Если Ваш адрес e-mail есть в нашей базе данных, Вы получите e-mail со ссылкой для сброса пароля в течение нескольких минут.
+ send_paranoid_instructions: Если Ваш адрес e-mail есть в нашей базе данных, вы получите e-mail со ссылкой для сброса пароля в течение нескольких минут.
updated: Ваш пароль был успешно изменен. Вход выполнен.
updated_not_active: Ваш пароль был успешно изменен.
registrations:
- destroyed: До свидания! Ваш аккаунт был успешно удален. Мы надеемся скоро увидеть Вас снова.
+ destroyed: До свидания! Ваш аккаунт был успешно удален. Мы надеемся скоро увидеть вас снова.
signed_up: Добро пожаловать! Вы успешно зарегистрировались.
- signed_up_but_inactive: Вы успешно зарегистрировались. Тем не менее, мы не можем авторизовать Вас, поскольку Ваш аккаунт еще не активирован.
- signed_up_but_locked: Вы успешно зарегистрировались. Тем не менее, мы не можем авторизовать Вас, поскольку Ваш аккаунт заблокирован.
- signed_up_but_unconfirmed: Сообщение со ссылкой для подтверждения было выслано на Ваш адрес e-mail. Пожалуйста, пройдите по ссылке для активации Вашего аккаунта.
- update_needs_confirmation: Вы успешно обновили Ваш аккаунт, но нам нужно подтвердить ваш новый адрес e-mail. Пожалуйста, проверьте почту и пройдите по ссылке для подтверждения Вашего нового адреса.
+ signed_up_but_inactive: Вы успешно зарегистрировались. Тем не менее, мы не можем авторизовать вас, поскольку ваш аккаунт еще не активирован.
+ signed_up_but_locked: Вы успешно зарегистрировались. Тем не менее, мы не можем авторизовать вас, поскольку ваш аккаунт заблокирован.
+ signed_up_but_pending: На ваш e-mail адрес было отправлено письмо с ссылкой для подтверждения. После перехода по ней, мы начнём рассматривать вашу заявку. В случае подтверждения, мы вас оповестим.
+ signed_up_but_unconfirmed: Сообщение со ссылкой для подтверждения было выслано на ваш адрес e-mail. Пожалуйста, пройдите по ссылке для активации вашего аккаунта.
+ update_needs_confirmation: Вы успешно обновили данные учётной записи, но нам нужно подтвердить ваш новый адрес e-mail. Пожалуйста, проверьте почту и перейдите по ссылке из письма для подтверждения вашего нового адреса.
updated: Ваш аккаунт был успешно обновлен.
sessions:
already_signed_out: Выход прошел успешно.
signed_in: Вход прошел успешно.
signed_out: Выход прошел успешно.
unlocks:
- send_instructions: Вы получите e-mail с инструкцией по разблокировке Вашего аккаунта в течение нескольких минут.
- send_paranoid_instructions: Если Ваш аккаунт существует, Вы получите e-mail с инструкцией по его разблокировке в течение нескольких минут.
+ send_instructions: Вы получите e-mail с инструкцией по разблокировке вашего аккаунта в течение нескольких минут.
+ send_paranoid_instructions: Если Ваш аккаунт существует, вы получите e-mail с инструкцией по его разблокировке в течение нескольких минут.
unlocked: Ваш аккаунт был успешно разблокирован. пожалуйста, войдите для продолжения.
errors:
messages:
diff --git a/config/locales/devise.sk.yml b/config/locales/devise.sk.yml
index 0052bc0bc..5ce04ba7a 100644
--- a/config/locales/devise.sk.yml
+++ b/config/locales/devise.sk.yml
@@ -3,7 +3,7 @@ sk:
devise:
confirmations:
confirmed: Tvoja emailová adresa bola úspešne overená.
- send_instructions: O niekoľko minút obdržíš email s inštrukciami ako potvrdiť svoj účet. Prosím, skontroluj si aj zložku spam, ak sa k tebe toto potvrdenie nedostalo.
+ send_instructions: O niekoľko minút obdržíš email s pokynmi ako potvrdiť svoj účet. Prosím, skontroluj si aj zložku spam, ak sa k tebe toto potvrdenie nedostalo.
send_paranoid_instructions: Ak sa tvoja emailová adresa nachádza v našej databázi, o niekoľko minút obdržíš email s pokynmi ako potvrdiť svoj účet. Prosím, skontroluj aj zložku spam, ak sa k tebe toto potvrdenie nedostalo.
failure:
already_authenticated: Už si prihlásený/á.
@@ -11,27 +11,27 @@ sk:
invalid: Nesprávny %{authentication_keys}, alebo heslo.
last_attempt: Máš posledný pokus pred zamknutím tvojho účtu.
locked: Tvoj účet je zamknutý.
- not_found_in_database: Nesprávny %{authentication_keys} alebo heslo.
+ not_found_in_database: Nesprávny %{authentication_keys}, alebo heslo.
pending: Tvoj účet je stále prehodnocovaný.
- timeout: Vaša aktívna sezóna vypršala. Pre pokračovanie sa prosím znovu prihláste.
+ timeout: Tvoja aktívna sezóna vypršala. Pre pokračovanie sa prosím prihlás znovu.
unauthenticated: K pokračovaniu sa musíš zaregistrovať alebo prihlásiť.
unconfirmed: Pred pokračovaním musíš potvrdiť svoj email.
mailer:
confirmation_instructions:
- action: Potvŕď emailovú adresu
+ action: Potvrď emailovú adresu
action_with_app: Potvrď a vráť sa na %{app}
explanation: S touto emailovou adresou si si vytvoril/a účet na %{host}. Si iba jeden klik od jeho aktivácie. Pokiaľ si to ale nebol/a ty, prosím ignoruj tento email.
- extra_html: Prosím pozri sa aj na pravidlá tohto servera, a naše užívaťeľské podiemky.
- subject: 'Mastodon: Potvrdzovacie inštrukcie pre %{instance}'
+ extra_html: Prosím, pozri sa aj na pravidlá tohto servera, a naše užívaťeľské podiemky.
+ subject: 'Mastodon: Potvrdzovacie pokyny pre %{instance}'
title: Potvrď emailovú adresu
email_changed:
explanation: 'Emailová adresa tvojho účtu bude zmenená na:'
- extra: Pokiaľ si nezmenil/a svoj email, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu.
+ extra: Ak si nezmenil/a svoj email, je pravdepodobné, že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru, pokiaľ si vymknutý/á zo svojho účtu.
subject: 'Mastodon: Emailová adresa bola zmenená'
title: Nová emailová adresa
password_change:
explanation: Heslo k tvojmu účtu bolo zmenené.
- extra: Ak si heslo nezmenil/a, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu.
+ extra: Ak si heslo nezmenil/a, je pravdepodobné, že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru, pokiaľ si vymknutý/á zo svojho účtu.
subject: 'Mastodon: Heslo bolo zmenené'
title: Heslo bolo zmenené
reconfirmation_instructions:
@@ -42,17 +42,17 @@ sk:
reset_password_instructions:
action: Zmeň svoje heslo
explanation: Vyžiadal/a si si nové heslo pre svoj účet.
- extra: Pokiaľ si túto akciu nevyžiadal/a, prosím ignoruj tento email. Tvoje heslo nebude zmenené pokiaľ nepostúpiš na adresu uvedenú vyššie a vytvoríš si nové.
- subject: 'Mastodon: Inštrukcie pre obnovu hesla'
+ extra: Ak si túto akciu nevyžiadal/a, prosím ignoruj tento email. Tvoje heslo nebude zmenené pokiaľ nepostúpiš na adresu uvedenú vyššie a vytvoríš si nové.
+ subject: 'Mastodon: Pokyny pre obnovu hesla'
title: Nastav nové heslo
unlock_instructions:
- subject: 'Mastodon: Inštrukcie pre odomknutie účtu'
+ subject: 'Mastodon: Pokyny na odomknutie účtu'
omniauth_callbacks:
- failure: Nebolo možné ťa overiť z dôvodu,%{kind} že "%{reason}".
+ failure: Nebolo možné ťa overiť z %{kind}, lebo "%{reason}".
success: Úspešné overenie z účtu %{kind}.
passwords:
- no_token: Túto stránku nemôžete navštíviť pokiaľ neprichádzate z emailu s inštrukciami na obnovu hesla. Pokiaľ prichádzate z tohto emailu, prosím uistite sa že ste použili celú URL z emailu.
- send_instructions: Pokiaľ sa tvoja emailová adresa nachádza v databázi, tak o niekoľko minút obdržíš email s inštrukciami ako nastaviť nové heslo. Ak máš pocit, že si email neobdržal/a, prosím skontroluj aj svoju spam zložku.
+ no_token: Túto stránku nemôžeš navštíviť, ak neprichádzaš z emailu s pokynmi na obnovu hesla. Pokiaľ prichádzaš z tohto emailu, prosím uisti sa že si použil/a celú URL adresu z emailu.
+ send_instructions: Ak sa tvoja emailová adresa nachádza v databázi, tak o niekoľko minút obdržíš email s pokynmi ako nastaviť nové heslo. Ak máš pocit, že si email neobdržal/a, prosím skontroluj aj svoju spam zložku.
send_paranoid_instructions: Ak sa tvoja emailová adresa nachádza v databázi, za chvíľu obdržíš odkaz pre obnovu hesla na svoj email. Skontroluj ale prosím aj svoj spam, ak tento email nevidíš.
updated: Tvoje heslo bolo úspešne zmenené. Teraz si prihlásený/á.
updated_not_active: Tvoje heslo bolo úspešne zmenené.
@@ -66,9 +66,9 @@ sk:
update_needs_confirmation: Účet bol úspešne pozmenený, ale ešte potrebujeme overiť tvoju novú emailovú adresu. Pre overenie prosím klikni na link v správe ktorú si dostal/a na email. Takisto ale skontroluj aj svoju spam zložku, ak sa ti zdá, že si tento email nedostal/a.
updated: Tvoj účet bol úspešne aktualizovaný.
sessions:
- already_signed_out: Odhlásil/a si sa úspešné.
- signed_in: Prihlásil/a si sa úspešné.
- signed_out: Odhlásil/a si sa úspešné.
+ already_signed_out: Už si sa úspešne odhlásil/a.
+ signed_in: Prihlásil/a si sa úspešne.
+ signed_out: Odhlásil/a si sa úspešne.
unlocks:
send_instructions: O niekoľko minút obdržíš email s pokynmi, ako nastaviť nové heslo. Prosím, skontroluj ale aj svoju spam zložku, pokiaľ sa ti zdá, že si tento email nedostal/a.
send_paranoid_instructions: Ak tvoj účet existuje, o niekoľko minút obdržíš email s pokynmi ako si ho odomknúť. Prosím, skontroluj ale aj svoju spam zložku, pokiaľ sa ti zdá, že si tento email nedostal/a.
@@ -79,8 +79,8 @@ sk:
confirmation_period_expired: musí byť potvrdený do %{period}, prosím požiadaj o nový
expired: vypŕšal, prosím, vyžiadaj si nový
not_found: nenájdený
- not_locked: nebol uzamknutý
+ not_locked: nebol zamknutý
not_saved:
- few: "%{resource} nebol uložený kôli %{count} chybám:"
- one: "%{resource} nebol uložený kôli chybe:"
- other: "%{resource} nebol uložený kôli %{count} chybám:"
+ few: "%{resource} nebol uložený kvôli %{count} chybám:"
+ one: "%{resource} nebol uložený kvôli chybe:"
+ other: "%{resource} nebol uložený kvôli %{count} chybám:"
diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml
index 56686e3e5..8366912dc 100644
--- a/config/locales/doorkeeper.ca.yml
+++ b/config/locales/doorkeeper.ca.yml
@@ -77,9 +77,9 @@ ca:
title: Les teves aplicacions autoritzades
errors:
messages:
- access_denied: El propietari del recurs o servidor de autorizació ha denegat la petició.
+ access_denied: El propietari del recurs o servidor d'autorizació ha denegat la petició.
credential_flow_not_configured: Les credencials de contrasenya del propietari del recurs han fallat degut a que Doorkeeper.configure.resource_owner_from_credentials està sense configurar.
- invalid_client: La autentificació del client falló perquè és un client desconegut o no està inclòs l'autentificació del client o el mètode d'autenticació no està confirmat.
+ invalid_client: La autentificació del client ha fallat perquè és un client desconegut o no està inclòs l'autentificació del client o el mètode d'autenticació no està confirmat.
invalid_grant: La concessió d'autorizació oferida és invàlida, ha vençut, s'ha revocat, no coincideix amb l'URI de redirecció utilizada en la petició d'autorizació, o fou emesa per a un altre client.
invalid_redirect_uri: L'URI de redirecció inclòs no és vàlid.
invalid_request: En la petició manca un paràmetre necessari o inclou un valor de paràmetre no suportat o te un altre tipus de format incorrecte.
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index 99172656a..f523e125d 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -79,7 +79,7 @@ cs:
messages:
access_denied: Vlastník zdroje či autorizační server zamítl požadavek.
credential_flow_not_configured: Proud Resource Owner Password Credentials selhal, protože Doorkeeper.configure.resource_owner_from_credentials nebylo nakonfigurováno.
- invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentikaci či nepodporované autentikační metodě.
+ invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentizaci či nepodporované autentizační metodě.
invalid_grant: Poskytnuté oprávnění je neplatné, vypršelé, zamítnuté, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu.
invalid_redirect_uri: Přesměrovací URI není platné.
invalid_request: Požadavku chybí pžadovaný parametr, obsahuje nepodporovanou hodnotu parametru, či je jinak malformovaný.
diff --git a/config/locales/el.yml b/config/locales/el.yml
index b8fd45a68..eadbca8a9 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -506,7 +506,6 @@ el:
warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν!
your_token: Το διακριτικό πρόσβασής σου (access token)
auth:
- agreement_html: Επιλέγοντας το "Εγγραφή", συμφωνείς πως δέχεσαι τους κανόνες αυτού του κόμβου και τους όρους χρήσης του.
apply_for_account: Αίτηση πρόσκλησης
change_password: Συνθηματικό
checkbox_agreement_html: Συμφωνώ με τους κανονισμούς του κόμβου και τους όρους χρήσης
@@ -765,10 +764,7 @@ el:
too_few_options: πρέπει να έχει περισσότερες από μια επιλογές
too_many_options: δεν μπορεί να έχει περισσότερες από %{max} επιλογές
preferences:
- languages: Γλώσσες
other: Άλλο
- publishing: Δημοσίευση
- web: Διαδίκτυο
relationships:
activity: Δραστηριότητα λογαριασμού
dormant: Αδρανής
@@ -860,9 +856,7 @@ el:
notifications: Ειδοποιήσεις
preferences: Προτιμήσεις
relationships: Ακολουθεί και ακολουθείται
- settings: Ρυθμίσεις
two_factor_authentication: Πιστοποίηση 2 παραγόντων (2FA)
- your_apps: Οι εφαρμογές σου
statuses:
attached:
description: 'Συνημμένα: %{attached}'
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d91e89d95..d4f1855aa 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -68,6 +68,7 @@ en:
admin: Admin
bot: Bot
moderator: Mod
+ unavailable: Profile unavailable
unfollow: Unfollow
admin:
account_actions:
@@ -80,6 +81,7 @@ en:
destroyed_msg: Moderation note successfully destroyed!
accounts:
approve: Approve
+ approve_all: Approve all
are_you_sure: Are you sure?
avatar: Avatar
by_domain: Domain
@@ -132,6 +134,7 @@ en:
moderation_notes: Moderation notes
most_recent_activity: Most recent activity
most_recent_ip: Most recent IP
+ no_account_selected: No accounts were changed as none were selected
no_limits_imposed: No limits imposed
not_subscribed: Not subscribed
outbox_url: Outbox URL
@@ -144,6 +147,7 @@ en:
push_subscription_expires: PuSH subscription expires
redownload: Refresh profile
reject: Reject
+ reject_all: Reject all
remove_avatar: Remove avatar
remove_header: Remove header
resend_confirmation:
@@ -170,6 +174,7 @@ en:
statuses: Statuses
subscribe: Subscribe
suspended: Suspended
+ time_in_queue: Waiting in queue %{time}
title: Accounts
unconfirmed_email: Unconfirmed email
undo_silenced: Undo silence
@@ -265,6 +270,7 @@ en:
created_msg: Domain block is now being processed
destroyed_msg: Domain block has been undone
domain: Domain
+ existing_domain_block_html: You have already imposed stricter limits on %{name}, you need to unblock it first.
new:
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.
@@ -288,8 +294,8 @@ en:
one: One account in the database affected
other: "%{count} accounts in the database affected"
retroactive:
- silence: Unsilence all existing accounts from this domain
- suspend: Unsuspend all existing accounts from this domain
+ silence: Unsilence existing affected accounts from this domain
+ suspend: Unsuspend existing affected accounts from this domain
title: Undo domain block for %{domain}
undo: Undo
undo: Undo domain block
@@ -330,6 +336,8 @@ en:
expired: Expired
title: Filter
title: Invites
+ pending_accounts:
+ title: Pending accounts (%{count})
relays:
add_new: Add new relay
delete: Delete
@@ -491,12 +499,18 @@ en:
body: "%{reporter} has reported %{target}"
body_remote: Someone from %{domain} has reported %{target}
subject: New report for %{instance} (#%{id})
+ appearance:
+ advanced_web_interface: Advanced web interface
+ advanced_web_interface_hint: 'If you want to make use of your entire screen width, the advanced web interface allows you to configure many different columns to see as much information at the same time as you want: Home, notifications, federated timeline, any number of lists and hashtags.'
+ animations_and_accessibility: Animations and accessibility
+ confirmation_dialogs: Confirmation dialogs
+ sensitive_content: Sensitive content
application_mailer:
notification_preferences: Change e-mail preferences
salutation: "%{name},"
settings: 'Change e-mail preferences: %{link}'
view: 'View:'
- view_profile: View Profile
+ view_profile: View profile
view_status: View status
applications:
created: Application successfully created
@@ -507,7 +521,6 @@ en:
warning: Be very careful with this data. Never share it with anyone!
your_token: Your access token
auth:
- agreement_html: By clicking "Sign up" below you agree to follow the rules of the server and our terms of service.
apply_for_account: Request an invite
change_password: Password
checkbox_agreement_html: I agree to the server rules and terms of service
@@ -633,6 +646,7 @@ en:
all: All
changes_saved_msg: Changes successfully saved!
copy: Copy
+ order_by: Order by
save_changes: Save changes
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -648,10 +662,13 @@ en:
keybase:
invalid_token: Keybase tokens are hashes of signatures and must be 66 hex characters
verification_failed: Keybase does not recognize this token as a signature of Keybase user %{kb_username}. Please retry from Keybase.
+ wrong_user: Cannot create a proof for %{proving} while logged in as %{current}. Log in as %{proving} and try again.
explanation_html: Here you can cryptographically connect your other identities, such as a Keybase profile. This lets other people send you encrypted messages and trust content you send them.
i_am_html: I am %{username} on %{service}.
identity: Identity
inactive: Inactive
+ publicize_checkbox: 'And toot this:'
+ publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}'
status: Verification status
view_proof: View proof
imports:
@@ -767,10 +784,9 @@ en:
too_few_options: must have more than one item
too_many_options: can't contain more than %{max} items
preferences:
- languages: Languages
other: Other
- publishing: Publishing
- web: Web
+ posting_defaults: Posting defaults
+ public_timelines: Public timelines
relationships:
activity: Account activity
dormant: Dormant
@@ -851,6 +867,9 @@ en:
revoke_success: Session successfully revoked
title: Sessions
settings:
+ account: Account
+ account_settings: Account settings
+ appearance: Appearance
authorized_apps: Authorized apps
back: Back to Mastodon
delete: Account deletion
@@ -860,13 +879,13 @@ en:
featured_tags: Featured hashtags
identity_proofs: Identity proofs
import: Import
+ import_and_export: Import and export
migrate: Account migration
notifications: Notifications
preferences: Preferences
+ profile: Profile
relationships: Follows and followers
- settings: Settings
two_factor_authentication: Two-factor Auth
- your_apps: Your applications
statuses:
attached:
description: 'Attached: %{attached}'
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index 9e6eb5e94..33ba16210 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -506,7 +506,6 @@ en_GB:
warning: Be very careful with this data. Never share it with anyone!
your_token: Your access token
auth:
- agreement_html: By clicking "Sign up" below you agree to follow the rules of the server and our terms of service.
apply_for_account: Request an invite
change_password: Password
checkbox_agreement_html: I agree to the server rules and terms of service
@@ -760,10 +759,7 @@ en_GB:
too_few_options: must have more than one item
too_many_options: can't contain more than %{max} items
preferences:
- languages: Languages
other: Other
- publishing: Publishing
- web: Web
relationships:
activity: Account activity
dormant: Dormant
@@ -855,9 +851,7 @@ en_GB:
notifications: Notifications
preferences: Preferences
relationships: Follows and followers
- settings: Settings
two_factor_authentication: Two-factor Auth
- your_apps: Your applications
statuses:
attached:
description: 'Attached: %{attached}'
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 4621b93fc..0e3c45341 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -5,11 +5,13 @@ eo:
about_mastodon_html: Mastodon estas socia reto bazita sur malfermitaj retaj protokoloj kaj sur libera malfermitkoda programo. Ĝi estas sencentra kiel retmesaĝoj.
about_this: Pri
active_count_after: aktiva
+ active_footnote: Monate Aktivaj Uzantoj (MAU)
administered_by: 'Administrata de:'
api: API
apps: Poŝtelefonaj aplikaĵoj
apps_platforms: Uzu Mastodon ĉe iOS, Android kaj aliajn platformojn
browse_directory: Esplori profilujo kaj filtri per interesoj
+ browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon
contact: Kontakti
contact_missing: Ne elektita
contact_unavailable: Ne disponebla
@@ -24,11 +26,14 @@ eo:
hosted_on: "%{domain} estas nodo de Mastodon"
learn_more: Lerni pli
privacy_policy: Privateca politiko
+ see_whats_happening: Vidi kio okazas
+ server_stats: Servo statuso
source_code: Fontkodo
status_count_after:
one: mesaĝo
other: mesaĝoj
status_count_before: Kie skribiĝis
+ tagline: Sekvi amikojn kaj trovi novan onin
terms: Uzkondiĉoj
user_count_after:
one: uzanto
@@ -74,6 +79,7 @@ eo:
delete: Forigi
destroyed_msg: Kontrola noto sukcese detruita!
accounts:
+ approve: Aprobi
are_you_sure: Ĉu vi certas?
avatar: Profilbildo
by_domain: Domajno
@@ -119,6 +125,7 @@ eo:
moderation:
active: Aktivaj
all: Ĉio
+ pending: Pritraktata
silenced: Silentigitaj
suspended: Haltigitaj
title: Kontrolado
@@ -128,6 +135,7 @@ eo:
no_limits_imposed: Neniu limito trudita
not_subscribed: Ne abonita
outbox_url: Elira URL
+ pending: Pritraktata recenzo
perform_full_suspension: Haltigi
profile_url: Profila URL
promote: Plirangigi
@@ -135,6 +143,7 @@ eo:
public: Publika
push_subscription_expires: Eksvalidiĝo de la abono al PuSH
redownload: Aktualigi profilon
+ reject: Malakcepti
remove_avatar: Forigi profilbildon
remove_header: Forigi kapan bildon
resend_confirmation:
@@ -236,6 +245,7 @@ eo:
feature_profile_directory: Profilujo
feature_registrations: Registriĝoj
feature_relay: Federacia ripetilo
+ feature_timeline_preview: Templinio antaŭvidi
features: Funkcioj
hidden_service: Federacio kun kaŝitaj servoj
open_reports: nefermitaj raportoj
@@ -406,6 +416,12 @@ eo:
min_invite_role:
disabled: Neniu
title: Permesi invitojn de
+ registrations_mode:
+ modes:
+ approved: Bezonas aprobi por aliĝi
+ none: Neniu povas aliĝi
+ open: Iu povas aliĝi
+ title: Registrado modo
show_known_fediverse_at_about_page:
desc_html: Kiam ŝaltita, ĝi montros mesaĝojn de la tuta konata fediverse antaŭvide. Aliokaze, ĝi montros nur lokajn mesaĝojn.
title: Montri konatan fediverse en tempolinia antaŭvido
@@ -429,7 +445,7 @@ eo:
desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita
title: Bildeto de la servilo
timeline_preview:
- desc_html: Montri publikan tempolinion en komenca paĝo
+ desc_html: Montri publikan templinion en komenca paĝo
title: Tempolinia antaŭvido
title: Retejaj agordoj
statuses:
@@ -468,6 +484,9 @@ eo:
edit_preset: Redakti avertan antaŭagordon
title: Administri avertajn antaŭagordojn
admin_mailer:
+ new_pending_account:
+ body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo.
+ subject: Nova konto atendas por recenzo en %{instance} (%{username})
new_report:
body: "%{reporter} signalis %{target}"
body_remote: Iu de %{domain} signalis %{target}
@@ -488,8 +507,9 @@ eo:
warning: Estu tre atenta kun ĉi tiu datumo. Neniam diskonigu ĝin al iu ajn!
your_token: Via alira ĵetono
auth:
- agreement_html: Klakante “Registriĝi” sube, vi konsentas kun la reguloj de la servilo kaj niaj uzkondiĉoj.
+ apply_for_account: Peti inviton
change_password: Pasvorto
+ checkbox_agreement_html: Mi samopinii al la Servo reguloj kaj kondiĉo al servadon
confirm_email: Konfirmi retadreson
delete_account: Forigi konton
delete_account_html: Se vi deziras forigi vian konton, vi povas fari tion ĉi tie. Vi bezonos konfirmi vian peton.
@@ -505,10 +525,12 @@ eo:
cas: CAS
saml: SAML
register: Registriĝi
+ registration_closed: "%{instance} ne estas akcepti nova uzantojn"
resend_confirmation: Resendi la instrukciojn por konfirmi
reset_password: Ŝanĝi pasvorton
security: Sekureco
set_new_password: Elekti novan pasvorton
+ trouble_logging_in: Ĝeni ensaluti?
authorize_follow:
already_following: Vi jam sekvas tiun konton
error: Bedaŭrinde, estis eraro en la serĉado de la fora konto
@@ -566,6 +588,9 @@ eo:
noscript_html: |-
Por uzi la retan aplikaĵon de Mastodon, bonvolu ebligi JavaScript. Alimaniere, provu unu el la
operaciumaj aplikaĵoj por Mastodon por via platformo.
+ existing_username_validator:
+ not_found: Ne povas trovi lokaj uzanto kun tiu uzantnomo
+ not_found_multiple: Ne povas trovi %{usernames}
exports:
archive_takeout:
date: Dato
@@ -587,9 +612,9 @@ eo:
limit: Vi jam elstarigis la maksimuman kvanton da kradvortoj
filters:
contexts:
- home: Hejma tempolinio
+ home: Hejma templinio
notifications: Sciigoj
- public: Publikaj tempolinioj
+ public: Publika templinio
thread: Konversacioj
edit:
title: Ŝanĝi filtrilojn
@@ -606,12 +631,34 @@ eo:
more: Pli…
resources: Rimedoj
generic:
+ all: Ĉio
changes_saved_msg: Ŝanĝoj sukcese konservitaj!
copy: Kopii
+ order_by: Ordigi de
save_changes: Konservi ŝanĝojn
validation_errors:
one: Io mise okazis! Bonvolu konsulti la suban erar-raporton
other: Io mise okazis! Bonvolu konsulti la subajn %{count} erar-raportojn
+ html_validator:
+ invalid_markup: 'havas malvalida HTML markado: %{error}'
+ identity_proofs:
+ active: Aktiva
+ authorize: Jes, permesi
+ authorize_connection_prompt: Permesi ĉi tiu ĉifrikan conekton?
+ errors:
+ failed: La ĉifrika conekto nefaris. Peti provu denove el %{provider}.
+ keybase:
+ invalid_token: Keybase signo estas haŝoj de subskribo kaj devi 66 deksesuma leteroj
+ verification_failed: Keybase ne rekoni ĉi tiu signo kiel subskribo de Keybase uzanto %{kb_username}. Peti provu denove el Keybase.
+ wrong_user: Ne povas krei por %{proving} dum ensalutis kiel %{current}. Ensaluti kiel %{proving} kaj provu denove.
+ explanation_html: Ĉi tie vi povas ĉifrika konekti via alia identicoj, kiel Keybase profilon. ĉi tiu igi aliaj popoloj sendi al vi ĉifritaj mesaĝoj kaj fidi kontento vi sendi al ilin.
+ i_am_html: Mi estas %{username} en %{service}.
+ identity: Identeco
+ inactive: Malaktiva
+ publicize_checkbox: 'And toot this:'
+ publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}'
+ status: Confirmo statuso
+ view_proof: Vidi pruvo
imports:
modes:
merge: Kunigi
@@ -725,10 +772,20 @@ eo:
too_few_options: devas enhavi pli da unu propono
too_many_options: ne povas enhavi pli da %{max} proponoj
preferences:
- languages: Lingvoj
other: Aliaj aferoj
- publishing: Publikado
- web: Reto
+ relationships:
+ activity: Account activity
+ dormant: Dormant
+ last_active: Last active
+ most_recent: Most recent
+ moved: Moved
+ mutual: Mutual
+ primary: Primary
+ relationship: Relationship
+ remove_selected_domains: Remove all followers from the selected domains
+ remove_selected_followers: Remove selected followers
+ remove_selected_follows: Unfollow selected users
+ status: Account status
remote_follow:
acct: Enmetu vian uzantnomo@domajno de kie vi volas agi
missing_resource: La URL de plusendado ne estis trovita
@@ -803,13 +860,13 @@ eo:
edit_profile: Redakti profilon
export: Eksporti datumojn
featured_tags: Elstarigitaj kradvortoj
+ identity_proofs: Identity proofs
import: Importi
migrate: Konta migrado
notifications: Sciigoj
preferences: Preferoj
- settings: Agordoj
+ relationships: Follows and followers
two_factor_authentication: Dufaktora aŭtentigo
- your_apps: Viaj aplikaĵoj
statuses:
attached:
description: 'Ligita: %{attached}'
@@ -846,7 +903,7 @@ eo:
public: Publika
public_long: Ĉiuj povas vidi
unlisted: Nelistigita
- unlisted_long: Ĉiuj povas vidi, sed nelistigita en publikaj tempolinioj
+ unlisted_long: Ĉiuj povas vidi, sed nelistigita en publikaj templinioj
stream_entries:
pinned: Alpinglita
reblogged: diskonigita
@@ -903,15 +960,15 @@ eo:
edit_profile_step: Vi povas proprigi vian profilon per alŝuto de profilbildo, fonbildo, ŝanĝo de via afiŝita nomo kaj pli. Se vi ŝatus kontroli novajn sekvantojn antaŭ ol ili rajtas sekvi vin, vi povas ŝlosi vian konton.
explanation: Jen kelkaj konsiloj por helpi vin komenci
final_action: Ekmesaĝi
- final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka tempolinio kaj en la kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions.'
+ final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka templinio kaj en la kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions.'
full_handle: Via kompleta uzantnomo
full_handle_hint: Jen kion vi dirus al viaj amikoj, por ke ili mesaĝu aŭ sekvu vin de alia servilo.
review_preferences_action: Ŝanĝi preferojn
review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj.
subject: Bonvenon en Mastodon
- tip_federated_timeline: La fratara tempolinio estas antaŭvido de la reto de Mastodon. Sed ĝi enhavas nur homojn, kiuj estas sekvataj de aliaj homoj de via nodo, do ĝi ne estas kompleta.
- tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran tempoliniojn.
- tip_local_timeline: La loka tempolinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj!
+ tip_federated_timeline: La fratara templinio estas antaŭvido de la reto de Mastodon. Sed ĝi enhavas nur homojn, kiuj estas sekvataj de aliaj homoj de via nodo, do ĝi ne estas kompleta.
+ tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran templiniojn.
+ tip_local_timeline: La loka templinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj!
tip_mobile_webapp: Se via telefona retumilo proponas al vi aldoni Mastodon al via hejma ekrano, vi povas ricevi puŝsciigojn. Tio multmaniere funkcias kiel operaciuma aplikaĵo!
tips: Konsiloj
title: Bonvenon, %{name}!
diff --git a/config/locales/es.yml b/config/locales/es.yml
index bcc3fe62c..ed04e7101 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -437,7 +437,6 @@ es:
warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie!
your_token: Tu token de acceso
auth:
- agreement_html: Al hacer click en "Registrarse" acepta seguir las reglas de la instancia y nuestros términos de servicio.
change_password: Contraseña
confirm_email: Confirmar email
delete_account: Borrar cuenta
@@ -640,10 +639,7 @@ es:
prev: Anterior
truncate: "…"
preferences:
- languages: Idiomas
other: Otros
- publishing: Publicación
- web: Web
remote_follow:
acct: Ingesa tu usuario@dominio desde el que quieres seguir
missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta
@@ -706,9 +702,7 @@ es:
migrate: Migración de cuenta
notifications: Notificaciones
preferences: Preferencias
- settings: Ajustes
two_factor_authentication: Autenticación de dos factores
- your_apps: Tus aplicaciones
statuses:
attached:
description: 'Adjunto: %{attached}'
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 187a5325b..c5171ae7b 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -481,7 +481,6 @@ eu:
warning: Kontuz datu hauekin, ez partekatu inoiz inorekin!
your_token: Zure sarbide token-a
auth:
- agreement_html: '"Izena eman" botoia sakatzean zerbitzariaren arauak eta erabilera baldintzak onartzen dituzu.'
change_password: Pasahitza
confirm_email: Berretsi e-mail helbidea
delete_account: Ezabatu kontua
@@ -706,10 +705,7 @@ eu:
prev: Aurrekoa
truncate: "…"
preferences:
- languages: Hizkuntzak
other: Beste bat
- publishing: Argitaratzea
- web: Web
remote_follow:
acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua
missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a
@@ -788,9 +784,7 @@ eu:
migrate: Kontuaren migrazioa
notifications: Jakinarazpenak
preferences: Hobespenak
- settings: Ezarpenak
two_factor_authentication: Bi faktoreetako autentifikazioa
- your_apps: Zure aplikazioak
statuses:
attached:
description: 'Erantsita: %{attached}'
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index d4ec320cb..f00ffdf2f 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -506,7 +506,6 @@ fa:
warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید!
your_token: کد دسترسی شما
auth:
- agreement_html: با کلیک روی دکمهٔ عضو شدن، شما قوانین این سرور و شرایط استفادهٔ ما را میپذیرید.
apply_for_account: درخواست دعوتنامه
change_password: رمز
checkbox_agreement_html: من قانونهای این سرور و شرایط کاربری را میپذیرم
@@ -766,10 +765,7 @@ fa:
too_few_options: حتماً باید بیش از یک گزینه داشته باشد
too_many_options: نمیتواند بیشتر از %{max} گزینه داشته باشد
preferences:
- languages: تنظیمات زبان
other: سایر تنظیمات
- publishing: تنظیمات انتشار مطالب
- web: وب
relationships:
activity: فعالیت حساب
dormant: غیرفعال
@@ -861,9 +857,7 @@ fa:
notifications: اعلانها
preferences: ترجیحات
relationships: پیگیریها و پیگیران
- settings: تنظیمات
two_factor_authentication: ورود دومرحلهای
- your_apps: برنامهٔ شما
statuses:
attached:
description: 'پیوستشده: %{attached}'
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 029696f7d..1072952ea 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -370,7 +370,6 @@ fi:
warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille!
your_token: Pääsytunnus
auth:
- agreement_html: Rekisteröityessäsi sitoudut noudattamaan instanssin sääntöjä ja käyttöehtoja.
change_password: Salasana
confirm_email: Vahvista sähköpostiosoite
delete_account: Poista tili
@@ -551,10 +550,7 @@ fi:
prev: Edellinen
truncate: "…"
preferences:
- languages: Kielet
other: Muut
- publishing: Julkaiseminen
- web: Web
remote_follow:
acct: Syötä se käyttäjätunnus@verkkotunnus, josta haluat seurata
missing_resource: Vaadittavaa uudelleenohjaus-URL:ää tiliisi ei löytynyt
@@ -614,9 +610,7 @@ fi:
migrate: Tilin muutto muualle
notifications: Ilmoitukset
preferences: Ominaisuudet
- settings: Asetukset
two_factor_authentication: Kaksivaiheinen todentaminen
- your_apps: Omat sovellukset
statuses:
attached:
description: 'Liitetty: %{attached}'
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 0d5dd08ad..2b06c7761 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -4,26 +4,37 @@ fr:
about_hashtag_html: Figurent ci-dessous les pouets tagués avec #%{hashtag}. Vous pouvez interagir avec eux si vous avez un compte n’importe où dans le Fediverse.
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
+ active_count_after: actif·ve·s
+ active_footnote: Utilisateur·rice·s actif·ve·s mensuels (MAU)
administered_by: 'Administrée par :'
api: API
apps: Applications mobiles
+ apps_platforms: Utilisez Mastodon depuis iOS, Android et d’autres plates-formes
+ browse_directory: Parcourir l’annuaire des profils et filtrer par centres d’intérêt
+ browse_public_posts: Parcourir un flux en direct de messages publics sur Mastodon
contact: Contact
contact_missing: Manquant
contact_unavailable: Non disponible
+ discover_users: Découvrez des utilisateur·rice·s
documentation: Documentation
extended_description_html: |
Un bon endroit pour les règles
La description étendue n’a pas été remplie.
+ federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre les gens sur n’importe quel serveur Mastodon et au-delà.
generic_description: "%{domain} est seulement un serveur du réseau"
- hosted_on: Instance Mastodon hébergée par %{domain}
+ get_apps: Essayez une application mobile
+ hosted_on: Serveur Mastodon hébergée par %{domain}
learn_more: En savoir plus
privacy_policy: Politique de vie privée
+ see_whats_happening: Voir ce qui se passe
+ server_stats: 'Statistiques du serveur :'
source_code: Code source
status_count_after:
one: Statut
other: Statuts
status_count_before: Ayant publié
- terms: Conditions d'utilisation
+ tagline: Suivez vos ami·e·s et découvrez en de nouveaux·elles
+ terms: Conditions d’utilisation
user_count_after:
one: utilisateur
other: utilisateurs
@@ -57,6 +68,7 @@ fr:
admin: Admin
bot: Robot
moderator: Modérateur·trice
+ unavailable: Profil non disponible
unfollow: Ne plus suivre
admin:
account_actions:
@@ -68,6 +80,8 @@ fr:
delete: Supprimer
destroyed_msg: Note de modération supprimée avec succès !
accounts:
+ approve: Approuver
+ approve_all: Tout approuver
are_you_sure: Êtes-vous certain⋅e ?
avatar: Avatar
by_domain: Domaine
@@ -113,15 +127,18 @@ fr:
moderation:
active: Actif
all: Tous
+ pending: En cours de traitement
silenced: Masqués
suspended: Suspendus
title: Modération
moderation_notes: Notes de modération
most_recent_activity: Dernière activité
most_recent_ip: Adresse IP la plus récente
+ no_account_selected: Aucun compte n’a été modifié, car aucun n’a été sélectionné
no_limits_imposed: Aucune limite imposée
not_subscribed: Non abonné
outbox_url: URL de sortie
+ pending: En attente d’approbation
perform_full_suspension: Suspendre
profile_url: URL du profil
promote: Promouvoir
@@ -129,8 +146,10 @@ fr:
public: Publique
push_subscription_expires: Expiration de l’abonnement PuSH
redownload: Rafraîchir le profil
+ reject: Rejeter
+ reject_all: Tout rejeter
remove_avatar: Supprimer l’avatar
- remove_header: Supprimer l'entête
+ remove_header: Supprimer l’entête
resend_confirmation:
already_confirmed: Cet·te utilisateur·ice est déjà confirmé·e
send: Renvoyer un courriel de confirmation
@@ -149,7 +168,7 @@ fr:
shared_inbox_url: URL de la boite de réception partagée
show:
created_reports: Signalements faits
- targeted_reports: Signalés par d'autres
+ targeted_reports: Signalés par d’autres
silence: Masquer
silenced: Silencié
statuses: Statuts
@@ -173,7 +192,7 @@ fr:
create_domain_block: "%{name} a bloqué le domaine %{target}"
create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire"
demote_user: "%{name} a rétrogradé l’utilisateur·ice %{target}"
- destroy_custom_emoji: "%{name} a détruit l'émoticône %{target}"
+ destroy_custom_emoji: "%{name} a détruit l’émoticône %{target}"
destroy_domain_block: "%{name} a débloqué le domaine %{target}"
destroy_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste blanche"
destroy_status: "%{name} a enlevé le statut de %{target}"
@@ -230,6 +249,7 @@ fr:
feature_profile_directory: Annuaire des profils
feature_registrations: Inscriptions
feature_relay: Relais de fédération
+ feature_timeline_preview: Aperçu du fil public
features: Fonctionnalités
hidden_service: Fédération avec des services cachés
open_reports: signalements non résolus
@@ -249,6 +269,7 @@ fr:
created_msg: Le blocage de domaine est désormais activé
destroyed_msg: Le blocage de domaine a été désactivé
domain: Domaine
+ existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le débloquer.
new:
create: Créer le blocage
hint: Le blocage de domaine n’empêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes.
@@ -260,10 +281,10 @@ fr:
title: Nouveau blocage de domaine
reject_media: Fichiers média rejetés
reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions
- reject_reports: Rapports de rejet
- reject_reports_hint: Ignorez tous les rapports provenant de ce domaine. Sans objet pour les suspensions
+ reject_reports: Rejeter les signalements
+ reject_reports_hint: Ignorez tous les signalements provenant de ce domaine. Ne concerne pas les suspensions
rejecting_media: rejet des fichiers multimédia
- rejecting_reports: rejet de rapports
+ rejecting_reports: rejet des signalements
severity:
silence: silencié
suspend: suspendu
@@ -314,17 +335,19 @@ fr:
expired: Expiré
title: Filtre
title: Invitations
+ pending_accounts:
+ title: Comptes en attente (%{count})
relays:
add_new: Ajouter un nouveau relais
delete: Effacer
- description_html: Un relai de fédération est un serveur intermédiaire qui échange de grandes quantités de pouets entre les serveurs qui publient dessus et ceux qui y sont abonnés. Il peut aider les petites et moyennes instances à découvrir du contenu sur le fediverse, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants.
+ description_html: Un relai de fédération est un serveur intermédiaire qui échange de grandes quantités de pouets entre les serveurs qui publient dessus et ceux qui y sont abonnés. Il peut aider les petits et moyen serveurs à découvrir du contenu sur le fediverse, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants.
disable: Désactiver
disabled: Désactivé
enable: Activé
enable_hint: Une fois activé, votre serveur souscrira à tous les pouets publics présents sur ce relais et y enverra ses propres pouets publics.
enabled: Activé
inbox_url: URL de relais
- pending: En attente de l'approbation du relai
+ pending: En attente de l’approbation du relai
save_and_enable: Sauvegarder et activer
setup: Paramétrer une connexion de relais
status: Statut
@@ -373,23 +396,23 @@ fr:
email: Entrez une adresse courriel publique
username: Entrez un nom d’utilisateur⋅ice
custom_css:
- desc_html: Modifier l'apparence avec une CSS chargée sur chaque page
+ desc_html: Modifier l’apparence avec une CSS chargée sur chaque page
title: CSS personnalisé
hero:
- desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette de l’instance
+ desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette du serveur
title: Image d’en-tête
mascot:
- desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu'il n'est pas défini, retombe à la mascotte par défaut
+ desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu’il n’est pas défini, retombe à la mascotte par défaut
title: Image de la mascotte
peers_api_enabled:
- desc_html: Noms des domaines que cette instance a découvert dans le fediverse
- title: Publier la liste des instances découvertes
+ desc_html: Noms des domaines que ce serveur a découvert dans le fediverse
+ title: Publier la liste des serveurs découverts
preview_sensitive_media:
desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible
title: Afficher les médias sensibles dans les prévisualisations OpenGraph
profile_directory:
- desc_html: Permettre aux utilisateurs d'être découverts
- title: Activer l'annuaire des profils
+ desc_html: Permettre aux utilisateurs d’être découverts
+ title: Activer l’annuaire des profils
registrations:
closed_message:
desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées
Vous pouvez utiliser des balises HTML
@@ -400,32 +423,38 @@ fr:
min_invite_role:
disabled: Personne
title: Autoriser les invitations par
+ registrations_mode:
+ modes:
+ approved: Approbation requise pour s’inscrire
+ none: Personne ne peut s’inscrire
+ open: N’importe qui peut s’inscrire
+ title: Mode d’enregistrement
show_known_fediverse_at_about_page:
- desc_html: Lorsque l’option est activée, les pouets provenant de toutes les instances connues sont affichés dans la prévisualisation. Sinon, seuls les pouets locaux sont affichés.
+ desc_html: Lorsque l’option est activée, les pouets provenant de toutes les serveurs connues sont affichés dans la prévisualisation. Sinon, seuls les pouets locaux sont affichés.
title: Afficher le fediverse connu dans la prévisualisation du fil
show_staff_badge:
desc_html: Montrer un badge de responsable sur une page utilisateur·ice
title: Montrer un badge de responsable
site_description:
desc_html: Paragraphe introductif sur la page d’accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>.
- title: Description de l'instance
+ title: Description du serveur
site_description_extended:
- desc_html: L'endroit idéal pour afficher votre code de conduite, les règles, les guides et autres choses qui rendent votre instance différente. Vous pouvez utiliser des balises HTML
- title: Description étendue du site
+ desc_html: L’endroit idéal pour afficher votre code de conduite, les règles, les guides et autres choses qui rendent votre serveur différent. Vous pouvez utiliser des balises HTML
+ title: Description étendue du serveur
site_short_description:
- desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique cette instance Mastodon en un seul paragraphe. Si laissée vide, la description de l’instance sera affiché par défaut.
- title: Description courte de l’instance
+ desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut.
+ title: Description courte du serveur
site_terms:
desc_html: Affichée sur la page des conditions d’utilisation du site
Vous pouvez utiliser des balises HTML
title: Politique de confidentialité
- site_title: Nom de l'instance
+ site_title: Nom du serveur
thumbnail:
desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé
- title: Vignette de l’instance
+ title: Vignette du serveur
timeline_preview:
desc_html: Afficher le fil public sur la page d’accueil
title: Prévisualisation du fil global
- title: Paramètres du site
+ title: Paramètres du serveur
statuses:
back_to_account: Retour à la page du compte
batch:
@@ -449,19 +478,22 @@ fr:
tags:
accounts: Comptes
hidden: Masqué
- hide: Masquer dans l'annuaire
+ hide: Masquer dans l’annuaire
name: Hashtag
title: Hashtags
- unhide: Afficher dans l'annuaire
+ unhide: Afficher dans l’annuaire
visible: Visible
title: Administration
warning_presets:
add_new: Ajouter un nouveau
delete: Effacer
edit: Éditer
- edit_preset: Éditer la présélection d'attention
- title: Gérer les présélections d'attention
+ edit_preset: Éditer la présélection d’avertissement
+ title: Gérer les présélections d’avertissement
admin_mailer:
+ new_pending_account:
+ body: Les détails du nouveau compte se trouvent ci-dessous. Vous pouvez approuver ou rejeter cette demande.
+ subject: Nouveau compte à examiner sur %{instance} (%{username})
new_report:
body: "%{reporter} a signalé %{target}"
body_remote: Quelqu’un de %{domain} a signalé %{target}
@@ -482,8 +514,9 @@ fr:
warning: Soyez prudent⋅e avec ces données. Ne les partagez pas !
your_token: Votre jeton d’accès
auth:
- agreement_html: En cliquant sur "S'inscrire" ci-dessous, vous souscrivez aux règles de l’instance et à nos conditions d’utilisation.
+ apply_for_account: Demander une invitation
change_password: Mot de passe
+ checkbox_agreement_html: J’accepte les règles du serveur et les conditions de service
confirm_email: Confirmer mon adresse mail
delete_account: Supprimer le compte
delete_account_html: Si vous désirez supprimer votre compte, vous pouvez cliquer ici. Il vous sera demandé de confirmer cette action.
@@ -499,10 +532,12 @@ fr:
cas: CAS
saml: SAML
register: S’inscrire
+ registration_closed: "%{instance} n’accepte pas de nouveaux membres"
resend_confirmation: Envoyer à nouveau les consignes de confirmation
reset_password: Réinitialiser le mot de passe
security: Sécurité
set_new_password: Définir le nouveau mot de passe
+ trouble_logging_in: Vous avez un problème pour vous connecter ?
authorize_follow:
already_following: Vous suivez déjà ce compte
error: Malheureusement, il y a eu une erreur en cherchant les détails du compte distant
@@ -534,15 +569,15 @@ fr:
description_html: Cela va supprimer votre compte et le désactiver de manière permanente et irréversible. Votre nom d’utilisateur⋅ice restera réservé afin d’éviter la confusion.
proceed: Supprimer compte
success_msg: Votre compte a été supprimé avec succès
- warning_html: Seule la suppression du contenu depuis cette instance est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les instances hors-ligne ainsi que ceux n’étant plus abonnées à vos publications ne mettront pas leur base de données à jour.
+ warning_html: Seule la suppression du contenu depuis ce serveur est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les serveurs hors-ligne ainsi que ceux n’étant plus abonnées à vos publications ne mettront pas leur base de données à jour.
warning_title: Disponibilité du contenu disséminé
directories:
directory: Annuaire des profils
- enabled: Vous êtes actuellement listé dans l'annuaire.
- enabled_but_waiting: Vous avez choisi d'être listé dans l'annuaire, mais vous n'avez pas encore le nombre minimum de suiveurs (%{min_followers}) pour y être inscrit.
- explanation: Découvrir des utilisateurs en se basant sur leurs centres d'intérêt
+ enabled: Vous êtes actuellement listé dans l’annuaire.
+ enabled_but_waiting: Vous avez choisi d’être listé dans l’annuaire, mais vous n’avez pas encore le nombre minimum de suiveurs (%{min_followers}) pour y être inscrit.
+ explanation: Découvrir des utilisateurs en se basant sur leurs centres d’intérêt
explore_mastodon: Explorer %{title}
- how_to_enable: Vous n'êtes pas encore inscrit dans l'annuaire. Vous pouvez vous inscrire ci-dessous. Utilisez des hashtags dans votre texte biographique pour être listé sous des hashtags spécifiques !
+ how_to_enable: Vous n’êtes pas encore inscrit dans l’annuaire. Vous pouvez vous inscrire ci-dessous. Utilisez des hashtags dans votre texte biographique pour être listé sous des hashtags spécifiques !
people:
one: "%{count} personne"
other: "%{count} personne"
@@ -558,6 +593,9 @@ fr:
content: Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté.
title: Cette page n’est pas correcte
noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l’une des applications natives pour Mastodon pour votre plate-forme.
+ existing_username_validator:
+ not_found: n’a pas trouvé d’utilisateur·rice local·e avec ce nom
+ not_found_multiple: n’a pas trouvé %{usernames}
exports:
archive_takeout:
date: Date
@@ -598,23 +636,45 @@ fr:
more: Davantage…
resources: Ressources
generic:
+ all: Tous
changes_saved_msg: Les modifications ont été enregistrées avec succès !
copy: Copier
+ order_by: Classer par
save_changes: Enregistrer les modifications
validation_errors:
one: Quelque chose ne va pas ! Vérifiez l’erreur ci-dessous
other: Certaines choses ne vont pas ! Vérifiez les %{count} erreurs ci-dessous
+ html_validator:
+ invalid_markup: 'contient un balisage HTML invalide: %{error}'
+ identity_proofs:
+ active: Actif
+ authorize: Oui, autoriser
+ authorize_connection_prompt: Autoriser cette connexion chiffrée ?
+ errors:
+ failed: La connexion chiffrée a échoué. Veuillez réessayer à partir de %{provider}.
+ keybase:
+ invalid_token: Les jetons Keybase sont des hachages de signatures et doivent comporter 66 caractères hexadécimaux
+ verification_failed: Keybase ne reconnaît pas ce jeton comme une signature de l’utilisateur Keybase %{kb_username}. Veuillez réessayer à partir de Keybase.
+ wrong_user: Impossible de créer une preuve pour %{proving} lorsque vous êtes connecté en tant que %{current}. Connectez-vous en tant que %{proving} et réessayez.
+ explanation_html: Ici, vous pouvez connecter de manière chiffrée vos autres identités, par exemple un profil Keybase. Cela permet à d’autres personnes de vous envoyer des messages chiffrés et de faire confiance au contenu que vous leur envoyez.
+ i_am_html: Je suis %{username} sur %{service}.
+ identity: Identité
+ inactive: Inactif
+ publicize_checkbox: 'Et le poueter:'
+ publicize_toot: 'C’est prouvé ! Je suis %{username} sur %{service}: %{url}'
+ status: Statut de vérification
+ view_proof: Voir la preuve
imports:
modes:
merge: Fusionner
merge_long: Garder les enregistrements existants et ajouter les nouveaux
overwrite: Réécrire
overwrite_long: Remplacer les enregistrements actuels par les nouveaux
- preface: Vous pouvez importer certaines données que vous avez exporté d'une autre instance, comme une liste des personnes que vous suivez ou bloquez sur votre compte.
+ preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte.
success: Vos données ont été importées avec succès et seront traitées en temps et en heure
types:
blocking: Liste d’utilisateur⋅ice⋅s bloqué⋅e⋅s
- domain_blocking: Liste des instances bloquées
+ domain_blocking: Liste des serveurs bloquées
following: Liste d’utilisateur⋅ice⋅s suivi⋅e⋅s
muting: Liste d’utilisateur⋅ice⋅s que vous masquez
upload: Importer
@@ -636,7 +696,7 @@ fr:
one: 1 usage
other: "%{count} usages"
max_uses_prompt: Pas de limite
- prompt: Générer et partager des liens avec les autres pour donner accès à cette instance
+ prompt: Générer et partager des liens avec les autres pour donner accès à ce serveur
table:
expires_at: Expire
uses: Utilise
@@ -714,15 +774,25 @@ fr:
duration_too_short: est trop tôt
expired: Ce sondage est déjà terminé
over_character_limit: ne peuvent être plus long que %{max} caractères chacun
- too_few_options: doit avoir plus qu'une proposition
+ too_few_options: doit avoir plus qu’une proposition
too_many_options: ne peut contenir plus que %{max} propositions
preferences:
- languages: Langues
other: Autre
- publishing: Publication
- web: Web
+ relationships:
+ activity: Activité du compte
+ dormant: Dormant
+ last_active: Dernière activité
+ most_recent: Plus récent
+ moved: Déménagé
+ mutual: Mutuel
+ primary: Primaire
+ relationship: Relation
+ remove_selected_domains: Supprimer tous les abonné·e·s des domaines sélectionnés
+ remove_selected_followers: Supprimer les abonné·e·s sélectionnés
+ remove_selected_follows: Cesser de suivre les utilisateur·rice·s sélectionné·e·s
+ status: Statut du compte
remote_follow:
- acct: Entrez l’adresse profil@instance depuis laquelle vous voulez vous abonner
+ acct: Entrez l’adresse profil@serveur depuis laquelle vous voulez vous abonner
missing_resource: L’URL de redirection n’a pas pu être trouvée
no_account_html: Vous n’avez pas de compte ? Vous pouvez vous inscrire ici
proceed: Confirmer l’abonnement
@@ -730,7 +800,7 @@ fr:
reason_html: "Pourquoi cette étape est-elle nécessaire? %{instance} pourrait ne pas être le serveur où vous vous êtes inscrit, et nous devons donc vous rediriger vers votre serveur de base en premier."
remote_interaction:
favourite:
- proceed: Confirmer l'ajout aux favoris
+ proceed: Confirmer l’ajout aux favoris
prompt: 'Vous souhaitez mettre ce pouet en favori :'
reblog:
proceed: Confirmer le repartage
@@ -788,6 +858,9 @@ fr:
revoke_success: Session révoquée avec succès
title: Sessions
settings:
+ account: Compte
+ account_settings: Paramètres du compte
+ appearance: Apparence
authorized_apps: Applications autorisées
back: Retour vers Mastodon
delete: Suppression de compte
@@ -795,13 +868,15 @@ fr:
edit_profile: Modifier le profil
export: Export de données
featured_tags: Hashtags mis en avant
+ identity_proofs: Preuves d’identité
import: Import de données
+ import_and_export: Import et export
migrate: Migration de compte
notifications: Notifications
preferences: Préférences
- settings: Réglages
+ profile: Profil
+ relationships: Abonnements et abonné·e·s
two_factor_authentication: Identification à deux facteurs
- your_apps: Vos applications
statuses:
attached:
description: 'Attaché : %{attached}'
@@ -957,8 +1032,8 @@ fr:
title: Récupération de l’archive
warning:
explanation:
- disable: Lorsque votre compte est gelé, les données de votre compte demeurent intactes, mais vous ne pouvez effectuer aucune action jusqu'à ce qu'il soit débloqué.
- silence: Lorsque votre compte est limité, seulement les utilisateurs qui vous suivent déjà verront vos pouets sur ce serveur, et vous pourriez être exclu de plusieurs listes publiques. Néanmoins, d'autres utilisateurs peuvent vous suivre manuellement.
+ disable: Lorsque votre compte est gelé, les données de votre compte demeurent intactes, mais vous ne pouvez effectuer aucune action jusqu’à ce qu’il soit débloqué.
+ silence: Lorsque votre compte est limité, seulement les utilisateurs qui vous suivent déjà verront vos pouets sur ce serveur, et vous pourriez être exclu de plusieurs listes publiques. Néanmoins, d’autres utilisateurs peuvent vous suivre manuellement.
suspend: Votre compte a été suspendu, et tous vos pouets et vos fichiers multimédia téléversés ont été supprimés irréversiblement de ce serveur, et des serveurs où vous aviez des abonné⋅e⋅s.
review_server_policies: Passer en revue les politiques du serveur
subject:
@@ -978,7 +1053,7 @@ fr:
final_action: Commencer à publier
final_step: 'Commencez à poster ! Même sans abonné·e·s, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
full_handle: Votre identifiant complet
- full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’une autre instance.
+ full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur.
review_preferences_action: Modifier les préférences
review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF.
subject: Bienvenue sur Mastodon
@@ -996,5 +1071,5 @@ fr:
seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles.
signed_in_as: 'Connecté·e en tant que :'
verification:
- explanation_html: 'Vous pouvez vérifier vous-même que vous êtes le propriétaire des liens dans les métadonnées de votre profil. Pour cela, le site Web lié doit contenir un lien vers votre profil Mastodon. Le lien de retour doitavoir un attribut rel="me". Le contenu textuel du lien n''a pas d''importance. En voici un exemple :'
+ explanation_html: 'Vous pouvez vérifier vous-même que vous êtes le propriétaire des liens dans les métadonnées de votre profil. Pour cela, le site Web lié doit contenir un lien vers votre profil Mastodon. Le lien de retour doitavoir un attribut rel="me". Le contenu textuel du lien n’a pas d’importance. En voici un exemple :'
verification: Vérification
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 32f642e16..95066d007 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -506,7 +506,6 @@ gl:
warning: Teña moito tino con estos datos. Nunca os comparta con ninguén!
your_token: O seu testemuño de acceso
auth:
- agreement_html: Ao pulsar "Rexistrar" vostede acorda seguir as normas do servidor e os termos do servizo.
apply_for_account: Solicite un convite
change_password: Contrasinal
checkbox_agreement_html: Acepto as regras do servidor e os termos do servizo
@@ -761,10 +760,7 @@ gl:
too_few_options: debe ter máis de unha opción
too_many_options: non pode haber máis de %{max} opcións
preferences:
- languages: Idiomas
other: Outro
- publishing: Publicando
- web: Web
relationships:
activity: Actividade da conta
dormant: En repouso
@@ -856,9 +852,7 @@ gl:
notifications: Notificacións
preferences: Preferencias
relationships: Seguindo e seguidoras
- settings: Axustes
two_factor_authentication: Validar Doble Factor
- your_apps: As súas aplicacións
statuses:
attached:
description: 'Axenado: %{attached}'
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 089af2beb..e471c4d02 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -310,7 +310,6 @@ he:
export: יצוא מידע
import: יבוא
preferences: העדפות
- settings: הגדרות
two_factor_authentication: אימות דו-שלבי
statuses:
open_in_web: פתח ברשת
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index f53515d7a..f9c552bce 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -115,7 +115,6 @@ hr:
export: Izvoz podataka
import: Uvezi
preferences: Postavke
- settings: Podešenja
two_factor_authentication: Dvo-faktorska Autentifikacija
statuses:
open_in_web: Otvori na webu
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 04318f5e4..558330c5a 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -309,7 +309,6 @@ hu:
warning: Ez érzékeny adat. Soha ne oszd meg másokkal!
your_token: Hozzáférési kulcsod
auth:
- agreement_html: A feliratkozással elfogatod az instancia szabályzatát és a felhasználási feltételeket.
delete_account: Felhasználói fiók törlése
delete_account_html: Felhasználói fiókod törléséhez kattints ide. A rendszer újbóli megerősítést fog kérni.
didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket?
@@ -473,10 +472,7 @@ hu:
prev: Előző
truncate: "…"
preferences:
- languages: Nyelvek
other: Egyéb
- publishing: Közzététel
- web: Web
remote_follow:
acct: Írd be a felhasználódat, amelyről követni szeretnéd felhasznalonev@domain formátumban
missing_resource: A fiókodnál nem található a szükséges átirányítási URL
@@ -534,9 +530,7 @@ hu:
migrate: Fiók átirányítása
notifications: Értesítések
preferences: Általános beállítások
- settings: Beállítások
two_factor_authentication: Kétlépcsős azonosítás
- your_apps: Alkalmazásaid
statuses:
open_in_web: Megnyitás a weben
over_character_limit: Túllépted a maximális %{max} karakteres keretet
diff --git a/config/locales/id.yml b/config/locales/id.yml
index a27f1f008..4323c145f 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -334,7 +334,6 @@ id:
export: Expor data
import: Impor
preferences: Pilihan
- settings: Pengaturan
two_factor_authentication: Autentikasi Two-factor
statuses:
open_in_web: Buka di web
diff --git a/config/locales/io.yml b/config/locales/io.yml
index b926fe641..b5edb2aa3 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -235,7 +235,6 @@ io:
export: Exportacar datumi
import: Importacar
preferences: Preferi
- settings: Settings
two_factor_authentication: Dufaktora autentikigo
statuses:
open_in_web: Apertar retnavigile
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 384ba918b..511af485a 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -467,7 +467,6 @@ it:
token_regenerated: Token di accesso rigenerato
warning: Fa' molta attenzione con questi dati. Non fornirli mai a nessun altro!
auth:
- agreement_html: Iscrivendoti, accetti di seguire le regole del server e le nostre condizioni di servizio.
change_password: Password
confirm_email: Conferma email
delete_account: Elimina account
@@ -693,10 +692,7 @@ it:
too_few_options: deve avere più di un elemento
too_many_options: non può contenere più di %{max} elementi
preferences:
- languages: Lingue
other: Altro
- publishing: Pubblicazione
- web: Web
remote_follow:
acct: Inserisci il tuo username@dominio da cui vuoi seguire questo utente
missing_resource: Impossibile trovare l'URL di reindirizzamento richiesto per il tuo account
@@ -763,9 +759,7 @@ it:
migrate: Migrazione dell'account
notifications: Notifiche
preferences: Preferenze
- settings: Impostazioni
two_factor_authentication: Autenticazione a due fattori
- your_apps: Le tue applicazioni
statuses:
attached:
description: 'Allegato: %{attached}'
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 6eab21a49..5935ebe56 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -9,9 +9,9 @@ ja:
administered_by: '管理者:'
api: API
apps: アプリ
- apps_platforms: iOSやAndroid、その他プラットフォームから使用する
- browse_directory: ディレクトリで関心を軸に見つける
- browse_public_posts: Mastodonの公開ライブストリームを見てみる
+ apps_platforms: iOSやAndroidなど、各種環境から利用できます
+ browse_directory: ディレクトリから気になる人を探しましょう
+ browse_public_posts: Mastodonの公開ライブストリームをご覧ください
contact: 連絡先
contact_missing: 未設定
contact_unavailable: N/A
@@ -20,13 +20,13 @@ ja:
extended_description_html: |
ルールを書くのに適した場所
詳細説明が設定されていません。
- federation_hint_html: "%{instance} にアカウントを作ればどこのMastodonや互換性のあるサーバーのユーザーでもフォローできます。"
+ federation_hint_html: "%{instance} のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。"
generic_description: "%{domain} は、Mastodon サーバーの一つです"
get_apps: モバイルアプリを試す
hosted_on: Mastodon hosted on %{domain}
learn_more: もっと詳しく
privacy_policy: プライバシーポリシー
- see_whats_happening: 何が起きているのか見てみる
+ see_whats_happening: やりとりを見てみる
server_stats: 'サーバー統計:'
source_code: ソースコード
status_count_after:
@@ -68,6 +68,7 @@ ja:
admin: Admin
bot: Bot
moderator: Mod
+ unavailable: プロフィールは利用できません
unfollow: フォロー解除
admin:
account_actions:
@@ -80,6 +81,7 @@ ja:
destroyed_msg: モデレーションメモを削除しました!
accounts:
approve: 承認
+ approve_all: すべて承認
are_you_sure: 本当に実行しますか?
avatar: アイコン
by_domain: ドメイン
@@ -125,17 +127,18 @@ ja:
moderation:
active: アクティブ
all: すべて
- pending: 保留中
+ pending: 承認待ち
silenced: サイレンス済み
suspended: 停止済み
title: モデレーション
moderation_notes: モデレーションメモ
most_recent_activity: 直近の活動
most_recent_ip: 直近のIP
+ no_account_selected: 何も選択されていないため、変更されていません
no_limits_imposed: 制限なし
not_subscribed: 購読していない
outbox_url: Outbox URL
- pending: 審査待ち
+ pending: 承認待ち
perform_full_suspension: 活動を完全に停止させる
profile_url: プロフィールURL
promote: 昇格
@@ -144,6 +147,7 @@ ja:
push_subscription_expires: PuSH購読期限
redownload: プロフィールを更新
reject: 却下
+ reject_all: すべて却下
remove_avatar: アイコンを削除
remove_header: ヘッダーを削除
resend_confirmation:
@@ -163,8 +167,8 @@ ja:
search: 検索
shared_inbox_url: Shared inbox URL
show:
- created_reports: このアカウントで作られたレポート
- targeted_reports: このアカウントについてのレポート
+ created_reports: このアカウントで作られた通報
+ targeted_reports: このアカウントについての通報
silence: サイレンス
silenced: サイレンス済み
statuses: トゥート数
@@ -180,7 +184,7 @@ ja:
web: Web
action_logs:
actions:
- assigned_to_self_report: "%{name} さんがレポート %{target} を自身の担当に割り当てました"
+ assigned_to_self_report: "%{name} さんが通報 %{target} を自身の担当に割り当てました"
change_email_user: "%{name} さんが %{target} さんのメールアドレスを変更しました"
confirm_user: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました"
create_account_warning: "%{name} さんが %{target} さんに警告メールを送信しました"
@@ -200,12 +204,12 @@ ja:
memorialize_account: "%{name} さんが %{target} さんを追悼アカウントページに登録しました"
promote_user: "%{name} さんが %{target} さんを昇格しました"
remove_avatar_user: "%{name} さんが %{target} さんのアイコンを削除しました"
- reopen_report: "%{name} さんがレポート %{target} を再び開きました"
+ reopen_report: "%{name} さんが通報 %{target} を再び開きました"
reset_password_user: "%{name} さんが %{target} さんのパスワードをリセットしました"
- resolve_report: "%{name} さんがレポート %{target} を解決済みにしました"
+ resolve_report: "%{name} さんが通報 %{target} を解決済みにしました"
silence_account: "%{name} さんが %{target} さんをサイレンスにしました"
suspend_account: "%{name} さんが %{target} さんを停止しました"
- unassigned_report: "%{name} さんがレポート %{target} の担当を外しました"
+ unassigned_report: "%{name} さんが通報 %{target} の担当を外しました"
unsilence_account: "%{name} さんが %{target} さんのサイレンスを解除しました"
unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
@@ -245,9 +249,10 @@ ja:
feature_profile_directory: ディレクトリ
feature_registrations: 新規登録
feature_relay: 連合リレー
+ feature_timeline_preview: タイムラインプレビュー
features: 機能
hidden_service: 秘匿サービスとの連合
- open_reports: 未解決のレポート
+ open_reports: 未解決の通報
recent_users: 最近登録したユーザー
search: 全文検索
single_user_mode: シングルユーザーモード
@@ -264,6 +269,7 @@ ja:
created_msg: ドメインブロック処理を完了しました
destroyed_msg: ドメインブロックを外しました
domain: ドメイン
+ existing_domain_block_html: 既に%{name}に対して、より厳しい制限を課しています。先にその制限を解除する必要があります。
new:
create: ブロックを作成
hint: ドメインブロックはデータベース中のアカウント項目の作成を妨げませんが、遡って自動的に指定されたモデレーションをそれらのアカウントに適用します。
@@ -275,10 +281,10 @@ ja:
title: 新規ドメインブロック
reject_media: メディアファイルを拒否
reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です
- reject_reports: レポートを拒否
- reject_reports_hint: このドメインからのレポートをすべて無視します。停止とは無関係です
+ reject_reports: 通報を拒否
+ reject_reports_hint: このドメインからの通報をすべて無視します。停止とは無関係です
rejecting_media: メディアファイルを拒否中
- rejecting_reports: レポートを拒否中
+ rejecting_reports: 通報を拒否中
severity:
silence: サイレンス中
suspend: 停止中
@@ -287,8 +293,8 @@ ja:
one: データベース中の一つのアカウントに影響します
other: データベース中の%{count}個のアカウントに影響します
retroactive:
- silence: このドメインからの存在するすべてのアカウントのサイレンスを戻す
- suspend: このドメインからの存在するすべてのアカウントの停止を戻す
+ silence: このドメインの既存の影響するアカウントのサイレンスを戻す
+ suspend: このドメインの既存の影響するアカウントの停止を戻す
title: "%{domain}のドメインブロックを戻す"
undo: 元に戻す
undo: ドメインブロックを戻す
@@ -319,7 +325,7 @@ ja:
total_blocked_by_us: ブロック合計
total_followed_by_them: 被フォロー合計
total_followed_by_us: フォロー合計
- total_reported: レポート合計
+ total_reported: 通報合計
total_storage: 添付されたメディア
invites:
deactivate_all: すべて無効化
@@ -329,6 +335,8 @@ ja:
expired: 期限切れ
title: フィルター
title: 招待
+ pending_accounts:
+ title: 承認待ちアカウント (%{count})
relays:
add_new: リレーを追加
delete: 削除
@@ -345,19 +353,19 @@ ja:
status: ステータス
title: リレー
report_notes:
- created_msg: レポートメモを書き込みました!
- destroyed_msg: レポートメモを削除しました!
+ created_msg: 通報メモを書き込みました!
+ destroyed_msg: 通報メモを削除しました!
reports:
account:
note: メモ
- report: レポート
- action_taken_by: レポート処理者
+ report: 通報
+ action_taken_by: 通報処理者
are_you_sure: 本当に実行しますか?
assign_to_self: 担当になる
assigned: 担当者
comment:
none: なし
- created_at: レポート日時
+ created_at: 通報日時
mark_as_resolved: 解決済みとしてマーク
mark_as_unresolved: 未解決として再び開く
notes:
@@ -367,13 +375,13 @@ ja:
delete: 削除
placeholder: どのような措置が取られたか、または関連する更新を記述してください…
reopen: 再び開く
- report: レポート#%{id}
+ report: 通報#%{id}
reported_account: 報告対象アカウント
reported_by: 報告者
resolved: 解決済み
- resolved_msg: レポートを解決済みにしました!
+ resolved_msg: 通報を解決済みにしました!
status: ステータス
- title: レポート
+ title: 通報
unassign: 担当を外す
unresolved: 未解決
updated_at: 更新日時
@@ -386,7 +394,7 @@ ja:
title: 新規ユーザーが自動フォローするアカウント
contact_information:
email: ビジネスメールアドレス
- username: 連絡先のユーザー名
+ username: 連絡先ユーザー名
custom_css:
desc_html: 全ページに適用されるCSSの編集
title: カスタムCSS
@@ -485,7 +493,7 @@ ja:
admin_mailer:
new_pending_account:
body: 新しいアカウントの詳細は以下の通りです。この申請を承認または却下することができます。
- subject: "%{instance} で新しいアカウント (%{username}) が審査待ちです"
+ subject: "%{instance} で新しいアカウント (%{username}) が承認待ちです"
new_report:
body: "%{reporter} が %{target} を通報しました"
body_remote: "%{domain} の誰かが %{target} を通報しました"
@@ -506,7 +514,6 @@ ja:
warning: このデータは気をつけて取り扱ってください。他の人と共有しないでください!
your_token: アクセストークン
auth:
- agreement_html: 登録するをクリックすると サーバーのルール と プライバシーポリシー に従うことに同意したことになります。
apply_for_account: 登録を申請する
change_password: パスワード
checkbox_agreement_html: サーバーのルール と プライバシーポリシー に同意します
@@ -525,7 +532,7 @@ ja:
cas: CAS
saml: SAML
register: 登録する
- registration_closed: "%{instance} は現在新しいメンバーを受け入れていません"
+ registration_closed: "%{instance} は現在、新規登録停止中です"
resend_confirmation: 確認メールを再送する
reset_password: パスワードを再発行
security: セキュリティ
@@ -586,6 +593,9 @@ ja:
content: もうしわけありませんが、なにかが間違っています。
title: このページは正しくありません
noscript_html: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けのMastodonネイティブアプリを探すことができます。
+ existing_username_validator:
+ not_found: そのようなユーザー名はローカルに見つかりませんでした
+ not_found_multiple: "%{usernames} は見つかりませんでした"
exports:
archive_takeout:
date: 日時
@@ -629,10 +639,31 @@ ja:
all: すべて
changes_saved_msg: 正常に変更されました!
copy: コピー
+ order_by: 並び順
save_changes: 変更を保存
validation_errors:
one: エラーが発生しました! 以下のエラーを確認してください
other: エラーが発生しました! 以下の%{count}個のエラーを確認してください
+ html_validator:
+ invalid_markup: '無効なHTMLマークアップが含まれています: %{error}'
+ identity_proofs:
+ active: アクティブ
+ authorize: 許可する
+ authorize_connection_prompt: この暗号化接続を許可しますか?
+ errors:
+ failed: 暗号化接続に失敗しました。%{provider}からもう一度やり直してください。
+ keybase:
+ invalid_token: Keybaseトークンは16進数で66文字のハッシュである必要があります
+ verification_failed: KeybaseはこのトークンをKeybaseユーザー%{kb_username}の署名として認識しませんでした。Keybaseから再試行してください。
+ wrong_user: "%{current}としてログインしている間%{proving}の証明を作成することはできません。%{proving}としてログインし、もう一度やり直してください。"
+ explanation_html: ここではKeybaseのような他のサービスのアカウントと暗号化し関連づけることができます。これにより他の人が暗号化されたメッセージを送信したり、その内容を信用できるようになります。
+ i_am_html: I am %{username} on %{service}.
+ identity: Identity
+ inactive: 非アクティブ
+ publicize_checkbox: 'そしてこれをトゥートします:'
+ publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}'
+ status: 認証状態
+ view_proof: 証明を表示
imports:
modes:
merge: 統合
@@ -736,18 +767,29 @@ ja:
truncate: "…"
polls:
errors:
+ already_voted: このアンケートには投票済みです
duplicate_options: に同じものがあります
duration_too_long: が長過ぎます
duration_too_short: が短過ぎます
- expired: 既に終了している投票です
+ expired: アンケートは既に終了しました
over_character_limit: は%{max}文字より長くすることはできません
too_few_options: は複数必要です
too_many_options: は%{max}個までです
preferences:
- languages: 言語
other: その他
- publishing: 投稿
- web: ウェブ
+ relationships:
+ activity: 活動
+ dormant: 非アクティブ
+ last_active: 最後の活動
+ most_recent: 新着
+ moved: 引っ越し済み
+ mutual: 相互
+ primary: 標準
+ relationship: 関係性
+ remove_selected_domains: 選択したドメインのフォロワーを全て解除
+ remove_selected_followers: 選択したフォロワーを解除
+ remove_selected_follows: 選択したユーザーをフォロー解除
+ status: 状態
remote_follow:
acct: あなたの ユーザー名@ドメイン を入力してください
missing_resource: リダイレクト先が見つかりませんでした
@@ -815,6 +857,9 @@ ja:
revoke_success: セッションを削除しました
title: セッション
settings:
+ account: アカウント
+ account_settings: セキュリティ
+ appearance: プロフィールを編集
authorized_apps: 認証済みアプリ
back: Mastodon に戻る
delete: アカウントの削除
@@ -822,13 +867,15 @@ ja:
edit_profile: プロフィールを編集
export: データのエクスポート
featured_tags: 注目のハッシュタグ
+ identity_proofs: Identity proofs
import: データのインポート
+ import_and_export: インポート・エクスポート
migrate: アカウントの引っ越し
notifications: 通知
preferences: ユーザー設定
- settings: 設定
+ profile: プロフィール
+ relationships: フォロー・フォロワー
two_factor_authentication: 二段階認証
- your_apps: アプリ
statuses:
attached:
description: '添付: %{attached}'
@@ -850,12 +897,12 @@ ja:
limit: 固定できるトゥート数の上限に達しました
ownership: 他人のトゥートを固定することはできません
private: 非公開のトゥートを固定することはできません
- reblog: ブーストされたトゥートを固定することはできません
+ reblog: ブーストを固定することはできません
poll:
total_votes:
- one: "%{count} vote"
- other: "%{count} votes"
- vote: Vote
+ one: "%{count}票"
+ other: "%{count}票"
+ vote: 投票
show_more: もっと見る
sign_in_to_participate: ログインして会話に参加
title: '%{name}: "%{quote}"'
@@ -1000,21 +1047,21 @@ ja:
suspend: アカウントが停止されました
welcome:
edit_profile_action: プロフィールを設定
- edit_profile_step: アバター画像やヘッダー画像をアップロードしたり、表示名やその他プロフィールを変更しカスタマイズすることができます。新しいフォロワーからのフォローを許可する前に検討したい場合、アカウントを承認制にすることができます。
+ edit_profile_step: アイコンやヘッダーの画像をアップロードしたり、表示名を変更したりして、自分のプロフィールをカスタマイズすることができます。また、誰かからの新規フォローを許可する前にその人の様子を見ておきたい場合、アカウントを承認制にすることもできます。
explanation: 始めるにあたってのアドバイスです
final_action: 始めましょう
- final_step: 'さあ始めましょう! たとえフォロワーがいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどで誰かの目に止まるかもしれません。自己紹介をしたい時は #introductions ハッシュタグを使うといいかもしれません。'
- full_handle: あなたの正式なユーザー名
- full_handle_hint: これは別のサーバーからフォローしてもらったりメッセージのやり取りをする際に、友達に伝えるといいでしょう。
+ final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。'
+ full_handle: あなたの正式なユーザーID
+ full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。
review_preferences_action: 設定の変更
- review_preferences_step: 受け取りたいメールや投稿の公開範囲などの設定を必ず行ってください。不快でないならアニメーション GIF の自動再生を有効にすることもできます。
+ review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーション GIF を自動再生する設定もご検討ください。
subject: Mastodon へようこそ
tip_federated_timeline: 連合タイムラインは Mastodon ネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。
- tip_following: 標準では自動でサーバーの管理者をフォローしています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してください。
+ tip_following: 最初は、サーバーの管理者をフォローした状態になっています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してみましょう。
tip_local_timeline: ローカルタイムラインは %{instance} にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです!
- tip_mobile_webapp: もしモバイル端末のブラウザで Mastodon をホーム画面に追加できる場合、プッシュ通知を受け取ることができます。それはまるでネイティブアプリのように動作します!
+ tip_mobile_webapp: お使いのモバイル端末で、ブラウザから Mastodon をホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます!
tips: 豆知識
- title: ようこそ、%{name} !
+ title: ようこそ、%{name}!
users:
follow_limit_reached: あなたは現在 %{limit} 人以上フォローできません
invalid_email: メールアドレスが無効です
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 8e537c745..ef93cc997 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -401,7 +401,6 @@ ka:
warning: იყავით ძალიან ფრთხილად ამ მონაცემთან. არასდროს გააზიაროთ ეს!
your_token: თქვენი წვდომის ტოკენი
auth:
- agreement_html: რეგისტრაციით თქვენ ეთანხმებით ინსტანციის წესებს და ჩვენ მომსახურების პირობებს.
change_password: პაროლი
confirm_email: ელ-ფოსტის დამოწმება
delete_account: ანგარიშის გაუქმება
@@ -603,10 +602,7 @@ ka:
prev: წინა
truncate: "…"
preferences:
- languages: ენები
other: სხვა
- publishing: გამოქვეყნება
- web: ვები
remote_follow:
acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ
missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა
@@ -669,9 +665,7 @@ ka:
migrate: ანგარიშის მიგრაცია
notifications: შეტყობინებები
preferences: პრეფერენციები
- settings: პარამეტრები
two_factor_authentication: მეორე-ფაქტორის აუტენტიფიკაცია
- your_apps: თქვენი აპლიკაციები
statuses:
attached:
description: 'თან დართული: %{attached}'
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 4ac4c08b9..5843000f3 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -482,7 +482,6 @@ kk:
warning: Be very carеful with this data. Never share it with anyone!
your_token: Your access tokеn
auth:
- agreement_html: '"Тіркелу" батырмасын басу арқылы сервер ережелері мен қолдану шарттарына келісесіз.'
change_password: Құпиясөз
confirm_email: Еmаil құптау
delete_account: Аккаунт өшіру
@@ -716,10 +715,7 @@ kk:
too_few_options: бір жауаптан көп болуы керек
too_many_options: "%{max} жауаптан көп болмайды"
preferences:
- languages: Тілдер
other: Басқа
- publishing: Жариялау
- web: Веб
remote_follow:
acct: Өзіңіздің username@domain теріңіз
missing_resource: Аккаунтыңызға байланған URL табылмады
@@ -798,9 +794,7 @@ kk:
migrate: Аккаунт көшіру
notifications: Ескертпелер
preferences: Таңдаулар
- settings: Баптаулар
two_factor_authentication: Екі-факторлы авторизация
- your_apps: Қосымшалар
statuses:
attached:
description: 'Жүктелді: %{attached}'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index ee5d662bb..274f68df7 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -68,6 +68,7 @@ ko:
admin: 관리자
bot: 봇
moderator: 모더레이터
+ unavailable: 프로필 사용 불가
unfollow: 팔로우 해제
admin:
account_actions:
@@ -80,6 +81,7 @@ ko:
destroyed_msg: 모더레이션 기록이 성공적으로 삭제되었습니다!
accounts:
approve: 승인
+ approve_all: 모두 승인
are_you_sure: 정말로 실행하시겠습니까?
avatar: 아바타
by_domain: 도메인
@@ -132,6 +134,7 @@ ko:
moderation_notes: 모더레이션 기록
most_recent_activity: 최근 활동
most_recent_ip: 최근 IP
+ no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다
no_limits_imposed: 제한 없음
not_subscribed: 구독하지 않음
outbox_url: 발신함 URL
@@ -144,6 +147,7 @@ ko:
push_subscription_expires: PuSH 구독 기간 만료
redownload: 프로필 업데이트
reject: 거부
+ reject_all: 모두 거부
remove_avatar: 아바타 지우기
remove_header: 헤더 삭제
resend_confirmation:
@@ -245,6 +249,7 @@ ko:
feature_profile_directory: 프로필 디렉토리
feature_registrations: 가입
feature_relay: 연합 릴레이
+ feature_timeline_preview: 타임라인 미리보기
features: 기능
hidden_service: 히든 서비스와의 연합
open_reports: 미해결 신고
@@ -264,6 +269,7 @@ ko:
created_msg: 도메인 차단 처리를 완료했습니다
destroyed_msg: 도메인 차단이 해제되었습니다
domain: 도메인
+ existing_domain_block_html: 이미 %{name}에 대한 더 강력한 제한이 걸려 있습니다, 차단 해제를 먼저 해야 합니다.
new:
create: 차단 추가
hint: 도메인 차단은 내부 데이터베이스에 계정이 생성되는 것까지는 막을 수 없지만, 그 도메인에서 생성된 계정에 자동적으로 특정한 모더레이션을 적용하게 할 수 있습니다.
@@ -331,6 +337,8 @@ ko:
expired: 만료됨
title: 필터
title: 초대
+ pending_accounts:
+ title: 대기중인 계정 (%{count})
relays:
add_new: 릴레이 추가
delete: 삭제
@@ -508,7 +516,6 @@ ko:
warning: 이 데이터를 조심히 다뤄 주세요. 다른 사람들과 절대로 공유하지 마세요!
your_token: 액세스 토큰
auth:
- agreement_html: 이 등록으로 이 서버의 이용규약 과 약관에 동의하는 것으로 간주됩니다.
apply_for_account: 가입 요청하기
change_password: 패스워드
checkbox_agreement_html: 서버 규칙과 이용약관에 동의합니다
@@ -634,6 +641,7 @@ ko:
all: 모두
changes_saved_msg: 정상적으로 변경되었습니다!
copy: 복사
+ order_by: 순서
save_changes: 변경 사항을 저장
validation_errors:
one: 오류가 발생했습니다. 아래 오류를 확인해 주십시오
@@ -649,10 +657,13 @@ ko:
keybase:
invalid_token: 키베이스 토큰은 서명의 해시이며 66자의 16진수 문자여야 합니다
verification_failed: 키베이스가 이 토큰을 키베이스 유저 %{kb_username}의 서명으로 인식하지 못했습니다. 키베이스에서 다시 시도하세요.
+ wrong_user: "%{current}로 로그인 한 상태에서는 %{proving}에 대한 증명을 할 수 없습니다. %{proving}으로 로그인 한 후 다시 시도하세요."
explanation_html: 키베이스와 같은 다른 명의에 대한 암호화 연결을 할 수 있습니다. 이것으로 다른 사람들이 당신에게 암호화 된 메시지를 보낼 수 있고 당신의 메시지를 믿을 수 있습니다.
i_am_html: 나는 %{service}의 %{username} 입니다.
identity: 신원
inactive: 비활성
+ publicize_checkbox: '그리고 이것을 툿 하세요:'
+ publicize_toot: '증명되었습니다! 저는 %{service}에 있는 %{username}입니다: %{url}'
status: 인증 상태
view_proof: 증명 보기
imports:
@@ -768,13 +779,12 @@ ko:
too_few_options: 한가지 이상의 항목을 포함해야 합니다
too_many_options: 항목은 %{max}개를 넘을 수 없습니다
preferences:
- languages: 언어
other: 기타
- publishing: 퍼블리싱
- web: 웹
relationships:
activity: 계정 활동
dormant: 휴면
+ last_active: 마지막 활동
+ most_recent: 가장 최근
moved: 이동함
mutual: 상호 팔로우
primary: 주 계정
@@ -850,6 +860,9 @@ ko:
revoke_success: 세션이 성공적으로 삭제되었습니다
title: 세션
settings:
+ account: 계정
+ account_settings: 계정 설정
+ appearance: 외관
authorized_apps: 인증된 애플리케이션
back: 돌아가기
delete: 계정 삭제
@@ -859,13 +872,13 @@ ko:
featured_tags: 추천 해시태그
identity_proofs: 신원 증명
import: 데이터 가져오기
+ import_and_export: 가져오기 / 내보내기
migrate: 계정 이동
notifications: 알림
preferences: 사용자 설정
+ profile: 프로필
relationships: 팔로잉과 팔로워
- settings: 설정
two_factor_authentication: 2단계 인증
- your_apps: 애플리케이션
statuses:
attached:
description: '첨부: %{attached}'
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 0f5ca3091..0f2a83e65 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -490,7 +490,6 @@ lt:
warning: Būkite atsargūs su šia informacija. Niekada jos nesidalinkite!
your_token: Jūsų prieigos žetonas
auth:
- agreement_html: Paspaudus "Sign up" Jūs sutinkate sekti serverio taisykles bei naudojimo sąlygas.
change_password: Slaptažodis
confirm_email: Patvirtinti el paštą
delete_account: Ištrinti paskyrą
@@ -719,10 +718,7 @@ lt:
prev: Ankstesnis
truncate: "…"
preferences:
- languages: Kalbos
other: Kita
- publishing: Skelbiama
- web: Tinklas
remote_follow:
acct: Įveskite Jūsų slapyvardį@domenas kurį norite naudoti
missing_resource: Jūsų paskyros nukreipimo URL nerasta
@@ -801,9 +797,7 @@ lt:
migrate: Paskyros migracija
notifications: Pranešimai
preferences: Preferencijos
- settings: Nustatymai
two_factor_authentication: Dviejų veiksnių autentikacija
- your_apps: Jūsų aplikacijos
statuses:
attached:
description: 'Pridėta: %{attached}'
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 36a030fa4..97be8aa81 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -4,25 +4,36 @@ nl:
about_hashtag_html: Dit zijn openbare toots die getagged zijn met #%{hashtag}. Je kunt er op reageren of iets anders mee doen als je op Mastodon (of ergens anders in de fediverse) een account hebt.
about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd.
about_this: Over deze server
+ active_count_after: actief
+ active_footnote: Actieve gebruikers per maand (MAU)
administered_by: 'Beheerd door:'
api: API
apps: Mobiele apps
+ apps_platforms: Gebruik Mastodon op iOS, Android en op andere platformen
+ browse_directory: Gebruikersgids doorbladeren en op interesses filteren
+ browse_public_posts: Livestream van openbare Mastodonberichten bekijken
contact: Contact
contact_missing: Niet ingesteld
contact_unavailable: n.v.t
+ discover_users: Gebruikers ontdekken
documentation: Documentatie
extended_description_html: |
Een goede plek voor richtlijnen
De uitgebreide omschrijving is nog niet ingevuld.
+ federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen.
generic_description: "%{domain} is een server in het Mastodonnetwerk"
+ get_apps: Mobiele apps
hosted_on: Mastodon op %{domain}
learn_more: Meer leren
privacy_policy: Privacybeleid
+ see_whats_happening: Kijk wat er aan de hand is
+ server_stats: 'Serverstatistieken:'
source_code: Broncode
status_count_after:
one: toot
other: toots
status_count_before: Zij schreven
+ tagline: Vrienden volgen en nieuwe ontdekken
terms: Gebruiksvoorwaarden
user_count_after:
one: gebruiker
@@ -57,6 +68,7 @@ nl:
admin: Beheerder
bot: Bot
moderator: Moderator
+ unavailable: Profiel niet beschikbaar
unfollow: Ontvolgen
admin:
account_actions:
@@ -68,6 +80,8 @@ nl:
delete: Verwijderen
destroyed_msg: Verwijderen van opmerking voor moderatoren geslaagd!
accounts:
+ approve: Goedkeuren
+ approve_all: Alles goedkeuren
are_you_sure: Weet je het zeker?
avatar: Avatar
by_domain: Domein
@@ -113,15 +127,18 @@ nl:
moderation:
active: Actief
all: Alles
+ pending: In afwachting
silenced: Genegeerd
suspended: Opgeschort
title: Moderatie
moderation_notes: Opmerkingen voor moderatoren
most_recent_activity: Laatst actief
most_recent_ip: Laatst gebruikt IP-adres
+ no_account_selected: Er zijn geen accounts veranderd, omdat er geen een was geselecteerd
no_limits_imposed: Geen limieten ingesteld
not_subscribed: Niet geabonneerd
outbox_url: Outbox-URL
+ pending: Moet nog beoordeeld worden
perform_full_suspension: Opschorten
profile_url: Profiel-URL
promote: Promoveren
@@ -129,6 +146,8 @@ nl:
public: Openbaar
push_subscription_expires: PuSH-abonnement verloopt op
redownload: Profiel vernieuwen
+ reject: Afkeuren
+ reject_all: Alles afkeuren
remove_avatar: Avatar verwijderen
remove_header: Omslagfoto verwijderen
resend_confirmation:
@@ -230,6 +249,7 @@ nl:
feature_profile_directory: Gebruikersgids
feature_registrations: Registraties
feature_relay: Federatierelay
+ feature_timeline_preview: Voorvertoning van tijdlijn
features: Functies
hidden_service: Federatie met verborgen diensten
open_reports: onopgeloste rapportages
@@ -314,6 +334,8 @@ nl:
expired: Verlopen
title: Filter
title: Uitnodigingen
+ pending_accounts:
+ title: Accounts in afwachting (%{count})
relays:
add_new: Nieuwe relayserver toevoegen
delete: Verwijderen
@@ -400,6 +422,12 @@ nl:
min_invite_role:
disabled: Niemand
title: Uitnodigingen toestaan door
+ registrations_mode:
+ modes:
+ approved: Goedkeuring vereist om te kunnen registreren
+ none: Niemand kan zich registreren
+ open: Iedereen kan zich registreren
+ title: Registratiemodus
show_known_fediverse_at_about_page:
desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdljn.
title: De globale tijdlijn op de voorpagina tonen
@@ -407,14 +435,14 @@ nl:
desc_html: Medewerkersbadge op profielpagina tonen
title: Medewerkersbadge tonen
site_description:
- desc_html: Dit wordt als een alinea op de voorpagina getoond. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kan HTML gebruiken, zoals <a> en <em>.
- title: Omschrijving Mastodonserver
+ desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kan HTML gebruiken, zoals <a> en <em>.
+ title: Omschrijving Mastodonserver (API)
site_description_extended:
desc_html: Een goede plek voor je gedragscode, regels, richtlijnen en andere zaken die jouw server uniek maken. Je kan ook hier HTML gebruiken
title: Uitgebreide omschrijving Mastodonserver
site_short_description:
- desc_html: Dit wordt in de zijbalk getoond als en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. De (langere) omschrijving van de Mastodonserver wordt gebruikt wanneer dit veld wordt leeg gelaten.
- title: Korte omschrijving Mastodonserver
+ desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt.
+ title: Omschrijving Mastodonserver (website)
site_terms:
desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken
title: Aangepaste gebruiksvoorwaarden
@@ -462,6 +490,9 @@ nl:
edit_preset: Voorinstelling van waarschuwing bewerken
title: Voorinstellingen van waarschuwingen beheren
admin_mailer:
+ new_pending_account:
+ body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afkeuren.
+ subject: Er dient een nieuw account op %{instance} te worden beoordeeld (%{username})
new_report:
body: "%{reporter} heeft %{target} gerapporteerd"
body_remote: Iemand van %{domain} heeft %{target} gerapporteerd
@@ -482,11 +513,12 @@ nl:
warning: Wees voorzichtig met deze gegevens. Deel het nooit met iemand anders!
your_token: Jouw toegangscode
auth:
- agreement_html: Wanneer je op registreren klikt ga je akkoord met het opvolgen van de regels van deze server en onze gebruiksvoorwaarden.
+ apply_for_account: Een uitnodiging aanvragen
change_password: Wachtwoord
+ checkbox_agreement_html: Ik ga akkoord met de regels van deze server en de gebruiksvoorwaarden
confirm_email: E-mail bevestigen
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.
+ delete_account_html: Wanneer je jouw account graag wilt verwijderen, kun je dat hier doen. We vragen jou daar om een bevestiging.
didnt_get_confirmation: Geen bevestigingsinstructies ontvangen?
forgot_password: Wachtwoord vergeten?
invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan.
@@ -499,10 +531,12 @@ nl:
cas: CAS
saml: SAML
register: Registreren
+ registration_closed: "%{instance} laat geen nieuwe gebruikers toe"
resend_confirmation: Verstuur de bevestigingsinstructies nogmaals
reset_password: Wachtwoord opnieuw instellen
security: Beveiliging
set_new_password: Nieuw wachtwoord instellen
+ trouble_logging_in: Problemen met inloggen?
authorize_follow:
already_following: Je volgt dit account al
error: Helaas, er is een fout opgetreden bij het opzoeken van de externe account
@@ -558,6 +592,9 @@ nl:
content: Het spijt ons, er is aan onze kant iets fout gegaan.
title: Er is iets mis
noscript_html: Schakel JavaScript in om de webapp van Mastodon te kunnen gebruiken. Als alternatief kan je een Mastodon-app zoeken voor jouw platform.
+ existing_username_validator:
+ not_found: Kon geen lokale gebruiker met die gebruikersnaam vinden
+ not_found_multiple: Kon %{usernames} niet vinden
exports:
archive_takeout:
date: Datum
@@ -598,12 +635,34 @@ nl:
more: Meer…
resources: Hulpmiddelen
generic:
+ all: Alles
changes_saved_msg: Wijzigingen succesvol opgeslagen!
copy: Kopiëren
+ order_by: Sorteer op
save_changes: Wijzigingen opslaan
validation_errors:
one: Er is iets niet helemaal goed! Bekijk onderstaande fout
other: Er is iets niet helemaal goed! Bekijk onderstaande %{count} fouten
+ html_validator:
+ invalid_markup: 'bevat ongeldige HTML-opmaak: %{error}'
+ identity_proofs:
+ active: Actief
+ authorize: Ja, autoriseren
+ authorize_connection_prompt: Deze cryptografische verbinding autoriseren?
+ errors:
+ failed: De cryptografische verbinding is mislukt. Probeer het opnieuw vanaf %{provider}.
+ keybase:
+ invalid_token: Keybasetokens zijn hashes van handtekeningen en moeten een lengte hebben van 66 hexadecimale tekens
+ verification_failed: Keybase herkent deze token niet als een handtekening van Keybasegebruiker %{kb_username}. Probeer het opnieuw vanuit Keybase.
+ wrong_user: Er kan geen bewijs worden aangemaakt voor %{proving} terwijl je bent ingelogd als %{current}. Log in als %{proving} en probeer het opnieuw.
+ explanation_html: Hier kun je met behulp van cryptografie jouw andere identiteiten verbinden, zoals een Keybaseprofiel. Hiermee kunnen andere mensen jou versleutelde berichten sturen en inhoud die jij verstuurt vertrouwen.
+ i_am_html: Ik ben %{username} op %{service}.
+ identity: Identiteit
+ inactive: Inactief
+ publicize_checkbox: 'En toot dit:'
+ publicize_toot: 'Het is bewezen! Ik ben %{username} op %{service}: %{url}'
+ status: Verificatiestatus
+ view_proof: Bekijk bewijs
imports:
modes:
merge: Samenvoegen
@@ -717,10 +776,20 @@ nl:
too_few_options: moet meer dan één item bevatten
too_many_options: kan niet meer dan %{max} items bevatten
preferences:
- languages: Talen
other: Overig
- publishing: Publiceren
- web: Webapp
+ relationships:
+ activity: Accountactiviteit
+ dormant: Sluimerend
+ last_active: Laatst actief
+ most_recent: Recentelijk gevolgd
+ moved: Verhuisd
+ mutual: Wederzijds
+ primary: Primair
+ relationship: Relatie
+ remove_selected_domains: Alle volgers van de geselecteerde domeinen verwijderen
+ remove_selected_followers: Geselecteerde volgers verwijderen
+ remove_selected_follows: Geselecteerde gebruikers ontvolgen
+ status: Accountstatus
remote_follow:
acct: Geef jouw account@domein op die je wilt gebruiken
missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden
@@ -788,6 +857,9 @@ nl:
revoke_success: Sessie succesvol ingetrokken
title: Sessies
settings:
+ account: Account
+ account_settings: Accountinstellingen
+ appearance: Uiterlijk
authorized_apps: Geautoriseerde apps
back: Terug naar Mastodon
delete: Account verwijderen
@@ -795,13 +867,15 @@ nl:
edit_profile: Profiel bewerken
export: Exporteren
featured_tags: Uitgelichte hashtags
+ identity_proofs: Identiteitsbewijzen
import: Importeren
+ import_and_export: Importeren en exporteren
migrate: Accountmigratie
notifications: Meldingen
preferences: Voorkeuren
- settings: Instellingen
+ profile: Profiel
+ relationships: Volgers en gevolgden
two_factor_authentication: Tweestapsverificatie
- your_apps: Jouw toepassingen
statuses:
attached:
description: 'Bijlagen: %{attached}'
@@ -944,7 +1018,7 @@ nl:
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 inloggen 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: Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren, vind je hieronder geheime code in platte tekst.
+ manual_instructions: Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren, vind je hieronder de geheime code in platte tekst.
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.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 773f2d060..395c81a62 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -309,7 +309,6 @@
warning: Vær veldig forsiktig med denne data. Aldri del den med noen!
your_token: Din tilgangsnøkkel
auth:
- agreement_html: Ved å registrere deg godtar du å følge instansens regler og våre brukervilkår.
delete_account: Slett konto
delete_account_html: Hvis du ønsker å slette din konto kan du fortsette her. Du vil bli spurt om bekreftelse.
didnt_get_confirmation: Mottok du ikke instruksjoner om bekreftelse?
@@ -473,10 +472,7 @@
prev: Forrige
truncate: "…"
preferences:
- languages: Språk
other: Annet
- publishing: Publisering
- web: Web
remote_follow:
acct: Tast inn brukernavn@domene som du vil følge fra
missing_resource: Kunne ikke finne URLen for din konto
@@ -534,9 +530,7 @@
migrate: Kontomigrering
notifications: Varslinger
preferences: Preferanser
- settings: Innstillinger
two_factor_authentication: Tofaktorautentisering
- your_apps: Dine applikasjoner
statuses:
open_in_web: Åpne i nettleser
over_character_limit: grense på %{max} tegn overskredet
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 85df11cf6..a7ef25242 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -498,7 +498,6 @@ oc:
warning: Mèfi ! Agachatz de partejar aquela donada amb degun !
your_token: Vòstre geton d’accès
auth:
- agreement_html: En vos marcar acceptatz las règlas del servidor e politica de confidencialitat.
apply_for_account: Demandar una invitacion
change_password: Senhal
checkbox_agreement_html: Accepti las règlas del servidor e los tèrmes del servici
@@ -800,10 +799,7 @@ oc:
too_few_options: deu contenir mai d’una opcion
too_many_options: pòt pas contenir mai de %{max} opcions
preferences:
- languages: Lengas
other: Autre
- publishing: Publicar
- web: Interfàcia Web
relationships:
activity: Activitat del compte
dormant: Inactiu
@@ -891,9 +887,7 @@ oc:
notifications: Notificacions
preferences: Preferéncias
relationships: Abonaments e seguidors
- settings: Paramètres
two_factor_authentication: Autentificacion en dos temps
- your_apps: Vòstras aplicacions
statuses:
attached:
description: 'Ajustat : %{attached}'
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index b7b6e2fad..54aabfff9 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -4,20 +4,30 @@ pl:
about_hashtag_html: Znajdują się tu publiczne wpisy oznaczone hashtagiem #%{hashtag}. Możesz dołączyć do dyskusji, jeżeli posiadasz konto gdziekolwiek w Fediwersum.
about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform.
about_this: O tej instancji
+ active_count_after: aktywni
+ active_footnote: Aktywni użytkownicy miesięcznie (MAU)
administered_by: 'Administrowana przez:'
api: API
apps: Aplikacje
+ apps_platforms: Korzystaj z Mastodona z poziomu iOS-a, Androida i innych
+ browse_directory: Przeglądaj katalog profilów i filtruj z uwzględnieniem zainteresowań
+ browse_public_posts: Przeglądaj strumień publicznych wpisów na Mastodonie na żywo
contact: Kontakt
contact_missing: Nie ustawiono
contact_unavailable: Nie dotyczy
+ discover_users: Odkrywaj użytkowników
documentation: Dokumentacja
extended_description_html: |
Dobre miejsce na zasady użytkowania
Nie ustawiono jeszcze szczegółowego opisu
+ federation_hint_html: Z kontem na %{instance}, możesz śledzić użytkowników każdego serwera Mastodona i nie tylko.
generic_description: "%{domain} jest jednym z serwerów sieci"
+ get_apps: Spróbuj aplikacji mobilnej
hosted_on: Mastodon uruchomiony na %{domain}
learn_more: Dowiedz się więcej
privacy_policy: Polityka prywatności
+ see_whats_happening: Zobacz co się dzieje
+ server_stats: 'Statystyki serwera:'
source_code: Kod źródłowy
status_count_after:
few: wpisów
@@ -25,6 +35,7 @@ pl:
one: wpisu
other: wpisów
status_count_before: Są autorami
+ tagline: Śledź znajomych i poznawal nowych
terms: Zasady użytkowania
user_count_after:
few: użytkowników
@@ -76,6 +87,7 @@ pl:
delete: Usuń
destroyed_msg: Pomyślnie usunięto notatkę moderacyjną!
accounts:
+ approve: Przyjmij
are_you_sure: Jesteś tego pewien?
avatar: Awatar
by_domain: Domena
@@ -121,6 +133,7 @@ pl:
moderation:
active: Aktywne
all: Wszystkie
+ pending: Oczekujące
silenced: Wyciszone
suspended: Zawieszone
title: Moderacja
@@ -130,6 +143,7 @@ pl:
no_limits_imposed: Nie nałożono ograniczeń
not_subscribed: Nie zasubskrybowano
outbox_url: Adres skrzynki nadawczej
+ pending: Oczekuje na przegląd
perform_full_suspension: Zawieś
profile_url: Adres profilu
promote: Podnieś uprawnienia
@@ -137,6 +151,7 @@ pl:
public: Publiczne
push_subscription_expires: Subskrypcja PuSH wygasa
redownload: Odśwież profil
+ reject: Odrzuć
remove_avatar: Usun awatar
remove_header: Usuń nagłówek
resend_confirmation:
@@ -238,6 +253,7 @@ pl:
feature_profile_directory: Katalog profilów
feature_registrations: Rejestracja
feature_relay: Przekazywanie federacji
+ feature_timeline_preview: Podgląd osi czasu
features: Możliwości
hidden_service: Federowanie z ukrytymi usługami
open_reports: otwarte zgłoszenia
@@ -412,6 +428,12 @@ pl:
min_invite_role:
disabled: Nikt
title: Kto może zapraszać użytkowników
+ registrations_mode:
+ modes:
+ approved: Przyjęcie jest wymagane do rejestracji
+ none: Nikt nie może się zarejestrować
+ open: Każdy może się zarejestrować
+ title: Tryb rejestracji
show_known_fediverse_at_about_page:
desc_html: Jeśli włączone, podgląd instancji będzie wyświetlał wpisy z całego Fediwersum. W innym przypadku, będą wyświetlane tylko lokalne wpisy.
title: Pokazuj wszystkie znane wpisy na podglądzie instancji
@@ -474,6 +496,9 @@ pl:
edit_preset: Edytuj szablon ostrzeżenia
title: Zarządzaj szablonami ostrzeżeń
admin_mailer:
+ new_pending_account:
+ body: Poniżej znajdują się szczegóły dotycząće nowego konta. Możesz przyjąć lub odrzucić to podanie.
+ subject: Nowe konto czeka na przegląd na %{instance} (%{username})
new_report:
body: Użytkownik %{reporter} zgłosił(a) %{target}
body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target}
@@ -494,8 +519,9 @@ pl:
warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu!
your_token: Twój token dostępu
auth:
- agreement_html: Rejestrując się, oświadczasz, że zapoznałeś(-aś) się z informacjami o serwerze i zasadami korzystania z usługi.
+ apply_for_account: Poproś o zaproszenie
change_password: Hasło
+ checkbox_agreement_html: Zgadzam się z regułami serwera i zasadami korzystania z usługi
confirm_email: Potwierdź adres e-mail
delete_account: Usunięcie konta
delete_account_html: Jeżeli chcesz usunąć konto, przejdź tutaj. Otrzymasz prośbę o potwierdzenie.
@@ -511,10 +537,12 @@ pl:
cas: CAS
saml: SAML
register: Rejestracja
+ registration_closed: "%{instance} nie przyjmuje nowych członków"
resend_confirmation: Ponownie prześlij instrukcje weryfikacji
reset_password: Zresetuj hasło
security: Bezpieczeństwo
set_new_password: Ustaw nowe hasło
+ trouble_logging_in: Masz problem z zalogowaniem się?
authorize_follow:
already_following: Już śledzisz to konto
error: Niestety, podczas sprawdzania zdalnego konta wystąpił błąd
@@ -572,6 +600,9 @@ pl:
content: Przepraszamy, coś poszło nie tak, po naszej stronie.
title: Ta strona jest nieprawidłowa
noscript_html: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z jednej z natywnych aplikacji obsługującej Twoje urządzenie.
+ existing_username_validator:
+ not_found: nie znaleziono lokalnego użytkownika o tej nazwie
+ not_found_multiple: nie znaleziono %{usernames}
exports:
archive_takeout:
date: Data
@@ -612,14 +643,36 @@ pl:
more: Więcej…
resources: Zasoby
generic:
+ all: Wszystkie
changes_saved_msg: Ustawienia zapisane!
copy: Kopiuj
+ order_by: Uporządkuj według
save_changes: Zapisz zmiany
validation_errors:
few: Coś jest wciąż nie tak! Przejrzyj %{count} poniższe błędy
many: Coś jest wciąż nie tak! Przejrzyj %{count} poniższych błędów
one: Coś jest wciąż nie tak! Przyjrzyj się poniższemu błędowi
other: Coś jest wciąż nie tak! Przejrzyj poniższe błędy (%{count})
+ html_validator:
+ invalid_markup: 'zawiera nieprawidłową składnię HTML: %{error}'
+ identity_proofs:
+ active: Aktywny
+ authorize: Tak, autoryzuj
+ authorize_connection_prompt: Czy chcesz autoryzować to połączenie kryptograficzne?
+ errors:
+ failed: Połączenioe kryptograficzne nie powiodło się. Spróbuj ponownie z poziomu %{provider}.
+ keybase:
+ invalid_token: Tokeny Keybase są hashami podpisów i musza składać się z 66 znaków heksadecymalnych
+ verification_failed: Keybase nie rozpoznaje tego tokenu jako podpisu użytkownika Keybase %{kb_username}. Spróbuj ponownie z poziomu Keybase.
+ wrong_user: Nie można utworzyć dowodu dla %{proving}, gdy jesteś zalogowany(-a) jako %{current}. Zaloguj się jako %{proving} i spróbuj ponownie.
+ explanation_html: Tutaj możesz połączyć kryptograficznie swoje inne tożsamości, takie jak profil Keybase. To pozwoli innym wysłać Ci szyfrowane wiadomości i zaufać zawartości którą im wysyłasz.
+ i_am_html: Jestem %{username} na %{service}.
+ identity: Tożsamość
+ inactive: Niekatywny
+ publicize_checkbox: 'I opublikuj to:'
+ publicize_toot: 'Udowodnione! Jestem %{username} na %{service}: %{url}'
+ status: Stan weryfikacji
+ view_proof: Wyświetl dowód
imports:
modes:
merge: Połącz
@@ -739,10 +792,20 @@ pl:
too_few_options: musi zawierać przynajmniej dwie opcje
too_many_options: nie może zawierać więcej niż %{max} opcji
preferences:
- languages: Języki
other: Pozostałe
- publishing: Publikowanie
- web: Sieć
+ relationships:
+ activity: Aktywność konta
+ dormant: Uśpione
+ last_active: Ostatnia aktywność
+ most_recent: Ostatnie
+ moved: Przeniesione
+ mutual: Wspólna
+ primary: Jednostronna
+ relationship: Relacja
+ remove_selected_domains: Usuń wszystkich śledzących z zaznaczonych domen
+ remove_selected_followers: Usuń zaznaczonych śledzących
+ remove_selected_follows: Przestań śledzić zaznaczonych użytkowników
+ status: Stan konta
remote_follow:
acct: Podaj swój adres (nazwa@domena), z którego chcesz wykonać działanie
missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny
@@ -817,13 +880,13 @@ pl:
edit_profile: Edytuj profil
export: Eksportowanie danych
featured_tags: Wyróżnione hashtagi
+ identity_proofs: Dowody tożsamości
import: Importowanie danych
migrate: Migracja konta
notifications: Powiadomienia
preferences: Preferencje
- settings: Ustawienia
+ relationships: Śledzeni i śledzący
two_factor_authentication: Uwierzytelnianie dwuetapowe
- your_apps: Twoje aplikacje
statuses:
attached:
description: 'Załączono: %{attached}'
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index be1ea6155..dbe19d4da 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -4,25 +4,36 @@ pt-BR:
about_hashtag_html: Estes são toots públicos com a hashtag #%{hashtag}. Você pode interagir com eles se tiver uma conta em qualquer lugar no fediverso.
about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos e software gratuito e de código aberto. É descentralizada como e-mail.
about_this: Sobre
+ active_count_after: Ativo
+ active_footnote: Usuários ativos mensais (UAM)
administered_by: 'Administrado por:'
api: API
apps: Apps
+ apps_platforms: Use o Mastodon a partir de iOS, Android e outras plataformas
+ browse_directory: Navegue pelo diretório de perfis e filtre por interesses
+ browse_public_posts: Navegue pelos posts públicos sendo postados ao vivo no Mastodon
contact: Contato
contact_missing: Não definido
contact_unavailable: Não disponível
+ discover_users: Descubra usuários
documentation: Documentação
extended_description_html: |
Um bom lugar para regras
A descrição da instância ainda não foi feita.
+ federation_hint_html: Com uma conta em %{instance} você vai poder seguir pessoas em qualquer servidor Mastodon ou outros do fediverso.
generic_description: "%{domain} é um servidor na rede"
+ get_apps: Experimente um aplicativo
hosted_on: Mastodon hospedado em %{domain}
learn_more: Saiba mais
privacy_policy: Política de Privacidade
+ see_whats_happening: Veja o que está acontecendo
+ server_stats: 'Estatísticas do servidor:'
source_code: Código-fonte
status_count_after:
one: status
other: status
status_count_before: Autores de
+ tagline: Siga amigos e encontre novos
terms: Termos de serviço
user_count_after:
one: usuário
@@ -57,6 +68,7 @@ pt-BR:
admin: Administrador
bot: Robô
moderator: Moderador
+ unavailable: Perfil indisponível
unfollow: Deixar de seguir
admin:
account_actions:
@@ -68,6 +80,8 @@ pt-BR:
delete: Excluir
destroyed_msg: Nota de moderação excluída com sucesso!
accounts:
+ approve: Aprovar
+ approve_all: Aprovar tudo
are_you_sure: Você tem certeza?
avatar: Avatar
by_domain: Domínio
@@ -113,15 +127,18 @@ pt-BR:
moderation:
active: Ativo
all: Todos
+ pending: Pendente
silenced: Silenciados
suspended: Suspensos
title: Moderação
moderation_notes: Notas de moderação
most_recent_activity: Atividade mais recente
most_recent_ip: IP mais recente
+ no_account_selected: Nenhuma conta foi modificada, pois nenhuma conta foi selecionada
no_limits_imposed: Nenhum limite imposto
not_subscribed: Não está inscrito
outbox_url: URL da caixa de saída
+ pending: Esperando revisão
perform_full_suspension: Suspender
profile_url: URL do perfil
promote: Promover
@@ -129,6 +146,8 @@ pt-BR:
public: Público
push_subscription_expires: Inscrição PuSH expira
redownload: Atualizar perfil
+ reject: Rejeitar
+ reject_all: Rejeitar tudo
remove_avatar: Remover avatar
remove_header: Remover cabeçalho
resend_confirmation:
@@ -230,6 +249,7 @@ pt-BR:
feature_profile_directory: Diretório de perfis
feature_registrations: Cadastros
feature_relay: Repetidor da federação
+ feature_timeline_preview: pré-visualização da timeline
features: Funcionalidades
hidden_service: Federação com serviços onion
open_reports: Denúncias em aberto
@@ -291,6 +311,7 @@ pt-BR:
back_to_account: Voltar para a conta
title: Pessoas que seguem %{acct}
instances:
+ by_domain: Domínio
delivery_available: Entrega está disponível
known_accounts:
one: "%{count} conta conhecida"
@@ -313,6 +334,8 @@ pt-BR:
expired: Expirados
title: Filtro
title: Convites
+ pending_accounts:
+ title: Contas pendentes (%{count})
relays:
add_new: Adicionar novo repetidor
delete: Excluir
@@ -370,7 +393,7 @@ pt-BR:
title: Usuários a serem seguidos por padrão por novas contas
contact_information:
email: E-mail
- username: Contate usuário
+ username: Usuário de contato
custom_css:
desc_html: Modificar o visual com CSS que é carregado em todas as páginas
title: CSS customizado
@@ -399,6 +422,12 @@ pt-BR:
min_invite_role:
disabled: Ninguém
title: Permitir convites de
+ registrations_mode:
+ modes:
+ approved: Aprovação necessária para cadastro
+ none: Ninguém pode se cadastrar
+ open: Qualquer um pode se cadastrar
+ title: Modo de cadastro
show_known_fediverse_at_about_page:
desc_html: Quando ligado, vai mostrar toots de todo o fediverso conhecido na prévia da timeline. Senão, mostra somente toots locais.
title: Mostrar fediverso conhecido na prévia da timeline
@@ -461,6 +490,9 @@ pt-BR:
edit_preset: Editar o aviso pré-definido
title: Gerenciar os avisos pré-definidos
admin_mailer:
+ new_pending_account:
+ body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou rejeitar essa aplicação.
+ subject: Nova conta para revisão em %{instance} (%{username})
new_report:
body: "%{reporter} denunciou %{target}"
body_remote: Alguém da instância %{domain} reportou %{target}
@@ -481,8 +513,9 @@ pt-BR:
warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém!
your_token: Seu token de acesso
auth:
- agreement_html: Ao se cadastrar você concorda em seguir as regras da instância e os nossos termos de serviço.
+ apply_for_account: Pedir um convite
change_password: Senha
+ checkbox_agreement_html: Eu concordo com as regras do servidor e com os termos de serviço
confirm_email: Confirmar e-mail
delete_account: Excluir conta
delete_account_html: Se você deseja excluir a sua conta, você pode prosseguir para cá. Uma confirmação será requisitada.
@@ -498,10 +531,12 @@ pt-BR:
cas: CAS
saml: SAML
register: Cadastrar-se
+ registration_closed: "%{instance} não está aceitando novos membros"
resend_confirmation: Reenviar instruções de confirmação
reset_password: Redefinir senha
security: Segurança
set_new_password: Definir uma nova senha
+ trouble_logging_in: Problemas para se conectar?
authorize_follow:
already_following: Você já está seguindo esta conta
error: Infelizmente, ocorreu um erro ao buscar a conta remota
@@ -537,8 +572,11 @@ pt-BR:
warning_title: Disponibilidade de conteúdo disseminado
directories:
directory: Diretório de perfis
+ enabled: Você está na lista do diretório.
+ enabled_but_waiting: Você escolheu ser listado no diretório, mas você ainda não tem o mínimo de seguidores (%{min_followers}) para ser listado.
explanation: Descobrir usuários baseado em seus interesses
explore_mastodon: Explorar %{title}
+ how_to_enable: Você não se inscreveu no diretório. Você pode se inscrever abaixo. Use hashtags no texto da sua bio para ser listado em hashtags específicas!
people:
one: "%{count} pessoa"
other: "%{count} pessoas"
@@ -554,6 +592,9 @@ pt-BR:
content: Desculpe, algo deu errado.
title: Esta página não está certa
noscript_html: Para usar o aplicativo web do Mastodon, por favor ative o JavaScript. Ou, se quiser, experimente um dos apps nativos para o Mastodon em sua plataforma.
+ existing_username_validator:
+ not_found: não foi possível encontrar um usuário local com esse nome de usuário
+ not_found_multiple: não foi possível encontrar %{usernames}
exports:
archive_takeout:
date: Data
@@ -569,6 +610,10 @@ pt-BR:
lists: Listas
mutes: Você silenciou
storage: Armazenamento de mídia
+ featured_tags:
+ add_new: Adicionar uma nova hashtag
+ errors:
+ limit: Você atingiu o limite de hashtags em destaque
filters:
contexts:
home: Página inicial
@@ -590,17 +635,45 @@ pt-BR:
more: Mais…
resources: Recursos
generic:
+ all: Tudo
changes_saved_msg: Mudanças salvas com sucesso!
copy: Copiar
+ order_by: Ordenar por
save_changes: Salvar mudanças
validation_errors:
one: Algo não está certo! Por favor, reveja o erro abaixo
other: Algo não está certo! Por favor, reveja os %{count} erros abaixo
+ html_validator:
+ invalid_markup: 'contém HTML inválido: %{error}'
+ identity_proofs:
+ active: Ativo
+ authorize: Sim, autorizar
+ authorize_connection_prompt: Autorizar essa conexão criptográfica?
+ errors:
+ failed: A conexão criptográfica falhou. Por favor tente novamente a partir de %{provider}.
+ keybase:
+ invalid_token: Tokens keybase são hashs de assinatura e devem conter 66 caracteres hexa
+ verification_failed: Keybase não reconhece esse token como uma assinatura do usuário keybase %{kb_username}. Por favor tente novamente a partir de Keybase.
+ wrong_user: Não é possível criar uma prova para %{proving} estando logado como %{current}. Faça login como %{proving} e tente novamente.
+ explanation_html: Você pode conectar criptograficamente suas outras identidades, tais quais seu perfil Keybase. Isso permite outras pessoas de lhe enviarem mensagens encriptadas e confiar no conteúdo que você as envia.
+ i_am_html: Eu sou %{username} em %{service}.
+ identity: Identidade
+ inactive: Inativo
+ publicize_checkbox: 'E publique isso:'
+ publicize_toot: 'Está provado! Eu sou %{username} no %{service}: %{url}'
+ status: Status da verificação
+ view_proof: Ver prova
imports:
+ modes:
+ merge: Juntar
+ merge_long: Manter os registros existentes e adicionar os novos
+ overwrite: Sobreescrever
+ overwrite_long: Substituir os registros atuais com os novos
preface: Você pode importar dados que você exportou de outra instância, como a lista de pessoas que você segue ou bloqueou.
success: Os seus dados foram enviados com sucesso e serão processados em instantes
types:
blocking: Lista de bloqueio
+ domain_blocking: Lista de domínios bloqueados
following: Pessoas que você segue
muting: Lista de silêncio
upload: Enviar
@@ -692,11 +765,31 @@ pt-BR:
older: Mais antigo
prev: Anterior
truncate: "…"
+ polls:
+ errors:
+ already_voted: Você já votou nessa enquete
+ duplicate_options: contém itens duplicados
+ duration_too_long: está muito longe no futuro
+ duration_too_short: é curto demais
+ expired: A enquete já terminou
+ over_character_limit: não pode ter mais que %{max} caracteres em cada
+ too_few_options: deve ter mais que um item
+ too_many_options: não pode ter mais que %{max} itens
preferences:
- languages: Idiomas
other: Outro
- publishing: Publicação
- web: Web
+ relationships:
+ activity: Atividade da conta
+ dormant: Inativo
+ last_active: Ativo por último em
+ most_recent: Mais recente
+ moved: Mudou-se
+ mutual: Mútuo
+ primary: Primário
+ relationship: Relação
+ remove_selected_domains: Remover todos os seguidores dos domínios selecionados
+ remove_selected_followers: Remover os seguidores selecionados
+ remove_selected_follows: Deixar de seguir usuários selecionados
+ status: Status da conta
remote_follow:
acct: Insira o seu usuário@domínio a partir do qual você deseja agir
missing_resource: Não foi possível encontrar a URL de direcionamento para a sua conta
@@ -764,19 +857,25 @@ pt-BR:
revoke_success: Sessão revogada com sucesso
title: Sessões
settings:
+ account: Conta
+ account_settings: Configurações da conta
+ appearance: Aparência
authorized_apps: Apps autorizados
back: Voltar para o Mastodon
delete: Exclusão de conta
development: Desenvolvimento
edit_profile: Editar perfil
export: Exportar dados
+ featured_tags: Hashtags em destaque
+ identity_proofs: Provas de identidade
import: Importar
+ import_and_export: Importar e exportar
migrate: Migração de conta
notifications: Notificações
preferences: Preferências
- settings: Configurações
+ profile: Perfil
+ relationships: Seguindo e seguidores
two_factor_authentication: Autenticação em dois passos
- your_apps: Seus aplicativos
statuses:
attached:
description: 'Anexado: %{attached}'
@@ -799,6 +898,11 @@ pt-BR:
ownership: Toots de outras pessoas não podem ser fixados
private: Toot não-público não pode ser fixado
reblog: Um compartilhamento não pode ser fixado
+ poll:
+ total_votes:
+ one: "%{count} voto"
+ other: "%{count} votos"
+ vote: Votar
show_more: Mostrar mais
sign_in_to_participate: Entre para participar dessa conversa
title: '%{name}: "%{quote}"'
@@ -897,8 +1001,8 @@ pt-BR:
Adaptado originalmente a partir da política de privacidade Discourse.
title: "%{instance} Termos de Serviço e Política de Privacidade"
themes:
- contrast: Alto contraste
- default: Mastodon
+ contrast: Mastodon (Alto contraste)
+ default: Mastodon (Escuro)
mastodon-light: Mastodon (claro)
time:
formats:
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index d943d6511..0061002c7 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -482,7 +482,6 @@ pt:
warning: Cuidado com estes dados. Não partilhar com ninguém!
your_token: O teu token de acesso
auth:
- agreement_html: Registando-te concordas em seguir as regras da instância e os nossos termos de serviço.
change_password: Palavra-passe
confirm_email: Confirmar e-mail
delete_account: Eliminar conta
@@ -719,10 +718,7 @@ pt:
too_few_options: tem de ter mais do que um item
too_many_options: não pode conter mais do que %{max} itens
preferences:
- languages: Idiomas
other: Outro
- publishing: Publicação
- web: Web
remote_follow:
acct: Entre seu usuário@domínio do qual quer seguir
missing_resource: Não foi possível achar a URL de redirecionamento para sua conta
@@ -801,9 +797,7 @@ pt:
migrate: Migração de conta
notifications: Notificações
preferences: Preferências
- settings: Configurações
two_factor_authentication: Autenticação em dois passos
- your_apps: As tuas aplicações
statuses:
attached:
description: 'Anexadas: %{attached}'
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 0331f002f..cdb68c72a 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -8,7 +8,6 @@ ro:
one: Toot
other: Toots
auth:
- agreement_html: Prin apăsarea butonului Înscriere de mai jos ești deacord cu regulile acestei instanțe și termenii de utilizare al acestui serviciu.
change_password: Parolă
confirm_email: Confirmă email
delete_account: Șterge contul
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index ffc9471cd..6d1db95c7 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -4,19 +4,30 @@ ru:
about_hashtag_html: Это публичные статусы, отмеченные хэштегом #%{hashtag}. Вы можете взаимодействовать с ними при наличии у Вас аккаунта в глобальной сети Mastodon.
about_mastodon_html: Mastodon - это свободная социальная сеть с открытым исходным кодом. Как децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в социальной сети совершенно бесшовно.
about_this: Об этом узле
+ active_count_after: активных
+ active_footnote: Ежемесячно активные пользователи (MAU)
administered_by: 'Администратор узла:'
api: API
apps: Приложения
+ apps_platforms: Используйте Mastodon на iOS, Android и других платформах
+ browse_directory: Изучайте каталог профилей и ищите по интересам
+ browse_public_posts: Просматривайте в реальном времени новые статусы в Mastodon
contact: Связаться
- contact_missing: Не установлено
- contact_unavailable: Недоступен
+ contact_missing: не указан
+ contact_unavailable: неизв.
+ discover_users: Находите пользователей
+ documentation: Документация
extended_description_html: |
Хорошее место для правил
Расширенное описание еще не настроено.
+ federation_hint_html: С учётной записью на %{instance} вы сможете подписываться на людей с любого сервера Mastodon и не только.
generic_description: "%{domain} - один из серверов сети"
+ get_apps: Попробуйте мобильное приложение
hosted_on: Mastodon размещен на %{domain}
learn_more: Узнать больше
privacy_policy: Политика конфиденциальности
+ see_whats_happening: Узнавайте, что происходит вокруг
+ server_stats: 'Статистика сервера:'
source_code: Исходный код
status_count_after:
few: статуса
@@ -24,6 +35,7 @@ ru:
one: статус
other: статусов
status_count_before: Опубликовано
+ tagline: Подписывайтесь на друзей и заводите новые знакомства
terms: Условия использования
user_count_after:
few: пользователя
@@ -42,6 +54,8 @@ ru:
other: подписчиков
following: подписки
joined: 'Дата регистрации: %{date}'
+ last_active: последняя активность
+ link_verified_on: Владение этой ссылкой было проверено %{date}
media: Медиа
moved_html: "%{name} переехал(а) на %{new_profile_link}:"
network_hidden: Эта информация недоступна
@@ -62,14 +76,20 @@ ru:
admin: Администратор
bot: Бот
moderator: Модератор
+ unavailable: Профиль недоступен
unfollow: Отписаться
admin:
+ account_actions:
+ action: Выполнить действие
+ title: Произвести модерацию аккаунта %{acct}
account_moderation_notes:
create: Создать
created_msg: Заметка модератора успешно создана!
delete: Удалить
destroyed_msg: Заметка модератора успешно удалена!
accounts:
+ approve: Подтвердить
+ approve_all: Подтвердить все
are_you_sure: Вы уверены?
avatar: Аватар
by_domain: Домен
@@ -83,6 +103,7 @@ ru:
confirm: Подтвердить
confirmed: Подтверждено
confirming: Подтверждение
+ deleted: Удалён
demote: Разжаловать
disable: Отключить
disable_two_factor_authentication: Отключить 2FA
@@ -98,8 +119,11 @@ ru:
followers: Подписчики
followers_url: URL подписчиков
follows: Подписки
+ header: Заголовок
inbox_url: URL входящих
+ invited_by: Приглашение выдал(а)
ip: IP
+ joined: Дата регистрации
location:
all: Все
local: Локальные
@@ -109,15 +133,20 @@ ru:
media_attachments: Мультимедийные вложения
memorialize: Превратить в Памятник
moderation:
+ active: Действующие
all: Все
+ pending: В ожидании
silenced: Заглушенные
suspended: Заблокированные
title: Модерация
moderation_notes: Заметки модератора
most_recent_activity: Последняя активность
most_recent_ip: Последний IP
+ no_account_selected: Ничего не выбрано, никакие аккаунты не изменены
+ no_limits_imposed: Без ограничений
not_subscribed: Не подписаны
outbox_url: URL исходящих
+ pending: Ожидает рассмотрения
perform_full_suspension: Полная блокировка
profile_url: URL профиля
promote: Повысить
@@ -125,7 +154,10 @@ ru:
public: Публичный
push_subscription_expires: Подписка PuSH истекает
redownload: Обновить аватар
+ reject: Отклонить
+ reject_all: Отклонить все
remove_avatar: Удалить аватар
+ remove_header: Удалить шапку
resend_confirmation:
already_confirmed: Этот пользователь уже подтвержден
send: Повторно отправить подтверждение по электронной почте
@@ -145,25 +177,30 @@ ru:
show:
created_reports: Жалобы, отправленные этим аккаунтом
targeted_reports: Жалобы на этот аккаунт
- silence: Глушение
+ silence: Заглушить
+ silenced: Заглушен
statuses: Статусы
subscribe: Подписаться
+ suspended: Заморожен
title: Аккаунты
unconfirmed_email: Неподтверждённый e-mail
undo_silenced: Снять глушение
undo_suspension: Снять блокировку
unsubscribe: Отписаться
username: Имя пользователя
+ warn: Предупредить
web: Веб
action_logs:
actions:
assigned_to_self_report: "%{name} назначил(а) жалобу %{target} на себя"
change_email_user: "%{name} сменил(а) e-mail пользователя %{target}"
confirm_user: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
+ create_account_warning: "%{name} отправил(а) предупреждение для %{target}"
create_custom_emoji: "%{name} загрузил(а) новый эмодзи %{target}"
create_domain_block: "%{name} заблокировал(а) домен %{target}"
create_email_domain_block: "%{name} добавил(а) e-mail домен %{target} в чёрный список"
demote_user: "%{name} разжаловал(а) пользователя %{target}"
+ destroy_custom_emoji: "%{name} удалил(а) эмодзи %{target}"
destroy_domain_block: "%{name} разблокировал(а) домен %{target}"
destroy_email_domain_block: "%{name} добавил(а) e-mail домен %{target} в белый список"
destroy_status: "%{name} удалил(а) статус пользователя %{target}"
@@ -217,8 +254,10 @@ ru:
config: Конфигурация
feature_deletions: Удаление аккаунтов
feature_invites: Пригласительные ссылки
+ feature_profile_directory: Каталог профилей
feature_registrations: Регистрация
feature_relay: Ретрансляторы
+ feature_timeline_preview: Предпросмотр ленты
features: Возможности
hidden_service: Федерация со скрытыми сервисами
open_reports: открытых жалоб
@@ -234,7 +273,7 @@ ru:
week_users_active: активно на этой неделе
week_users_new: пользователей на этой неделе
domain_blocks:
- add_new: Добавить новую
+ add_new: Заблокировать домен
created_msg: Блокировка домена обрабатывается
destroyed_msg: Блокировка домена снята
domain: Домен
@@ -248,7 +287,14 @@ ru:
suspend: Блокировка
title: Новая доменная блокировка
reject_media: Запретить медиаконтент
- reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки
+ reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки.
+ reject_reports: Отклонять жалобы
+ reject_reports_hint: Игнорировать все жалобы с этого домена. Не имеет значения в случае блокировки.
+ rejecting_media: отклонение медиафайлов
+ rejecting_reports: отклонение жалоб
+ severity:
+ silence: заглушен
+ suspend: заморожен
show:
affected_accounts:
few: Влияет на %{count} аккаунта в базе данных
@@ -260,7 +306,7 @@ ru:
suspend: Снять блокировку со всех существующих аккаунтов этого домена
title: Снять блокировку с домена %{domain}
undo: Отменить
- undo: Отменить
+ undo: Отменить блокировку домена
email_domain_blocks:
add_new: Добавить новую
created_msg: Доменная блокировка еmail успешно создана
@@ -271,8 +317,27 @@ ru:
create: Создать блокировку
title: Новая доменная блокировка еmail
title: Доменная блокировка email
+ followers:
+ back_to_account: Вернуться к аккаунту
+ title: Подписчики пользователя %{acct}
instances:
+ by_domain: Домен
+ delivery_available: Доставка возможна
+ known_accounts:
+ few: "%{count} известных аккаунта"
+ many: "%{count} известных аккаунтов"
+ one: "%{count} известный аккаунт"
+ other: "%{count} известных аккаунтов"
+ moderation:
+ all: Все
+ limited: Ограниченные
+ title: Модерация
title: Известные узлы
+ total_blocked_by_us: Заблокировано нами
+ total_followed_by_them: Заблокировано ими
+ total_followed_by_us: Наших подписчиков
+ total_reported: Жалобы на них
+ total_storage: Медиафайлы
invites:
deactivate_all: Отключить все
filter:
@@ -281,10 +346,17 @@ ru:
expired: Истёкшие
title: Фильтр
title: Приглашения
+ pending_accounts:
+ title: Ожидающие аккаунты (%{count})
relays:
add_new: Добавить ретранслятор
+ delete: Удалить
description_html: "Федеративный ретранслятор – это промежуточный сервер, который передаёт большие объёмы публичных статусов между серверами, которые подписываются и публикуют туда. Это может помочь небольшим и средним серверам находить записи со всей федерации, ведь в противном случае пользователям нужно будет вручную подписываться на людей с удалённых узлов."
+ disable: Отключить
+ disabled: Отключено
+ enable: Включить
enable_hint: Если включено, ваш сервер будет подписан на все публичные статусы с этого ретранслятора и начнёт туда отправлять публичные статусы со своего узла.
+ enabled: Включено
inbox_url: URL ретранслятора
pending: Ожидание подтверждения ретранслятора
save_and_enable: Сохранить и включить
@@ -296,8 +368,8 @@ ru:
destroyed_msg: Примечание жалобы удалено!
reports:
account:
- note: заметка
- report: жалоба
+ note: заметок
+ report: жалоб
action_taken_by: 'Действие предпринято:'
are_you_sure: Вы уверены?
assign_to_self: Назначить себе
@@ -317,7 +389,7 @@ ru:
report: 'Жалоба #%{id}'
reported_account: Аккаунт нарушителя
reported_by: Отправитель жалобы
- resolved: Разрешено
+ resolved: Разрешенные
resolved_msg: Жалоба успешно обработана!
status: Статус
title: Жалобы
@@ -340,12 +412,18 @@ ru:
hero:
desc_html: Отображается на главной странице. Рекомендуется разрешение не менее 600х100px. Если не установлено, используется изображение узла
title: Баннер узла
+ mascot:
+ desc_html: Отображается на различных страницах. Рекомендуется размер не менее 293×205px. Если ничего не выбрано, используется персонаж по умолчанию
+ title: Персонаж сервера
peers_api_enabled:
desc_html: Домены, которые были замечены этим узлом среди всей федерации
title: Публикация списка обнаруженных узлов
preview_sensitive_media:
desc_html: Предпросмотр ссылок с остальных веб-сайтов будет показан даже если медиаконтент отмечен как чувствительный
title: Показывать чувствительный медиаконтент в предпросмотре OpenGraph
+ profile_directory:
+ desc_html: Позволять находить пользователей
+ title: Включить каталог профилей
registrations:
closed_message:
desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги
@@ -356,6 +434,12 @@ ru:
min_invite_role:
disabled: Никого
title: Разрешать приглашения от
+ registrations_mode:
+ modes:
+ approved: Для регистрации требуется подтверждение
+ none: Никто не может регистрироваться
+ open: Все могут регистрироваться
+ title: Режим регистраций
show_known_fediverse_at_about_page:
desc_html: Если включено, показывает посты со всех известных узлов в предпросмотре ленты. В противном случае отображаются только локальные посты.
title: Показывать известные узлы в предпросмотре ленты
@@ -402,8 +486,25 @@ ru:
last_delivery: Последняя доставка
title: WebSub
topic: Тема
+ tags:
+ accounts: Аккаунты
+ hidden: Скрыты
+ hide: Скрыть из каталога
+ name: Хэштег
+ title: Хэштеги
+ unhide: Показывать в каталоге
+ visible: Видны
title: Администрирование
+ warning_presets:
+ add_new: Добавить
+ delete: Удалить
+ edit: Изменить
+ edit_preset: Удалить шаблон предупреждения
+ title: Управление шаблонами предупреждений
admin_mailer:
+ new_pending_account:
+ body: Ниже указана информация об аккаунте. Вы можете одобрить или отклонить заявку.
+ subject: Новый аккаунт для рассмотрения на %{instance} (%{username})
new_report:
body: "%{reporter} подал(а) жалобу на %{target}"
body_remote: Кто-то с узла %{domain} пожаловался на %{target}
@@ -424,8 +525,9 @@ ru:
warning: Будьте очень внимательны с этими данными. Не делитесь ими ни с кем!
your_token: Ваш токен доступа
auth:
- agreement_html: Создавая аккаунт, вы соглашаетесь с правилами узла и нашими условиями обслуживания.
+ apply_for_account: Запросить приглашение
change_password: Пароль
+ checkbox_agreement_html: Я соглашаюсь с правилами сервера и Условиями использования
confirm_email: Подтвердите email
delete_account: Удалить аккаунт
delete_account_html: Если Вы хотите удалить свой аккаунт, вы можете перейти сюда. У Вас будет запрошено подтверждение.
@@ -441,10 +543,12 @@ ru:
cas: CAS
saml: SAML
register: Зарегистрироваться
+ registration_closed: "%{instance} не принимает новых участников"
resend_confirmation: Повторить отправку инструкции для подтверждения
reset_password: Сбросить пароль
security: Безопасность
set_new_password: Задать новый пароль
+ trouble_logging_in: Не удаётся войти?
authorize_follow:
already_following: Вы уже подписаны на этот аккаунт
error: К сожалению, при поиске удаленного аккаунта возникла ошибка
@@ -478,6 +582,18 @@ ru:
success_msg: Ваш аккаунт был успешно удален
warning_html: Гарантируется удаление контента только на этом узле. Широко распространившийся контент, скорее всего, оставит следы. Сервера, отключенные от сети или отписавшиеся от Ваших обновлений, не обновят свои базы данных.
warning_title: О доступности распространившегося контента
+ directories:
+ directory: Каталог профилей
+ enabled: В настоящий момент вы указаны в каталоге.
+ enabled_but_waiting: Вы согласились находиться в каталоге, но у вас ещё нет необходимого количества подписчиков (%{min_followers}), чтобы оказаться в каталоге.
+ explanation: Находите пользователей по интересам
+ explore_mastodon: Изучайте %{title}
+ how_to_enable: Вы ещё не находитесь в каталоге. Можете добавиться ниже. Используйте хэштеги в разделе "о себе", чтобы вас находили по этим хэштегам!
+ people:
+ few: "%{count} человека"
+ many: "%{count} человек"
+ one: "%{count} человек"
+ other: "%{count} человек"
errors:
'403': У Вас нет доступа к просмотру этой страницы.
'404': Страница, которую Вы искали, не существует.
@@ -490,6 +606,9 @@ ru:
content: Приносим извинения, но на нашей стороне что-то пошло не так.
title: Страница неверна
noscript_html: Для работы с Mastodon, пожалуйста, включите JavaScript. Кроме того, вы можете использовать одно из приложений Mastodon для Вашей платформы.
+ existing_username_validator:
+ not_found: не удалось найти локального пользователя с таким именем
+ not_found_multiple: не удалось найти %{usernames}
exports:
archive_takeout:
date: Дата
@@ -500,9 +619,15 @@ ru:
size: Размер
blocks: Список блокировки
csv: CSV
+ domain_blocks: Доменные блокировки
follows: Подписки
+ lists: Списки
mutes: Список глушения
storage: Ваш медиаконтент
+ featured_tags:
+ add_new: Добавить
+ errors:
+ limit: Вы уже добавили максимальное число хэштегов
filters:
contexts:
home: Домашняя лента
@@ -524,18 +649,47 @@ ru:
more: Ещё…
resources: Ссылки
generic:
+ all: Все
changes_saved_msg: Изменения успешно сохранены!
+ copy: Копировать
+ order_by: Сортировать по
save_changes: Сохранить изменения
validation_errors:
few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
many: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
one: Что-то здесь не так! Пожалуйста, прочитайте об ошибке ниже
other: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
+ html_validator:
+ invalid_markup: 'contains invalid HTML markup: %{error}'
+ identity_proofs:
+ active: Активно
+ authorize: Да, авторизовать
+ authorize_connection_prompt: Авторизовать эту криптографическую связь?
+ errors:
+ failed: Криптографическое соединение не установлено. Попробуйте ещё раз на %{provider}.
+ keybase:
+ invalid_token: Токены Keybase — это хэши от подписей и должны быть по длине в 66 hex-символов
+ verification_failed: Keybase не распознаёт этот токен как подпись пользователя %{kb_username}. Пожалуйста, повторите на Keybase.
+ wrong_user: Невозможно подтвердить пользователя %{proving}, будучи залогиненным как %{current}. Выполните вход как %{proving} и попробуйте ещё раз.
+ explanation_html: Здесь вы можете криптографически связать свои остальные идентификаторы, такие как профиль Keybase. Это позволит другим дюдям отправлять вам зашифрованные сообщения и верить отправляемым вами сообщениям.
+ i_am_html: Я %{username} на %{service}.
+ identity: Идентификатор
+ inactive: Неактивно
+ publicize_checkbox: 'И опубликуйте текст:'
+ publicize_toot: 'Подтверждено! Я %{username} на %{service}: %{url}'
+ status: Статус подтверждения
+ view_proof: Посмотреть доказательство личности
imports:
+ modes:
+ merge: Объединить
+ merge_long: Сохранить имеющиеся данные и добавить новые
+ overwrite: Перезаписать
+ overwrite_long: Перезаписать имеющиеся данные новыми
preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Ваш аккаунт на этом узле из файлов, экспортированных с другого узла.
success: Ваши данные были успешно загружены и будут обработаны с должной скоростью
types:
blocking: Список блокировки
+ domain_blocking: Список доменных блокировок
following: Подписки
muting: Список глушения
upload: Загрузить
@@ -552,6 +706,7 @@ ru:
'86400': 1 день
expires_in_prompt: Никогда
generate: Сгенерировать
+ invited_by: 'Вас пригласил(а):'
max_uses:
few: "%{count} исп."
many: "%{count} исп."
@@ -574,7 +729,7 @@ ru:
acct: имя@домен нового аккаунта
currently_redirecting: 'Ваш профиль будет перенаправлен на:'
proceed: Сохранить
- updated_msg: Настройки миграции Вашего аккаунта обновлены!
+ updated_msg: Настройки миграции вашего аккаунта обновлены!
moderation:
title: Модерация
notification_mailer:
@@ -583,28 +738,28 @@ ru:
body: Кратко о пропущенных Вами сообщениях с Вашего последнего захода %{since}
mention: "%{name} упомянул(а) Вас в:"
new_followers_summary:
- few: У Вас появилось %{count} новых подписчика! Отлично!
- many: У Вас появилось %{count} новых подписчиков! Отлично!
- one: Также, пока вас не было, у Вас появился новый подписчик! Ура!
- other: Также, пока вас не было, у Вас появилось %{count} новых подписчиков! Отлично!
+ few: У вас появилось %{count} новых подписчика! Отлично!
+ many: У вас появилось %{count} новых подписчиков! Отлично!
+ one: Также, пока вас не было, у вас появился новый подписчик! Ура!
+ other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично!
subject:
- few: "%{count} новых уведомления с Вашего последнего захода \U0001F418"
- many: "%{count} новых уведомлений с Вашего последнего захода \U0001F418"
- one: "1 новое уведомление с Вашего последнего захода \U0001F418"
- other: "%{count} новых уведомлений с Вашего последнего захода \U0001F418"
+ few: "%{count} новых уведомления с вашего последнего захода \U0001F418"
+ many: "%{count} новых уведомлений с вашего последнего захода \U0001F418"
+ one: "1 новое уведомление с вашего последнего захода \U0001F418"
+ other: "%{count} новых уведомлений с вашего последнего захода \U0001F418"
title: В ваше отсутствие…
favourite:
body: 'Ваш статус понравился %{name}:'
- subject: "%{name} понравился Ваш статус"
+ subject: "%{name} понравился ваш статус"
title: Понравившийся статус
follow:
- body: "%{name} теперь подписан(а) на Вас!"
- subject: "%{name} теперь подписан(а) на Вас"
+ body: "%{name} теперь подписан(а) на вас!"
+ subject: "%{name} теперь подписан(а) на вас"
title: Новый подписчик
follow_request:
action: Управление запросами на подписку
- body: "%{name} запросил Вас о подписке"
- subject: "%{name} хочет подписаться на Вас"
+ body: "%{name} запросил вас о подписке"
+ subject: "%{name} хочет подписаться на вас"
title: Новый запрос о подписке
mention:
action: Ответить
@@ -613,7 +768,7 @@ ru:
title: Новое упоминание
reblog:
body: 'Ваш статус был продвинут %{name}:'
- subject: "%{name} продвинул(а) Ваш статус"
+ subject: "%{name} продвинул(а) ваш статус"
title: Новое продвижение
number:
human:
@@ -632,21 +787,56 @@ ru:
older: Старше
prev: Пред
truncate: "…"
+ polls:
+ errors:
+ already_voted: Вы уже голосовали в этом опросе
+ duplicate_options: содержит одинаковые варианты
+ duration_too_long: слишком далеко в будущем
+ duration_too_short: слишком короткий срок
+ expired: Опрос уже завершился
+ over_character_limit: каждый не вариант не может быть длиннее %{max} символов
+ too_few_options: должно быть больше 1 варианта
+ too_many_options: может содержать не больше %{max} вариантов
preferences:
- languages: Языки
other: Другое
- publishing: Публикация
- web: WWW
+ relationships:
+ activity: Активность аккаунта
+ dormant: Заброшенные
+ last_active: Недавно активные
+ most_recent: Новые
+ moved: Переехавший
+ mutual: Общие
+ primary: Основной
+ relationship: Связь
+ remove_selected_domains: Удалить всех подписчиков для выбранных доменов
+ remove_selected_followers: Удалить выбранных подписчиков
+ remove_selected_follows: Отписаться от выбранных пользователей
+ status: Статус аккаунта
remote_follow:
acct: Введите свой username@domain для продолжения
missing_resource: Поиск требуемого перенаправления URL для Вашего аккаунта завершился неудачей
no_account_html: Нет учётной записи? Вы можете зарегистрироваться здесь
proceed: Продолжить подписку
prompt: 'Вы хотите подписаться на:'
+ reason_html: "Почему это необходимо? %{instance} может не являться сервером, на котором вы зарегистрированы, поэтому нам сперва нужно перенаправить вас на домашний сервер."
+ remote_interaction:
+ favourite:
+ proceed: Отметить как "нравится"
+ prompt: 'Вы собираетесь поставить отметку "нравится" этому статусу:'
+ reblog:
+ proceed: Продвинуть статус
+ prompt: 'Вы хотите продвинуть этот статус:'
+ reply:
+ proceed: Ответить
+ prompt: 'Вы собираетесь ответить на этот статус:'
remote_unfollow:
error: Ошибка
title: Заголовок
unfollowed: Отписаны
+ scheduled_statuses:
+ over_daily_limit: Вы превысили лимит в %{limit} запланированных постов на указанный день
+ over_total_limit: Вы превысили лимит на %{limit} запланированных постов
+ too_soon: Запланированная дата должна быть в будущем
sessions:
activity: Последняя активность
browser: Браузер
@@ -689,19 +879,25 @@ ru:
revoke_success: Сессия завершена успешно
title: Сессии
settings:
+ account: Учётная запись
+ account_settings: Настройки учётной записи
+ appearance: Внешний вид
authorized_apps: Авторизованные приложения
back: Назад в Mastodon
delete: Удаление аккаунта
development: Разработка
edit_profile: Изменить профиль
export: Экспорт данных
+ featured_tags: Особенные хэштеги
+ identity_proofs: Подтверждения личности
import: Импорт
+ import_and_export: Импорт и экспорт
migrate: Перенос аккаунта
notifications: Уведомления
preferences: Настройки
- settings: Опции
+ profile: Профиль
+ relationships: Подписки и подписчики
two_factor_authentication: Двухфакторная аутентификация
- your_apps: Ваши приложения
statuses:
attached:
description: 'Вложение: %{attached}'
@@ -730,6 +926,13 @@ ru:
ownership: Нельзя закрепить чужой статус
private: Нельзя закрепить непубличный статус
reblog: Нельзя закрепить продвинутый статус
+ poll:
+ total_votes:
+ few: "%{count} голоса"
+ many: "%{count} голосов"
+ one: "%{count} голос"
+ other: "%{count} голосов"
+ vote: Голосовать
show_more: Ещё
sign_in_to_participate: Войдите, чтобы принять участие в дискуссии
title: '%{name}: "%{quote}"'
@@ -824,12 +1027,13 @@ ru:
Originally adapted from the Discourse privacy policy.
title: Условия обслуживания и политика конфиденциальности %{instance}
themes:
- contrast: Высококонтрастная
- default: Mastodon
+ contrast: Mastodon (высококонтрастная)
+ default: Mastodon (тёмная)
mastodon-light: Mastodon (светлая)
time:
formats:
- default: "%b %d, %Y, %H:%M"
+ default: "%d %b %Y, %H:%M"
+ month: "%m.%Y"
two_factor_authentication:
code_hint: Для подтверждения введите код, сгенерированный приложением аутентификатора
description_html: При включении двухфакторной аутентификации, вход потребует от Вас использования Вашего телефона, который сгенерирует входные токены.
@@ -851,26 +1055,46 @@ ru:
explanation: Вы запросили полный архив вашего аккаунта Mastodon. Он готов к загрузке!
subject: Ваш архив готов к загрузке
title: Вынос архива
+ warning:
+ explanation:
+ disable: Пока ваш аккаунт заморожен, ваши данные остаются нетронутыми, но вы не можете производить никаких действий до разблокировки.
+ silence: Пока ваш аккаунт ограничен, ваши посты на этом сервере увидят только ваши действующие подписчики, а ваш аккаунт может быть исключён из различных каталогов. Впрочем, остальные могут подписаться на вас вручную.
+ suspend: Ваш аккаунт заблокирован и все ваши посты и загруженные медиафайлы безвозвратно удалены с этого сервера и других серверов, где у вас были подписчики.
+ review_server_policies: Посмотреть правила сервера
+ subject:
+ disable: Ваш аккаунт %{acct} заморожен
+ none: "%{acct}, вам вынесено предупреждение"
+ silence: Ваш аккаунт %{acct} был ограничен
+ suspend: Ваш аккаунт %{acct} был заблокирован
+ title:
+ disable: Аккаунт заморожен
+ none: Предупреждение
+ silence: Аккаунт ограничен
+ suspend: Аккаунт заблокирован
welcome:
edit_profile_action: Настроить профиль
- edit_profile_step: Вы можете настроить свой профиль, загрузив аватар, обложку, сменив имя и много чего ещё. Если Вы хотите фильтровать подписчиков до того, как они смогут на Вас подписаться, Вы можете закрыть свой аккаунт.
+ edit_profile_step: Вы можете настроить свой профиль, загрузив аватар, обложку, сменив имя и много чего ещё. Если вы хотите фильтровать подписчиков до того, как они смогут на вас подписаться, вы можете закрыть свой аккаунт.
explanation: Несколько советов для новичков
final_action: Начать постить
- final_step: 'Начните постить! Ваши публичные посты могут видеть другие, например, в локальной ленте или по хэштегам, даже если у Вас нет подписчиков. Вы также можете поздороваться с остальными и представиться, используя хэштек #приветствие.'
+ final_step: 'Начните постить! Ваши публичные посты могут видеть другие, например, в локальной ленте или по хэштегам, даже если у вас нет подписчиков. Вы также можете поздороваться с остальными и представиться, используя хэштег #приветствие.'
full_handle: Ваше обращение
full_handle_hint: То, что Вы хотите сообщить своим друзьям, чтобы они могли написать Вам или подписаться с другого узла.
review_preferences_action: Изменить настройки
- review_preferences_step: Проверьте все настройки, например, какие письма Вы хотите получать или уровень приватности статусов по умолчанию. Если Вы не страдаете морской болезнь, можете включить автовоспроизведение GIF.
+ review_preferences_step: Проверьте все настройки, например, какие письма вы хотите получать или уровень приватности статусов по умолчанию. Если вы не страдаете морской болезнью, можете включить автовоспроизведение GIF.
subject: Добро пожаловать в Mastodon
- tip_federated_timeline: В глобальной ленте отображается сеть Mastodon. Но в ней показаны посты только от людей, на которых подписаны Вы и Ваши соседи, поэтому лента может быть неполной.
- tip_following: По умолчанию Вы подписаны на администратора(-ов) Вашего узла. Чтобы найти других интересных людей, проверьте локальную и глобальную ленты.
- tip_local_timeline: В локальной ленте показаны посты от людей с %{instance}. Это Ваши непосредственные соседи!
- tip_mobile_webapp: Если Ваш мобильный браузер предлагает добавить иконку Mastodon на домашний экран, то Вы можете получать push-уведомления. Прямо как полноценное приложение!
+ tip_federated_timeline: В глобальной ленте отображается сеть Mastodon. Но в ней показаны посты только от людей, на которых подписаны вы и ваши соседи, поэтому лента может быть неполной.
+ tip_following: По умолчанию вы подписаны на администратора(-ов) вашего узла. Чтобы найти других интересных людей, проверьте локальную и глобальную ленты.
+ tip_local_timeline: В локальной ленте показаны посты от людей с %{instance}. Это ваши непосредственные соседи!
+ tip_mobile_webapp: Если ваш мобильный браузер предлагает добавить иконку Mastodon на домашний экран, то вы можете получать push-уведомления. Прямо как полноценное приложение!
tips: Советы
title: Добро пожаловать на борт, %{name}!
users:
+ follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек
invalid_email: Введенный e-mail неверен
invalid_otp_token: Введен неверный код двухфакторной аутентификации
otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email}
seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны.
signed_in_as: 'Выполнен вход под именем:'
+ verification:
+ explanation_html: 'Вы можете подтвердить себя как владельца ссылок в вашем профиле. Для этого указанный веб-сайт должен содержать обратную ссылку на ваш профиль в Mastodon. У обратной ссылки должен быть атрибут rel="me". Сам текст ссылки не имеет значения. Пример:'
+ verification: Подтверждение
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index f0d121135..6c2905846 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -25,13 +25,11 @@ ar:
phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى
scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي.
setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لتبويقات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها)
- setting_default_language: يمكن الكشف التلقائي للّغة اللتي استخدمتها في تحرير تبويقاتك ، غيرَ أنّ العملية ليست دائما دقيقة
setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة
setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا
setting_display_media_show_all: دائمًا عرض الوسائط المُعيَّنة كحساسة
setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك الشخصية
setting_noindex: ذلك يؤثر على حالة ملفك الشخصي و صفحاتك
- setting_theme: ذلك يؤثر على الشكل الذي سيبدو عليه ماستدون عندما تقوم بالدخول مِن أي جهاز.
username: اسم المستخدم الخاص بك سوف يكون فريدا مِن نوعه على %{domain}
featured_tag:
name: 'رُبَّما تريد/ي استخدام أحد هؤلاء:'
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index b91d5780a..41102d23f 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -10,7 +10,6 @@ ast:
irreversible: Los toots peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués
password: Usa 8 caráuteres polo menos
setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil
- setting_theme: Afeuta al aspeutu de Mastodon cuando anicies sesión dende cualesquier preséu.
username: El nome d'usuariu va ser únicu en %{domain}
imports:
data: El ficheru CSV esportáu dende otra instancia de Mastodon
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index db87fb116..ab6ee5033 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -27,14 +27,12 @@ ca:
phrase: Es combinarà independentment del format en el text o l'avís de contingut d'un toot
scopes: A quines API es permetrà l'accés a l'aplicació. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual.
setting_aggregate_reblogs: No mostra els nous impulsos dels toots que ja s'han impulsat recentment (només afecta als impulsos nous rebuts)
- setting_default_language: La llengua dels teus toots pot ser detectada automàticament però no sempre acuradament
setting_display_media_default: Amaga els multimèdia marcats com a sensibles
setting_display_media_hide_all: Sempre oculta tots els multimèdia
setting_display_media_show_all: Mostra sempre els elements multimèdia marcats com a sensibles
setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil
setting_noindex: Afecta el teu perfil públic i les pàgines d'estat
setting_show_application: L'aplicació que fas servir per a publicar es mostrarà a la vista detallada dels teus toots
- setting_theme: Afecta l'aspecte de Mastodon quan es visita des de qualsevol dispositiu.
username: El teu nom d'usuari serà únic a %{domain}
whole_word: Quan la paraula clau o la frase sigui només alfanumèrica, s'aplicarà si coincideix amb la paraula sencera
featured_tag:
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index 53e48d758..2ca9882ef 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -27,20 +27,21 @@ co:
phrase: Sarà trovu senza primura di e maiuscule o di l'avertimenti
scopes: L'API à quelle l'applicazione averà accessu. S'è voi selezziunate un parametru d'altu livellu, un c'hè micca bisognu di selezziunà quell'individuali.
setting_aggregate_reblogs: Ùn mustrà micca e nove spartere per i statuti chì sò stati spartuti da pocu (tocca solu e spartere più ricente)
- setting_default_language: A lingua di i vostri statuti pò esse induvinata autumaticamente, mà ùn marchja micca sempre bè
+ setting_default_sensitive: I media sensibili sò piattati, salvu un cambiamentu di i paramettri, è ponu esse visti cù un cliccu
setting_display_media_default: Piattà i media marcati cum'è sensibili
setting_display_media_hide_all: Sempre piattà tutti i media
setting_display_media_show_all: Sempre affissà i media marcati cum'è sensibili
setting_hide_network: I vostri abbunati è abbunamenti ùn saranu micca mustrati nant’à u vostru prufile
setting_noindex: Tocca à u vostru prufile pubblicu è i vostri statuti
setting_show_application: L'applicazione chì voi utilizate per mandà statuti sarà affissata indè a vista ditagliata di quelli
- setting_theme: Tocca à l’apparenza di Mastodon quandu site cunnettatu·a da qualch’apparechju.
username: U vostru cugnome sarà unicu nant'à %{domain}
whole_word: Quandu a parolla o a frasa sana hè alfanumerica, sarà applicata solu s'ella currisponde à a parolla sana
featured_tag:
name: 'Pudete vulè utilizà unu di quelli:'
imports:
data: Un fugliale CSV da un’altru servore di Mastodon
+ invite_request:
+ text: Quessu ci aiutarà à valutà a vostra dumanda
sessions:
otp: 'Entrate u codice d’identificazione à dui fattori nant’à u vostru telefuninu, o unu di i vostri codici di ricuperazione:'
user:
@@ -88,6 +89,7 @@ co:
otp_attempt: Codice d’identificazione à dui fattori
password: Chjave d’accessu
phrase: Parolla-chjave o frasa
+ setting_advanced_layout: Attivà l'interfaccia web avanzata
setting_aggregate_reblogs: Gruppà e spartere indè e linee
setting_auto_play_gif: Lettura autumatica di i GIF animati
setting_boost_modal: Mustrà una cunfirmazione per sparte un statutu
@@ -118,15 +120,19 @@ co:
must_be_follower: Piattà e nutificazione di quelli·e ch’ùn vi seguitanu
must_be_following: Piattà e nutificazione di quelli·e ch’ùn seguitate
must_be_following_dm: Bluccà e missaghji diretti di quelli·e ch’ùn seguitate
+ invite_request:
+ text: Perchè vulete ghjunghje?
notification_emails:
digest: Mandà e-mail di ricapitulazione
favourite: Mandà un’e-mail quandu qualch’unu aghjunghje i mo statuti à i so favuriti
follow: Mandà un’e-mail quandu qualch’unu mi seguita
follow_request: Mandà un’e-mail quandu qualch’unu vole seguitami
mention: Mandà un’e-mail quandu qualch’unu mi mintuva
+ pending_account: Mandà un'e-mail quandu un novu contu hà bisognu d'esse valutatu
reblog: Mandà un’e-mail quandu qualch’unu sparte i mo statuti
report: Mandà un'e-mail quandu c'hè un novu signalamentu
'no': Nò
+ recommended: Ricumandati
required:
mark: "*"
text: riquisiti
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 21134d07c..3bf74e971 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -27,22 +27,23 @@ cs:
phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
scopes: Která API bude aplikaci povoleno používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě.
setting_aggregate_reblogs: Nezobrazovat nové boosty pro tooty, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty)
- setting_default_language: Jazyk vašich tootů může být detekován automaticky, není to však vždy přesné
+ setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím
setting_display_media_default: Skrývat média označená jako citlivá
setting_display_media_hide_all: Vždy skrývat všechna média
setting_display_media_show_all: Vždy zobrazovat média označená jako citlivá
setting_hide_network: Koho sledujete a kdo sleduje vás nebude zobrazeno na vašem profilu
setting_noindex: Ovlivňuje váš veřejný profil a stránky tootů
setting_show_application: Aplikace, kterou používáte k psaní tootů, bude zobrazena v detailním zobrazení vašich tootů
- setting_theme: Ovlivňuje jak Mastodon vypadá, jste-li přihlášen na libovolném zařízení.
username: Vaše uživatelské jméno bude na %{domain} unikátní
whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikována pouze, pokud se shoduje s celým slovem
featured_tag:
name: 'Nejspíš budete chtít použít jeden z těchto:'
imports:
data: Soubor CSV exportovaný z jiného serveru Mastodon
+ invite_request:
+ text: To nám pomůže posoudit váš požadavek
sessions:
- otp: 'Napište dvoufaktorový kód vygenerovaný vaší mobilní aplikací, nebo použijte jeden z vašich záložních kódů:'
+ otp: 'Napište dvoufázový kód vygenerovaný vaší mobilní aplikací, nebo použijte jeden z vašich záložních kódů:'
user:
chosen_languages: Je-li tohle zaškrtnuto, budou ve veřejných časových osách zobrazeny pouze tooty ve zvolených jazycích
labels:
@@ -85,9 +86,10 @@ cs:
max_uses: Maximální počet použití
new_password: Nové heslo
note: O vás
- otp_attempt: Dvoufaktorový kód
+ otp_attempt: Dvoufázový kód
password: Heslo
phrase: Klíčové slovo či fráze
+ setting_advanced_layout: Povolit pokročilé webové rozhraní
setting_aggregate_reblogs: Seskupovat boosty v časových osách
setting_auto_play_gif: Automaticky přehrávat animace GIF
setting_boost_modal: Zobrazovat před boostnutím potvrzovací okno
@@ -118,15 +120,19 @@ cs:
must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují
must_be_following: Blokovat oznámení od lidí, které nesledujete
must_be_following_dm: Blokovat přímé zprávy od lidí, které nesledujete
+ invite_request:
+ text: Proč se chcete připojit?
notification_emails:
digest: Posílat e-maily s přehledem
favourite: Posílat e-maily, když si někdo oblíbí váš toot
follow: Posílat e-maily, když vás někdo začne sledovat
follow_request: Posílat e-maily, když vás někdo požádá o sledování
mention: Posílat e-maily, když vás někdo zmíní
+ pending_account: Posílat e-maily, když je třeba posoudit nový účet
reblog: Posílat e-maily, když někdo boostne váš toot
report: Posílat e-maily, je-li odesláno nové nahlášení
'no': Ne
+ recommended: Doporučeno
required:
mark: "*"
text: požadováno
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index 24ae49a2a..2c7a1e112 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -18,13 +18,11 @@ cy:
password: Defnyddiwch oleiaf 8 nodyn
phrase: Caiff ei gyfateb heb ystyriaeth o briflythrennu mewn testun neu rhybudd ynghylch cynnwys tŵt
scopes: Pa APIau y bydd gan y rhaglen ganiatad i gael mynediad iddynt. Os dewiswch maes lefel uchaf, yna nid oes angen dewis rhai unigol.
- setting_default_language: Mae modd adnabod iaith eich tŵtiau yn awtomatig, ond nid yw bob tro'n gywir
setting_display_media_default: Cuddio cyfryngau wedi eu marcio'n sensitif
setting_display_media_hide_all: Cuddio cyfryngau bob tro
setting_display_media_show_all: Dangos cyfryngau wedi eu marcio'n sensitif bob tro
setting_hide_network: Ni fydd y rheini yr ydych yn eu dilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil
setting_noindex: Mae hyn yn effeithio ar eich proffil cyhoeddus a'ch tudalennau statws
- setting_theme: Mae hyn yn effeithio ar sut olwg sydd ar Matododon pan yr ydych wedi mewngofnodi o unrhyw ddyfais.
username: Bydd eich enw defnyddiwr yn unigryw ar %{domain}
whole_word: Os yw'r allweddair neu'r ymadrodd yn alffaniwmerig yn unig, mi fydd ond yn cael ei osod os yw'n cyfateb a'r gair cyfan
imports:
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 483be7055..fd2024380 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -20,12 +20,10 @@ da:
password: Brug mindst 8 tegn
phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut
scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående.
- setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist
setting_display_media_default: Skjul medier markeret som følsomt
setting_display_media_hide_all: Skjul altid alle medier
setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil
setting_noindex: Påvirker din offentlige profil og status sider
- setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed.
username: Dit brugernavn vil være unikt på %{domain}
whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
imports:
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 6dbfd17c0..1356d5275 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -27,20 +27,20 @@ de:
phrase: Wird unabhängig vom umgebenen Text oder Inhaltswarnung eines Beitrags verglichen
scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen.
setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge)
- setting_default_language: Die Sprache der Beiträge kann automatisch erkannt werden, aber dies ist nicht immer genau
setting_display_media_default: Verstecke Medien, die als sensibel markiert sind
setting_display_media_hide_all: Alle Medien immer verstecken
setting_display_media_show_all: Medien, die als sensibel markiert sind, immer anzeigen
setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt
setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge
setting_show_application: Die Anwendung, die du zum Schreiben von Beiträgen benutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt
- setting_theme: Wirkt sich darauf aus, wie Mastodon aussieht, egal auf welchem Gerät du eingeloggt bist.
username: Dein Benutzer:innen-Name wird auf %{domain} nur einmal vorkommen
whole_word: Wenn das Schlagwort oder die Phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet, wenn es dem ganzen Wort entspricht
featured_tag:
name: 'Du möchtest vielleicht einen von diesen benutzen:'
imports:
data: CSV-Datei, die aus einem anderen Mastodon-Server exportiert wurde
+ inivte_request:
+ text: Dies wird uns helfen deine Anfrage besser zu verstehen
sessions:
otp: 'Gib den Zwei-Faktor-Authentisierungscode von deinem Telefon ein oder benutze einen deiner Wiederherstellungscodes:'
user:
@@ -118,12 +118,15 @@ de:
must_be_follower: Benachrichtigungen von Nicht-Folgenden blockieren
must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
must_be_following_dm: Private Nachrichten von Profilen, denen ich nicht folge, blockieren
+ invite_request:
+ text: Warum möchtest du beitreten?
notification_emails:
digest: Schicke Übersichts-E-Mails
favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert
follow: E-Mail senden, wenn mir jemand folgt
follow_request: E-Mail senden, wenn mir jemand folgen möchte
mention: E-Mail senden, wenn mich jemand erwähnt
+ pending_account: E-Mail senden, wenn ein Benutzerkonto zur Überprüfung aussteht
reblog: E-Mail senden, wenn jemand meinen Beitrag teilt
report: E-Mail senden, wenn ein neuer Bericht vorliegt
'no': Nein
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 3d812204c..2201ff498 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -27,14 +27,12 @@ el:
phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ
scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα.
setting_aggregate_reblogs: Απόκρυψη των νέων προωθήσεωνγια τα τουτ που έχουν προωθηθεί πρόσφατα (επηρεάζει μόνο τις νέες προωθήσεις)
- setting_default_language: Η γλώσσα των τουτ σου μπορεί να ανιχνευτεί αυτόματα αλλά δεν είναι πάντα ακριβές
setting_display_media_default: Απόκρυψη ευαίσθητων πολυμέσων
setting_display_media_hide_all: Μόνιμη απόκρυψη όλων των πολυμέσων
setting_display_media_show_all: Μόνιμη εμφάνιση ευαίσθητων πολυμέσων
setting_hide_network: Δε θα εμφανίζεται στο προφίλ σου ποιους ακολουθείς και ποιοι σε ακολουθούν
setting_noindex: Επηρεάζει το δημόσιο προφίλ και τις δημοσιεύσεις σου
setting_show_application: Η εφαρμογή που χρησιμοποιείς για να στέλνεις τα τουτ σου θα εμφανίζεται στις αναλυτικές λεπτομέρειες τους
- setting_theme: Επηρεάζει την εμφάνιση του Mastodon όταν συνδέεται από οποιαδήποτε συσκευή.
username: Το όνομα χρήστη σου θα είναι μοναδικό στο %{domain}
whole_word: Όταν η λέξη ή η φράση κλειδί είναι μόνο αλφαριθμητική, θα εφαρμοστεί μόνο αν ταιριάζει με ολόκληρη τη λέξη
featured_tag:
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 3faaa6ac7..4602f9cd9 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -27,20 +27,21 @@ en:
phrase: Will be matched regardless of casing in text or content warning of a toot
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
- setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
+ setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
setting_display_media_default: Hide media marked as sensitive
setting_display_media_hide_all: Always hide all media
setting_display_media_show_all: Always show media marked as sensitive
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
- setting_theme: Affects how Mastodon looks when you're logged in from any device.
username: Your username will be unique on %{domain}
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
featured_tag:
name: 'You might want to use one of these:'
imports:
data: CSV file exported from another Mastodon server
+ invite_request:
+ text: This will help us review your application
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
user:
@@ -88,11 +89,12 @@ en:
otp_attempt: Two-factor code
password: Password
phrase: Keyword or phrase
+ setting_advanced_layout: Enable advanced web interface
setting_aggregate_reblogs: Group boosts in timelines
setting_auto_play_gif: Auto-play animated GIFs
setting_boost_modal: Show confirmation dialog before boosting
setting_default_language: Posting language
- setting_default_privacy: Post privacy
+ setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
setting_display_media: Media display
@@ -118,15 +120,19 @@ en:
must_be_follower: Block notifications from non-followers
must_be_following: Block notifications from people you don't follow
must_be_following_dm: Block direct messages from people you don't follow
+ invite_request:
+ text: Why do you want to join?
notification_emails:
digest: Send digest e-mails
favourite: Send e-mail when someone favourites your status
follow: Send e-mail when someone follows you
follow_request: Send e-mail when someone requests to follow you
mention: Send e-mail when someone mentions you
+ pending_account: Send e-mail when a new account needs review
reblog: Send e-mail when someone boosts your status
report: Send e-mail when a new report is submitted
'no': 'No'
+ recommended: Recommended
required:
mark: "*"
text: required
diff --git a/config/locales/simple_form.en_GB.yml b/config/locales/simple_form.en_GB.yml
index 6eac4bf3c..8752d81bb 100644
--- a/config/locales/simple_form.en_GB.yml
+++ b/config/locales/simple_form.en_GB.yml
@@ -27,14 +27,12 @@ en_GB:
phrase: Will be matched regardless of casing in text or content warning of a toot
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
- setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
setting_display_media_default: Hide media marked as sensitive
setting_display_media_hide_all: Always hide all media
setting_display_media_show_all: Always show media marked as sensitive
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
- setting_theme: Affects how Mastodon looks when you're logged in from any device.
username: Your username will be unique on %{domain}
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
featured_tag:
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index f4e1df32a..0ac42102a 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -27,14 +27,12 @@ eo:
phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj)
- setting_default_language: La lingvo de viaj mesaĝoj povas esti aŭtomate detektitaj, sed tio ne ĉiam ĝustas
setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj
setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn
setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj
setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo
setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn
setting_show_application: La aplikaĵo, kiun vi uzas por afiŝi, estos montrita en la detala vido de viaj mesaĝoj
- setting_theme: Influas kiel Mastodon aspektas post ensaluto de ajna aparato.
username: Via uzantnomo estos unika ĉe %{domain}
whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
featured_tag:
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index c0d72dc27..da11df3f7 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -16,10 +16,8 @@ es:
locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot
scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales.
- setting_default_language: El idioma de tus toots podrá detectarse automáticamente, pero no siempre es preciso
setting_hide_network: A quién sigues y quién te sigue no será mostrado en tu perfil
setting_noindex: Afecta a tu perfil público y páginas de estado
- setting_theme: Afecta al aspecto de Mastodon cuando te identificas desde cualquier dispositivo.
whole_word: Cuando la palabra clave o frase es solo alfanumérica, solo será aplicado si concuerda con toda la palabra
imports:
data: Archivo CSV exportado desde otra instancia de Mastodon
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index f4fadb29d..36688ee55 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -27,14 +27,12 @@ eu:
phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
setting_aggregate_reblogs: Ez erakutsi buktzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die besterik ez)
- setting_default_language: Zure Toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia
setting_display_media_hide_all: Ezkutatu multimedia guztia beti
setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia
setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
setting_noindex: Zure profil publiko eta Toot-en orrietan eragina du
setting_show_application: Tootak bidaltzeko erabiltzen duzun aplikazioa zure tooten ikuspegi xehetsuan bistaratuko da
- setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
username: Zure erabiltzaile-izena bakana izango da %{domain} domeinuan
whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
featured_tag:
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index b7ba444aa..543642866 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -27,14 +27,12 @@ fa:
phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوقها مقایسه میشود
scopes: واسطهای برنامهنویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطحهای پایینی ندارید.
setting_aggregate_reblogs: برای بازبوقهایی که به تازگی برایتان نمایش داده شدهاند، بازبوقهای بیشتر را نشان نده (فقط روی بازبوقهای اخیر تأثیر میگذارد)
- setting_default_language: زبان نوشتههای شما به طور خودکار تشخیص داده میشود، ولی این تشخیص همیشه دقیق نیست
setting_display_media_default: تصویرهایی را که به عنوان حساس علامت زده شدهاند پنهان کن
setting_display_media_hide_all: همیشه همهٔ عکسها و ویدیوها را پنهان کن
setting_display_media_show_all: همیشه تصویرهایی را که به عنوان حساس علامت زده شدهاند را نشان بده
setting_hide_network: فهرست پیگیران شما و فهرست کسانی که شما پی میگیرید روی نمایهٔ شما دیده نخواهد شد
setting_noindex: روی نمایهٔ عمومی و صفحهٔ نوشتههای شما تأثیر میگذارد
setting_show_application: برنامهای که به کمک آن بوق میزنید، در جزئیات بوق شما نمایش خواهد یافت
- setting_theme: ظاهر ماستدون را وقتی که از هر دستگاهی به آن وارد میشوید تعیین میکند.
username: نام کاربری شما روی %{domain} یکتا خواهد بود
whole_word: اگر کلیدواژه فقط دارای حروف و اعداد باشد، تنها وقتی پیدا میشود که با کل یک واژه در متن منطبق باشد، نه با بخشی از یک واژه
featured_tag:
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 5fda10969..c44925b35 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -12,7 +12,6 @@ fi:
header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
locked: Sinun täytyy hyväksyä seuraajat manuaalisesti
setting_noindex: Vaikuttaa julkiseen profiiliisi ja tilasivuihisi
- setting_theme: Vaikuttaa Mastodonin ulkoasuun millä tahansa laitteella kirjauduttaessa.
imports:
data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto
sessions:
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index f493b746b..26f8d1a5a 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -5,8 +5,8 @@ fr:
account_warning_preset:
text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions
admin_account_action:
- send_email_notification: L'utilisateur recevra une explication de ce qu'il s'est passé avec son compte
- text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez ajouter des présélections d'attention pour économiser du temps
+ send_email_notification: L’utilisateur recevra une explication de ce qu’il s’est passé avec son compte
+ text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez ajouter des présélections d’attention pour économiser du temps
type_html: Choisir que faire avec %{acct}
warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection
defaults:
@@ -15,7 +15,7 @@ fr:
bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé
context: Un ou plusieurs contextes où le filtre devrait s’appliquer
digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence
- discoverable_html: L'annuaire permet aux gens de trouver des comptes en se basant sur les intérêts et les activités. Nécessite au moins %{min_followers} abonnés
+ discoverable_html: L’annuaire permet aux gens de trouver des comptes en se basant sur les intérêts et les activités. Nécessite au moins %{min_followers} abonnés
email: Vous recevrez un courriel de confirmation
fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
@@ -26,21 +26,21 @@ fr:
password: Utilisez au moins 8 caractères
phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte
scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels.
- setting_aggregate_reblogs: Ne pas afficher de nouveaux repartagés pour les pouets qui ont été récemment repartagés (n'affecte que les repartagés nouvellement reçus)
- setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
+ setting_aggregate_reblogs: Ne pas afficher de nouveaux repartagés pour les pouets qui ont été récemment repartagés (n’affecte que les repartagés nouvellement reçus)
setting_display_media_default: Masquer les supports marqués comme sensibles
setting_display_media_hide_all: Toujours masquer tous les médias
setting_display_media_show_all: Toujours afficher les médias marqués comme sensibles
setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil
setting_noindex: Affecte votre profil public ainsi que vos statuts
- setting_show_application: Le nom de l'application que vous utilisez afin d'envoyer des pouets sera affiché dans la vue détaillée de ceux-ci
- setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil.
+ setting_show_application: Le nom de l’application que vous utilisez afin d’envoyer des pouets sera affiché dans la vue détaillée de ceux-ci
username: Votre nom d’utilisateur sera unique sur %{domain}
whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier
featured_tag:
- name: 'Vous pourriez utiliser l''un d''entre eux :'
+ name: 'Vous pourriez vouloir utiliser l’un d’entre eux :'
imports:
- data: Un fichier CSV généré par une autre instance de Mastodon
+ data: Un fichier CSV généré par un autre serveur de Mastodon
+ invite_request:
+ text: Cela nous aidera à considérer votre demande
sessions:
otp: 'Entrez le code d’authentification à deux facteurs généré par l’application de votre téléphone ou utilisez un de vos codes de récupération :'
user:
@@ -53,7 +53,7 @@ fr:
account_warning_preset:
text: Texte de présélection
admin_account_action:
- send_email_notification: Notifier l'utilisateur par courriel
+ send_email_notification: Notifier l’utilisateur par courriel
text: Attention personnalisée
type: Action
types:
@@ -61,7 +61,7 @@ fr:
none: Ne rien faire
silence: Silence
suspend: Suspendre et effacer les données du compte de manière irréversible
- warning_preset_id: Utiliser un modèle d'avertissement
+ warning_preset_id: Utiliser un modèle d’avertissement
defaults:
autofollow: Invitation à suivre votre compte
avatar: Image de profil
@@ -72,7 +72,7 @@ fr:
context: Contextes du filtre
current_password: Mot de passe actuel
data: Données
- discoverable: Inscrire ce compte dans l'annuaire
+ discoverable: Inscrire ce compte dans l’annuaire
display_name: Nom public
email: Adresse courriel
expires_in: Expire après
@@ -103,7 +103,7 @@ fr:
setting_hide_network: Cacher votre réseau
setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles
setting_reduce_motion: Réduire la vitesse des animations
- setting_show_application: Dévoiler le nom de l'application utilisée pour envoyer des pouets
+ setting_show_application: Dévoiler le nom de l’application utilisée pour envoyer des pouets
setting_system_font_ui: Utiliser la police par défaut du système
setting_theme: Thème du site
setting_unfollow_modal: Afficher une fenêtre de confirmation avant de vous désabonner d’un compte
@@ -118,12 +118,15 @@ fr:
must_be_follower: Masquer les notifications des personnes qui ne vous suivent pas
must_be_following: Masquer les notifications des personnes que vous ne suivez pas
must_be_following_dm: Bloquer les messages directs des personnes que vous ne suivez pas
+ invite_request:
+ text: Pourquoi voulez-vous vous inscrire ?
notification_emails:
digest: Envoyer des courriels récapitulatifs
favourite: Envoyer un courriel lorsque quelqu’un ajoute mes statuts à ses favoris
follow: Envoyer un courriel lorsque quelqu’un me suit
follow_request: Envoyer un courriel lorsque quelqu’un demande à me suivre
mention: Envoyer un courriel lorsque quelqu’un me mentionne
+ pending_account: Envoyer un courriel lorsqu’un nouveau compte est en attente d’approbation
reblog: Envoyer un courriel lorsque quelqu’un partage mes statuts
report: Envoyer un courriel lorsqu’un nouveau rapport est soumis
'no': Non
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 434b8caff..c06f027ad 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -27,14 +27,12 @@ gl:
phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot
scopes: A que APIs terá acceso a aplicación. Si selecciona un ámbito de alto nivel, non precisa seleccionar elementos individuais.
setting_aggregate_reblogs: Non mostrar novas promocións de toots que foron promocionados recentemente (só afecta a promocións recén recibidas)
- setting_default_language: Pódese detectar automáticamente o idioma dos seus toots, mais non sempre é preciso
setting_display_media_default: Ocultar medios marcados como sensibles
setting_display_media_hide_all: Ocultar sempre os medios
setting_display_media_show_all: Mostrar sempre os medios marcados como sensibles
setting_hide_network: Non se mostrará no seu perfil quen a segue e quen a está a seguir
setting_noindex: Afecta ao seu perfil público e páxinas de estado
setting_show_application: A aplicación que está a utilizar para enviar toots mostrarase na vista detallada do toot
- setting_theme: Afecta ao aspecto de Mastodon en calquer dispositivo cando está conectada.
username: O seu nome de usuaria será único en %{domain}
whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa
featured_tag:
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index c86498c66..6fda0a057 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -8,7 +8,6 @@ he:
header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px
locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות
- setting_theme: משפיע על המראה של מסטודון בעת החיבור המזוהה מכל מכשיר שהוא.
imports:
data: קובץ CSV שיוצא משרת מסטודון אחר
sessions:
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index f36fabda1..db62b580f 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -8,7 +8,6 @@ hu:
header: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
locked: Egyenként engedélyezned kell a követőidet
setting_noindex: A publikus profilodra és státusz oldalra vonatkozik
- setting_theme: A bármely eszközről bejelentkezett felület kinézetére vonatkozik.
imports:
data: Egy másik Mastodon szerverről exportált CSV fájl
sessions:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 9061844fe..fd1bc9597 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -27,14 +27,12 @@ it:
phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning
scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole.
setting_aggregate_reblogs: Non mostrare nuove condivisioni per toot che sono stati condivisi di recente (ha effetto solo sulle nuove condivisioni)
- setting_default_language: La lingua dei tuoi toot può essere individuata automaticamente, ma il risultato non è sempre accurato
setting_display_media_default: Nascondi media segnati come sensibili
setting_display_media_hide_all: Nascondi sempre tutti i media
setting_display_media_show_all: Nascondi sempre i media segnati come sensibili
setting_hide_network: Chi segui e chi segue te non saranno mostrati sul tuo profilo
setting_noindex: Ha effetto sul tuo profilo pubblico e sulle pagine degli status
setting_show_application: L'applicazione che usi per pubblicare i toot sarà mostrata nella vista di dettaglio dei tuoi toot
- setting_theme: Ha effetto sul modo in cui Mastodon verrà visualizzato quando sarai collegato da qualsiasi dispositivo.
username: Il tuo nome utente sarà unico su %{domain}
whole_word: Quando la parola chiave o la frase è solo alfanumerica, si applica solo se corrisponde alla parola intera
featured_tag:
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 87ffe9d14..ff3dcd043 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -27,20 +27,20 @@ ja:
phrase: トゥートの大文字小文字や閲覧注意に関係なく一致
scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
setting_aggregate_reblogs: 最近ブーストされたトゥートが新たにブーストされても表示しません (設定後受信したものにのみ影響)
- setting_default_language: トゥートの言語は自動的に検出されますが、必ずしも正確とは限りません
setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
setting_display_media_hide_all: 全てのメディアを常に隠す
setting_display_media_show_all: 閲覧注意としてマークされたメディアも常に表示する
setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
setting_show_application: トゥートするのに使用したアプリがトゥートの詳細ビューに表示されるようになります
- setting_theme: ログインしている全てのデバイスで適用されるデザインです。
username: あなたのユーザー名は %{domain} の中で重複していない必要があります
whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります
featured_tag:
name: 'これらを使うといいかもしれません:'
imports:
data: 他の Mastodon サーバーからエクスポートしたCSVファイルを選択して下さい
+ invite_request:
+ text: このサーバーは現在承認制です。申請を承認する際に役立つメッセージを添えてください
sessions:
otp: '携帯電話のアプリで生成された二段階認証コードを入力するか、リカバリーコードを使用してください:'
user:
@@ -88,6 +88,7 @@ ja:
otp_attempt: 二段階認証コード
password: パスワード
phrase: キーワードまたはフレーズ
+ setting_advanced_layout: 上級者向け UI を有効にする
setting_aggregate_reblogs: ブーストをまとめる
setting_auto_play_gif: アニメーションGIFを自動再生する
setting_boost_modal: ブーストする前に確認ダイアログを表示する
@@ -118,12 +119,15 @@ ja:
must_be_follower: フォロワー以外からの通知をブロック
must_be_following: フォローしていないユーザーからの通知をブロック
must_be_following_dm: フォローしていないユーザーからのダイレクトメッセージをブロック
+ invite_request:
+ text: 意気込みをお聞かせください
notification_emails:
digest: タイムラインからピックアップしてメールで通知する
favourite: お気に入りに登録された時にメールで通知する
follow: フォローされた時にメールで通知する
follow_request: フォローリクエストを受けた時にメールで通知する
mention: 返信が来た時にメールで通知する
+ pending_account: 新しいアカウントの承認が必要な時にメールで通知する
reblog: トゥートがブーストされた時にメールで通知する
report: 通報を受けた時にメールで通知する
'no': いいえ
diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml
index 6bccb3134..55a940d78 100644
--- a/config/locales/simple_form.ka.yml
+++ b/config/locales/simple_form.ka.yml
@@ -16,10 +16,8 @@ ka:
locked: საჭიროებს თქვენ მიერ მიმდევრების ხელით დადასტურებას
phrase: დამთხვევა მოხდება დიდი და პატარა ასოების ან კონტენტის გაფრთხილების გათვალისწინების გარეშე
scopes: რომელი აპიებისადმი ექნება აპლიკაციას ცვდომა. თუ არიჩევთ უმთავრეს ფარგლებს, არ დაგჭირდებათ ინდივიდუალურების ამორჩევა.
- setting_default_language: თქვენი ტუტების ენა შეიძლება დადგინდეს ავტომატურად, მაგრამ ეს არაა ყოველთვის ზუსტი
setting_hide_network: ვის მიყვებით და ვინ მოგყვებათ არ გამოჩნდება აქ
setting_noindex: გავლენას ახდენს თქვენს ღია პროფილისა და სტატუსის გვერდებზე
- setting_theme: გავლენას ახდენს თუ როგორ გამოიყურება მასტოდონი, როდესაც შესული ხართ რომელიმე მოწყობილობიდან.
whole_word: როდესაც სიტყვა ან ფრაზა მხოლოდ ალფა-ნუმერიკულია, ის დაფიქსირდება თუ ემთხვევა სრულ სიტყვას
imports:
data: ცსვ ფაილის ექსპორტი მოხდა მასტოდონის სხვა ინსტანციიდან
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 81392c8be..6d3f1b679 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -27,20 +27,20 @@ ko:
phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
setting_aggregate_reblogs: 내가 부스트 했던 툿은 새로 부스트 되어도 보여주지 않습니다
- setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다
setting_display_media_default: 민감함으로 설정 된 미디어 가리기
setting_display_media_hide_all: 항상 모든 미디어를 가리기
setting_display_media_show_all: 민감함으로 설정 된 미디어를 항상 보이기
setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다
setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다
setting_show_application: 당신이 툿을 작성하는데에 사용한 앱이 툿의 상세정보에 표시 됩니다
- setting_theme: 로그인중인 모든 디바이스에 적용되는 디자인입니다.
username: 당신의 유저네임은 %{domain} 안에서 유일해야 합니다
whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다
featured_tag:
name: '이것들을 사용하면 좋을 것 같습니다:'
imports:
data: 다른 마스토돈 서버에서 추출된 CSV 파일
+ invite_request:
+ text: 이 정보는 우리가 심사를 하는 데에 참고할 수 있습니다
sessions:
otp: '휴대전화에서 생성 된 2단계 인증 코드를 입력하거나, 복구 코드 중 하나를 사용하세요:'
user:
@@ -88,6 +88,7 @@ ko:
otp_attempt: 2단계 인증 코드
password: 암호
phrase: 키워드 또는 문장
+ setting_advanced_layout: 고급 웹 UI 활성화
setting_aggregate_reblogs: 타임라인의 부스트를 그룹화
setting_auto_play_gif: 애니메이션 GIF를 자동 재생
setting_boost_modal: 부스트 전 확인 창을 표시
@@ -118,12 +119,15 @@ ko:
must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단
must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단
must_be_following_dm: 내가 팔로우 하지 않은 사람에게서 오는 다이렉트메시지를 차단
+ invite_request:
+ text: 가입하려는 이유가 무엇인가요?
notification_emails:
digest: 요약 이메일 보내기
favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 이메일 보내기
follow: 누군가 나를 팔로우 했을 때 이메일 보내기
follow_request: 누군가 나를 팔로우 하길 원할 때 이메일 보내기
mention: 누군가 나에게 답장했을 때 이메일 보내기
+ pending_account: 새 계정이 심사가 필요할 때 이메일 보내기
reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기
report: 새 신고 등록시 이메일로 알리기
'no': 아니오
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 0d7d1a847..d9607f5b6 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -27,20 +27,20 @@ nl:
phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen
scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen.
setting_aggregate_reblogs: Geen nieuwe boosts tonen voor toots die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts)
- setting_default_language: De taal van jouw toots kan automatisch worden gedetecteerd, maar het is niet altijd accuraat
setting_display_media_default: Als gevoelig gemarkeerde media verbergen
setting_display_media_hide_all: Media altijd verbergen
setting_display_media_show_all: Als gevoelig gemarkeerde media altijd verbergen
setting_hide_network: Wie jij volgt en wie jou volgen wordt niet op jouw profiel getoond
setting_noindex: Heeft invloed op jouw openbare profiel en toots
setting_show_application: De toepassing de je gebruikt om te tooten wordt in de gedetailleerde weergave van de toot getoond
- setting_theme: Heeft invloed op hoe de webapp van Mastodon eruitziet (op elk apparaat waarmee je inlogt).
username: Jouw gebruikersnaam is uniek op %{domain}
whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt
featured_tag:
name: 'Je wilt misschien een van deze gebruiken:'
imports:
data: CSV-bestand dat op een andere Mastodonserver werd geëxporteerd
+ invite_request:
+ text: Dit helpt ons om jouw aanvraag te beoordelen
sessions:
otp: 'Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcodes:'
user:
@@ -118,12 +118,15 @@ nl:
must_be_follower: Meldingen van mensen die jou niet volgen blokkeren
must_be_following: Meldingen van mensen die jij niet volgt blokkeren
must_be_following_dm: Directe berichten van mensen die jij niet volgt blokkeren
+ invite_request:
+ text: Waarom wil jij je aanmelden?
notification_emails:
digest: Periodiek e-mails met een samenvatting versturen
favourite: Een e-mail versturen wanneer iemand jouw toot aan hun favorieten heeft toegevoegd
follow: Een e-mail versturen wanneer iemand jou volgt
follow_request: Een e-mail versturen wanneer iemand jou wil volgen
mention: Een e-mail versturen wanneer iemand jou vermeld
+ pending_account: Een e-mail verzenden wanneer een nieuw account moet worden beoordeeld
reblog: Een e-mail versturen wanneer iemand jouw toot heeft geboost
report: Verstuur een e-mail wanneer een nieuw rapportage is ingediend
'no': Nee
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index fc339c3f2..e35bdabcc 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -8,7 +8,6 @@
header: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
locked: Krever at du manuelt godkjenner følgere
setting_noindex: Påvirker din offentlige profil og statussider
- setting_theme: Påvirker hvordan Mastodon ser ut når du er logget inn fra uansett enhet.
imports:
data: CSV-fil eksportert fra en annen Mastodon-instans
sessions:
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 84633dde4..ba6a7782a 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -27,20 +27,20 @@ oc:
phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible
scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses.
setting_aggregate_reblogs: Mostrar pas los nòus partatges que son estats partejats recentament (afecta pas que los nòus partatges recebuts)
- setting_default_language: La lenga de vòstres tuts pòt èsser detectada automaticament, mas de còps es pas corrèctament determinada
setting_display_media_default: Rescondre los mèdias marcats coma sensibles
setting_display_media_hide_all: Totjorn rescondre los mèdias
setting_display_media_show_all: Totjorn mostrar los mèdias marcats coma sensibles
setting_hide_network: Vòstre perfil mostrarà pas los que vos sègon e lo monde que seguètz
setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts
setting_show_application: Lo nom de l’aplicacion qu’utilizatz per publicar serà mostrat dins la vista detalhada de vòstres tuts
- setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qual que siasque lo periferic.
username: Vòstre nom d’utilizaire serà unic sus %{domain}
whole_word: Quand lo mot-clau o frasa es solament alfranumeric, serà pas qu’aplicat se correspond al mot complèt
featured_tag:
name: 'Benlèu que volètz utilizar una d’aquestas causas :'
imports:
data: Fichièr CSV exportat d’un autre servidor Mastodon
+ invite_request:
+ text: Aquò nos ajudarà per validar vòstra demanda
sessions:
otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :'
user:
@@ -118,12 +118,15 @@ oc:
must_be_follower: Blocar las notificacions del mond que vos sègon pas
must_be_following: Blocar las notificacions del mond que seguètz pas
must_be_following_dm: Blocar los messatges del monde que seguètz pas
+ invite_request:
+ text: Perqué volètz vos marcar ?
notification_emails:
digest: Enviar un corrièl recapitulatiu
favourite: Enviar un corrièl quand qualqu’un plaça vòstre estatut en favorit
follow: Enviar un corrièl quand qualqu’un vos sèc
follow_request: Enviar un corrièl quand qualqu’un demanda de vos sègre
mention: Enviar un corrièl quand qualqu’un vos menciona
+ pending_account: Enviar un corrièl quand cal validar un compte novèl
reblog: Enviar un corrièl quand qualqu’un tòrna partejar vòstre estatut
report: Enviar un corrièl pels nòus senhalaments
'no': Non
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index abc2c17a9..af02af591 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -27,14 +27,12 @@ pl:
phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości
scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
- setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
setting_display_media_default: Ukrywaj zawartość oznaczoną jako wrażliwa
- setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną
- setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną jako wrażliwą
+ setting_display_media_hide_all: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
+ setting_display_media_show_all: Nie ukrywaj zawartości multimedialnej oznaczonej jako wrażliwa
setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne
setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
setting_show_application: W informacjach o wpisie będzie widoczna informacja o aplikacji, z której został wysłany
- setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
username: Twoja nazwa użytkownika będzie niepowtarzalna na %{domain}
whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
featured_tag:
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 664c07a46..74ad6ed4e 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -6,7 +6,7 @@ pt-BR:
text: Você pode usar a sintaxe de um toot, como URLs, hashtags e menções
admin_account_action:
send_email_notification: O usuário vai receber uma explicação do que aconteceu com a sua conta
- text_html: Opcional. Você pode usar a sintaxe de toots. Você pode adicionar avisos pré-definidos para ganhar tempo.
+ text_html: Opcional. Você pode usar a sintaxe de toots. Você pode adicionar avisos pré-definidos para ganhar tempo
type_html: Escolha o que fazer com %{acct}
warning_preset_id: Opcional. Você ainda pode adicionar texto customizado no fim do texto pré-definido
defaults:
@@ -27,17 +27,20 @@ pt-BR:
phrase: Vai coincidir, independente de maiúsculas ou minúsculas, no texto ou no aviso de conteúdo de um toot
scopes: Quais APIs a aplicação vai ter permissão de acessar. Se você selecionar um escopo de alto nível, você não precisa selecionar individualmente os outros.
setting_aggregate_reblogs: Não mostrar novos compartilhamentos para toots que foram compartilhados recentemente (afeta somente novos compartilhamentos recebidos)
- setting_default_language: O idioma de seus toots pode ser detectado automaticamente, mas isso nem sempre é preciso
setting_display_media_default: Esconder mídia marcada como sensível
setting_display_media_hide_all: Sempre esconder todas as mídias
setting_display_media_show_all: Sempre mostrar mídia marcada como sensível
setting_hide_network: Quem você segue e quem segue você não serão exibidos no seu perfil
setting_noindex: Afeta seu perfil público e as páginas de suas postagens
- setting_theme: Afeta a aparência do Mastodon quando em sua conta em qualquer aparelho.
+ setting_show_application: A aplicação que você usar para enviar seus toots vai aparecer na visão detalhada dos seus toots
username: Seu nome de usuário será único em %{domain}
whole_word: Quando a palavra ou frase é inteiramente alfanumérica, ela será aplicada somente se corresponder a palavra inteira
+ featured_tag:
+ name: 'Você pode querer usar um destes:'
imports:
data: Arquivo CSV exportado de outra instância do Mastodon
+ invite_request:
+ text: Isso vai nos ajudar a revisar sua aplicação
sessions:
otp: 'Insira o código de autenticação gerado pelo app no seu celular ou use um dos códigos de recuperação:'
user:
@@ -100,6 +103,7 @@ pt-BR:
setting_hide_network: Esconder as suas redes
setting_noindex: Não quero ser indexado por mecanismos de busca
setting_reduce_motion: Reduz movimento em animações
+ setting_show_application: Mostrar o nome da aplicação utilizada para enviar os toots
setting_system_font_ui: Usar a fonte padrão de seu sistema
setting_theme: Tema do site
setting_unfollow_modal: Mostrar diálogo de confirmação antes de deixar de seguir alguém
@@ -108,16 +112,21 @@ pt-BR:
username: Nome de usuário
username_or_email: Nome de usuário ou e-mail
whole_word: Palavra inteira
+ featured_tag:
+ name: Hashtag
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que você não segue
must_be_following_dm: Bloquear mensagens diretas de pessoas que você não segue
+ invite_request:
+ text: Por que você quer se cadastrar?
notification_emails:
digest: Mandar e-mails com relatórios
favourite: Mandar um e-mail quando alguém favoritar suas postagens
follow: Mandar um e-mail quando alguém te seguir
follow_request: Mandar um e-maill quando alguém solicitar ser seu seguidor
mention: Mandar um e-mail quando alguém te mencionar
+ pending_account: Mandar um -mail quando uma nova conta precisar ser revisada
reblog: Mandar um e-mail quando alguém compartilhar suas postagens
report: Mandar um e-mail quando uma nova denúncia é submetida
'no': Não
diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml
index 589f5cf5c..5f9e522fe 100644
--- a/config/locales/simple_form.pt.yml
+++ b/config/locales/simple_form.pt.yml
@@ -27,14 +27,12 @@ pt:
phrase: Será correspondido independentemente da capitalização ou do aviso de conteúdo duma publicação
scopes: Quais as APIs a que será concedido acesso. Se escolheres uma abrangência de nível superior, não precisarás de as seleccionar individualmente.
setting_aggregate_reblogs: Não mostrar novas partilhas que foram partilhadas recentemente (só afecta as novas partilhas)
- setting_default_language: A língua das tuas publicações pode ser detectada automaticamente, mas isso nem sempre é preciso
setting_display_media_default: Esconder media marcada como sensível
setting_display_media_hide_all: Esconder sempre toda a media
setting_display_media_show_all: Mostrar sempre a media marcada como sensível
setting_hide_network: Quem tu segues e quem te segue não será mostrado no teu perfil
setting_noindex: Afecta o teu perfil público e as páginas das tuas publicações
setting_show_application: A aplicação que tu usas para publicar será mostrada na vista detalhada das tuas publicações
- setting_theme: Afecta a aparência do Mastodon quando entras na tua conta em qualquer dispositivo.
username: O teu nome de utilizador será único em %{domain}
whole_word: Quando a palavra-chave ou expressão-chave é somente alfanumérica, ela só será aplicada se corresponder à palavra completa
featured_tag:
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
index 757b87204..e104d9a4e 100644
--- a/config/locales/simple_form.ro.yml
+++ b/config/locales/simple_form.ro.yml
@@ -27,13 +27,11 @@ ro:
phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări
scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia.
setting_aggregate_reblogs: Nu afișa redistribuirile noi pentru postările care au fost deja recent redistribuite (afectează doar noile redistribuiri primite)
- setting_default_language: Limba postărilor tale poate fi detectată automat, dar nu este întotdeauna precisă
setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW)
setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media
setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil
setting_hide_network: Pe cine urmărești și cine te urmărește nu vor fi afișați pe profilul tău
setting_noindex: Afecteazâ profilul tău public și statusurile tale
- setting_theme: Afecteazâ modul în care arată interfața pe toate dispozitivele pe care ești conectat.
username: Numele tău de utilizator va fi unic pe %{domain}
whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă
imports:
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 44cd7ccd6..3b7a92f46 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -2,29 +2,45 @@
ru:
simple_form:
hints:
+ account_warning_preset:
+ text: Вы можете использовать всё, что в обычных постах — ссылки, хэштеги, упоминания и т.д.
+ admin_account_action:
+ send_email_notification: Пользователь получит сообщение о том, что случилось с его/её аккаунтом
+ text_html: (Необязательно) Можно использовать обычный синтаксис. Для экономии времени добавьте шаблоны предупреждений
+ type_html: Выберите, что делать с аккаунтом %{acct}
+ warning_preset_id: Необязательно. Вы можете добавить собственный текст в конце шаблона
defaults:
autofollow: Люди, пришедшие по этому приглашению автоматически будут подписаны на Вас
avatar: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
bot: Этот аккаунт обычно выполяет автоматизированные действия и может не просматриваться владельцем
context: Один или несколько контекстов, к которым должны быть применены фильтры
- digest: Отсылается лишь после длительной неактивности, если Вы в это время получали личные сообщения
+ digest: Отсылается лишь после длительной неактивности, если вы в это время получали личные сообщения
+ discoverable_html: Каталог позволяет пользователям искать людей по интересам и активности. Необходимо наличие не менее %{min_followers} подписчиков
+ email: Вам будет отправлено электронное письмо с подтверждением
fields: В профиле можно отобразить до 4 пунктов как таблицу
header: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
- inbox_url: Копировать URL с главной страницы ретранслятора, который Вы хотите использовать
+ inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать
irreversible: Отфильтрованные статусы будут утеряны навсегда, даже если в будущем фильтр будет убран
locale: Язык интерфейса, e-mail писем и push-уведомлений
- locked: Потребует от Вас ручного подтверждения подписчиков, изменит приватность постов по умолчанию на "только для подписчиков"
+ locked: Потребует от вас ручного подтверждения подписчиков, изменит приватность постов по умолчанию на "только для подписчиков"
+ password: Укажите не менее 8 символов
phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании статуса
- scopes: Какие API приложению будет позволено использовать. Если Вы выберите самый верхний, нижестоящие будут выбраны автоматически.
- setting_default_language: Язык Ваших статусов может быть определён автоматически, но не всегда правильно
- setting_hide_network: Те, на кого Вы подписаны и кто подписан на Вас, не будут отображены в Вашем профиле
- setting_noindex: Относится к Вашему публичному профилю и страницам статусов
- setting_theme: Влияет на внешний вид Mastodon при выполненном входе в аккаунт.
+ scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически.
+ setting_aggregate_reblogs: Не показывать новые продвижения статусов, которые уже были недавно продвинуты (относится только к новым продвижениям)
+ setting_display_media_default: Скрывать чувствительные медиафайлы
+ setting_display_media_hide_all: Всегда скрывать любые медиафайлы
+ setting_display_media_show_all: Всегда показывать чувствительные медиафайлы
+ setting_hide_network: Те, на кого вы подписаны и кто подписан на Вас, не будут отображены в вашем профиле
+ setting_noindex: Относится к вашему публичному профилю и страницам статусов
+ setting_show_application: В окне просмотра вашего статуса будет видно, с какого приложения он был отправлен
+ username: Ваш юзернейм будет уникальным на %{domain}
whole_word: Если слово или фраза состоит только из букв и цифр, сопоставление произойдёт только по полному совпадению
+ featured_tag:
+ name: 'Возможно, вы захотите выбрать из них:'
imports:
data: Файл CSV, экспортированный с другого узла Mastodon
sessions:
- otp: 'Введите код двухфакторной аутентификации, сгенерированный в мобильном приложении, или используйте один из Ваших кодов восстановления:'
+ otp: 'Введите код двухфакторной аутентификации, сгенерированный в мобильном приложении, или используйте один из ваших кодов восстановления:'
user:
chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках
labels:
@@ -32,6 +48,18 @@ ru:
fields:
name: Пункт
value: Значение
+ account_warning_preset:
+ text: Текст шаблона
+ admin_account_action:
+ send_email_notification: Уведомить юзера по e-mail
+ text: Свой текст предупреждения
+ type: Действие
+ types:
+ disable: Заморозить
+ none: Ничего не делать
+ silence: Заглушить
+ suspend: Заблокировать и безвозвратно удалить все данные аккаунта
+ warning_preset_id: Использовать шаблон
defaults:
autofollow: Пригласите подписаться на Ваш аккаунт
avatar: Аватар
@@ -42,6 +70,7 @@ ru:
context: Контекст фильтра
current_password: Текущий пароль
data: Данные
+ discoverable: Показывать этот аккаунт в каталоге
display_name: Показываемое имя
email: Адрес e-mail
expires_in: Истекает через
@@ -57,15 +86,22 @@ ru:
otp_attempt: Двухфакторный код
password: Пароль
phrase: Слово или фраза
+ setting_aggregate_reblogs: Группировать продвижения в лентах
setting_auto_play_gif: Автоматически проигрывать анимированные GIF
setting_boost_modal: Показывать диалог подтверждения перед продвижением
setting_default_language: Язык отправляемых статусов
setting_default_privacy: Видимость постов
setting_default_sensitive: Всегда отмечать медиаконтент как чувствительный
setting_delete_modal: Показывать диалог подтверждения перед удалением
+ setting_display_media: Отображение медиафайлов
+ setting_display_media_default: По умолчанию
+ setting_display_media_hide_all: Скрывать все
+ setting_display_media_show_all: Показывать все
+ setting_expand_spoilers: Всегда раскрывать статусы, имеющие предупреждение о содержании
setting_hide_network: Скрыть свои связи
setting_noindex: Отказаться от индексации в поисковых машинах
setting_reduce_motion: Уменьшить движение в анимации
+ setting_show_application: Раскрывать приложение, с которого отправляются статусы
setting_system_font_ui: Использовать шрифт системы по умолчанию
setting_theme: Тема сайта
setting_unfollow_modal: Показывать диалог подтверждения перед тем, как отписаться от аккаунта
@@ -74,17 +110,19 @@ ru:
username: Имя пользователя
username_or_email: Имя пользователя или e-mail
whole_word: Слово целиком
+ featured_tag:
+ name: Хэштег
interactions:
must_be_follower: Заблокировать уведомления не от подписчиков
- must_be_following: Заблокировать уведомления от людей, на которых Вы не подписаны
- must_be_following_dm: Заблокировать личные сообщения от людей, на которых Вы не подписаны
+ must_be_following: Заблокировать уведомления от людей, на которых вы не подписаны
+ must_be_following_dm: Заблокировать личные сообщения от людей, на которых вы не подписаны
notification_emails:
digest: Присылать дайджест по e-mail
- favourite: Уведомлять по e-mail, когда кому-то нравится Ваш статус
- follow: Уведомлять по e-mail, когда кто-то подписался на Вас
+ favourite: Уведомлять по e-mail, когда кому-то нравится ваш статус
+ follow: Уведомлять по e-mail, когда кто-то подписался на вас
follow_request: Уведомлять по e-mail, когда кто-то запрашивает разрешение на подписку
- mention: Уведомлять по e-mail, когда кто-то упомянул Вас
- reblog: Уведомлять по e-mail, когда кто-то продвинул Ваш статус
+ mention: Уведомлять по e-mail, когда кто-то упомянул вас
+ reblog: Уведомлять по e-mail, когда кто-то продвинул ваш статус
report: Уведомлять по e-mail при создании жалобы
'no': Нет
required:
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 17be44e67..5314b5535 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -27,20 +27,20 @@ sk:
phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke
scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
setting_aggregate_reblogs: Nezobrazuj nové vyzdvihnutia pre príspevky, ktoré už boli len nedávno povýšené (týka sa iba nanovo získaných povýšení)
- setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
- setting_display_media_default: Skryť médiá označené ako citlivé
- setting_display_media_hide_all: Vždy ukryť všetky médiá
- setting_display_media_show_all: Stále ukazuj médiá označené ako citlivé
- setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
+ setting_display_media_default: Skry médiá označené ako citlivé
+ setting_display_media_hide_all: Vždy ukry všetky médiá
+ setting_display_media_show_all: Stále zobrazuj médiá označené ako citlivé
+ setting_hide_network: Koho následuješ, a kto následuje teba, nebude zobrazené na tvojom profile
setting_noindex: Ovplyvňuje verejný profil a stránky s príspevkami
- setting_show_application: Aplikácia, ktorú používaš na písanie príspevkov, bude zobrazená v detailnom náhľade jednotlivých tvojích príspevkov
- setting_theme: Ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ setting_show_application: Aplikácia, ktorú používaš na písanie príspevkov, bude zobrazená v podrobnom náhľade jednotlivých tvojích príspevkov
username: Tvoja prezývka bude unikátna pre server %{domain}
whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
featured_tag:
name: 'Možno by si chcel/a použiť niektoré z týchto:'
imports:
data: CSV súbor vyexportovaný z iného Mastodon serveru
+ invite_request:
+ text: Toto pomôže s vyhodnocovaním tvojej žiadosti
sessions:
otp: 'Napíš sem dvoj-faktorový kód z telefónu, alebo použi jeden z tvojích obnovovacích kódov:'
user:
@@ -59,7 +59,7 @@ sk:
types:
disable: Deaktivuj
none: Neurob nič
- silence: Utíšenie
+ silence: Utíš
suspend: Vylúč a nenávratne vymaž dáta na účte
warning_preset_id: Použi varovnú predlohu
defaults:
@@ -88,6 +88,7 @@ sk:
otp_attempt: Dvoj-faktorový overovací (2FA) kód
password: Heslo
phrase: Kľúčové slovo, alebo fráza
+ setting_advanced_layout: Zapni pokročilé užívateľské rozhranie
setting_aggregate_reblogs: Zoskupuj vyzdvihnutia v časovej osi
setting_auto_play_gif: Automaticky prehrávaj animované GIFy
setting_boost_modal: Zobrazuj potvrdzovacie okno pred povýšením
@@ -97,7 +98,7 @@ sk:
setting_delete_modal: Zobrazuj potvrdzovacie okno pred vymazaním toot-u
setting_display_media: Zobrazovanie médií
setting_display_media_default: Štandard
- setting_display_media_hide_all: Skryť všetky
+ setting_display_media_hide_all: Skry všetky
setting_display_media_show_all: Ukáž všetky
setting_expand_spoilers: Stále rozbaľ príspevky označené varovaním o obsahu
setting_hide_network: Ukri svoju sieť kontaktov
@@ -110,7 +111,7 @@ sk:
severity: Závažnosť
type: Typ importu
username: Prezývka
- username_or_email: Prezívka, alebo email
+ username_or_email: Prezývka, alebo email
whole_word: Celé slovo
featured_tag:
name: Haštag
@@ -119,13 +120,14 @@ sk:
must_be_following: Blokuj oboznámenia od ľudí, ktorých nesledujem
must_be_following_dm: Blokuj súkromné správy od ľudí ktorých nesledujem
notification_emails:
- digest: Posielaj súhrnné emaily
- favourite: Poslať email ak si niekto obľúbi tvoj príspevok
- follow: Poslať email, ak ťa niekto začne následovať
- follow_request: Zaslať email ak ti niekto pošle žiadosť o sledovanie
- mention: Poslať email ak ťa niekto spomenie v svojom príspevku
- reblog: Poslať email ak niekto re-tootne tvoj príspevok
- report: Poslať e-mail ak niekto dodá nové hlásenie
+ digest: Zasielať súhrnné emaily
+ favourite: Zaslať email, ak si niekto obľúbi tvoj príspevok
+ follow: Zaslať email, ak ťa niekto začne následovať
+ follow_request: Zaslať email, ak ti niekto pošle žiadosť o sledovanie
+ mention: Zaslať email, ak ťa niekto spomenie vo svojom príspevku
+ pending_account: Zaslať email, ak treba prehodnotiť nový účet
+ reblog: Zaslať email, ak niekto re-tootne tvoj príspevok
+ report: Zaslať email, ak niekto podá nové nahlásenie
'no': Nie
required:
mark: "*"
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 781485864..6e07d9b00 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -18,13 +18,11 @@ sl:
password: Uporabite najmanj 8 znakov
phrase: Se bo ujemal, ne glede na začetnice v tekstu ali opozorilo o vsebini troba
scopes: Do katerih API-jev bo imel program dostop. Če izberete obseg najvišje ravni, vam ni treba izbrati posameznih.
- setting_default_language: Jezik vaših trobov je lahko samodejno zaznan, vendar ni vedno pravilen
setting_display_media_default: Skrij medij, ki je označen kot občutljiv
setting_display_media_hide_all: Vedno skrij vse medije
setting_display_media_show_all: Vedno pokaži medij, ki je označen kot občutljiv
setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu
setting_noindex: Vpliva na vaš javni profil in na strani s stanjem
- setting_theme: Vpliva na to, kako izgleda Mastodon, ko ste prijavljeni s katero koli napravo.
username: Vaše uporabniško ime bo edinstveno na %{domain}
whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo
imports:
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index c3feee575..c1907abec 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -27,14 +27,12 @@ sq:
phrase: Do të kërkohet përputhje pavarësish se teksti ose sinjalizimi mbi lëndën e një mesazhi është shkruar me të mëdha apo me të vogla
scopes: Cilat API do të lejohet të përdorë aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një.
setting_aggregate_reblogs: Mos shfaq përforcime të reja për mesazhe që janë përforcuar tani së fundi (prek vetëm përforcime të marra rishtas)
- setting_default_language: Gjuha e mesazheve tuaj do të zbulohet vetvetiu, por mund të mos jetë përherë e saktë
setting_display_media_default: Fshih media me shenjën rezervat
setting_display_media_hide_all: Fshih përherë krejt mediat
setting_display_media_show_all: Mediat me shenjën rezervat shfaqi përherë
setting_hide_network: Cilët ndiqni dhe cilët ju ndjekin nuk do të shfaqen në profilin tuaj
setting_noindex: Prek faqet e profilit tuaj publik dhe gjendjeve
setting_show_application: Aplikacioni që përdorni për mesazhe do të shfaqet te pamja e hollësishme për mesazhet tuaj
- setting_theme: Lidhet me se si duket Mastodon-i kur jeni i futur nga çfarëdo pajisje.
username: Emri juaj i përdoruesit do të jetë unik në %{domain}
whole_word: Kur fjalëkyçi ose fraza është vetëm numerike, do të aplikohet vetëm nëse përputhet me krejt fjalën
featured_tag:
diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml
index eac64988f..1c21ac49e 100644
--- a/config/locales/simple_form.sr-Latn.yml
+++ b/config/locales/simple_form.sr-Latn.yml
@@ -8,7 +8,6 @@ sr-Latn:
header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
locked: Zahteva da pojedinačno odobrite pratioce
setting_noindex: Utiče na Vaš javni profil i statusne strane
- setting_theme: Utiče kako će Mastodont izgledati kada ste prijavljeni sa bilo kog uređaja.
imports:
data: CSV fajl izvezen sa druge Mastodont instance
sessions:
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index 7e3c6685e..f7413fd17 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -27,13 +27,11 @@ sr:
phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе
scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне.
setting_aggregate_reblogs: Не показуј нова дељења за трубе које су недавно подељене (утиче само на недавно примљена дељења)
- setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан
setting_display_media_default: Сакриј медије означене као осетљиве
setting_display_media_hide_all: Увек сакриј све медије
setting_display_media_show_all: Увек прикажи медије означене као осетљиве
setting_hide_network: Кога пратите и ко вас прати неће бити приказано на вашем профилу
setting_noindex: Утиче на Ваш јавни профил и статусне стране
- setting_theme: Утиче како ће Мастодонт изгледати када сте пријављени са било ког уређаја.
username: Ваш надимак ће бити јединствен на %{domain}
whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речи
imports:
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index 62d0b3769..e7ed33d0b 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -19,10 +19,8 @@ sv:
locale: Användargränssnittets språk, e-post och push-aviseringar
locked: Kräver att du manuellt godkänner följare
password: Använd minst 8 tecken
- setting_default_language: Språket av dina inlägg kan upptäckas automatiskt, men det är inte alltid rätt
setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida
setting_noindex: Påverkar din offentliga profil och statussidor
- setting_theme: Påverkar hur Mastodon ser ut oavsett från vilken enhet du är inloggad.
imports:
data: CSV-fil som exporteras från en annan Mastodon-instans
sessions:
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index bce5eaac6..5f40b05a7 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -27,14 +27,12 @@ th:
phrase: จะถูกจับคู่โดยไม่คำนึงถึงตัวอักษรใหญ่เล็กในข้อความหรือคำเตือนเนื้อหาของโพสต์
scopes: API ใดที่แอปพลิเคชันจะได้รับอนุญาตให้เข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต
setting_aggregate_reblogs: ไม่แสดงการดันใหม่สำหรับโพสต์ที่เพิ่งดัน (มีผลต่อการดันที่ได้รับใหม่เท่านั้น)
- setting_default_language: สามารถตรวจพบภาษาของโพสต์ของคุณโดยอัตโนมัติ แต่อาจไม่แม่นยำเสมอไป
setting_display_media_default: ซ่อนสื่อที่ถูกทำเครื่องหมายว่าละเอียดอ่อน
setting_display_media_hide_all: ซ่อนสื่อทั้งหมดเสมอ
setting_display_media_show_all: แสดงสื่อที่ถูกทำเครื่องหมายว่าละเอียดอ่อนเสมอ
setting_hide_network: จะไม่แสดงผู้ที่คุณติดตามและผู้ที่ติดตามคุณในโปรไฟล์ของคุณ
setting_noindex: มีผลต่อโปรไฟล์สาธารณะและหน้าสถานะของคุณ
setting_show_application: จะแสดงผลแอปพลิเคชันที่คุณใช้เพื่อโพสต์ในมุมมองโดยละเอียดของโพสต์ของคุณ
- setting_theme: มีผลต่อลักษณะของ Mastodon เมื่อคุณเข้าสู่ระบบจากอุปกรณ์ใด ๆ
username: ชื่อผู้ใช้ของคุณจะไม่ซ้ำกันบน %{domain}
whole_word: เมื่อคำสำคัญหรือวลีมีแค่ตัวอักษรและตัวเลข จะถูกใช้หากตรงกันทั้งคำเท่านั้น
featured_tag:
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index cfa6840a6..eaed42aba 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -11,10 +11,8 @@ zh-CN:
header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
locale: 用户界面、电子邮件和推送通知中使用的语言
locked: 你需要手动审核所有关注请求
- setting_default_language: 嘟文语言自动检测的结果有可能不准确(此设置仅影响你的嘟文)
setting_hide_network: 你关注的人和关注你的人将不会在你的个人资料页上展示
setting_noindex: 此设置会影响到你的公开个人资料以及嘟文页面
- setting_theme: 此设置会影响到所有已登录设备上 Mastodon 的显示样式
imports:
data: 请上传从其他 Mastodon 实例导出的 CSV 文件
sessions:
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index e28f935c2..08dcb4ad0 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -11,10 +11,8 @@ zh-HK:
header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
locale: 使用者介面、電郵和通知的語言
locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」
- setting_default_language: 你文章的語言會被自動偵測,但不一定完全準確
setting_hide_network: 你關注的人和關注你的人將不會在你的個人資料頁上顯示
setting_noindex: 此設定會影響到你的公開個人資料以及文章頁面
- setting_theme: 此設置會影響到你從任意設備登入時 Mastodon 的顯示樣式。
imports:
data: 自其他服務站匯出的 CSV 檔案
sessions:
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 61d07825c..bba868997 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -27,14 +27,12 @@ zh-TW:
phrase: 無論是嘟文的本文或是內容警告都會被過濾
scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。
setting_aggregate_reblogs: 請勿顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文)
- setting_default_language: 您嘟文的語言可被自動偵測,但不一定每次都準確
setting_display_media_default: 隱藏標為敏感的媒體
setting_display_media_hide_all: 總是隱藏所有媒體
setting_display_media_show_all: 總是顯示標為敏感的媒體
setting_hide_network: 你關注的人與關注你的人將不會在你的個人資料頁上顯示
setting_noindex: 會影響您的公開個人資料與嘟文頁面
setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示
- setting_theme: 會影響從任何裝置登入所看到的 Mastodon 樣式。
username: 您的使用者名稱將在 %{domain} 是獨一無二的
whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用
featured_tag:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index d1ff178fd..412f283b8 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -10,19 +10,19 @@ sk:
api: API
apps: Aplikácie
apps_platforms: Uživaj Mastodon z iOSu, Androidu a iných platforiem
- browse_directory: Prehľadávaj databázu profilov a filtruj ju podľa záujmov
+ browse_directory: Prehľadávaj databázu profilov, filtruj podľa záujmov
browse_public_posts: Prebádaj naživo prúd verejných príspevkov na Mastodone
contact: Kontakt
contact_missing: Nezadaný
- contact_unavailable: Neuvedený
+ contact_unavailable: Neuvedený/á
discover_users: Objavuj užívateľov
documentation: Dokumentácia
extended_description_html: |
Pravidlá
Žiadne zatiaľ uvedené nie sú
- federation_hint_html: S účtom na %{instance} budeš môcť následovať ľúdí na hociakom inom Mastodon serveri, ale aj inde.
+ federation_hint_html: S účtom na %{instance} budeš môcť následovať ľúdí na hociakom Mastodon serveri, ale aj inde.
generic_description: "%{domain} je jeden server v sieti"
- get_apps: Vyskúšaj mobilnú aplikáciu
+ get_apps: Vyskúšaj aplikácie
hosted_on: Mastodon hostovaný na %{domain}
learn_more: Zisti viac
privacy_policy: Ustanovenia o súkromí
@@ -32,24 +32,24 @@ sk:
status_count_after:
few: príspevkov
one: príspevok
- other: príspevkov
+ other: príspevky
status_count_before: Ktorí napísali
tagline: Následuj kamarátov, a objavuj nových
terms: Podmienky užívania
user_count_after:
- few: užívatelia
+ few: užívateľov
one: užívateľ
- other: užívateľov
+ other: užívatelia
user_count_before: Domov pre
what_is_mastodon: Čo je Mastodon?
accounts:
choices_html: "%{name}vé voľby:"
- follow: Sleduj
+ follow: Následuj
followers:
- few: Sledovatelia
- one: Sledujúci
+ few: Sledovateľov
+ one: Sledovateľ
other: Sledovatelia
- following: Sledovaní
+ following: Následujem
joined: Pridal/a sa v %{date}
last_active: naposledy aktívny
link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date}
@@ -67,11 +67,12 @@ sk:
other: Príspevky
posts_tab_heading: Príspevky
posts_with_replies: Príspevky s odpoveďami
- reserved_username: Prihlasovacie meno je rezervované
+ reserved_username: Prihlasovacie meno je vyhradené
roles:
- admin: Administrátor
- bot: Automat
+ admin: Správca
+ bot: Bot
moderator: Moderátor
+ unavailable: Profil nieje dostupný
unfollow: Prestaň sledovať
admin:
account_actions:
@@ -84,12 +85,13 @@ sk:
destroyed_msg: Moderátorska poznámka bola úspešne zmazaná!
accounts:
approve: Schváľ
+ approve_all: Schváľ všetky
are_you_sure: Si si istý/á?
avatar: Maskot
by_domain: Doména
change_email:
- changed_msg: Email k tomuto účtu bol úspešne zmenený!
- current_email: Súčastný email
+ changed_msg: Email pre tento účet bol úspešne zmenený!
+ current_email: Súčasný email
label: Zmeň email
new_email: Nový email
submit: Zmeň email
@@ -97,37 +99,37 @@ sk:
confirm: Potvrď
confirmed: Potvrdený
confirming: Potvrdzujúci
- deleted: Zmazané
- demote: Degradovať
+ deleted: Vymazané
+ demote: Degraduj
disable: Zablokuj
disable_two_factor_authentication: Zakáž 2FA
disabled: Blokovaný
- display_name: Zobraziť meno
+ display_name: Ukáž meno
domain: Doména
edit: Uprav
email: Email
email_status: Stav emailu
- enable: Povoliť
+ enable: Povoľ
enabled: Povolený
- feed_url: URL časovej osi
+ feed_url: URL adresa časovej osi
followers: Sledujúci
- followers_url: URL sledujúcich
+ followers_url: URL adresa sledujúcich
follows: Sledovania
- header: Hlavička
- inbox_url: URL prijatých správ
+ header: Záhlavie
+ inbox_url: URL adresa prijatých správ
invited_by: Pozvaný/á užívateľom
- ip: IP
+ ip: IP adresa
joined: Pridal/a sa
location:
all: Všetko
local: Miestne
remote: Federované
- title: Lokácia
+ title: Umiestnenie
login_status: Stav prihlásenia
media_attachments: Prílohy
- memorialize: Zmeniť na "Navždy budeme spomínať"
+ memorialize: Zmeň na "Navždy budeme spomínať"
moderation:
- active: Aktívny
+ active: Aktívny/a
all: Všetko
pending: Čakajúci
silenced: Umlčané
@@ -135,21 +137,23 @@ sk:
title: Moderácia
moderation_notes: Moderátorské poznámky
most_recent_activity: Posledná aktivita
- most_recent_ip: Posledná IP
+ most_recent_ip: Posledná IP adresa
+ no_account_selected: Nedošlo k žiadnému pozmeneniu účtov, keďže žiadne neboli vybrané
no_limits_imposed: Nie sú stanovené žiadné obmedzenia
not_subscribed: Neodoberá
outbox_url: URL poslaných
pending: Vyžaduje posúdenie
perform_full_suspension: Vylúč
- profile_url: URL profilu
- promote: Povýš
+ profile_url: URL adresa profilu
+ promote: Vyzdvihni
protocol: Protokol
- public: Verejná os
+ public: Verejná časová os
push_subscription_expires: PuSH odoberanie expiruje
redownload: Obnov profil
- reject: Odmietni
- remove_avatar: Odstrániť avatár
- remove_header: Odstráň hlavičku
+ reject: Zamietni
+ reject_all: Zamietni všetky
+ remove_avatar: Vymaž avatar
+ remove_header: Vymaž záhlavie
resend_confirmation:
already_confirmed: Tento užívateľ je už potvrdený
send: Odošli potvrdzovací email znovu
@@ -159,28 +163,28 @@ sk:
resubscribe: Znovu odoberaj
role: Oprávnenia
roles:
- admin: Administrátor
+ admin: Správca
moderator: Moderátor
staff: Člen
user: Užívateľ
salmon_url: Salmon adresa
- search: Hľadať
+ search: Hľadaj
shared_inbox_url: URL zdieľanej schránky
show:
created_reports: Vytvorené hlásenia
targeted_reports: Nahlásenia od ostatných
silence: Stíš
- silenced: Utíšený/é
+ silenced: Stíšený/é
statuses: Príspevky
- subscribe: Odoberať
- suspended: Zablokovaní
+ subscribe: Odoberaj
+ suspended: Vylúčený/á
title: Účty
unconfirmed_email: Nepotvrdený email
- undo_silenced: Zrušiť stíšenie
+ undo_silenced: Zruš stíšenie
undo_suspension: Zruš blokovanie
unsubscribe: Prestaň odoberať
username: Prezývka
- warn: Varovať
+ warn: Varuj
web: Web
action_logs:
actions:
@@ -210,7 +214,7 @@ sk:
silence_account: "%{name} utíšil/a účet %{target}"
suspend_account: "%{name} zablokoval/a účet používateľa %{target}"
unassigned_report: "%{name} odobral/a report od %{target}"
- unsilence_account: "%{name} zrušil/a utíšenie účtu používateľa %{target}"
+ unsilence_account: "%{name} zrušil/a stíšenie účtu používateľa %{target}"
unsuspend_account: "%{name} zrušil/a blokovanie účtu používateľa %{target}"
update_custom_emoji: "%{name} aktualizoval/a emoji %{target}"
update_status: "%{name} aktualizoval/a status pre %{target}"
@@ -227,7 +231,7 @@ sk:
disable: Zakázať
disabled_msg: Emoji bolo úspešne zakázané
emoji: Emotikony
- enable: Povoliť
+ enable: Povoľ
enabled_msg: Emoji bolo úspešne povolené
image_hint: PNG do 50KB
listed: V zozname
@@ -240,7 +244,7 @@ sk:
unlisted: Nie je na zozname
update_failed_msg: Nebolo možné aktualizovať toto emoji
updated_msg: Emoji bolo úspešne aktualizované!
- upload: Nahrať
+ upload: Nahraj
dashboard:
backlog: odložené aktivity
config: Nastavenia
@@ -249,10 +253,11 @@ sk:
feature_profile_directory: Katalóg profilov
feature_registrations: Registrácie
feature_relay: Federovací mostík
+ feature_timeline_preview: Náhľad časovej osi
features: Vymoženosti
hidden_service: Federácia so skrytými službami
open_reports: otvorené hlásenia
- recent_users: Nedávny užívatelia
+ recent_users: Nedávni užívatelia
search: Celofrázové vyhľadávanie
single_user_mode: Jednouživateľské rozhranie
software: Softvér
@@ -264,10 +269,11 @@ sk:
week_users_active: aktívni tento týždeň
week_users_new: užívateľov počas tohto týždňa
domain_blocks:
- add_new: Pridaj nové doménové blokovanie
- created_msg: Doména je v procese blokovania
+ add_new: Blokuj novú doménu
+ created_msg: Doména je v štádiu blokovania
destroyed_msg: Blokovanie domény bolo zrušené
domain: Doména
+ existing_domain_block_html: Pre účet %{name} si už nahodil/a přísnejšie obmedzenie, najskôr ho teda musíš odblokovať.
new:
create: Vytvor blokovanie domény
hint: Blokovanie domény stále dovolí vytvárať nové účty v databázi, ale tieto budú spätne automaticky moderované.
@@ -282,25 +288,25 @@ sk:
reject_reports: Zamietni hlásenia
reject_reports_hint: Ignoruj všetky hlásenia prichádzajúce z tejto domény. Nevplýva na blokovania
rejecting_media: odmietanie médiálnych súborov
- rejecting_reports: odmietané hlásenia
+ rejecting_reports: odmietanie hlásení
severity:
- silence: utíšené
- suspend: vylúčený
+ silence: stíšené
+ suspend: vylúčené
show:
affected_accounts:
- few: "%{count} účty v databáze ovplyvnených"
- one: Jeden účet v databáze bol ovplyvnený
- other: "%{count} účtov v databáze bolo ovplyvnených"
+ few: Je ovplyvnených %{count} účtov v databázi
+ one: Jeden účet v databázi bol ovplyvnený
+ other: "%{count} účty v databáze boli ovplyvnené"
retroactive:
- silence: Zruš stíšenie všetkých existujúcich účtov z tejto domény
- suspend: Zruš suspendáciu všetkých existujúcich účtov z tejto domény
+ silence: Zruš stíšenie všetkých momentálne utíšených účtov z tejto domény
+ suspend: Zruš suspendáciu všetkých momentálne ovplyvnených účtov z tejto domény
title: Zruš blokovanie domény %{domain}
- undo: Vrátiť späť
+ undo: Vráť späť
undo: Odvolaj blokovanie domény
email_domain_blocks:
add_new: Pridaj nový
created_msg: Emailová doména bola úspešne pridaná do zoznamu zakázaných
- delete: Zmazať
+ delete: Vymaž
destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných
domain: Doména
new:
@@ -309,12 +315,12 @@ sk:
title: Blokované emailové adresy
followers:
back_to_account: Späť na účet
- title: Následovatielia užívateľa %{acct}
+ title: Sledovatielia užívateľa %{acct}
instances:
by_domain: Doména
delivery_available: Je v dosahu doručovania
known_accounts:
- few: "%{count} známe účty"
+ few: "%{count} známych účtov"
one: "%{count} známy účet"
other: "%{count} známe účty"
moderation:
@@ -328,25 +334,27 @@ sk:
total_reported: Nahlásenia o nich
total_storage: Mediálne prílohy
invites:
- deactivate_all: Pozastaviť všetky
+ deactivate_all: Pozastav všetky
filter:
all: Všetky
available: Dostupné
expired: Vypršalo
- title: Filtrovať
+ title: Filtruj
title: Pozvánky
+ pending_accounts:
+ title: Čakajúcich účtov (%{count})
relays:
- add_new: Pridaj novú priechodnú oporu
+ add_new: Pridaj nový federovací mostík
delete: Vymaž
- description_html: "Federovací mostík je prechodný server ktorý obmieňa veľké množstvá verejných príspevkov medzi tými servermi ktoré na od neho odoberajú, aj doňho prispievajú. Môže to pomôcť malým a stredným instanciám objavovať federovaný obsah, čo inak vyžaduje aby miestni užívatelia ručne následovali iných ľudí zo vzdialených instancií."
- disable: Pozastav
- disabled: Zastavené
+ description_html: "Federovací mostík je prechodný server, ktorý obmieňa veľké množstvá verejných príspevkov medzi tými servermi ktoré na od neho odoberajú, aj doňho prispievajú. Môže to pomôcť malým a stredným instanciám objavovať federovaný obsah, čo inak vyžaduje aby miestni užívatelia ručne následovali iných ľudí zo vzdialených instancií."
+ disable: Vypni
+ disabled: Vypnutý
enable: Povoľ
enable_hint: Ak povolíš, tvoj server bude odoberať všetky verejné príspevky z tohto mostu, a začne posielať verejné príspevky tvojho servera na tento most.
enabled: Povolené
- inbox_url: URL mostu
- pending: Čakám na povolenie od prechodného mostu
- save_and_enable: Uložiť a povoliť
+ inbox_url: URL adresa mostu
+ pending: Čaká sa na povolenie od prechodného mostu
+ save_and_enable: Ulož a povoľ
setup: Nastav prepojenie s mostom
status: Stav
title: Mosty
@@ -359,7 +367,7 @@ sk:
report: nahlás
action_taken_by: Zákrok vykonal/a
are_you_sure: Si si istý/á?
- assign_to_self: Priraď k sebe
+ assign_to_self: Priraď sebe
assigned: Priradený moderátor
comment:
none: Žiadne
@@ -379,48 +387,48 @@ sk:
resolved: Vyriešené
resolved_msg: Hlásenie úspešne vyriešené!
status: Stav
- title: Reporty
+ title: Hlásenia
unassign: Odobrať
unresolved: Nevyriešené
updated_at: Aktualizované
settings:
activity_api_enabled:
- desc_html: Sčítanie lokálne publikovaných príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch
+ desc_html: Sčítanie miestne uverejnených príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch
title: Vydať hromadné štatistiky o užívateľskej aktivite
bootstrap_timeline_accounts:
- desc_html: Ak je prezývok viacero, každú oddeľte čiarkou. Možno zadať iba miestne, odomknuté účty. Pokiaľ necháte prázdne, je to pre všetkých miestnych administrátorov.
+ desc_html: Ak je prezývok viacero, každú oddeľ čiarkou. Je možné zadať iba miestne, odomknuté účty. Pokiaľ necháš prázdne, je to pre všetkých miestnych správcov.
title: Štandardní následovníci nových užívateľov
contact_information:
- email: Pracovný e-mail
+ email: Pracovný email
username: Kontaktné užívateľské meno
custom_css:
desc_html: Uprav vzhľad pomocou CSS, ktoré je načítané na každej stránke
title: Vlastné CSS
hero:
- desc_html: Zobrazuje sa na hlavnej stránke. Doporučuje sa rozlišenie aspoň 600x100px Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru
+ desc_html: Zobrazuje sa na hlavnej stránke. Doporučené je rozlišenie aspoň 600x100px. Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru.
title: Obrázok hrdinu
mascot:
- desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot
+ desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot.
title: Obrázok maskota
peers_api_enabled:
- desc_html: Domény, na ktoré tento server už v rámci fediverse natrafil
+ desc_html: Domény, na ktoré tento server už v rámci fediversa natrafil
title: Zverejni zoznam objavených serverov
preview_sensitive_media:
- desc_html: Náhľad odkazov z iných serverov, bude zobrazený aj vtedy, keď sú médiá označené ako senzitívne
+ desc_html: Náhľad odkazov z iných serverov, bude zobrazený aj vtedy, keď sú médiá označené ako citlivé
title: Ukazuj aj chúlostivé médiá v náhľadoch OpenGraph
profile_directory:
desc_html: Povoľ užívateľom, aby mohli byť nájdení
title: Zapni profilový katalóg
registrations:
closed_message:
- desc_html: Toto sa zobrazí na hlavnej stránke v prípade že sú registrácie uzavreté. Možno tu použiť aj HTML kód
+ desc_html: Toto sa zobrazí na hlavnej stránke v prípade, že sú registrácie uzavreté. Možno tu použiť aj HTML kód
title: Správa o uzavretých registráciách
deletion:
- desc_html: Dovoľiť každému aby si mohli zmazať svok účet
- title: Sprístupniť možnosť vymazať si účet
+ desc_html: Dovoľ každému aby si mohli zmazať svok účet
+ title: Sprístupni možnosť vymazať si účet
min_invite_role:
disabled: Nikto
- title: Povoliť pozvánky od
+ title: Povoľ pozvánky od
registrations_mode:
modes:
approved: Pre registráciu je nutné povolenie
@@ -428,11 +436,11 @@ sk:
open: Ktokoľvek sa môže zaregistrovať
title: Režím registrácií
show_known_fediverse_at_about_page:
- desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi.
+ desc_html: Ak je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi.
title: Ukáž celé známe fediverse na náhľade osi
show_staff_badge:
- desc_html: Zobraz moderátorsky odznak na užívateľovom profile
- title: Zobraz značku moderátora
+ desc_html: Ukáž moderátorsky odznak na užívateľovom profile
+ title: Ukáž značku moderátora
site_description:
desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a> a <em>.
title: Popis servera
@@ -456,7 +464,7 @@ sk:
statuses:
back_to_account: Späť na účet
batch:
- delete: Vymazať
+ delete: Vymaž
nsfw_off: Označ ako nechúlostivé
nsfw_on: Označ ako chúlostivé
failed_to_execute: Nepodarilo sa vykonať
@@ -508,12 +516,13 @@ sk:
invalid_url: Zadaná URL adresa je nesprávna
regenerate_token: Znovu vygenerovať prístupový token
token_regenerated: Prístupový token bol úspešne vygenerovaný znova
- warning: Na tieto údaje dávajte ohromný pozor. Nikdy ich s nikým nezďieľajte!
- your_token: Váš prístupový token
+ warning: Na tieto údaje dávaj ohromný pozor. Nikdy ich s nikým nezďieľaj!
+ your_token: Tvoj prístupový token
auth:
- agreement_html: V rámci registrácie súhlasíš, že sa budeš riadiť pravidlami tohto servera, a taktiež našími prevádzkovými podmienkami.
+ apply_for_account: Vyžiadaj si pozvánku
change_password: Heslo
- confirm_email: Potvrdiť email
+ checkbox_agreement_html: Súhlasím s pravidlami servera, aj s prevoznými podmienkami
+ confirm_email: Potvrď email
delete_account: Vymaž účet
delete_account_html: Pokiaľ chceš svoj účet odtiaľto vymazať, môžeš tak urobiť tu. Budeš požiadaný/á o potvrdenie tohto kroku.
didnt_get_confirmation: Neobdržal/a si kroky na potvrdenie?
@@ -522,16 +531,17 @@ sk:
login: Prihlás sa
logout: Odhlás sa
migrate_account: Presúvam sa na iný účet
- migrate_account_html: Pokiaľ si želáš presmerovať tento účet na nejaký iný, môžeš si to nastaviť tu.
- or_log_in_with: Alebo prihlásiť z
+ migrate_account_html: Ak si želáš presmerovať tento účet na nejaký iný, môžeš si to nastaviť tu.
+ or_log_in_with: Alebo prihlás s
providers:
cas: CAS
saml: SAML
register: Zaregistruj sa
- resend_confirmation: Poslať potvrdzujúce pokyny znovu
- reset_password: Resetovať heslo
+ resend_confirmation: Zašli potvrdzujúce pokyny znovu
+ reset_password: Obnov heslo
security: Zabezpečenie
- set_new_password: Nastaviť nové heslo
+ set_new_password: Nastav nové heslo
+ trouble_logging_in: Problém s prihlásením?
authorize_follow:
already_following: Tento účet už následuješ
error: Naneštastie nastala chyba pri hľadaní vzdialeného účtu
@@ -637,10 +647,10 @@ sk:
other: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} nižšie uvedené pochybenia
imports:
modes:
- merge: Spojiť dohromady
+ merge: Spoj dohromady
merge_long: Ponechaj existujúce záznamy a pridaj k nim nové
overwrite: Prepíš
- overwrite_long: Nahraď súčasné záznamy s novými
+ overwrite_long: Nahraď súčasné záznamy novými
preface: Môžeš nahrať dáta ktoré si exportoval/a z iného Mastodon serveru, ako sú napríklad zoznamy ľudí ktorých sleduješ, alebo blokuješ.
success: Tvoje dáta boli nahraté úspešne, a teraz budú spracované v danom čase
types:
@@ -648,10 +658,10 @@ sk:
domain_blocking: Zoznam blokovaných domén
following: Zoznam sledovaných
muting: Zoznam ignorovaných
- upload: Nahrať
+ upload: Nahraj
in_memoriam_html: V pamäti.
invites:
- delete: Deaktivovať
+ delete: Deaktivuj
expired: Neplatné
expires_in:
'1800': 30 minút
@@ -662,13 +672,13 @@ sk:
'86400': 1 deň
expires_in_prompt: Nikdy
generate: Vygeneruj
- invited_by: 'Bol/a si pozvan/á užívateľom:'
+ invited_by: 'Bol/a si pozvaný/á užívateľom:'
max_uses:
few: "%{count} použitia"
one: jedno použitie
other: "%{count} použití"
- max_uses_prompt: Bez limitov
- prompt: Vygeneruj a zdieľaj linky s ostatnými aby mali umožnený prístup k tomuto serveru
+ max_uses_prompt: Bez obmedzení
+ prompt: Vygeneruj a zdieľaj linky s ostatnými, aby mali umožnený prístup k tomuto serveru
table:
expires_at: Vyprší
uses: Používa
@@ -693,16 +703,16 @@ sk:
body: Tu nájdete krátky súhrn správ ktoré ste zmeškali od svojej poslednj návštevi od %{since}
mention: "%{name} ťa spomenul/a v:"
new_followers_summary:
- few: Taktiež, získal/a si %{count} nových následovníkov za tú dobu čo si bol/a preč. Yay!
- one: Taktiež, získal/a si jedného nového následovníka zatiaľ čo si bol/a preč. Yay!
- other: Taktiež, získal/a si %{count} nových následovníkov za tú dobu čo si bol/a preč. Yay!
+ few: Tiež si získal/a %{count} nových následovateľov za tú dobu čo si bol/a preč. Yay!
+ one: Tiež si získal/a jedného nového následovateľa zatiaľ čo si bol/a preč. Yay!
+ other: Tiež si získal/a %{count} nových následovateľov za tú dobu čo si bol/a preč. Yay!
subject:
few: "%{count} nové notifikácie od tvojej poslednej návštevy \U0001F418"
- one: "1 nová notifikácia od tvojej poslednej návštevy \U0001F418"
- other: "%{count} nových notifikácií od tvojej poslednej návštevy \U0001F418"
+ one: "1 nové oboznámenie od tvojej poslednej návštevy \U0001F418"
+ other: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418"
title: Zatiaľ čo si bol/a preč…
favourite:
- body: 'Tvoj príspevok bol uložený medi obľúbené užívateľa %{name}:'
+ body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:'
subject: "%{name} si obľúbil/a tvoj príspevok"
title: Nové obľúbené
follow:
@@ -713,16 +723,16 @@ sk:
action: Spravuj žiadosti o sledovanie
body: "%{name} žiada povolenie ťa následovať"
subject: "%{name} ťa žiadá o možnosť sledovania"
- title: Nová žiadosť o sledovanie
+ title: Nová žiadosť o následovanie
mention:
action: Odpovedať
body: "%{name} ťa spomenul/a v:"
subject: Bol/a si spomenutý/á užívateľom %{name}
title: Novo spomenutý/á
reblog:
- body: 'Tvoj príspevok bol pozdvihnutý užívateľom %{name}:'
- subject: "%{name} pozdvihli tvoj príspevok"
- title: Novo pozdvyhnuté
+ body: 'Tvoj príspevok bol vyzdvihnutý užívateľom %{name}:'
+ subject: "%{name} vyzdvihli tvoj príspevok"
+ title: Novo vyzdvyhnuté
number:
human:
decimal_units:
@@ -750,10 +760,7 @@ sk:
too_few_options: musí mať viac ako jednu položku
too_many_options: nemôže zahŕňať viac ako %{max} položiek
preferences:
- languages: Jazyky
other: Ostatné
- publishing: Publikovanie
- web: Web
remote_follow:
acct: Napíš svoju prezývku@doménu z ktorej chceš následovať
missing_resource: Nemožno nájsť potrebnú presmerovaciu adresu k tvojmu účtu
@@ -821,20 +828,24 @@ sk:
revoke_success: Sezóna úspešne zamietnutá
title: Sezóny
settings:
+ account: Účet
+ account_settings: Nastavenia účtu
+ appearance: Vzhľad
authorized_apps: Povolené aplikácie
back: Späť na Mastodon
delete: Vymazanie účtu
development: Vývoj
edit_profile: Uprav profil
- export: Exportovať dáta
- featured_tags: Popredne zvýraznené haštagy
- import: Importovať
- migrate: Presunutie účtu
- notifications: Oznámenia
+ export: Exportuj dáta
+ featured_tags: Zvýraznené haštagy
+ import: Importuj
+ import_and_export: Import a export
+ migrate: Presuň účet
+ notifications: Oboznámenia
preferences: Voľby
- settings: Nastavenia
+ profile: Profil
+ relationships: Následovaní a následovatelia
two_factor_authentication: Dvoj-faktorové overenie
- your_apps: Tvoje aplikácie
statuses:
attached:
description: 'Priložené: %{attached}'
@@ -849,9 +860,9 @@ sk:
boosted_from_html: Povýšené od %{acct_link}
content_warning: 'Varovanie o obsahu: %{warning}'
disallowed_hashtags:
- few: 'obsahoval nepovolené hashtagy: %{tags}'
- one: 'obsahoval nepovolený hashtag: %{tags}'
- other: 'obsahoval nepovolené hashtagy: %{tags}'
+ few: 'obsahoval nepovolené haštagy: %{tags}'
+ one: 'obsahoval nepovolený haštag: %{tags}'
+ other: 'obsahoval nepovolené haštagy: %{tags}'
language_detection: Zisti automaticky
open_in_web: Otvor v okne na webe
over_character_limit: limit %{max} znakov bol presiahnutý
@@ -859,7 +870,7 @@ sk:
limit: Už si si pripol ten najvyšší možný počet hlášok
ownership: Nieje možné pripnúť hlášku od niekoho iného
private: Neverejné príspevky nemôžu byť pripnuté
- reblog: Pozdvihnutie sa nedá pripnúť
+ reblog: Vyzdvihnutie sa nedá pripnúť
poll:
total_votes:
few: "%{count} hlas(y)ov"
@@ -877,14 +888,14 @@ sk:
unlisted: Nezaradené
unlisted_long: Všetci môžu vidieť, ale nieje zaradené do verejnej osi
stream_entries:
- pinned: Pripnutý toot
+ pinned: Pripnutý príspevok
reblogged: vyzdvihnutý
sensitive_content: Senzitívny obsah
terms:
body_html: |
Podmienky súkromia
- Aké informácie zbierame?
+ Aké informácie sú zbierané?
- Základné informácie o účte: Ak sa na tomto serveri zaregistruješ, budeš môcť byť požiadaný/á zadať prezývku, emailovú adresu a heslo. Budeš tiež môcť zadať aj ďalšie profilové údaje, ako napríklad meno a životopis, a nahrať profilovú fotku aj obrázok v záhlaví. Tvoja prezývka, meno, životopis, profilová fotka a obrázok v záhlaví sú vždy zobrazené verejne.
- Príspevky, sledovania a iné verejné informácie:
@@ -976,7 +987,7 @@ sk:
invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu
otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné.
- signed_in_as: 'Prihlásený ako:'
+ signed_in_as: 'Prihlásená/ý ako:'
verification:
- explanation_html: 'Môžeš sa overiť ako majiteľ odkazov v metadátach tvojho profilu. Na to musí ale odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz musí mať prívlastok
rel="me". Na texte odkazu nezáleží. Tu je príklad:'
+ explanation_html: 'Môžeš sa overiť ako majiteľ odkazov v metadátach tvojho profilu. Na to ale musí odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz musí mať prívlastok rel="me". Na texte odkazu nezáleží. Tu je príklad:'
verification: Overenie
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index f02c994eb..ea3a23834 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -479,7 +479,6 @@ sq:
warning: Hapni sytë me ato të dhëna. Mos ia jepni kurrë njeriu!
your_token: Token-i juaj për hyrje
auth:
- agreement_html: Duke klikuar mbi "Regjistrohuni" më poshtë, pajtoheni të ndiqni rregullat e shërbyesit dhe kushtet tona të shërbimit.
change_password: Fjalëkalim
confirm_email: Ripohoni email-in
delete_account: Fshije llogarinë
@@ -703,10 +702,7 @@ sq:
prev: I mëparshmi
truncate: "…"
preferences:
- languages: Gjuhë
other: Tjetër
- publishing: Publikim
- web: Web
remote_follow:
acct: Jepni çiftin tuaj emërpërdoruesi@përkatësi prej të cilit doni që të veprohet
missing_resource: S’u gjet dot URL-ja e domosdoshme e ridrejtimit për llogarinë tuaj
@@ -785,9 +781,7 @@ sq:
migrate: Migrim llogarie
notifications: Njoftime
preferences: Parapëlqime
- settings: Rregullime
two_factor_authentication: Mirëfilltësim Dyfaktorësh
- your_apps: Aplikacionet tuaja
statuses:
attached:
description: 'Bashkëngjitur: %{attached}'
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index a2d57ce29..3bbb79592 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -302,7 +302,6 @@ sr-Latn:
warning: Oprezno sa ovim podacima. Nikad je ne delite ni sa kim!
your_token: Vaš pristupni token
auth:
- agreement_html: Pristupanjem instanci se slažete sa pravilima instance i uslovima korišćenja.
delete_account: Obriši nalog
delete_account_html: Ako želite da obrišete Vaš nalog, možete nastaviti ovde. Bićete upitani da potvrdite.
didnt_get_confirmation: Niste dobili poruku sa uputstvima za potvrdu naloga?
@@ -465,10 +464,7 @@ sr-Latn:
prev: Prethodni
truncate: "…"
preferences:
- languages: Jezici
other: Ostali
- publishing: Objavljivanje
- web: Veb
remote_follow:
acct: Unesite Vaš korisnik@domen sa koga želite da pratite
missing_resource: Ne mogu da nađem zahtevanu adresu preusmeravanja za Vaš nalog
@@ -524,9 +520,7 @@ sr-Latn:
migrate: Prebacivanje naloga
notifications: Obaveštenja
preferences: Podešavanja
- settings: Postavke
two_factor_authentication: Dvofaktorska identifikacija
- your_apps: Vaše aplikacije
statuses:
open_in_web: Otvori u vebu
over_character_limit: ograničenje od %{max} karaktera prekoračeno
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 45a59bcb1..8c94b0989 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -492,7 +492,6 @@ sr:
warning: Опрезно са овим подацима. Никад је не делите ни са ким!
your_token: Ваш приступни токен
auth:
- agreement_html: Приступањем инстанци се слажете са правилима инстанце и условима коришћења.
change_password: Лозинка
confirm_email: Потврдите адресу е-поште
delete_account: Обриши налог
@@ -715,10 +714,7 @@ sr:
prev: Претходни
truncate: "…"
preferences:
- languages: Језици
other: Остало
- publishing: Објављивање
- web: Веб
remote_follow:
acct: Унесите Ваш корисник@домен са кога желите да пратите
missing_resource: Не могу да нађем захтевану адресу преусмеравања за Ваш налог
@@ -793,9 +789,7 @@ sr:
migrate: Пребацивање налога
notifications: Обавештења
preferences: Подешавања
- settings: Поставке
two_factor_authentication: Двофакторска идентификација
- your_apps: Ваше апликације
statuses:
attached:
description: 'У прилогу: %{attached}'
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index b0c04329a..c235fc889 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -354,7 +354,6 @@ sv:
warning: Var mycket försiktig med denna data. Dela aldrig den med någon!
your_token: Din access token
auth:
- agreement_html: Genom att registrera dig godkänner du att följa instansens regler och våra användarvillkor.
change_password: Lösenord
confirm_email: Bekräfta e-postadress
delete_account: Ta bort konto
@@ -536,10 +535,7 @@ sv:
prev: Tidigare
truncate: "…"
preferences:
- languages: Språk
other: Annat
- publishing: Publicering
- web: Webb
remote_follow:
acct: Ange ditt användarnamn@domän du vill följa från
missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto
@@ -601,9 +597,7 @@ sv:
migrate: Kontoflytt
notifications: Meddelanden
preferences: Inställningar
- settings: Inställningar
two_factor_authentication: Tvåstegsautentisering
- your_apps: Dina applikationer
statuses:
attached:
description: 'Bifogad: %{attached}'
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 729865c83..29199889a 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -543,10 +543,7 @@ th:
prev: ก่อนหน้า
truncate: "…"
preferences:
- languages: ภาษา
other: อื่น ๆ
- publishing: การเผยแพร่
- web: เว็บ
relationships:
activity: กิจกรรมบัญชี
relationship: ความสัมพันธ์
@@ -590,9 +587,7 @@ th:
notifications: การแจ้งเตือน
preferences: การกำหนดลักษณะ
relationships: การติดตามและผู้ติดตาม
- settings: การตั้งค่า
two_factor_authentication: การรับรองความถูกต้องด้วยสองปัจจัย
- your_apps: แอปพลิเคชันของคุณ
statuses:
attached:
description: 'แนบ: %{attached}'
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 14e7f34df..e3e27e3ef 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -347,7 +347,6 @@ tr:
export: Dışa aktar
import: İçe aktar
preferences: Tercihler
- settings: Ayarlar
two_factor_authentication: İki-faktörlü doğrulama
statuses:
open_in_web: Web sayfasında aç
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index e72e2f461..7b7153f21 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -386,7 +386,6 @@ uk:
warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким!
your_token: Ваш токен доступу
auth:
- agreement_html: Реєструючись, ви погоджуєтеся виконувати правила інстанції та наші умови використання.
change_password: Пароль
confirm_email: Підтвердьте e-mail адресу
delete_account: Видалити аккаунт
@@ -583,10 +582,7 @@ uk:
prev: Назад
truncate: "…"
preferences:
- languages: Мови
other: Інше
- publishing: Публікація
- web: Веб
remote_follow:
acct: Введіть username@domain, яким ви хочете підписатися
missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився невдачею
@@ -649,9 +645,7 @@ uk:
migrate: Міграція акаунту
notifications: Сповіщення
preferences: Налаштування
- settings: Опції
two_factor_authentication: Двофакторна авторизація
- your_apps: Ваші затосунки
statuses:
attached:
description: 'Прикріплено: %{attached}'
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index bfacc86fc..3b0bc6caf 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -410,7 +410,6 @@ zh-CN:
warning: 一定小心,千万不要把它分享给任何人!
your_token: 你的访问令牌
auth:
- agreement_html: 点击注册即表示你同意遵守本站的相关规定和我们的使用条款。
change_password: 密码
confirm_email: 确认电子邮件地址
delete_account: 删除帐户
@@ -605,10 +604,7 @@ zh-CN:
prev: 上一页
truncate: "…"
preferences:
- languages: 语言
other: 其他
- publishing: 发布
- web: 站内
remote_follow:
acct: 请输入你的“用户名@实例域名”
missing_resource: 无法确定你的帐户的跳转 URL
@@ -671,9 +667,7 @@ zh-CN:
migrate: 帐户迁移
notifications: 通知
preferences: 首选项
- settings: 设置
two_factor_authentication: 双重认证
- your_apps: 你的应用
statuses:
attached:
description: 附加媒体:%{attached}
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 7b200e91a..fa6af4d61 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -352,7 +352,6 @@ zh-HK:
warning: 警告,不要把它分享給任何人!
your_token: token
auth:
- agreement_html: 登記即表示你同意遵守本服務站的規則和使用條款。
change_password: 密碼
confirm_email: 確認電郵
delete_account: 刪除帳戶
@@ -533,10 +532,7 @@ zh-HK:
prev: 上一頁
truncate: "……"
preferences:
- languages: 語言
other: 其他
- publishing: 發佈
- web: 站内
remote_follow:
acct: 請輸入你的︰用戶名稱@服務點域名
missing_resource: 無法找到你用戶的轉接網址
@@ -598,9 +594,7 @@ zh-HK:
migrate: 帳戶遷移
notifications: 通知
preferences: 偏好設定
- settings: 設定
two_factor_authentication: 雙重認證
- your_apps: 你的應用程式
statuses:
attached:
description: 附件: %{attached}
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 913442e17..3dd122f8a 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -436,7 +436,6 @@ zh-TW:
warning: 警告,不要把它分享給任何人!
your_token: 你的 token
auth:
- agreement_html: 按下下方的「註冊」即代表同意遵守 此伺服器的規則 以及 使用條款。
change_password: 密碼
confirm_email: 確認電子信箱位址
delete_account: 刪除帳戶
@@ -610,10 +609,7 @@ zh-TW:
prev: 上一頁
truncate: ''
preferences:
- languages: 語言
other: 其他
- publishing: 發佈
- web: 站內
remote_follow:
acct: 請輸入您的使用者名稱@站點網域
missing_resource: 無法找到資源
@@ -667,9 +663,7 @@ zh-TW:
migrate: 帳戶搬遷
notifications: 通知
preferences: 偏好設定
- settings: 設定
two_factor_authentication: 兩階段認證
- your_apps: 你的應用程式
statuses:
attached:
description: 附件: %{attached}
diff --git a/config/navigation.rb b/config/navigation.rb
index a6b2b6e4c..df1024189 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -1,50 +1,58 @@
# frozen_string_literal: true
SimpleNavigation::Configuration.run do |navigation|
- navigation.items do |primary|
- primary.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_url
+ navigation.items do |n|
+ n.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_url
- primary.item :settings, safe_join([fa_icon('cog fw'), t('settings.settings')]), settings_profile_url do |settings|
- settings.item :profile, safe_join([fa_icon('user fw'), t('settings.edit_profile')]), settings_profile_url, highlights_on: %r{/settings/profile|/settings/migration}
- settings.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_url
- settings.item :preferences, safe_join([fa_icon('sliders fw'), t('settings.preferences')]), settings_preferences_url
- settings.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_notifications_url
- settings.item :password, safe_join([fa_icon('lock fw'), t('auth.security')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete}
- settings.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_url, highlights_on: %r{/settings/two_factor_authentication}
- settings.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url
- settings.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
- settings.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url
- settings.item :identity_proofs, safe_join([fa_icon('key fw'), t('settings.identity_proofs')]), settings_identity_proofs_path, highlights_on: %r{/settings/identity_proofs*}, if: proc { current_account.identity_proofs.exists? }
+ n.item :profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_url do |s|
+ s.item :profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_url, highlights_on: %r{/settings/profile|/settings/migration}
+ s.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_url
+ s.item :identity_proofs, safe_join([fa_icon('key fw'), t('settings.identity_proofs')]), settings_identity_proofs_path, highlights_on: %r{/settings/identity_proofs*}, if: proc { current_account.identity_proofs.exists? }
end
- primary.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url
- primary.item :filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}
- primary.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: proc { Setting.min_invite_role == 'user' }
-
- primary.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_url do |development|
- development.item :your_apps, safe_join([fa_icon('list fw'), t('settings.your_apps')]), settings_applications_url, highlights_on: %r{/settings/applications}
+ n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_url do |s|
+ s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_url
+ s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_url
+ s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_url
end
- primary.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), admin_reports_url, if: proc { current_user.staff? } do |admin|
- admin.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_url
- admin.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports}
- admin.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts}
- admin.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path
- admin.item :tags, safe_join([fa_icon('tag fw'), t('admin.tags.title')]), admin_tags_path
- admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? }
- admin.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? }
+ n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url
+ n.item :filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}
+
+ n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_url do |s|
+ s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete}
+ s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_url, highlights_on: %r{/settings/two_factor_authentication}
+ s.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url
end
- primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_dashboard_url, if: proc { current_user.staff? } do |admin|
- admin.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
- admin.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/settings}
- admin.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
- admin.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/relays}
- admin.item :subscriptions, safe_join([fa_icon('paper-plane-o fw'), t('admin.subscriptions.title')]), admin_subscriptions_url, if: -> { current_user.admin? }
- admin.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
- admin.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
+ n.item :data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_url do |s|
+ s.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url
+ s.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
end
- primary.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_url, link_html: { 'data-method' => 'delete' }
+ n.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: proc { Setting.min_invite_role == 'user' }
+ n.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_url
+
+ n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), admin_reports_url, if: proc { current_user.staff? } do |s|
+ s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_url
+ s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports}
+ s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts|/admin/pending_accounts}
+ s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path
+ s.item :tags, safe_join([fa_icon('tag fw'), t('admin.tags.title')]), admin_tags_path
+ s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? }
+ s.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? }
+ end
+
+ n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_dashboard_url, if: proc { current_user.staff? } do |s|
+ s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
+ s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/settings}
+ s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
+ s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/relays}
+ s.item :subscriptions, safe_join([fa_icon('paper-plane-o fw'), t('admin.subscriptions.title')]), admin_subscriptions_url, if: -> { current_user.admin? }
+ s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
+ s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
+ end
+
+ n.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_url, link_html: { 'data-method' => 'delete' }
end
end
diff --git a/config/routes.rb b/config/routes.rb
index 194b4c09b..145079c69 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -87,13 +87,22 @@ Rails.application.routes.draw do
get '/explore', to: 'directories#index', as: :explore
get '/explore/:id', to: 'directories#show', as: :explore_hashtag
+ get '/settings', to: redirect('/settings/profile')
+
namespace :settings do
resource :profile, only: [:show, :update]
- resource :preferences, only: [:show, :update]
- resource :notifications, only: [:show, :update]
- resource :import, only: [:show, :create]
+ get :preferences, to: redirect('/settings/preferences/appearance')
+
+ namespace :preferences do
+ resource :appearance, only: [:show, :update], controller: :appearance
+ resource :notifications, only: [:show, :update]
+ resource :other, only: [:show, :update], controller: :other
+ end
+
+ resource :import, only: [:show, :create]
resource :export, only: [:show, :create]
+
namespace :exports, constraints: { format: :csv } do
resources :follows, only: :index, controller: :following_accounts
resources :blocks, only: :index, controller: :blocked_accounts
@@ -103,6 +112,7 @@ Rails.application.routes.draw do
end
resource :two_factor_authentication, only: [:show, :create, :destroy]
+
namespace :two_factor_authentication do
resources :recovery_codes, only: [:create]
resource :confirmation, only: [:new, :create]
@@ -214,6 +224,14 @@ Rails.application.routes.draw do
end
end
+ resources :pending_accounts, only: [:index] do
+ collection do
+ post :approve_all
+ post :reject_all
+ post :batch
+ end
+ end
+
resources :users, only: [] do
resource :two_factor_authentication, only: [:destroy]
end
@@ -354,6 +372,7 @@ Rails.application.routes.draw do
resources :followers, only: :index, controller: 'accounts/follower_accounts'
resources :following, only: :index, controller: 'accounts/following_accounts'
resources :lists, only: :index, controller: 'accounts/lists'
+ resources :identity_proofs, only: :index, controller: 'accounts/identity_proofs'
member do
post :follow
diff --git a/config/settings.yml b/config/settings.yml
index 4f05519a5..805624d3e 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -31,6 +31,7 @@ defaults: &defaults
noindex: false
theme: 'default'
aggregate_reblogs: true
+ advanced_layout: false
notification_emails:
follow: false
reblog: false
@@ -39,6 +40,7 @@ defaults: &defaults
follow_request: true
digest: true
report: true
+ pending_account: true
interactions:
must_be_follower: false
must_be_following: false
diff --git a/config/webpack/production.js b/config/webpack/production.js
index c829ff6f1..bceffaf5c 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -5,7 +5,7 @@ const { URL } = require('url');
const merge = require('webpack-merge');
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const OfflinePlugin = require('offline-plugin');
-const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
+const TerserPlugin = require('terser-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const { output } = require('./configuration');
const sharedConfig = require('./shared');
@@ -33,20 +33,10 @@ module.exports = merge(sharedConfig, {
optimization: {
minimize: true,
minimizer: [
- new UglifyJsPlugin({
+ new TerserPlugin({
cache: true,
parallel: true,
sourceMap: true,
-
- uglifyOptions: {
- compress: {
- warnings: false,
- },
-
- output: {
- comments: false,
- },
- },
}),
],
},
@@ -64,6 +54,7 @@ module.exports = merge(sharedConfig, {
}),
new OfflinePlugin({
publicPath: output.publicPath, // sw.js must be served from the root to avoid scope issues
+ safeToUseOptionalCaches: true,
caches: {
main: [':rest:'],
additional: [':externals:'],
diff --git a/config/webpack/rules/css.js b/config/webpack/rules/css.js
index 27905a617..3b5b51232 100644
--- a/config/webpack/rules/css.js
+++ b/config/webpack/rules/css.js
@@ -21,7 +21,6 @@ module.exports = {
{
loader: 'sass-loader',
options: {
- fiber: require('fibers'),
implementation: require('sass'),
sourceMap: true,
},
diff --git a/config/webpack/rules/node_modules.js b/config/webpack/rules/node_modules.js
index 5debc1b5d..7ed05504b 100644
--- a/config/webpack/rules/node_modules.js
+++ b/config/webpack/rules/node_modules.js
@@ -11,16 +11,7 @@ module.exports = {
options: {
babelrc: false,
plugins: [
- [
- 'transform-react-remove-prop-types',
- {
- mode: 'remove',
- removeImport: true,
- additionalLibraries: [
- '../../utils/shared-props', // emoji-mart
- ],
- },
- ],
+ 'transform-react-remove-prop-types',
],
cacheDirectory: join(settings.cache_path, 'babel-loader-node-modules'),
cacheCompression: env.NODE_ENV === 'production',
diff --git a/db/migrate/20171005102658_create_account_moderation_notes.rb b/db/migrate/20171005102658_create_account_moderation_notes.rb
index 974ed9940..010b94586 100644
--- a/db/migrate/20171005102658_create_account_moderation_notes.rb
+++ b/db/migrate/20171005102658_create_account_moderation_notes.rb
@@ -8,6 +8,6 @@ class CreateAccountModerationNotes < ActiveRecord::Migration[5.1]
t.timestamps
end
- add_foreign_key :account_moderation_notes, :accounts, column: :target_account_id
+ safety_assured { add_foreign_key :account_moderation_notes, :accounts, column: :target_account_id }
end
end
diff --git a/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb b/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb
index fc1e1ab91..cdcd15934 100644
--- a/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb
+++ b/db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb
@@ -1,5 +1,5 @@
class AddForeignKeyToAccountModerationNotes < ActiveRecord::Migration[5.1]
def change
- add_foreign_key :account_moderation_notes, :accounts
+ safety_assured { add_foreign_key :account_moderation_notes, :accounts }
end
end
diff --git a/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb b/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb
index 0c8a894cc..586ef6f02 100644
--- a/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb
+++ b/db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb
@@ -1,6 +1,6 @@
class AddMovedToAccountIdToAccounts < ActiveRecord::Migration[5.1]
def change
add_column :accounts, :moved_to_account_id, :bigint, null: true, default: nil
- add_foreign_key :accounts, :accounts, column: :moved_to_account_id, on_delete: :nullify
+ safety_assured { add_foreign_key :accounts, :accounts, column: :moved_to_account_id, on_delete: :nullify }
end
end
diff --git a/db/migrate/20190409054914_create_user_invite_requests.rb b/db/migrate/20190409054914_create_user_invite_requests.rb
new file mode 100644
index 000000000..974e0f69f
--- /dev/null
+++ b/db/migrate/20190409054914_create_user_invite_requests.rb
@@ -0,0 +1,10 @@
+class CreateUserInviteRequests < ActiveRecord::Migration[5.2]
+ def change
+ create_table :user_invite_requests do |t|
+ t.belongs_to :user, foreign_key: { on_delete: :cascade }
+ t.text :text
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20190420025523_add_blurhash_to_media_attachments.rb b/db/migrate/20190420025523_add_blurhash_to_media_attachments.rb
new file mode 100644
index 000000000..f2bbe0a85
--- /dev/null
+++ b/db/migrate/20190420025523_add_blurhash_to_media_attachments.rb
@@ -0,0 +1,5 @@
+class AddBlurhashToMediaAttachments < ActiveRecord::Migration[5.2]
+ def change
+ add_column :media_attachments, :blurhash, :string
+ end
+end
diff --git a/db/migrate/20190509164208_add_by_moderator_to_tombstone.rb b/db/migrate/20190509164208_add_by_moderator_to_tombstone.rb
new file mode 100644
index 000000000..80c244842
--- /dev/null
+++ b/db/migrate/20190509164208_add_by_moderator_to_tombstone.rb
@@ -0,0 +1,5 @@
+class AddByModeratorToTombstone < ActiveRecord::Migration[5.2]
+ def change
+ add_column :tombstones, :by_moderator, :boolean
+ end
+end
diff --git a/db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb b/db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb
new file mode 100644
index 000000000..1e5cd669c
--- /dev/null
+++ b/db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb
@@ -0,0 +1,41 @@
+class AddSilencedAtSuspendedAtToAccounts < ActiveRecord::Migration[5.2]
+ class Account < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ end
+
+ class DomainBlock < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ enum severity: [:silence, :suspend, :noop]
+
+ has_many :accounts, foreign_key: :domain, primary_key: :domain
+ end
+
+ def up
+ add_column :accounts, :silenced_at, :datetime
+ add_column :accounts, :suspended_at, :datetime
+
+ # Record suspend date of blocks and silences for users whose limitations match
+ # a domain block
+ DomainBlock.where(severity: [:silence, :suspend]).find_each do |block|
+ scope = block.accounts
+ if block.suspend?
+ block.accounts.where(suspended: true).in_batches.update_all(suspended_at: block.created_at)
+ else
+ block.accounts.where(silenced: true).in_batches.update_all(silenced_at: block.created_at)
+ end
+ end
+
+ # Set dates for accounts which have limitations not related to a domain block
+ Account.where(suspended: true, suspended_at: nil).in_batches.update_all(suspended_at: Time.now.utc)
+ Account.where(silenced: true, silenced_at: nil).in_batches.update_all(silenced_at: Time.now.utc)
+ end
+
+ def down
+ # Block or silence accounts that have a date set
+ Account.where(suspended: false).where.not(suspended_at: nil).in_batches.update_all(suspended: true)
+ Account.where(silenced: false).where.not(silenced_at: nil).in_batches.update_all(silenced: true)
+
+ remove_column :accounts, :silenced_at
+ remove_column :accounts, :suspended_at
+ end
+end
diff --git a/db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb b/db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb
new file mode 100644
index 000000000..72b7c609d
--- /dev/null
+++ b/db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb
@@ -0,0 +1,17 @@
+class PreserveOldLayoutForExistingUsers < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ # Assume that currently active users are already using the layout that they
+ # want to use, therefore ensure that it is saved explicitly and not based
+ # on the to-be-changed default
+
+ User.where(User.arel_table[:current_sign_in_at].gteq(1.month.ago)).find_each do |user|
+ next if Setting.unscoped.where(thing_type: 'User', thing_id: user.id, var: 'advanced_layout').exists?
+ user.settings.advanced_layout = true
+ end
+ end
+
+ def down
+ end
+end
diff --git a/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb b/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb
new file mode 100644
index 000000000..a46349cb7
--- /dev/null
+++ b/db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+class RemoveSuspendedSilencedAccountFields < ActiveRecord::Migration[5.2]
+ class Account < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ end
+
+ class DomainBlock < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ enum severity: [:silence, :suspend, :noop]
+
+ has_many :accounts, foreign_key: :domain, primary_key: :domain
+ end
+
+ disable_ddl_transaction!
+
+ def up
+ # Record suspend date of blocks and silences for users whose limitations match
+ # a domain block
+ DomainBlock.where(severity: [:silence, :suspend]).find_each do |block|
+ scope = block.accounts
+ if block.suspend?
+ block.accounts.where(suspended: true).in_batches.update_all(suspended_at: block.created_at)
+ else
+ block.accounts.where(silenced: true).in_batches.update_all(silenced_at: block.created_at)
+ end
+ end
+
+ # Set dates for accounts which have limitations not related to a domain block
+ Account.where(suspended: true, suspended_at: nil).in_batches.update_all(suspended_at: Time.now.utc)
+ Account.where(silenced: true, silenced_at: nil).in_batches.update_all(silenced_at: Time.now.utc)
+
+ safety_assured do
+ remove_column :accounts, :suspended, :boolean, null: false, default: false
+ remove_column :accounts, :silenced, :boolean, null: false, default: false
+ end
+ end
+
+ def down
+ safety_assured do
+ add_column :accounts, :suspended, :boolean, null: false, default: false
+ add_column :accounts, :silenced, :boolean, null: false, default: false
+ end
+ end
+end
diff --git a/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb b/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb
new file mode 100644
index 000000000..d2d924239
--- /dev/null
+++ b/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb
@@ -0,0 +1,23 @@
+class RemoveBoostsWideningAudience < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ public_boosts = Status.find_by_sql(<<-SQL)
+ SELECT boost.id
+ FROM statuses AS boost
+ LEFT JOIN statuses AS boosted ON boost.reblog_of_id = boosted.id
+ WHERE
+ boost.id > 101746055577600000
+ AND (boost.local = TRUE OR boost.uri IS NULL)
+ AND boost.visibility IN (0, 1)
+ AND boost.reblog_of_id IS NOT NULL
+ AND boosted.visibility = 2
+ SQL
+
+ RemovalWorker.push_bulk(public_boosts.pluck(:id))
+ end
+
+ def down
+ raise ActiveRecord::IrreversibleMigration
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 11535d867..f633f4e3f 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2019_03_17_135723) do
+ActiveRecord::Schema.define(version: 2019_05_29_143559) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -131,8 +131,6 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
t.datetime "header_updated_at"
t.string "avatar_remote_url"
t.datetime "subscription_expires_at"
- t.boolean "silenced", default: false, null: false
- t.boolean "suspended", default: false, null: false
t.boolean "locked", default: false, null: false
t.string "header_remote_url", default: "", null: false
t.datetime "last_webfingered_at"
@@ -148,6 +146,8 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
t.string "actor_type"
t.boolean "discoverable"
t.string "also_known_as", array: true
+ t.datetime "silenced_at"
+ t.datetime "suspended_at"
t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin
t.index "lower((username)::text), lower((domain)::text)", name: "index_accounts_on_username_and_domain_lower", unique: true
t.index ["moved_to_account_id"], name: "index_accounts_on_moved_to_account_id"
@@ -362,6 +362,7 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
t.bigint "account_id"
t.text "description"
t.bigint "scheduled_status_id"
+ t.string "blurhash"
t.index ["account_id"], name: "index_media_attachments_on_account_id"
t.index ["scheduled_status_id"], name: "index_media_attachments_on_scheduled_status_id"
t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true
@@ -381,9 +382,9 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
create_table "mutes", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.boolean "hide_notifications", default: true, null: false
t.bigint "account_id", null: false
t.bigint "target_account_id", null: false
- t.boolean "hide_notifications", default: true, null: false
t.index ["account_id", "target_account_id"], name: "index_mutes_on_account_id_and_target_account_id", unique: true
t.index ["target_account_id"], name: "index_mutes_on_target_account_id"
end
@@ -675,10 +676,19 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
t.string "uri", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.boolean "by_moderator"
t.index ["account_id"], name: "index_tombstones_on_account_id"
t.index ["uri"], name: "index_tombstones_on_uri"
end
+ create_table "user_invite_requests", force: :cascade do |t|
+ t.bigint "user_id"
+ t.text "text"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["user_id"], name: "index_user_invite_requests_on_user_id"
+ end
+
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.datetime "created_at", null: false
@@ -816,6 +826,7 @@ ActiveRecord::Schema.define(version: 2019_03_17_135723) do
add_foreign_key "stream_entries", "accounts", name: "fk_5659b17554", on_delete: :cascade
add_foreign_key "subscriptions", "accounts", name: "fk_9847d1cbb5", on_delete: :cascade
add_foreign_key "tombstones", "accounts", on_delete: :cascade
+ add_foreign_key "user_invite_requests", "users", on_delete: :cascade
add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade
add_foreign_key "users", "invites", on_delete: :nullify
add_foreign_key "users", "oauth_applications", column: "created_by_application_id", on_delete: :nullify
diff --git a/dist/nginx.conf b/dist/nginx.conf
index 3d5741765..7c429bad4 100644
--- a/dist/nginx.conf
+++ b/dist/nginx.conf
@@ -78,6 +78,7 @@ server {
proxy_cache CACHE;
proxy_cache_valid 200 7d;
+ proxy_cache_valid 410 24h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cached $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
diff --git a/docker-compose.yml b/docker-compose.yml
index faa066149..93d47f1a0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -13,7 +13,7 @@ services:
redis:
restart: always
- image: redis:4.0-alpine
+ image: redis:5.0-alpine
networks:
- internal_network
healthcheck:
@@ -43,7 +43,7 @@ services:
- external_network
- internal_network
healthcheck:
- test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:3000/api/v1/instance || exit 1"]
+ test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:3000/api/v1/instance || exit 1"]
ports:
- "127.0.0.1:3000:3000"
depends_on:
@@ -63,7 +63,7 @@ services:
- external_network
- internal_network
healthcheck:
- test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:4000/api/v1/streaming/health || exit 1"]
+ test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
ports:
- "127.0.0.1:4000:4000"
depends_on:
diff --git a/lib/cli.rb b/lib/cli.rb
index 65a5ae696..be276583d 100644
--- a/lib/cli.rb
+++ b/lib/cli.rb
@@ -9,6 +9,7 @@ require_relative 'mastodon/search_cli'
require_relative 'mastodon/settings_cli'
require_relative 'mastodon/statuses_cli'
require_relative 'mastodon/domains_cli'
+require_relative 'mastodon/cache_cli'
require_relative 'mastodon/version'
module Mastodon
@@ -41,6 +42,82 @@ module Mastodon
desc 'domains SUBCOMMAND ...ARGS', 'Manage account domains'
subcommand 'domains', Mastodon::DomainsCLI
+ desc 'cache SUBCOMMAND ...ARGS', 'Manage cache'
+ subcommand 'cache', Mastodon::CacheCLI
+
+ option :dry_run, type: :boolean
+ desc 'self-destruct', 'Erase the server from the federation'
+ long_desc <<~LONG_DESC
+ Erase the server from the federation by broadcasting account delete
+ activities to all known other servers. This allows a "clean exit" from
+ running a Mastodon server, as it leaves next to no cache behind on
+ other servers.
+
+ This command is always interactive and requires confirmation twice.
+
+ No local data is actually deleted, because emptying the
+ database or removing files is much faster through other, external
+ means, such as e.g. deleting the entire VPS. However, because other
+ servers will delete data about local users, but no local data will be
+ updated (such as e.g. followers), there will be a state mismatch
+ that will lead to glitches and issues if you then continue to run and use
+ the server.
+
+ So either you know exactly what you are doing, or you are starting
+ from a blank slate afterwards by manually clearing out all the local
+ data!
+ LONG_DESC
+ def self_destruct
+ require 'tty-prompt'
+
+ prompt = TTY::Prompt.new
+
+ exit(1) unless prompt.ask('Type in the domain of the server to confirm:', required: true) == Rails.configuration.x.local_domain
+
+ prompt.warn('This operation WILL NOT be reversible. It can also take a long time.')
+ prompt.warn('While the data won\'t be erased locally, the server will be in a BROKEN STATE afterwards.')
+ prompt.warn('A running Sidekiq process is required. Do not shut it down until queues clear.')
+
+ exit(1) if prompt.no?('Are you sure you want to proceed?')
+
+ inboxes = Account.inboxes
+ processed = 0
+ dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
+
+ if inboxes.empty?
+ prompt.ok('It seems like your server has not federated with anything')
+ prompt.ok('You can shut it down and delete it any time')
+ return
+ end
+
+ prompt.warn('Do NOT interrupt this process...')
+
+ Account.local.without_suspended.find_each do |account|
+ payload = ActiveModelSerializers::SerializableResource.new(
+ account,
+ serializer: ActivityPub::DeleteActorSerializer,
+ adapter: ActivityPub::Adapter
+ ).as_json
+
+ json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(account))
+
+ unless options[:dry_run]
+ ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
+ [json, account.id, inbox_url]
+ end
+
+ account.suspend!
+ end
+
+ processed += 1
+ end
+
+ prompt.ok("Queued #{inboxes.size * processed} items into Sidekiq for #{processed} accounts#{dry_run}")
+ prompt.ok('Wait until Sidekiq processes all items, then you can shut everything down and delete the data')
+ rescue TTY::Reader::InputInterrupt
+ exit(1)
+ end
+
map %w(--version -v) => :version
desc 'version', 'Show version'
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index dca31cdca..7d0215313 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -73,7 +73,7 @@ module Mastodon
def create(username)
account = Account.new(username: username)
password = SecureRandom.hex
- user = User.new(email: options[:email], password: password, agreement: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil)
+ user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil)
if options[:reattach]
account = Account.find_local(username) || Account.new(username: username)
@@ -87,8 +87,8 @@ module Mastodon
end
end
- account.suspended = false
- user.account = account
+ account.suspended_at = nil
+ user.account = account
if user.save
if options[:confirmed]
@@ -115,6 +115,7 @@ module Mastodon
option :enable, type: :boolean
option :disable, type: :boolean
option :disable_2fa, type: :boolean
+ option :approve, type: :boolean
desc 'modify USERNAME', 'Modify a user'
long_desc <<-LONG_DESC
Modify a user account.
@@ -128,6 +129,9 @@ module Mastodon
With the --disable option, lock the user out of their account. The
--enable option is the opposite.
+ With the --approve option, the account will be approved, if it was
+ previously not due to not having open registrations.
+
With the --disable-2fa option, the two-factor authentication
requirement for the user can be removed.
LONG_DESC
@@ -147,6 +151,7 @@ module Mastodon
user.email = options[:email] if options[:email]
user.disabled = false if options[:enable]
user.disabled = true if options[:disable]
+ user.approved = true if options[:approve]
user.otp_required_for_login = false if options[:disable_2fa]
user.confirm if options[:confirm]
@@ -219,12 +224,14 @@ module Mastodon
def cull
skip_threshold = 7.days.ago
culled = 0
+ dry_run_culled = []
skip_domains = Set.new
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
Account.remote.where(protocol: :activitypub).partitioned.find_each do |account|
next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold)
+ code = 0
unless skip_domains.include?(account.domain)
begin
code = Request.new(:head, account.uri).perform(&:code)
@@ -236,11 +243,11 @@ module Mastodon
end
if [404, 410].include?(code)
- unless options[:dry_run]
- SuspendAccountService.new.call(account)
- account.destroy
+ if options[:dry_run]
+ dry_run_culled << account.acct
+ else
+ SuspendAccountService.new.call(account, destroy: true)
end
-
culled += 1
say('+', :green, false)
else
@@ -256,6 +263,11 @@ module Mastodon
say('The following servers were not available during the check:', :yellow)
skip_domains.each { |domain| say(' ' + domain) }
end
+
+ unless dry_run_culled.empty?
+ say('The following accounts would have been deleted:', :green)
+ dry_run_culled.each { |account| say(' ' + account) }
+ end
end
option :all, type: :boolean
@@ -360,6 +372,104 @@ module Mastodon
say("OK, unfollowed target from #{processed} accounts, skipped #{failed}", :green)
end
+ option :follows, type: :boolean, default: false
+ option :followers, type: :boolean, default: false
+ desc 'reset-relationships USERNAME', 'Reset all follows and/or followers for a user'
+ long_desc <<-LONG_DESC
+ Reset all follows and/or followers for a user specified by USERNAME.
+
+ With the --follows option, the command unfollows everyone that the account follows,
+ and then re-follows the users that would be followed by a brand new account.
+
+ With the --followers option, the command removes all followers of the account.
+ LONG_DESC
+ def reset_relationships(username)
+ unless options[:follows] || options[:followers]
+ say('Please specify either --follows or --followers, or both', :red)
+ exit(1)
+ end
+
+ account = Account.find_local(username)
+
+ if account.nil?
+ say('No user with such username', :red)
+ exit(1)
+ end
+
+ if options[:follows]
+ processed = 0
+ failed = 0
+
+ say("Unfollowing #{account.username}'s followees, this might take a while...")
+
+ Account.where(id: ::Follow.where(account: account).select(:target_account_id)).find_each do |target_account|
+ begin
+ UnfollowService.new.call(account, target_account)
+ processed += 1
+ say('.', :green, false)
+ rescue StandardError
+ failed += 1
+ say('.', :red, false)
+ end
+ end
+
+ BootstrapTimelineWorker.perform_async(account.id)
+
+ say("OK, unfollowed #{processed} followees, skipped #{failed}", :green)
+ end
+
+ if options[:followers]
+ processed = 0
+ failed = 0
+
+ say("Removing #{account.username}'s followers, this might take a while...")
+
+ Account.where(id: ::Follow.where(target_account: account).select(:account_id)).find_each do |target_account|
+ begin
+ UnfollowService.new.call(target_account, account)
+ processed += 1
+ say('.', :green, false)
+ rescue StandardError
+ failed += 1
+ say('.', :red, false)
+ end
+ end
+
+ say("OK, removed #{processed} followers, skipped #{failed}", :green)
+ end
+ end
+
+ option :number, type: :numeric, aliases: [:n]
+ option :all, type: :boolean
+ desc 'approve [USERNAME]', 'Approve pending accounts'
+ long_desc <<~LONG_DESC
+ When registrations require review from staff, approve pending accounts,
+ either all of them with the --all option, or a specific number of them
+ specified with the --number (-n) option, or only a single specific
+ account identified by its username.
+ LONG_DESC
+ def approve(username = nil)
+ if options[:all]
+ User.pending.find_each(&:approve!)
+ say('OK', :green)
+ elsif options[:number]
+ User.pending.limit(options[:number]).each(&:approve!)
+ say('OK', :green)
+ elsif username.present?
+ account = Account.find_local(username)
+
+ if account.nil?
+ say('No such account', :red)
+ exit(1)
+ end
+
+ account.user&.approve!
+ say('OK', :green)
+ else
+ exit(1)
+ end
+ end
+
private
def rotate_keys_for_account(account, delay = 0)
diff --git a/lib/mastodon/cache_cli.rb b/lib/mastodon/cache_cli.rb
new file mode 100644
index 000000000..e9b6667b3
--- /dev/null
+++ b/lib/mastodon/cache_cli.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+module Mastodon
+ class CacheCLI < Thor
+ def self.exit_on_failure?
+ true
+ end
+
+ desc 'clear', 'Clear out the cache storage'
+ def clear
+ Rails.cache.clear
+ say('OK', :green)
+ end
+ end
+end
diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb
index 303b8a94a..b081581fe 100644
--- a/lib/mastodon/domains_cli.rb
+++ b/lib/mastodon/domains_cli.rb
@@ -28,10 +28,15 @@ module Mastodon
say('.', :green, false)
end
- DomainBlock.where(domain: domain).destroy_all
+ DomainBlock.where(domain: domain).destroy_all unless options[:dry_run]
say
say("Removed #{removed} accounts#{dry_run}", :green)
+
+ custom_emojis = CustomEmoji.where(domain: domain)
+ custom_emojis_count = custom_emojis.count
+ custom_emojis.destroy_all unless options[:dry_run]
+ say("Removed #{custom_emojis_count} custom emojis", :green)
end
option :concurrency, type: :numeric, default: 50, aliases: [:c]
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
index 2262040d4..97a822e45 100644
--- a/lib/mastodon/emoji_cli.rb
+++ b/lib/mastodon/emoji_cli.rb
@@ -15,9 +15,9 @@ module Mastodon
option :suffix
option :overwrite, type: :boolean
option :unlisted, type: :boolean
- desc 'import PATH', 'Import emoji from a TAR archive at PATH'
+ desc 'import PATH', 'Import emoji from a TAR GZIP archive at PATH'
long_desc <<-LONG_DESC
- Imports custom emoji from a TAR archive specified by PATH.
+ Imports custom emoji from a TAR GZIP archive specified by PATH.
Existing emoji will be skipped unless the --overwrite option
is provided, in which case they will be overwritten.
@@ -66,6 +66,12 @@ module Mastodon
say("Imported #{imported}, skipped #{skipped}, failed to import #{failed}", color(imported, skipped, failed))
end
+ desc 'purge', 'Remove all custom emoji'
+ def purge
+ CustomEmoji.in_batches.destroy_all
+ say('OK', :green)
+ end
+
private
def color(green, _yellow, red)
diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb
index 5881ba260..7f2fbfa85 100644
--- a/lib/mastodon/statuses_cli.rb
+++ b/lib/mastodon/statuses_cli.rb
@@ -13,7 +13,15 @@ module Mastodon
end
option :days, type: :numeric, default: 90
- desc 'remove', 'Remove statuses'
+ desc 'remove', 'Remove unreferenced statuses'
+ long_desc <<~LONG_DESC
+ Remove statuses that are not referenced by local user activity, such as
+ ones that came from relays, or belonging to users that were once followed
+ by someone locally but no longer are.
+
+ This is a computationally heavy procedure that creates extra database
+ indicides before commencing, and removes them afterward.
+ LONG_DESC
def remove
say('Creating temporary database indices...')
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index bdfcd27b5..8b0eb598d 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,11 +9,11 @@ module Mastodon
end
def minor
- 7
+ 9
end
def patch
- 4
+ 0
end
def pre
@@ -21,7 +21,7 @@ module Mastodon
end
def flags
- ''
+ 'rc1'
end
def to_a
@@ -33,16 +33,16 @@ module Mastodon
end
def repository
- 'tootsuite/mastodon'
+ ENV.fetch('GITHUB_REPOSITORY') { 'tootsuite/mastodon' }
end
def source_base_url
- "https://github.com/#{repository}"
+ ENV.fetch('SOURCE_BASE_URL') { "https://github.com/#{repository}" }
end
# specify git tag or commit hash here
def source_tag
- nil
+ ENV.fetch('SOURCE_TAG') { nil }
end
def source_url
diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb
new file mode 100644
index 000000000..08925a6dd
--- /dev/null
+++ b/lib/paperclip/blurhash_transcoder.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+module Paperclip
+ class BlurhashTranscoder < Paperclip::Processor
+ def make
+ return @file unless options[:style] == :small
+
+ pixels = convert(':source RGB:-', source: File.expand_path(@file.path)).unpack('C*')
+ geometry = options.fetch(:file_geometry_parser).from_file(@file)
+
+ attachment.instance.blurhash = Blurhash.encode(geometry.width, geometry.height, pixels, options[:blurhash] || {})
+
+ @file
+ end
+ end
+end
diff --git a/package.json b/package.json
index b9d8f8af1..26ff64851 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "mastodon",
"license": "AGPL-3.0-or-later",
"engines": {
- "node": ">=8 <11"
+ "node": ">=8.12 <12"
},
"scripts": {
"postversion": "git push --tags",
@@ -10,8 +10,10 @@
"build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack",
"manage:translations": "node ./config/webpack/translationRunner.js",
"start": "node ./streaming/index.js",
- "test": "${npm_execpath} run test:lint && ${npm_execpath} run test:jest",
- "test:lint": "eslint --ext=js .",
+ "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:jest",
+ "test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass",
+ "test:lint:js": "eslint --ext=js .",
+ "test:lint:sass": "sass-lint -v",
"test:jest": "cross-env NODE_ENV=test jest --coverage"
},
"repository": {
@@ -57,53 +59,53 @@
},
"private": true,
"dependencies": {
- "@babel/core": "^7.3.4",
- "@babel/plugin-proposal-class-properties": "^7.3.4",
- "@babel/plugin-proposal-decorators": "^7.3.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+ "@babel/core": "^7.4.5",
+ "@babel/plugin-proposal-class-properties": "^7.4.4",
+ "@babel/plugin-proposal-decorators": "^7.4.4",
+ "@babel/plugin-proposal-object-rest-spread": "^7.4.4",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-react-inline-elements": "^7.2.0",
"@babel/plugin-transform-react-jsx-self": "^7.2.0",
"@babel/plugin-transform-react-jsx-source": "^7.2.0",
- "@babel/plugin-transform-runtime": "^7.3.4",
- "@babel/preset-env": "^7.3.4",
+ "@babel/plugin-transform-runtime": "^7.4.4",
+ "@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0",
- "@babel/runtime": "^7.3.4",
+ "@babel/runtime": "^7.4.5",
+ "@clusterws/cws": "^0.14.0",
"array-includes": "^3.0.3",
- "autoprefixer": "^9.4.10",
- "axios": "^0.18.0",
+ "autoprefixer": "^9.5.1",
+ "axios": "^0.19.0",
"babel-loader": "^8.0.5",
"babel-plugin-lodash": "^3.3.4",
"babel-plugin-preval": "^3.0.1",
- "babel-plugin-react-intl": "^3.0.1",
+ "babel-plugin-react-intl": "^3.1.3",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"babel-runtime": "^6.26.0",
+ "blurhash": "^1.0.0",
"classnames": "^2.2.5",
"compression-webpack-plugin": "^2.0.0",
"cross-env": "^5.1.4",
"css-loader": "^2.1.1",
"cssnano": "^4.1.10",
"detect-passive-events": "^1.0.2",
- "dotenv": "^6.2.0",
- "emoji-mart": "^2.10.0",
+ "dotenv": "^8.0.0",
+ "emoji-mart": "Gargron/emoji-mart#build",
"es6-symbol": "^3.1.1",
"escape-html": "^1.0.3",
"exif-js": "^2.3.0",
- "express": "^4.16.4",
- "fibers": "^3.1.1",
+ "express": "^4.17.1",
"file-loader": "^3.0.1",
"font-awesome": "^4.7.0",
"glob": "^7.1.1",
- "history": "^4.7.2",
"http-link-header": "^1.0.2",
"immutable": "^3.8.2",
"imports-loader": "^0.8.0",
- "intersection-observer": "^0.5.1",
+ "intersection-observer": "^0.7.0",
"intl": "^1.2.5",
"intl-messageformat": "^2.2.0",
- "intl-relativeformat": "^2.1.0",
+ "intl-relativeformat": "^2.2.0",
"is-nan": "^1.2.1",
- "js-yaml": "^3.11.0",
+ "js-yaml": "^3.13.1",
"lodash": "^4.7.11",
"mark-loader": "^0.1.6",
"marky": "^1.2.1",
@@ -112,32 +114,32 @@
"npmlog": "^4.1.2",
"object-assign": "^4.1.1",
"object-fit-images": "^3.2.3",
- "object.values": "^1.0.4",
- "offline-plugin": "^5.0.6",
+ "object.values": "^1.1.0",
+ "offline-plugin": "^5.0.7",
"path-complete-extname": "^1.0.0",
"pg": "^6.4.0",
"postcss-loader": "^3.0.0",
"postcss-object-fit-images": "^1.1.2",
"prop-types": "^15.5.10",
"punycode": "^2.1.0",
- "rails-ujs": "^5.2.2",
- "react": "^16.7.0",
- "react-dom": "^16.7.0",
+ "rails-ujs": "^5.2.3",
+ "react": "^16.8.6",
+ "react-dom": "^16.8.6",
"react-hotkeys": "^1.1.4",
"react-immutable-proptypes": "^2.1.0",
"react-immutable-pure-component": "^1.1.1",
- "react-intl": "^2.7.2",
+ "react-intl": "^2.9.0",
"react-masonry-infinite": "^1.2.2",
"react-motion": "^0.5.2",
"react-notification": "^6.8.4",
"react-overlays": "^0.8.3",
- "react-redux": "^6.0.0",
+ "react-redux": "^6.0.1",
"react-redux-loading-bar": "^4.0.8",
"react-router-dom": "^4.1.1",
"react-router-scroll-4": "^1.0.0-beta.1",
- "react-select": "^2.2.0",
+ "react-select": "^2.4.4",
"react-sparklines": "^1.7.0",
- "react-swipeable-views": "^0.13.0",
+ "react-swipeable-views": "^0.13.3",
"react-textarea-autosize": "^7.1.0",
"react-toggle": "^4.0.1",
"redis": "^2.7.1",
@@ -147,38 +149,38 @@
"rellax": "^1.7.1",
"requestidlecallback": "^0.3.0",
"reselect": "^4.0.0",
- "rimraf": "^2.6.1",
- "sass": "^1.17.2",
+ "rimraf": "^2.6.3",
+ "sass": "^1.20.3",
"sass-loader": "^7.0.3",
"stringz": "^1.0.0",
"substring-trie": "^1.0.2",
+ "terser-webpack-plugin": "^1.3.0",
"throng": "^4.0.0",
"tiny-queue": "^0.2.1",
- "uglifyjs-webpack-plugin": "^2.1.2",
"uuid": "^3.1.0",
- "uws": "10.148.0",
"webpack": "^4.29.6",
"webpack-assets-manifest": "^3.1.1",
"webpack-bundle-analyzer": "^3.1.0",
- "webpack-cli": "^3.2.3",
+ "webpack-cli": "^3.3.2",
"webpack-merge": "^4.2.1",
"websocket.js": "^0.1.12"
},
"devDependencies": {
"babel-eslint": "^10.0.1",
- "babel-jest": "^24.5.0",
+ "babel-jest": "^24.8.0",
"enzyme": "^3.8.0",
"enzyme-adapter-react-16": "^1.7.1",
"eslint": "^5.11.1",
"eslint-plugin-import": "~2.14.0",
- "eslint-plugin-jsx-a11y": "~6.1.2",
- "eslint-plugin-promise": "~4.0.1",
+ "eslint-plugin-jsx-a11y": "~6.2.1",
+ "eslint-plugin-promise": "~4.1.1",
"eslint-plugin-react": "~7.12.1",
- "jest": "^24.5.0",
+ "jest": "^24.8.0",
"raf": "^3.4.1",
"react-intl-translations-manager": "^5.0.3",
- "react-test-renderer": "^16.7.0",
- "webpack-dev-server": "^3.2.1",
+ "react-test-renderer": "^16.8.6",
+ "sass-lint": "^1.13.1",
+ "webpack-dev-server": "^3.5.1",
"yargs": "^12.0.5"
}
}
diff --git a/public/robots.txt b/public/robots.txt
index d93648bee..771bf2160 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -2,3 +2,4 @@
User-agent: *
Disallow: /media_proxy/
+Disallow: /interact/
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index 129bf8883..fb23658c0 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -37,7 +37,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
end
it 'renders new when failed to save' do
- Fabricate(:domain_block, domain: 'example.com')
+ Fabricate(:domain_block, domain: 'example.com', severity: 'suspend')
allow(DomainBlockWorker).to receive(:perform_async).and_return(true)
post :create, params: { domain_block: { domain: 'example.com', severity: 'silence' } }
@@ -45,6 +45,17 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
expect(DomainBlockWorker).not_to have_received(:perform_async)
expect(response).to render_template :new
end
+
+ it 'allows upgrading a block' do
+ Fabricate(:domain_block, domain: 'example.com', severity: 'silence')
+ allow(DomainBlockWorker).to receive(:perform_async).and_return(true)
+
+ post :create, params: { domain_block: { domain: 'example.com', severity: 'silence', reject_media: true, reject_reports: true } }
+
+ expect(DomainBlockWorker).to have_received(:perform_async)
+ expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.created_msg')
+ expect(response).to redirect_to(admin_instances_path(limited: '1'))
+ end
end
describe 'DELETE #destroy' do
@@ -52,9 +63,9 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
service = double(call: true)
allow(UnblockDomainService).to receive(:new).and_return(service)
domain_block = Fabricate(:domain_block)
- delete :destroy, params: { id: domain_block.id, domain_block: { retroactive: '1' } }
+ delete :destroy, params: { id: domain_block.id }
- expect(service).to have_received(:call).with(domain_block, true)
+ expect(service).to have_received(:call).with(domain_block)
expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.destroyed_msg')
expect(response).to redirect_to(admin_instances_path(limited: '1'))
end
diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
index 727669886..19ac32612 100644
--- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
@@ -61,7 +61,7 @@ describe Api::V1::Accounts::CredentialsController do
describe 'with invalid data' do
before do
- patch :update, params: { note: 'This is too long. ' * 10 }
+ patch :update, params: { note: 'This is too long. ' * 30 }
end
it 'returns http unprocessable entity' do
diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb
index d0f82e79f..db3f4b782 100644
--- a/spec/controllers/api/v1/notifications_controller_spec.rb
+++ b/spec/controllers/api/v1/notifications_controller_spec.rb
@@ -6,6 +6,7 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:other) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) }
+ let(:third) { Fabricate(:user, account: Fabricate(:account, username: 'carol')) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
@@ -55,6 +56,7 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
mentioning_status = PostStatusService.new.call(other.account, text: 'Hello @alice')
@mention_from_status = mentioning_status.mentions.first
@favourite = FavouriteService.new.call(other.account, first_status)
+ @second_favourite = FavouriteService.new.call(third.account, first_status)
@follow = FollowService.new.call(other.account, 'alice')
end
@@ -84,6 +86,66 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
end
end
+ describe 'from specified user' do
+ before do
+ get :index, params: { account_id: third.account.id }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'includes favourite' do
+ expect(assigns(:notifications).map(&:activity)).to include(@second_favourite)
+ end
+
+ it 'excludes favourite' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@favourite)
+ end
+
+ it 'excludes mention' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@mention_from_status)
+ end
+
+ it 'excludes reblog' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@reblog_of_first_status)
+ end
+
+ it 'excludes follow' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@follow)
+ end
+ end
+
+ describe 'from nonexistent user' do
+ before do
+ get :index, params: { account_id: 'foo' }
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'excludes favourite' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@favourite)
+ end
+
+ it 'excludes second favourite' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@second_favourite)
+ end
+
+ it 'excludes mention' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@mention_from_status)
+ end
+
+ it 'excludes reblog' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@reblog_of_first_status)
+ end
+
+ it 'excludes follow' do
+ expect(assigns(:notifications).map(&:activity)).to_not include(@follow)
+ end
+ end
+
describe 'with excluded mentions' do
before do
get :index, params: { exclude_types: ['mention'] }
@@ -105,6 +167,10 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do
expect(assigns(:notifications).map(&:activity)).to include(@favourite)
end
+ it 'includes third favourite' do
+ expect(assigns(:notifications).map(&:activity)).to include(@second_favourite)
+ end
+
it 'includes follow' do
expect(assigns(:notifications).map(&:activity)).to include(@follow)
end
diff --git a/spec/controllers/api/v1/polls_controller_spec.rb b/spec/controllers/api/v1/polls_controller_spec.rb
index 2b8d5f3ef..851bccb7e 100644
--- a/spec/controllers/api/v1/polls_controller_spec.rb
+++ b/spec/controllers/api/v1/polls_controller_spec.rb
@@ -10,14 +10,26 @@ RSpec.describe Api::V1::PollsController, type: :controller do
before { allow(controller).to receive(:doorkeeper_token) { token } }
describe 'GET #show' do
- let(:poll) { Fabricate(:poll) }
+ let(:poll) { Fabricate(:poll, status: Fabricate(:status, visibility: visibility)) }
before do
get :show, params: { id: poll.id }
end
- it 'returns http success' do
- expect(response).to have_http_status(200)
+ context 'when parent status is public' do
+ let(:visibility) { 'public' }
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+ end
+
+ context 'when parent status is private' do
+ let(:visibility) { 'private' }
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
end
end
end
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index 1095df034..a4337039e 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -107,6 +107,89 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
end
end
+ context 'approval-based registrations without invite' do
+ around do |example|
+ registrations_mode = Setting.registrations_mode
+ example.run
+ Setting.registrations_mode = registrations_mode
+ end
+
+ subject do
+ Setting.registrations_mode = 'approved'
+ request.headers["Accept-Language"] = accept_language
+ post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678' } }
+ end
+
+ it 'redirects to login page' do
+ subject
+ expect(response).to redirect_to new_user_session_path
+ end
+
+ it 'creates user' do
+ subject
+ user = User.find_by(email: 'test@example.com')
+ expect(user).to_not be_nil
+ expect(user.locale).to eq(accept_language)
+ expect(user.approved).to eq(false)
+ end
+ end
+
+ context 'approval-based registrations with expired invite' do
+ around do |example|
+ registrations_mode = Setting.registrations_mode
+ example.run
+ Setting.registrations_mode = registrations_mode
+ end
+
+ subject do
+ Setting.registrations_mode = 'approved'
+ request.headers["Accept-Language"] = accept_language
+ invite = Fabricate(:invite, max_uses: nil, expires_at: 1.hour.ago)
+ post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', 'invite_code': invite.code } }
+ end
+
+ it 'redirects to login page' do
+ subject
+ expect(response).to redirect_to new_user_session_path
+ end
+
+ it 'creates user' do
+ subject
+ user = User.find_by(email: 'test@example.com')
+ expect(user).to_not be_nil
+ expect(user.locale).to eq(accept_language)
+ expect(user.approved).to eq(false)
+ end
+ end
+
+ context 'approval-based registrations with valid invite' do
+ around do |example|
+ registrations_mode = Setting.registrations_mode
+ example.run
+ Setting.registrations_mode = registrations_mode
+ end
+
+ subject do
+ Setting.registrations_mode = 'approved'
+ request.headers["Accept-Language"] = accept_language
+ invite = Fabricate(:invite, max_uses: nil, expires_at: 1.hour.from_now)
+ post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', 'invite_code': invite.code } }
+ end
+
+ it 'redirects to login page' do
+ subject
+ expect(response).to redirect_to new_user_session_path
+ end
+
+ it 'creates user' do
+ subject
+ user = User.find_by(email: 'test@example.com')
+ expect(user).to_not be_nil
+ expect(user.locale).to eq(accept_language)
+ expect(user.approved).to eq(true)
+ end
+ end
+
it 'does nothing if user already exists' do
Fabricate(:user, account: Fabricate(:account, username: 'test'))
subject
diff --git a/spec/controllers/settings/exports/following_accounts_controller_spec.rb b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
index 786769d24..78858e772 100644
--- a/spec/controllers/settings/exports/following_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
@@ -11,7 +11,7 @@ describe Settings::Exports::FollowingAccountsController do
sign_in user, scope: :user
get :index, format: :csv
- expect(response.body).to eq "username@domain\n"
+ expect(response.body).to eq "Account address,Show boosts\nusername@domain,true\n"
end
end
end
diff --git a/spec/controllers/settings/exports/muted_accounts_controller_spec.rb b/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
index f42d7881e..642f0a9b8 100644
--- a/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
@@ -11,7 +11,7 @@ describe Settings::Exports::MutedAccountsController do
sign_in user, scope: :user
get :index, format: :csv
- expect(response.body).to eq "username@domain\n"
+ expect(response.body).to eq "Account address,Hide notifications\nusername@domain,true\n"
end
end
end
diff --git a/spec/controllers/settings/identity_proofs_controller_spec.rb b/spec/controllers/settings/identity_proofs_controller_spec.rb
index 46af3ccf4..2a0f91088 100644
--- a/spec/controllers/settings/identity_proofs_controller_spec.rb
+++ b/spec/controllers/settings/identity_proofs_controller_spec.rb
@@ -1,6 +1,7 @@
require 'rails_helper'
describe Settings::IdentityProofsController do
+ include RoutingHelper
render_views
let(:user) { Fabricate(:user) }
@@ -9,8 +10,15 @@ describe Settings::IdentityProofsController do
let(:provider) { 'keybase' }
let(:findable_id) { Faker::Number.number(5) }
let(:unfindable_id) { Faker::Number.number(5) }
+ let(:new_proof_params) do
+ { provider: provider, provider_username: kbname, token: valid_token, username: user.account.username }
+ end
+ let(:status_text) { "i just proved that i am also #{kbname} on #{provider}." }
+ let(:status_posting_params) do
+ { post_status: '0', status_text: status_text }
+ end
let(:postable_params) do
- { account_identity_proof: { provider: provider, provider_username: kbname, token: valid_token } }
+ { account_identity_proof: new_proof_params.merge(status_posting_params) }
end
before do
@@ -19,10 +27,41 @@ describe Settings::IdentityProofsController do
end
describe 'new proof creation' do
- context 'GET #new with no existing proofs' do
- it 'redirects to :index' do
- get :new
- expect(response).to redirect_to settings_identity_proofs_path
+ context 'GET #new' do
+ before do
+ allow_any_instance_of(ProofProvider::Keybase::Badge).to receive(:avatar_url) { full_pack_url('media/images/void.png') }
+ end
+
+ context 'with all of the correct params' do
+ it 'renders the template' do
+ get :new, params: new_proof_params
+ expect(response).to render_template(:new)
+ end
+ end
+
+ context 'without any params' do
+ it 'redirects to :index' do
+ get :new, params: {}
+ expect(response).to redirect_to settings_identity_proofs_path
+ end
+ end
+
+ context 'with params to prove a different, not logged-in user' do
+ let(:wrong_user_params) { new_proof_params.merge(username: 'someone_else') }
+
+ it 'shows a helpful alert' do
+ get :new, params: wrong_user_params
+ expect(flash[:alert]).to eq I18n.t('identity_proofs.errors.wrong_user', proving: 'someone_else', current: user.account.username)
+ end
+ end
+
+ context 'with params to prove the same username cased differently' do
+ let(:capitalized_username) { new_proof_params.merge(username: user.account.username.upcase) }
+
+ it 'renders the new template' do
+ get :new, params: capitalized_username
+ expect(response).to render_template(:new)
+ end
end
end
@@ -44,6 +83,23 @@ describe Settings::IdentityProofsController do
post :create, params: postable_params
expect(response).to redirect_to root_url
end
+
+ it 'does not post a status' do
+ expect(PostStatusService).not_to receive(:new)
+ post :create, params: postable_params
+ end
+
+ context 'and the user has requested to post a status' do
+ let(:postable_params_with_status) do
+ postable_params.tap { |p| p[:account_identity_proof][:post_status] = '1' }
+ end
+
+ it 'posts a status' do
+ expect_any_instance_of(PostStatusService).to receive(:call).with(user.account, text: status_text)
+
+ post :create, params: postable_params_with_status
+ end
+ end
end
context 'when saving fails' do
diff --git a/spec/controllers/settings/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb
similarity index 86%
rename from spec/controllers/settings/notifications_controller_spec.rb
rename to spec/controllers/settings/preferences/notifications_controller_spec.rb
index 981ef674e..02180b383 100644
--- a/spec/controllers/settings/notifications_controller_spec.rb
+++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb
@@ -1,6 +1,6 @@
require 'rails_helper'
-describe Settings::NotificationsController do
+describe Settings::Preferences::NotificationsController do
render_views
let(:user) { Fabricate(:user) }
@@ -28,7 +28,7 @@ describe Settings::NotificationsController do
}
}
- expect(response).to redirect_to(settings_notifications_path)
+ expect(response).to redirect_to(settings_preferences_notifications_path)
user.reload
expect(user.settings['notification_emails']['follow']).to be true
expect(user.settings['interactions']['must_be_follower']).to be false
diff --git a/spec/controllers/settings/preferences_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb
similarity index 83%
rename from spec/controllers/settings/preferences_controller_spec.rb
rename to spec/controllers/settings/preferences/other_controller_spec.rb
index f2028cf39..1b556ac7f 100644
--- a/spec/controllers/settings/preferences_controller_spec.rb
+++ b/spec/controllers/settings/preferences/other_controller_spec.rb
@@ -1,6 +1,6 @@
require 'rails_helper'
-describe Settings::PreferencesController do
+describe Settings::Preferences::OtherController do
render_views
let(:user) { Fabricate(:user, filtered_languages: []) }
@@ -20,7 +20,7 @@ describe Settings::PreferencesController do
it 'updates the user record' do
put :update, params: { user: { locale: 'en', chosen_languages: ['es', 'fr', ''] } }
- expect(response).to redirect_to(settings_preferences_path)
+ expect(response).to redirect_to(settings_preferences_other_path)
user.reload
expect(user.locale).to eq 'en'
expect(user.chosen_languages).to eq ['es', 'fr']
@@ -37,7 +37,7 @@ describe Settings::PreferencesController do
}
}
- expect(response).to redirect_to(settings_preferences_path)
+ expect(response).to redirect_to(settings_preferences_other_path)
user.reload
expect(user.settings['boost_modal']).to be true
expect(user.settings['delete_modal']).to be false
diff --git a/spec/fabricators/account_fabricator.rb b/spec/fabricators/account_fabricator.rb
index e092e6c09..f12464ef3 100644
--- a/spec/fabricators/account_fabricator.rb
+++ b/spec/fabricators/account_fabricator.rb
@@ -3,8 +3,11 @@ public_key = keypair.public_key.to_pem
private_key = keypair.to_pem
Fabricator(:account) do
+ transient :suspended, :silenced
username { sequence(:username) { |i| "#{Faker::Internet.user_name(nil, %w(_))}#{i}" } }
last_webfingered_at { Time.now.utc }
public_key { public_key }
private_key { private_key }
+ suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil }
+ silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil }
end
diff --git a/spec/fabricators/assets/TEAPOT b/spec/fabricators/assets/TEAPOT
new file mode 100644
index 000000000..e624ecb4c
--- /dev/null
+++ b/spec/fabricators/assets/TEAPOT
@@ -0,0 +1,6 @@
+This "Utah teapot" photograph is licensed under the Creative Commons
+Attribution-Share Alike 3.0 Unported license:
+ https://creativecommons.org/licenses/by-sa/3.0/deed.en
+
+Original source of work:
+ https://commons.wikimedia.org/wiki/File:Utah_teapot_simple_2.png
diff --git a/spec/fabricators/assets/utah_teapot.png b/spec/fabricators/assets/utah_teapot.png
new file mode 100644
index 000000000..6708361e5
Binary files /dev/null and b/spec/fabricators/assets/utah_teapot.png differ
diff --git a/spec/fabricators/site_upload_fabricator.rb b/spec/fabricators/site_upload_fabricator.rb
index 4a171486f..2efc57e28 100644
--- a/spec/fabricators/site_upload_fabricator.rb
+++ b/spec/fabricators/site_upload_fabricator.rb
@@ -1,2 +1,3 @@
Fabricator(:site_upload) do
+ file { File.open(File.join(Rails.root, 'spec', 'fabricators', 'assets', 'utah_teapot.png')) }
end
diff --git a/spec/fabricators/user_invite_request_fabricator.rb b/spec/fabricators/user_invite_request_fabricator.rb
new file mode 100644
index 000000000..5cc6ae56f
--- /dev/null
+++ b/spec/fabricators/user_invite_request_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:user_invite_request) do
+ user
+ text { Faker::Lorem.sentence }
+end
diff --git a/spec/fixtures/files/mute-imports.txt b/spec/fixtures/files/mute-imports.txt
new file mode 100644
index 000000000..125cbd384
--- /dev/null
+++ b/spec/fixtures/files/mute-imports.txt
@@ -0,0 +1,4 @@
+bob
+
+eve@example.com
+
diff --git a/spec/fixtures/files/new-following-imports.txt b/spec/fixtures/files/new-following-imports.txt
new file mode 100644
index 000000000..5ea6c7346
--- /dev/null
+++ b/spec/fixtures/files/new-following-imports.txt
@@ -0,0 +1,4 @@
+Account address,Show boosts
+bob,true
+eve@example.com,false
+
diff --git a/spec/fixtures/files/new-mute-imports.txt b/spec/fixtures/files/new-mute-imports.txt
new file mode 100644
index 000000000..c1c9bca9b
--- /dev/null
+++ b/spec/fixtures/files/new-mute-imports.txt
@@ -0,0 +1,4 @@
+Account address,Hide notifications
+bob,true
+eve@example.com,false
+
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index 926083a4f..60fd96a18 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -58,21 +58,6 @@ RSpec.describe ActivityPub::Activity::Announce do
end
end
- context 'self-boost of a previously unknown status with missing attributedTo' do
- let(:object_json) do
- {
- id: 'https://example.com/actor#bar',
- type: 'Note',
- content: 'Lorem ipsum',
- to: 'http://example.com/followers',
- }
- end
-
- it 'creates a reblog by sender of status' do
- expect(sender.reblogged?(sender.statuses.first)).to be true
- end
- end
-
context 'self-boost of a previously unknown status with correct attributedTo' do
let(:object_json) do
{
@@ -122,6 +107,7 @@ RSpec.describe ActivityPub::Activity::Announce do
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
+ attributedTo: 'https://example.com/actor',
}
end
@@ -141,6 +127,7 @@ RSpec.describe ActivityPub::Activity::Announce do
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
+ attributedTo: 'https://example.com/actor',
}
end
@@ -161,6 +148,7 @@ RSpec.describe ActivityPub::Activity::Announce do
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
+ attributedTo: 'https://example.com/actor',
}
end
diff --git a/spec/lib/activitypub/tag_manager_spec.rb b/spec/lib/activitypub/tag_manager_spec.rb
index 0d1665216..6d246629e 100644
--- a/spec/lib/activitypub/tag_manager_spec.rb
+++ b/spec/lib/activitypub/tag_manager_spec.rb
@@ -41,6 +41,22 @@ RSpec.describe ActivityPub::TagManager do
status.mentions.create(account: mentioned)
expect(subject.to(status)).to eq [subject.uri_for(mentioned)]
end
+
+ it "returns URIs of mentions for direct silenced author's status only if they are followers or requesting to be" do
+ bob = Fabricate(:account, username: 'bob')
+ alice = Fabricate(:account, username: 'alice')
+ foo = Fabricate(:account)
+ author = Fabricate(:account, username: 'author', silenced: true)
+ status = Fabricate(:status, visibility: :direct, account: author)
+ bob.follow!(author)
+ FollowRequest.create!(account: foo, target_account: author)
+ status.mentions.create(account: alice)
+ status.mentions.create(account: bob)
+ status.mentions.create(account: foo)
+ expect(subject.to(status)).to include(subject.uri_for(bob))
+ expect(subject.to(status)).to include(subject.uri_for(foo))
+ expect(subject.to(status)).to_not include(subject.uri_for(alice))
+ end
end
describe '#cc' do
@@ -70,6 +86,22 @@ RSpec.describe ActivityPub::TagManager do
status.mentions.create(account: mentioned)
expect(subject.cc(status)).to include(subject.uri_for(mentioned))
end
+
+ it "returns URIs of mentions for silenced author's non-direct status only if they are followers or requesting to be" do
+ bob = Fabricate(:account, username: 'bob')
+ alice = Fabricate(:account, username: 'alice')
+ foo = Fabricate(:account)
+ author = Fabricate(:account, username: 'author', silenced: true)
+ status = Fabricate(:status, visibility: :public, account: author)
+ bob.follow!(author)
+ FollowRequest.create!(account: foo, target_account: author)
+ status.mentions.create(account: alice)
+ status.mentions.create(account: bob)
+ status.mentions.create(account: foo)
+ expect(subject.cc(status)).to include(subject.uri_for(bob))
+ expect(subject.cc(status)).to include(subject.uri_for(foo))
+ expect(subject.cc(status)).to_not include(subject.uri_for(alice))
+ end
end
describe '#local_uri?' do
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index c506cd87f..5f8eb86a8 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -168,13 +168,13 @@ RSpec.describe FeedManager do
it 'returns true for status by silenced account who recipient is not following' do
status = Fabricate(:status, text: 'Hello world', account: alice)
- alice.update(silenced: true)
+ alice.silence!
expect(FeedManager.instance.filter?(:mentions, status, bob.id)).to be true
end
it 'returns false for status by followed silenced account' do
status = Fabricate(:status, text: 'Hello world', account: alice)
- alice.update(silenced: true)
+ alice.silence!
bob.follow!(alice)
expect(FeedManager.instance.filter?(:mentions, status, bob.id)).to be false
end
diff --git a/spec/lib/proof_provider/keybase/verifier_spec.rb b/spec/lib/proof_provider/keybase/verifier_spec.rb
index 4ce67da9c..0081a735d 100644
--- a/spec/lib/proof_provider/keybase/verifier_spec.rb
+++ b/spec/lib/proof_provider/keybase/verifier_spec.rb
@@ -10,7 +10,7 @@ describe ProofProvider::Keybase::Verifier do
token: '11111111111111111111111111'
)
- described_class.new('alice', 'cryptoalice', '11111111111111111111111111')
+ described_class.new('alice', 'cryptoalice', '11111111111111111111111111', my_domain)
end
let(:query_params) do
diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb
index db2d87de2..a851014d9 100644
--- a/spec/lib/status_filter_spec.rb
+++ b/spec/lib/status_filter_spec.rb
@@ -15,7 +15,7 @@ describe StatusFilter do
context 'when status account is silenced' do
before do
- status.account.update(silenced: true)
+ status.account.silence!
end
it { is_expected.to be_filtered }
@@ -65,7 +65,7 @@ describe StatusFilter do
context 'when status account is silenced' do
before do
- status.account.update(silenced: true)
+ status.account.silence!
end
it { is_expected.to be_filtered }
diff --git a/spec/mailers/previews/admin_mailer_preview.rb b/spec/mailers/previews/admin_mailer_preview.rb
new file mode 100644
index 000000000..561a56b78
--- /dev/null
+++ b/spec/mailers/previews/admin_mailer_preview.rb
@@ -0,0 +1,8 @@
+# Preview all emails at http://localhost:3000/rails/mailers/admin_mailer
+
+class AdminMailerPreview < ActionMailer::Preview
+ # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_pending_account
+ def new_pending_account
+ AdminMailer.new_pending_account(Account.first, User.pending.first)
+ end
+end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 46886b91f..379872316 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -601,8 +601,8 @@ RSpec.describe Account, type: :model do
expect(account).to model_have_error_on_field(:display_name)
end
- it 'is invalid if the note is longer than 160 characters' do
- account = Fabricate.build(:account, note: Faker::Lorem.characters(161))
+ it 'is invalid if the note is longer than 500 characters' do
+ account = Fabricate.build(:account, note: Faker::Lorem.characters(501))
account.valid?
expect(account).to model_have_error_on_field(:note)
end
@@ -647,8 +647,8 @@ RSpec.describe Account, type: :model do
expect(account).not_to model_have_error_on_field(:display_name)
end
- it 'is valid even if the note is longer than 160 characters' do
- account = Fabricate.build(:account, domain: 'domain', note: Faker::Lorem.characters(161))
+ it 'is valid even if the note is longer than 500 characters' do
+ account = Fabricate.build(:account, domain: 'domain', note: Faker::Lorem.characters(501))
account.valid?
expect(account).not_to model_have_error_on_field(:note)
end
diff --git a/spec/models/concerns/status_threading_concern_spec.rb b/spec/models/concerns/status_threading_concern_spec.rb
index 94c2d5fc2..50286ef77 100644
--- a/spec/models/concerns/status_threading_concern_spec.rb
+++ b/spec/models/concerns/status_threading_concern_spec.rb
@@ -35,7 +35,7 @@ describe StatusThreadingConcern do
end
it 'does not return conversation history from silenced and not followed users' do
- jeff.update(silenced: true)
+ jeff.silence!
expect(reply3.ancestors(4, viewer)).to_not include(reply1)
end
@@ -110,7 +110,7 @@ describe StatusThreadingConcern do
end
it 'does not return replies from silenced and not followed users' do
- jeff.update(silenced: true)
+ jeff.silence!
expect(status.descendants(4, viewer)).to_not include(reply3)
end
diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb
index 89cadccfe..0035fd0ff 100644
--- a/spec/models/domain_block_spec.rb
+++ b/spec/models/domain_block_spec.rb
@@ -36,4 +36,35 @@ RSpec.describe DomainBlock, type: :model do
expect(DomainBlock.blocked?('domain')).to eq false
end
end
+
+ describe 'stricter_than?' do
+ it 'returns true if the new block has suspend severity while the old has lower severity' do
+ suspend = DomainBlock.new(domain: 'domain', severity: :suspend)
+ silence = DomainBlock.new(domain: 'domain', severity: :silence)
+ noop = DomainBlock.new(domain: 'domain', severity: :noop)
+ expect(suspend.stricter_than?(silence)).to be true
+ expect(suspend.stricter_than?(noop)).to be true
+ end
+
+ it 'returns false if the new block has lower severity than the old one' do
+ suspend = DomainBlock.new(domain: 'domain', severity: :suspend)
+ silence = DomainBlock.new(domain: 'domain', severity: :silence)
+ noop = DomainBlock.new(domain: 'domain', severity: :noop)
+ expect(silence.stricter_than?(suspend)).to be false
+ expect(noop.stricter_than?(suspend)).to be false
+ expect(noop.stricter_than?(silence)).to be false
+ end
+
+ it 'returns false if the new block does is less strict regarding reports' do
+ older = DomainBlock.new(domain: 'domain', severity: :silence, reject_reports: true)
+ newer = DomainBlock.new(domain: 'domain', severity: :silence, reject_reports: false)
+ expect(newer.stricter_than?(older)).to be false
+ end
+
+ it 'returns false if the new block does is less strict regarding media' do
+ older = DomainBlock.new(domain: 'domain', severity: :silence, reject_media: true)
+ newer = DomainBlock.new(domain: 'domain', severity: :silence, reject_media: false)
+ expect(newer.stricter_than?(older)).to be false
+ end
+ end
end
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 277dcc526..4e6b824bb 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -21,20 +21,22 @@ describe Export do
target_accounts.each(&account.method(:mute!))
export = Export.new(account).to_muted_accounts_csv
- results = export.strip.split
+ results = export.strip.split("\n")
- expect(results.size).to eq 2
- expect(results.first).to eq 'one@local.host'
+ expect(results.size).to eq 3
+ expect(results.first).to eq 'Account address,Hide notifications'
+ expect(results.second).to eq 'one@local.host,true'
end
it 'returns a csv of the following accounts' do
target_accounts.each(&account.method(:follow!))
export = Export.new(account).to_following_accounts_csv
- results = export.strip.split
+ results = export.strip.split("\n")
- expect(results.size).to eq 2
- expect(results.first).to eq 'one@local.host'
+ expect(results.size).to eq 3
+ expect(results.first).to eq 'Account address,Show boosts'
+ expect(results.second).to eq 'one@local.host,true'
end
end
diff --git a/spec/models/user_invite_request_spec.rb b/spec/models/user_invite_request_spec.rb
new file mode 100644
index 000000000..1be38d8a4
--- /dev/null
+++ b/spec/models/user_invite_request_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe UserInviteRequest, type: :model do
+end
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb
index d3318b2ed..5141e3f16 100644
--- a/spec/services/activitypub/process_account_service_spec.rb
+++ b/spec/services/activitypub/process_account_service_spec.rb
@@ -28,4 +28,49 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
expect(account.fields[1].value).to eq 'Unit test'
end
end
+
+ context 'identity proofs' do
+ let(:payload) do
+ {
+ id: 'https://foo.test',
+ type: 'Actor',
+ inbox: 'https://foo.test/inbox',
+ attachment: [
+ { type: 'IdentityProof', name: 'Alice', signatureAlgorithm: 'keybase', signatureValue: 'a' * 66 },
+ ],
+ }.with_indifferent_access
+ end
+
+ it 'parses out of attachment' do
+ allow(ProofProvider::Keybase::Worker).to receive(:perform_async)
+
+ account = subject.call('alice', 'example.com', payload)
+
+ expect(account.identity_proofs.count).to eq 1
+
+ proof = account.identity_proofs.first
+
+ expect(proof.provider).to eq 'keybase'
+ expect(proof.provider_username).to eq 'Alice'
+ expect(proof.token).to eq 'a' * 66
+ end
+
+ it 'removes no longer present proofs' do
+ allow(ProofProvider::Keybase::Worker).to receive(:perform_async)
+
+ account = Fabricate(:account, username: 'alice', domain: 'example.com')
+ old_proof = Fabricate(:account_identity_proof, account: account, provider: 'keybase', provider_username: 'Bob', token: 'b' * 66)
+
+ subject.call('alice', 'example.com', payload)
+
+ expect(account.identity_proofs.count).to eq 1
+ expect(account.identity_proofs.find_by(id: old_proof.id)).to be_nil
+ end
+
+ it 'queues a validity check on the proof' do
+ allow(ProofProvider::Keybase::Worker).to receive(:perform_async)
+ account = subject.call('alice', 'example.com', payload)
+ expect(ProofProvider::Keybase::Worker).to have_received(:perform_async)
+ end
+ end
end
diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb
index 7ef9e2770..c689b57e3 100644
--- a/spec/services/block_domain_service_spec.rb
+++ b/spec/services/block_domain_service_spec.rb
@@ -1,20 +1,14 @@
require 'rails_helper'
RSpec.describe BlockDomainService, type: :service do
- let(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
- let(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
- let(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
- let(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
+ let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
+ let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
+ let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
+ let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
+ let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
subject { BlockDomainService.new }
- before do
- bad_account
- bad_status1
- bad_status2
- bad_attachment
- end
-
describe 'for a suspension' do
before do
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :suspend))
@@ -28,6 +22,18 @@ RSpec.describe BlockDomainService, type: :service do
expect(Account.find_remote('badguy666', 'evil.org').suspended?).to be true
end
+ it 'records suspension date appropriately' do
+ expect(Account.find_remote('badguy666', 'evil.org').suspended_at).to eq DomainBlock.find_by(domain: 'evil.org').created_at
+ end
+
+ it 'keeps already-banned accounts banned' do
+ expect(Account.find_remote('badguy', 'evil.org').suspended?).to be true
+ end
+
+ it 'does not overwrite suspension date of already-banned accounts' do
+ expect(Account.find_remote('badguy', 'evil.org').suspended_at).to_not eq DomainBlock.find_by(domain: 'evil.org').created_at
+ end
+
it 'removes the remote accounts\'s statuses and media attachments' do
expect { bad_status1.reload }.to raise_exception ActiveRecord::RecordNotFound
expect { bad_status2.reload }.to raise_exception ActiveRecord::RecordNotFound
@@ -48,6 +54,18 @@ RSpec.describe BlockDomainService, type: :service do
expect(Account.find_remote('badguy666', 'evil.org').silenced?).to be true
end
+ it 'records suspension date appropriately' do
+ expect(Account.find_remote('badguy666', 'evil.org').silenced_at).to eq DomainBlock.find_by(domain: 'evil.org').created_at
+ end
+
+ it 'keeps already-banned accounts banned' do
+ expect(Account.find_remote('badguy', 'evil.org').silenced?).to be true
+ end
+
+ it 'does not overwrite suspension date of already-banned accounts' do
+ expect(Account.find_remote('badguy', 'evil.org').silenced_at).to_not eq DomainBlock.find_by(domain: 'evil.org').created_at
+ end
+
it 'leaves the domains status and attachements, but clears media' do
expect { bad_status1.reload }.not_to raise_error
expect { bad_status2.reload }.not_to raise_error
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
new file mode 100644
index 000000000..5cf2dadf0
--- /dev/null
+++ b/spec/services/import_service_spec.rb
@@ -0,0 +1,169 @@
+require 'rails_helper'
+
+RSpec.describe ImportService, type: :service do
+ let!(:account) { Fabricate(:account, locked: false) }
+ let!(:bob) { Fabricate(:account, username: 'bob', locked: false) }
+ let!(:eve) { Fabricate(:account, username: 'eve', domain: 'example.com', locked: false) }
+
+ context 'import old-style list of muted users' do
+ subject { ImportService.new }
+
+ let(:csv) { attachment_fixture('mute-imports.txt') }
+
+ describe 'when no accounts are muted' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+ it 'mutes the listed accounts, including notifications' do
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ end
+ end
+
+ describe 'when some accounts are muted and overwrite is not set' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+
+ it 'mutes the listed accounts, including notifications' do
+ account.mute!(bob, notifications: false)
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ end
+ end
+
+ describe 'when some accounts are muted and overwrite is set' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv, overwrite: true) }
+
+ it 'mutes the listed accounts, including notifications' do
+ account.mute!(bob, notifications: false)
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ end
+ end
+ end
+
+ context 'import new-style list of muted users' do
+ subject { ImportService.new }
+
+ let(:csv) { attachment_fixture('new-mute-imports.txt') }
+
+ describe 'when no accounts are muted' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+ it 'mutes the listed accounts, respecting notifications' do
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false
+ end
+ end
+
+ describe 'when some accounts are muted and overwrite is not set' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+
+ it 'mutes the listed accounts, respecting notifications' do
+ account.mute!(bob, notifications: true)
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false
+ end
+ end
+
+ describe 'when some accounts are muted and overwrite is set' do
+ let(:import) { Import.create(account: account, type: 'muting', data: csv, overwrite: true) }
+
+ it 'mutes the listed accounts, respecting notifications' do
+ account.mute!(bob, notifications: true)
+ subject.call(import)
+ expect(account.muting.count).to eq 2
+ expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true
+ expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false
+ end
+ end
+ end
+
+ context 'import old-style list of followed users' do
+ subject { ImportService.new }
+
+ let(:csv) { attachment_fixture('mute-imports.txt') }
+
+ before do
+ allow(NotificationWorker).to receive(:perform_async)
+ end
+
+ describe 'when no accounts are followed' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv) }
+ it 'follows the listed accounts, including boosts' do
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ end
+ end
+
+ describe 'when some accounts are already followed and overwrite is not set' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv) }
+
+ it 'follows the listed accounts, including notifications' do
+ account.follow!(bob, reblogs: false)
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ end
+ end
+
+ describe 'when some accounts are already followed and overwrite is set' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv, overwrite: true) }
+
+ it 'mutes the listed accounts, including notifications' do
+ account.follow!(bob, reblogs: false)
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ end
+ end
+ end
+
+ context 'import new-style list of followed users' do
+ subject { ImportService.new }
+
+ let(:csv) { attachment_fixture('new-following-imports.txt') }
+
+ before do
+ allow(NotificationWorker).to receive(:perform_async)
+ end
+
+ describe 'when no accounts are followed' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv) }
+ it 'follows the listed accounts, respecting boosts' do
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ expect(Follow.find_by(account: account, target_account: eve).show_reblogs).to be false
+ end
+ end
+
+ describe 'when some accounts are already followed and overwrite is not set' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv) }
+
+ it 'mutes the listed accounts, respecting notifications' do
+ account.follow!(bob, reblogs: true)
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ expect(Follow.find_by(account: account, target_account: eve).show_reblogs).to be false
+ end
+ end
+
+ describe 'when some accounts are already followed and overwrite is set' do
+ let(:import) { Import.create(account: account, type: 'following', data: csv, overwrite: true) }
+
+ it 'mutes the listed accounts, respecting notifications' do
+ account.follow!(bob, reblogs: true)
+ subject.call(import)
+ expect(account.following.count).to eq 2
+ expect(Follow.find_by(account: account, target_account: bob).show_reblogs).to be true
+ expect(Follow.find_by(account: account, target_account: eve).show_reblogs).to be false
+ end
+ end
+ end
+end
diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb
index 39a681abb..440018ac9 100644
--- a/spec/services/notify_service_spec.rb
+++ b/spec/services/notify_service_spec.rb
@@ -39,12 +39,12 @@ RSpec.describe NotifyService, type: :service do
end
it 'does not notify when sender is silenced and not followed' do
- sender.update(silenced: true)
+ sender.silence!
is_expected.to_not change(Notification, :count)
end
it 'does not notify when recipient is suspended' do
- recipient.update(suspended: true)
+ recipient.suspend!
is_expected.to_not change(Notification, :count)
end
@@ -105,7 +105,7 @@ RSpec.describe NotifyService, type: :service do
end
it 'shows reblogs when disabled' do
- recipient.follow!(sender, reblogs: true)
+ recipient.follow!(sender, reblogs: false)
is_expected.to change(Notification, :count)
end
end
diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb
index 963924fa9..8a6bb44ac 100644
--- a/spec/services/process_mentions_service_spec.rb
+++ b/spec/services/process_mentions_service_spec.rb
@@ -1,10 +1,11 @@
require 'rails_helper'
RSpec.describe ProcessMentionsService, type: :service do
- let(:account) { Fabricate(:account, username: 'alice') }
- let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}") }
+ let(:account) { Fabricate(:account, username: 'alice') }
+ let(:visibility) { :public }
+ let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}", visibility: visibility) }
- context 'OStatus' do
+ context 'OStatus with public toot' do
let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com') }
subject { ProcessMentionsService.new }
@@ -23,6 +24,26 @@ RSpec.describe ProcessMentionsService, type: :service do
end
end
+ context 'OStatus with private toot' do
+ let(:visibility) { :private }
+ let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com') }
+
+ subject { ProcessMentionsService.new }
+
+ before do
+ stub_request(:post, remote_user.salmon_url)
+ subject.call(status)
+ end
+
+ it 'does not create a mention' do
+ expect(remote_user.mentions.where(status: status).count).to eq 0
+ end
+
+ it 'does not post to remote user\'s Salmon end point' do
+ expect(a_request(:post, remote_user.salmon_url)).to_not have_been_made
+ end
+ end
+
context 'ActivityPub' do
let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb
index 9e66c6643..9d84c41d5 100644
--- a/spec/services/reblog_service_spec.rb
+++ b/spec/services/reblog_service_spec.rb
@@ -4,10 +4,9 @@ RSpec.describe ReblogService, type: :service do
let(:alice) { Fabricate(:account, username: 'alice') }
context 'creates a reblog with appropriate visibility' do
- let(:bob) { Fabricate(:account, username: 'bob') }
let(:visibility) { :public }
let(:reblog_visibility) { :public }
- let(:status) { Fabricate(:status, account: bob, visibility: visibility) }
+ let(:status) { Fabricate(:status, account: alice, visibility: visibility) }
subject { ReblogService.new }
@@ -22,6 +21,15 @@ RSpec.describe ReblogService, type: :service do
expect(status.reblogs.first.visibility).to eq 'private'
end
end
+
+ describe 'public reblogs of private toots should remain private' do
+ let(:visibility) { :private }
+ let(:reblog_visibility) { :public }
+
+ it 'reblogs privately' do
+ expect(status.reblogs.first.visibility).to eq 'private'
+ end
+ end
end
context 'OStatus' do
diff --git a/spec/services/unblock_domain_service_spec.rb b/spec/services/unblock_domain_service_spec.rb
index 8e8893d63..619aefb5c 100644
--- a/spec/services/unblock_domain_service_spec.rb
+++ b/spec/services/unblock_domain_service_spec.rb
@@ -7,36 +7,33 @@ describe UnblockDomainService, type: :service do
describe 'call' do
before do
- @silenced = Fabricate(:account, domain: 'example.com', silenced: true)
- @suspended = Fabricate(:account, domain: 'example.com', suspended: true)
+ @independently_suspended = Fabricate(:account, domain: 'example.com', suspended_at: 1.hour.ago)
+ @independently_silenced = Fabricate(:account, domain: 'example.com', silenced_at: 1.hour.ago)
@domain_block = Fabricate(:domain_block, domain: 'example.com')
+ @silenced = Fabricate(:account, domain: 'example.com', silenced_at: @domain_block.created_at)
+ @suspended = Fabricate(:account, domain: 'example.com', suspended_at: @domain_block.created_at)
end
- context 'without retroactive' do
- it 'removes the domain block' do
- subject.call(@domain_block, false)
- expect_deleted_domain_block
- end
+ it 'unsilences accounts and removes block' do
+ @domain_block.update(severity: :silence)
+
+ subject.call(@domain_block)
+ expect_deleted_domain_block
+ expect(@silenced.reload.silenced?).to be false
+ expect(@suspended.reload.suspended?).to be true
+ expect(@independently_suspended.reload.suspended?).to be true
+ expect(@independently_silenced.reload.silenced?).to be true
end
- context 'with retroactive' do
- it 'unsilences accounts and removes block' do
- @domain_block.update(severity: :silence)
+ it 'unsuspends accounts and removes block' do
+ @domain_block.update(severity: :suspend)
- subject.call(@domain_block, true)
- expect_deleted_domain_block
- expect(@silenced.reload.silenced).to be false
- expect(@suspended.reload.suspended).to be true
- end
-
- it 'unsuspends accounts and removes block' do
- @domain_block.update(severity: :suspend)
-
- subject.call(@domain_block, true)
- expect_deleted_domain_block
- expect(@suspended.reload.suspended).to be false
- expect(@silenced.reload.silenced).to be true
- end
+ subject.call(@domain_block)
+ expect_deleted_domain_block
+ expect(@suspended.reload.suspended?).to be false
+ expect(@silenced.reload.silenced?).to be true
+ expect(@independently_suspended.reload.suspended?).to be true
+ expect(@independently_silenced.reload.silenced?).to be true
end
end
diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb
index d2e442f4a..ccc5dc0f4 100644
--- a/spec/validators/blacklisted_email_validator_spec.rb
+++ b/spec/validators/blacklisted_email_validator_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do
let(:errors) { double(add: nil) }
before do
+ allow(user).to receive(:valid_invitation?) { false }
allow_any_instance_of(described_class).to receive(:blocked_email?) { blocked_email }
described_class.new.validate(user)
end
diff --git a/spec/validators/poll_validator_spec.rb b/spec/validators/poll_validator_spec.rb
new file mode 100644
index 000000000..941b83401
--- /dev/null
+++ b/spec/validators/poll_validator_spec.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe PollValidator, type: :validator do
+ describe '#validate' do
+ before do
+ validator.validate(poll)
+ end
+
+ let(:validator) { described_class.new }
+ let(:poll) { double(options: options, expires_at: expires_at, errors: errors) }
+ let(:errors) { double(add: nil) }
+ let(:options) { %w(foo bar) }
+ let(:expires_at) { 1.day.from_now }
+
+ it 'have no errors' do
+ expect(errors).not_to have_received(:add)
+ end
+
+ context 'expires just 5 min ago' do
+ let(:expires_at) { 5.minutes.from_now }
+ it 'not calls errors add' do
+ expect(errors).not_to have_received(:add)
+ end
+ end
+ end
+end
diff --git a/streaming/index.js b/streaming/index.js
index 2a51a1a0d..639867b28 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -7,7 +7,7 @@ const redis = require('redis');
const pg = require('pg');
const log = require('npmlog');
const url = require('url');
-const WebSocket = require('uws');
+const { WebSocketServer } = require('@clusterws/cws');
const uuid = require('uuid');
const fs = require('fs');
@@ -195,14 +195,14 @@ const startWorker = (workerId) => {
next();
};
- const accountFromToken = (token, req, next) => {
+ const accountFromToken = (token, allowedScopes, req, next) => {
pgPool.connect((err, client, done) => {
if (err) {
next(err);
return;
}
- client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token], (err, result) => {
+ client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages, oauth_access_tokens.scopes FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token], (err, result) => {
done();
if (err) {
@@ -218,18 +218,29 @@ const startWorker = (workerId) => {
return;
}
+ const scopes = result.rows[0].scopes.split(' ');
+
+ if (allowedScopes.size > 0 && !scopes.some(scope => allowedScopes.includes(scope))) {
+ err = new Error('Access token does not cover required scopes');
+ err.statusCode = 401;
+
+ next(err);
+ return;
+ }
+
req.accountId = result.rows[0].account_id;
req.chosenLanguages = result.rows[0].chosen_languages;
+ req.allowNotifications = scopes.some(scope => ['read', 'read:notifications'].includes(scope));
next();
});
});
};
- const accountFromRequest = (req, next, required = true) => {
+ const accountFromRequest = (req, next, required = true, allowedScopes = ['read']) => {
const authorization = req.headers.authorization;
const location = url.parse(req.url, true);
- const accessToken = location.query.access_token;
+ const accessToken = location.query.access_token || req.headers['sec-websocket-protocol'];
if (!authorization && !accessToken) {
if (required) {
@@ -246,7 +257,7 @@ const startWorker = (workerId) => {
const token = authorization ? authorization.replace(/^Bearer /, '') : accessToken;
- accountFromToken(token, req, next);
+ accountFromToken(token, allowedScopes, req, next);
};
const PUBLIC_STREAMS = [
@@ -261,6 +272,16 @@ const startWorker = (workerId) => {
const wsVerifyClient = (info, cb) => {
const location = url.parse(info.req.url, true);
const authRequired = !PUBLIC_STREAMS.some(stream => stream === location.query.stream);
+ const allowedScopes = [];
+
+ if (authRequired) {
+ allowedScopes.push('read');
+ if (location.query.stream === 'user:notification') {
+ allowedScopes.push('read:notifications');
+ } else {
+ allowedScopes.push('read:statuses');
+ }
+ }
accountFromRequest(info.req, err => {
if (!err) {
@@ -269,7 +290,7 @@ const startWorker = (workerId) => {
log.error(info.req.requestId, err.toString());
cb(false, 401, 'Unauthorized');
}
- }, authRequired);
+ }, authRequired, allowedScopes);
};
const PUBLIC_ENDPOINTS = [
@@ -286,7 +307,18 @@ const startWorker = (workerId) => {
}
const authRequired = !PUBLIC_ENDPOINTS.some(endpoint => endpoint === req.path);
- accountFromRequest(req, next, authRequired);
+ const allowedScopes = [];
+
+ if (authRequired) {
+ allowedScopes.push('read');
+ if (req.path === '/api/v1/streaming/user/notification') {
+ allowedScopes.push('read:notifications');
+ } else {
+ allowedScopes.push('read:statuses');
+ }
+ }
+
+ accountFromRequest(req, next, authRequired, allowedScopes);
};
const errorMiddleware = (err, req, res, {}) => {
@@ -339,6 +371,10 @@ const startWorker = (workerId) => {
return;
}
+ if (event === 'notification' && !req.allowNotifications) {
+ return;
+ }
+
// Only messages that may require filtering are statuses, since notifications
// are already personalized and deletes do not matter
if (!needsFiltering || event !== 'update') {
@@ -536,20 +572,13 @@ const startWorker = (workerId) => {
});
});
- const wss = new WebSocket.Server({ server, verifyClient: wsVerifyClient });
+ const wss = new WebSocketServer({ server, verifyClient: wsVerifyClient });
- wss.on('connection', ws => {
- const req = ws.upgradeReq;
+ wss.on('connection', (ws, req) => {
const location = url.parse(req.url, true);
req.requestId = uuid.v4();
req.remoteAddress = ws._socket.remoteAddress;
- ws.isAlive = true;
-
- ws.on('pong', () => {
- ws.isAlive = true;
- });
-
let channel;
switch(location.query.stream) {
@@ -610,17 +639,7 @@ const startWorker = (workerId) => {
}
});
- setInterval(() => {
- wss.clients.forEach(ws => {
- if (ws.isAlive === false) {
- ws.terminate();
- return;
- }
-
- ws.isAlive = false;
- ws.ping('', false, true);
- });
- }, 30000);
+ wss.startAutoPing(30000);
attachServerWithConfig(server, address => {
log.info(`Worker ${workerId} now listening on ${address}`);
diff --git a/yarn.lock b/yarn.lock
index 9b0ec51db..c4740dabb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,7 +9,7 @@
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/core@^7.1.0", "@babel/core@^7.3.4":
+"@babel/core@^7.1.0":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b"
integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==
@@ -29,6 +29,26 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
+ integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/generator" "^7.4.4"
+ "@babel/helpers" "^7.4.4"
+ "@babel/parser" "^7.4.5"
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.4.5"
+ "@babel/types" "^7.4.4"
+ convert-source-map "^1.1.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.11"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
"@babel/generator@^7.0.0", "@babel/generator@^7.3.4":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e"
@@ -40,14 +60,14 @@
source-map "^0.5.0"
trim-right "^1.0.1"
-"@babel/generator@^7.2.2":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc"
- integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==
+"@babel/generator@^7.2.2", "@babel/generator@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
+ integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
dependencies:
- "@babel/types" "^7.2.2"
+ "@babel/types" "^7.4.4"
jsesc "^2.5.1"
- lodash "^4.17.10"
+ lodash "^4.17.11"
source-map "^0.5.0"
trim-right "^1.0.1"
@@ -74,35 +94,35 @@
"@babel/types" "^7.0.0"
esutils "^2.0.0"
-"@babel/helper-call-delegate@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a"
- integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==
+"@babel/helper-call-delegate@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
+ integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
dependencies:
- "@babel/helper-hoist-variables" "^7.0.0"
- "@babel/traverse" "^7.1.0"
- "@babel/types" "^7.0.0"
+ "@babel/helper-hoist-variables" "^7.4.4"
+ "@babel/traverse" "^7.4.4"
+ "@babel/types" "^7.4.4"
-"@babel/helper-create-class-features-plugin@^7.3.0", "@babel/helper-create-class-features-plugin@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.4.tgz#092711a7a3ad8ea34de3e541644c2ce6af1f6f0c"
- integrity sha512-uFpzw6L2omjibjxa8VGZsJUPL5wJH0zzGKpoz0ccBkzIa6C8kWNUbiBmQ0rgOKWlHJ6qzmfa6lTiGchiV8SC+g==
+"@babel/helper-create-class-features-plugin@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba"
+ integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==
dependencies:
"@babel/helper-function-name" "^7.1.0"
"@babel/helper-member-expression-to-functions" "^7.0.0"
"@babel/helper-optimise-call-expression" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.3.4"
- "@babel/helper-split-export-declaration" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.4.4"
+ "@babel/helper-split-export-declaration" "^7.4.4"
-"@babel/helper-define-map@^7.1.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
- integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==
+"@babel/helper-define-map@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a"
+ integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==
dependencies:
"@babel/helper-function-name" "^7.1.0"
- "@babel/types" "^7.0.0"
- lodash "^4.17.10"
+ "@babel/types" "^7.4.4"
+ lodash "^4.17.11"
"@babel/helper-explode-assignable-expression@^7.1.0":
version "7.1.0"
@@ -128,12 +148,12 @@
dependencies:
"@babel/types" "^7.0.0"
-"@babel/helper-hoist-variables@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88"
- integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==
+"@babel/helper-hoist-variables@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
+ integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.4.4"
"@babel/helper-member-expression-to-functions@^7.0.0":
version "7.0.0"
@@ -149,17 +169,17 @@
dependencies:
"@babel/types" "^7.0.0"
-"@babel/helper-module-transforms@^7.1.0":
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963"
- integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==
+"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8"
+ integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/helper-simple-access" "^7.1.0"
- "@babel/helper-split-export-declaration" "^7.0.0"
- "@babel/template" "^7.2.2"
- "@babel/types" "^7.2.2"
- lodash "^4.17.10"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/template" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ lodash "^4.17.11"
"@babel/helper-optimise-call-expression@^7.0.0":
version "7.0.0"
@@ -173,12 +193,12 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
-"@babel/helper-regex@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27"
- integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==
+"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2"
+ integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==
dependencies:
- lodash "^4.17.10"
+ lodash "^4.17.11"
"@babel/helper-remap-async-to-generator@^7.1.0":
version "7.1.0"
@@ -191,25 +211,15 @@
"@babel/traverse" "^7.1.0"
"@babel/types" "^7.0.0"
-"@babel/helper-replace-supers@^7.1.0":
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5"
- integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==
+"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27"
+ integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.0.0"
"@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/traverse" "^7.2.3"
- "@babel/types" "^7.0.0"
-
-"@babel/helper-replace-supers@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz#a795208e9b911a6eeb08e5891faacf06e7013e13"
- integrity sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.0.0"
- "@babel/helper-optimise-call-expression" "^7.0.0"
- "@babel/traverse" "^7.3.4"
- "@babel/types" "^7.3.4"
+ "@babel/traverse" "^7.4.4"
+ "@babel/types" "^7.4.4"
"@babel/helper-simple-access@^7.1.0":
version "7.1.0"
@@ -219,12 +229,12 @@
"@babel/template" "^7.1.0"
"@babel/types" "^7.0.0"
-"@babel/helper-split-export-declaration@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
- integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==
+"@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
+ integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
dependencies:
- "@babel/types" "^7.0.0"
+ "@babel/types" "^7.4.4"
"@babel/helper-wrap-function@^7.1.0":
version "7.2.0"
@@ -245,6 +255,15 @@
"@babel/traverse" "^7.1.5"
"@babel/types" "^7.2.0"
+"@babel/helpers@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5"
+ integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==
+ dependencies:
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
"@babel/highlight@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
@@ -254,7 +273,7 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
-"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3":
+"@babel/parser@^7.0.0":
version "7.2.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489"
integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==
@@ -264,6 +283,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c"
integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==
+"@babel/parser@^7.2.2", "@babel/parser@^7.2.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872"
+ integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==
+
"@babel/plugin-proposal-async-generator-functions@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e"
@@ -273,20 +297,20 @@
"@babel/helper-remap-async-to-generator" "^7.1.0"
"@babel/plugin-syntax-async-generators" "^7.2.0"
-"@babel/plugin-proposal-class-properties@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.4.tgz#410f5173b3dc45939f9ab30ca26684d72901405e"
- integrity sha512-lUf8D3HLs4yYlAo8zjuneLvfxN7qfKv1Yzbj5vjqaqMJxgJA3Ipwp4VUJ+OrOdz53Wbww6ahwB8UhB2HQyLotA==
+"@babel/plugin-proposal-class-properties@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce"
+ integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.3.4"
+ "@babel/helper-create-class-features-plugin" "^7.4.4"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-proposal-decorators@^7.3.0":
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz#637ba075fa780b1f75d08186e8fb4357d03a72a7"
- integrity sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==
+"@babel/plugin-proposal-decorators@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0"
+ integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.3.0"
+ "@babel/helper-create-class-features-plugin" "^7.4.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-decorators" "^7.2.0"
@@ -298,10 +322,10 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-json-strings" "^7.2.0"
-"@babel/plugin-proposal-object-rest-spread@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz#47f73cf7f2a721aad5c0261205405c642e424654"
- integrity sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA==
+"@babel/plugin-proposal-object-rest-spread@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005"
+ integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-object-rest-spread" "^7.2.0"
@@ -314,14 +338,14 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
-"@babel/plugin-proposal-unicode-property-regex@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520"
- integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==
+"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
+ integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
- regexpu-core "^4.2.0"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
"@babel/plugin-syntax-async-generators@^7.2.0":
version "7.2.0"
@@ -379,10 +403,10 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-async-to-generator@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz#4e45408d3c3da231c0e7b823f407a53a7eb3048c"
- integrity sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==
+"@babel/plugin-transform-async-to-generator@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894"
+ integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -395,26 +419,26 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-block-scoping@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz#5c22c339de234076eee96c8783b2fed61202c5c4"
- integrity sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA==
+"@babel/plugin-transform-block-scoping@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d"
+ integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
lodash "^4.17.11"
-"@babel/plugin-transform-classes@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz#dc173cb999c6c5297e0b5f2277fdaaec3739d0cc"
- integrity sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA==
+"@babel/plugin-transform-classes@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6"
+ integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.0.0"
- "@babel/helper-define-map" "^7.1.0"
+ "@babel/helper-define-map" "^7.4.4"
"@babel/helper-function-name" "^7.1.0"
"@babel/helper-optimise-call-expression" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-replace-supers" "^7.3.4"
- "@babel/helper-split-export-declaration" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.4.4"
+ "@babel/helper-split-export-declaration" "^7.4.4"
globals "^11.1.0"
"@babel/plugin-transform-computed-properties@^7.2.0":
@@ -424,21 +448,21 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-destructuring@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3"
- integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==
+"@babel/plugin-transform-destructuring@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f"
+ integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-dotall-regex@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49"
- integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==
+"@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3"
+ integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
- regexpu-core "^4.1.3"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
"@babel/plugin-transform-duplicate-keys@^7.2.0":
version "7.2.0"
@@ -455,17 +479,17 @@
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-for-of@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9"
- integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==
+"@babel/plugin-transform-for-of@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556"
+ integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-function-name@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a"
- integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==
+"@babel/plugin-transform-function-name@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad"
+ integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==
dependencies:
"@babel/helper-function-name" "^7.1.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -477,6 +501,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
+"@babel/plugin-transform-member-expression-literals@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d"
+ integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
"@babel/plugin-transform-modules-amd@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6"
@@ -485,21 +516,21 @@
"@babel/helper-module-transforms" "^7.1.0"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-modules-commonjs@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404"
- integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==
+"@babel/plugin-transform-modules-commonjs@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e"
+ integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==
dependencies:
- "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-module-transforms" "^7.4.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/helper-simple-access" "^7.1.0"
-"@babel/plugin-transform-modules-systemjs@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz#813b34cd9acb6ba70a84939f3680be0eb2e58861"
- integrity sha512-VZ4+jlGOF36S7TjKs8g4ojp4MEI+ebCQZdswWb/T9I4X84j8OtFAyjXjt/M16iIm5RIZn0UMQgg/VgIwo/87vw==
+"@babel/plugin-transform-modules-systemjs@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405"
+ integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==
dependencies:
- "@babel/helper-hoist-variables" "^7.0.0"
+ "@babel/helper-hoist-variables" "^7.4.4"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-transform-modules-umd@^7.2.0":
@@ -510,17 +541,17 @@
"@babel/helper-module-transforms" "^7.1.0"
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0":
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz#140b52985b2d6ef0cb092ef3b29502b990f9cd50"
- integrity sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106"
+ integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==
dependencies:
- regexp-tree "^0.1.0"
+ regexp-tree "^0.1.6"
-"@babel/plugin-transform-new-target@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a"
- integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==
+"@babel/plugin-transform-new-target@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5"
+ integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
@@ -532,15 +563,22 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/helper-replace-supers" "^7.1.0"
-"@babel/plugin-transform-parameters@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2"
- integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==
+"@babel/plugin-transform-parameters@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
+ integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
dependencies:
- "@babel/helper-call-delegate" "^7.1.0"
+ "@babel/helper-call-delegate" "^7.4.4"
"@babel/helper-get-function-arity" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
+"@babel/plugin-transform-property-literals@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905"
+ integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
"@babel/plugin-transform-react-display-name@^7.0.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0"
@@ -581,17 +619,24 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-jsx" "^7.2.0"
-"@babel/plugin-transform-regenerator@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz#1601655c362f5b38eead6a52631f5106b29fa46a"
- integrity sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA==
+"@babel/plugin-transform-regenerator@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f"
+ integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==
dependencies:
- regenerator-transform "^0.13.4"
+ regenerator-transform "^0.14.0"
-"@babel/plugin-transform-runtime@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.3.4.tgz#57805ac8c1798d102ecd75c03b024a5b3ea9b431"
- integrity sha512-PaoARuztAdd5MgeVjAxnIDAIUet5KpogqaefQvPOmPYCxYoaPhautxDh3aO8a4xHsKgT/b9gSxR0BKK1MIewPA==
+"@babel/plugin-transform-reserved-words@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634"
+ integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-runtime@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08"
+ integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -620,10 +665,10 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/helper-regex" "^7.0.0"
-"@babel/plugin-transform-template-literals@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b"
- integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==
+"@babel/plugin-transform-template-literals@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
+ integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
dependencies:
"@babel/helper-annotate-as-pure" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
@@ -635,63 +680,68 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
-"@babel/plugin-transform-unicode-regex@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b"
- integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==
+"@babel/plugin-transform-unicode-regex@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
+ integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/helper-regex" "^7.0.0"
- regexpu-core "^4.1.3"
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.5.4"
-"@babel/preset-env@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1"
- integrity sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==
+"@babel/preset-env@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58"
+ integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-proposal-async-generator-functions" "^7.2.0"
"@babel/plugin-proposal-json-strings" "^7.2.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.3.4"
+ "@babel/plugin-proposal-object-rest-spread" "^7.4.4"
"@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
- "@babel/plugin-proposal-unicode-property-regex" "^7.2.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
"@babel/plugin-syntax-async-generators" "^7.2.0"
"@babel/plugin-syntax-json-strings" "^7.2.0"
"@babel/plugin-syntax-object-rest-spread" "^7.2.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
"@babel/plugin-transform-arrow-functions" "^7.2.0"
- "@babel/plugin-transform-async-to-generator" "^7.3.4"
+ "@babel/plugin-transform-async-to-generator" "^7.4.4"
"@babel/plugin-transform-block-scoped-functions" "^7.2.0"
- "@babel/plugin-transform-block-scoping" "^7.3.4"
- "@babel/plugin-transform-classes" "^7.3.4"
+ "@babel/plugin-transform-block-scoping" "^7.4.4"
+ "@babel/plugin-transform-classes" "^7.4.4"
"@babel/plugin-transform-computed-properties" "^7.2.0"
- "@babel/plugin-transform-destructuring" "^7.2.0"
- "@babel/plugin-transform-dotall-regex" "^7.2.0"
+ "@babel/plugin-transform-destructuring" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
"@babel/plugin-transform-duplicate-keys" "^7.2.0"
"@babel/plugin-transform-exponentiation-operator" "^7.2.0"
- "@babel/plugin-transform-for-of" "^7.2.0"
- "@babel/plugin-transform-function-name" "^7.2.0"
+ "@babel/plugin-transform-for-of" "^7.4.4"
+ "@babel/plugin-transform-function-name" "^7.4.4"
"@babel/plugin-transform-literals" "^7.2.0"
+ "@babel/plugin-transform-member-expression-literals" "^7.2.0"
"@babel/plugin-transform-modules-amd" "^7.2.0"
- "@babel/plugin-transform-modules-commonjs" "^7.2.0"
- "@babel/plugin-transform-modules-systemjs" "^7.3.4"
+ "@babel/plugin-transform-modules-commonjs" "^7.4.4"
+ "@babel/plugin-transform-modules-systemjs" "^7.4.4"
"@babel/plugin-transform-modules-umd" "^7.2.0"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0"
- "@babel/plugin-transform-new-target" "^7.0.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5"
+ "@babel/plugin-transform-new-target" "^7.4.4"
"@babel/plugin-transform-object-super" "^7.2.0"
- "@babel/plugin-transform-parameters" "^7.2.0"
- "@babel/plugin-transform-regenerator" "^7.3.4"
+ "@babel/plugin-transform-parameters" "^7.4.4"
+ "@babel/plugin-transform-property-literals" "^7.2.0"
+ "@babel/plugin-transform-regenerator" "^7.4.5"
+ "@babel/plugin-transform-reserved-words" "^7.2.0"
"@babel/plugin-transform-shorthand-properties" "^7.2.0"
"@babel/plugin-transform-spread" "^7.2.0"
"@babel/plugin-transform-sticky-regex" "^7.2.0"
- "@babel/plugin-transform-template-literals" "^7.2.0"
+ "@babel/plugin-transform-template-literals" "^7.4.4"
"@babel/plugin-transform-typeof-symbol" "^7.2.0"
- "@babel/plugin-transform-unicode-regex" "^7.2.0"
- browserslist "^4.3.4"
+ "@babel/plugin-transform-unicode-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ browserslist "^4.6.0"
+ core-js-compat "^3.1.1"
invariant "^2.2.2"
js-levenshtein "^1.1.3"
- semver "^5.3.0"
+ semver "^5.5.0"
"@babel/preset-react@^7.0.0":
version "7.0.0"
@@ -711,21 +761,21 @@
dependencies:
regenerator-runtime "^0.12.0"
-"@babel/runtime@7.2.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0":
+"@babel/runtime@7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f"
integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==
dependencies:
regenerator-runtime "^0.12.0"
-"@babel/runtime@^7.3.4":
- version "7.3.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83"
- integrity sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
+ integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
dependencies:
- regenerator-runtime "^0.12.0"
+ regenerator-runtime "^0.13.2"
-"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
+"@babel/template@^7.0.0", "@babel/template@^7.1.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==
@@ -734,7 +784,16 @@
"@babel/parser" "^7.2.2"
"@babel/types" "^7.2.2"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.3":
+"@babel/template@^7.1.0", "@babel/template@^7.2.2", "@babel/template@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
+ integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.5":
version "7.2.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8"
integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==
@@ -749,6 +808,21 @@
globals "^11.1.0"
lodash "^4.17.10"
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5":
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216"
+ integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/generator" "^7.4.4"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/parser" "^7.4.5"
+ "@babel/types" "^7.4.4"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.11"
+
"@babel/traverse@^7.3.4":
version "7.3.4"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06"
@@ -764,7 +838,16 @@
globals "^11.1.0"
lodash "^4.17.11"
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.2.0", "@babel/types@^7.2.2":
+"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
+ integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.11"
+ to-fast-properties "^2.0.0"
+
+"@babel/types@^7.0.0-beta.49":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e"
integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==
@@ -782,6 +865,11 @@
lodash "^4.17.11"
to-fast-properties "^2.0.0"
+"@clusterws/cws@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@clusterws/cws/-/cws-0.14.0.tgz#242824b6884454001340222a836db6f6c5e62bfb"
+ integrity sha512-knZj3KZNHIAGsX7TUc/0Q5gcx2bKMMcTPsAOZomLKdK5a4o/umKFlttWRH84Yr1nVlQy+UMO23qfDR8gRZ/4cw==
+
"@cnakazawa/watch@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
@@ -790,98 +878,88 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
-"@emotion/cache@10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.0.tgz#e22eadcb770de4131ec707c84207e9e1ce210413"
- integrity sha512-1/sT6GNyvWmxCtJek8ZDV+b+a+NMDx8/61UTnnF3rqrTY7bLTjw+fmXO7WgUIH0owuWKxza/J/FfAWC/RU4G7A==
+"@emotion/babel-utils@^0.6.4":
+ version "0.6.10"
+ resolved "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.6.10.tgz#83dbf3dfa933fae9fc566e54fbb45f14674c6ccc"
+ integrity sha512-/fnkM/LTEp3jKe++T0KyTszVGWNKPNOUJfjNKLO17BzQ6QPxgbg3whayom1Qr2oLFH3V92tDymU+dT5q676uow==
dependencies:
- "@emotion/sheet" "0.9.2"
- "@emotion/stylis" "0.8.3"
- "@emotion/utils" "0.11.1"
- "@emotion/weak-memoize" "0.2.2"
+ "@emotion/hash" "^0.6.6"
+ "@emotion/memoize" "^0.6.6"
+ "@emotion/serialize" "^0.9.1"
+ convert-source-map "^1.5.1"
+ find-root "^1.1.0"
+ source-map "^0.7.2"
-"@emotion/hash@0.7.1":
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.1.tgz#9833722341379fb7d67f06a4b00ab3c37913da53"
- integrity sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA==
+"@emotion/hash@^0.6.2", "@emotion/hash@^0.6.6":
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz#62266c5f0eac6941fece302abad69f2ee7e25e44"
+ integrity sha512-ojhgxzUHZ7am3D2jHkMzPpsBAiB005GF5YU4ea+8DNPybMk01JJUM9V9YRlF/GE95tcOm8DxQvWA2jq19bGalQ==
-"@emotion/memoize@0.7.1":
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f"
- integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==
+"@emotion/memoize@^0.6.1", "@emotion/memoize@^0.6.6":
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.6.tgz#004b98298d04c7ca3b4f50ca2035d4f60d2eed1b"
+ integrity sha512-h4t4jFjtm1YV7UirAFuSuFGyLa+NNxjdkq6DpFLANNQY5rHueFZHVY+8Cu1HYVP6DrheB0kv4m5xPjo7eKT7yQ==
-"@emotion/serialize@^0.11.3":
- version "0.11.3"
- resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.3.tgz#c4af2d96e3ddb9a749b7b567daa7556bcae45af2"
- integrity sha512-6Q+XH/7kMdHwtylwZvdkOVMydaGZ989axQ56NF7urTR7eiDMLGun//pFUy31ha6QR4C6JB+KJVhZ3AEAJm9Z1g==
+"@emotion/serialize@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.9.1.tgz#a494982a6920730dba6303eb018220a2b629c145"
+ integrity sha512-zTuAFtyPvCctHBEL8KZ5lJuwBanGSutFEncqLn/m9T1a6a93smBStK+bZzcNPgj4QS8Rkw9VTwJGhRIUVO8zsQ==
dependencies:
- "@emotion/hash" "0.7.1"
- "@emotion/memoize" "0.7.1"
- "@emotion/unitless" "0.7.3"
- "@emotion/utils" "0.11.1"
- csstype "^2.5.7"
+ "@emotion/hash" "^0.6.6"
+ "@emotion/memoize" "^0.6.6"
+ "@emotion/unitless" "^0.6.7"
+ "@emotion/utils" "^0.8.2"
-"@emotion/sheet@0.9.2":
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.2.tgz#74e5c6b5e489a1ba30ab246ab5eedd96916487c4"
- integrity sha512-pVBLzIbC/QCHDKJF2E82V2H/W/B004mDFQZiyo/MSR+VC4pV5JLG0TF/zgQDFvP3fZL/5RTPGEmXlYJBMUuJ+A==
+"@emotion/stylis@^0.7.0":
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.7.1.tgz#50f63225e712d99e2b2b39c19c70fff023793ca5"
+ integrity sha512-/SLmSIkN13M//53TtNxgxo57mcJk/UJIDFRKwOiLIBEyBHEcipgR6hNMQ/59Sl4VjCJ0Z/3zeAZyvnSLPG/1HQ==
-"@emotion/stylis@0.8.3":
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.3.tgz#3ca7e9bcb31b3cb4afbaeb66156d86ee85e23246"
- integrity sha512-M3nMfJ6ndJMYloSIbYEBq6G3eqoYD41BpDOxreE8j0cb4fzz/5qvmqU9Mb2hzsXcCnIlGlWhS03PCzVGvTAe0Q==
+"@emotion/unitless@^0.6.2", "@emotion/unitless@^0.6.7":
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.7.tgz#53e9f1892f725b194d5e6a1684a7b394df592397"
+ integrity sha512-Arj1hncvEVqQ2p7Ega08uHLr1JuRYBuO5cIvcA+WWEQ5+VmkOE3ZXzl04NbQxeQpWX78G7u6MqxKuNX3wvYZxg==
-"@emotion/unitless@0.7.3":
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f"
- integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg==
+"@emotion/utils@^0.8.2":
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz#576ff7fb1230185b619a75d258cbc98f0867a8dc"
+ integrity sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw==
-"@emotion/utils@0.11.1":
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.1.tgz#8529b7412a6eb4b48bdf6e720cc1b8e6e1e17628"
- integrity sha512-8M3VN0hetwhsJ8dH8VkVy7xo5/1VoBsDOk/T4SJOeXwTO1c4uIqVNx2qyecLFnnUWD5vvUqHQ1gASSeUN6zcTg==
-
-"@emotion/weak-memoize@0.2.2":
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.2.tgz#63985d3d8b02530e0869962f4da09142ee8e200e"
- integrity sha512-n/VQ4mbfr81aqkx/XmVicOLjviMuy02eenSdJY33SVA7S2J42EU0P1H0mOogfYedb3wXA0d/LVtBrgTSm04WEA==
-
-"@jest/console@^24.3.0":
- version "24.3.0"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.3.0.tgz#7bd920d250988ba0bf1352c4493a48e1cb97671e"
- integrity sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==
+"@jest/console@^24.7.1":
+ version "24.7.1"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545"
+ integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==
dependencies:
"@jest/source-map" "^24.3.0"
- "@types/node" "*"
chalk "^2.0.1"
slash "^2.0.0"
-"@jest/core@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.5.0.tgz#2cefc6a69e9ebcae1da8f7c75f8a257152ba1ec0"
- integrity sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ==
+"@jest/core@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b"
+ integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==
dependencies:
- "@jest/console" "^24.3.0"
- "@jest/reporters" "^24.5.0"
- "@jest/test-result" "^24.5.0"
- "@jest/transform" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/console" "^24.7.1"
+ "@jest/reporters" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
ansi-escapes "^3.0.0"
chalk "^2.0.1"
exit "^0.1.2"
graceful-fs "^4.1.15"
- jest-changed-files "^24.5.0"
- jest-config "^24.5.0"
- jest-haste-map "^24.5.0"
- jest-message-util "^24.5.0"
+ jest-changed-files "^24.8.0"
+ jest-config "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-message-util "^24.8.0"
jest-regex-util "^24.3.0"
- jest-resolve-dependencies "^24.5.0"
- jest-runner "^24.5.0"
- jest-runtime "^24.5.0"
- jest-snapshot "^24.5.0"
- jest-util "^24.5.0"
- jest-validate "^24.5.0"
- jest-watcher "^24.5.0"
+ jest-resolve-dependencies "^24.8.0"
+ jest-runner "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
+ jest-watcher "^24.8.0"
micromatch "^3.1.10"
p-each-series "^1.0.0"
pirates "^4.0.1"
@@ -889,48 +967,47 @@
rimraf "^2.5.4"
strip-ansi "^5.0.0"
-"@jest/environment@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.5.0.tgz#a2557f7808767abea3f9e4cc43a172122a63aca8"
- integrity sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA==
+"@jest/environment@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac"
+ integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==
dependencies:
- "@jest/fake-timers" "^24.5.0"
- "@jest/transform" "^24.5.0"
- "@jest/types" "^24.5.0"
- "@types/node" "*"
- jest-mock "^24.5.0"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
-"@jest/fake-timers@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.5.0.tgz#4a29678b91fd0876144a58f8d46e6c62de0266f0"
- integrity sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw==
+"@jest/fake-timers@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1"
+ integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==
dependencies:
- "@jest/types" "^24.5.0"
- "@types/node" "*"
- jest-message-util "^24.5.0"
- jest-mock "^24.5.0"
+ "@jest/types" "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-mock "^24.8.0"
-"@jest/reporters@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.5.0.tgz#9363a210d0daa74696886d9cb294eb8b3ad9b4d9"
- integrity sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q==
+"@jest/reporters@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729"
+ integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==
dependencies:
- "@jest/environment" "^24.5.0"
- "@jest/test-result" "^24.5.0"
- "@jest/transform" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
chalk "^2.0.1"
exit "^0.1.2"
glob "^7.1.2"
- istanbul-api "^2.1.1"
istanbul-lib-coverage "^2.0.2"
istanbul-lib-instrument "^3.0.1"
+ istanbul-lib-report "^2.0.4"
istanbul-lib-source-maps "^3.0.1"
- jest-haste-map "^24.5.0"
- jest-resolve "^24.5.0"
- jest-runtime "^24.5.0"
- jest-util "^24.5.0"
- jest-worker "^24.4.0"
+ istanbul-reports "^2.1.1"
+ jest-haste-map "^24.8.0"
+ jest-resolve "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
node-notifier "^5.2.1"
slash "^2.0.0"
source-map "^0.6.0"
@@ -945,42 +1022,53 @@
graceful-fs "^4.1.15"
source-map "^0.6.0"
-"@jest/test-result@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.5.0.tgz#ab66fb7741a04af3363443084e72ea84861a53f2"
- integrity sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A==
+"@jest/test-result@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3"
+ integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==
dependencies:
- "@jest/console" "^24.3.0"
- "@jest/types" "^24.5.0"
- "@types/istanbul-lib-coverage" "^1.1.0"
+ "@jest/console" "^24.7.1"
+ "@jest/types" "^24.8.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
-"@jest/transform@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.5.0.tgz#6709fc26db918e6af63a985f2cc3c464b4cf99d9"
- integrity sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w==
+"@jest/test-sequencer@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b"
+ integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==
+ dependencies:
+ "@jest/test-result" "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-runner "^24.8.0"
+ jest-runtime "^24.8.0"
+
+"@jest/transform@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5"
+ integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
babel-plugin-istanbul "^5.1.0"
chalk "^2.0.1"
convert-source-map "^1.4.0"
fast-json-stable-stringify "^2.0.0"
graceful-fs "^4.1.15"
- jest-haste-map "^24.5.0"
+ jest-haste-map "^24.8.0"
jest-regex-util "^24.3.0"
- jest-util "^24.5.0"
+ jest-util "^24.8.0"
micromatch "^3.1.10"
realpath-native "^1.1.0"
slash "^2.0.0"
source-map "^0.6.1"
write-file-atomic "2.4.1"
-"@jest/types@^24.5.0":
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.5.0.tgz#feee214a4d0167b0ca447284e95a57aa10b3ee95"
- integrity sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA==
+"@jest/types@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad"
+ integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==
dependencies:
- "@types/istanbul-lib-coverage" "^1.1.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^12.0.9"
"@types/babel__core@^7.1.0":
@@ -1016,10 +1104,44 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/istanbul-lib-coverage@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#2cc2ca41051498382b43157c8227fea60363f94a"
- integrity sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==
+"@types/events@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+ integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+
+"@types/glob@^7.1.1":
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
+ integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+ dependencies:
+ "@types/events" "*"
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
+ integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==
+
+"@types/istanbul-lib-report@*":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c"
+ integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a"
+ integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+ "@types/istanbul-lib-report" "*"
+
+"@types/minimatch@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
version "10.12.18"
@@ -1214,13 +1336,13 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-accepts@~1.3.4, accepts@~1.3.5:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
- integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
- mime-types "~2.1.18"
- negotiator "0.6.1"
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
acorn-dynamic-import@^4.0.0:
version "4.0.0"
@@ -1235,6 +1357,13 @@ acorn-globals@^4.1.0:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
+ dependencies:
+ acorn "^3.0.4"
+
acorn-jsx@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
@@ -1245,7 +1374,12 @@ acorn-walk@^6.0.1, acorn-walk@^6.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
-acorn@^5.5.3:
+acorn@^3.0.4:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+acorn@^5.5.0, acorn@^5.5.3:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
@@ -1265,11 +1399,24 @@ ajv-errors@^1.0.0:
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+ajv-keywords@^1.0.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
+ integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw=
+
ajv-keywords@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
+ajv@^4.7.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
+ integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1:
version "6.6.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
@@ -1290,6 +1437,11 @@ ansi-colors@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+ansi-escapes@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
+ integrity sha1-06ioOzGapneTZisT52HHkRQiMG4=
+
ansi-escapes@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
@@ -1335,13 +1487,6 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
-append-transform@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
- integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==
- dependencies:
- default-require-extensions "^2.0.0"
-
aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -1487,10 +1632,10 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
- integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
async-limiter@~1.0.0:
version "1.0.0"
@@ -1509,13 +1654,6 @@ async@^2.5.0:
dependencies:
lodash "^4.17.10"
-async@^2.6.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
- integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
- dependencies:
- lodash "^4.17.11"
-
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -1526,13 +1664,13 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-autoprefixer@^9.4.10:
- version "9.4.10"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.10.tgz#e1be61fc728bacac8f4252ed242711ec0dcc6a7b"
- integrity sha512-XR8XZ09tUrrSzgSlys4+hy5r2/z4Jp7Ag3pHm31U4g/CTccYPOVe19AkaJ4ey/vRd1sfj+5TtuD6I0PXtutjvQ==
+autoprefixer@^9.5.1:
+ version "9.5.1"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357"
+ integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==
dependencies:
- browserslist "^4.4.2"
- caniuse-lite "^1.0.30000940"
+ browserslist "^4.5.4"
+ caniuse-lite "^1.0.30000957"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.14"
@@ -1548,15 +1686,15 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
-axios@^0.18.0:
- version "0.18.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102"
- integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=
+axios@^0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8"
+ integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==
dependencies:
- follow-redirects "^1.3.0"
- is-buffer "^1.1.5"
+ follow-redirects "1.5.10"
+ is-buffer "^2.0.2"
-axobject-query@^2.0.1:
+axobject-query@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9"
integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==
@@ -1575,16 +1713,16 @@ babel-eslint@^10.0.1:
eslint-scope "3.7.1"
eslint-visitor-keys "^1.0.0"
-babel-jest@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.5.0.tgz#0ea042789810c2bec9065f7c8ab4dc18e1d28559"
- integrity sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g==
+babel-jest@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589"
+ integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==
dependencies:
- "@jest/transform" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
"@types/babel__core" "^7.1.0"
babel-plugin-istanbul "^5.1.0"
- babel-preset-jest "^24.3.0"
+ babel-preset-jest "^24.6.0"
chalk "^2.4.2"
slash "^2.0.0"
@@ -1598,6 +1736,24 @@ babel-loader@^8.0.5:
mkdirp "^0.5.1"
util.promisify "^1.0.0"
+babel-plugin-emotion@^9.2.11:
+ version "9.2.11"
+ resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.11.tgz#319c005a9ee1d15bb447f59fe504c35fd5807728"
+ integrity sha512-dgCImifnOPPSeXod2znAmgc64NhaaOjGEHROR/M+lmStb3841yK1sgaDYAYMnlvWNz8GnpwIPN0VmNpbWYZ+VQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@emotion/babel-utils" "^0.6.4"
+ "@emotion/hash" "^0.6.2"
+ "@emotion/memoize" "^0.6.1"
+ "@emotion/stylis" "^0.7.0"
+ babel-plugin-macros "^2.0.0"
+ babel-plugin-syntax-jsx "^6.18.0"
+ convert-source-map "^1.5.0"
+ find-root "^1.1.0"
+ mkdirp "^0.5.1"
+ source-map "^0.5.7"
+ touch "^2.0.1"
+
babel-plugin-istanbul@^5.1.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893"
@@ -1607,10 +1763,10 @@ babel-plugin-istanbul@^5.1.0:
istanbul-lib-instrument "^3.0.0"
test-exclude "^5.0.0"
-babel-plugin-jest-hoist@^24.3.0:
- version "24.3.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz#f2e82952946f6e40bb0a75d266a3790d854c8b5b"
- integrity sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==
+babel-plugin-jest-hoist@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019"
+ integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==
dependencies:
"@types/babel__traverse" "^7.0.6"
@@ -1625,6 +1781,15 @@ babel-plugin-lodash@^3.3.4:
lodash "^4.17.10"
require-package-name "^2.0.1"
+babel-plugin-macros@^2.0.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz#4a119ac2c2e19b458c259b9accd7ee34fd57ec6f"
+ integrity sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q==
+ dependencies:
+ "@babel/runtime" "^7.4.2"
+ cosmiconfig "^5.2.0"
+ resolve "^1.10.0"
+
babel-plugin-macros@^2.2.2:
version "2.4.3"
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.3.tgz#870345aa538d85f04b4614fea5922b55c45dd551"
@@ -1641,27 +1806,31 @@ babel-plugin-preval@^3.0.1:
babel-plugin-macros "^2.2.2"
require-from-string "^2.0.2"
-babel-plugin-react-intl@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.0.1.tgz#4abc7fff04a7bbbb7034aec0a675713f2e52181c"
- integrity sha512-FqnEO+Tq7kJVUPKsSG3s5jaHi3pAC4RUR11IrscvjsfkOApLP2DtzNo6dtQ+tX+OzEzJx7cUms8aCw5BFyW5xg==
+babel-plugin-react-intl@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.1.3.tgz#2a28cd43cbba1ed092c7e3376bf8f02b0f72acb8"
+ integrity sha512-Fq2u6HqYt+pggUXe8DSqZaRA2W9LfOet1dQv1tD+KYcRjL9JW/DXNEn3GPjSw3bCHJiSuGyWPYO7MdbYRVsGDw==
dependencies:
- "@babel/runtime" "^7.0.0"
- intl-messageformat-parser "^1.2.0"
- mkdirp "^0.5.1"
+ fs-extra "^8.0.1"
+ intl-messageformat-parser "^1.6.5"
+
+babel-plugin-syntax-jsx@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+ integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
babel-plugin-transform-react-remove-prop-types@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
-babel-preset-jest@^24.3.0:
- version "24.3.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz#db88497e18869f15b24d9c0e547d8e0ab950796d"
- integrity sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==
+babel-preset-jest@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984"
+ integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==
dependencies:
"@babel/plugin-syntax-object-rest-spread" "^7.0.0"
- babel-plugin-jest-hoist "^24.3.0"
+ babel-plugin-jest-hoist "^24.6.0"
babel-runtime@^6.26.0:
version "6.26.0"
@@ -1743,26 +1912,31 @@ bluebird@^3.5.1, bluebird@^3.5.3:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+blurhash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.0.0.tgz#9087bc5cc4d482f1305059d7410df4133adcab2e"
+ integrity sha512-x6fpZnd6AWde4U9m7xhUB44qIvGV4W6OdTAXGabYm4oZUOOGh5K1HAEoGAQn3iG4gbbPn9RSGce3VfNgGsX/Vw==
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-body-parser@1.18.3:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
- integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
+body-parser@1.19.0:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
dependencies:
- bytes "3.0.0"
+ bytes "3.1.0"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.2"
- http-errors "~1.6.3"
- iconv-lite "0.4.23"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
on-finished "~2.3.0"
- qs "6.5.2"
- raw-body "2.3.3"
- type-is "~1.6.16"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
bonjour@^3.5.0:
version "3.5.0"
@@ -1789,7 +1963,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^2.3.0, braces@^2.3.1:
+braces@^2.3.1, braces@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
@@ -1888,23 +2062,14 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
-browserslist@^4.0.0, browserslist@^4.3.4:
- version "4.3.7"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.7.tgz#f1de479a6466ea47a0a26dcc725e7504817e624a"
- integrity sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ==
+browserslist@^4.0.0, browserslist@^4.5.4, browserslist@^4.6.0:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.1.tgz#ee5059b1aec18cbec9d055d6cb5e24ae50343a9b"
+ integrity sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==
dependencies:
- caniuse-lite "^1.0.30000925"
- electron-to-chromium "^1.3.96"
- node-releases "^1.1.3"
-
-browserslist@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.2.tgz#6ea8a74d6464bb0bd549105f659b41197d8f0ba2"
- integrity sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==
- dependencies:
- caniuse-lite "^1.0.30000939"
- electron-to-chromium "^1.3.113"
- node-releases "^1.1.8"
+ caniuse-lite "^1.0.30000971"
+ electron-to-chromium "^1.3.137"
+ node-releases "^1.1.21"
bser@^2.0.0:
version "2.0.0"
@@ -1957,7 +2122,12 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-cacache@^11.0.2, cacache@^11.2.0:
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^11.0.2, cacache@^11.2.0, cacache@^11.3.2:
version "11.3.2"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa"
integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==
@@ -2028,11 +2198,6 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3"
integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==
-camelcase@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
- integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-
camelcase@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
@@ -2053,15 +2218,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000925:
- version "1.0.30000926"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000926.tgz#4361a99d818ca6e521dbe89a732de62a194a789c"
- integrity sha512-diMkEvxfFw09SkbErCLmw/1Fx1ZZe9xfWm4aeA2PUffB48x1tfZeMsK5j4BW7zN7Y4PdqmPVVdG2eYjE5IRTag==
-
-caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000940:
- version "1.0.30000947"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000947.tgz#c30305e9701449c22e97f4e9837cea3d76aa3273"
- integrity sha512-ubgBUfufe5Oi3W1+EHyh2C3lfBIEcZ6bTuvl5wNOpIuRB978GF/Z+pQ7pGGUpeYRB0P+8C7i/3lt6xkeu2hwnA==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000971:
+ version "1.0.30000971"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13"
+ integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==
capture-exit@^1.2.0:
version "1.2.0"
@@ -2075,7 +2235,7 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-chalk@^1.1.3:
+chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
@@ -2086,16 +2246,7 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
- integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@^2.4.2:
+chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2126,25 +2277,24 @@ cheerio@^1.0.0-rc.2:
lodash "^4.15.0"
parse5 "^3.0.1"
-chokidar@^2.0.0, chokidar@^2.0.2:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
- integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
+chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+ integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
dependencies:
anymatch "^2.0.0"
- async-each "^1.0.0"
- braces "^2.3.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
glob-parent "^3.1.0"
- inherits "^2.0.1"
+ inherits "^2.0.3"
is-binary-path "^1.0.0"
is-glob "^4.0.0"
- lodash.debounce "^4.0.8"
- normalize-path "^2.1.1"
+ normalize-path "^3.0.0"
path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- upath "^1.0.5"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
optionalDependencies:
- fsevents "^1.2.2"
+ fsevents "^1.2.7"
chownr@^1.1.1:
version "1.1.1"
@@ -2191,6 +2341,13 @@ classnames@^2.2.5:
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+cli-cursor@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+ integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
+ dependencies:
+ restore-cursor "^1.0.1"
+
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -2299,6 +2456,11 @@ commander@^2.11.0, commander@^2.18.0, commander@^2.19.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+commander@^2.8.1:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
commander@~2.17.1:
version "2.17.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
@@ -2309,22 +2471,17 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-compare-versions@^3.2.1:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26"
- integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==
-
component-emitter@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
-compressible@~2.0.14:
- version "2.0.15"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212"
- integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==
+compressible@~2.0.16:
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
+ integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
dependencies:
- mime-db ">= 1.36.0 < 2"
+ mime-db ">= 1.40.0 < 2"
compression-webpack-plugin@^2.0.0:
version "2.0.0"
@@ -2338,16 +2495,16 @@ compression-webpack-plugin@^2.0.0:
serialize-javascript "^1.4.0"
webpack-sources "^1.0.1"
-compression@^1.5.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
- integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==
+compression@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
dependencies:
accepts "~1.3.5"
bytes "3.0.0"
- compressible "~2.0.14"
+ compressible "~2.0.16"
debug "2.6.9"
- on-headers "~1.0.1"
+ on-headers "~1.0.2"
safe-buffer "5.1.2"
vary "~1.1.2"
@@ -2356,7 +2513,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-concat-stream@^1.5.0:
+concat-stream@^1.4.6, concat-stream@^1.5.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -2366,10 +2523,10 @@ concat-stream@^1.5.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-connect-history-api-fallback@^1.3.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
- integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=
+connect-history-api-fallback@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
console-browserify@^1.1.0:
version "1.1.0"
@@ -2393,17 +2550,19 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
- integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-convert-source-map@^1.1.0, convert-source-map@^1.4.0:
+convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
@@ -2415,10 +2574,10 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
- integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
copy-concurrently@^1.0.0:
version "1.0.5"
@@ -2437,6 +2596,20 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+core-js-compat@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz#0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14"
+ integrity sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==
+ dependencies:
+ browserslist "^4.6.0"
+ core-js-pure "3.1.3"
+ semver "^6.1.0"
+
+core-js-pure@3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz#4c90752d5b9471f641514f3728f51c1e0783d0b5"
+ integrity sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==
+
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
@@ -2472,6 +2645,16 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.5:
js-yaml "^3.9.0"
parse-json "^4.0.0"
+cosmiconfig@^5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
create-ecdh@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
@@ -2480,15 +2663,18 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.0.0"
-create-emotion@^10.0.4:
- version "10.0.5"
- resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.5.tgz#22487f19b59a7ed10144f808289eadffebcfab06"
- integrity sha512-MIOSeFiMtPrAULEtd2GFYGZEzeN2xnCFoiHrjvUYjxruYCJfGqUOBmh4YEN1yU+Ww5yXr+DIZibFl7FEOP57iA==
+create-emotion@^9.2.12:
+ version "9.2.12"
+ resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-9.2.12.tgz#0fc8e7f92c4f8bb924b0fef6781f66b1d07cb26f"
+ integrity sha512-P57uOF9NL2y98Xrbl2OuiDQUZ30GVmASsv5fbsjF4Hlraip2kyAvMm+2PoYUvFFw03Fhgtxk3RqZSm2/qHL9hA==
dependencies:
- "@emotion/cache" "10.0.0"
- "@emotion/serialize" "^0.11.3"
- "@emotion/sheet" "0.9.2"
- "@emotion/utils" "0.11.1"
+ "@emotion/hash" "^0.6.2"
+ "@emotion/memoize" "^0.6.1"
+ "@emotion/stylis" "^0.7.0"
+ "@emotion/unitless" "^0.6.2"
+ csstype "^2.5.2"
+ stylis "^3.5.0"
+ stylis-rule-sheet "^0.0.10"
create-hash@^1.1.0, create-hash@^1.1.2:
version "1.2.0"
@@ -2769,11 +2955,16 @@ cssstyle@^1.0.0:
dependencies:
cssom "0.3.x"
-csstype@^2.2.0, csstype@^2.5.7:
+csstype@^2.2.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.0.tgz#6cf7b2fa7fc32aab3d746802c244d4eda71371a2"
integrity sha512-by8hi8BlLbowQq0qtkx54d9aN73R9oUW20HISpka5kmgsR9F7nnxgfsemuR2sdCKZh+CDNf5egW9UZMm4mgJRg==
+csstype@^2.5.2:
+ version "2.6.5"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.5.tgz#1cd1dff742ebf4d7c991470ae71e12bb6751e034"
+ integrity sha512-JsTaiksRsel5n7XwqPAfB0l3TFKdpjW/kgAELf9vrb5adGA7UCPLajKK5s3nFrcFm3Rkyp/Qkgl73ENc1UY3cA==
+
cyclist@~0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
@@ -2812,7 +3003,7 @@ date-now@^0.1.4:
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -2845,13 +3036,6 @@ decamelize@^1.2.0:
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-decamelize@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7"
- integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==
- dependencies:
- xregexp "4.0.0"
-
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
@@ -2877,7 +3061,7 @@ deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-default-gateway@^4.0.1:
+default-gateway@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
@@ -2885,13 +3069,6 @@ default-gateway@^4.0.1:
execa "^1.0.0"
ip-regex "^2.1.0"
-default-require-extensions@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
- integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=
- dependencies:
- strip-bom "^3.0.0"
-
define-properties@^1.1.1, define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -2921,17 +3098,18 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
-del@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
- integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
dependencies:
+ "@types/glob" "^7.1.1"
globby "^6.1.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- p-map "^1.1.1"
- pify "^3.0.0"
- rimraf "^2.2.8"
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
delayed-stream@~1.0.0:
version "1.0.0"
@@ -2966,7 +3144,7 @@ detect-file@^1.0.0:
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
-detect-libc@^1.0.2, detect-libc@^1.0.3:
+detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
@@ -3025,7 +3203,7 @@ dns-txt@^2.0.2:
dependencies:
buffer-indexof "^1.0.0"
-doctrine@1.5.0:
+doctrine@1.5.0, doctrine@^1.2.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
@@ -3107,10 +3285,10 @@ dot-prop@^4.1.1:
dependencies:
is-obj "^1.0.0"
-dotenv@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064"
- integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==
+dotenv@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz#ed310c165b4e8a97bb745b0a9d99c31bda566440"
+ integrity sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg==
double-ended-queue@^2.1.0-0:
version "2.1.0-0"
@@ -3150,15 +3328,10 @@ ejs@^2.3.4, ejs@^2.6.1:
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==
-electron-to-chromium@^1.3.113:
- version "1.3.116"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.116.tgz#1dbfee6a592a0c14ade77dbdfe54fef86387d702"
- integrity sha512-NKwKAXzur5vFCZYBHpdWjTMO8QptNLNP80nItkSIgUOapPAo9Uia+RvkCaZJtO7fhQaVElSvBPWEc2ku6cKsPA==
-
-electron-to-chromium@^1.3.96:
- version "1.3.96"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz#25770ec99b8b07706dedf3a5f43fa50cb54c4f9a"
- integrity sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==
+electron-to-chromium@^1.3.137:
+ version "1.3.143"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.143.tgz#8b2a631ab75157aa53d0c2933275643b99ef580b"
+ integrity sha512-J9jOpxIljQZlV6GIP2fwAWq0T69syawU0sH3EW3O2Bgxquiy+veeIT5mBDRz+i3oHUSL1tvVgRKH3/4QiQh9Pg==
elliptic@^6.0.0:
version "6.4.1"
@@ -3173,23 +3346,28 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
-emoji-mart@^2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-2.10.0.tgz#e1adec430f4963f79055b12b80e6d60c5abb742d"
- integrity sha512-VhcX463f8TDaQc1Tpc8rI31E15+8KXOYff1vwjokjMT52bZlCQCyq3zrnNScSYjv95f1+R4DMMreeuPvYFvOhg==
- dependencies:
- prop-types "^15.6.0"
+emoji-mart@Gargron/emoji-mart#build:
+ version "2.6.2"
+ resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9"
-emoji-regex@^6.5.1:
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
- integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==
+emoji-regex@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+emotion@^9.1.2:
+ version "9.2.12"
+ resolved "https://registry.yarnpkg.com/emotion/-/emotion-9.2.12.tgz#53925aaa005614e65c6e43db8243c843574d1ea9"
+ integrity sha512-hcx7jppaI8VoXxIWEhxpDW7I+B4kq9RNzQLmsrF6LY8BGKqe2N+gFAQr0EfuFucFlPs2A9HM4+xNj4NeqEWIOQ==
+ dependencies:
+ babel-plugin-emotion "^9.2.11"
+ create-emotion "^9.2.12"
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -3285,7 +3463,7 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0:
+es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==
@@ -3305,6 +3483,15 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+es5-ext@^0.10.14:
+ version "0.10.50"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
+ integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
+ dependencies:
+ es6-iterator "~2.0.3"
+ es6-symbol "~3.1.1"
+ next-tick "^1.0.0"
+
es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.46"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572"
@@ -3314,7 +3501,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
es6-symbol "~3.1.1"
next-tick "1"
-es6-iterator@~2.0.3:
+es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
@@ -3323,7 +3510,30 @@ es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+es6-map@^0.1.3:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
+ integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-set "~0.1.5"
+ es6-symbol "~3.1.1"
+ event-emitter "~0.3.5"
+
+es6-set@~0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
+ integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+ es6-iterator "~2.0.1"
+ es6-symbol "3.1.1"
+ event-emitter "~0.3.5"
+
+es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
@@ -3331,6 +3541,16 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1:
d "1"
es5-ext "~0.10.14"
+es6-weak-map@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
+ integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=
+ dependencies:
+ d "1"
+ es5-ext "^0.10.14"
+ es6-iterator "^2.0.1"
+ es6-symbol "^3.1.1"
+
escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -3353,6 +3573,16 @@ escodegen@^1.9.1:
optionalDependencies:
source-map "~0.6.1"
+escope@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
+ integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=
+ dependencies:
+ es6-map "^0.1.3"
+ es6-weak-map "^2.0.1"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint-import-resolver-node@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
@@ -3385,24 +3615,24 @@ eslint-plugin-import@~2.14.0:
read-pkg-up "^2.0.0"
resolve "^1.6.0"
-eslint-plugin-jsx-a11y@~6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88"
- integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==
+eslint-plugin-jsx-a11y@~6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c"
+ integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==
dependencies:
aria-query "^3.0.0"
array-includes "^3.0.3"
ast-types-flow "^0.0.7"
- axobject-query "^2.0.1"
+ axobject-query "^2.0.2"
damerau-levenshtein "^1.0.4"
- emoji-regex "^6.5.1"
+ emoji-regex "^7.0.2"
has "^1.0.3"
jsx-ast-utils "^2.0.1"
-eslint-plugin-promise@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2"
- integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==
+eslint-plugin-promise@~4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db"
+ integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==
eslint-plugin-react@~7.12.1:
version "7.12.1"
@@ -3443,6 +3673,45 @@ eslint-visitor-keys@^1.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
+eslint@^2.7.0:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11"
+ integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=
+ dependencies:
+ chalk "^1.1.3"
+ concat-stream "^1.4.6"
+ debug "^2.1.1"
+ doctrine "^1.2.2"
+ es6-map "^0.1.3"
+ escope "^3.6.0"
+ espree "^3.1.6"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ file-entry-cache "^1.1.1"
+ glob "^7.0.3"
+ globals "^9.2.0"
+ ignore "^3.1.2"
+ imurmurhash "^0.1.4"
+ inquirer "^0.12.0"
+ is-my-json-valid "^2.10.0"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.5.1"
+ json-stable-stringify "^1.0.0"
+ levn "^0.3.0"
+ lodash "^4.0.0"
+ mkdirp "^0.5.0"
+ optionator "^0.8.1"
+ path-is-absolute "^1.0.0"
+ path-is-inside "^1.0.1"
+ pluralize "^1.2.1"
+ progress "^1.1.8"
+ require-uncached "^1.0.2"
+ shelljs "^0.6.0"
+ strip-json-comments "~1.0.1"
+ table "^3.7.8"
+ text-table "~0.2.0"
+ user-home "^2.0.0"
+
eslint@^5.11.1:
version "5.11.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz#8deda83db9f354bf9d3f53f9677af7e0e13eadda"
@@ -3486,6 +3755,14 @@ eslint@^5.11.1:
table "^5.0.2"
text-table "^0.2.0"
+espree@^3.1.6:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
+ integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
+ dependencies:
+ acorn "^5.5.0"
+ acorn-jsx "^3.0.0"
+
espree@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c"
@@ -3534,6 +3811,14 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+event-emitter@~0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
eventemitter3@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
@@ -3582,6 +3867,11 @@ exif-js@^2.3.0:
resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814"
integrity sha1-nRCBm/Vx+HOBPnZAJBJVq5zhqBQ=
+exit-hook@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+ integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
+
exit@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -3607,51 +3897,51 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies:
homedir-polyfill "^1.0.1"
-expect@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-24.5.0.tgz#492fb0df8378d8474cc84b827776b069f46294ed"
- integrity sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw==
+expect@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d"
+ integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
ansi-styles "^3.2.0"
- jest-get-type "^24.3.0"
- jest-matcher-utils "^24.5.0"
- jest-message-util "^24.5.0"
+ jest-get-type "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
jest-regex-util "^24.3.0"
-express@^4.16.2, express@^4.16.3, express@^4.16.4:
- version "4.16.4"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
- integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
+express@^4.16.3, express@^4.17.1:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
dependencies:
- accepts "~1.3.5"
+ accepts "~1.3.7"
array-flatten "1.1.1"
- body-parser "1.18.3"
- content-disposition "0.5.2"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
content-type "~1.0.4"
- cookie "0.3.1"
+ cookie "0.4.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.2"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.1.1"
+ finalhandler "~1.1.2"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
- parseurl "~1.3.2"
+ parseurl "~1.3.3"
path-to-regexp "0.1.7"
- proxy-addr "~2.0.4"
- qs "6.5.2"
- range-parser "~1.2.0"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
safe-buffer "5.1.2"
- send "0.16.2"
- serve-static "1.13.2"
- setprototypeof "1.1.0"
- statuses "~1.4.0"
- type-is "~1.6.16"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
@@ -3757,18 +4047,19 @@ fbjs@^0.8.4:
setimmediate "^1.0.5"
ua-parser-js "^0.7.18"
-fibers@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/fibers/-/fibers-3.1.1.tgz#0238902ca938347bd779523692fbeefdf4f688ab"
- integrity sha512-dl3Ukt08rHVQfY8xGD0ODwyjwrRALtaghuqGH2jByYX1wpY+nAnRQjJ6Dbqq0DnVgNVQ9yibObzbF4IlPyiwPw==
- dependencies:
- detect-libc "^1.0.3"
-
figgy-pudding@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+figures@^1.3.5:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+ integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+ object-assign "^4.1.0"
+
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
@@ -3776,6 +4067,14 @@ figures@^2.0.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-entry-cache@^1.1.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8"
+ integrity sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
file-entry-cache@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
@@ -3792,14 +4091,6 @@ file-loader@^3.0.1:
loader-utils "^1.0.2"
schema-utils "^1.0.0"
-fileset@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
- integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=
- dependencies:
- glob "^7.0.3"
- minimatch "^3.0.3"
-
filesize@^3.6.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
@@ -3815,17 +4106,17 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
-finalhandler@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
- integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.4.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
unpipe "~1.0.0"
find-cache-dir@^2.0.0:
@@ -3837,6 +4128,11 @@ find-cache-dir@^2.0.0:
make-dir "^1.0.0"
pkg-dir "^3.0.0"
+find-root@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
find-up@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -3887,7 +4183,14 @@ flush-write-stream@^1.0.0:
inherits "^2.0.1"
readable-stream "^2.0.4"
-follow-redirects@^1.0.0, follow-redirects@^1.3.0:
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
+
+follow-redirects@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.0.tgz#d12452c031e8c67eb6637d861bfc7a8090167933"
integrity sha512-4Oh4eI3S9OueVV41AgJ1oLjpaJUhbJ7JDGOMhe0AFqoSejl5Q2nn3eGglAzRUKVKZE8jG5MNn66TjCJMAnpsWA==
@@ -3955,6 +4258,31 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
+front-matter@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb"
+ integrity sha1-91mDufL0E75ljJPf172M5AePXNs=
+ dependencies:
+ js-yaml "^3.4.6"
+
+fs-extra@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
+ integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^3.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b"
+ integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
fs-minipass@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
@@ -3977,15 +4305,15 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@^1.2.2:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
- integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
+fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
dependencies:
- nan "^2.9.2"
- node-pre-gyp "^0.10.0"
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
-function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
+function-bind@^1.0.2, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
@@ -4018,6 +4346,20 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
+generate-function@^2.0.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
+ integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
+ dependencies:
+ is-property "^1.0.2"
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
generic-pool@2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff"
@@ -4055,7 +4397,19 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
-glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
+glob@^7.0.0, glob@~7.1.1:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
@@ -4087,11 +4441,21 @@ global-prefix@^1.0.1:
is-windows "^1.0.1"
which "^1.2.14"
-globals@^11.1.0, globals@^11.7.0:
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^11.7.0:
version "11.9.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
+globals@^9.2.0:
+ version "9.18.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+ integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
+
globby@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
@@ -4103,7 +4467,23 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
+globule@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
+ integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==
+ dependencies:
+ glob "~7.1.1"
+ lodash "~4.17.10"
+ minimatch "~3.0.2"
+
+gonzales-pe-sl@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6"
+ integrity sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y=
+ dependencies:
+ minimist "1.1.x"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
version "4.1.15"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
@@ -4256,17 +4636,17 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoist-non-react-statics@^2.5.0, hoist-non-react-statics@^2.5.5:
+hoist-non-react-statics@^2.5.0:
version "2.5.5"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
-hoist-non-react-statics@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz#c09c0555c84b38a7ede6912b61efddafd6e75e1e"
- integrity sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw==
+hoist-non-react-statics@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
+ integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==
dependencies:
- react-is "^16.3.2"
+ react-is "^16.7.0"
homedir-polyfill@^1.0.1:
version "1.0.3"
@@ -4317,7 +4697,7 @@ html-encoding-sniffer@^1.0.2:
dependencies:
whatwg-encoding "^1.0.1"
-html-entities@^1.2.0:
+html-entities@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
@@ -4339,7 +4719,18 @@ http-deceiver@^1.2.7:
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
-http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
+http-errors@1.7.2, http-errors@~1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
@@ -4392,13 +4783,6 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-iconv-lite@0.4.23:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -4435,6 +4819,11 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"
+ignore@^3.1.2:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@@ -4521,6 +4910,25 @@ ini@^1.3.4, ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+inquirer@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
+ integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=
+ dependencies:
+ ansi-escapes "^1.1.0"
+ ansi-regex "^2.0.0"
+ chalk "^1.0.0"
+ cli-cursor "^1.0.1"
+ cli-width "^2.0.0"
+ figures "^1.3.5"
+ lodash "^4.3.0"
+ readline2 "^1.0.1"
+ run-async "^0.1.0"
+ rx-lite "^3.1.2"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.0"
+ through "^2.3.6"
+
inquirer@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52"
@@ -4540,12 +4948,12 @@ inquirer@^6.1.0:
strip-ansi "^5.0.0"
through "^2.3.6"
-internal-ip@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.2.0.tgz#46e81b638d84c338e5c67e42b1a17db67d0814fa"
- integrity sha512-ZY8Rk+hlvFeuMmG5uH1MXhhdeMntmIaxaInvAmzMq/SHV8rv4Kh+6GiQNNDQd0wZFrcO+FiTBo8lui/osKOyJw==
+internal-ip@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
+ integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
dependencies:
- default-gateway "^4.0.1"
+ default-gateway "^4.2.0"
ipaddr.js "^1.9.0"
interpret@^1.1.0:
@@ -4553,21 +4961,26 @@ interpret@^1.1.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
-intersection-observer@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.5.1.tgz#e340fc56ce74290fe2b2394d1ce88c4353ac6dfa"
- integrity sha512-Zd7Plneq82kiXFixs7bX62YnuZ0BMRci9br7io88LwDyF3V43cQMI+G5IiTlTNTt+LsDUppl19J/M2Fp9UkH6g==
+intersection-observer@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9"
+ integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg==
intl-format-cache@^2.0.5:
version "2.1.0"
resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.1.0.tgz#04a369fecbfad6da6005bae1f14333332dcf9316"
integrity sha1-BKNp/sv61tpgBbrh8UMzMy3PkxY=
-intl-messageformat-parser@1.4.0, intl-messageformat-parser@^1.2.0:
+intl-messageformat-parser@1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz#b43d45a97468cadbe44331d74bb1e8dea44fc075"
integrity sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=
+intl-messageformat-parser@^1.6.5:
+ version "1.6.5"
+ resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.6.5.tgz#40f5fc19855f203389a3fc926cc3c88d7a573496"
+ integrity sha512-hngOkdq6FZxT6iEpEqOzGO/8rshM/v+sShGBl6yv8SQmU6lCc4vtfBHNqpSC0Dxuq4tedMkYFQGnKy5b1Tx5GA==
+
intl-messageformat@^2.0.0, intl-messageformat@^2.1.0, intl-messageformat@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz#345bcd46de630b7683330c2e52177ff5eab484fc"
@@ -4575,10 +4988,10 @@ intl-messageformat@^2.0.0, intl-messageformat@^2.1.0, intl-messageformat@^2.2.0:
dependencies:
intl-messageformat-parser "1.4.0"
-intl-relativeformat@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.1.0.tgz#010f1105802251f40ac47d0e3e1a201348a255df"
- integrity sha1-AQ8RBYAiUfQKxH0OPhogE0iiVd8=
+intl-relativeformat@^2.1.0, intl-relativeformat@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz#6aca95d019ec8d30b6c5653b6629f9983ea5b6c5"
+ integrity sha512-4bV/7kSKaPEmu6ArxXf9xjv1ny74Zkwuey8Pm01NH4zggPP7JHwg2STk8Y3JdspCKRDriwIyLRfEXnj2ZLr4Bw==
dependencies:
intl-messageformat "^2.0.0"
@@ -4609,12 +5022,7 @@ ip@^1.1.0, ip@^1.1.5:
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
-ipaddr.js@1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
- integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4=
-
-ipaddr.js@^1.9.0:
+ipaddr.js@1.9.0, ipaddr.js@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
@@ -4665,6 +5073,11 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-buffer@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
+ integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
+
is-builtin-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
@@ -4786,6 +5199,22 @@ is-glob@^4.0.0:
dependencies:
is-extglob "^2.1.1"
+is-my-ip-valid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
+ integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==
+
+is-my-json-valid@^2.10.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a"
+ integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ is-my-ip-valid "^1.0.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
is-nan@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2"
@@ -4810,24 +5239,24 @@ is-obj@^1.0.0:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
-is-path-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
- integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+is-path-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c"
+ integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==
-is-path-in-cwd@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
- integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
dependencies:
- is-path-inside "^1.0.0"
+ is-path-inside "^2.1.0"
-is-path-inside@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
- integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
dependencies:
- path-is-inside "^1.0.1"
+ path-is-inside "^1.0.2"
is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
@@ -4841,6 +5270,11 @@ is-promise@^2.1.0:
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+is-property@^1.0.0, is-property@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -4937,38 +5371,12 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-istanbul-api@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0"
- integrity sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==
- dependencies:
- async "^2.6.1"
- compare-versions "^3.2.1"
- fileset "^2.0.3"
- istanbul-lib-coverage "^2.0.3"
- istanbul-lib-hook "^2.0.3"
- istanbul-lib-instrument "^3.1.0"
- istanbul-lib-report "^2.0.4"
- istanbul-lib-source-maps "^3.0.2"
- istanbul-reports "^2.1.1"
- js-yaml "^3.12.0"
- make-dir "^1.3.0"
- minimatch "^3.0.4"
- once "^1.4.0"
-
istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba"
integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==
-istanbul-lib-hook@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb"
- integrity sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==
- dependencies:
- append-transform "^1.0.0"
-
-istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0:
+istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971"
integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==
@@ -4990,7 +5398,7 @@ istanbul-lib-report@^2.0.4:
make-dir "^1.3.0"
supports-color "^6.0.0"
-istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2:
+istanbul-lib-source-maps@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156"
integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==
@@ -5008,65 +5416,66 @@ istanbul-reports@^2.1.1:
dependencies:
handlebars "^4.1.0"
-jest-changed-files@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.5.0.tgz#4075269ee115d87194fd5822e642af22133cf705"
- integrity sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg==
+jest-changed-files@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b"
+ integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
execa "^1.0.0"
throat "^4.0.0"
-jest-cli@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.5.0.tgz#598139d3446d1942fb7dc93944b9ba766d756d4b"
- integrity sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g==
+jest-cli@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989"
+ integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==
dependencies:
- "@jest/core" "^24.5.0"
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/core" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
chalk "^2.0.1"
exit "^0.1.2"
import-local "^2.0.0"
is-ci "^2.0.0"
- jest-config "^24.5.0"
- jest-util "^24.5.0"
- jest-validate "^24.5.0"
+ jest-config "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
prompts "^2.0.1"
realpath-native "^1.1.0"
yargs "^12.0.2"
-jest-config@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.5.0.tgz#404d1bc6bb81aed6bd1890d07e2dca9fbba2e121"
- integrity sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ==
+jest-config@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f"
+ integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^24.5.0"
- babel-jest "^24.5.0"
+ "@jest/test-sequencer" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ babel-jest "^24.8.0"
chalk "^2.0.1"
glob "^7.1.1"
- jest-environment-jsdom "^24.5.0"
- jest-environment-node "^24.5.0"
- jest-get-type "^24.3.0"
- jest-jasmine2 "^24.5.0"
+ jest-environment-jsdom "^24.8.0"
+ jest-environment-node "^24.8.0"
+ jest-get-type "^24.8.0"
+ jest-jasmine2 "^24.8.0"
jest-regex-util "^24.3.0"
- jest-resolve "^24.5.0"
- jest-util "^24.5.0"
- jest-validate "^24.5.0"
+ jest-resolve "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
micromatch "^3.1.10"
- pretty-format "^24.5.0"
+ pretty-format "^24.8.0"
realpath-native "^1.1.0"
-jest-diff@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.5.0.tgz#a2d8627964bb06a91893c0fbcb28ab228c257652"
- integrity sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw==
+jest-diff@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172"
+ integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==
dependencies:
chalk "^2.0.1"
diff-sequences "^24.3.0"
- jest-get-type "^24.3.0"
- pretty-format "^24.5.0"
+ jest-get-type "^24.8.0"
+ pretty-format "^24.8.0"
jest-docblock@^24.3.0:
version "24.3.0"
@@ -5075,119 +5484,123 @@ jest-docblock@^24.3.0:
dependencies:
detect-newline "^2.1.0"
-jest-each@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.5.0.tgz#da14d017a1b7d0f01fb458d338314cafe7f72318"
- integrity sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw==
+jest-each@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775"
+ integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
chalk "^2.0.1"
- jest-get-type "^24.3.0"
- jest-util "^24.5.0"
- pretty-format "^24.5.0"
+ jest-get-type "^24.8.0"
+ jest-util "^24.8.0"
+ pretty-format "^24.8.0"
-jest-environment-jsdom@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz#1c3143063e1374100f8c2723a8b6aad23b6db7eb"
- integrity sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ==
+jest-environment-jsdom@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857"
+ integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==
dependencies:
- "@jest/environment" "^24.5.0"
- "@jest/fake-timers" "^24.5.0"
- "@jest/types" "^24.5.0"
- jest-mock "^24.5.0"
- jest-util "^24.5.0"
+ "@jest/environment" "^24.8.0"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
+ jest-util "^24.8.0"
jsdom "^11.5.1"
-jest-environment-node@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.5.0.tgz#763eebdf529f75b60aa600c6cf8cb09873caa6ab"
- integrity sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw==
+jest-environment-node@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231"
+ integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==
dependencies:
- "@jest/environment" "^24.5.0"
- "@jest/fake-timers" "^24.5.0"
- "@jest/types" "^24.5.0"
- jest-mock "^24.5.0"
- jest-util "^24.5.0"
+ "@jest/environment" "^24.8.0"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
+ jest-util "^24.8.0"
-jest-get-type@^24.3.0:
- version "24.3.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.3.0.tgz#582cfd1a4f91b5cdad1d43d2932f816d543c65da"
- integrity sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==
+jest-get-type@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc"
+ integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==
-jest-haste-map@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.5.0.tgz#3f17d0c548b99c0c96ed2893f9c0ccecb2eb9066"
- integrity sha512-mb4Yrcjw9vBgSvobDwH8QUovxApdimGcOkp+V1ucGGw4Uvr3VzZQBJhNm1UY3dXYm4XXyTW2G7IBEZ9pM2ggRQ==
+jest-haste-map@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800"
+ integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
+ anymatch "^2.0.0"
fb-watchman "^2.0.0"
graceful-fs "^4.1.15"
invariant "^2.2.4"
jest-serializer "^24.4.0"
- jest-util "^24.5.0"
- jest-worker "^24.4.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
micromatch "^3.1.10"
sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^1.2.7"
-jest-jasmine2@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz#e6af4d7f73dc527d007cca5a5b177c0bcc29d111"
- integrity sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw==
+jest-jasmine2@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898"
+ integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==
dependencies:
"@babel/traverse" "^7.1.0"
- "@jest/environment" "^24.5.0"
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
chalk "^2.0.1"
co "^4.6.0"
- expect "^24.5.0"
+ expect "^24.8.0"
is-generator-fn "^2.0.0"
- jest-each "^24.5.0"
- jest-matcher-utils "^24.5.0"
- jest-message-util "^24.5.0"
- jest-runtime "^24.5.0"
- jest-snapshot "^24.5.0"
- jest-util "^24.5.0"
- pretty-format "^24.5.0"
+ jest-each "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ pretty-format "^24.8.0"
throat "^4.0.0"
-jest-leak-detector@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz#21ae2b3b0da252c1171cd494f75696d65fb6fa89"
- integrity sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ==
+jest-leak-detector@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980"
+ integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==
dependencies:
- pretty-format "^24.5.0"
+ pretty-format "^24.8.0"
-jest-matcher-utils@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz#5995549dcf09fa94406e89526e877b094dad8770"
- integrity sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q==
+jest-matcher-utils@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495"
+ integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==
dependencies:
chalk "^2.0.1"
- jest-diff "^24.5.0"
- jest-get-type "^24.3.0"
- pretty-format "^24.5.0"
+ jest-diff "^24.8.0"
+ jest-get-type "^24.8.0"
+ pretty-format "^24.8.0"
-jest-message-util@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.5.0.tgz#181420a65a7ef2e8b5c2f8e14882c453c6d41d07"
- integrity sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==
+jest-message-util@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b"
+ integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
"@types/stack-utils" "^1.0.1"
chalk "^2.0.1"
micromatch "^3.1.10"
slash "^2.0.0"
stack-utils "^1.0.1"
-jest-mock@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.5.0.tgz#976912c99a93f2a1c67497a9414aa4d9da4c7b76"
- integrity sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw==
+jest-mock@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56"
+ integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
jest-pnp-resolver@^1.2.1:
version "1.2.1"
@@ -5199,75 +5612,75 @@ jest-regex-util@^24.3.0:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36"
integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==
-jest-resolve-dependencies@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz#1a0dae9cdd41349ca4a84148b3e78da2ba33fd4b"
- integrity sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ==
+jest-resolve-dependencies@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0"
+ integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
jest-regex-util "^24.3.0"
- jest-snapshot "^24.5.0"
+ jest-snapshot "^24.8.0"
-jest-resolve@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.5.0.tgz#8c16ba08f60a1616c3b1cd7afb24574f50a24d04"
- integrity sha512-ZIfGqLX1Rg8xJpQqNjdoO8MuxHV1q/i2OO1hLXjgCWFWs5bsedS8UrOdgjUqqNae6DXA+pCyRmdcB7lQEEbXew==
+jest-resolve@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f"
+ integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
browser-resolve "^1.11.3"
chalk "^2.0.1"
jest-pnp-resolver "^1.2.1"
realpath-native "^1.1.0"
-jest-runner@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.5.0.tgz#9be26ece4fd4ab3dfb528b887523144b7c5ffca8"
- integrity sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA==
+jest-runner@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb"
+ integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==
dependencies:
- "@jest/console" "^24.3.0"
- "@jest/environment" "^24.5.0"
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
chalk "^2.4.2"
exit "^0.1.2"
graceful-fs "^4.1.15"
- jest-config "^24.5.0"
+ jest-config "^24.8.0"
jest-docblock "^24.3.0"
- jest-haste-map "^24.5.0"
- jest-jasmine2 "^24.5.0"
- jest-leak-detector "^24.5.0"
- jest-message-util "^24.5.0"
- jest-resolve "^24.5.0"
- jest-runtime "^24.5.0"
- jest-util "^24.5.0"
- jest-worker "^24.4.0"
+ jest-haste-map "^24.8.0"
+ jest-jasmine2 "^24.8.0"
+ jest-leak-detector "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-resolve "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
source-map-support "^0.5.6"
throat "^4.0.0"
-jest-runtime@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.5.0.tgz#3a76e0bfef4db3896d5116e9e518be47ba771aa2"
- integrity sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw==
+jest-runtime@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620"
+ integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==
dependencies:
- "@jest/console" "^24.3.0"
- "@jest/environment" "^24.5.0"
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.8.0"
"@jest/source-map" "^24.3.0"
- "@jest/transform" "^24.5.0"
- "@jest/types" "^24.5.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
"@types/yargs" "^12.0.2"
chalk "^2.0.1"
exit "^0.1.2"
glob "^7.1.3"
graceful-fs "^4.1.15"
- jest-config "^24.5.0"
- jest-haste-map "^24.5.0"
- jest-message-util "^24.5.0"
- jest-mock "^24.5.0"
+ jest-config "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-mock "^24.8.0"
jest-regex-util "^24.3.0"
- jest-resolve "^24.5.0"
- jest-snapshot "^24.5.0"
- jest-util "^24.5.0"
- jest-validate "^24.5.0"
+ jest-resolve "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
realpath-native "^1.1.0"
slash "^2.0.0"
strip-bom "^3.0.0"
@@ -5278,35 +5691,34 @@ jest-serializer@^24.4.0:
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3"
integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==
-jest-snapshot@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.5.0.tgz#e5d224468a759fd19e36f01217aac912f500f779"
- integrity sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA==
+jest-snapshot@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6"
+ integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==
dependencies:
"@babel/types" "^7.0.0"
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
chalk "^2.0.1"
- expect "^24.5.0"
- jest-diff "^24.5.0"
- jest-matcher-utils "^24.5.0"
- jest-message-util "^24.5.0"
- jest-resolve "^24.5.0"
+ expect "^24.8.0"
+ jest-diff "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-resolve "^24.8.0"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
- pretty-format "^24.5.0"
+ pretty-format "^24.8.0"
semver "^5.5.0"
-jest-util@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.5.0.tgz#9d9cb06d9dcccc8e7cc76df91b1635025d7baa84"
- integrity sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q==
+jest-util@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1"
+ integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==
dependencies:
- "@jest/console" "^24.3.0"
- "@jest/fake-timers" "^24.5.0"
+ "@jest/console" "^24.7.1"
+ "@jest/fake-timers" "^24.8.0"
"@jest/source-map" "^24.3.0"
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
- "@types/node" "*"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
callsites "^3.0.0"
chalk "^2.0.1"
graceful-fs "^4.1.15"
@@ -5315,48 +5727,46 @@ jest-util@^24.5.0:
slash "^2.0.0"
source-map "^0.6.0"
-jest-validate@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.5.0.tgz#62fd93d81214c070bb2d7a55f329a79d8057c7de"
- integrity sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ==
+jest-validate@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849"
+ integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
camelcase "^5.0.0"
chalk "^2.0.1"
- jest-get-type "^24.3.0"
+ jest-get-type "^24.8.0"
leven "^2.1.0"
- pretty-format "^24.5.0"
+ pretty-format "^24.8.0"
-jest-watcher@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.5.0.tgz#da7bd9cb5967e274889b42078c8f501ae1c47761"
- integrity sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA==
+jest-watcher@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4"
+ integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==
dependencies:
- "@jest/test-result" "^24.5.0"
- "@jest/types" "^24.5.0"
- "@types/node" "*"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
"@types/yargs" "^12.0.9"
ansi-escapes "^3.0.0"
chalk "^2.0.1"
- jest-util "^24.5.0"
+ jest-util "^24.8.0"
string-length "^2.0.0"
-jest-worker@^24.4.0:
- version "24.4.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.4.0.tgz#fbc452b0120bb5c2a70cdc88fa132b48eeb11dd0"
- integrity sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==
+jest-worker@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3"
+ integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==
dependencies:
- "@types/node" "*"
merge-stream "^1.0.1"
supports-color "^6.1.0"
-jest@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/jest/-/jest-24.5.0.tgz#38f11ae2c2baa2f86c2bc4d8a91d2b51612cd19a"
- integrity sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ==
+jest@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081"
+ integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==
dependencies:
import-local "^2.0.0"
- jest-cli "^24.5.0"
+ jest-cli "^24.8.0"
js-base64@^2.1.9:
version "2.5.0"
@@ -5364,9 +5774,9 @@ js-base64@^2.1.9:
integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==
js-levenshtein@^1.1.3:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e"
- integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
+ integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
js-string-escape@1.0.1:
version "1.0.1"
@@ -5378,10 +5788,10 @@ js-string-escape@1.0.1:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.9.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
- integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
+js-yaml@^3.12.0, js-yaml@^3.13.1, js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.9.0:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -5453,7 +5863,7 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-json-stable-stringify@^1.0.1:
+json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
@@ -5489,11 +5899,30 @@ json5@^2.1.0:
dependencies:
minimist "^1.2.0"
+jsonfile@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
+ integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -5516,7 +5945,7 @@ keycode@^2.1.7:
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=
-killable@^1.0.0:
+killable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
@@ -5555,6 +5984,11 @@ knot.js@^1.1.5:
resolved "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz#28e72522f703f50fe98812fde224dd72728fef5d"
integrity sha1-KOclIvcD9Q/piBL94iTdcnKP710=
+known-css-properties@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4"
+ integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ==
+
lcid@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@@ -5640,10 +6074,10 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
-lodash.debounce@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
- integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+lodash.capitalize@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9"
+ integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk=
lodash.defaults@^4.0.1:
version "4.2.0"
@@ -5685,6 +6119,11 @@ lodash.isobject@^3.0.2:
resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=
+lodash.kebabcase@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
+ integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY=
+
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -5705,15 +6144,15 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.11:
+lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.7.11, lodash@~4.17.10:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-loglevel@^1.4.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
- integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
+loglevel@^1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.2.tgz#668c77948a03dbd22502a3513ace1f62a80cc372"
+ integrity sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
@@ -5805,10 +6244,10 @@ mem@^4.0.0:
mimic-fn "^1.0.0"
p-is-promise "^1.1.0"
-memoize-one@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906"
- integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA==
+memoize-one@^5.0.0:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz#005928aced5c43d890a4dfab18ca908b0ec92cbc"
+ integrity sha512-P0z5IeAH6qHHGkJIXWw0xC2HNEgkx/9uWWBQw64FJj3/ol14VYdfVGWWr0fXfjhhv3TKVIqUq65os6O4GUNksA==
memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
version "0.4.1"
@@ -5830,6 +6269,11 @@ merge-stream@^1.0.1:
dependencies:
readable-stream "^2.0.1"
+merge@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
+ integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -5862,27 +6306,39 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0:
+mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+
+mime-db@~1.37.0:
version "1.37.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
-mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19:
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19:
version "2.1.21"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
dependencies:
mime-db "~1.37.0"
-mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
- integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
+mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ dependencies:
+ mime-db "1.40.0"
-mime@^2.3.1:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
- integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.2:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe"
+ integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==
mimic-fn@^1.0.0:
version "1.2.0"
@@ -5908,7 +6364,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@^3.0.3, minimatch@^3.0.4:
+minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -5920,6 +6376,11 @@ minimist@0.0.8:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+minimist@1.1.x:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8"
+ integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=
+
minimist@^1.1.1, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -6011,7 +6472,7 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-ms@^2.1.1:
+ms@2.1.1, ms@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
@@ -6029,15 +6490,20 @@ multicast-dns@^6.0.1:
dns-packet "^1.3.1"
thunky "^1.0.2"
+mute-stream@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
+ integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=
+
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-nan@^2.9.2:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
- integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
nanomatch@^1.2.9:
version "1.2.13"
@@ -6081,17 +6547,17 @@ needle@^2.2.1:
iconv-lite "^0.4.4"
sax "^1.2.4"
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
- integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
neo-async@^2.5.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
-next-tick@1:
+next-tick@1, next-tick@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
@@ -6163,10 +6629,10 @@ node-notifier@^5.2.1:
shellwords "^0.1.1"
which "^1.3.0"
-node-pre-gyp@^0.10.0:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
- integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
@@ -6179,17 +6645,10 @@ node-pre-gyp@^0.10.0:
semver "^5.3.0"
tar "^4"
-node-releases@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2"
- integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==
- dependencies:
- semver "^5.3.0"
-
-node-releases@^1.1.8:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.10.tgz#5dbeb6bc7f4e9c85b899e2e7adcc0635c9b2adf7"
- integrity sha512-KbUPCpfoBvb3oBkej9+nrU0/7xPlVhmhhUJ1PZqwIP5/1dJkRWKWD3OONjo6M2J7tSCBtDCumLwwqeI+DWWaLQ==
+node-releases@^1.1.21:
+ version "1.1.22"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.22.tgz#d90cd5adc59ab9b0f377d4f532b09656399c88bf"
+ integrity sha512-O6XpteBuntW1j86mw6LlovBIwTe+sO2+7vi9avQffNeIW4upgnaCVm6xrBWH+KATz7mNNRNNeEpuWB7dT6Cr3w==
dependencies:
semver "^5.3.0"
@@ -6201,6 +6660,13 @@ nopt@^4.0.1:
abbrev "1"
osenv "^0.1.4"
+nopt@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
+ integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
+ dependencies:
+ abbrev "1"
+
normalize-package-data@^2.3.2:
version "2.4.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
@@ -6381,25 +6847,25 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
-object.values@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
- integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=
+object.values@^1.0.4, object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.6.1"
- function-bind "^1.1.0"
- has "^1.0.1"
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-offline-plugin@^5.0.6:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.6.tgz#7a7b244220cddb8a8cabecb172ec5c0be03e74b2"
- integrity sha512-qvcDmeI30xmvSlmqjopAj7QCuM1MEzvmDyuMTN2saDReSay5nUqCpKysexH1KUNXv5H/TfmHd+rngNPkRFj3YA==
+offline-plugin@^5.0.7:
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz#26936ad1a7699f4d67e0a095a258972a4ccf1788"
+ integrity sha512-ArMFt4QFjK0wg8B5+R/6tt65u6Dk+Pkx4PAcW5O7mgIF3ywMepaQqFOQgfZD4ybanuGwuJihxUwMRgkzd+YGYw==
dependencies:
deep-extend "^0.5.1"
ejs "^2.3.4"
@@ -6414,10 +6880,10 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
-on-headers@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
- integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
@@ -6426,6 +6892,11 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
dependencies:
wrappy "1"
+onetime@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+ integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
+
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@@ -6438,10 +6909,10 @@ opener@^1.5.1:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
-opn@^5.1.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035"
- integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==
+opn@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
+ integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
dependencies:
is-wsl "^1.1.0"
@@ -6554,10 +7025,10 @@ p-locate@^3.0.0:
dependencies:
p-limit "^2.0.0"
-p-map@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
- integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
p-reduce@^1.0.0:
version "1.0.0"
@@ -6651,10 +7122,10 @@ parse5@^3.0.1:
dependencies:
"@types/node" "*"
-parseurl@~1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
- integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
pascalcase@^0.1.1:
version "0.1.1"
@@ -6815,6 +7286,11 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
@@ -6848,6 +7324,11 @@ pkg-dir@^3.0.0:
dependencies:
find-up "^3.0.0"
+pluralize@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
+ integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=
+
pluralize@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
@@ -6858,7 +7339,7 @@ pn@^1.1.0:
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
-portfinder@^1.0.9:
+portfinder@^1.0.20:
version "1.0.20"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a"
integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==
@@ -7221,16 +7702,7 @@ postcss@^5.0.16:
source-map "^0.5.6"
supports-color "^3.2.3"
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5, postcss@^7.0.6:
- version "7.0.7"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614"
- integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==
- dependencies:
- chalk "^2.4.1"
- source-map "^0.6.1"
- supports-color "^5.5.0"
-
-postcss@^7.0.14:
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.14"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
@@ -7271,12 +7743,12 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-pretty-format@^24.5.0:
- version "24.5.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.5.0.tgz#cc69a0281a62cd7242633fc135d6930cd889822d"
- integrity sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==
+pretty-format@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2"
+ integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==
dependencies:
- "@jest/types" "^24.5.0"
+ "@jest/types" "^24.8.0"
ansi-regex "^4.0.0"
ansi-styles "^3.2.0"
react-is "^16.8.4"
@@ -7296,6 +7768,11 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+progress@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+ integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=
+
progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -7329,21 +7806,22 @@ prop-types-extra@^1.0.1:
react-is "^16.3.2"
warning "^3.0.0"
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
- version "15.6.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
- integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
dependencies:
- loose-envify "^1.3.1"
+ loose-envify "^1.4.0"
object-assign "^4.1.1"
+ react-is "^16.8.1"
-proxy-addr@~2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
- integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==
+proxy-addr@~2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
dependencies:
forwarded "~0.1.2"
- ipaddr.js "1.8.0"
+ ipaddr.js "1.9.0"
prr@~1.0.1:
version "1.0.1"
@@ -7412,7 +7890,12 @@ q@^1.1.2:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-qs@6.5.2, qs@~6.5.2:
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
@@ -7449,10 +7932,10 @@ railroad-diagrams@^1.0.0:
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=
-rails-ujs@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.2.tgz#ab01dd087a323975637b50e93e7afcc0f9068568"
- integrity sha512-tJl7MdysGrQEKmwF7BJkz5XwUOkdnI9E7SvSbT39yO7pdFc96D4hWKm6Sb15pU4n5mt4rLPb/6kkyTQujP1k7Q==
+rails-ujs@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.3.tgz#4b65ea781a6befe62e96da6362165286a1fe4099"
+ integrity sha512-rYgj185MowWFBJI1wdac2FkX4yFYe4+3jJPlB+CTY7a4rmIyg0TqE4vYZmSBBesp7blPUa57oqKzwQjN7eVbEQ==
randexp@0.4.6:
version "0.4.6"
@@ -7477,19 +7960,19 @@ randomfill@^1.0.3:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
-range-parser@^1.0.3, range-parser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
- integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-raw-body@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
- integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
dependencies:
- bytes "3.0.0"
- http-errors "1.6.3"
- iconv-lite "0.4.23"
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
unpipe "1.0.0"
rc@^1.2.7:
@@ -7502,15 +7985,15 @@ rc@^1.2.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-dom@^16.7.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8"
- integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==
+react-dom@^16.8.6:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
+ integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
- scheduler "^0.12.0"
+ scheduler "^0.13.6"
react-event-listener@^0.6.0:
version "0.6.5"
@@ -7568,26 +8051,21 @@ react-intl-translations-manager@^5.0.3:
json-stable-stringify "^1.0.1"
mkdirp "^0.5.1"
-react-intl@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.7.2.tgz#efe97e3fc0e99b4e88a6e6150854d3d1852a4381"
- integrity sha512-3dcNGLqEw2FKkX+1L2WYLgjP0MVJkvWuVd1uLcnwifIQe8JQvnd9Bss4hb4Gvg/YhBIRcs4LM6C2bAgyklucjw==
+react-intl@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.9.0.tgz#c97c5d17d4718f1575fdbd5a769f96018a3b1843"
+ integrity sha512-27jnDlb/d2A7mSJwrbOBnUgD+rPep+abmoJE511Tf8BnoONIAUehy/U1zZCHGO17mnOwMWxqN4qC0nW11cD6rA==
dependencies:
- hoist-non-react-statics "^2.5.5"
+ hoist-non-react-statics "^3.3.0"
intl-format-cache "^2.0.5"
intl-messageformat "^2.1.0"
intl-relativeformat "^2.1.0"
invariant "^2.1.1"
-react-is@^16.3.2, react-is@^16.6.1, react-is@^16.6.3, react-is@^16.7.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa"
- integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g==
-
-react-is@^16.8.4:
- version "16.8.4"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2"
- integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==
+react-is@^16.3.2, react-is@^16.6.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.2, react-is@^16.8.4, react-is@^16.8.6:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
+ integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4:
version "3.0.4"
@@ -7639,17 +8117,17 @@ react-redux-loading-bar@^4.0.8:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.2"
-react-redux@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.0.tgz#09e86eeed5febb98e9442458ad2970c8f1a173ef"
- integrity sha512-EmbC3uLl60pw2VqSSkj6HpZ6jTk12RMrwXMBdYtM6niq0MdEaRq9KYCwpJflkOZj349BLGQm1MI/JO1W96kLWQ==
+react-redux@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz#0d423e2c1cb10ada87293d47e7de7c329623ba4d"
+ integrity sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ==
dependencies:
- "@babel/runtime" "^7.2.0"
- hoist-non-react-statics "^3.2.1"
+ "@babel/runtime" "^7.3.1"
+ hoist-non-react-statics "^3.3.0"
invariant "^2.2.4"
loose-envify "^1.4.0"
- prop-types "^15.6.2"
- react-is "^16.6.3"
+ prop-types "^15.7.2"
+ react-is "^16.8.2"
react-router-dom@^4.1.1:
version "4.3.1"
@@ -7684,14 +8162,14 @@ react-router@^4.3.1:
prop-types "^15.6.1"
warning "^4.0.1"
-react-select@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/react-select/-/react-select-2.2.0.tgz#67c8b5c2dcb8df0384f2a103efe952570f5d6b93"
- integrity sha512-FOnsm/zrJ2pZvYsEfs58Xvru0SHL1jXAZTCFTWcOxmQSnRKgYuXUDFdpDiET90GLtJEF+t6BaZeD43bUH6/NZQ==
+react-select@^2.4.4:
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/react-select/-/react-select-2.4.4.tgz#ba72468ef1060c7d46fbb862b0748f96491f1f73"
+ integrity sha512-C4QPLgy9h42J/KkdrpVxNmkY6p4lb49fsrbDk/hRcZpX7JvZPNb6mGj+c5SzyEtBv1DmQ9oPH4NmhAFvCrg8Jw==
dependencies:
classnames "^2.2.5"
- create-emotion "^10.0.4"
- memoize-one "^4.0.0"
+ emotion "^9.1.2"
+ memoize-one "^5.0.0"
prop-types "^15.6.0"
raf "^3.4.0"
react-input-autosize "^2.2.1"
@@ -7704,39 +8182,39 @@ react-sparklines@^1.7.0:
dependencies:
prop-types "^15.5.10"
-react-swipeable-views-core@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.0.tgz#6bf8a8132a756355444537672a14e84b1e3b53c2"
- integrity sha512-MAe119eSN4obiqsIp+qoUWtLbyjz+dWEfz+qPurPvyIFoXxuxpBnsDy36+C7cBaCi5z4dRmfoMlm1dBAdIzvig==
+react-swipeable-views-core@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.1.tgz#8829a922462a8bdd701709cd1b385393d38f1527"
+ integrity sha512-EP8sCvvD7VDiZLglPt9icMuMNu8qLRLk0ab/fB1HXv7lX8ClnwF3UMCM0ZrN3sguSY7CsX3LevducGGsT1VcDg==
dependencies:
"@babel/runtime" "7.0.0"
warning "^4.0.1"
-react-swipeable-views-utils@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.0.tgz#0ea17aa67f88a69d534c79d591f8d82ef98346a4"
- integrity sha512-1I4BhDqA6qkRdW0nexnudh/QdvVAVy0a7M5OyU2TrjaTovg6ufBouzqfqjZfUZUxVdOftTkPtisHmcqqZ+b1TA==
+react-swipeable-views-utils@^0.13.3:
+ version "0.13.3"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.3.tgz#c234d8d836bb085803631a9fef0adb2f9597221f"
+ integrity sha512-CZkJwiNQPISkyTsPMUPiJgwJBrUVd7NC3WSUvx30uwvPb0Sy2w2+tpU51qeYc6YwIhex0s5Eu5YPjK3PDBh+gA==
dependencies:
"@babel/runtime" "7.0.0"
fbjs "^0.8.4"
keycode "^2.1.7"
prop-types "^15.6.0"
react-event-listener "^0.6.0"
- react-swipeable-views-core "^0.13.0"
+ react-swipeable-views-core "^0.13.1"
-react-swipeable-views@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.0.tgz#a200cef1005d55af6a27b97048afe9a4056e0ab8"
- integrity sha512-r6H8lbtcI99oKykpLxYrI6O9im1lJ4D5/hf8bkNeQLdHZ9ftxS03qgEtguy3GpT5VB9yS4gErYWeaTrhCrysEg==
+react-swipeable-views@^0.13.3:
+ version "0.13.3"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz#2ad886767c6b2de88000606a14bedde12156e6d0"
+ integrity sha512-LBHRA5ZouipmoLLwi0cqB8qc7NHLskbXmT1I+ZztC9JfmgKrfichw5R+7q4igQ+5VbaP6jL1vn8BtHW96WYNFQ==
dependencies:
"@babel/runtime" "7.0.0"
dom-helpers "^3.2.1"
prop-types "^15.5.4"
- react-swipeable-views-core "^0.13.0"
- react-swipeable-views-utils "^0.13.0"
+ react-swipeable-views-core "^0.13.1"
+ react-swipeable-views-utils "^0.13.3"
warning "^4.0.1"
-react-test-renderer@^16.0.0-0, react-test-renderer@^16.7.0:
+react-test-renderer@^16.0.0-0:
version "16.7.0"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.7.0.tgz#1ca96c2b450ab47c36ba92cd8c03fcefc52ea01c"
integrity sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg==
@@ -7746,6 +8224,16 @@ react-test-renderer@^16.0.0-0, react-test-renderer@^16.7.0:
react-is "^16.7.0"
scheduler "^0.12.0"
+react-test-renderer@^16.8.6:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1"
+ integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ react-is "^16.8.6"
+ scheduler "^0.13.6"
+
react-textarea-autosize@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz#3132cb77e65d94417558d37c0bfe415a5afd3445"
@@ -7771,15 +8259,15 @@ react-transition-group@^2.2.0, react-transition-group@^2.2.1:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
-react@^16.7.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
- integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==
+react@^16.8.6:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
+ integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
- scheduler "^0.12.0"
+ scheduler "^0.13.6"
read-pkg-up@^2.0.0:
version "2.0.0"
@@ -7837,7 +8325,7 @@ readable-stream@^3.0.6:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readdirp@^2.0.0:
+readdirp@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
@@ -7846,6 +8334,15 @@ readdirp@^2.0.0:
micromatch "^3.1.10"
readable-stream "^2.0.2"
+readline2@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
+ integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ mute-stream "0.0.5"
+
realpath-native@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
@@ -7890,10 +8387,10 @@ redux@^4.0.1:
loose-envify "^1.4.0"
symbol-observable "^1.2.0"
-regenerate-unicode-properties@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
- integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
+regenerate-unicode-properties@^8.0.2:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+ integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
dependencies:
regenerate "^1.4.0"
@@ -7912,10 +8409,15 @@ regenerator-runtime@^0.12.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
-regenerator-transform@^0.13.4:
- version "0.13.4"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb"
- integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==
+regenerator-runtime@^0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
+ integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
+
+regenerator-transform@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf"
+ integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==
dependencies:
private "^0.1.6"
@@ -7927,27 +8429,27 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
-regexp-tree@^0.1.0:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.5.tgz#7cd71fca17198d04b4176efd79713f2998009397"
- integrity sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==
+regexp-tree@^0.1.6:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc"
+ integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
-regexpu-core@^4.1.3, regexpu-core@^4.2.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
- integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==
+regexpu-core@^4.5.4:
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
+ integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
dependencies:
regenerate "^1.4.0"
- regenerate-unicode-properties "^7.0.0"
+ regenerate-unicode-properties "^8.0.2"
regjsgen "^0.5.0"
regjsparser "^0.6.0"
unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.0.2"
+ unicode-match-property-value-ecmascript "^1.1.0"
regjsgen@^0.5.0:
version "0.5.0"
@@ -8048,7 +8550,7 @@ require-package-name@^2.0.1:
resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9"
integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=
-require-uncached@^1.0.3:
+require-uncached@^1.0.2, require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
@@ -8106,13 +8608,28 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0:
+resolve@^1.10.0, resolve@^1.3.2:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232"
+ integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==
+ dependencies:
+ path-parse "^1.0.6"
+
+resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==
dependencies:
path-parse "^1.0.6"
+restore-cursor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+ integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
+ dependencies:
+ exit-hook "^1.0.0"
+ onetime "^1.0.0"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -8136,12 +8653,12 @@ rgba-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
dependencies:
- glob "^7.0.5"
+ glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
@@ -8164,6 +8681,13 @@ rsvp@^3.3.3:
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==
+run-async@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
+ integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=
+ dependencies:
+ once "^1.3.0"
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@@ -8178,6 +8702,11 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
+rx-lite@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
+ integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=
+
rxjs@^6.1.0:
version "6.3.3"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55"
@@ -8217,6 +8746,26 @@ sane@^4.0.3:
minimist "^1.1.1"
walker "~1.0.5"
+sass-lint@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz#5fd2b2792e9215272335eb0f0dc607f61e8acc8f"
+ integrity sha512-DSyah8/MyjzW2BWYmQWekYEKir44BpLqrCFsgs9iaWiVTcwZfwXHF586hh3D1n+/9ihUNMfd8iHAyb9KkGgs7Q==
+ dependencies:
+ commander "^2.8.1"
+ eslint "^2.7.0"
+ front-matter "2.1.2"
+ fs-extra "^3.0.1"
+ glob "^7.0.0"
+ globule "^1.0.0"
+ gonzales-pe-sl "^4.2.3"
+ js-yaml "^3.5.4"
+ known-css-properties "^0.3.0"
+ lodash.capitalize "^4.1.0"
+ lodash.kebabcase "^4.0.0"
+ merge "^1.2.0"
+ path-is-absolute "^1.0.0"
+ util "^0.10.3"
+
sass-loader@^7.0.3:
version "7.1.0"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d"
@@ -8229,10 +8778,10 @@ sass-loader@^7.0.3:
pify "^3.0.0"
semver "^5.5.0"
-sass@^1.17.2:
- version "1.17.2"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.17.2.tgz#b5a28f2f13c6a219f28084c03623bb2c8d176323"
- integrity sha512-TBNcwSIEXpXAIaFxQnWbHzhciwPKpHRprQ+1ww+g9eHCiY3PINJs6vQTu+LcBt1vIhrtQGRFIoxJO39TfLrptA==
+sass@^1.20.3:
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.20.3.tgz#18284a7bac6eab9cbb80453288473194f29efb84"
+ integrity sha512-kvf+w5XT7FrmFrCKz1gPHqegufG+gxifC8oQesX/s8gkShdeiTqiuvP0c8TvfBwMAuI1YGOgobZQ2KIJGn//jA==
dependencies:
chokidar "^2.0.0"
@@ -8249,6 +8798,14 @@ scheduler@^0.12.0:
loose-envify "^1.1.0"
object-assign "^4.1.1"
+scheduler@^0.13.6:
+ version "0.13.6"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
+ integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
schema-utils@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
@@ -8271,14 +8828,14 @@ select-hose@^2.0.0:
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
-selfsigned@^1.9.1:
+selfsigned@^1.10.4:
version "1.10.4"
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd"
integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==
dependencies:
node-forge "0.7.5"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+"semver@2 || 3 || 4 || 5", semver@^5.5.1, semver@^5.6.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
@@ -8288,10 +8845,20 @@ semver@4.3.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=
-send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@^6.1.0, semver@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b"
+ integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
dependencies:
debug "2.6.9"
depd "~1.1.2"
@@ -8300,19 +8867,24 @@ send@0.16.2:
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
- http-errors "~1.6.2"
- mime "1.4.1"
- ms "2.0.0"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
serialize-javascript@^1.4.0:
version "1.6.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879"
integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==
-serve-index@^1.7.2:
+serialize-javascript@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
+ integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
+
+serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
@@ -8325,15 +8897,15 @@ serve-index@^1.7.2:
mime-types "~2.1.17"
parseurl "~1.3.2"
-serve-static@1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
+ parseurl "~1.3.3"
+ send "0.17.1"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@@ -8370,6 +8942,11 @@ setprototypeof@1.1.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@@ -8399,6 +8976,11 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+shelljs@^0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8"
+ integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=
+
shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -8431,6 +9013,11 @@ slash@^2.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+ integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
+
slice-ansi@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7"
@@ -8514,12 +9101,20 @@ source-map-support@^0.5.6, source-map-support@~0.5.6:
buffer-from "^1.0.0"
source-map "^0.6.0"
+source-map-support@~0.5.10:
+ version "0.5.12"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+ integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6:
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -8529,6 +9124,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@^0.7.2:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
spdx-correct@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
@@ -8637,16 +9237,11 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
- integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
stealthy-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
@@ -8775,6 +9370,11 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+strip-json-comments@~1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
stylehacks@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
@@ -8784,6 +9384,16 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
+stylis-rule-sheet@^0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
+ integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==
+
+stylis@^3.5.0:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
+ integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
+
substring-trie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz#7b42592391628b4f2cb17365c6cce4257c7b7af5"
@@ -8845,6 +9455,18 @@ symbol-tree@^3.2.2:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
+table@^3.7.8:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
+ integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=
+ dependencies:
+ ajv "^4.7.0"
+ ajv-keywords "^1.0.0"
+ chalk "^1.1.1"
+ lodash "^4.0.0"
+ slice-ansi "0.0.4"
+ string-width "^2.0.0"
+
table@^5.0.2:
version "5.1.1"
resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837"
@@ -8892,6 +9514,22 @@ terser-webpack-plugin@^1.1.0:
webpack-sources "^1.1.0"
worker-farm "^1.5.2"
+terser-webpack-plugin@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4"
+ integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==
+ dependencies:
+ cacache "^11.3.2"
+ find-cache-dir "^2.0.0"
+ is-wsl "^1.1.0"
+ loader-utils "^1.2.3"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.7.0"
+ source-map "^0.6.1"
+ terser "^4.0.0"
+ webpack-sources "^1.3.0"
+ worker-farm "^1.7.0"
+
terser@^3.8.1:
version "3.14.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.0.tgz#49a8ddf34a1308a901d787dab03a42c51b557447"
@@ -8901,6 +9539,15 @@ terser@^3.8.1:
source-map "~0.6.1"
source-map-support "~0.5.6"
+terser@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz#ef356f6f359a963e2cc675517f21c1c382877374"
+ integrity sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==
+ dependencies:
+ commander "^2.19.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.10"
+
test-exclude@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1"
@@ -8911,7 +9558,7 @@ test-exclude@^5.0.0:
read-pkg-up "^4.0.0"
require-main-filename "^1.0.1"
-text-table@^0.2.0:
+text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
@@ -9010,6 +9657,18 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+touch@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/touch/-/touch-2.0.2.tgz#ca0b2a3ae3211246a61b16ba9e6cbf1596287164"
+ integrity sha512-qjNtvsFXTRq7IuMLweVgFxmEuQ6gLbRs2jQxL80TtZ31dEKWYIxRXquij6w6VimyDek5hD3PytljHmEtAs2u0A==
+ dependencies:
+ nopt "~1.0.10"
+
tough-cookie@>=2.3.3, tough-cookie@^2.3.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -9072,13 +9731,13 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-is@~1.6.16:
- version "1.6.16"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
- integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
- mime-types "~2.1.18"
+ mime-types "~2.1.24"
typedarray@^0.0.6:
version "0.0.6"
@@ -9090,7 +9749,7 @@ ua-parser-js@^0.7.18:
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b"
integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==
-uglify-js@^3.0.0, uglify-js@^3.1.4:
+uglify-js@^3.1.4:
version "3.4.9"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
@@ -9098,20 +9757,6 @@ uglify-js@^3.0.0, uglify-js@^3.1.4:
commander "~2.17.1"
source-map "~0.6.1"
-uglifyjs-webpack-plugin@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.2.tgz#70e5c38fb2d35ee887949c2a0adb2656c23296d5"
- integrity sha512-G1fJx2uOAAfvdZ77SVCzmFo6mv8uKaHoZBL9Qq/ciC8r6p0ANOL1uY85fIUiyWXKw5RzAaJYZfNSL58Or2hQ0A==
- dependencies:
- cacache "^11.2.0"
- find-cache-dir "^2.0.0"
- schema-utils "^1.0.0"
- serialize-javascript "^1.4.0"
- source-map "^0.6.1"
- uglify-js "^3.0.0"
- webpack-sources "^1.1.0"
- worker-farm "^1.5.2"
-
unicode-astral-regex@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/unicode-astral-regex/-/unicode-astral-regex-1.0.1.tgz#2cab8529480646f9614ddbc7b62158ad05123feb"
@@ -9130,15 +9775,15 @@ unicode-match-property-ecmascript@^1.0.4:
unicode-canonical-property-names-ecmascript "^1.0.4"
unicode-property-aliases-ecmascript "^1.0.4"
-unicode-match-property-value-ecmascript@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
- integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
+unicode-match-property-value-ecmascript@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+ integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
unicode-property-aliases-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
- integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+ integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
union-value@^1.0.0:
version "1.0.0"
@@ -9174,6 +9819,11 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -9192,10 +9842,10 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-upath@^1.0.5:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
- integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
uri-js@^4.2.2:
version "4.2.2"
@@ -9230,6 +9880,13 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+user-home@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
+ integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8=
+ dependencies:
+ os-homedir "^1.0.0"
+
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -9267,11 +9924,6 @@ uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-uws@10.148.0:
- version "10.148.0"
- resolved "https://registry.yarnpkg.com/uws/-/uws-10.148.0.tgz#3fcd35f083ca515e091cd33b2d78f0f51a666215"
- integrity sha512-aJpFgMMyxubiE/ll4nj9nWoQbv0HzZZDWXfwyu78nuFObX0Zoyv3TWjkqKPQ1vb2sMPZoz67tri7QNE6dybNmQ==
-
v8-compile-cache@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
@@ -9323,7 +9975,7 @@ w3c-hr-time@^1.0.1:
dependencies:
browser-process-hrtime "^0.1.2"
-walker@~1.0.5:
+walker@^1.0.7, walker@~1.0.5:
version "1.0.7"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
@@ -9397,10 +10049,10 @@ webpack-bundle-analyzer@^3.1.0:
opener "^1.5.1"
ws "^6.0.0"
-webpack-cli@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.2.3.tgz#13653549adfd8ccd920ad7be1ef868bacc22e346"
- integrity sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==
+webpack-cli@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91"
+ integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==
dependencies:
chalk "^2.4.1"
cross-spawn "^6.0.5"
@@ -9412,53 +10064,53 @@ webpack-cli@^3.2.3:
loader-utils "^1.1.0"
supports-color "^5.5.0"
v8-compile-cache "^2.0.2"
- yargs "^12.0.4"
+ yargs "^12.0.5"
-webpack-dev-middleware@^3.5.1:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.6.1.tgz#91f2531218a633a99189f7de36045a331a4b9cd4"
- integrity sha512-XQmemun8QJexMEvNFbD2BIg4eSKrmSIMrTfnl2nql2Sc6OGAYFyb8rwuYrCjl/IiEYYuyTEiimMscu7EXji/Dw==
+webpack-dev-middleware@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
+ integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==
dependencies:
memory-fs "^0.4.1"
- mime "^2.3.1"
- range-parser "^1.0.3"
+ mime "^2.4.2"
+ range-parser "^1.2.1"
webpack-log "^2.0.0"
-webpack-dev-server@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e"
- integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw==
+webpack-dev-server@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.5.1.tgz#4290ac709bb989dc7382c912899f79fd5677dabf"
+ integrity sha512-0IdMGddJcnK9zesZOeHWl4uAOVfypn7DSrdNWtclROkVBXy/TcBN+6eEG1wNfLT9dXVfaRZZsLTJt0mJtgTQgw==
dependencies:
ansi-html "0.0.7"
bonjour "^3.5.0"
- chokidar "^2.0.0"
- compression "^1.5.2"
- connect-history-api-fallback "^1.3.0"
+ chokidar "^2.1.6"
+ compression "^1.7.4"
+ connect-history-api-fallback "^1.6.0"
debug "^4.1.1"
- del "^3.0.0"
- express "^4.16.2"
- html-entities "^1.2.0"
+ del "^4.1.1"
+ express "^4.17.1"
+ html-entities "^1.2.1"
http-proxy-middleware "^0.19.1"
import-local "^2.0.0"
- internal-ip "^4.2.0"
+ internal-ip "^4.3.0"
ip "^1.1.5"
- killable "^1.0.0"
- loglevel "^1.4.1"
- opn "^5.1.0"
- portfinder "^1.0.9"
+ killable "^1.0.1"
+ loglevel "^1.6.2"
+ opn "^5.5.0"
+ portfinder "^1.0.20"
schema-utils "^1.0.0"
- selfsigned "^1.9.1"
- semver "^5.6.0"
- serve-index "^1.7.2"
+ selfsigned "^1.10.4"
+ semver "^6.1.1"
+ serve-index "^1.9.1"
sockjs "0.3.19"
sockjs-client "1.3.0"
spdy "^4.0.0"
- strip-ansi "^3.0.0"
+ strip-ansi "^3.0.1"
supports-color "^6.1.0"
url "^0.11.0"
- webpack-dev-middleware "^3.5.1"
+ webpack-dev-middleware "^3.7.0"
webpack-log "^2.0.0"
- yargs "12.0.2"
+ yargs "12.0.5"
webpack-log@^2.0.0:
version "2.0.0"
@@ -9604,6 +10256,13 @@ worker-farm@^1.5.2:
dependencies:
errno "~0.1.7"
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -9652,11 +10311,6 @@ xml-name-validator@^3.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
-xregexp@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
- integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==
-
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
@@ -9672,13 +10326,6 @@ yallist@^3.0.0, yallist@^3.0.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
-yargs-parser@^10.1.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
- integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
- dependencies:
- camelcase "^4.1.0"
-
yargs-parser@^11.1.1:
version "11.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
@@ -9687,25 +10334,7 @@ yargs-parser@^11.1.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs@12.0.2:
- version "12.0.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc"
- integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==
- dependencies:
- cliui "^4.0.0"
- decamelize "^2.0.0"
- find-up "^3.0.0"
- get-caller-file "^1.0.1"
- os-locale "^3.0.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1 || ^4.0.0"
- yargs-parser "^10.1.0"
-
-yargs@^12.0.2, yargs@^12.0.4, yargs@^12.0.5:
+yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5:
version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==