несприйнятливим",
+ "compose_form.sensitive.unmarked": "Медіа відмічене сприйнятливим",
+ "compose_form.spoiler.marked": "Текст приховано за попередженням",
+ "compose_form.spoiler.unmarked": "Текст видимий",
"compose_form.spoiler_placeholder": "Попередження щодо прихованого тексту",
"confirmation_modal.cancel": "Відмінити",
"confirmations.block.confirm": "Заблокувати",
"confirmations.block.message": "Ви впевнені, що хочете заблокувати {name}?",
"confirmations.delete.confirm": "Видалити",
"confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.delete_list.confirm": "Видалити",
+ "confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?",
"confirmations.domain_block.confirm": "Сховати весь домен",
- "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів.",
+ "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.",
"confirmations.mute.confirm": "Заглушити",
"confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "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.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:",
+ "confirmations.redraft.confirm": "Видалити і перестворити",
+ "confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.",
+ "confirmations.unfollow.confirm": "Відписатися",
+ "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?",
+ "embed.instructions": "Інтегруйте цей статус на вашому вебсайті, скопіювавши код нижче.",
+ "embed.preview": "Ось як він виглядатиме:",
"emoji_button.activity": "Заняття",
- "emoji_button.custom": "Custom",
+ "emoji_button.custom": "Особливі",
"emoji_button.flags": "Прапори",
"emoji_button.food": "Їжа та напої",
"emoji_button.label": "Вставити емодзі",
"emoji_button.nature": "Природа",
- "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Немає емодзі!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предмети",
"emoji_button.people": "Люди",
- "emoji_button.recent": "Frequently used",
+ "emoji_button.recent": "Часто використовувані",
"emoji_button.search": "Знайти...",
- "emoji_button.search_results": "Search results",
+ "emoji_button.search_results": "Результати пошуку",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
+ "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.",
+ "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.",
+ "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": "Дописів з цим хештегом поки не існує.",
"empty_column.home": "Ви поки ні на кого не підписані. Погортайте {public}, або скористуйтесь пошуком, щоб освоїтися та познайомитися з іншими користувачами.",
"empty_column.home.public_timeline": "публічні стрічки",
- "empty_column.list": "There is nothing in this list yet.",
+ "empty_column.list": "Немає нічого в цьому списку. Коли його учасники дмухнуть нові статуси, вони з'являться тут.",
+ "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": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.",
- "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку.",
+ "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку",
"follow_request.authorize": "Авторизувати",
"follow_request.reject": "Відмовити",
- "getting_started.developers": "Developers",
- "getting_started.documentation": "Documentation",
- "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.developers": "Розробникам",
+ "getting_started.documentation": "Документація",
+ "getting_started.find_friends": "Знайдіть друзів із Twitter",
"getting_started.heading": "Ласкаво просимо",
- "getting_started.invite": "Invite people",
+ "getting_started.invite": "Запросіть людей",
"getting_started.open_source_notice": "Mastodon - програма з відкритим вихідним кодом. Ви можете допомогти проекту, або повідомити про проблеми на GitHub за адресою {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
+ "getting_started.security": "Безпека",
+ "getting_started.terms": "Умови використання",
"home.column_settings.basic": "Основні",
"home.column_settings.show_reblogs": "Показувати передмухи",
"home.column_settings.show_replies": "Показувати відповіді",
- "keyboard_shortcuts.back": "to navigate back",
- "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.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.search": "to focus search",
- "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.back": "переходити назад",
+ "keyboard_shortcuts.boost": "передмухувати",
+ "keyboard_shortcuts.column": "фокусуватися на одній з колонок",
+ "keyboard_shortcuts.compose": "фокусуватися на полі введення",
+ "keyboard_shortcuts.description": "Опис",
+ "keyboard_shortcuts.down": "рухатися вниз стрічкою",
+ "keyboard_shortcuts.enter": "відкрити статус",
+ "keyboard_shortcuts.favourite": "вподобати",
+ "keyboard_shortcuts.heading": "Гарячі клавіші",
+ "keyboard_shortcuts.hotkey": "Гаряча клавіша",
+ "keyboard_shortcuts.legend": "показати підказку",
+ "keyboard_shortcuts.mention": "згадати автора",
+ "keyboard_shortcuts.profile": "відкрити профіль автора",
+ "keyboard_shortcuts.reply": "відповісти",
+ "keyboard_shortcuts.search": "сфокусуватися на пошуку",
+ "keyboard_shortcuts.toggle_hidden": "показати/приховати прихований текст",
+ "keyboard_shortcuts.toot": "почати писати новий дмух",
+ "keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку",
+ "keyboard_shortcuts.up": "рухатися вверх списком",
"lightbox.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.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
+ "lightbox.next": "Далі",
+ "lightbox.previous": "Назад",
+ "lists.account.add": "Додати до списку",
+ "lists.account.remove": "Видалити зі списку",
+ "lists.delete": "Видалити список",
+ "lists.edit": "Редагувати список",
+ "lists.new.create": "Додати список",
+ "lists.new.title_placeholder": "Нова назва списку",
+ "lists.search": "Шукати серед людей, на яких ви підписані",
+ "lists.subheading": "Ваші списки",
"loading_indicator.label": "Завантаження...",
"media_gallery.toggle_visible": "Показати/приховати",
"missing_indicator.label": "Не знайдено",
- "missing_indicator.sublabel": "This resource could not be found",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "missing_indicator.sublabel": "Ресурс не знайдений",
+ "mute_modal.hide_notifications": "Приховати сповіщення від користувача?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Заблоковані користувачі",
"navigation_bar.community_timeline": "Локальна стрічка",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Прямі повідомлення",
+ "navigation_bar.discover": "Знайти",
+ "navigation_bar.domain_blocks": "Приховані домени",
"navigation_bar.edit_profile": "Редагувати профіль",
"navigation_bar.favourites": "Вподобане",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Приховані слова",
"navigation_bar.follow_requests": "Запити на підписку",
- "navigation_bar.info": "Про інстанцію",
- "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
- "navigation_bar.lists": "Lists",
+ "navigation_bar.info": "Про сайт",
+ "navigation_bar.keyboard_shortcuts": "Гарячі клавіши",
+ "navigation_bar.lists": "Списки",
"navigation_bar.logout": "Вийти",
"navigation_bar.mutes": "Заглушені користувачі",
- "navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.personal": "Особисте",
+ "navigation_bar.pins": "Закріплені дмухи",
"navigation_bar.preferences": "Налаштування",
"navigation_bar.public_timeline": "Глобальна стрічка",
- "navigation_bar.security": "Security",
- "notification.favourite": "{name} сподобався ваш допис",
+ "navigation_bar.security": "Безпека",
+ "notification.favourite": "{name} вподобав(-ла) ваш допис",
"notification.follow": "{name} підписався(-лась) на Вас",
"notification.mention": "{name} згадав(-ла) Вас",
"notification.reblog": "{name} передмухнув(-ла) Ваш допис",
"notifications.clear": "Очистити сповіщення",
- "notifications.clear_confirmation": "Ви впевнені, що хочете видалити всі сповіщеня?",
- "notifications.column_settings.alert": "Десктопні сповіщення",
+ "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?",
+ "notifications.column_settings.alert": "Сповіщення на комп'ютері",
"notifications.column_settings.favourite": "Вподобане:",
"notifications.column_settings.follow": "Нові підписники:",
- "notifications.column_settings.mention": "Сповіщення:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
+ "notifications.column_settings.mention": "Згадки:",
+ "notifications.column_settings.push": "Push-сповіщення",
+ "notifications.column_settings.push_meta": "Цей пристрій",
"notifications.column_settings.reblog": "Передмухи:",
"notifications.column_settings.show": "Показати в колонці",
- "notifications.column_settings.sound": "Відтворювати звук",
- "notifications.group": "{count} notifications",
+ "notifications.column_settings.sound": "Відтворювати звуки",
+ "notifications.group": "{count} сповіщень",
"onboarding.done": "Готово",
"onboarding.next": "Далі",
- "onboarding.page_five.public_timelines": "Локальна стрічка показує публічні пости усіх користувачів {domain}. Глобальна стрічка показує публічні пости усіх людей, на яких підписані користувачі {domain}. Це публичні стрічки, відмінний спосіб знайти нових людей.",
+ "onboarding.page_five.public_timelines": "Локальна стрічка показує публічні пости усіх користувачів {domain}. Глобальна стрічка показує публічні пости усіх людей, на яких підписані користувачі {domain}. Це публічні стрічки, відмінний спосіб знайти нових людей.",
"onboarding.page_four.home": "Домашня стрічка показує пости користувачів, на яких Ви підписані.",
- "onboarding.page_four.notifications": "Колонка сповіщень показує моменти, коли хтось звертається до Вас.",
- "onboarding.page_one.federation": "Mastodon - це мережа незалежних серверів, які разом образовують єдину соціальну мережу. Ми называємо ці сервери інстанціями.",
+ "onboarding.page_four.notifications": "Колонка сповіщень показує моменти, коли хтось взаємодії з Вами.",
+ "onboarding.page_one.federation": "Mastodon - це мережа незалежних серверів, які разом формують єдину соціальну мережу. Ми називаємо ці сервери сайтами.",
"onboarding.page_one.full_handle": "Your full handle",
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
"onboarding.page_one.welcome": "Ласкаво просимо до Mastodon!",
- "onboarding.page_six.admin": "Адміністратором Вашої інстанції є {admin}.",
+ "onboarding.page_six.admin": "Адміністратором Вашого сайту є {admin}.",
"onboarding.page_six.almost_done": "Майже готово...",
- "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.appetoot": "Смачного дудіння!",
"onboarding.page_six.apps_available": "Для Mastodon існують {apps}, доступні для iOS, Android та інших платформ.",
- "onboarding.page_six.github": "Ви можете допомогти проектові чи сповістити про проблеми на GitHub за адресою {github}.",
- "onboarding.page_six.guidelines": "правила",
+ "onboarding.page_six.github": "Mastodon - це вільне відкрите програмне забезпечення. Ви можете допомогти проектові чи сповістити про проблеми на GitHub за адресою {github}.",
+ "onboarding.page_six.guidelines": "правила спільноти",
"onboarding.page_six.read_guidelines": "Будь ласка, прочитайте {guidelines} домену {domain}!",
- "onboarding.page_six.various_app": "мобільні додатки",
+ "onboarding.page_six.various_app": "мобільні застосунки",
"onboarding.page_three.profile": "Відредагуйте Ваш профіль, щоб змінити Ваши аватарку, інформацію та відображуване ім'я. Там Ви зможете знайти і інші налаштування.",
- "onboarding.page_three.search": "Використовуйте рядок пошуку, щоб знайти інших людей та подивитися хештеги накшталт {illustration} та {introductions}. Для того, щоб знайти людину з іншої інстанції, використовуйте їхній повний нікнейм.",
+ "onboarding.page_three.search": "Використовуйте рядок пошуку, щоб знайти інших людей та подивитися хештеги на кшталт {illustration} та {introductions}. Для того, щоб знайти людину з іншого сайту, використовуйте їхній повний нікнейм.",
"onboarding.page_two.compose": "Пишіть пости у колонці 'Написати'. Ви можете завантажувати зображення, міняти налаштування приватності та додавати попередження за допомогою піктограм знизу.",
"onboarding.skip": "Пропустити",
"privacy.change": "Змінити видимість допису",
@@ -224,17 +238,17 @@
"privacy.public.short": "Публічний",
"privacy.unlisted.long": "Не показувати у публічних стрічках",
"privacy.unlisted.short": "Прихований",
- "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": "Завантаження…",
+ "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": "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": "Надіслати до {target}",
+ "report.forward_hint": "Це аккаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?",
+ "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на аккаунт нижче:",
"report.placeholder": "Додаткові коментарі",
"report.submit": "Відправити",
"report.target": "Скаржимося на",
@@ -254,6 +268,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Цей допис не може бути передмухнутий",
"status.delete": "Видалити",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Подобається",
@@ -270,6 +285,7 @@
"status.reblog": "Передмухнути",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} передмухнув(-ла)",
+ "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": "Відповісти",
"status.replyAll": "Відповісти на тред",
@@ -287,22 +303,22 @@
"tabs_bar.home": "Головна",
"tabs_bar.local_timeline": "Локальна",
"tabs_bar.notifications": "Сповіщення",
- "tabs_bar.search": "Search",
+ "tabs_bar.search": "Пошук",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.",
"upload_area.title": "Перетягніть сюди, щоб завантажити",
"upload_button.label": "Додати медіаконтент",
- "upload_form.description": "Describe for the visually impaired",
- "upload_form.focus": "Crop",
- "upload_form.undo": "Відмінити",
+ "upload_form.description": "Опишіть для людей з вадами зору",
+ "upload_form.focus": "Обрізати",
+ "upload_form.undo": "Видалити",
"upload_progress.label": "Завантаження...",
- "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": "Закрити відео",
+ "video.exit_fullscreen": "Вийти з повного екрану",
+ "video.expand": "Розширити відео",
+ "video.fullscreen": "На весь екран",
+ "video.hide": "Приховати відео",
+ "video.mute": "Вимкнути звук",
+ "video.pause": "Призупинити",
+ "video.play": "Програвати",
+ "video.unmute": "Увімкнути звук"
}
diff --git a/app/javascript/mastodon/locales/whitelist_ast.json b/app/javascript/mastodon/locales/whitelist_ast.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ast.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ka.json b/app/javascript/mastodon/locales/whitelist_ka.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ka.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 8b73bb8f9..541041923 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "此处显示的信息可能不是全部内容。",
"account.domain_blocked": "网站已屏蔽",
"account.edit_profile": "修改个人资料",
+ "account.endorse": "Feature on profile",
"account.follow": "关注",
"account.followers": "关注者",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "正在关注",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "关注了你",
"account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
"account.media": "媒体",
@@ -26,6 +29,7 @@
"account.show_reblogs": "显示来自 @{name} 的转嘟",
"account.unblock": "不再屏蔽 @{name}",
"account.unblock_domain": "不再隐藏来自 {domain} 的内容",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "取消关注",
"account.unmute": "不再隐藏 @{name}",
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "搜索结果",
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站时间轴暂时没有内容,快嘟几个来抢头香啊!",
"empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
+ "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": "这个话题标签下暂时没有内容。",
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
"empty_column.home.public_timeline": "公共时间轴",
"empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。",
+ "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": "你还没有收到过任何通知,快向其他用户搭讪吧。",
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
"follow_request.authorize": "同意",
@@ -137,6 +148,7 @@
"keyboard_shortcuts.hotkey": "快捷键",
"keyboard_shortcuts.legend": "显示此列表",
"keyboard_shortcuts.mention": "提及嘟文作者",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "回复嘟文",
"keyboard_shortcuts.search": "选择搜索框",
"keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
@@ -159,8 +171,10 @@
"missing_indicator.label": "找不到内容",
"missing_indicator.sublabel": "无法找到此资源",
"mute_modal.hide_notifications": "同时隐藏来自这个用户的通知",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "已屏蔽的用户",
"navigation_bar.community_timeline": "本站时间轴",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "私信",
"navigation_bar.discover": "发现",
"navigation_bar.domain_blocks": "已屏蔽的网站",
@@ -254,6 +268,7 @@
"status.cancel_reblog_private": "取消转嘟",
"status.cannot_reblog": "无法转嘟这条嘟文",
"status.delete": "删除",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "发送私信给 @{name}",
"status.embed": "嵌入",
"status.favourite": "收藏",
@@ -270,6 +285,7 @@
"status.reblog": "转嘟",
"status.reblog_private": "转嘟给原有关注者",
"status.reblogged_by": "{name} 转嘟了",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "删除并重新编辑",
"status.reply": "回复",
"status.replyAll": "回复所有人",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 21c3e6154..f52c20e9a 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "下列資料不一定完整。",
"account.domain_blocked": "服務站被隱藏",
"account.edit_profile": "修改個人資料",
+ "account.endorse": "Feature on profile",
"account.follow": "關注",
"account.followers": "關注的人",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "正關注",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏 @{name} 的轉推",
"account.media": "媒體",
@@ -26,6 +29,7 @@
"account.show_reblogs": "顯示 @{name} 的推文",
"account.unblock": "解除對 @{name} 的封鎖",
"account.unblock_domain": "不再隱藏 {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "取消關注",
"account.unmute": "取消 @{name} 的靜音",
"account.unmute_notifications": "取消來自 @{name} 通知的靜音",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
"empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
+ "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": "這個標籤暫時未有內容。",
"empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.home.public_timeline": "公共時間軸",
"empty_column.list": "這個列表暫時未有內容。",
+ "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": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
"empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
"follow_request.authorize": "批准",
@@ -137,6 +148,7 @@
"keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示這個說明",
"keyboard_shortcuts.mention": "提及作者",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "回覆",
"keyboard_shortcuts.search": "把標示移動到搜索",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
@@ -159,8 +171,10 @@
"missing_indicator.label": "找不到內容",
"missing_indicator.sublabel": "無法找到內容",
"mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "被你封鎖的用戶",
"navigation_bar.community_timeline": "本站時間軸",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "個人訊息",
"navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的服務站",
@@ -254,6 +268,7 @@
"status.cancel_reblog_private": "取消轉推",
"status.cannot_reblog": "這篇文章無法被轉推",
"status.delete": "刪除",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "私訊 @{name}",
"status.embed": "鑲嵌",
"status.favourite": "收藏",
@@ -270,6 +285,7 @@
"status.reblog": "轉推",
"status.reblog_private": "轉推到原讀者",
"status.reblogged_by": "{name} 轉推",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "刪除並編輯",
"status.reply": "回應",
"status.replyAll": "回應所有人",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index b4a70ef70..365ffa1ea 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "下列資料不一定完整。",
"account.domain_blocked": "站點被隱藏",
"account.edit_profile": "編輯使用者資訊",
+ "account.endorse": "Feature on profile",
"account.follow": "關注",
"account.followers": "關注者",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "正在關注",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏來自 @{name} 的轉推",
"account.media": "媒體",
@@ -26,6 +29,7 @@
"account.show_reblogs": "顯示來自 @{name} 的嘟文",
"account.unblock": "取消封鎖 @{name}",
"account.unblock_domain": "不再隱藏 {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "取消關注",
"account.unmute": "不再靜音 @{name}",
"account.unmute_notifications": "不再對來自 @{name} 的通知靜音",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本地時間軸是空的。公開寫點什麼吧!",
"empty_column.direct": "你還沒有使用過私訊。當你發出或著收到私訊時,它會在這裡顯示。",
+ "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": "這個主題標籤下什麼都沒有。",
"empty_column.home": "你還沒關注任何人。造訪{public}或利用搜尋功能找到其他用者。",
"empty_column.home.public_timeline": "公開時間軸",
"empty_column.list": "此份清單尚未有東西。當此清單的成員貼出了新的狀態時,它們就會出現在這裡。",
+ "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": "還沒有任何通知。和別的使用者互動來開始對話。",
"empty_column.public": "這裡什麼都沒有! 寫一些公開的嘟文,或著關注其他站點的使用者後,這裡就會有嘟文出現了",
"follow_request.authorize": "授權",
@@ -137,6 +148,7 @@
"keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示這個說明",
"keyboard_shortcuts.mention": "到提到的作者",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "到回應",
"keyboard_shortcuts.search": "把滑鼠移動到搜尋",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的嘟文",
@@ -159,8 +171,10 @@
"missing_indicator.label": "找不到",
"missing_indicator.sublabel": "找不到此資源",
"mute_modal.hide_notifications": "隱藏來自這個使用者的通知?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "封鎖的使用者",
"navigation_bar.community_timeline": "本地時間軸",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "私訊",
"navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的站點",
@@ -254,6 +268,7 @@
"status.cancel_reblog_private": "取消轉嘟",
"status.cannot_reblog": "這篇嘟文無法被轉嘟",
"status.delete": "刪除",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "發送私訊給 @{name}",
"status.embed": "嵌入",
"status.favourite": "最愛",
@@ -270,6 +285,7 @@
"status.reblog": "轉嘟",
"status.reblog_private": "轉嘟給原有關注者",
"status.reblogged_by": "{name} 轉嘟了",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "刪除 & 編輯",
"status.reply": "回覆",
"status.replyAll": "回覆所有人",
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index 552f659c9..67d55f66f 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -131,7 +131,7 @@ const updateSuggestionTags = (state, token) => {
return state.merge({
suggestions: state.get('tagHistory')
- .filter(tag => tag.startsWith(prefix))
+ .filter(tag => tag.toLowerCase().startsWith(prefix.toLowerCase()))
.slice(0, 4)
.map(tag => '#' + tag),
suggestion_token: token,
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index 84d4fc698..0b29f19fa 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -26,6 +26,7 @@ const notificationToMap = notification => ImmutableMap({
id: notification.id,
type: notification.type,
account: notification.account.id,
+ created_at: notification.created_at,
status: notification.status ? notification.status.id : null,
});
diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js
index d1caabc1c..f46049297 100644
--- a/app/javascript/mastodon/reducers/relationships.js
+++ b/app/javascript/mastodon/reducers/relationships.js
@@ -5,6 +5,8 @@ import {
ACCOUNT_UNBLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
ACCOUNT_UNMUTE_SUCCESS,
+ ACCOUNT_PIN_SUCCESS,
+ ACCOUNT_UNPIN_SUCCESS,
RELATIONSHIPS_FETCH_SUCCESS,
} from '../actions/accounts';
import {
@@ -41,6 +43,8 @@ export default function relationships(state = initialState, action) {
case ACCOUNT_UNBLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS:
case ACCOUNT_UNMUTE_SUCCESS:
+ case ACCOUNT_PIN_SUCCESS:
+ case ACCOUNT_UNPIN_SUCCESS:
return normalizeRelationship(state, action.relationship);
case RELATIONSHIPS_FETCH_SUCCESS:
return normalizeRelationships(state, action.relationships);
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 3abe69bce..6e3d830da 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -49,11 +49,19 @@ export default function statuses(state = initialState, action) {
return state.setIn([action.id, 'muted'], false);
case STATUS_REVEAL:
return state.withMutations(map => {
- action.ids.forEach(id => map.setIn([id, 'hidden'], false));
+ action.ids.forEach(id => {
+ if (!(state.get(id) === undefined)) {
+ map.setIn([id, 'hidden'], false);
+ }
+ });
});
case STATUS_HIDE:
return state.withMutations(map => {
- action.ids.forEach(id => map.setIn([id, 'hidden'], true));
+ action.ids.forEach(id => {
+ if (!(state.get(id) === undefined)) {
+ map.setIn([id, 'hidden'], true);
+ }
+ });
});
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index 106198f74..70f08a8eb 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -1,5 +1,6 @@
import { createSelector } from 'reselect';
import { List as ImmutableList } from 'immutable';
+import { me } from '../initial_state';
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
const getAccountCounters = (state, id) => state.getIn(['accounts_counters', id], null);
@@ -83,7 +84,7 @@ export const makeGetStatus = () => {
statusReblog = null;
}
- const regex = regexFromFilters(filters);
+ const regex = (accountReblog || accountBase).get('id') !== me && regexFromFilters(filters);
const filtered = regex && regex.test(statusBase.get('reblog') ? statusReblog.get('search_index') : statusBase.get('search_index'));
return statusBase.withMutations(map => {
diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js
index 3318bbadc..d61d916b1 100644
--- a/app/javascript/mastodon/service_worker/web_push_notifications.js
+++ b/app/javascript/mastodon/service_worker/web_push_notifications.js
@@ -80,15 +80,7 @@ const handlePush = (event) => {
// Placeholder until more information can be loaded
event.waitUntil(
- notify({
- title,
- body,
- icon,
- tag: notification_id,
- timestamp: new Date(),
- badge: '/badge.png',
- data: { access_token, preferred_locale, url: '/web/notifications' },
- }).then(() => fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token)).then(notification => {
+ fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token).then(notification => {
const options = {};
options.title = formatMessage(`notification.${notification.type}`, preferred_locale, { name: notification.account.display_name.length > 0 ? notification.account.display_name : notification.account.username });
@@ -112,6 +104,16 @@ const handlePush = (event) => {
}
return notify(options);
+ }).catch(() => {
+ return notify({
+ title,
+ body,
+ icon,
+ tag: notification_id,
+ timestamp: new Date(),
+ badge: '/badge.png',
+ data: { access_token, preferred_locale, url: '/web/notifications' },
+ });
})
);
};
diff --git a/app/javascript/mastodon/utils/resize_image.js b/app/javascript/mastodon/utils/resize_image.js
index 279a858ca..d1608094f 100644
--- a/app/javascript/mastodon/utils/resize_image.js
+++ b/app/javascript/mastodon/utils/resize_image.js
@@ -1,6 +1,6 @@
import EXIF from 'exif-js';
-const MAX_IMAGE_DIMENSION = 1280;
+const MAX_IMAGE_PIXELS = 1638400; // 1280x1280px
const getImageUrl = inputFile => new Promise((resolve, reject) => {
if (window.URL && URL.createObjectURL) {
@@ -73,18 +73,8 @@ const processImage = (img, { width, height, orientation, type = 'image/png' }) =
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
const { width, height } = img;
- let newWidth, newHeight;
-
- if (width > height) {
- newHeight = height * MAX_IMAGE_DIMENSION / width;
- newWidth = MAX_IMAGE_DIMENSION;
- } else if (height > width) {
- newWidth = width * MAX_IMAGE_DIMENSION / height;
- newHeight = MAX_IMAGE_DIMENSION;
- } else {
- newWidth = MAX_IMAGE_DIMENSION;
- newHeight = MAX_IMAGE_DIMENSION;
- }
+ const newWidth = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (width / height)));
+ const newHeight = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (height / width)));
getOrientation(img, type)
.then(orientation => processImage(img, {
@@ -104,7 +94,7 @@ export default inputFile => new Promise((resolve, reject) => {
}
loadImage(inputFile).then(img => {
- if (img.width < MAX_IMAGE_DIMENSION && img.height < MAX_IMAGE_DIMENSION) {
+ if (img.width * img.height < MAX_IMAGE_PIXELS) {
resolve(inputFile);
return;
}
diff --git a/app/javascript/packs/about.js b/app/javascript/packs/about.js
index 63e12da42..843cb2c87 100644
--- a/app/javascript/packs/about.js
+++ b/app/javascript/packs/about.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
function loaded() {
const TimelineContainer = require('../mastodon/containers/timeline_container').default;
diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js
index 5dbcc03d3..ce5f70ee7 100644
--- a/app/javascript/packs/admin.js
+++ b/app/javascript/packs/admin.js
@@ -39,3 +39,10 @@ delegate(document, '.media-spoiler-hide-button', 'click', () => {
element.click();
});
});
+
+delegate(document, '#domain_block_severity', 'change', ({ target }) => {
+ const rejectMediaDiv = document.querySelector('.input.with_label.domain_block_reject_media');
+ if (rejectMediaDiv) {
+ rejectMediaDiv.style.display = (target.value === 'suspend') ? 'none' : 'block';
+ }
+});
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index 116632dea..c65ebed74 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
loadPolyfills().then(() => {
require('../mastodon/main').default();
diff --git a/app/javascript/packs/common.js b/app/javascript/packs/common.js
deleted file mode 100644
index 96e6f4b16..000000000
--- a/app/javascript/packs/common.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import { start } from 'rails-ujs';
-import 'font-awesome/css/font-awesome.css';
-
-require.context('../images/', true);
-
-start();
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index cc2fed3f1..c83e2889a 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -1,5 +1,8 @@
import loadPolyfills from '../mastodon/load_polyfills';
import ready from '../mastodon/ready';
+import { start } from '../mastodon/common';
+
+start();
window.addEventListener('message', e => {
const data = e.data || {};
@@ -19,15 +22,16 @@ window.addEventListener('message', e => {
function main() {
const { length } = require('stringz');
- const IntlRelativeFormat = require('intl-relativeformat').default;
+ const IntlMessageFormat = require('intl-messageformat').default;
+ const { timeAgoString } = require('../mastodon/components/relative_timestamp');
const { delegate } = require('rails-ujs');
const emojify = require('../mastodon/features/emoji/emoji').default;
const { getLocale } = require('../mastodon/locales');
- const { localeData } = getLocale();
+ const { messages } = getLocale();
const React = require('react');
const ReactDOM = require('react-dom');
-
- localeData.forEach(IntlRelativeFormat.__addLocaleData);
+ const Rellax = require('rellax');
+ const createHistory = require('history').createBrowserHistory;
ready(() => {
const locale = document.documentElement.lang;
@@ -40,8 +44,6 @@ function main() {
minute: 'numeric',
});
- const relativeFormat = new IntlRelativeFormat(locale);
-
[].forEach.call(document.querySelectorAll('.emojify'), (content) => {
content.innerHTML = emojify(content.innerHTML);
});
@@ -56,16 +58,13 @@ function main() {
[].forEach.call(document.querySelectorAll('time.time-ago'), (content) => {
const datetime = new Date(content.getAttribute('datetime'));
+ const now = new Date();
content.title = dateTimeFormat.format(datetime);
- content.textContent = relativeFormat.format(datetime);
- });
-
- [].forEach.call(document.querySelectorAll('.logo-button'), (content) => {
- content.addEventListener('click', (e) => {
- e.preventDefault();
- window.open(e.target.href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
- });
+ content.textContent = timeAgoString({
+ formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
+ formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
+ }, datetime, now, datetime.getFullYear());
});
const reactComponents = document.querySelectorAll('[data-component]');
@@ -79,6 +78,19 @@ function main() {
})
.catch(error => console.error(error));
}
+
+ const parallaxComponents = document.querySelectorAll('.parallax');
+ if (parallaxComponents.length > 0 ) {
+ new Rellax('.parallax', { speed: -1 });
+ }
+
+ const history = createHistory();
+ const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status');
+ const location = history.location;
+ if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) {
+ detailedStatuses[0].scrollIntoView();
+ history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true });
+ }
});
delegate(document, '.webapp-btn', 'click', ({ target, button }) => {
@@ -103,15 +115,34 @@ function main() {
return false;
});
- delegate(document, '.account_display_name', 'input', ({ target }) => {
+ delegate(document, '.modal-button', 'click', e => {
+ e.preventDefault();
+
+ let href;
+
+ if (e.target.nodeName !== 'A') {
+ href = e.target.parentNode.href;
+ } else {
+ href = e.target.href;
+ }
+
+ window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
+ });
+
+ delegate(document, '#account_display_name', 'input', ({ target }) => {
const nameCounter = document.querySelector('.name-counter');
+ const name = document.querySelector('.card .display-name strong');
if (nameCounter) {
nameCounter.textContent = 30 - length(target.value);
}
+
+ if (name) {
+ name.innerHTML = emojify(target.value);
+ }
});
- delegate(document, '.account_note', 'input', ({ target }) => {
+ delegate(document, '#account_note', 'input', ({ target }) => {
const noteCounter = document.querySelector('.note-counter');
if (noteCounter) {
@@ -120,7 +151,7 @@ function main() {
});
delegate(document, '#account_avatar', 'change', ({ target }) => {
- const avatar = document.querySelector('.card.compact .avatar img');
+ const avatar = document.querySelector('.card .avatar img');
const [file] = target.files || [];
const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;
@@ -128,11 +159,21 @@ function main() {
});
delegate(document, '#account_header', 'change', ({ target }) => {
- const header = document.querySelector('.card.compact');
+ const header = document.querySelector('.card .card__img img');
const [file] = target.files || [];
const url = file ? URL.createObjectURL(file) : header.dataset.originalSrc;
- header.style.backgroundImage = `url(${url})`;
+ header.src = url;
+ });
+
+ delegate(document, '#account_locked', 'change', ({ target }) => {
+ const lock = document.querySelector('.card .display-name i');
+
+ if (target.checked) {
+ lock.style.display = 'inline';
+ } else {
+ lock.style.display = 'none';
+ }
});
}
diff --git a/app/javascript/packs/share.js b/app/javascript/packs/share.js
index e9580f648..4ef23e1b2 100644
--- a/app/javascript/packs/share.js
+++ b/app/javascript/packs/share.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
function loaded() {
const ComposeContainer = require('../mastodon/containers/compose_container').default;
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index f207c02a6..0990a4f25 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -10,7 +10,7 @@
@import 'mastodon/lists';
@import 'mastodon/footer';
@import 'mastodon/compact_header';
-@import 'mastodon/landing_strip';
+@import 'mastodon/widgets';
@import 'mastodon/forms';
@import 'mastodon/accounts';
@import 'mastodon/stream_entries';
@@ -21,5 +21,6 @@
@import 'mastodon/about';
@import 'mastodon/tables';
@import 'mastodon/admin';
+@import 'mastodon/dashboard';
@import 'mastodon/rtl';
@import 'mastodon/accessibility';
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 84ccd326e..ac161a004 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -169,6 +169,10 @@
color: $white;
}
+.dropdown-menu__separator {
+ border-bottom-color: lighten($ui-base-color, 12%);
+}
+
// Change the background colors of modals
.actions-modal,
.boost-modal,
@@ -281,3 +285,87 @@
}
}
}
+
+.flash-message {
+ box-shadow: none;
+
+ &.notice {
+ background: rgba($success-green, 0.5);
+ color: lighten($success-green, 12%);
+ }
+
+ &.alert {
+ background: rgba($error-red, 0.5);
+ color: lighten($error-red, 12%);
+ }
+}
+
+.simple_form,
+.table-form {
+ .warning {
+ box-shadow: none;
+ background: rgba($error-red, 0.5);
+ text-shadow: none;
+ }
+}
+
+.status__content,
+.reply-indicator__content {
+ a {
+ color: $highlight-text-color;
+ }
+}
+
+.button.logo-button {
+ color: $white;
+
+ svg path:first-child {
+ fill: $white;
+ }
+}
+
+.public-layout {
+ .header,
+ .public-account-header,
+ .public-account-bio {
+ box-shadow: none;
+ }
+
+ .header {
+ background: lighten($ui-base-color, 12%);
+ }
+
+ .public-account-header {
+ &__image {
+ background: lighten($ui-base-color, 12%);
+
+ &::after {
+ box-shadow: none;
+ }
+ }
+
+ &__tabs {
+ &__name {
+ h1,
+ h1 small {
+ color: $white;
+ }
+ }
+ }
+ }
+}
+
+.account__section-headline a.active::after {
+ border-color: transparent transparent $white;
+}
+
+.hero-widget,
+.box-widget,
+.contact-widget,
+.landing-page__information.contact-widget,
+.moved-account-widget,
+.memoriam-widget,
+.activity-stream,
+.nothing-here {
+ box-shadow: none;
+}
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index e46728d06..a743e88ae 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -15,6 +15,276 @@ $small-breakpoint: 960px;
}
}
+.rich-formatting {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 30px;
+ color: $darker-text-color;
+ padding-right: 10px;
+
+ a {
+ color: $highlight-text-color;
+ text-decoration: underline;
+ }
+
+ p,
+ li {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 30px;
+ margin-bottom: 12px;
+ color: $darker-text-color;
+
+ a {
+ color: $highlight-text-color;
+ text-decoration: underline;
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ em {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ font-weight: 700;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: lighten($darker-text-color, 10%);
+ }
+
+ h1 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 26px;
+ line-height: 30px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+
+ small {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ display: block;
+ font-size: 18px;
+ font-weight: 400;
+ color: lighten($darker-text-color, 10%);
+ }
+ }
+
+ h2 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 22px;
+ line-height: 26px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h3 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 18px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h4 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h5 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h6 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 12px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ ul,
+ ol {
+ margin-left: 20px;
+
+ &[type='a'] {
+ list-style-type: lower-alpha;
+ }
+
+ &[type='i'] {
+ list-style-type: lower-roman;
+ }
+ }
+
+ ul {
+ list-style: disc;
+ }
+
+ ol {
+ list-style: decimal;
+ }
+
+ li > ol,
+ li > ul {
+ margin-top: 6px;
+ }
+
+ hr {
+ width: 100%;
+ height: 0;
+ border: 0;
+ border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
+ margin: 20px 0;
+
+ &.spacer {
+ height: 1px;
+ border: 0;
+ }
+ }
+}
+
+.information-board {
+ background: darken($ui-base-color, 4%);
+ padding: 20px 0;
+
+ .container-alt {
+ position: relative;
+ padding-right: 280px + 15px;
+ }
+
+ &__sections {
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ }
+
+ &__section {
+ flex: 1 0 0;
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ line-height: 28px;
+ color: $primary-text-color;
+ text-align: right;
+ padding: 10px 15px;
+
+ span,
+ strong {
+ display: block;
+ }
+
+ span {
+ &:last-child {
+ color: $secondary-text-color;
+ }
+ }
+
+ strong {
+ font-weight: 500;
+ font-size: 32px;
+ line-height: 48px;
+ }
+
+ @media screen and (max-width: $column-breakpoint) {
+ text-align: center;
+ }
+ }
+
+ .panel {
+ position: absolute;
+ width: 280px;
+ box-sizing: border-box;
+ background: darken($ui-base-color, 8%);
+ padding: 20px;
+ padding-top: 10px;
+ border-radius: 4px 4px 0 0;
+ right: 0;
+ bottom: -40px;
+
+ .panel-header {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ font-weight: 500;
+ color: $darker-text-color;
+ padding-bottom: 5px;
+ margin-bottom: 15px;
+ border-bottom: 1px solid lighten($ui-base-color, 4%);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+
+ a,
+ span {
+ font-weight: 400;
+ color: darken($darker-text-color, 10%);
+ }
+
+ a {
+ text-decoration: none;
+ }
+ }
+ }
+
+ .owner {
+ text-align: center;
+
+ .avatar {
+ width: 80px;
+ height: 80px;
+ margin: 0 auto;
+ margin-bottom: 15px;
+
+ img {
+ display: block;
+ width: 80px;
+ height: 80px;
+ border-radius: 48px;
+ }
+ }
+
+ .name {
+ font-size: 14px;
+
+ a {
+ display: block;
+ color: $primary-text-color;
+ text-decoration: none;
+
+ &:hover {
+ .display_name {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ .username {
+ display: block;
+ color: $darker-text-color;
+ }
+ }
+ }
+}
+
.landing-page {
.grid {
display: grid;
@@ -486,128 +756,6 @@ $small-breakpoint: 960px;
}
}
- .information-board {
- background: darken($ui-base-color, 4%);
- padding: 20px 0;
-
- .container-alt {
- position: relative;
- padding-right: 280px + 15px;
- }
-
- &__sections {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- }
-
- &__section {
- flex: 1 0 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
- font-size: 16px;
- line-height: 28px;
- color: $primary-text-color;
- text-align: right;
- padding: 10px 15px;
-
- span,
- strong {
- display: block;
- }
-
- span {
- &:last-child {
- color: $secondary-text-color;
- }
- }
-
- strong {
- font-weight: 500;
- font-size: 32px;
- line-height: 48px;
- }
-
- @media screen and (max-width: $column-breakpoint) {
- text-align: center;
- }
- }
-
- .panel {
- position: absolute;
- width: 280px;
- box-sizing: border-box;
- background: darken($ui-base-color, 8%);
- padding: 20px;
- padding-top: 10px;
- border-radius: 4px 4px 0 0;
- right: 0;
- bottom: -40px;
-
- .panel-header {
- font-family: 'mastodon-font-display', sans-serif;
- font-size: 14px;
- line-height: 24px;
- font-weight: 500;
- color: $darker-text-color;
- padding-bottom: 5px;
- margin-bottom: 15px;
- border-bottom: 1px solid lighten($ui-base-color, 4%);
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-
- a,
- span {
- font-weight: 400;
- color: darken($darker-text-color, 10%);
- }
-
- a {
- text-decoration: none;
- }
- }
- }
-
- .owner {
- text-align: center;
-
- .avatar {
- width: 80px;
- height: 80px;
- margin: 0 auto;
- margin-bottom: 15px;
-
- img {
- display: block;
- width: 80px;
- height: 80px;
- border-radius: 48px;
- }
- }
-
- .name {
- font-size: 14px;
-
- a {
- display: block;
- color: $primary-text-color;
- text-decoration: none;
-
- &:hover {
- .display_name {
- text-decoration: underline;
- }
- }
- }
-
- .username {
- display: block;
- color: $darker-text-color;
- }
- }
- }
- }
-
&.alternative {
padding: 10px 0;
@@ -642,8 +790,10 @@ $small-breakpoint: 960px;
border-radius: 4px;
padding: 25px 40px;
overflow: hidden;
+ box-sizing: border-box;
.row {
+ width: 100%;
display: flex;
flex-direction: row-reverse;
flex-wrap: wrap;
@@ -660,11 +810,20 @@ $small-breakpoint: 960px;
flex: 1 0 auto;
padding: 0 10px;
}
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ width: 100%;
+ justify-content: space-between;
+ }
}
.row__mascot {
flex: 1;
margin: 10px -50px 0 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
}
}
@@ -923,7 +1082,7 @@ $small-breakpoint: 960px;
}
@media screen and (max-width: $column-breakpoint) {
- height: 90vh;
+ display: none;
}
}
@@ -983,21 +1142,6 @@ $small-breakpoint: 960px;
}
}
- .extended-description {
- padding: 50px 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
- font-size: 16px;
- font-weight: 400;
- font-size: 16px;
- line-height: 30px;
- color: $darker-text-color;
-
- a {
- color: $highlight-text-color;
- text-decoration: underline;
- }
- }
-
.footer-links {
padding-bottom: 50px;
text-align: right;
@@ -1115,6 +1259,21 @@ $small-breakpoint: 960px;
}
&.tag-page {
+ @media screen and (max-width: $column-breakpoint) {
+ padding: 0;
+
+ .container {
+ padding: 0;
+ }
+
+ #mastodon-timeline {
+ display: block;
+ width: 100vw;
+ height: 100vh;
+ border-radius: 0;
+ }
+ }
+
.grid {
@media screen and (min-width: $small-breakpoint) {
grid-template-columns: 33% 67%;
@@ -1146,23 +1305,16 @@ $small-breakpoint: 960px;
@media screen and (max-width: $column-breakpoint) {
.grid {
- .column-1 {
- grid-column: 1;
- grid-row: 2;
- }
+ grid-gap: 0;
- .column-2 {
+ .column-1 {
grid-column: 1;
grid-row: 1;
}
- }
- .brand {
- margin: 0;
- }
-
- .landing-page__features {
- display: none;
+ .column-2 {
+ display: none;
+ }
}
}
}
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index b4612b063..c27bc0df3 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -1,243 +1,100 @@
.card {
- background-color: $base-shadow-color;
- background-size: cover;
- background-position: center;
- border-radius: 4px 4px 0 0;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- overflow: hidden;
- position: relative;
- display: flex;
-
- &::after {
- background: rgba(darken($ui-base-color, 8%), 0.5);
+ & > a {
display: block;
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- z-index: 1;
- }
+ text-decoration: none;
+ color: inherit;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- @media screen and (max-width: 740px) {
- border-radius: 0;
- box-shadow: none;
- }
+ @media screen and (max-width: $no-gap-breakpoint) {
+ box-shadow: none;
+ }
- .card__illustration {
- padding: 60px 0;
- position: relative;
- flex: 1 1 auto;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .card__bio {
- max-width: 260px;
- flex: 1 1 auto;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- background: rgba(darken($ui-base-color, 8%), 0.8);
- position: relative;
- z-index: 2;
- }
-
- &.compact {
- padding: 30px 0;
- border-radius: 4px;
-
- .avatar {
- margin-bottom: 0;
-
- img {
- object-fit: cover;
+ &:hover,
+ &:active,
+ &:focus {
+ .card__bar {
+ background: lighten($ui-base-color, 8%);
}
}
}
- .name {
- display: block;
- font-size: 20px;
- line-height: 18px * 1.5;
- color: $primary-text-color;
- padding: 10px 15px;
- padding-bottom: 0;
- font-weight: 500;
+ &__img {
+ height: 130px;
position: relative;
- z-index: 2;
- margin-bottom: 30px;
- overflow: hidden;
- text-overflow: ellipsis;
-
- small {
- display: block;
- font-size: 14px;
- color: $highlight-text-color;
- font-weight: 400;
- overflow: hidden;
- text-overflow: ellipsis;
-
- .fa {
- margin-left: 3px;
- }
- }
- }
-
- .avatar {
- width: 120px;
- margin: 0 auto;
- position: relative;
- z-index: 2;
+ background: darken($ui-base-color, 12%);
+ border-radius: 4px 4px 0 0;
img {
- width: 120px;
- height: 120px;
display: block;
- border-radius: 120px;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- }
- }
-
- .roles {
- margin-bottom: 30px;
- padding: 0 15px;
- }
-
- .details-counters {
- margin-top: 30px;
- display: flex;
- flex-direction: row;
- width: 100%;
- }
-
- .counter {
- width: 33.3%;
- box-sizing: border-box;
- flex: 0 0 auto;
- color: $darker-text-color;
- padding: 5px 10px 0;
- margin-bottom: 10px;
- border-right: 1px solid lighten($ui-base-color, 4%);
- cursor: default;
- text-align: center;
- position: relative;
-
- a {
- display: block;
- }
-
- &:last-child {
- border-right: 0;
- }
-
- &::after {
- display: block;
- content: "";
- position: absolute;
- bottom: -10px;
- left: 0;
width: 100%;
- border-bottom: 4px solid $ui-primary-color;
- opacity: 0.5;
- transition: all 400ms ease;
+ height: 100%;
+ margin: 0;
+ object-fit: cover;
+ border-radius: 4px 4px 0 0;
}
- &.active {
- &::after {
- border-bottom: 4px solid $highlight-text-color;
- opacity: 1;
+ @media screen and (max-width: 600px) {
+ height: 200px;
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
+ }
+
+ &__bar {
+ position: relative;
+ padding: 15px;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 0 0 4px 4px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+
+ .avatar {
+ flex: 0 0 auto;
+ width: 48px;
+ height: 48px;
+ padding-top: 2px;
+
+ img {
+ width: 100%;
+ height: 100%;
+ display: block;
+ margin: 0;
+ border-radius: 4px;
+ background: darken($ui-base-color, 8%);
}
}
- &:hover {
- &::after {
- opacity: 1;
- transition-duration: 100ms;
+ .display-name {
+ margin-left: 15px;
+ text-align: left;
+
+ strong {
+ font-size: 15px;
+ color: $primary-text-color;
+ font-weight: 500;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
- }
- a {
- text-decoration: none;
- color: inherit;
- }
-
- .counter-label {
- font-size: 12px;
- display: block;
- margin-bottom: 5px;
- }
-
- .counter-number {
- font-weight: 500;
- font-size: 18px;
- color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
- }
- }
-
- .bio {
- font-size: 14px;
- line-height: 18px;
- padding: 0 15px;
- color: $secondary-text-color;
- }
-
- @media screen and (max-width: 480px) {
- display: block;
-
- .card__bio {
- max-width: none;
- }
-
- .name,
- .roles {
- text-align: center;
- margin-bottom: 15px;
- }
-
- .bio {
- margin-bottom: 15px;
- }
- }
-}
-
-.card,
-.account-grid-card {
- .controls {
- position: absolute;
- top: 15px;
- left: 15px;
- z-index: 2;
-
- .icon-button {
- color: rgba($white, 0.8);
- text-decoration: none;
- font-size: 13px;
- line-height: 13px;
- font-weight: 500;
-
- .fa {
+ span {
+ display: block;
+ font-size: 14px;
+ color: $darker-text-color;
font-weight: 400;
- margin-right: 5px;
- }
-
- &:hover,
- &:active,
- &:focus {
- color: $white;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
}
}
}
-.account-grid-card .controls {
- left: auto;
- right: 15px;
-}
-
.pagination {
padding: 30px 0;
text-align: center;
@@ -314,289 +171,23 @@
}
}
-.accounts-grid {
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- background: darken($simple-background-color, 8%);
- border-radius: 0 0 4px 4px;
- padding: 20px 5px;
- padding-bottom: 10px;
- overflow: hidden;
- display: flex;
- flex-wrap: wrap;
- z-index: 2;
- position: relative;
-
- &.empty img {
- position: absolute;
- opacity: 0.2;
- height: 200px;
- left: 0;
- bottom: 0;
- pointer-events: none;
- }
-
- @media screen and (max-width: 740px) {
- border-radius: 0;
- box-shadow: none;
- }
-
- .account-grid-card {
- box-sizing: border-box;
- width: 335px;
- background: $simple-background-color;
- border-radius: 4px;
- color: $inverted-text-color;
- margin: 0 5px 10px;
- position: relative;
-
- @media screen and (max-width: 740px) {
- width: calc(100% - 10px);
- }
-
- .account-grid-card__header {
- overflow: hidden;
- height: 100px;
- border-radius: 4px 4px 0 0;
- background-color: lighten($inverted-text-color, 4%);
- background-size: cover;
- background-position: center;
- position: relative;
-
- &::after {
- background: rgba(darken($ui-base-color, 8%), 0.5);
- display: block;
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- z-index: 1;
- }
- }
-
- .account-grid-card__avatar {
- box-sizing: border-box;
- padding: 15px;
- position: absolute;
- z-index: 2;
- top: 100px - (40px + 2px);
- left: -2px;
- }
-
- .avatar {
- width: 80px;
- height: 80px;
-
- img {
- display: block;
- width: 80px;
- height: 80px;
- border-radius: 80px;
- border: 2px solid $simple-background-color;
- background: $simple-background-color;
- }
- }
-
- .name {
- padding: 15px;
- padding-top: 10px;
- padding-left: 15px + 80px + 15px;
-
- a {
- display: block;
- color: $inverted-text-color;
- text-decoration: none;
- text-overflow: ellipsis;
- overflow: hidden;
- font-weight: 500;
-
- &:hover {
- .display_name {
- text-decoration: underline;
- }
- }
- }
- }
-
- .display_name {
- font-size: 16px;
- display: block;
- text-overflow: ellipsis;
- overflow: hidden;
- }
-
- .username {
- color: $lighter-text-color;
- font-size: 14px;
- font-weight: 400;
- }
-
- .account__header__content {
- padding: 10px 15px;
- padding-top: 15px;
- color: $lighter-text-color;
- word-wrap: break-word;
- overflow: hidden;
- text-overflow: ellipsis;
- height: 5.5em;
- position: relative;
-
- &::after {
- display: block;
- content: "";
- width: 100%;
- height: 100px;
- position: absolute;
- bottom: 0;
- background: linear-gradient(to bottom, rgba($simple-background-color, 0.01) 0%, rgba($simple-background-color, 1) 100%);
- left: 0;
- border-radius: 0 0 4px 4px;
- pointer-events: none;
- }
- }
- }
-}
-
.nothing-here {
- width: 100%;
- display: block;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
color: $light-text-color;
font-size: 14px;
font-weight: 500;
text-align: center;
- padding: 130px 0;
- padding-top: 125px;
- margin: 0 auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
cursor: default;
-}
-
-.account-card {
border-radius: 4px;
- text-align: left;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- background: $simple-background-color;
+ padding: 20px;
+ min-height: 30vh;
- &__header {
- background: $base-shadow-color;
- background-size: cover;
- background-position: center center;
- height: 90px;
- border-radius: 4px 4px 0 0;
- }
-
- & > .detailed-status__display-name {
- display: block;
- overflow: hidden;
- display: flex;
- align-items: center;
- padding: 10px;
-
- &:last-child {
- margin-bottom: 0;
- }
-
- & > div:first-child {
- flex: 0 0 auto;
- margin-right: 10px;
- width: 48px;
- height: 48px;
- }
-
- .avatar {
- display: block;
- border-radius: 4px;
- margin: 0;
- }
-
- .display-name {
- flex: 1 0 auto;
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- cursor: default;
-
- & > .detailed-status__display-name {
- margin-bottom: 0;
- }
-
- strong {
- font-weight: 500;
- color: $ui-base-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
-
- &:hover {
- .display-name {
- strong {
- text-decoration: none;
- }
- }
- }
- }
-
- .counter {
- box-sizing: border-box;
- flex: 0 0 auto;
- color: $light-text-color;
- padding: 0 10px;
- cursor: default;
- text-align: center;
- position: relative;
- line-height: 24px;
-
- .counter-label {
- font-size: 12px;
- display: block;
- text-transform: uppercase;
- }
-
- .counter-number {
- font-weight: 500;
- font-size: 16px;
- color: $inverted-text-color;
- font-family: 'mastodon-font-display', sans-serif;
- }
- }
-}
-
-.activity-stream-tabs {
- background: $simple-background-color;
- border-bottom: 1px solid $ui-secondary-color;
- position: relative;
- z-index: 2;
-
- a {
- display: inline-block;
- padding: 15px;
- text-decoration: none;
- color: $highlight-text-color;
- text-transform: uppercase;
- font-weight: 500;
-
- &:hover,
- &:active,
- &:focus {
- color: lighten($highlight-text-color, 8%);
- }
-
- &.active {
- color: $inverted-text-color;
- cursor: default;
- }
+ &--under-tabs {
+ border-radius: 0 0 4px 4px;
}
}
@@ -629,14 +220,14 @@
padding: 0;
margin: 15px -15px -15px;
border: 0 none;
- border-top: 1px solid lighten($ui-base-color, 4%);
- border-bottom: 1px solid lighten($ui-base-color, 4%);
+ border-top: 1px solid lighten($ui-base-color, 12%);
+ border-bottom: 1px solid lighten($ui-base-color, 12%);
font-size: 14px;
line-height: 20px;
dl {
display: flex;
- border-bottom: 1px solid lighten($ui-base-color, 4%);
+ border-bottom: 1px solid lighten($ui-base-color, 12%);
}
dt,
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 560b11ddf..42f507296 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -165,6 +165,11 @@
color: $valid-value-color;
font-weight: 500;
}
+
+ .negative-hint {
+ color: $error-value-color;
+ font-weight: 500;
+ }
}
.simple_form {
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index c52e069be..7a6a1c490 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -1,13 +1,10 @@
body {
font-family: 'mastodon-font-sans-serif', sans-serif;
- background: $ui-base-color;
- background-size: cover;
- background-attachment: fixed;
+ background: darken($ui-base-color, 8%);
font-size: 13px;
line-height: 18px;
font-weight: 400;
color: $primary-text-color;
- padding-bottom: 20px;
text-rendering: optimizelegibility;
font-feature-settings: "kern";
text-size-adjust: none;
@@ -35,16 +32,24 @@ body {
height: 100%;
padding: 0;
background: $ui-base-color;
+
+ &.with-modals--active {
+ overflow-y: hidden;
+ }
}
- &.about-body {
- background: darken($ui-base-color, 8%);
- padding-bottom: 0;
+ &.lighter {
+ background: $ui-base-color;
}
- &.tag-body {
- background: darken($ui-base-color, 8%);
- padding-bottom: 0;
+ &.with-modals {
+ overflow-x: hidden;
+ overflow-y: scroll;
+
+ &--active {
+ overflow-y: hidden;
+ margin-right: 13px;
+ }
}
&.player {
@@ -52,7 +57,7 @@ body {
}
&.embed {
- background: transparent;
+ background: lighten($ui-base-color, 4%);
margin: 0;
padding-bottom: 0;
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 5fa73d58a..b25a9df31 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -35,6 +35,17 @@
transition: all 200ms ease-out;
}
+ &--destructive {
+ transition: none;
+
+ &:active,
+ &:focus,
+ &:hover {
+ background-color: $error-red;
+ transition: none;
+ }
+ }
+
&:disabled {
background-color: $ui-primary-color;
cursor: default;
@@ -219,7 +230,6 @@
.dropdown-menu {
position: absolute;
- transform-origin: 50% 0;
}
.invisible {
@@ -628,6 +638,7 @@
overflow: hidden;
white-space: pre-wrap;
padding-top: 2px;
+ color: $primary-text-color;
&:focus {
outline: 0;
@@ -921,15 +932,31 @@
align-items: center;
display: flex;
margin-top: 8px;
+
+ &__counter {
+ display: inline-flex;
+ margin-right: 11px;
+ align-items: center;
+
+ .status__action-bar-button {
+ margin-right: 4px;
+ }
+
+ &__label {
+ display: inline-block;
+ width: 14px;
+ font-size: 12px;
+ font-weight: 500;
+ color: $action-button-color;
+ }
+ }
}
.status__action-bar-button {
- float: left;
margin-right: 18px;
}
.status__action-bar-dropdown {
- float: left;
height: 23.15px;
width: 23.15px;
}
@@ -946,6 +973,18 @@
background: lighten($ui-base-color, 4%);
padding: 14px 10px;
+ &--flex {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ align-items: flex-start;
+
+ .status__content,
+ .detailed-status__meta {
+ flex: 100%;
+ }
+ }
+
.status__content {
font-size: 19px;
line-height: 24px;
@@ -1224,7 +1263,6 @@ a .account__avatar {
}
.account__action-bar-dropdown {
- flex: 0 1 calc(50% - 140px);
padding: 10px;
.icon-button {
@@ -1256,9 +1294,9 @@ a .account__avatar {
.account__action-bar__tab {
text-decoration: none;
overflow: hidden;
- flex: 0 1 80px;
+ flex: 0 1 100%;
border-right: 1px solid lighten($ui-base-color, 8%);
- padding: 10px 5px;
+ padding: 10px 0;
& > span {
display: block;
@@ -1478,6 +1516,7 @@ a.account__display-name {
display: flex;
align-items: center;
justify-content: center;
+ flex-direction: column;
.image-loader__preview-canvas {
max-width: $media-modal-media-max-width;
@@ -1486,8 +1525,8 @@ a.account__display-name {
object-fit: contain;
}
- &.image-loader--loading .image-loader__preview-canvas {
- filter: blur(2px);
+ .loading-bar {
+ position: relative;
}
&.image-loader--amorphous .image-loader__preview-canvas {
@@ -1594,6 +1633,22 @@ a.account__display-name {
ul {
list-style: none;
}
+
+ &.left {
+ transform-origin: 100% 50%;
+ }
+
+ &.top {
+ transform-origin: 50% 100%;
+ }
+
+ &.bottom {
+ transform-origin: 50% 0;
+ }
+
+ &.right {
+ transform-origin: 0 50%;
+ }
}
.dropdown-menu__arrow {
@@ -2010,6 +2065,7 @@ a.account__display-name {
cursor: pointer;
flex: 0 0 auto;
font-size: 16px;
+ line-height: inherit;
border: 0;
text-align: unset;
padding: 15px;
@@ -3259,7 +3315,14 @@ a.status-card {
border-radius: 4px;
margin-left: 40px;
overflow: hidden;
- transform-origin: 50% 0;
+
+ &.top {
+ transform-origin: 50% 100%;
+ }
+
+ &.bottom {
+ transform-origin: 50% 0;
+ }
}
.privacy-dropdown__option {
@@ -3331,6 +3394,10 @@ a.status-card {
}
}
+ &.top .privacy-dropdown__value {
+ border-radius: 0 0 4px 4px;
+ }
+
.privacy-dropdown__dropdown {
display: block;
box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
@@ -4135,6 +4202,10 @@ a.status-card {
color: $highlight-text-color;
}
+ .status__content p {
+ color: $inverted-text-color;
+ }
+
@media screen and (max-width: 480px) {
max-height: 10vh;
}
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index ac648c868..8ecedd2cb 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -60,10 +60,6 @@
}
}
-.media-standalone__body {
- overflow: hidden;
-}
-
.account-header {
width: 400px;
margin: 0 auto;
@@ -118,3 +114,666 @@
margin-left: 8px;
}
}
+
+.grid-3 {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: 3fr 1fr;
+ grid-auto-columns: 25%;
+ grid-auto-rows: max-content;
+
+ .column-0 {
+ grid-column: 1/3;
+ grid-row: 1;
+ }
+
+ .column-1 {
+ grid-column: 1;
+ grid-row: 2;
+ }
+
+ .column-2 {
+ grid-column: 2;
+ grid-row: 2;
+ }
+
+ .column-3 {
+ grid-column: 1/3;
+ grid-row: 3;
+ }
+
+ .landing-page__call-to-action {
+ min-height: 100%;
+ }
+
+ @media screen and (max-width: 738px) {
+ grid-template-columns: minmax(0, 50%) minmax(0, 50%);
+
+ .landing-page__call-to-action {
+ padding: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .row__information-board {
+ width: 100%;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .row__mascot {
+ display: none;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ grid-gap: 0;
+ grid-template-columns: minmax(0, 100%);
+
+ .column-0 {
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-column: 1;
+ grid-row: 3;
+ }
+
+ .column-2 {
+ grid-column: 1;
+ grid-row: 2;
+ }
+
+ .column-3 {
+ grid-column: 1;
+ grid-row: 4;
+ }
+ }
+}
+
+.public-layout {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding-top: 48px;
+ }
+
+ .container {
+ max-width: 960px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding: 0;
+ }
+ }
+
+ .header {
+ background: lighten($ui-base-color, 8%);
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ height: 48px;
+ margin: 10px 0;
+ display: flex;
+ align-items: stretch;
+ justify-content: center;
+ flex-wrap: nowrap;
+ overflow: hidden;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+ z-index: 110;
+ }
+
+ & > div {
+ flex: 1 1 33.3%;
+ min-height: 1px;
+ }
+
+ .nav-left {
+ display: flex;
+ align-items: stretch;
+ justify-content: flex-start;
+ flex-wrap: nowrap;
+ }
+
+ .nav-center {
+ display: flex;
+ align-items: stretch;
+ justify-content: center;
+ flex-wrap: nowrap;
+ }
+
+ .nav-right {
+ display: flex;
+ align-items: stretch;
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ }
+
+ .brand {
+ display: block;
+ padding: 15px;
+
+ img {
+ display: block;
+ height: 18px;
+ width: auto;
+ position: relative;
+ bottom: -2px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ height: 20px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 12%);
+ }
+ }
+
+ .nav-link {
+ display: flex;
+ align-items: center;
+ padding: 0 1rem;
+ font-size: 12px;
+ font-weight: 500;
+ text-decoration: none;
+ color: $darker-text-color;
+ white-space: nowrap;
+ text-align: center;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ color: $primary-text-color;
+ }
+ }
+
+ .nav-button {
+ background: lighten($ui-base-color, 16%);
+ margin: 8px;
+ margin-left: 0;
+ border-radius: 4px;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: none;
+ background: lighten($ui-base-color, 20%);
+ }
+ }
+ }
+
+ $no-columns-breakpoint: 600px;
+
+ .grid {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr);
+ grid-auto-columns: 25%;
+ grid-auto-rows: max-content;
+
+ .column-0 {
+ grid-row: 1;
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-row: 1;
+ grid-column: 2;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ grid-template-columns: 100%;
+ grid-gap: 0;
+
+ .column-1 {
+ display: none;
+ }
+ }
+ }
+
+ .public-account-header {
+ overflow: hidden;
+ margin-bottom: 10px;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+
+ &__image {
+ border-radius: 4px 4px 0 0;
+ overflow: hidden;
+ height: 300px;
+ position: relative;
+ background: darken($ui-base-color, 12%);
+
+ &::after {
+ content: "";
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15);
+ top: 0;
+ left: 0;
+ }
+
+ img {
+ object-fit: cover;
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 4px 4px 0 0;
+ }
+
+ @media screen and (max-width: 600px) {
+ height: 200px;
+ }
+ }
+
+ &--no-bar {
+ margin-bottom: 0;
+
+ .public-account-header__image,
+ .public-account-header__image img {
+ border-radius: 4px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ box-shadow: none;
+
+ &__image::after {
+ display: none;
+ }
+
+ &__image,
+ &__image img {
+ border-radius: 0;
+ }
+ }
+
+ &__bar {
+ position: relative;
+ margin-top: -80px;
+ display: flex;
+ justify-content: flex-start;
+
+ &::before {
+ content: "";
+ display: block;
+ background: lighten($ui-base-color, 4%);
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 60px;
+ border-radius: 0 0 4px 4px;
+ z-index: -1;
+ }
+
+ .avatar {
+ display: block;
+ width: 120px;
+ height: 120px;
+ padding-left: 20px - 4px;
+ flex: 0 0 auto;
+
+ img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 50%;
+ border: 4px solid lighten($ui-base-color, 4%);
+ background: darken($ui-base-color, 8%);
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ margin-top: 0;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 0 0 4px 4px;
+ padding: 5px;
+
+ &::before {
+ display: none;
+ }
+
+ .avatar {
+ width: 48px;
+ height: 48px;
+ padding: 7px 0;
+ padding-left: 10px;
+
+ img {
+ border: 0;
+ border-radius: 4px;
+ }
+
+ @media screen and (max-width: 360px) {
+ display: none;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ flex-wrap: wrap;
+ }
+ }
+
+ &__tabs {
+ flex: 1 1 auto;
+ margin-left: 20px;
+
+ &__name {
+ padding-top: 20px;
+ padding-bottom: 8px;
+
+ h1 {
+ font-size: 20px;
+ line-height: 18px * 1.5;
+ color: $primary-text-color;
+ font-weight: 500;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ text-shadow: 1px 1px 1px $base-shadow-color;
+
+ small {
+ display: block;
+ font-size: 14px;
+ color: $primary-text-color;
+ font-weight: 400;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ margin-left: 15px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ &__name {
+ padding-top: 0;
+ padding-bottom: 0;
+
+ h1 {
+ font-size: 16px;
+ line-height: 24px;
+ text-shadow: none;
+
+ small {
+ color: $darker-text-color;
+ }
+ }
+ }
+ }
+
+ &__tabs {
+ display: flex;
+ justify-content: flex-start;
+ align-items: stretch;
+ height: 58px;
+
+ .details-counters {
+ display: flex;
+ flex-direction: row;
+ min-width: 300px;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ .details-counters {
+ display: none;
+ }
+ }
+
+ .counter {
+ width: 33.3%;
+ box-sizing: border-box;
+ flex: 0 0 auto;
+ color: $darker-text-color;
+ padding: 10px;
+ border-right: 1px solid lighten($ui-base-color, 4%);
+ cursor: default;
+ text-align: center;
+ position: relative;
+
+ a {
+ display: block;
+ }
+
+ &:last-child {
+ border-right: 0;
+ }
+
+ &::after {
+ display: block;
+ content: "";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ border-bottom: 4px solid $ui-primary-color;
+ opacity: 0.5;
+ transition: all 400ms ease;
+ }
+
+ &.active {
+ &::after {
+ border-bottom: 4px solid $highlight-text-color;
+ opacity: 1;
+ }
+ }
+
+ &:hover {
+ &::after {
+ opacity: 1;
+ transition-duration: 100ms;
+ }
+ }
+
+ a {
+ text-decoration: none;
+ color: inherit;
+ }
+
+ .counter-label {
+ font-size: 12px;
+ display: block;
+ }
+
+ .counter-number {
+ font-weight: 500;
+ font-size: 18px;
+ margin-bottom: 5px;
+ color: $primary-text-color;
+ font-family: 'mastodon-font-display', sans-serif;
+ }
+ }
+
+ .spacer {
+ flex: 1 1 auto;
+ height: 1px;
+ }
+
+ &__buttons {
+ padding: 7px 8px;
+ }
+ }
+ }
+
+ &__extra {
+ display: none;
+ margin-top: 4px;
+
+ .public-account-bio {
+ border-radius: 0;
+ box-shadow: none;
+ background: transparent;
+ margin: 0 -5px;
+
+ .account__header__fields {
+ border-top: 1px solid lighten($ui-base-color, 12%);
+ }
+
+ .roles {
+ display: none;
+ }
+ }
+
+ &__links {
+ margin-top: -15px;
+ font-size: 14px;
+ color: $darker-text-color;
+
+ a {
+ display: inline-block;
+ color: $darker-text-color;
+ text-decoration: none;
+ padding: 15px;
+
+ strong {
+ font-weight: 700;
+ color: $primary-text-color;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ display: block;
+ flex: 100%;
+ }
+ }
+ }
+
+ .account__section-headline {
+ border-radius: 4px 4px 0 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+ }
+
+ .detailed-status__meta {
+ margin-top: 25px;
+ }
+
+ .public-account-bio {
+ background: lighten($ui-base-color, 8%);
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ overflow: hidden;
+ margin-bottom: 10px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ box-shadow: none;
+ margin-bottom: 0;
+ border-radius: 0;
+ }
+
+ .account__header__fields {
+ margin: 0;
+ border-top: 0;
+
+ a {
+ color: lighten($ui-highlight-color, 8%);
+ }
+ }
+
+ .account__header__content {
+ padding: 20px;
+ padding-bottom: 0;
+ color: $primary-text-color;
+ }
+
+ &__extra,
+ .roles {
+ padding: 20px;
+ font-size: 14px;
+ color: $darker-text-color;
+ }
+
+ .roles {
+ padding-bottom: 0;
+ }
+ }
+
+ .static-icon-button {
+ color: $action-button-color;
+ font-size: 18px;
+
+ & > span {
+ font-size: 14px;
+ font-weight: 500;
+ }
+ }
+
+ .card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ min-width: 100%;
+ margin: 0 -5px;
+
+ & > div {
+ box-sizing: border-box;
+ flex: 1 0 auto;
+ width: 300px;
+ padding: 0 5px;
+ margin-bottom: 10px;
+ max-width: 33.333%;
+
+ @media screen and (max-width: 900px) {
+ max-width: 50%;
+ }
+
+ @media screen and (max-width: 600px) {
+ max-width: 100%;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin: 0;
+ border-top: 1px solid lighten($ui-base-color, 8%);
+
+ & > div {
+ width: 100%;
+ padding: 0;
+ margin-bottom: 0;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+ &:last-child {
+ border-bottom: 0;
+ }
+
+ .card__bar {
+ background: $ui-base-color;
+
+ &:hover,
+ &:active,
+ &:focus {
+ background: lighten($ui-base-color, 4%);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss
new file mode 100644
index 000000000..949ca733f
--- /dev/null
+++ b/app/javascript/styles/mastodon/dashboard.scss
@@ -0,0 +1,69 @@
+.dashboard__counters {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 -5px;
+ margin-bottom: 20px;
+
+ & > div {
+ box-sizing: border-box;
+ flex: 0 0 33.333%;
+ padding: 0 5px;
+ margin-bottom: 10px;
+
+ & > div,
+ & > a {
+ padding: 20px;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 4px;
+ }
+
+ & > a {
+ text-decoration: none;
+ color: inherit;
+ display: block;
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 8%);
+ }
+ }
+ }
+
+ &__num {
+ text-align: center;
+ font-weight: 500;
+ font-size: 24px;
+ color: $primary-text-color;
+ font-family: 'mastodon-font-display', sans-serif;
+ margin-bottom: 20px;
+ }
+
+ &__label {
+ font-size: 14px;
+ color: $darker-text-color;
+ text-align: center;
+ font-weight: 500;
+ }
+}
+
+.dashboard__widgets {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 -5px;
+
+ & > div {
+ flex: 0 0 33.333%;
+ margin-bottom: 20px;
+
+ & > div {
+ padding: 0 5px;
+ }
+ }
+
+ a:not(.name-tag) {
+ color: $ui-secondary-color;
+ font-weight: 500;
+ text-decoration: none;
+ }
+}
diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss
index 81eb1ce2d..4d75477e0 100644
--- a/app/javascript/styles/mastodon/footer.scss
+++ b/app/javascript/styles/mastodon/footer.scss
@@ -1,39 +1,140 @@
-.footer {
- text-align: center;
- margin-top: 30px;
- padding-bottom: 60px;
- font-size: 12px;
- color: $darker-text-color;
+.public-layout {
+ .footer {
+ text-align: left;
+ padding-top: 20px;
+ padding-bottom: 60px;
+ font-size: 12px;
+ color: lighten($ui-base-color, 34%);
- .footer__domain {
- font-weight: 500;
-
- a {
- color: inherit;
- text-decoration: none;
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding-left: 20px;
+ padding-right: 20px;
}
- }
- .powered-by,
- .single-user-login {
- font-weight: 400;
+ .grid {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: 1fr 1fr 2fr 1fr 1fr;
- a {
- color: inherit;
- text-decoration: underline;
- font-weight: 500;
+ .column-0 {
+ grid-column: 1;
+ grid-row: 1;
+ min-width: 0;
+ }
- &:hover {
+ .column-1 {
+ grid-column: 2;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ .column-2 {
+ grid-column: 3;
+ grid-row: 1;
+ min-width: 0;
+ text-align: center;
+
+ h4 a {
+ color: lighten($ui-base-color, 34%);
+ }
+ }
+
+ .column-3 {
+ grid-column: 4;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ .column-4 {
+ grid-column: 5;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ @media screen and (max-width: 690px) {
+ grid-template-columns: 1fr 2fr 1fr;
+
+ .column-0,
+ .column-1 {
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-row: 2;
+ }
+
+ .column-2 {
+ grid-column: 2;
+ }
+
+ .column-3,
+ .column-4 {
+ grid-column: 3;
+ }
+
+ .column-4 {
+ grid-row: 2;
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ .column-1 {
+ display: block;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ .column-0,
+ .column-1,
+ .column-3,
+ .column-4 {
+ display: none;
+ }
+ }
+ }
+
+ h4 {
+ text-transform: uppercase;
+ font-weight: 700;
+ margin-bottom: 8px;
+ color: $darker-text-color;
+
+ a {
+ color: inherit;
text-decoration: none;
}
}
- img {
- margin: 0 4px;
- position: relative;
- bottom: -1px;
- height: 18px;
- vertical-align: top;
+ ul a {
+ text-decoration: none;
+ color: lighten($ui-base-color, 34%);
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: underline;
+ }
+ }
+
+ .brand {
+ svg {
+ display: block;
+ height: 36px;
+ width: auto;
+ margin: 0 auto;
+
+ path {
+ fill: lighten($ui-base-color, 34%);
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ svg path {
+ fill: lighten($ui-base-color, 38%);
+ }
+ }
}
}
}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 375c7b64b..144b4a519 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -50,6 +50,12 @@ code {
color: $highlight-text-color;
}
}
+
+ code {
+ border-radius: 3px;
+ padding: 0.2em 0.4em;
+ background: darken($ui-base-color, 12%);
+ }
}
.card {
@@ -154,9 +160,8 @@ code {
margin-bottom: 15px;
}
- li {
- float: left;
- width: 50%;
+ ul {
+ columns: 2;
}
}
@@ -616,3 +621,14 @@ code {
.scope-danger {
color: $warning-red;
}
+
+.form_admin_settings_site_short_description,
+.form_admin_settings_site_description,
+.form_admin_settings_site_extended_description,
+.form_admin_settings_site_terms,
+.form_admin_settings_custom_css,
+.form_admin_settings_closed_registrations_message {
+ textarea {
+ font-family: 'mastodon-font-monospace', monospace;
+ }
+}
diff --git a/app/javascript/styles/mastodon/landing_strip.scss b/app/javascript/styles/mastodon/landing_strip.scss
deleted file mode 100644
index 86614b89b..000000000
--- a/app/javascript/styles/mastodon/landing_strip.scss
+++ /dev/null
@@ -1,111 +0,0 @@
-.landing-strip,
-.memoriam-strip {
- background: rgba(darken($ui-base-color, 7%), 0.8);
- color: $darker-text-color;
- font-weight: 400;
- padding: 14px;
- border-radius: 4px;
- margin-bottom: 20px;
- display: flex;
- align-items: center;
-
- strong,
- a {
- font-weight: 500;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- a {
- color: inherit;
- text-decoration: underline;
- }
-
- .logo {
- width: 30px;
- height: 30px;
- flex: 0 0 auto;
- margin-right: 15px;
- }
-
- @media screen and (max-width: 740px) {
- margin-bottom: 0;
- }
-}
-
-.memoriam-strip {
- background: rgba($base-shadow-color, 0.7);
-}
-
-.moved-strip {
- padding: 14px;
- border-radius: 4px;
- background: rgba(darken($ui-base-color, 7%), 0.8);
- color: $secondary-text-color;
- font-weight: 400;
- margin-bottom: 20px;
-
- strong,
- a {
- font-weight: 500;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- a {
- color: inherit;
- text-decoration: underline;
-
- &.mention {
- text-decoration: none;
-
- span {
- text-decoration: none;
- }
-
- &:focus,
- &:hover,
- &:active {
- text-decoration: none;
-
- span {
- text-decoration: underline;
- }
- }
- }
- }
-
- &__message {
- margin-bottom: 15px;
-
- .fa {
- margin-right: 5px;
- color: $darker-text-color;
- }
- }
-
- &__card {
- .detailed-status__display-avatar {
- position: relative;
- cursor: pointer;
- }
-
- .detailed-status__display-name {
- margin-bottom: 0;
- text-decoration: none;
-
- span {
- color: $highlight-text-color;
- font-weight: 400;
- }
- }
- }
-}
diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss
index 9188c2206..14306c8bd 100644
--- a/app/javascript/styles/mastodon/stream_entries.scss
+++ b/app/javascript/styles/mastodon/stream_entries.scss
@@ -1,363 +1,166 @@
.activity-stream {
- clear: both;
box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ overflow: hidden;
+ margin-bottom: 10px;
+ text-align: left;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ border-radius: 0;
+ box-shadow: none;
+ }
+
+ &--headless {
+ border-radius: 0;
+ margin: 0;
+ box-shadow: none;
+
+ .detailed-status,
+ .status {
+ border-radius: 0 !important;
+ }
+ }
+
+ div[data-component] {
+ width: 100%;
+ }
.entry {
- background: $simple-background-color;
+ background: $ui-base-color;
- .detailed-status.light,
- .status.light,
- .more.light {
- border-bottom: 1px solid $ui-secondary-color;
+ .detailed-status,
+ .status,
+ .load-more {
animation: none;
}
&:last-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-bottom: 0;
border-radius: 0 0 4px 4px;
}
}
&:first-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 4px 4px 0 0;
}
&:last-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 4px;
}
}
}
@media screen and (max-width: 740px) {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 0 !important;
}
}
}
- &.with-header {
- .entry {
- &:first-child {
- &,
- .detailed-status.light,
- .status.light {
- border-radius: 0;
- }
+ &--highlighted .entry {
+ background: lighten($ui-base-color, 8%);
+ }
+}
- &:last-child {
- &,
- .detailed-status.light,
- .status.light {
- border-radius: 0 0 4px 4px;
- }
- }
- }
+.button.logo-button {
+ flex: 0 auto;
+ font-size: 14px;
+ background: $ui-highlight-color;
+ color: $primary-text-color;
+ text-transform: none;
+ line-height: 36px;
+ height: auto;
+ padding: 3px 15px;
+ border: 0;
+
+ svg {
+ width: 20px;
+ height: auto;
+ vertical-align: middle;
+ margin-right: 5px;
+
+ path:first-child {
+ fill: $primary-text-color;
+ }
+
+ path:last-child {
+ fill: $ui-highlight-color;
}
}
- .media-gallery__gifv__label {
- bottom: 9px;
- }
+ &:active,
+ &:focus,
+ &:hover {
+ background: lighten($ui-highlight-color, 10%);
- .status.light {
- padding: 14px 14px 14px (48px + 14px * 2);
- position: relative;
- min-height: 48px;
- cursor: default;
-
- .status__header {
- font-size: 15px;
-
- .status__meta {
- float: right;
- font-size: 14px;
-
- .status__relative-time {
- color: $lighter-text-color;
- }
- }
- }
-
- .status__display-name {
- display: block;
- max-width: 100%;
- padding-right: 25px;
- color: $inverted-text-color;
- }
-
- .status__avatar {
- position: absolute;
- left: 14px;
- top: 14px;
- width: 48px;
- height: 48px;
-
- & > div {
- width: 48px;
- height: 48px;
- }
-
- img {
- display: block;
- border-radius: 4px;
- }
- }
-
- .display-name {
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- strong {
- font-weight: 500;
- color: $inverted-text-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
-
- .status__content {
- color: $inverted-text-color;
-
- a {
- color: $highlight-text-color;
- }
-
- a.status__content__spoiler-link {
- color: $primary-text-color;
- background: $ui-base-color;
-
- &:hover {
- background: lighten($ui-base-color, 8%);
- }
- }
+ svg path:last-child {
+ fill: lighten($ui-highlight-color, 10%);
}
}
- .detailed-status.light {
- padding: 14px;
- background: $simple-background-color;
- cursor: default;
-
- .detailed-status__display-name {
- display: block;
- overflow: hidden;
- margin-bottom: 15px;
-
- & > div {
- float: left;
- margin-right: 10px;
- }
-
- .display-name {
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- strong {
- font-weight: 500;
- color: $inverted-text-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
- }
-
- .avatar {
- width: 48px;
- height: 48px;
-
- img {
- display: block;
- border-radius: 4px;
- }
- }
-
- .status__content {
- color: $inverted-text-color;
-
- a {
- color: $highlight-text-color;
- }
-
- a.status__content__spoiler-link {
- color: $primary-text-color;
- background: $ui-base-color;
-
- &:hover {
- background: lighten($ui-base-color, 8%);
- }
- }
- }
-
- .detailed-status__meta {
- margin-top: 15px;
- color: $light-text-color;
- font-size: 14px;
- line-height: 18px;
-
- a {
- color: inherit;
- }
-
- span > span {
- font-weight: 500;
- font-size: 12px;
- margin-left: 6px;
- display: inline-block;
- }
- }
-
- .status-card {
- border-color: lighten($ui-secondary-color, 4%);
- color: $lighter-text-color;
-
- &:hover {
- background: lighten($ui-secondary-color, 4%);
- }
- }
-
- .status-card__title,
- .status-card__description {
- color: $inverted-text-color;
- }
-
- .status-card__image {
- background: $ui-secondary-color;
- }
- }
-
- .media-spoiler {
- background: $ui-base-color;
- color: $darker-text-color;
- }
-
- .pre-header {
- padding: 14px 0;
- padding-left: (48px + 14px * 2);
- padding-bottom: 0;
- margin-bottom: -4px;
- color: $light-text-color;
- font-size: 14px;
- position: relative;
-
- .pre-header__icon {
- position: absolute;
- left: (48px + 14px * 2 - 30px);
- }
-
- .status__display-name.muted strong {
- color: $light-text-color;
- }
- }
-
- .open-in-web-link {
- text-decoration: none;
-
+ &.button--destructive {
+ &:active,
+ &:focus,
&:hover {
- text-decoration: underline;
- }
- }
+ background: $error-red;
- .more {
- color: $darker-text-color;
- display: block;
- padding: 14px;
- text-align: center;
-
- &:not(:hover) {
- text-decoration: none;
- }
- }
-}
-
-.embed {
- .activity-stream {
- box-shadow: none;
- }
-}
-
-.entry {
- .detailed-status.light {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- align-items: flex-start;
-
- .detailed-status__display-name {
- flex: 1;
- margin: 0 5px 15px 0;
- }
-
- .button.button-secondary.logo-button {
- flex: 0 auto;
- font-size: 14px;
- background: $ui-highlight-color;
- color: $primary-text-color;
- border: 0;
-
- svg {
- width: 20px;
- height: auto;
- vertical-align: middle;
- margin-right: 5px;
-
- path:first-child {
- fill: $primary-text-color;
- }
-
- path:last-child {
- fill: $ui-highlight-color;
- }
- }
-
- &:active,
- &:focus,
- &:hover {
- background: lighten($ui-highlight-color, 10%);
-
- svg path:last-child {
- fill: lighten($ui-highlight-color, 10%);
- }
+ svg path:last-child {
+ fill: $error-red;
}
}
+ }
- .status__content,
- .detailed-status__meta {
- flex: 100%;
+ @media screen and (max-width: $no-gap-breakpoint) {
+ svg {
+ display: none;
+ }
+ }
+}
+
+.embed,
+.public-layout {
+ .detailed-status {
+ padding: 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;
}
}
}
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index e54c55947..c2206cf55 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -1,9 +1,3 @@
-@keyframes Swag {
- 0% { background-position: 0% 0%; }
- 50% { background-position: 100% 0%; }
- 100% { background-position: 200% 0%; }
-}
-
.table {
width: 100%;
max-width: 100%;
@@ -191,14 +185,12 @@ a.table-action-link {
.status__content {
padding-top: 0;
+ summary {
+ display: list-item;
+ }
+
strong {
font-weight: 700;
- background: linear-gradient(to right, orange , yellow, green, cyan, blue, violet,orange , yellow, green, cyan, blue, violet);
- background-size: 200% 100%;
- -webkit-background-clip: text;
- background-clip: text;
- color: transparent;
- animation: Swag 2s linear 0s infinite;
}
}
}
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index 40aeb4afc..009f0a3c9 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -46,3 +46,5 @@ $cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW;
$media-modal-media-max-width: 100%;
// put margins on top and bottom of image to avoid the screen covered by image.
$media-modal-media-max-height: 80%;
+
+$no-gap-breakpoint: 415px;
diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss
new file mode 100644
index 000000000..f843f0b42
--- /dev/null
+++ b/app/javascript/styles/mastodon/widgets.scss
@@ -0,0 +1,242 @@
+.hero-widget {
+ margin-bottom: 10px;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+
+ &__img {
+ width: 100%;
+ height: 167px;
+ position: relative;
+ overflow: hidden;
+ border-radius: 4px 4px 0 0;
+ background: $base-shadow-color;
+
+ img {
+ object-fit: cover;
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 4px 4px 0 0;
+ }
+ }
+
+ &__text {
+ background: $ui-base-color;
+ padding: 20px;
+ border-radius: 0 0 4px 4px;
+ font-size: 15px;
+ color: $darker-text-color;
+ line-height: 20px;
+ word-wrap: break-word;
+ font-weight: 400;
+
+ .emojione {
+ width: 20px;
+ height: 20px;
+ margin: -3px 0 0;
+ }
+
+ p {
+ margin-bottom: 20px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ em {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ font-weight: 700;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: lighten($darker-text-color, 10%);
+ }
+
+ a {
+ color: $secondary-text-color;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
+}
+
+.endorsements-widget {
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+
+ h4 {
+ padding: 10px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 13px;
+ color: $darker-text-color;
+ }
+
+ .account {
+ padding: 10px 0;
+
+ &:last-child {
+ border-bottom: 0;
+ }
+
+ .account__display-name {
+ display: flex;
+ align-items: center;
+ }
+
+ .account__avatar {
+ width: 44px;
+ height: 44px;
+ background-size: 44px 44px;
+ }
+ }
+}
+
+.box-widget {
+ padding: 20px;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+}
+
+.contact-widget,
+.landing-page__information.contact-widget {
+ box-sizing: border-box;
+ padding: 20px;
+ min-height: 100%;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+}
+
+.contact-widget {
+ font-size: 15px;
+ color: $darker-text-color;
+ line-height: 20px;
+ word-wrap: break-word;
+ font-weight: 400;
+
+ strong {
+ font-weight: 500;
+ }
+
+ p {
+ margin-bottom: 10px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ &__mail {
+ margin-top: 10px;
+
+ a {
+ color: $primary-text-color;
+ text-decoration: none;
+ }
+ }
+}
+
+.moved-account-widget {
+ padding: 15px;
+ padding-bottom: 20px;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ color: $secondary-text-color;
+ font-weight: 400;
+ margin-bottom: 10px;
+
+ strong,
+ a {
+ font-weight: 500;
+
+ @each $lang in $cjk-langs {
+ &:lang(#{$lang}) {
+ font-weight: 700;
+ }
+ }
+ }
+
+ a {
+ color: inherit;
+ text-decoration: underline;
+
+ &.mention {
+ text-decoration: none;
+
+ span {
+ text-decoration: none;
+ }
+
+ &:focus,
+ &:hover,
+ &:active {
+ text-decoration: none;
+
+ span {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+
+ &__message {
+ margin-bottom: 15px;
+
+ .fa {
+ margin-right: 5px;
+ color: $darker-text-color;
+ }
+ }
+
+ &__card {
+ .detailed-status__display-avatar {
+ position: relative;
+ cursor: pointer;
+ }
+
+ .detailed-status__display-name {
+ margin-bottom: 0;
+ text-decoration: none;
+
+ span {
+ font-weight: 400;
+ }
+ }
+ }
+}
+
+.memoriam-widget {
+ padding: 20px;
+ border-radius: 4px;
+ background: $base-shadow-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ font-size: 14px;
+ color: $darker-text-color;
+ margin-bottom: 10px;
+}
+
+.moved-account-widget,
+.memoriam-widget,
+.box-widget,
+.contact-widget,
+.landing-page__information.contact-widget {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ box-shadow: none;
+ border-radius: 0;
+ }
+}
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 03476920b..3a39b723e 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -104,7 +104,9 @@ class ActivityPub::Activity
def crawl_links(status)
return if status.spoiler_text?
- LinkCrawlWorker.perform_async(status.id)
+
+ # Spread out crawling randomly to avoid DDoSing the link
+ LinkCrawlWorker.perform_in(rand(1..59).seconds, status.id)
end
def distribute_to_followers(status)
diff --git a/app/lib/activitypub/activity/accept.rb b/app/lib/activitypub/activity/accept.rb
index bd90c9019..7e60b2c00 100644
--- a/app/lib/activitypub/activity/accept.rb
+++ b/app/lib/activitypub/activity/accept.rb
@@ -11,6 +11,8 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity
private
def accept_follow
+ return accept_follow_for_relay if relay_follow?
+
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
@@ -19,6 +21,18 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity
follow_request&.authorize!
end
+ def accept_follow_for_relay
+ relay.update!(state: :accepted)
+ end
+
+ def relay
+ @relay ||= Relay.find_by(follow_activity_id: object_uri)
+ end
+
+ def relay_follow?
+ relay.present?
+ end
+
def target_uri
@target_uri ||= value_or_id(@object['actor'])
end
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 00479fd9a..f40e1fa3e 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -48,7 +48,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
account: @account,
text: text_from_content || '',
language: detected_language,
- spoiler_text: @object['summary'] || '',
+ spoiler_text: text_from_summary || '',
created_at: @object['published'],
override_timestamps: @options[:override_timestamps],
reply: @object['inReplyTo'].present?,
@@ -107,7 +107,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
updated = tag['updated']
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
- return unless emoji.nil? || emoji.updated_at >= updated
+ return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated)
emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri)
emoji.image_remote_url = image_url
@@ -193,6 +193,14 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
+ def text_from_summary
+ if @object['summary'].present?
+ @object['summary']
+ elsif summary_language_map?
+ @object['summaryMap'].values.first
+ end
+ end
+
def text_from_name
if @object['name'].present?
@object['name']
@@ -206,6 +214,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
@object['contentMap'].keys.first
elsif name_language_map?
@object['nameMap'].keys.first
+ elsif summary_language_map?
+ @object['summaryMap'].keys.first
elsif supported_object_type?
LanguageDetector.instance.detect(text_from_content, @account)
end
@@ -223,6 +233,10 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
+ def summary_language_map?
+ @object['summaryMap'].is_a?(Hash) && !@object['summaryMap'].empty?
+ end
+
def content_language_map?
@object['contentMap'].is_a?(Hash) && !@object['contentMap'].empty?
end
diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb
index 826dcf18e..c45832648 100644
--- a/app/lib/activitypub/activity/follow.rb
+++ b/app/lib/activitypub/activity/follow.rb
@@ -13,7 +13,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
# Fast-forward repeat follow requests
if @account.following?(target_account)
- AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true)
+ AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true, follow_request_uri: @json['id'])
return
end
diff --git a/app/lib/activitypub/activity/reject.rb b/app/lib/activitypub/activity/reject.rb
index 28d472883..d81b157de 100644
--- a/app/lib/activitypub/activity/reject.rb
+++ b/app/lib/activitypub/activity/reject.rb
@@ -11,6 +11,8 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity
private
def reject_follow
+ return reject_follow_for_relay if relay_follow?
+
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
@@ -21,6 +23,18 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity
UnfollowService.new.call(target_account, @account) if target_account.following?(@account)
end
+ def reject_follow_for_relay
+ relay.update!(state: :rejected)
+ end
+
+ def relay
+ @relay ||= Relay.find_by(follow_activity_id: object_uri)
+ end
+
+ def relay_follow?
+ relay.present?
+ end
+
def target_uri
@target_uri ||= value_or_id(@object['actor'])
end
diff --git a/app/lib/activitypub/activity/undo.rb b/app/lib/activitypub/activity/undo.rb
index cbed417c4..64c2be7d9 100644
--- a/app/lib/activitypub/activity/undo.rb
+++ b/app/lib/activitypub/activity/undo.rb
@@ -5,6 +5,8 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
case @object['type']
when 'Announce'
undo_announce
+ when 'Accept'
+ undo_accept
when 'Follow'
undo_follow
when 'Like'
@@ -27,6 +29,10 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
end
end
+ def undo_accept
+ ::Follow.find_by(target_account: @account, uri: target_uri)&.revoke_request!
+ end
+
def undo_follow
target_account = account_from_uri(target_uri)
diff --git a/app/lib/activitypub/activity/update.rb b/app/lib/activitypub/activity/update.rb
index aa5907f03..6eebc3b5c 100644
--- a/app/lib/activitypub/activity/update.rb
+++ b/app/lib/activitypub/activity/update.rb
@@ -11,6 +11,6 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
def update_account
return if @account.uri != object_uri
- ActivityPub::ProcessAccountService.new.call(@account.username, @account.domain, @object)
+ ActivityPub::ProcessAccountService.new.call(@account.username, @account.domain, @object, signed_with_known_key: true)
end
end
diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb
index e880499f1..d35cae889 100644
--- a/app/lib/activitypub/adapter.rb
+++ b/app/lib/activitypub/adapter.rb
@@ -9,7 +9,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
{
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'sensitive' => 'as:sensitive',
- 'movedTo' => 'as:movedTo',
+ 'movedTo' => { '@id' => 'as:movedTo', '@type' => '@id' },
'Hashtag' => 'as:Hashtag',
'ostatus' => 'http://ostatus.org#',
'atomUri' => 'ostatus:atomUri',
@@ -18,7 +18,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
'toot' => 'http://joinmastodon.org/ns#',
'Emoji' => 'toot:Emoji',
'focalPoint' => { '@container' => '@list', '@id' => 'toot:focalPoint' },
- 'featured' => 'toot:featured',
+ 'featured' => { '@id' => 'toot:featured', '@type' => '@id' },
'schema' => 'http://schema.org#',
'PropertyValue' => 'schema:PropertyValue',
'value' => 'schema:value',
diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb
index 16142a6ff..f52a8f406 100644
--- a/app/lib/activitypub/linked_data_signature.rb
+++ b/app/lib/activitypub/linked_data_signature.rb
@@ -32,7 +32,7 @@ class ActivityPub::LinkedDataSignature
end
end
- def sign!(creator)
+ def sign!(creator, sign_with: nil)
options = {
'type' => 'RsaSignature2017',
'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join,
@@ -42,8 +42,9 @@ class ActivityPub::LinkedDataSignature
options_hash = hash(options.without('type', 'id', 'signatureValue').merge('@context' => CONTEXT))
document_hash = hash(@json.without('signature'))
to_be_signed = options_hash + document_hash
+ keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : creator.keypair
- signature = Base64.strict_encode64(creator.keypair.sign(OpenSSL::Digest::SHA256.new, to_be_signed))
+ signature = Base64.strict_encode64(keypair.sign(OpenSSL::Digest::SHA256.new, to_be_signed))
@json.merge('signature' => options.merge('signatureValue' => signature))
end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 14cba70dc..b59a9f1cd 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -288,7 +288,7 @@ class FeedManager
# remains in the set. We could pick a random element, but this
# set should generally be small, and it seems ideal to show the
# oldest potential such reblog.
- other_reblog = redis.smembers(reblog_set_key).map(&:to_i).sort.first
+ other_reblog = redis.smembers(reblog_set_key).map(&:to_i).min
redis.zadd(timeline_key, other_reblog, other_reblog) if other_reblog
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
index c6f52f0c7..688d21fd8 100644
--- a/app/lib/language_detector.rb
+++ b/app/lib/language_detector.rb
@@ -3,12 +3,16 @@
class LanguageDetector
include Singleton
+ CHARACTER_THRESHOLD = 140
+
def initialize
@identifier = CLD3::NNetLanguageIdentifier.new(1, 2048)
end
def detect(text, account)
- detect_language_code(text) || default_locale(account)
+ input_text = prepare_text(text)
+ return if input_text.blank?
+ detect_language_code(input_text) || default_locale(account)
end
def language_names
@@ -23,8 +27,13 @@ class LanguageDetector
simplify_text(text).strip
end
+ def unreliable_input?(text)
+ text.size < CHARACTER_THRESHOLD
+ end
+
def detect_language_code(text)
- result = @identifier.find_language(prepare_text(text))
+ return if unreliable_input?(text)
+ result = @identifier.find_language(text)
iso6391(result.language.to_s).to_sym if result.reliable?
end
@@ -66,6 +75,6 @@ class LanguageDetector
end
def default_locale(account)
- account.user_locale&.to_sym
+ account.user_locale&.to_sym || I18n.default_locale
end
end
diff --git a/app/lib/ostatus/atom_serializer.rb b/app/lib/ostatus/atom_serializer.rb
index 5c6ff4f9b..1a0a635b3 100644
--- a/app/lib/ostatus/atom_serializer.rb
+++ b/app/lib/ostatus/atom_serializer.rb
@@ -352,7 +352,7 @@ class OStatus::AtomSerializer
append_element(entry, 'link', nil, rel: :alternate, type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(status)) if status.account.local?
append_element(entry, 'summary', status.spoiler_text, 'xml:lang': status.language) if status.spoiler_text?
- append_element(entry, 'content', Formatter.instance.format(status).to_str, type: 'html', 'xml:lang': status.language)
+ append_element(entry, 'content', Formatter.instance.format(status).to_str || '.', type: 'html', 'xml:lang': status.language)
status.mentions.sort_by(&:id).each do |mentioned|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:person], href: OStatus::TagManager.instance.uri_for(mentioned.account))
diff --git a/app/lib/potential_friendship_tracker.rb b/app/lib/potential_friendship_tracker.rb
index 362482669..017a9748d 100644
--- a/app/lib/potential_friendship_tracker.rb
+++ b/app/lib/potential_friendship_tracker.rb
@@ -12,6 +12,8 @@ class PotentialFriendshipTracker
class << self
def record(account_id, target_account_id, action)
+ return if account_id == target_account_id
+
key = "interactions:#{account_id}"
weight = WEIGHTS[action]
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 576ed23ca..21bdaa700 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -22,10 +22,11 @@ class Request
set_digest! if options.key?(:body)
end
- def on_behalf_of(account, key_id_format = :acct)
+ def on_behalf_of(account, key_id_format = :acct, sign_with: nil)
raise ArgumentError unless account.local?
@account = account
+ @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @account.keypair
@key_id_format = key_id_format
self
@@ -70,7 +71,7 @@ class Request
def signature
algorithm = 'rsa-sha256'
- signature = Base64.strict_encode64(@account.keypair.sign(OpenSSL::Digest::SHA256.new, signed_string))
+ signature = Base64.strict_encode64(@keypair.sign(OpenSSL::Digest::SHA256.new, signed_string))
"keyId=\"#{key_id}\",algorithm=\"#{algorithm}\",headers=\"#{signed_headers}\",signature=\"#{signature}\""
end
diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb
index c2b466924..1bba4a5a6 100644
--- a/app/lib/sanitize_config.rb
+++ b/app/lib/sanitize_config.rb
@@ -2,7 +2,7 @@
class Sanitize
module Config
- HTTP_PROTOCOLS ||= ['http', 'https', :relative].freeze
+ HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', :relative].freeze
CLASS_WHITELIST_TRANSFORMER = lambda do |env|
node = env[:node]
diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb
index de4af3009..5ee30825d 100644
--- a/app/lib/settings/scoped_settings.rb
+++ b/app/lib/settings/scoped_settings.rb
@@ -2,6 +2,10 @@
module Settings
class ScopedSettings
+ DEFAULTING_TO_UNSCOPED = %w(
+ theme
+ ).freeze
+
def initialize(object)
@object = object
end
@@ -50,15 +54,22 @@ module Settings
Rails.cache.fetch(Setting.cache_key(key, @object)) do
db_val = thing_scoped.find_by(var: key.to_s)
if db_val
- default_value = Setting.default_settings[key]
+ default_value = ScopedSettings.default_settings[key]
return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
db_val.value
else
- Setting.default_settings[key]
+ ScopedSettings.default_settings[key]
end
end
end
+ class << self
+ def default_settings
+ defaulting = DEFAULTING_TO_UNSCOPED.map { |k| [k, Setting[k]] }.to_h
+ Setting.default_settings.merge!(defaulting)
+ end
+ end
+
protected
def thing_scoped
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 9848c34a2..aa76b4dfe 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -16,7 +16,7 @@ class UserMailer < Devise::Mailer
return if @resource.disabled?
I18n.with_locale(@resource.locale || I18n.default_locale) do
- mail to: @resource.unconfirmed_email.blank? ? @resource.email : @resource.unconfirmed_email,
+ mail to: @resource.unconfirmed_email.presence || @resource.email,
subject: I18n.t(@resource.pending_reconfirmation? ? 'devise.mailer.reconfirmation_instructions.subject' : 'devise.mailer.confirmation_instructions.subject', instance: @instance),
template_name: @resource.pending_reconfirmation? ? 'reconfirmation_instructions' : 'confirmation_instructions'
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 1f720bf88..440a731e3 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -68,6 +68,7 @@ class Account < ApplicationRecord
# Remote user validations
validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && will_save_change_to_username? }
+ validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? }
# Local user validations
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? }
@@ -88,6 +89,10 @@ class Account < ApplicationRecord
has_many :status_pins, inverse_of: :account, dependent: :destroy
has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status
+ # Endorsements
+ has_many :account_pins, inverse_of: :account, dependent: :destroy
+ has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account
+
# Media
has_many :media_attachments, dependent: :destroy
@@ -188,6 +193,13 @@ class Account < ApplicationRecord
ResolveAccountService.new.call(acct)
end
+ def suspend!
+ transaction do
+ user&.disable! if local?
+ update!(suspended: true)
+ end
+ end
+
def unsuspend!
transaction do
user&.enable! if local?
diff --git a/app/models/account_pin.rb b/app/models/account_pin.rb
new file mode 100644
index 000000000..b51d3d4cd
--- /dev/null
+++ b/app/models/account_pin.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: account_pins
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# target_account_id :bigint(8)
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class AccountPin < ApplicationRecord
+ include Paginable
+ include RelationshipCacheable
+
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
+
+ validate :validate_follow_relationship
+
+ private
+
+ def validate_follow_relationship
+ errors.add(:base, I18n.t('accounts.pin_errors.following')) unless account.following?(target_account)
+ end
+end
diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account_header.rb
index ef40b8126..067e166eb 100644
--- a/app/models/concerns/account_header.rb
+++ b/app/models/concerns/account_header.rb
@@ -5,11 +5,12 @@ module AccountHeader
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
LIMIT = 2.megabytes
+ MAX_PIXELS = 750_000 # 1500x500px
class_methods do
def header_styles(file)
- styles = { original: { geometry: '700x335#', file_geometry_parser: FastGeometryParser } }
- styles[:static] = { geometry: '700x335#', format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif'
+ styles = { original: { pixels: MAX_PIXELS, file_geometry_parser: FastGeometryParser } }
+ styles[:static] = { format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif'
styles
end
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index e14e041f6..f5f833446 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -40,6 +40,10 @@ module AccountInteractions
end
end
+ def endorsed_map(target_account_ids, account_id)
+ follow_mapping(AccountPin.where(account_id: account_id, target_account_id: target_account_ids), :target_account_id)
+ end
+
def domain_blocking_map(target_account_ids, account_id)
accounts_map = Account.where(id: target_account_ids).select('id, domain').map { |a| [a.id, a.domain] }.to_h
blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id)
@@ -190,6 +194,10 @@ module AccountInteractions
status_pins.where(status: status).exists?
end
+ def endorsed?(account)
+ account_pins.where(target_account: account).exists?
+ end
+
def followers_for_local_distribution
followers.local
.joins(:user)
diff --git a/app/models/concerns/expireable.rb b/app/models/concerns/expireable.rb
index 444ccdfdb..2c0631476 100644
--- a/app/models/concerns/expireable.rb
+++ b/app/models/concerns/expireable.rb
@@ -9,7 +9,7 @@ module Expireable
attr_reader :expires_in
def expires_in=(interval)
- self.expires_at = interval.to_i.seconds.from_now unless interval.blank?
+ self.expires_at = interval.to_i.seconds.from_now if interval.present?
@expires_in = interval
end
diff --git a/app/models/export.rb b/app/models/export.rb
index f0d5dd255..0eeac0dc0 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -24,8 +24,16 @@ class Export
account.media_attachments.sum(:file_file_size)
end
+ def total_statuses
+ account.statuses_count
+ end
+
def total_follows
- account.following.count
+ account.following_count
+ end
+
+ def total_followers
+ account.followers_count
end
def total_blocks
diff --git a/app/models/favourite.rb b/app/models/favourite.rb
index 0fce82f6f..17f8c9fa6 100644
--- a/app/models/favourite.rb
+++ b/app/models/favourite.rb
@@ -32,20 +32,11 @@ class Favourite < ApplicationRecord
private
def increment_cache_counters
- if association(:status).loaded?
- status.update_attribute(:favourites_count, status.favourites_count + 1)
- else
- Status.where(id: status_id).update_all('favourites_count = COALESCE(favourites_count, 0) + 1')
- end
+ status&.increment_count!(:favourites_count)
end
def decrement_cache_counters
return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?)
-
- if association(:status).loaded?
- status.update_attribute(:favourites_count, [status.favourites_count - 1, 0].max)
- else
- Status.where(id: status_id).update_all('favourites_count = GREATEST(COALESCE(favourites_count, 0) - 1, 0)')
- end
+ status&.decrement_count!(:favourites_count)
end
end
diff --git a/app/models/follow.rb b/app/models/follow.rb
index eaf8445f3..714f4e898 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -32,11 +32,21 @@ class Follow < ApplicationRecord
false # Force uri_for to use uri attribute
end
+ def revoke_request!
+ FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, uri: uri)
+ destroy!
+ end
+
before_validation :set_uri, only: :create
+ after_destroy :remove_endorsements
private
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil?
end
+
+ def remove_endorsements
+ AccountPin.where(target_account_id: target_account_id, account_id: account_id).delete_all
+ end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 723480bdd..9fef7da97 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -10,6 +10,8 @@ class Form::AdminSettings
:site_contact_email=,
:site_title,
:site_title=,
+ :site_short_description,
+ :site_short_description=,
:site_description,
:site_description=,
:site_extended_description,
@@ -28,6 +30,8 @@ class Form::AdminSettings
:show_staff_badge=,
:bootstrap_timeline_accounts,
:bootstrap_timeline_accounts=,
+ :theme,
+ :theme=,
:min_invite_role,
:min_invite_role=,
:activity_api_enabled,
@@ -38,6 +42,8 @@ class Form::AdminSettings
:show_known_fediverse_at_about_page=,
:preview_sensitive_media,
:preview_sensitive_media=,
+ :custom_css,
+ :custom_css=,
to: Setting
)
end
diff --git a/app/models/form/admin_suspension_confirmation.rb b/app/models/form/admin_suspension_confirmation.rb
new file mode 100644
index 000000000..c34b5b30e
--- /dev/null
+++ b/app/models/form/admin_suspension_confirmation.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class Form::AdminSuspensionConfirmation
+ include ActiveModel::Model
+
+ attr_accessor :acct, :report_id
+end
diff --git a/app/models/form/status_batch.rb b/app/models/form/status_batch.rb
index 4f08a3049..8f5fd1fa2 100644
--- a/app/models/form/status_batch.rb
+++ b/app/models/form/status_batch.rb
@@ -23,7 +23,7 @@ class Form::StatusBatch
media_attached_status_ids = MediaAttachment.where(status_id: status_ids).pluck(:status_id)
ApplicationRecord.transaction do
- Status.where(id: media_attached_status_ids).find_each do |status|
+ Status.where(id: media_attached_status_ids).reorder(nil).find_each do |status|
status.update!(sensitive: sensitive)
log_action :update, status
end
@@ -35,7 +35,7 @@ class Form::StatusBatch
end
def delete_statuses
- Status.where(id: status_ids).find_each do |status|
+ Status.where(id: status_ids).reorder(nil).find_each do |status|
RemovalWorker.perform_async(status.id)
log_action :destroy, status
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index f9a8f322e..1e4fae3de 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -25,19 +25,20 @@ class MediaAttachment < ApplicationRecord
enum type: [:image, :gifv, :video, :unknown]
IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif'].freeze
- VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v'].freeze
+ VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v', '.mov'].freeze
- IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
- VIDEO_MIME_TYPES = ['video/webm', 'video/mp4'].freeze
+ IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
+ VIDEO_MIME_TYPES = ['video/webm', 'video/mp4', 'video/quicktime'].freeze
+ VIDEO_CONVERTIBLE_MIME_TYPES = ['video/webm', 'video/quicktime'].freeze
IMAGE_STYLES = {
original: {
- geometry: '1280x1280>',
+ pixels: 1_638_400, # 1280x1280px
file_geometry_parser: FastGeometryParser,
},
small: {
- geometry: '400x400>',
+ pixels: 160_000, # 400x400px
file_geometry_parser: FastGeometryParser,
},
}.freeze
@@ -54,7 +55,25 @@ class MediaAttachment < ApplicationRecord
},
}.freeze
- LIMIT = 8.megabytes
+ VIDEO_FORMAT = {
+ format: 'mp4',
+ convert_options: {
+ output: {
+ 'movflags' => 'faststart',
+ 'pix_fmt' => 'yuv420p',
+ 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
+ 'vsync' => 'cfr',
+ 'c:v' => 'h264',
+ 'b:v' => '500K',
+ 'maxrate' => '1300K',
+ 'bufsize' => '1300K',
+ 'crf' => 18,
+ },
+ },
+ }.freeze
+
+ IMAGE_LIMIT = 8.megabytes
+ VIDEO_LIMIT = 40.megabytes
belongs_to :account, inverse_of: :media_attachments, optional: true
belongs_to :status, inverse_of: :media_attachments, optional: true
@@ -65,8 +84,9 @@ class MediaAttachment < ApplicationRecord
convert_options: { all: '-quality 90 -strip' }
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES
- validates_attachment_size :file, less_than: LIMIT
- remotable_attachment :file, LIMIT
+ validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :video?
+ validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :video?
+ remotable_attachment :file, VIDEO_LIMIT
include Attachmentable
@@ -122,25 +142,15 @@ class MediaAttachment < ApplicationRecord
if f.instance.file_content_type == 'image/gif'
{
small: IMAGE_STYLES[:small],
- original: {
- format: 'mp4',
- convert_options: {
- output: {
- 'movflags' => 'faststart',
- 'pix_fmt' => 'yuv420p',
- 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
- 'vsync' => 'cfr',
- 'c:v' => 'h264',
- 'b:v' => '500K',
- 'maxrate' => '1300K',
- 'bufsize' => '1300K',
- 'crf' => 18,
- },
- },
- },
+ original: VIDEO_FORMAT,
}
elsif IMAGE_MIME_TYPES.include? f.instance.file_content_type
IMAGE_STYLES
+ elsif VIDEO_CONVERTIBLE_MIME_TYPES.include?(f.instance.file_content_type)
+ {
+ small: VIDEO_STYLES[:small],
+ original: VIDEO_FORMAT,
+ }
else
VIDEO_STYLES
end
@@ -152,7 +162,7 @@ class MediaAttachment < ApplicationRecord
elsif VIDEO_MIME_TYPES.include? f.file_content_type
[:video_transcoder]
else
- [:thumbnail]
+ [:lazy_thumbnail]
end
end
end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 4f6ec8e8e..b9bec0808 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -39,8 +39,6 @@ class Notification < ApplicationRecord
validates :account_id, uniqueness: { scope: [:activity_type, :activity_id] }
validates :activity_type, inclusion: { in: TYPE_CLASS_MAP.values }
- scope :cache_ids, -> { select(:id, :updated_at, :activity_type, :activity_id) }
-
scope :browserable, ->(exclude_types = []) {
types = TYPE_CLASS_MAP.values - activity_types_from_types(exclude_types + [:follow_request])
where(activity_type: types)
@@ -68,6 +66,10 @@ class Notification < ApplicationRecord
end
class << self
+ def cache_ids
+ select(:id, :updated_at, :activity_type, :activity_id)
+ end
+
def reload_stale_associations!(cached_items)
account_ids = (cached_items.map(&:from_account_id) + cached_items.map { |item| item.target_status&.account_id }.compact).uniq
diff --git a/app/models/relay.rb b/app/models/relay.rb
new file mode 100644
index 000000000..75cb060b2
--- /dev/null
+++ b/app/models/relay.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: relays
+#
+# id :bigint(8) not null, primary key
+# inbox_url :string default(""), not null
+# follow_activity_id :string
+# created_at :datetime not null
+# updated_at :datetime not null
+# state :integer default("idle"), not null
+#
+
+class Relay < ApplicationRecord
+ PRESET_RELAY = 'https://relay.joinmastodon.org/inbox'
+
+ validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url?
+
+ enum state: [:idle, :pending, :accepted, :rejected]
+
+ scope :enabled, -> { accepted }
+
+ before_destroy :ensure_disabled
+
+ alias enabled? accepted?
+
+ def enable!
+ activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
+ payload = Oj.dump(follow_activity(activity_id))
+
+ update!(state: :pending, follow_activity_id: activity_id)
+ ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
+ end
+
+ def disable!
+ activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
+ payload = Oj.dump(unfollow_activity(activity_id))
+
+ update!(state: :idle, follow_activity_id: nil)
+ ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
+ end
+
+ private
+
+ def follow_activity(activity_id)
+ {
+ '@context': ActivityPub::TagManager::CONTEXT,
+ id: activity_id,
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: ActivityPub::TagManager::COLLECTIONS[:public],
+ }
+ end
+
+ def unfollow_activity(activity_id)
+ {
+ '@context': ActivityPub::TagManager::CONTEXT,
+ id: activity_id,
+ type: 'Undo',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: {
+ id: follow_activity_id,
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: ActivityPub::TagManager::COLLECTIONS[:public],
+ },
+ }
+ end
+
+ def some_local_account
+ @some_local_account ||= Account.local.find_by(suspended: false)
+ end
+
+ def ensure_disabled
+ return unless enabled?
+ disable!
+ end
+end
diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb
index 070144e2d..2537de36c 100644
--- a/app/models/remote_follow.rb
+++ b/app/models/remote_follow.rb
@@ -22,6 +22,10 @@ class RemoteFollow
addressable_template.expand(uri: account.local_username_and_domain).to_s
end
+ def interact_address_for(status)
+ addressable_template.expand(uri: ActivityPub::TagManager.instance.uri_for(status)).to_s
+ end
+
private
def populate_template
diff --git a/app/models/status.rb b/app/models/status.rb
index e7dd0df29..35655bff2 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -15,8 +15,6 @@
# visibility :integer default("public"), not null
# spoiler_text :text default(""), not null
# reply :boolean default(FALSE), not null
-# favourites_count :integer default(0), not null
-# reblogs_count :integer default(0), not null
# language :string
# conversation_id :bigint(8)
# local :boolean
@@ -59,6 +57,7 @@ class Status < ApplicationRecord
has_one :notification, as: :activity, dependent: :destroy
has_one :stream_entry, as: :activity, inverse_of: :status
+ has_one :status_stat, inverse_of: :status
validates :uri, uniqueness: true, presence: true, unless: :local?
validates :text, presence: true, unless: -> { with_media? || reblog? }
@@ -81,7 +80,25 @@ class Status < ApplicationRecord
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) }
- cache_associated :account, :application, :media_attachments, :conversation, :tags, :stream_entry, mentions: :account, reblog: [:account, :application, :stream_entry, :tags, :media_attachments, :conversation, mentions: :account], thread: :account
+ cache_associated :account,
+ :application,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ :tags,
+ :stream_entry,
+ mentions: :account,
+ reblog: [
+ :account,
+ :application,
+ :stream_entry,
+ :tags,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ mentions: :account,
+ ],
+ thread: :account
delegate :domain, to: :account, prefix: true
@@ -175,6 +192,26 @@ class Status < ApplicationRecord
@marked_for_mass_destruction
end
+ def replies_count
+ status_stat&.replies_count || 0
+ end
+
+ def reblogs_count
+ status_stat&.reblogs_count || 0
+ end
+
+ def favourites_count
+ status_stat&.favourites_count || 0
+ end
+
+ def increment_count!(key)
+ update_status_stat!(key => public_send(key) + 1)
+ end
+
+ def decrement_count!(key)
+ update_status_stat!(key => [public_send(key) - 1, 0].max)
+ end
+
after_create :increment_counter_caches
after_destroy :decrement_counter_caches
@@ -190,6 +227,10 @@ class Status < ApplicationRecord
before_validation :set_local
class << self
+ def cache_ids
+ left_outer_joins(:status_stat).select('statuses.id, greatest(statuses.updated_at, status_stats.updated_at) AS updated_at')
+ end
+
def in_chosen_languages(account)
where(language: nil).or where(language: account.chosen_languages)
end
@@ -343,7 +384,8 @@ class Status < ApplicationRecord
def account_silencing_filter(account)
if account.silenced?
- including_silenced_accounts
+ including_myself = left_outer_joins(:account).where(account_id: account.id).references(:accounts)
+ excluding_silenced_accounts.or(including_myself)
else
excluding_silenced_accounts
end
@@ -352,6 +394,13 @@ class Status < ApplicationRecord
private
+ def update_status_stat!(attrs)
+ return if marked_for_destruction? || destroyed?
+
+ record = status_stat || build_status_stat
+ record.update(attrs)
+ end
+
def store_uri
update_attribute(:uri, ActivityPub::TagManager.instance.uri_for(self)) if uri.nil?
end
@@ -408,13 +457,8 @@ class Status < ApplicationRecord
Account.where(id: account_id).update_all('statuses_count = COALESCE(statuses_count, 0) + 1')
end
- return unless reblog?
-
- if association(:reblog).loaded?
- reblog.update_attribute(:reblogs_count, reblog.reblogs_count + 1)
- else
- Status.where(id: reblog_of_id).update_all('reblogs_count = COALESCE(reblogs_count, 0) + 1')
- end
+ reblog&.increment_count!(:reblogs_count) if reblog?
+ thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
def decrement_counter_caches
@@ -426,12 +470,7 @@ class Status < ApplicationRecord
Account.where(id: account_id).update_all('statuses_count = GREATEST(COALESCE(statuses_count, 0) - 1, 0)')
end
- return unless reblog?
-
- if association(:reblog).loaded?
- reblog.update_attribute(:reblogs_count, [reblog.reblogs_count - 1, 0].max)
- else
- Status.where(id: reblog_of_id).update_all('reblogs_count = GREATEST(COALESCE(reblogs_count, 0) - 1, 0)')
- end
+ reblog&.decrement_count!(:reblogs_count) if reblog?
+ thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
end
diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb
new file mode 100644
index 000000000..9d358776b
--- /dev/null
+++ b/app/models/status_stat.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: status_stats
+#
+# id :bigint(8) not null, primary key
+# status_id :bigint(8) not null
+# replies_count :bigint(8) default(0), not null
+# reblogs_count :bigint(8) default(0), not null
+# favourites_count :bigint(8) default(0), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class StatusStat < ApplicationRecord
+ belongs_to :status, inverse_of: :status_stat
+end
diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb
index c3641d7fd..c559651c6 100644
--- a/app/models/trending_tags.rb
+++ b/app/models/trending_tags.rb
@@ -1,7 +1,10 @@
# frozen_string_literal: true
class TrendingTags
+ KEY = 'trending_tags'
EXPIRE_HISTORY_AFTER = 7.days.seconds
+ EXPIRE_TRENDS_AFTER = 1.day.seconds
+ THRESHOLD = 5
class << self
def record_use!(tag, account, at_time = Time.now.utc)
@@ -9,6 +12,14 @@ class TrendingTags
increment_historical_use!(tag.id, at_time)
increment_unique_use!(tag.id, account.id, at_time)
+ increment_vote!(tag.id, at_time)
+ end
+
+ def get(limit)
+ key = "#{KEY}:#{Time.now.utc.beginning_of_day.to_i}"
+ tag_ids = redis.zrevrange(key, 0, limit - 1).map(&:to_i)
+ tags = Tag.where(id: tag_ids).to_a.map { |tag| [tag.id, tag] }.to_h
+ tag_ids.map { |tag_id| tags[tag_id] }.compact
end
private
@@ -25,6 +36,22 @@ class TrendingTags
redis.expire(key, EXPIRE_HISTORY_AFTER)
end
+ def increment_vote!(tag_id, at_time)
+ key = "#{KEY}:#{at_time.beginning_of_day.to_i}"
+ expected = redis.pfcount("activity:tags:#{tag_id}:#{(at_time - 1.day).beginning_of_day.to_i}:accounts").to_f
+ expected = 1.0 if expected.zero?
+ observed = redis.pfcount("activity:tags:#{tag_id}:#{at_time.beginning_of_day.to_i}:accounts").to_f
+
+ if expected > observed || observed < THRESHOLD
+ redis.zrem(key, tag_id.to_s)
+ else
+ score = ((observed - expected)**2) / expected
+ redis.zadd(key, score, tag_id.to_s)
+ end
+
+ redis.expire(key, EXPIRE_TRENDS_AFTER)
+ end
+
def disallowed_hashtags
return @disallowed_hashtags if defined?(@disallowed_hashtags)
diff --git a/app/models/user.rb b/app/models/user.rb
index c820c553a..25f77ed14 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -42,7 +42,14 @@ class User < ApplicationRecord
include Settings::Extend
include Omniauthable
- ACTIVE_DURATION = 7.days
+ # The home and list feeds will be stored in Redis for this amount
+ # of time, and status fan-out to followers will include only people
+ # within this time frame. Lowering the duration may improve performance
+ # if lots of people sign up, but not a lot of them check their feed
+ # every day. Raising the duration reduces the amount of expensive
+ # RegenerationWorker jobs that need to be run when those people come
+ # to check their feed
+ ACTIVE_DURATION = ENV.fetch('USER_ACTIVE_DAYS', 7).to_i.days
devise :two_factor_authenticatable,
otp_secret_encryption_key: Rails.configuration.x.otp_secret
@@ -91,7 +98,7 @@ class User < ApplicationRecord
:reduce_motion, :system_font_ui, :noindex, :theme, :display_sensitive_media, :hide_network,
:default_language, to: :settings, prefix: :setting, allow_nil: false
- attr_accessor :invite_code
+ attr_reader :invite_code
def pam_conflict(_)
# block pam login tries on traditional account
@@ -209,10 +216,6 @@ class User < ApplicationRecord
save!
end
- def active_for_authentication?
- super && !disabled?
- end
-
def setting_default_privacy
settings.default_privacy || (account.locked? ? 'private' : 'public')
end
@@ -255,7 +258,7 @@ class User < ApplicationRecord
end
def invite_code=(code)
- self.invite = Invite.find_by(code: code) unless code.blank?
+ self.invite = Invite.find_by(code: code) if code.present?
@invite_code = code
end
diff --git a/app/policies/invite_policy.rb b/app/policies/invite_policy.rb
index a2a65f934..14236f78b 100644
--- a/app/policies/invite_policy.rb
+++ b/app/policies/invite_policy.rb
@@ -9,6 +9,10 @@ class InvitePolicy < ApplicationPolicy
min_required_role?
end
+ def deactivate_all?
+ admin?
+ end
+
def destroy?
owner? || (Setting.min_invite_role == 'admin' ? admin? : staff?)
end
diff --git a/app/policies/relay_policy.rb b/app/policies/relay_policy.rb
new file mode 100644
index 000000000..bd75e2197
--- /dev/null
+++ b/app/policies/relay_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class RelayPolicy < ApplicationPolicy
+ def update?
+ admin?
+ end
+end
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index dabdf707a..57af5c61c 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -18,11 +18,11 @@ class UserPolicy < ApplicationPolicy
end
def enable?
- admin?
+ staff?
end
def disable?
- admin? && !record.admin?
+ staff? && !record.admin?
end
def promote?
diff --git a/app/presenters/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb
index b1e99b31b..e4aaa65f6 100644
--- a/app/presenters/account_relationships_presenter.rb
+++ b/app/presenters/account_relationships_presenter.rb
@@ -2,7 +2,8 @@
class AccountRelationshipsPresenter
attr_reader :following, :followed_by, :blocking,
- :muting, :requested, :domain_blocking
+ :muting, :requested, :domain_blocking,
+ :endorsed
def initialize(account_ids, current_account_id, **options)
@account_ids = account_ids.map { |a| a.is_a?(Account) ? a.id : a }
@@ -14,6 +15,7 @@ class AccountRelationshipsPresenter
@muting = cached[:muting].merge(Account.muting_map(@uncached_account_ids, @current_account_id))
@requested = cached[:requested].merge(Account.requested_map(@uncached_account_ids, @current_account_id))
@domain_blocking = cached[:domain_blocking].merge(Account.domain_blocking_map(@uncached_account_ids, @current_account_id))
+ @endorsed = cached[:endorsed].merge(Account.endorsed_map(@uncached_account_ids, @current_account_id))
cache_uncached!
@@ -23,6 +25,7 @@ class AccountRelationshipsPresenter
@muting.merge!(options[:muting_map] || {})
@requested.merge!(options[:requested_map] || {})
@domain_blocking.merge!(options[:domain_blocking_map] || {})
+ @endorsed.merge!(options[:endorsed_map] || {})
end
private
@@ -37,6 +40,7 @@ class AccountRelationshipsPresenter
muting: {},
requested: {},
domain_blocking: {},
+ endorsed: {},
}
@uncached_account_ids = []
@@ -63,6 +67,7 @@ class AccountRelationshipsPresenter
muting: { account_id => muting[account_id] },
requested: { account_id => requested[account_id] },
domain_blocking: { account_id => domain_blocking[account_id] },
+ endorsed: { account_id => endorsed[account_id] },
}
Rails.cache.write("relationship:#{@current_account_id}:#{account_id}", maps_for_account, expires_in: 1.day)
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index e4972c962..a4e4af889 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -6,6 +6,7 @@ class InstancePresenter
:site_contact_email,
:open_registrations,
:site_title,
+ :site_short_description,
:site_description,
:site_extended_description,
:site_terms,
@@ -13,7 +14,7 @@ class InstancePresenter
)
def contact_account
- Account.find_local(Setting.site_contact_username)
+ Account.find_local(Setting.site_contact_username.gsub(/\A@/, ''))
end
def user_count
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 41c9aa44e..5054bd683 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -93,11 +93,11 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
end
def avatar_exists?
- object.avatar.exists?
+ object.avatar?
end
def header_exists?
- object.header.exists?
+ object.header?
end
def manually_approves_followers
diff --git a/app/serializers/activitypub/delete_actor_serializer.rb b/app/serializers/activitypub/delete_actor_serializer.rb
index dfea9db4a..ddf59be97 100644
--- a/app/serializers/activitypub/delete_actor_serializer.rb
+++ b/app/serializers/activitypub/delete_actor_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::DeleteActorSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
attribute :virtual_object, key: :object
def id
@@ -19,4 +19,8 @@ class ActivityPub::DeleteActorSerializer < ActiveModel::Serializer
def virtual_object
actor
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/delete_serializer.rb b/app/serializers/activitypub/delete_serializer.rb
index 2bb65135f..5012a8383 100644
--- a/app/serializers/activitypub/delete_serializer.rb
+++ b/app/serializers/activitypub/delete_serializer.rb
@@ -17,7 +17,7 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
end
end
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: TombstoneSerializer
@@ -32,4 +32,8 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb
index 839847e22..4fc042727 100644
--- a/app/serializers/activitypub/undo_announce_serializer.rb
+++ b/app/serializers/activitypub/undo_announce_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::UndoAnnounceSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: ActivityPub::ActivitySerializer
@@ -16,4 +16,8 @@ class ActivityPub::UndoAnnounceSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/update_serializer.rb b/app/serializers/activitypub/update_serializer.rb
index ebc667d96..48d7a1929 100644
--- a/app/serializers/activitypub/update_serializer.rb
+++ b/app/serializers/activitypub/update_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::UpdateSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: ActivityPub::ActorSerializer
@@ -16,4 +16,8 @@ class ActivityPub::UpdateSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 42d0e4bf3..78b96298c 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -14,6 +14,7 @@ class InitialStateSerializer < ActiveModel::Serializer
domain: Rails.configuration.x.local_domain,
admin: object.admin&.id&.to_s,
search_enabled: Chewy.enabled?,
+ version: Mastodon::Version.to_s,
invites_enabled: Setting.min_invite_role == 'user',
}
diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb
index 45bfd4d6e..c6c722a54 100644
--- a/app/serializers/rest/relationship_serializer.rb
+++ b/app/serializers/rest/relationship_serializer.rb
@@ -2,7 +2,8 @@
class REST::RelationshipSerializer < ActiveModel::Serializer
attributes :id, :following, :showing_reblogs, :followed_by, :blocking,
- :muting, :muting_notifications, :requested, :domain_blocking
+ :muting, :muting_notifications, :requested, :domain_blocking,
+ :endorsed
def id
object.id.to_s
@@ -41,4 +42,8 @@ class REST::RelationshipSerializer < ActiveModel::Serializer
def domain_blocking
instance_options[:relationships].domain_blocking[object.id] || false
end
+
+ def endorsed
+ instance_options[:relationships].endorsed[object.id] || false
+ end
end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index fe3dc9bfc..61423f961 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -3,7 +3,8 @@
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, :reblogs_count, :favourites_count
+ :uri, :content, :url, :replies_count, :reblogs_count,
+ :favourites_count
attribute :favourited, if: :current_user?
attribute :reblogged, if: :current_user?
diff --git a/app/serializers/web/notification_serializer.rb b/app/serializers/web/notification_serializer.rb
index 43ba4d92a..ee83ec8b2 100644
--- a/app/serializers/web/notification_serializer.rb
+++ b/app/serializers/web/notification_serializer.rb
@@ -33,7 +33,7 @@ class Web::NotificationSerializer < ActiveModel::Serializer
end
def body
- str = truncate(strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note), length: 140)
- HTMLEntities.new.decode(str.to_str) # Do not encode entities, since this value will not be used in HTML
+ str = strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note)
+ truncate(HTMLEntities.new.decode(str.to_str), length: 140) # Do not encode entities, since this value will not be used in HTML
end
end
diff --git a/app/serializers/webfinger_serializer.rb b/app/serializers/webfinger_serializer.rb
index f80d12c02..8c0b07702 100644
--- a/app/serializers/webfinger_serializer.rb
+++ b/app/serializers/webfinger_serializer.rb
@@ -20,7 +20,7 @@ class WebfingerSerializer < ActiveModel::Serializer
{ rel: 'self', type: 'application/activity+json', href: account_url(object) },
{ rel: 'salmon', href: api_salmon_url(object.id) },
{ rel: 'magic-public-key', href: "data:application/magic-public-key,#{object.magic_key}" },
- { rel: 'http://ostatus.org/schema/1.0/subscribe', template: "#{authorize_follow_url}?acct={uri}" },
+ { rel: 'http://ostatus.org/schema/1.0/subscribe', template: "#{authorize_interaction_url}?uri={uri}" },
]
end
end
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 7f95678b0..670a0e4d6 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -5,9 +5,10 @@ class ActivityPub::ProcessAccountService < BaseService
# Should be called with confirmed valid JSON
# and WebFinger-resolved username and domain
- def call(username, domain, json)
+ def call(username, domain, json, options = {})
return if json['inbox'].blank? || unsupported_uri_scheme?(json['id'])
+ @options = options
@json = json
@uri = @json['id']
@username = username
@@ -31,7 +32,7 @@ class ActivityPub::ProcessAccountService < BaseService
return if @account.nil?
after_protocol_change! if protocol_changed?
- after_key_change! if key_changed?
+ after_key_change! if key_changed? && !@options[:signed_with_known_key]
check_featured_collection! if @account.featured_collection_url.present?
@account
@@ -226,7 +227,7 @@ class ActivityPub::ProcessAccountService < BaseService
updated = tag['updated']
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
- return unless emoji.nil? || emoji.updated_at >= updated
+ return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated)
emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri)
emoji.image_remote_url = image_url
diff --git a/app/services/after_block_domain_from_account_service.rb b/app/services/after_block_domain_from_account_service.rb
index 0f1a8505d..56cc819fb 100644
--- a/app/services/after_block_domain_from_account_service.rb
+++ b/app/services/after_block_domain_from_account_service.rb
@@ -15,13 +15,13 @@ class AfterBlockDomainFromAccountService < BaseService
private
def reject_existing_followers!
- @account.passive_relationships.where(account: Account.where(domain: @domain)).includes(:account).find_each do |follow|
+ @account.passive_relationships.where(account: Account.where(domain: @domain)).includes(:account).reorder(nil).find_each do |follow|
reject_follow!(follow)
end
end
def reject_pending_follow_requests!
- FollowRequest.where(target_account: @account).where(account: Account.where(domain: @domain)).includes(:account).find_each do |follow_request|
+ FollowRequest.where(target_account: @account).where(account: Account.where(domain: @domain)).includes(:account).reorder(nil).find_each do |follow_request|
reject_follow!(follow_request)
end
end
diff --git a/app/services/authorize_follow_service.rb b/app/services/authorize_follow_service.rb
index f47d488f1..1674239df 100644
--- a/app/services/authorize_follow_service.rb
+++ b/app/services/authorize_follow_service.rb
@@ -3,7 +3,7 @@
class AuthorizeFollowService < BaseService
def call(source_account, target_account, **options)
if options[:skip_follow_request]
- follow_request = FollowRequest.new(account: source_account, target_account: target_account)
+ follow_request = FollowRequest.new(account: source_account, target_account: target_account, uri: options[:follow_request_uri])
else
follow_request = FollowRequest.find_by!(account: source_account, target_account: target_account)
follow_request.authorize!
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index 8492c1117..4cfa22ab8 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -18,7 +18,7 @@ class BackupService < BaseService
def build_json!
@collection = serialize(collection_presenter, ActivityPub::CollectionSerializer)
- account.statuses.with_includes.find_in_batches do |statuses|
+ account.statuses.with_includes.reorder(nil).find_in_batches do |statuses|
statuses.each do |status|
item = serialize(status, ActivityPub::ActivitySerializer)
item.delete(:'@context')
@@ -44,6 +44,7 @@ class BackupService < BaseService
Gem::Package::TarWriter.new(gz) do |tar|
dump_media_attachments!(tar)
dump_outbox!(tar)
+ dump_likes!(tar)
dump_actor!(tar)
end
end
@@ -60,7 +61,7 @@ class BackupService < BaseService
end
def dump_media_attachments!(tar)
- MediaAttachment.attached.where(account: account).find_in_batches do |media_attachments|
+ MediaAttachment.attached.where(account: account).reorder(nil).find_in_batches do |media_attachments|
media_attachments.each do |m|
download_to_tar(tar, m.file, m.file.path)
end
@@ -82,6 +83,8 @@ class BackupService < BaseService
actor[:icon][:url] = 'avatar' + File.extname(actor[:icon][:url]) if actor[:icon]
actor[:image][:url] = 'header' + File.extname(actor[:image][:url]) if actor[:image]
+ actor[:outbox] = 'outbox.json'
+ actor[:likes] = 'likes.json'
download_to_tar(tar, account.avatar, 'avatar' + File.extname(account.avatar.path)) if account.avatar.exists?
download_to_tar(tar, account.header, 'header' + File.extname(account.header.path)) if account.header.exists?
@@ -91,15 +94,30 @@ class BackupService < BaseService
tar.add_file_simple('actor.json', 0o444, json.bytesize) do |io|
io.write(json)
end
+ end
- tar.add_file_simple('key.pem', 0o444, account.private_key.bytesize) do |io|
- io.write(account.private_key)
+ def dump_likes!(tar)
+ collection = serialize(ActivityPub::CollectionPresenter.new(id: 'likes.json', type: :ordered, size: 0, items: []), ActivityPub::CollectionSerializer)
+
+ Status.reorder(nil).joins(:favourites).includes(:account).merge(account.favourites).find_in_batches do |statuses|
+ statuses.each do |status|
+ collection[:totalItems] += 1
+ collection[:orderedItems] << ActivityPub::TagManager.instance.uri_for(status)
+ end
+
+ GC.start
+ end
+
+ json = Oj.dump(collection)
+
+ tar.add_file_simple('likes.json', 0o444, json.bytesize) do |io|
+ io.write(json)
end
end
def collection_presenter
ActivityPub::CollectionPresenter.new(
- id: account_outbox_url(account),
+ id: 'outbox.json',
type: :ordered,
size: account.statuses_count,
items: []
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index d082de40b..a1fe93665 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -43,14 +43,14 @@ class BlockDomainService < BaseService
end
def suspend_accounts!
- blocked_domain_accounts.where(suspended: false).find_each do |account|
+ blocked_domain_accounts.where(suspended: false).reorder(nil).find_each do |account|
UnsubscribeService.new.call(account) if account.subscribed?
SuspendAccountService.new.call(account)
end
end
def clear_account_images!
- blocked_domain_accounts.find_each do |account|
+ blocked_domain_accounts.reorder(nil).find_each do |account|
account.avatar.destroy if account.avatar.exists?
account.header.destroy if account.header.exists?
account.save
@@ -58,7 +58,7 @@ class BlockDomainService < BaseService
end
def clear_account_attachments!
- media_from_blocked_domain.find_each do |attachment|
+ media_from_blocked_domain.reorder(nil).find_each do |attachment|
@affected_status_ids << attachment.status_id if attachment.status_id.present?
attachment.file.destroy if attachment.file.exists?
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
index 6e1ac3ba9..b565bcc32 100644
--- a/app/services/favourite_service.rb
+++ b/app/services/favourite_service.rb
@@ -37,6 +37,7 @@ class FavouriteService < BaseService
end
def bump_potential_friendship(account, status)
+ ActivityTracker.increment('activity:interactions')
return if account.following?(status.account_id)
PotentialFriendshipTracker.record(account.id, status.account_id, :favourite)
end
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 60a389afd..f6888a68d 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -27,6 +27,8 @@ class FollowService < BaseService
return
end
+ ActivityTracker.increment('activity:interactions')
+
if target_account.locked? || target_account.activitypub?
request_follow(source_account, target_account, reblogs: reblogs)
else
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index 6490d2735..7d0dcc7ad 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -123,7 +123,7 @@ class NotifyService < BaseService
def send_email
return if @notification.activity.nil?
- NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later
+ NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes)
end
def email_enabled?
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 4c3485853..300eae547 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -83,7 +83,9 @@ class PostStatusService < BaseService
end
def bump_potential_friendship(account, status)
- return if !status.reply? || account.following?(status.in_reply_to_account_id)
+ return if !status.reply? || account.id == status.in_reply_to_account_id
+ ActivityTracker.increment('activity:interactions')
+ return if account.following?(status.in_reply_to_account_id)
PotentialFriendshipTracker.record(account.id, status.in_reply_to_account_id, :reply)
end
end
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index 2ed6698cf..b4641c4b4 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -25,7 +25,7 @@ class ProcessMentionsService < BaseService
end
end
- next match if mention_undeliverable?(mentioned_account)
+ next match if mention_undeliverable?(mentioned_account) || mentioned_account&.suspended
mentions << mentioned_account.mentions.where(status: status).first_or_create(status: status)
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 0ee8bac2f..33ddef8b8 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -44,6 +44,7 @@ class ReblogService < BaseService
end
def bump_potential_friendship(account, reblog)
+ ActivityTracker.increment('activity:interactions')
return if account.following?(reblog.reblog.account_id)
PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog)
end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 238099169..1a53093b8 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -43,13 +43,13 @@ class RemoveStatusService < BaseService
end
def remove_from_followers
- @account.followers_for_local_distribution.find_each do |follower|
+ @account.followers_for_local_distribution.reorder(nil).find_each do |follower|
FeedManager.instance.unpush_from_home(follower, @status)
end
end
def remove_from_lists
- @account.lists_for_local_distribution.select(:id, :account_id).find_each do |list|
+ @account.lists_for_local_distribution.select(:id, :account_id).reorder(nil).find_each do |list|
FeedManager.instance.unpush_from_list(list, @status)
end
end
@@ -90,6 +90,18 @@ class RemoveStatusService < BaseService
ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url|
[signed_activity_json, @account.id, inbox_url]
end
+
+ relay! if relayable?
+ end
+
+ def relayable?
+ @status.public_visibility?
+ end
+
+ def relay!
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_activity_json, @account.id, inbox_url]
+ end
end
def salmon_xml
diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb
index a068c1ed8..1db1917e2 100644
--- a/app/services/resolve_url_service.rb
+++ b/app/services/resolve_url_service.rb
@@ -2,11 +2,13 @@
class ResolveURLService < BaseService
include JsonLdHelper
+ include Authorization
attr_reader :url
- def call(url)
+ def call(url, on_behalf_of: nil)
@url = url
+ @on_behalf_of = on_behalf_of
return process_local_url if local_url?
@@ -84,6 +86,10 @@ class ResolveURLService < BaseService
def check_local_status(status)
return if status.nil?
- status if status.public_visibility? || status.unlisted_visibility?
+ authorize_with @on_behalf_of, status, :show?
+ status
+ rescue Mastodon::NotPermittedError
+ # Do not disclose the existence of status the user is not authorized to see
+ nil
end
end
diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index 5bb395942..cc1fcb52f 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -53,7 +53,7 @@ class SearchService < BaseService
end
def url_resource
- @_url_resource ||= ResolveURLService.new.call(query)
+ @_url_resource ||= ResolveURLService.new.call(query, on_behalf_of: @account)
end
def url_resource_symbol
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
index 708d15e37..8fc79b8ad 100644
--- a/app/services/suspend_account_service.rb
+++ b/app/services/suspend_account_service.rb
@@ -22,7 +22,11 @@ class SuspendAccountService < BaseService
end
def purge_content!
- ActivityPub::RawDistributionWorker.perform_async(delete_actor_json, @account.id) if @account.local?
+ if @account.local?
+ ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
+ [delete_actor_json, @account.id, inbox_url]
+ end
+ end
@account.statuses.reorder(nil).find_in_batches do |statuses|
BatchedRemoveStatusService.new.call(statuses)
@@ -59,12 +63,18 @@ 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
- Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
+ @delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
+ end
+
+ def delivery_inboxes
+ Account.inboxes + Relay.enabled.pluck(:inbox_url)
end
end
diff --git a/app/validators/email_mx_validator.rb b/app/validators/email_mx_validator.rb
index e9e6b56e8..8d1e58b38 100644
--- a/app/validators/email_mx_validator.rb
+++ b/app/validators/email_mx_validator.rb
@@ -16,7 +16,7 @@ class EmailMxValidator < ActiveModel::Validator
return true if domain.nil?
records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }
- records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.exchange.to_s } if records.empty?
+ records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.address.to_s } if records.empty?
records.empty? || on_blacklist?(records)
end
diff --git a/app/views/about/_administration.html.haml b/app/views/about/_administration.html.haml
deleted file mode 100644
index 02286d68b..000000000
--- a/app/views/about/_administration.html.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-.account
- .account__wrapper
- - if @instance_presenter.contact_account
- = link_to TagManager.instance.url_for(@instance_presenter.contact_account), class: 'account__display-name' do
- .account__avatar-wrapper
- .account__avatar{ style: "background-image: url(#{@instance_presenter.contact_account.avatar.url})" }
- %span.display-name
- %bdi
- %strong.display-name__html.emojify= display_name(@instance_presenter.contact_account, custom_emojify: true)
- %span.display-name__account @#{@instance_presenter.contact_account.acct}
- - else
- .account__display-name
- .account__avatar-wrapper
- .account__avatar{ style: "background-image: url(#{full_asset_url('avatars/original/missing.png', skip_pipeline: true)})" }
- %span.display-name
- %strong= t 'about.contact_missing'
- %span.display-name__account= t 'about.contact_unavailable'
-
- = link_to t('about.learn_more'), about_more_path, class: 'button button-alternative'
diff --git a/app/views/about/_contact.html.haml b/app/views/about/_contact.html.haml
deleted file mode 100644
index 3215d50b5..000000000
--- a/app/views/about/_contact.html.haml
+++ /dev/null
@@ -1,22 +0,0 @@
-.panel
- .panel-header
- = succeed ':' do
- = t 'about.contact'
- - if contact.site_contact_email.present?
- = mail_to contact.site_contact_email, nil, title: contact.site_contact_email
- - else
- %span= t 'about.contact_unavailable'
- .panel-body
- - if contact.contact_account
- .owner
- .avatar= image_tag contact.contact_account.avatar.url
- .name
- = link_to TagManager.instance.url_for(contact.contact_account) do
- %span.display_name.emojify= display_name(contact.contact_account, custom_emojify: true)
- %span.username @#{contact.contact_account.acct}
- - else
- .owner
- .avatar= image_tag full_asset_url('avatars/original/missing.png', skip_pipeline: true)
- .name
- %span.display_name= t 'about.contact_missing'
- %span.username= t 'about.contact_unavailable'
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index df072b8ae..20d5a262b 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -5,39 +5,43 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
= render partial: 'shared/og'
-.landing-page
- .header-wrapper.compact
- .header
- = render 'links'
+.grid-3
+ .column-0
+ .public-account-header.public-account-header--no-bar
+ .public-account-header__image
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
- .container-alt.hero
- .heading
- %h3= t('about.description_headline', domain: site_hostname)
- %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
+ .column-1
+ .landing-page__call-to-action{ dir: 'ltr' }
+ .row
+ .row__information-board
+ .information-board__section
+ %span= t 'about.user_count_before'
+ %strong= number_with_delimiter @instance_presenter.user_count
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
+ .information-board__section
+ %span= t 'about.status_count_before'
+ %strong= number_with_delimiter @instance_presenter.status_count
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
+ .row__mascot
+ .landing-page__mascot
+ = image_tag asset_pack_path('elephant_ui_plane.svg')
- .information-board
- .container-alt
- .information-board__sections
- .information-board__section
- %span= t 'about.user_count_before'
- %strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
- .information-board__section
- %span= t 'about.status_count_before'
- %strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
- .information-board__section
- %span= t 'about.domain_count_before'
- %strong= number_with_delimiter @instance_presenter.domain_count
- %span= t 'about.domain_count_after'
- = render 'contact', contact: @instance_presenter
-
- .extended-description
- .container-alt
- = @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
-
- .footer-links
- .container-alt
+ .column-2
+ .landing-page__information.contact-widget
%p
- = link_to t('about.source_code'), @instance_presenter.source_url
- = " (#{@instance_presenter.version_number})"
+ %strong= t 'about.administered_by'
+
+ = account_link_to(@instance_presenter.contact_account)
+
+ - if @instance_presenter.site_contact_email.present?
+ %p.contact-widget__mail
+ %strong
+ = succeed ':' do
+ = t 'about.contact'
+ %br/
+ = mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email
+
+ .column-3
+ .box-widget
+ .rich-formatting= @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 0a4d1d00c..7a4add26b 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -56,11 +56,11 @@
.information-board__section
%span= t 'about.user_count_before'
%strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
.information-board__section
%span= t 'about.status_count_before'
%strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
.row__mascot
.landing-page__mascot
= image_tag asset_pack_path('cigarmanwoman.svg')
@@ -88,11 +88,11 @@
.information-board__section
%span= t 'about.user_count_before'
%strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
.information-board__section
%span= t 'about.status_count_before'
%strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
.row__mascot
.landing-page__mascot
= image_tag asset_pack_path('cigarmanwoman.svg')
@@ -110,7 +110,7 @@
%p= t 'about.about_mastodon_html'
%div.contact
%h3= t 'about.administered_by'
- = render 'administration'
+ = account_link_to(@instance_presenter.contact_account, link_to(t('about.learn_more'), about_more_path, class: 'button button-alternative'))
= render 'features'
@@ -131,7 +131,7 @@
%p= t 'about.about_mastodon_html'
%div.contact
%h3= t 'about.administered_by'
- = render 'administration'
+ = account_link_to(@instance_presenter.contact_account, link_to(t('about.learn_more'), about_more_path, class: 'button button-alternative'))
= render 'features'
diff --git a/app/views/about/terms.html.haml b/app/views/about/terms.html.haml
index c7d36ed47..9d076a91b 100644
--- a/app/views/about/terms.html.haml
+++ b/app/views/about/terms.html.haml
@@ -1,11 +1,9 @@
- content_for :page_title do
= t('terms.title', instance: site_hostname)
-.landing-page
- .header-wrapper.compact
- .header
- = render 'links'
-
- .extended-description
- .container-alt
- = @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
+.grid
+ .column-0
+ .box-widget
+ .rich-formatting= @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
+ .column-1
+ = render 'application/sidebar'
diff --git a/app/views/accounts/_bio.html.haml b/app/views/accounts/_bio.html.haml
new file mode 100644
index 000000000..4e674beff
--- /dev/null
+++ b/app/views/accounts/_bio.html.haml
@@ -0,0 +1,15 @@
+.public-account-bio
+ - unless account.fields.empty?
+ .account__header__fields
+ - account.fields.each do |field|
+ %dl
+ %dt.emojify{ title: field.name }= Formatter.instance.format_field(account, field.name, custom_emojify: true)
+ %dd.emojify{ title: field.value }= Formatter.instance.format_field(account, field.value, custom_emojify: true)
+
+ = account_badge(account)
+
+ - if account.note.present?
+ .account__header__content.emojify= Formatter.instance.simplified_format(account, custom_emojify: true)
+
+ .public-account-bio__extra
+ = t 'accounts.joined', date: l(account.created_at, format: :month)
diff --git a/app/views/accounts/_follow_button.html.haml b/app/views/accounts/_follow_button.html.haml
deleted file mode 100644
index 558ced010..000000000
--- a/app/views/accounts/_follow_button.html.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- relationships ||= nil
-
-- unless account.memorial? || account.moved?
- - if user_signed_in?
- - requested = relationships ? relationships.requested[account.id].present? : current_account.requested?(account)
- - following = relationships ? relationships.following[account.id].present? : current_account.following?(account)
-
- - if user_signed_in? && current_account.id != account.id && !requested
- .controls
- - if following
- = link_to (account.local? ? account_unfollow_path(account) : remote_unfollow_path(acct: account.acct)), data: { method: :post }, class: 'icon-button' do
- = fa_icon 'user-times'
- = t('accounts.unfollow')
- - else
- = link_to (account.local? ? account_follow_path(account) : authorize_follow_path(acct: account.acct)), data: { method: :post }, class: 'icon-button' do
- = fa_icon 'user-plus'
- = t('accounts.follow')
- - elsif user_signed_in? && current_account.id == account.id
- .controls
- = link_to settings_profile_url, class: 'icon-button' do
- = fa_icon 'pencil'
- = t('settings.edit_profile')
- - elsif !user_signed_in?
- .controls
- .remote-follow
- = link_to (account.local? ? account_remote_follow_path(account) : "web+mastodon://follow?uri=#{account.uri}"), class: 'icon-button' do
- = fa_icon 'user-plus'
- = t('accounts.remote_follow')
diff --git a/app/views/accounts/_follow_grid.html.haml b/app/views/accounts/_follow_grid.html.haml
deleted file mode 100644
index fdcef84be..000000000
--- a/app/views/accounts/_follow_grid.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-.accounts-grid{ class: accounts.empty? ? 'empty' : '' }
- - if accounts.empty?
- = image_tag asset_pack_path('elephant_ui_greeting.svg'), alt: '', role: 'presentational'
- = render partial: 'accounts/nothing_here'
- - else
- = render partial: 'accounts/grid_card', collection: accounts, as: :account, cached: !user_signed_in?
-
-= paginate follows
diff --git a/app/views/accounts/_follow_grid_hidden.html.haml b/app/views/accounts/_follow_grid_hidden.html.haml
deleted file mode 100644
index e970350e6..000000000
--- a/app/views/accounts/_follow_grid_hidden.html.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-.accounts-grid.empty
- = image_tag asset_pack_path('elephant_ui_greeting.svg'), alt: '', role: 'presentational'
- %p.nothing-here= t('accounts.network_hidden')
diff --git a/app/views/accounts/_grid_card.html.haml b/app/views/accounts/_grid_card.html.haml
deleted file mode 100644
index a59ed128e..000000000
--- a/app/views/accounts/_grid_card.html.haml
+++ /dev/null
@@ -1,12 +0,0 @@
-.account-grid-card
- .account-grid-card__header{ style: "background-image: url(#{account.header.url(:original)})" }
- = render 'accounts/follow_button', account: account, relationships: @relationships
- .account-grid-card__avatar
- .avatar= image_tag account.avatar.url(:original)
- .name
- = link_to TagManager.instance.url_for(account) do
- %span.display_name.emojify= display_name(account, custom_emojify: true)
- %span.username
- @#{account.local? ? account.local_username_and_domain : account.acct}
- = fa_icon('lock') if account.locked?
- .account__header__content.p-note.emojify= Formatter.instance.simplified_format(account)
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 4098d6778..f09beff98 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -1,51 +1,43 @@
-.card.h-card.p-author{ style: "background-image: url(#{account.header.url(:original)})" }
- .card__illustration
- = render 'accounts/follow_button', account: account
- .avatar= image_tag account.avatar.url(:original), class: 'u-photo'
+.public-account-header
+ .public-account-header__image
+ = image_tag account.header.url, class: 'parallax'
+ .public-account-header__bar
+ = link_to short_account_url(account), class: 'avatar' do
+ = image_tag account.avatar.url
+ .public-account-header__tabs
+ .public-account-header__tabs__name
+ %h1
+ = display_name(account, custom_emojify: true)
+ %small
+ = acct(account)
+ = fa_icon('lock') if account.locked?
+ .public-account-header__tabs__tabs
+ .details-counters
+ .counter{ class: active_nav_class(short_account_url(account)) }
+ = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
+ %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.posts', count: account.statuses_count)
- .card__bio
- %h1.name
- %span.p-name.emojify= display_name(account, custom_emojify: true)
- %small<
- %span>< @#{account.local_username_and_domain}
- = fa_icon('lock') if account.locked?
+ .counter{ class: active_nav_class(account_following_index_url(account)) }
+ = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do
+ %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.following', count: account.following_count)
- - if account.bot?
- .roles
- .account-role.bot
- = t 'accounts.roles.bot'
- - elsif Setting.show_staff_badge
- - if account.user_admin?
- .roles
- .account-role.admin
- = t 'accounts.roles.admin'
- - elsif account.user_moderator?
- .roles
- .account-role.moderator
- = t 'accounts.roles.moderator'
+ .counter{ class: active_nav_class(account_followers_url(account)) }
+ = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do
+ %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.followers', count: account.followers_count)
+ .spacer
+ .public-account-header__tabs__tabs__buttons
+ = account_action_button(account)
- .bio
- .account__header__content.p-note.emojify= Formatter.instance.simplified_format(account, custom_emojify: true)
+ .public-account-header__extra
+ = render 'accounts/bio', account: account
- - unless account.fields.empty?
- .account__header__fields
- - account.fields.each do |field|
- %dl
- %dt.emojify{ title: field.name }= field.name
- %dd.emojify{ title: field.value }= Formatter.instance.format_field(account, field.value, custom_emojify: true)
-
- .details-counters
- .counter{ class: active_nav_class(short_account_url(account)) }
- = link_to short_account_url(account), class: 'u-url u-uid' do
- %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.posts')
-
- .counter{ class: active_nav_class(account_following_index_url(account)) }
+ .public-account-header__extra__links
= link_to account_following_index_url(account) do
- %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.following')
-
- .counter{ class: active_nav_class(account_followers_url(account)) }
+ %strong= number_to_human account.following_count, strip_insignificant_zeros: true
+ = t('accounts.following', count: account.following_count)
= link_to account_followers_url(account) do
- %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.followers')
+ %strong= number_to_human account.followers_count, strip_insignificant_zeros: true
+ = t('accounts.followers', count: account.followers_count)
diff --git a/app/views/accounts/_moved_strip.html.haml b/app/views/accounts/_moved.html.haml
similarity index 54%
rename from app/views/accounts/_moved_strip.html.haml
rename to app/views/accounts/_moved.html.haml
index ae18c6dc7..f99328dbd 100644
--- a/app/views/accounts/_moved_strip.html.haml
+++ b/app/views/accounts/_moved.html.haml
@@ -1,11 +1,11 @@
- moved_to_account = account.moved_to_account
-.moved-strip
- .moved-strip__message
+.moved-account-widget
+ .moved-account-widget__message
= fa_icon 'suitcase'
- = t('accounts.moved_html', name: content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), TagManager.instance.url_for(moved_to_account), class: 'mention'))
+ = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), TagManager.instance.url_for(moved_to_account), class: 'mention'))
- .moved-strip__card
+ .moved-account-widget__card
= link_to TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'noopener' do
.detailed-status__display-avatar
.account__avatar-overlay
@@ -13,5 +13,6 @@
.account__avatar-overlay-overlay{ style: "background-image: url('#{account.avatar.url(:original)}')" }
%span.display-name
- %strong.emojify= display_name(moved_to_account, custom_emojify: true)
+ %bdi
+ %strong.emojify= display_name(moved_to_account, custom_emojify: true)
%span @#{moved_to_account.acct}
diff --git a/app/views/accounts/_nothing_here.html.haml b/app/views/accounts/_nothing_here.html.haml
deleted file mode 100644
index 0c6dc1168..000000000
--- a/app/views/accounts/_nothing_here.html.haml
+++ /dev/null
@@ -1 +0,0 @@
-%p.nothing-here= t('accounts.nothing_here')
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index cfdd3a945..b825b82cb 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -20,36 +20,47 @@
= opengraph 'og:type', 'profile'
= render 'og', account: @account, url: short_account_url(@account, only_path: false)
-- if @account.memorial?
- .memoriam-strip= t('in_memoriam_html')
-- elsif @account.moved?
- = render partial: 'moved_strip', locals: { account: @account }
-- elsif show_landing_strip?
- = render partial: 'shared/landing_strip', locals: { account: @account }
-.h-feed
- %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/
+= render 'header', account: @account, with_bio: true
- = render 'header', account: @account
+.grid
+ .column-0
+ .h-feed
+ %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/
- .activity-stream-tabs
- = active_link_to t('accounts.posts'), short_account_url(@account)
- = 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)
+ .account__section-headline
+ = active_link_to t('accounts.posts_tab_heading'), short_account_url(@account)
+ = 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?
- .accounts-grid
- = render 'nothing_here'
- - else
- .activity-stream.with-header
- - if params[:page].to_i.zero?
- = render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
+ - if @statuses.empty?
+ = nothing_here 'nothing-here--under-tabs'
+ - else
+ .activity-stream
+ - if params[:page].to_i.zero?
+ = render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
- = render partial: 'stream_entries/status', collection: @statuses, as: :status
+ - if @newer_url
+ .entry= link_to_more @newer_url
- - if @newer_url || @older_url
- .pagination
- - if @older_url
- = link_to safe_join([fa_icon('chevron-left'), t('pagination.older')], ' '), @older_url, class: 'older', rel: 'next'
- - if @newer_url
- = link_to safe_join([t('pagination.newer'), fa_icon('chevron-right')], ' '), @newer_url, class: 'newer', rel: 'prev'
+ = render partial: 'stream_entries/status', collection: @statuses, as: :status
+
+ - if @older_url
+ .entry= link_to_more @older_url
+
+ .column-1
+ - if @account.memorial?
+ .memoriam-widget= t('in_memoriam_html')
+ - elsif @account.moved?
+ = render 'moved', account: @account
+
+ = render 'bio', account: @account
+
+ - unless @endorsed_accounts.empty?
+ .endorsements-widget
+ %h4= t 'accounts.choices_html', name: content_tag(:bdi, display_name(@account, custom_emojify: true))
+
+ - @endorsed_accounts.each do |account|
+ = account_link_to account
+
+ = render 'application/sidebar'
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index ed8190af5..f2c53e3fe 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -123,7 +123,7 @@
- if @account.suspended?
= link_to t('admin.accounts.undo_suspension'), admin_account_suspension_path(@account.id), method: :delete, class: 'button' if can?(:unsuspend, @account)
- else
- = link_to t('admin.accounts.perform_full_suspension'), admin_account_suspension_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:suspend, @account)
+ = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_suspension_path(@account.id), class: 'button' if can?(:suspend, @account)
- if !@account.local? && @account.hub_url.present?
%hr.spacer/
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
new file mode 100644
index 000000000..1996eef4d
--- /dev/null
+++ b/app/views/admin/dashboard/index.html.haml
@@ -0,0 +1,149 @@
+- content_for :page_title do
+ = t('admin.dashboard.title')
+
+.dashboard__counters
+ %div
+ = link_to admin_accounts_url(local: 1, recent: 1) do
+ .dashboard__counters__num= number_with_delimiter @users_count
+ .dashboard__counters__label= t 'admin.dashboard.total_users'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @registrations_week
+ .dashboard__counters__label= t 'admin.dashboard.week_users_new'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @logins_week
+ .dashboard__counters__label= t 'admin.dashboard.week_users_active'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @interactions_week
+ .dashboard__counters__label= t 'admin.dashboard.week_interactions'
+ %div
+ = link_to admin_reports_url do
+ .dashboard__counters__num= number_with_delimiter @reports_count
+ .dashboard__counters__label= t 'admin.dashboard.open_reports'
+ %div
+ = link_to sidekiq_url do
+ .dashboard__counters__num= number_with_delimiter @queue_backlog
+ .dashboard__counters__label= t 'admin.dashboard.backlog'
+
+.dashboard__widgets
+ .dashboard__widgets__users
+ %div
+ %h4= t 'admin.dashboard.recent_users'
+ %ul
+ - @recent_users.each do |user|
+ %li= admin_account_link_to(user.account)
+
+ .dashboard__widgets__features
+ %div
+ %h4= t 'admin.dashboard.features'
+ %ul
+ %li
+ = link_to t('admin.dashboard.feature_registrations'), edit_admin_settings_path
+ - if @registrations_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_invites'), edit_admin_settings_path
+ - if @invites_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_deletions'), edit_admin_settings_path
+ - if @deletions_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_relay'), admin_relays_path
+ - if @relay_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+
+ .dashboard__widgets__versions
+ %div
+ %h4= t 'admin.dashboard.software'
+ %ul
+ %li
+ Mastodon
+ %span.pull-right= @version
+ %li
+ Ruby
+ %span.pull-right= "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
+ %li
+ PostgreSQL
+ %span.pull-right= @database_version
+ %li
+ Redis
+ %span.pull-right= @redis_version
+
+ .dashboard__widgets__space
+ %div
+ %h4= t 'admin.dashboard.space'
+ %ul
+ %li
+ PostgreSQL
+ %span.pull-right= number_to_human_size @database_size
+ %li
+ Redis
+ %span.pull-right= number_to_human_size @redis_size
+
+ .dashboard__widgets__config
+ %div
+ %h4= t 'admin.dashboard.config'
+ %ul
+ %li
+ = t('admin.dashboard.search')
+ - if @search_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = t('admin.dashboard.single_user_mode')
+ - if @single_user_mode
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ LDAP
+ - if @ldap_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ CAS
+ - if @cas_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ SAML
+ - if @saml_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ PAM
+ - if @pam_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = t 'admin.dashboard.hidden_service'
+ - if @hidden_service
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+
+ .dashboard__widgets__trends
+ %div
+ %h4= t 'admin.dashboard.trends'
+ %ul
+ - @trending_hashtags.each do |tag|
+ %li
+ = link_to "##{tag.name}", web_url("timelines/tag/#{tag.name}")
+ %span.pull-right= number_with_delimiter(tag.history[0][:accounts].to_i)
diff --git a/app/views/admin/domain_blocks/new.html.haml b/app/views/admin/domain_blocks/new.html.haml
index 38fa90169..2b8b24e23 100644
--- a/app/views/admin/domain_blocks/new.html.haml
+++ b/app/views/admin/domain_blocks/new.html.haml
@@ -1,3 +1,6 @@
+- content_for :header_tags do
+ = javascript_pack_tag 'admin', integrity: true, async: true, crossorigin: 'anonymous'
+
- content_for :page_title do
= t('.title')
diff --git a/app/views/admin/invites/index.html.haml b/app/views/admin/invites/index.html.haml
index 944a60471..42159e9f3 100644
--- a/app/views/admin/invites/index.html.haml
+++ b/app/views/admin/invites/index.html.haml
@@ -9,22 +9,28 @@
%li= filter_link_to t('admin.invites.filter.available'), available: 1, expired: nil
%li= filter_link_to t('admin.invites.filter.expired'), available: nil, expired: 1
+%hr.spacer/
+
- if policy(:invite).create?
%p= t('invites.prompt')
= render 'invites/form'
- %hr/
+ %hr.spacer/
-%table.table
- %thead
- %tr
- %th
- %th= t('invites.table.uses')
- %th= t('invites.table.expires_at')
- %th
- %th
- %tbody
- = render @invites
+.table-wrapper
+ %table.table
+ %thead
+ %tr
+ %th
+ %th= t('invites.table.uses')
+ %th= t('invites.table.expires_at')
+ %th
+ %th
+ %tbody
+ = render @invites
= paginate @invites
+
+- if policy(:invite).deactivate_all?
+ = link_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button'
diff --git a/app/views/admin/relays/_relay.html.haml b/app/views/admin/relays/_relay.html.haml
new file mode 100644
index 000000000..d974c80a6
--- /dev/null
+++ b/app/views/admin/relays/_relay.html.haml
@@ -0,0 +1,21 @@
+%tr
+ %td
+ %samp= relay.inbox_url
+ %td
+ - if relay.enabled?
+ %span.positive-hint
+ = fa_icon('check')
+ = ' '
+ = t 'admin.relays.enabled'
+ - else
+ %span.negative-hint
+ = fa_icon('times')
+ = ' '
+ = t 'admin.relays.disabled'
+ %td
+ - if relay.enabled?
+ = table_link_to 'power-off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
+ - else
+ = table_link_to 'power-off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
+
+ = table_link_to 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
diff --git a/app/views/admin/relays/index.html.haml b/app/views/admin/relays/index.html.haml
new file mode 100644
index 000000000..1636a53f8
--- /dev/null
+++ b/app/views/admin/relays/index.html.haml
@@ -0,0 +1,20 @@
+- content_for :page_title do
+ = t('admin.relays.title')
+
+.simple_form
+ %p.hint= t('admin.relays.description_html')
+ = link_to @relays.empty? ? t('admin.relays.setup') : t('admin.relays.add_new'), new_admin_relay_path, class: 'block-button'
+
+- unless @relays.empty?
+ %hr.spacer
+
+ .table-wrapper
+ %table.table
+ %thead
+ %tr
+ %th= t('admin.relays.inbox_url')
+ %th= t('admin.relays.status')
+ %th
+ %tbody
+ = render @relays
+
diff --git a/app/views/admin/relays/new.html.haml b/app/views/admin/relays/new.html.haml
new file mode 100644
index 000000000..126794acf
--- /dev/null
+++ b/app/views/admin/relays/new.html.haml
@@ -0,0 +1,13 @@
+- content_for :page_title do
+ = t('admin.relays.add_new')
+
+= simple_form_for @relay, url: admin_relays_path do |f|
+ = render 'shared/error_messages', object: @relay
+
+ .field-group
+ = f.input :inbox_url, as: :string, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('admin.relays.save_and_enable'), type: :submit
+
+ %p.hint.subtle-hint= t('admin.relays.enable_hint')
diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml
index 5e174f312..4d557b071 100644
--- a/app/views/admin/reports/_status.html.haml
+++ b/app/views/admin/reports/_status.html.haml
@@ -3,16 +3,18 @@
= f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id
.batch-table__row__content
.status__content><
- - unless status.proper.spoiler_text.blank?
- %p><
- %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
-
- = Formatter.instance.format(status.proper, custom_emojify: true)
+ - if status.proper.spoiler_text.blank?
+ = Formatter.instance.format(status.proper, custom_emojify: true)
+ - else
+ %details<
+ %summary><
+ %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
+ = Formatter.instance.format(status.proper, custom_emojify: true)
- unless status.proper.media_attachments.empty?
- if status.proper.media_attachments.first.video?
- video = status.proper.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
- else
= react_component :media_gallery, height: 343, sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index b13bb5303..ef0e4aa41 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -8,7 +8,7 @@
- if @report.unresolved?
%div{ style: 'float: right' }
= link_to t('admin.reports.silence_account'), admin_report_path(@report, outcome: 'silence'), method: :put, class: 'button'
- = link_to t('admin.reports.suspend_account'), admin_report_path(@report, outcome: 'suspend'), method: :put, class: 'button'
+ = link_to t('admin.reports.suspend_account'), new_admin_account_suspension_path(@report.target_account_id, report_id: @report.id), class: 'button'
%div{ style: 'float: left' }
= link_to t('admin.reports.mark_as_resolved'), admin_report_path(@report, outcome: 'resolve'), method: :put, class: 'button'
- else
diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml
index f5c5deca8..f40edc35a 100644
--- a/app/views/admin/settings/edit.html.haml
+++ b/app/views/admin/settings/edit.html.haml
@@ -7,13 +7,15 @@
.fields-group
= f.input :site_title, placeholder: t('admin.settings.site_title')
- = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 8 }
+ = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 }
+ = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 4 }
= f.input :site_contact_username, placeholder: t('admin.settings.contact_information.username')
= f.input :site_contact_email, placeholder: t('admin.settings.contact_information.email')
%hr/
.fields-group
+ = f.input :theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false
= f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: t('admin.settings.thumbnail.desc_html')
= f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: t('admin.settings.hero.desc_html')
@@ -47,7 +49,7 @@
.fields-group
= f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 }
= f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 }
-
+ = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html')
%hr/
.fields-group
diff --git a/app/views/admin/suspensions/new.html.haml b/app/views/admin/suspensions/new.html.haml
new file mode 100644
index 000000000..f03ecacc3
--- /dev/null
+++ b/app/views/admin/suspensions/new.html.haml
@@ -0,0 +1,25 @@
+- content_for :page_title do
+ = t('admin.suspensions.title', acct: @account.acct)
+
+= simple_form_for @suspension, url: admin_account_suspension_path(@account.id), method: :post do |f|
+ %p.hint= t('admin.suspensions.warning_html')
+
+ .fields-group
+ %ul
+ %li.negative-hint
+ = number_to_human @account.statuses_count, strip_insignificant_zeros: true
+ = t('accounts.posts', count: @account.statuses_count)
+ %li.negative-hint
+ = number_to_human @account.following_count, strip_insignificant_zeros: true
+ = t('accounts.following', count: @account.following_count)
+ %li.negative-hint
+ = number_to_human @account.followers_count, strip_insignificant_zeros: true
+ = t('accounts.followers', count: @account.followers_count)
+
+ %p.hint= t('admin.suspensions.hint_html', value: content_tag(:code, @account.acct))
+
+ = f.input :acct
+ = f.input_field :report_id, as: :hidden
+
+ .actions
+ = f.button :button, t('admin.suspensions.proceed'), type: :submit, class: 'negative'
diff --git a/app/views/application/_card.html.haml b/app/views/application/_card.html.haml
new file mode 100644
index 000000000..9cf8f8ff2
--- /dev/null
+++ b/app/views/application/_card.html.haml
@@ -0,0 +1,16 @@
+- account_url = local_assigns[:admin] ? admin_account_path(account.id) : TagManager.instance.url_for(account)
+
+.card.h-card
+ = link_to account_url, target: '_blank', rel: 'noopener' do
+ .card__img
+ = image_tag account.header.url, alt: ''
+ .card__bar
+ .avatar
+ = image_tag account.avatar.url, alt: '', width: 48, height: 48, class: 'u-photo'
+
+ .display-name
+ %bdi
+ %strong.emojify.p-name= display_name(account, custom_emojify: true)
+ %span
+ = acct(account)
+ = fa_icon('lock') if account.locked?
diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml
new file mode 100644
index 000000000..2ff14b252
--- /dev/null
+++ b/app/views/application/_sidebar.html.haml
@@ -0,0 +1,6 @@
+.hero-widget
+ .hero-widget__img
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title
+
+ .hero-widget__text
+ %p= @instance_presenter.site_short_description.html_safe.presence || @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index 0fac8e10d..200ed42de 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -10,7 +10,7 @@
- if @invite.present? && @invite.autofollow?
.fields-group{ style: 'margin-bottom: 30px' }
%p.hint{ style: 'text-align: center' }= t('invites.invited_by')
- = render 'authorize_follows/card', account: @invite.user.account
+ = render 'application/card', account: @invite.user.account
= f.simple_fields_for :account do |ff|
.input-with-append
diff --git a/app/views/auth/shared/_links.html.haml b/app/views/auth/shared/_links.html.haml
index 08b385092..516c625a6 100644
--- a/app/views/auth/shared/_links.html.haml
+++ b/app/views/auth/shared/_links.html.haml
@@ -3,7 +3,7 @@
%li= link_to t('auth.login'), new_session_path(resource_name)
- if devise_mapping.registerable? && controller_name != 'registrations'
- %li= link_to t('auth.register'), new_registration_path(resource_name)
+ %li= link_to t('auth.register'), open_registrations? ? new_registration_path(resource_name) : 'https://joinmastodon.org/#getting-started'
- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations'
%li= link_to t('auth.forgot_password'), new_password_path(resource_name)
diff --git a/app/views/authorize_follows/_card.html.haml b/app/views/authorize_follows/_card.html.haml
deleted file mode 100644
index edc03131f..000000000
--- a/app/views/authorize_follows/_card.html.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-.account-card
- .account-card__header{ style: "background-image: url(#{account.header.url(:original)})" }
- .detailed-status__display-name
- %div
- = image_tag account.avatar.url(:original), alt: '', width: 48, height: 48, class: 'avatar'
-
- %span.display-name
- - account_url = local_assigns[:admin] ? admin_account_path(account.id) : TagManager.instance.url_for(account)
- = link_to account_url, class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'noopener' do
- %strong.emojify= display_name(account, custom_emojify: true)
- %span @#{account.acct}
-
- .counter
- %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.posts')
-
- .counter
- %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.following')
-
- .counter
- %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.followers')
diff --git a/app/views/authorize_follows/show.html.haml b/app/views/authorize_follows/show.html.haml
deleted file mode 100644
index a1fd01dd6..000000000
--- a/app/views/authorize_follows/show.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-- content_for :page_title do
- = t('authorize_follow.title', acct: @account.acct)
-
-.form-container
- .follow-prompt
- = render 'card', account: @account
-
- - if current_account.following?(@account)
- .flash-message
- %strong
- = t('authorize_follow.already_following')
- = render 'post_follow_actions'
-
- - else
- = form_tag authorize_follow_path, method: :post, class: 'simple_form' do
- = hidden_field_tag :acct, @account.acct
- = button_tag t('authorize_follow.follow'), type: :submit
diff --git a/app/views/authorize_follows/_post_follow_actions.html.haml b/app/views/authorize_interactions/_post_follow_actions.html.haml
similarity index 61%
rename from app/views/authorize_follows/_post_follow_actions.html.haml
rename to app/views/authorize_interactions/_post_follow_actions.html.haml
index 2a9c062e9..561c60137 100644
--- a/app/views/authorize_follows/_post_follow_actions.html.haml
+++ b/app/views/authorize_interactions/_post_follow_actions.html.haml
@@ -1,4 +1,4 @@
.post-follow-actions
- %div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@account.id}"), class: 'button button--block'
- %div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@account), class: 'button button--block'
+ %div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@resource.id}"), class: 'button button--block'
+ %div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@resource), class: 'button button--block'
%div= t('authorize_follow.post_follow.close')
diff --git a/app/views/authorize_follows/error.html.haml b/app/views/authorize_interactions/error.html.haml
similarity index 100%
rename from app/views/authorize_follows/error.html.haml
rename to app/views/authorize_interactions/error.html.haml
diff --git a/app/views/authorize_interactions/show.html.haml b/app/views/authorize_interactions/show.html.haml
new file mode 100644
index 000000000..7ca9b98c1
--- /dev/null
+++ b/app/views/authorize_interactions/show.html.haml
@@ -0,0 +1,18 @@
+- content_for :page_title do
+ = t('authorize_follow.title', acct: @resource.acct)
+
+.form-container
+ .follow-prompt
+ = render 'application/card', account: @resource
+
+ - if current_account.following?(@resource)
+ .flash-message
+ %strong
+ = t('authorize_follow.already_following')
+
+ = render 'post_follow_actions'
+ - else
+ = form_tag authorize_interaction_path, method: :post, class: 'simple_form' do
+ = hidden_field_tag :action, :follow
+ = hidden_field_tag :acct, @resource.acct
+ = button_tag t('authorize_follow.follow'), type: :submit
diff --git a/app/views/authorize_follows/success.html.haml b/app/views/authorize_interactions/success.html.haml
similarity index 60%
rename from app/views/authorize_follows/success.html.haml
rename to app/views/authorize_interactions/success.html.haml
index fa59b24b8..47fd09767 100644
--- a/app/views/authorize_follows/success.html.haml
+++ b/app/views/authorize_interactions/success.html.haml
@@ -1,13 +1,13 @@
- content_for :page_title do
- = t('authorize_follow.title', acct: @account.acct)
+ = t('authorize_follow.title', acct: @resource.acct)
.form-container
.follow-prompt
- - if @account.locked?
+ - if @resource.locked?
%h2= t('authorize_follow.follow_request')
- else
%h2= t('authorize_follow.following')
- = render 'card', account: @account
+ = render 'application/card', account: @resource
= render 'post_follow_actions'
diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml
index 65af81a5b..31dab68bf 100644
--- a/app/views/follower_accounts/index.html.haml
+++ b/app/views/follower_accounts/index.html.haml
@@ -8,6 +8,11 @@
= render 'accounts/header', account: @account
- if @account.user_hides_network?
- = render 'accounts/follow_grid_hidden'
+ .nothing-here= t('accounts.network_hidden')
+- elsif @follows.empty?
+ = nothing_here
- else
- = render 'accounts/follow_grid', follows: @follows, accounts: @follows.map(&:account)
+ .card-grid
+ = render partial: 'application/card', collection: @follows.map(&:account), as: :account
+
+ = paginate @follows
diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml
index 8fd95a0b4..8b49b529b 100644
--- a/app/views/following_accounts/index.html.haml
+++ b/app/views/following_accounts/index.html.haml
@@ -8,6 +8,11 @@
= render 'accounts/header', account: @account
- if @account.user_hides_network?
- = render 'accounts/follow_grid_hidden'
+ .nothing-here= t('accounts.network_hidden')
+- elsif @follows.empty?
+ = nothing_here
- else
- = render 'accounts/follow_grid', follows: @follows, accounts: @follows.map(&:target_account)
+ .card-grid
+ = render partial: 'application/card', collection: @follows.map(&:target_account), as: :account
+
+ = paginate @follows
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index df898d5a2..436864237 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -19,11 +19,10 @@
= javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous'
= csrf_meta_tags
+ - if Setting.custom_css.present?
+ = stylesheet_link_tag custom_css_path, media: 'all'
+
= yield :header_tags
- - body_classes ||= @body_classes || ''
- - body_classes += ' system-font' if current_account&.user&.setting_system_font_ui
- - body_classes += current_account&.user&.setting_reduce_motion ? ' reduce-motion' : ' no-reduce-motion'
-
- %body{ class: add_rtl_body_class(body_classes) }
+ %body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml
index 325b4ec72..b73068459 100644
--- a/app/views/layouts/modal.html.haml
+++ b/app/views/layouts/modal.html.haml
@@ -2,7 +2,7 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
- - if user_signed_in?
+ - if user_signed_in? && !@hide_header
.account-header
.avatar= image_tag current_account.avatar.url(:original)
.name
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index 600290297..6bf7efb23 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -2,16 +2,49 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
- .container-alt= yield
- .footer
- - if !user_signed_in? && single_user_mode?
- %span.single-user-login
- = link_to t('auth.login'), new_user_session_path
- —
- %span.footer__domain= link_to site_hostname, about_path
- - else
- %span.footer__domain= link_to site_hostname, root_path
- %span.powered-by
- != t('generic.powered_by', link: link_to('https://joinmastodon.org') { image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon' })
+ .public-layout
+ .container
+ %nav.header
+ .nav-left
+ = link_to root_url, class: 'brand' do
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
+ .nav-center
+ .nav-right
+ - if user_signed_in?
+ = link_to t('settings.back'), root_url, class: 'nav-link nav-button webapp-btn'
+ - else
+ = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn nav-link nav-button'
+ = link_to t('auth.register'), open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started', class: 'webapp-btn nav-link nav-button'
+
+ .container= yield
+
+ .container
+ .footer
+ .grid
+ .column-0
+ %h4= t 'footer.resources'
+ %ul
+ %li= link_to t('about.terms'), terms_path
+ %li= link_to t('about.privacy_policy'), terms_path
+ .column-1
+ %h4= t 'footer.developers'
+ %ul
+ %li= link_to t('about.documentation'), 'https://github.com/tootsuite/documentation'
+ %li= link_to t('about.api'), 'https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md'
+ .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')
+ .column-3
+ %h4= site_hostname
+ %ul
+ %li= link_to t('about.about_this'), about_more_path
+ %li= "v#{Mastodon::Version.to_s}"
+ .column-4
+ %h4= t 'footer.more'
+ %ul
+ %li= link_to t('about.source_code'), Mastodon::Version.source_url
+ %li= link_to t('about.apps'), 'https://joinmastodon.org/apps'
= render template: 'layouts/application'
diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml
index 9b22fda5f..9b679015f 100644
--- a/app/views/remote_follow/new.html.haml
+++ b/app/views/remote_follow/new.html.haml
@@ -6,7 +6,7 @@
.follow-prompt
%h2= t('remote_follow.prompt')
- = render partial: 'authorize_follows/card', locals: { account: @account }
+ = render partial: 'application/card', locals: { account: @account }
= simple_form_for @remote_follow, as: :remote_follow, url: account_remote_follow_path(@account) do |f|
= render 'shared/error_messages', object: @remote_follow
diff --git a/app/views/remote_interaction/new.html.haml b/app/views/remote_interaction/new.html.haml
new file mode 100644
index 000000000..7357546b6
--- /dev/null
+++ b/app/views/remote_interaction/new.html.haml
@@ -0,0 +1,17 @@
+.form-container
+ .follow-prompt
+ %h2= t('remote_interaction.prompt')
+
+ .public-layout
+ .activity-stream.activity-stream--highlighted
+ = render 'stream_entries/status', status: @status
+
+ = simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f|
+ = render 'shared/error_messages', object: @remote_follow
+
+ = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' }
+
+ .actions
+ = f.button :button, t('remote_interaction.proceed'), type: :submit
+
+ %p.hint.subtle-hint= t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started')
diff --git a/app/views/remote_unfollows/success.html.haml b/app/views/remote_unfollows/success.html.haml
index aa3c838a0..b007eedc7 100644
--- a/app/views/remote_unfollows/success.html.haml
+++ b/app/views/remote_unfollows/success.html.haml
@@ -5,6 +5,6 @@
.follow-prompt
%h2= t('remote_unfollow.unfollowed')
- = render 'card', account: @account
+ = render 'application/card', account: @account
= render 'post_follow_actions'
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 30cd26914..792dccd9e 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -8,17 +8,25 @@
%th= t('exports.storage')
%td= number_to_human_size @export.total_storage
%td
+ %tr
+ %th= t('accounts.statuses', count: @export.total_statuses)
+ %td= number_with_delimiter @export.total_statuses
+ %td
%tr
%th= t('exports.follows')
- %td= number_to_human @export.total_follows
+ %td= number_with_delimiter @export.total_follows
%td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
+ %tr
+ %th= t('accounts.followers', count: @export.total_followers)
+ %td= number_with_delimiter @export.total_followers
+ %td
%tr
%th= t('exports.blocks')
- %td= number_to_human @export.total_blocks
+ %td= number_with_delimiter @export.total_blocks
%td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv)
%tr
%th= t('exports.mutes')
- %td= number_to_human @export.total_mutes
+ %td= number_with_delimiter @export.total_mutes
%td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv)
%p.muted-hint= t('exports.archive_takeout.hint_html')
diff --git a/app/views/settings/imports/show.html.haml b/app/views/settings/imports/show.html.haml
index 991dd4e94..2b43cb134 100644
--- a/app/views/settings/imports/show.html.haml
+++ b/app/views/settings/imports/show.html.haml
@@ -1,11 +1,14 @@
- content_for :page_title do
= t('settings.import')
-%p.hint= t('imports.preface')
-
= simple_form_for @import, url: settings_import_path do |f|
- = f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
- = f.input :data, wrapper: :with_label, hint: t('simple_form.hints.imports.data')
+ %p.hint= t('imports.preface')
+
+ .field-group
+ = f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+
+ .field-group
+ = f.input :data, wrapper: :with_block_label, hint: t('simple_form.hints.imports.data')
.actions
= f.button :button, t('imports.upload'), type: :submit
diff --git a/app/views/settings/migrations/show.html.haml b/app/views/settings/migrations/show.html.haml
index b7c34761f..c69061d50 100644
--- a/app/views/settings/migrations/show.html.haml
+++ b/app/views/settings/migrations/show.html.haml
@@ -6,7 +6,7 @@
%p.hint= t('migrations.currently_redirecting')
.fields-group
- = render partial: 'authorize_follows/card', locals: { account: @migration.account }
+ = render partial: 'application/card', locals: { account: @migration.account }
= render 'shared/error_messages', object: @migration
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index a84f8a7da..9518bcb61 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -8,13 +8,12 @@
= f.input :display_name, placeholder: t('simple_form.labels.defaults.display_name'), hint: t('simple_form.hints.defaults.display_name', count: 30 - @account.display_name.size).html_safe
= f.input :note, placeholder: t('simple_form.labels.defaults.note'), hint: t('simple_form.hints.defaults.note', count: 160 - @account.note.size).html_safe
- .card.compact{ style: "background-image: url(#{@account.header.url(:original)})", data: { original_src: @account.header.url(:original) } }
- .avatar= image_tag @account.avatar.url(:original), data: { original_src: @account.avatar.url(:original) }
+ = render 'application/card', account: @account
.fields-group
- = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar')
+ = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT))
- = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header')
+ = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(AccountHeader::LIMIT))
.fields-group
= f.input :locked, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.locked')
diff --git a/app/views/shared/_landing_strip.html.haml b/app/views/shared/_landing_strip.html.haml
deleted file mode 100644
index 9a4144723..000000000
--- a/app/views/shared/_landing_strip.html.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-.landing-strip
- = image_tag asset_pack_path('logo.svg'), class: 'logo'
-
- %div
- = t('landing_strip_html', name: content_tag(:span, display_name(account, custom_emojify: true), class: :emojify), link_to_root_path: link_to(content_tag(:strong, site_hostname), root_path))
- = t('landing_strip_signup_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started')
diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml
index a6d805bea..76db511cd 100644
--- a/app/views/shared/_og.html.haml
+++ b/app/views/shared/_og.html.haml
@@ -3,7 +3,7 @@
= opengraph 'og:url', url_for(only_path: false)
= opengraph 'og:type', 'website'
= opengraph 'og:title', @instance_presenter.site_title
-= opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html'))
+= opengraph 'og:description', strip_tags(@instance_presenter.site_short_description.presence || @instance_presenter.site_description.presence || t('about.about_mastodon_html'))
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('preview.jpg', protocol: :request))
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
= opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630'
diff --git a/app/views/stream_entries/_content_spoiler.html.haml b/app/views/stream_entries/_content_spoiler.html.haml
deleted file mode 100644
index 798dfce67..000000000
--- a/app/views/stream_entries/_content_spoiler.html.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-.media-spoiler-wrapper{ class: sensitive == false && 'media-spoiler-wrapper__visible' }
- .spoiler-button
- .icon-button.overlayed
- %i.fa.fa-fw.fa-eye
- .media-spoiler
- %span= t('stream_entries.sensitive_content')
- %span= t('stream_entries.click_to_show')
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 85e90a237..7843005c1 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -1,16 +1,15 @@
-.detailed-status.light
+.detailed-status.detailed-status--flex
= link_to TagManager.instance.url_for(status.account), class: 'detailed-status__display-name p-author h-card', target: stream_link_target, rel: 'noopener' do
- %div
- .avatar
- = image_tag status.account.avatar.url(:original), width: 48, height: 48, alt: '', class: 'u-photo'
+ .detailed-status__display-avatar
+ = image_tag status.account.avatar.url(:original), width: 48, height: 48, alt: '', class: 'account__avatar u-photo'
%span.display-name
- %strong.p-name.emojify= display_name(status.account, custom_emojify: true)
- %span= acct(status.account)
+ %bdi
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true)
+ %span.display-name__account
+ = acct(status.account)
+ = fa_icon('lock') if status.account.locked?
- - if !user_signed_in? || embedded_view?
- = link_to account_remote_follow_path(status.account), class: 'button button-secondary logo-button', target: '_new' do
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo.svg')
- = t('accounts.follow')
+ = account_action_button(status.account)
.status__content.emojify<
- if status.spoiler_text?
@@ -22,7 +21,7 @@
- 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: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 670, height: 380, detailed: true, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 670, height: 380, detailed: true, inline: true, alt: video.description
- else
= react_component :media_gallery, height: 380, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
- elsif status.preview_cards.first
@@ -30,6 +29,7 @@
.detailed-status__meta
%data.dt-published{ value: status.created_at.to_time.iso8601 }
+
= link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime u-url u-uid', target: stream_link_target, rel: 'noopener' do
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
·
@@ -39,21 +39,28 @@
- else
= link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener'
·
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
+ = fa_icon('reply')
+ %span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true
+ = " "
+ ·
- if status.direct_visibility?
- %span<
+ %span.detailed-status__link<
= fa_icon('envelope')
- elsif status.private_visibility?
- %span<
+ %span.detailed-status__link<
= fa_icon('lock')
- else
- %span<
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
= fa_icon('retweet')
- %span= status.reblogs_count
+ %span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true
+ = " "
·
- %span<
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
= fa_icon('star')
- %span= status.favourites_count
+ %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true
+ = " "
- if user_signed_in?
·
- = link_to t('statuses.open_in_web'), web_url("statuses/#{status.id}"), class: 'open-in-web-link', target: '_blank'
+ = link_to t('statuses.open_in_web'), web_url("statuses/#{status.id}"), class: 'detailed-status__application', target: '_blank'
diff --git a/app/views/stream_entries/_media.html.haml b/app/views/stream_entries/_media.html.haml
deleted file mode 100644
index 779f02c8d..000000000
--- a/app/views/stream_entries/_media.html.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-.media-item
- = link_to media.remote_url.blank? ? media.file.url(:original) : media.remote_url, style: media.image? ? "background-image: url(#{media.file.url(:original)})" : '', target: '_blank', rel: 'noopener', class: "u-#{media.video? || media.gifv? ? 'video' : 'photo'}" do
- - unless media.image?
- %video{ src: media.file.url(:original), autoplay: true, loop: true }/
diff --git a/app/views/stream_entries/_more.html.haml b/app/views/stream_entries/_more.html.haml
deleted file mode 100644
index 9b1dfe4a7..000000000
--- a/app/views/stream_entries/_more.html.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-= link_to url, class: 'more light' do
- = t('statuses.show_more')
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index 0f27585a1..875795f2a 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -1,18 +1,19 @@
-.status.light
- .status__header
- .status__meta
- = link_to TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener' do
- %time.time-ago{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
- %data.dt-published{ value: status.created_at.to_time.iso8601 }
+.status
+ .status__info
+ = link_to TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener' do
+ %time.time-ago{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
+ %data.dt-published{ value: status.created_at.to_time.iso8601 }
= link_to TagManager.instance.url_for(status.account), class: 'status__display-name p-author h-card', target: stream_link_target, rel: 'noopener' do
.status__avatar
%div
- = image_tag status.account.avatar(:original), width: 48, height: 48, alt: '', class: 'u-photo'
+ = image_tag status.account.avatar(:original), width: 48, height: 48, alt: '', class: 'u-photo account__avatar'
%span.display-name
- %strong.p-name.emojify= display_name(status.account, custom_emojify: true)
- %span= acct(status.account)
-
+ %bdi
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true)
+ %span.display-name__account
+ = acct(status.account)
+ = fa_icon('lock') if status.account.locked?
.status__content.emojify<
- if status.spoiler_text?
%p{ style: 'margin-bottom: 0' }<
@@ -23,6 +24,21 @@
- unless 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: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
- else
= react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+
+ .status__action-bar
+ .status__action-bar__counter
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ = fa_icon 'reply fw'
+ .status__action-bar__counter__label= obscured_counter status.replies_count
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ - if status.public_visibility? || status.unlisted_visibility?
+ = fa_icon 'retweet fw'
+ - elsif status.private_visibility?
+ = fa_icon 'lock fw'
+ - else
+ = fa_icon 'envelope fw'
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ = fa_icon 'star fw'
diff --git a/app/views/stream_entries/_status.html.haml b/app/views/stream_entries/_status.html.haml
index b87ca2177..92003a48f 100644
--- a/app/views/stream_entries/_status.html.haml
+++ b/app/views/stream_entries/_status.html.haml
@@ -16,24 +16,25 @@
- if status.reply? && include_threads
- if @next_ancestor
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: TagManager.instance.url_for(@next_ancestor)
+ = link_to_more TagManager.instance.url_for(@next_ancestor)
= render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
.entry{ class: entry_classes }
- if status.reblog?
- .pre-header
- .pre-header__icon
- = fa_icon('retweet fw')
+ .status__prepend
+ .status__prepend-icon-wrapper
+ %i.status__prepend-icon.fa.fa-fw.fa-retweet
%span
= link_to TagManager.instance.url_for(status.account), class: 'status__display-name muted' do
- %strong.emojify= display_name(status.account, custom_emojify: true)
+ %bdi
+ %strong.emojify= display_name(status.account, custom_emojify: true)
= t('stream_entries.reblogged')
- elsif pinned
- .pre-header
- .pre-header__icon
- = fa_icon('thumb-tack fw')
+ .status__prepend
+ .status__prepend-icon-wrapper
+ %i.status__prepend-icon.fa.fa-fw.fa-thumb-tack
%span
= t('stream_entries.pinned')
@@ -42,13 +43,19 @@
- if include_threads
- if @since_descendant_thread_id
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
+ = link_to_more short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
- @descendant_threads.each do |thread|
= render partial: 'stream_entries/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
- if thread[:next_status]
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: TagManager.instance.url_for(thread[:next_status])
+ = link_to_more TagManager.instance.url_for(thread[:next_status])
- if @next_descendant_thread
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
+ = link_to_more short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
+
+- if include_threads && !embedded_view? && !user_signed_in?
+ .entry{ class: entry_classes }
+ = link_to new_user_session_path, class: 'load-more load-gap' do
+ = fa_icon 'comments'
+ = t('statuses.sign_in_to_participate')
diff --git a/app/views/stream_entries/embed.html.haml b/app/views/stream_entries/embed.html.haml
index b703c15d2..d20c1e93e 100644
--- a/app/views/stream_entries/embed.html.haml
+++ b/app/views/stream_entries/embed.html.haml
@@ -1,3 +1,3 @@
- cache @stream_entry.activity do
- .activity-stream.activity-stream-headless
+ .activity-stream.activity-stream--headless
= render "stream_entries/#{@type}", @type.to_sym => @stream_entry.activity, centered: true
diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml
index dfb83e747..2edc155bf 100644
--- a/app/views/stream_entries/show.html.haml
+++ b/app/views/stream_entries/show.html.haml
@@ -17,8 +17,9 @@
= render 'stream_entries/og_description', activity: @stream_entry.activity
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
-- if show_landing_strip?
- = render partial: 'shared/landing_strip', locals: { account: @stream_entry.account }
-
-.activity-stream.activity-stream-headless.h-entry
- = render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }
+.grid
+ .column-0
+ .activity-stream.h-entry
+ = render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }
+ .column-1
+ = render 'application/sidebar'
diff --git a/app/views/well_known/webfinger/show.xml.ruby b/app/views/well_known/webfinger/show.xml.ruby
index 4352a24e9..968c8c138 100644
--- a/app/views/well_known/webfinger/show.xml.ruby
+++ b/app/views/well_known/webfinger/show.xml.ruby
@@ -37,7 +37,7 @@ doc << Ox::Element.new('XRD').tap do |xrd|
xrd << Ox::Element.new('Link').tap do |link|
link['rel'] = 'http://ostatus.org/schema/1.0/subscribe'
- link['template'] = "#{authorize_follow_url}?acct={uri}"
+ link['template'] = "#{authorize_interaction_url}?acct={uri}"
end
end
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index 323a9f85b..adbb496d9 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -10,7 +10,8 @@ class ActivityPub::DeliveryWorker
HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze
- def perform(json, source_account_id, inbox_url)
+ def perform(json, source_account_id, inbox_url, options = {})
+ @options = options.with_indifferent_access
@json = json
@source_account = Account.find(source_account_id)
@inbox_url = inbox_url
@@ -27,7 +28,7 @@ class ActivityPub::DeliveryWorker
def build_request
request = Request.new(:post, @inbox_url, body: @json)
- request.on_behalf_of(@source_account, :uri)
+ request.on_behalf_of(@source_account, :uri, sign_with: @options[:sign_with])
request.add_headers(HEADERS)
end
diff --git a/app/workers/activitypub/distribution_worker.rb b/app/workers/activitypub/distribution_worker.rb
index 14bb933c0..c2bfd4f2f 100644
--- a/app/workers/activitypub/distribution_worker.rb
+++ b/app/workers/activitypub/distribution_worker.rb
@@ -14,6 +14,8 @@ class ActivityPub::DistributionWorker
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
[signed_payload, @account.id, inbox_url]
end
+
+ relay! if relayable?
rescue ActiveRecord::RecordNotFound
true
end
@@ -24,6 +26,10 @@ class ActivityPub::DistributionWorker
@status.direct_visibility?
end
+ def relayable?
+ @status.public_visibility?
+ end
+
def inboxes
@inboxes ||= @account.followers.inboxes
end
@@ -39,4 +45,10 @@ class ActivityPub::DistributionWorker
adapter: ActivityPub::Adapter
).as_json
end
+
+ def relay!
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_payload, @account.id, inbox_url]
+ end
+ end
end
diff --git a/app/workers/activitypub/update_distribution_worker.rb b/app/workers/activitypub/update_distribution_worker.rb
index f3377dcec..b9e5ff064 100644
--- a/app/workers/activitypub/update_distribution_worker.rb
+++ b/app/workers/activitypub/update_distribution_worker.rb
@@ -5,11 +5,16 @@ class ActivityPub::UpdateDistributionWorker
sidekiq_options queue: 'push'
- def perform(account_id)
+ def perform(account_id, options = {})
+ @options = options.with_indifferent_access
@account = Account.find(account_id)
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
- [payload, @account.id, inbox_url]
+ [signed_payload, @account.id, inbox_url]
+ end
+
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_payload, @account.id, inbox_url]
end
rescue ActiveRecord::RecordNotFound
true
@@ -21,11 +26,15 @@ class ActivityPub::UpdateDistributionWorker
@inboxes ||= @account.followers.inboxes
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
- ).to_json
+ ).as_json
end
end
diff --git a/app/workers/maintenance/destroy_media_worker.rb b/app/workers/maintenance/destroy_media_worker.rb
index 5f052983b..cde33d6d7 100644
--- a/app/workers/maintenance/destroy_media_worker.rb
+++ b/app/workers/maintenance/destroy_media_worker.rb
@@ -6,7 +6,7 @@ class Maintenance::DestroyMediaWorker
sidekiq_options queue: 'pull'
def perform(media_attachment_id)
- media = MediaAttachment.find(media_attachment_id)
+ media = media_attachment_id.is_a?(MediaAttachment) ? media_attachment_id : MediaAttachment.find(media_attachment_id)
media.destroy
rescue ActiveRecord::RecordNotFound
true
diff --git a/app/workers/maintenance/redownload_account_media_worker.rb b/app/workers/maintenance/redownload_account_media_worker.rb
index fc26815f2..6afbe6e19 100644
--- a/app/workers/maintenance/redownload_account_media_worker.rb
+++ b/app/workers/maintenance/redownload_account_media_worker.rb
@@ -6,7 +6,7 @@ class Maintenance::RedownloadAccountMediaWorker
sidekiq_options queue: 'pull', retry: false
def perform(account_id)
- account = Account.find(account_id)
+ account = account_id.is_a?(Account) ? account_id : Account.find(account_id)
account.reset_avatar!
account.reset_header!
account.save
diff --git a/app/workers/maintenance/uncache_media_worker.rb b/app/workers/maintenance/uncache_media_worker.rb
index f6a51a1b8..4bc62ef75 100644
--- a/app/workers/maintenance/uncache_media_worker.rb
+++ b/app/workers/maintenance/uncache_media_worker.rb
@@ -6,9 +6,9 @@ class Maintenance::UncacheMediaWorker
sidekiq_options queue: 'pull'
def perform(media_attachment_id)
- media = MediaAttachment.find(media_attachment_id)
+ media = media_attachment_id.is_a?(MediaAttachment) ? media_attachment_id : MediaAttachment.find(media_attachment_id)
- return unless media.file.exists?
+ return if media.file.blank?
media.file.destroy
media.save
diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb
index 66bcd27c3..12f2bf671 100644
--- a/app/workers/refollow_worker.rb
+++ b/app/workers/refollow_worker.rb
@@ -9,7 +9,7 @@ class RefollowWorker
target_account = Account.find(target_account_id)
return unless target_account.protocol == :activitypub
- target_account.followers.where(domain: nil).find_each do |follower|
+ target_account.followers.where(domain: nil).reorder(nil).find_each do |follower|
# Locally unfollow remote account
follower.unfollow!(target_account)
diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb
index 5ab16c057..d43660699 100644
--- a/app/workers/scheduler/backup_cleanup_scheduler.rb
+++ b/app/workers/scheduler/backup_cleanup_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::BackupCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- old_backups.find_each(&:destroy!)
+ old_backups.reorder(nil).find_each(&:destroy!)
end
private
diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
index bab4ae886..e5e5f6bc4 100644
--- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
+++ b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::DoorkeeperCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb
index 36866061b..24ec89b29 100644
--- a/app/workers/scheduler/email_scheduler.rb
+++ b/app/workers/scheduler/email_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::EmailScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- eligible_users.find_each do |user|
+ eligible_users.reorder(nil).find_each do |user|
next unless user.allows_digest_emails?
DigestMailerWorker.perform_async(user.id)
end
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb
index 42cf14128..cd2273418 100644
--- a/app/workers/scheduler/feed_cleanup_scheduler.rb
+++ b/app/workers/scheduler/feed_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::FeedCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
clean_home_feeds!
clean_list_feeds!
diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb
index 613a5e336..42620332e 100644
--- a/app/workers/scheduler/ip_cleanup_scheduler.rb
+++ b/app/workers/scheduler/ip_cleanup_scheduler.rb
@@ -5,6 +5,8 @@ class Scheduler::IpCleanupScheduler
RETENTION_PERIOD = 1.year
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
time_ago = RETENTION_PERIOD.ago
SessionActivation.where('updated_at < ?', time_ago).destroy_all
diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb
index c35686fcb..fb01aa70c 100644
--- a/app/workers/scheduler/media_cleanup_scheduler.rb
+++ b/app/workers/scheduler/media_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::MediaCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
unattached_media.find_each(&:destroy)
end
diff --git a/app/workers/scheduler/subscriptions_cleanup_scheduler.rb b/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
index af2ae3120..5fba120f6 100644
--- a/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
+++ b/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::SubscriptionsCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Subscription.expired.in_batches.delete_all
end
diff --git a/app/workers/scheduler/subscriptions_scheduler.rb b/app/workers/scheduler/subscriptions_scheduler.rb
index dc16e85c2..d5873bccb 100644
--- a/app/workers/scheduler/subscriptions_scheduler.rb
+++ b/app/workers/scheduler/subscriptions_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::SubscriptionsScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Pubsubhubbub::SubscribeWorker.push_bulk(expiring_accounts.pluck(:id))
end
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 245536cea..881b911be 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::UserCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
+ User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch|
Account.where(id: batch.map(&:account_id)).delete_all
User.where(id: batch.map(&:id)).delete_all
end
diff --git a/bin/tootctl b/bin/tootctl
new file mode 100755
index 000000000..2fe02523a
--- /dev/null
+++ b/bin/tootctl
@@ -0,0 +1,4 @@
+#!/usr/bin/env ruby
+APP_PATH = File.expand_path('../config/application', __dir__)
+require_relative '../lib/cli'
+Mastodon::CLI.start(ARGV)
diff --git a/config/application.rb b/config/application.rb
index b100d7fcc..ea4949bf2 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -38,6 +38,7 @@ module Mastodon
config.i18n.available_locales = [
:en,
:ar,
+ :ast,
:bg,
:ca,
:co,
@@ -59,6 +60,7 @@ module Mastodon
:io,
:it,
:ja,
+ :ka,
:ko,
:nl,
:no,
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
index e8956639c..40fef7283 100644
--- a/config/brakeman.ignore
+++ b/config/brakeman.ignore
@@ -1,5 +1,25 @@
{
"ignored_warnings": [
+ {
+ "warning_type": "SQL Injection",
+ "warning_code": 0,
+ "fingerprint": "04dbbc249b989db2e0119bbb0f59c9818e12889d2b97c529cdc0b1526002ba4b",
+ "check_name": "SQL",
+ "message": "Possible SQL injection",
+ "file": "app/models/report.rb",
+ "line": 86,
+ "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
+ "code": "Admin::ActionLog.from(\"(#{[Admin::ActionLog.where(:target_type => \"Report\", :target_id => id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Account\", :target_id => target_account_id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)].map do\n \"(#{query.to_sql})\"\n end.join(\" UNION ALL \")}) AS admin_action_logs\")",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Report",
+ "method": "history"
+ },
+ "user_input": "Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -7,8 +27,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 147,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 167,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).inbox_url, Account.find(params[:id]).inbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -26,8 +46,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 153,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 173,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).shared_inbox_url, Account.find(params[:id]).shared_inbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -45,8 +65,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 57,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 75,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).url, Account.find(params[:id]).url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -57,6 +77,26 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 105,
+ "fingerprint": "28d81cc22580ef76e912b077b245f353499aa27b3826476667224c00227af2a9",
+ "check_name": "PermitAttributes",
+ "message": "Potentially dangerous key allowed for mass assignment",
+ "file": "app/controllers/admin/reports_controller.rb",
+ "line": 86,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit(:account_id, :resolved, :target_account_id)",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Admin::ReportsController",
+ "method": "filter_params"
+ },
+ "user_input": ":account_id",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Dynamic Render Path",
"warning_code": 15,
@@ -65,9 +105,9 @@
"message": "Render path contains parameter value",
"file": "app/views/stream_entries/embed.html.haml",
"line": 3,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :centered => true })",
- "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":45,"file":"app/controllers/statuses_controller.rb"}],
+ "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":58,"file":"app/controllers/statuses_controller.rb"}],
"location": {
"type": "template",
"template": "stream_entries/embed"
@@ -83,8 +123,8 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/admin/action_logs/index.html.haml",
- "line": 5,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 4,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => Admin::ActionLog.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::ActionLogsController","method":"index","line":7,"file":"app/controllers/admin/action_logs_controller.rb"}],
"location": {
@@ -95,6 +135,26 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Redirect",
+ "warning_code": 18,
+ "fingerprint": "5fad11cd67f905fab9b1d5739d01384a1748ebe78c5af5ac31518201925265a7",
+ "check_name": "Redirect",
+ "message": "Possible unprotected redirect",
+ "file": "app/controllers/remote_interaction_controller.rb",
+ "line": 20,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
+ "code": "redirect_to(RemoteFollow.new(resource_params).interact_address_for(Status.find(params[:id])))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "RemoteInteractionController",
+ "method": "create"
+ },
+ "user_input": "RemoteFollow.new(resource_params).interact_address_for(Status.find(params[:id]))",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -102,8 +162,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 156,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 176,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).followers_url, Account.find(params[:id]).followers_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -121,8 +181,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 130,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 149,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).salmon_url, Account.find(params[:id]).salmon_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -141,7 +201,7 @@
"message": "Render path contains parameter value",
"file": "app/views/admin/custom_emojis/index.html.haml",
"line": 45,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::CustomEmojisController","method":"index","line":11,"file":"app/controllers/admin/custom_emojis_controller.rb"}],
"location": {
@@ -160,7 +220,7 @@
"message": "Possible SQL injection",
"file": "lib/mastodon/snowflake.rb",
"line": 87,
- "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/",
+ "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")",
"render_path": null,
"location": {
@@ -180,7 +240,7 @@
"message": "Render path contains parameter value",
"file": "app/views/admin/accounts/index.html.haml",
"line": 67,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_accounts.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"index","line":12,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -191,25 +251,6 @@
"confidence": "Weak",
"note": ""
},
- {
- "warning_type": "Cross-Site Request Forgery",
- "warning_code": 7,
- "fingerprint": "ab491f72606337a348482d006eb67a3b1616685fd48644d5ac909bbcd62a5000",
- "check_name": "ForgerySetting",
- "message": "'protect_from_forgery' should be called in WellKnown::HostMetaController",
- "file": "app/controllers/well_known/host_meta_controller.rb",
- "line": 4,
- "link": "http://brakemanscanner.org/docs/warning_types/cross-site_request_forgery/",
- "code": null,
- "render_path": null,
- "location": {
- "type": "controller",
- "controller": "WellKnown::HostMetaController"
- },
- "user_input": null,
- "confidence": "High",
- "note": ""
- },
{
"warning_type": "Redirect",
"warning_code": 18,
@@ -218,7 +259,7 @@
"message": "Possible unprotected redirect",
"file": "app/controllers/media_controller.rb",
"line": 10,
- "link": "http://brakemanscanner.org/docs/warning_types/redirect/",
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
"code": "redirect_to(MediaAttachment.attached.find_by!(:shortcode => ((params[:id] or params[:medium_id]))).file.url(:original))",
"render_path": null,
"location": {
@@ -237,8 +278,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 119,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 138,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).remote_url, Account.find(params[:id]).remote_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -256,8 +297,8 @@
"check_name": "Redirect",
"message": "Possible unprotected redirect",
"file": "app/controllers/remote_follow_controller.rb",
- "line": 18,
- "link": "http://brakemanscanner.org/docs/warning_types/redirect/",
+ "line": 19,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
"code": "redirect_to(RemoteFollow.new(resource_params).subscribe_address_for(Account.find_local!(params[:account_username])))",
"render_path": null,
"location": {
@@ -276,8 +317,8 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/admin/reports/index.html.haml",
- "line": 25,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 22,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_reports.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::ReportsController","method":"index","line":10,"file":"app/controllers/admin/reports_controller.rb"}],
"location": {
@@ -288,25 +329,6 @@
"confidence": "Weak",
"note": ""
},
- {
- "warning_type": "Cross-Site Request Forgery",
- "warning_code": 7,
- "fingerprint": "d4278f04e807ec58a23925f8ab31fad5e84692f2fb9f2f57e7931aff05d57cf8",
- "check_name": "ForgerySetting",
- "message": "'protect_from_forgery' should be called in WellKnown::WebfingerController",
- "file": "app/controllers/well_known/webfinger_controller.rb",
- "line": 4,
- "link": "http://brakemanscanner.org/docs/warning_types/cross-site_request_forgery/",
- "code": null,
- "render_path": null,
- "location": {
- "type": "controller",
- "controller": "WellKnown::WebfingerController"
- },
- "user_input": null,
- "confidence": "High",
- "note": ""
- },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -314,8 +336,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 150,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 170,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).outbox_url, Account.find(params[:id]).outbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -326,6 +348,26 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 105,
+ "fingerprint": "e867661b2c9812bc8b75a5df12b28e2a53ab97015de0638b4e732fe442561b28",
+ "check_name": "PermitAttributes",
+ "message": "Potentially dangerous key allowed for mass assignment",
+ "file": "app/controllers/api/v1/reports_controller.rb",
+ "line": 42,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit(:account_id, :comment, :forward, :status_ids => ([]))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::ReportsController",
+ "method": "report_params"
+ },
+ "user_input": ":account_id",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Dynamic Render Path",
"warning_code": 15,
@@ -333,10 +375,10 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/stream_entries/show.html.haml",
- "line": 24,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 23,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(partial => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { :locals => ({ Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :include_threads => true }) })",
- "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":22,"file":"app/controllers/statuses_controller.rb"}],
+ "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":30,"file":"app/controllers/statuses_controller.rb"}],
"location": {
"type": "template",
"template": "stream_entries/show"
@@ -346,6 +388,6 @@
"note": ""
}
],
- "updated": "2018-02-16 06:42:53 +0100",
- "brakeman_version": "4.0.1"
+ "updated": "2018-08-18 00:49:25 +0200",
+ "brakeman_version": "4.2.1"
}
diff --git a/config/initializers/0_post_deployment_migrations.rb b/config/initializers/0_post_deployment_migrations.rb
new file mode 100644
index 000000000..61121ccd7
--- /dev/null
+++ b/config/initializers/0_post_deployment_migrations.rb
@@ -0,0 +1,15 @@
+# Post deployment migrations are included by default. This file must be loaded
+# before other initializers as Rails may otherwise memoize a list of migrations
+# excluding the post deployment migrations.
+
+unless ENV['SKIP_POST_DEPLOYMENT_MIGRATIONS']
+ Rails.application.config.paths['db'].each do |db_path|
+ path = Rails.root.join(db_path, 'post_migrate').to_s
+
+ Rails.application.config.paths['db/migrate'] << path
+
+ # Rails memoizes migrations at certain points where it won't read the above
+ # path just yet. As such we must also update the following list of paths.
+ ActiveRecord::Migrator.migrations_paths << path
+ end
+end
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index e0d263f16..cd9bacf68 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -9,6 +9,7 @@ Warden::Manager.after_set_user except: :fetch do |user, warden|
value: session_id,
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
}
end
@@ -18,6 +19,7 @@ Warden::Manager.after_fetch do |user, warden|
value: warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'],
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
}
else
warden.logout
@@ -57,6 +59,8 @@ module Devise
@@ldap_password = nil
mattr_accessor :ldap_tls_no_verify
@@ldap_tls_no_verify = false
+ mattr_accessor :ldap_search_filter
+ @@ldap_search_filter = nil
class Strategies::PamAuthenticatable
def valid?
@@ -360,5 +364,6 @@ Devise.setup do |config|
config.ldap_password = ENV.fetch('LDAP_PASSWORD')
config.ldap_uid = ENV.fetch('LDAP_UID', 'cn')
config.ldap_tls_no_verify = ENV['LDAP_TLS_NO_VERIFY'] == 'true'
+ config.ldap_search_filter = ENV.fetch('LDAP_SEARCH_FILTER', '%{uid}=%{email}')
end
end
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index c134bc5b8..df0205879 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -47,10 +47,10 @@ if ENV['S3_ENABLED'] == 'true'
Paperclip::Attachment.default_options[:url] = ':s3_path_url'
end
- if ENV.has_key?('S3_CLOUDFRONT_HOST')
+ if ENV.has_key?('S3_ALIAS_HOST') || ENV.has_key?('S3_CLOUDFRONT_HOST')
Paperclip::Attachment.default_options.merge!(
url: ':s3_alias_url',
- s3_host_alias: ENV['S3_CLOUDFRONT_HOST']
+ s3_host_alias: ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST']
)
end
elsif ENV['SWIFT_ENABLED'] == 'true'
@@ -74,14 +74,10 @@ elsif ENV['SWIFT_ENABLED'] == 'true'
fog_public: true
)
else
- require 'fog/local'
-
Paperclip::Attachment.default_options.merge!(
- fog_credentials: {
- provider: 'Local',
- local_root: ENV.fetch('PAPERCLIP_ROOT_PATH') { Rails.root.join('public', 'system') },
- },
- fog_directory: '',
- fog_host: ENV.fetch('PAPERCLIP_ROOT_URL') { '/system' }
+ storage: :filesystem,
+ use_timestamp: true,
+ path: (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename',
+ url: (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename',
)
end
diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/activerecord.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index 006d3e600..838dee15f 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -10,4 +10,4 @@ cs:
status:
attributes:
reblog:
- taken: stavu již existuje
+ taken: příspěvku již existuje
diff --git a/config/locales/activerecord.ka.yml b/config/locales/activerecord.ka.yml
new file mode 100644
index 000000000..cdd4f9c4c
--- /dev/null
+++ b/config/locales/activerecord.ka.yml
@@ -0,0 +1,13 @@
+---
+ka:
+ activerecord:
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: მხოლოდ ასოები, ციფრები და "ქვედა-ტირე"
+ status:
+ attributes:
+ reblog:
+ taken: სტატუსის უკვე არსებობს
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 1a7ac9978..2a2d62a7e 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -6,7 +6,7 @@ ru:
account:
attributes:
username:
- invalid: только буквы, цифры и символ подеркивания
+ invalid: только буквы, цифры и символ подчёркивания
status:
attributes:
reblog:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index c1d7cca58..e32dac715 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -1,25 +1,25 @@
---
ar:
about:
- about_hashtag_html: هذه هي الرسائل العامة مع الكلمات الدلالية
1#%{hashtag}. يمكنك التفاعل معهم إذا كان لديك حساب في أي مكان على الإنترنت المتحد.
- about_mastodon_html: ماستدون شبكة إجتماعية
حرة و مفتوحة المصدر. هو بديل
لامركزي لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في
الشبكات الاجتماعية بكل شفافية.
+ about_hashtag_html: هذه تبويقات متاحة للجمهور تحتوي على الكلمات الدلالية
#%{hashtag}. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس.
+ about_mastodon_html: ماستدون شبكة إجتماعية مبنية على أسُس بروتوكولات برمجيات الويب الحرة و مفتوحة المصدر. و هو لامركزي تمامًا كالبريد الإلكتروني.
about_this: عن مثيل الخادوم هذا
- administered_by: 'يديره :'
- closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا.
+ administered_by: 'يُديره :'
+ api: واجهة برمجة التطبيقات
+ apps: تطبيقات الأجهزة المحمولة
+ closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا. غير أنه بامكانك العثور على خادم آخر لإنشاء حسابك و مِن ثم النفاذ إلى نفس الشبكة مِن هناك.
contact: للتواصل معنا
- contact_missing: غير محدد
+ contact_missing: لم يتم تعيينه
contact_unavailable: غير متوفر
- description_headline: ما هو %{domain}?
- domain_count_after: خوادم أخرى
- domain_count_before: متصل بـ
+ documentation: الدليل
extended_description_html: |
مكان جيد للقواعد
-
لا يوجد تفصيل طويل حتى الآن.
+
لم يتم بعد إدخال الوصف الطويل.
features:
humane_approach_body: تعلُّمًا مِن فشل الشبكات الأخرى، غاية ماستدون هي بلوغ الخيارات الأخلاقية في التصميم لمُحارَبة إسائة إستعمال شبكات التواصل الإجتماعية.
- humane_approach_title: أسلوب يعيد الإعتبار للإنسان
+ humane_approach_title: أسلوب يُعيد الإعتبار للفَرد
not_a_product_body: ماستدون ليس شبكة تجارية. لا يحتوي على إعلانات و لا يقوم باستغلال البيانات و لا هو بِبُستان مُسيَّج. لا تحكم فيه وليس له أية هيئةٍ مركزيةٍ.
- not_a_product_title: إنك إنسان و لست سلعة
+ not_a_product_title: إنك فرد و لست سلعة
real_conversation_body: يُمكنكم التعبير عن آرائكم بكل حرية بفضل 500 حرف و انتقاء دقيق للمحتوى و الوسائط بفضل أدوات التحذير التي هي بين أيديكم.
real_conversation_title: مبني لتحقيق تواصل حقيقي
within_reach_body: إبقوا على اتصال دائم بأصدقائكم حيثما كانوا عبر عدة تطبيقات لنظام آي أواس و أندرويد و عدة منصات أخرى بفضل واجهة برمجية للتطبيقات و بيئة صديقة للتطوير.
@@ -28,25 +28,30 @@ ar:
hosted_on: ماستدون مُستضاف على %{domain}
learn_more: تعلم المزيد
other_instances: خوادم أخرى
+ privacy_policy: سياسة الخصوصية
source_code: الشفرة المصدرية
status_count_after: منشورا
status_count_before: نشروا
+ terms: شروط الخدمة
user_count_after: مستخدم
user_count_before: يستضيف
what_is_mastodon: ما هو ماستدون ؟
accounts:
+ choices_html: 'توصيات %{name} :'
follow: إتبع
followers: متابِعون
following: يتابعون
+ joined: انضم·ت في %{date}
media: الوسائط
moved_html: "%{name} إنتقلَ إلى %{new_profile_link} :"
network_hidden: إنّ المعطيات غير متوفرة
nothing_here: لا يوجد أي شيء هنا !
people_followed_by: الأشخاص الذين يتبعهم %{name}
people_who_follow: الأشخاص الذين يتبعون %{name}
+ pin_errors:
+ following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه
posts: منشورات
posts_with_replies: التبويقات و الردود
- remote_follow: إتبع عن بعد
reserved_username: إسم المستخدم محجوز
roles:
admin: المدير
@@ -180,6 +185,7 @@ ar:
unsuspend_account: لقد قام %{name} بإلغاء التعليق المفروض على حساب %{target}
update_custom_emoji: "%{name} قام بتحديث الإيموجي %{target}"
update_status: لقد قام %{name} بتحديث منشور %{target}
+ deleted_status: "(منشور محذوف)"
title: سِجلّ التفتيش و المعاينة
custom_emojis:
by_domain: النطاق
@@ -206,6 +212,27 @@ ar:
update_failed_msg: تعذرت عملية تحذيث ذاك الإيموجي
updated_msg: تم تحديث الإيموجي بنجاح !
upload: رفع
+ dashboard:
+ backlog: الأعمال المتراكمة
+ config: الإعداد
+ feature_deletions: الحسابات المحذوفة
+ feature_invites: روابط الدعوات
+ feature_registrations: التسجيلات
+ feature_relay: المُرحّل الفديرالي
+ features: الميّزات
+ hidden_service: الفيديرالية مع الخدمات الخفية
+ open_reports: فتح التقريرات
+ recent_users: أحدث المستخدِمين
+ search: البحث النصي الكامل
+ single_user_mode: وضع المستخدِم الأوحد
+ software: البرنامج
+ space: المساحة المستخدَمة
+ title: لوح المراقبة
+ total_users: إجمالي المستخدِمين
+ trends: المؤشرات
+ week_interactions: تفاعُلات هذا الأسبوع
+ week_users_active: نشط هذا الأسبوع
+ week_users_new: مستخدِمين هذا الأسبوع
domain_blocks:
add_new: إضافة نطاق جديد
created_msg: إنّ حجب النطاق حيز التشغيل
@@ -255,12 +282,20 @@ ar:
search: البحث
title: مثيلات الخوادم المعروفة
invites:
+ deactivate_all: تعطيلها كافة
filter:
all: الكل
available: المتوفرة
expired: المنتهي صلاحيتها
title: التصفية
title: الدعوات
+ relays:
+ add_new: إضافة مُرحّل جديد
+ enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومك في جميع التبويقات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة التبويقات العمومية إليه.
+ inbox_url: رابط المُرحّل
+ setup: إعداد اتصال بمُرحّل
+ status: الحالة
+ title: المُرحّلات
report_notes:
created_msg: |-
41/5000
@@ -318,6 +353,8 @@ ar:
peers_api_enabled:
desc_html: أسماء النطاقات التي إلتقى بها مثيل الخادوم على البيئة الموحَّدة فيديفرس
title: نشر عدد مثيلات الخوادم التي تم مصادفتها
+ preview_sensitive_media:
+ title: إظهار الصور الحساسة في مُعاينات أوبن غراف
registrations:
closed_message:
desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML
@@ -338,11 +375,14 @@ ar:
desc_html: عرض شارة الموظفين على صفحة المستخدم
title: إظهار شارة الموظفين
site_description:
- desc_html: فقرة تمهيدية على الصفحة الأولى وفي العلامات الوصفية. يمكنك استخدام علامات HTML ، ولا سيما
<a>
و
<em>
.
+ desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما
<a>
و
<em>
.
title: وصف مثيل الخادوم
site_description_extended:
desc_html: مكان جيد لمدونة قواعد السلوك والقواعد والإرشادات وغيرها من الأمور التي تحدد حالتك. يمكنك استخدام علامات HTML
title: الوصف المُفصّل للموقع
+ site_short_description:
+ desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الإفتراضي لمثيل الخادوم.
+ title: مقدمة وصفية قصيرة عن مثيل الخادوم
site_terms:
desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
title: شروط الخدمة المخصصة
@@ -364,6 +404,7 @@ ar:
media:
title: الوسائط
no_media: لا يوجد وسائط
+ no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد
title: منشورات الحساب
with_media: بالوسائط
subscriptions:
@@ -495,10 +536,15 @@ ar:
success:
one: جارية عملية حظر المتابِعين بسلاسة من نطاق آخر ...
other: جارية عملية حظر المتابِعين بسلاسة من %{count} نطاقات أخرى ...
+ true_privacy_html: تذكر دائمًا أنّ
الخصوصية التامة لا يمكن بلوغها إلّا بالتعمية و التشفير من طرف إلى آخَر.
+ unlocked_warning_html: يمكن لأي كان متابعة حسابك و الإطلاع مباشرة على تبويقاتك. إستخدِم %{lock_link} لمُعاينة أو رفض طلبات المتابِعين الجُدُد.
unlocked_warning_title: إنّ حسابك غير مقفل
+ footer:
+ developers: المطورون
+ more: المزيد …
+ resources: الموارد
generic:
changes_saved_msg: تم حفظ التعديلات بنجاح !
- powered_by: مدعوم بـ %{link}
save_changes: حفظ التغييرات
validation_errors:
one: لا يزال هناك خلل ما إلى حد الآن. يُرجى إعادة النظر في الخطأ أسفله
@@ -511,6 +557,7 @@ ar:
following: قائمة المستخدمين المتبوعين
muting: قائمة الكتم
upload: تحميل
+ in_memoriam_html: في ذكرى.
invites:
delete: تعطيل
expired: إنتهت صلاحيتها
@@ -533,8 +580,6 @@ ar:
expires_at: تنتهي مدة صلاحيتها في
uses: يستخدِم
title: دعوة أشخاص
- landing_strip_html: "
%{name} هو أحد مُستخدِمي %{link_to_root_path}. بإمكانك متابعته أو التواصل معه إن كنت تملك حسابًا أيا كان على البيئة الموحَّدة فيديفرس."
- landing_strip_signup_html: إن كنت لا تملك واحدا، يمكنك
التسجيل مِن هنا.
lists:
errors:
limit: لقد بلغت الحد الأقصى للقوائم
@@ -606,11 +651,14 @@ ar:
publishing: النشر
web: الويب
remote_follow:
- acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود المتابعة
+ acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط
missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك
no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك
التسجيل مِن هنا
proceed: أكمل المتابعة
prompt: 'إنك بصدد متابعة :'
+ remote_interaction:
+ proceed: إبدأ التفاعل
+ prompt: 'تريد التفاعُل مع هذا التبويق:'
remote_unfollow:
error: خطأ
title: العنوان
@@ -680,6 +728,7 @@ ar:
video:
one: "%{count} فيديو"
other: "%{count} فيديوهات"
+ boosted_from_html: تم إعادة ترقيته مِن %{acct_link}
content_warning: 'تحذير عن المحتوى : %{warning}'
disallowed_hashtags:
one: 'يحتوي على وسم ممنوع : %{tags}'
@@ -690,9 +739,10 @@ ar:
pin_errors:
limit: لقد بلغت الحد الأقصى للتبويقات المدبسة
ownership: لا يمكن تدبيس تبويق نشره شخص آخر
- private: لا يمكن تثبيت تبويق لم يُنشر للعامة
+ private: لا يمكن تدبيس تبويق لم يُنشر للعامة
reblog: لا يمكن تثبيت ترقية
show_more: أظهر المزيد
+ sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
title: '%{name} : "%{quote}"'
visibilities:
private: إعرض فقط لمتتبعيك
@@ -702,7 +752,6 @@ ar:
unlisted: غير مُدرَج
unlisted_long: يُمكن لأيٍ كان رُؤيتَه و لكن لن يُعرَض على الخيوط العامة
stream_entries:
- click_to_show: إضغط للعرض
pinned: تبويق مثبّت
reblogged: رقى
sensitive_content: محتوى حساس
@@ -715,6 +764,7 @@ ar:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: قم بإدخال الرمز المُوَلّد عبر تطبيق المصادقة للتأكيد
description_html: في حال تفعيل
المصادقة بخطوتين ، فتسجيل الدخول يتطلب منك أن يكون بحوزتك هاتفك النقال قصد توليد الرمز الذي سيتم إدخاله.
@@ -724,6 +774,7 @@ ar:
enabled_success: تم تفعيل المصادقة بخطوتين بنجاح
generate_recovery_codes: توليد رموز الإسترجاع
instructions_html: "
قم بمسح رمز الكيو آر عبر Google Authenticator أو أي تطبيق TOTP على جهازك. من الآن فصاعدا سوف يقوم ذاك التطبيق بتوليد رموز يجب عليك إدخالها عند تسجيل الدخول."
+ lost_recovery_codes: تُمكّنك رموز الإسترجاع الإحتاطية مِن استرجاع النفاذ إلى حسابك في حالة فقدان جهازك المحمول. إن ضاعت منك هذه الرموز فبإمكانك إعادة توليدها مِن هنا و إبطال الرموز القديمة.
manual_instructions: 'في حالة تعذّر مسح رمز الكيو آر أو طُلب منك إدخال يدوي، يُمْكِنك إدخال هذا النص السري على التطبيق :'
recovery_codes: النسخ الإحتياطي لرموز الإسترجاع
recovery_codes_regenerated: تم إعادة توليد رموز الإسترجاع الإحتياطية بنجاح
@@ -731,16 +782,22 @@ ar:
wrong_code: الرمز الذي أدخلته غير صالح ! تحقق من صحة الوقت على الخادم و الجهاز ؟
user_mailer:
backup_ready:
- explanation: ''
+ explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل !
subject: نسخة بيانات حسابك جاهزة للتنزيل
title: المغادرة بأرشيف الحساب
welcome:
edit_profile_action: تهيئة الملف الشخصي
explanation: ها هي بعض النصائح قبل بداية الإستخدام
final_action: اشرَع في النشر
+ final_step: |-
+ يمكنك الشروع في النشر في الحين ! حتى و إن لم كنت لا تمتلك متابِعين بعدُ، يمكن للآخرين الإطلاع على منشوراتك الموجهة للجمهور على الخيط المحلي أو إن قمت باستخدام وسوم.
+ إبدأ بتقديم نفسك باستعمال وسم #introductions.
full_handle: عنوانك الكامل
+ full_handle_hint: هذا هو ما يجب تقديمه لأصدقائك قصد أن يكون بإمكانهم متابَعتك أو مُراسَلتك حتى و إن كانت حساباتهم على خوادم أخرى.
review_preferences_action: تعديل التفضيلات
subject: أهلًا بك على ماستدون
+ tip_bridge_html: إن كنت قادما مِن تويتر، باستطاعتك العثور على أصدقائك على ماستدون باستخدام
تطبيق الجسر بشرط أن يكون أصدقاؤك قد سجلوا حساباتهم على الجسر مِن قبل، و إلّا فلن تنجح العملية !
+ tip_following: أنت تتبع تلقائيا مديري و مديرات الخادم. للعثور على أشخاص مميزين أو قد تهمك حساباتهم بإمكانك الإطلاع على الخيوط المحلية و كذا الفدرالية.
tips: نصائح
title: أهلاً بك، %{name} !
users:
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
new file mode 100644
index 000000000..9cc80ef16
--- /dev/null
+++ b/config/locales/ast.yml
@@ -0,0 +1,282 @@
+---
+ast:
+ about:
+ about_mastodon_html: Mastodon ye una rede social basada en protocolos abiertos y software de códigu llibre. Ye descentralizada, como'l corréu electrónicu.
+ about_this: Tocante a
+ administered_by: 'Alministráu por:'
+ contact: Contautu
+ contact_unavailable: N/D
+ extended_description_html: |
+
Un llugar bonu pa les regles
+
Entá nun se configuró la descripción estendida.
+ features:
+ humane_approach_title: Una visión más humana
+ not_a_product_body: Mastodon nun ye una rede comercial, nun hai anuncios, nun recueye datos o nun pon muries a xardinos. Nin siquier tien una autoridá central.
+ not_a_product_title: Yes una persona, non un productu
+ real_conversation_title: Fechu pa conversaciones de verdá
+ within_reach_title: Siempres al algame
+ hosted_on: Mastodon ta agospiáu en %{domain}
+ learn_more: Deprendi más
+ source_code: Códigu fonte
+ status_count_after: estaos
+ user_count_after: usuarios
+ what_is_mastodon: "¿Qué ye Mastodon?"
+ accounts:
+ followers: Siguidores
+ moved_html: "%{name} mudóse a %{new_profile_link}:"
+ network_hidden: Esta información nun ta disponible
+ nothing_here: "¡Equí nun hai nada!"
+ people_followed_by: Persones a les que sigue %{name}
+ people_who_follow: Persones que siguen a %{name}
+ reserved_username: El nome d'usuariu ta acutáu
+ roles:
+ bot: Robó
+ admin:
+ accounts:
+ are_you_sure: "¿De xuru?"
+ avatar: Avatar
+ by_domain: Dominiu
+ domain: Dominiu
+ email: Corréu
+ followers: Siguidores
+ ip: IP
+ location:
+ local: Llocal
+ title: Allugamientu
+ protocol: Protocolu
+ resend_confirmation:
+ already_confirmed: Esti usuariu yá ta confirmáu
+ role: Permisos
+ roles:
+ admin: Alministrador
+ moderator: Llendador
+ user: Usuariu
+ title: Cuentes
+ username: Nome d'usuariu
+ web: Web
+ action_logs:
+ actions:
+ create_domain_block: "%{name} bloquió'l dominiu %{target}"
+ disable_user: "%{name} desactivó l'aniciu de sesión del usuariu %{target}"
+ custom_emojis:
+ by_domain: Dominiu
+ copy_failed_msg: Nun pudo facese una copia llocal d'esi fustaxe
+ emoji: Fustaxe
+ update_failed_msg: Nun pudo anovase esi fustaxe
+ dashboard:
+ config: Configuración
+ feature_registrations: Rexistros
+ features: Carauterístiques
+ hidden_service: Federación con servicios anubríos
+ recent_users: Usuarios recientes
+ software: Software
+ total_users: usuarios en total
+ week_interactions: interaiciones d'esta selmana
+ week_users_new: usuarios d'esta selmana
+ domain_blocks:
+ domain: Dominiu
+ email_domain_blocks:
+ domain: Dominiu
+ instances:
+ account_count: Cuentes conocíes
+ domain_name: Dominiu
+ title: Instancies conocíes
+ invites:
+ filter:
+ available: Disponible
+ expired: Caducó
+ title: Invitaciones
+ reports:
+ are_you_sure: "¿De xuru?"
+ id: ID
+ status: Estáu
+ settings:
+ registrations:
+ min_invite_role:
+ disabled: Naide
+ site_description:
+ title: Descipción de la instancia
+ site_title: Nome de la instancia
+ title: Axustes del sitiu
+ statuses:
+ failed_to_execute: Fallu al executar
+ subscriptions:
+ title: WebSub
+ title: Alministración
+ admin_mailer:
+ new_report:
+ body_remote: Daquién dende %{domain} informó de %{target}
+ application_mailer:
+ salutation: "%{name},"
+ applications:
+ invalid_url: La URL apurrida nun ye válida
+ warning: Ten curiáu con estos datos, ¡enxamás nun los compartas con naide!
+ auth:
+ change_password: Contraseña
+ delete_account_html: Si deseyes desaniciar la to cuenta, pues
siguir equí. Va pidísete la confirmación.
+ forgot_password: "¿Escaeciesti la contraseña?"
+ providers:
+ cas: CAS
+ saml: SAML
+ security: Seguranza
+ authorize_follow:
+ already_following: Yá tas siguiendo a esta cuenta
+ error: Desafortunadamente, hebo un fallu guetando la cuenta remota
+ follow_request: 'Unviesti una solicitú de siguimientu a:'
+ post_follow:
+ close: O pues zarrar esta ventana.
+ return: Amosar el perfil del usuariu
+ web: Dir a la web
+ datetime:
+ distance_in_words:
+ half_a_minute: Púramente agora
+ less_than_x_seconds: Púramente agora
+ deletes:
+ bad_password_msg: "¡Bon intentu, crackers! Contraseña incorreuta"
+ confirm_password: Introduz la contraseña pa verificar la to identidá
+ errors:
+ '403': Nun tienes permisu pa ver esta páxina.
+ '404': La páxina que tabes guetando nun esiste.
+ '410': La páxina que tabes guetando yá nun esiste.
+ '422':
+ content: Falló la verificación de seguranza. ¿Tas bloquiando les cookies?
+ title: Falló la verificación de seguranza
+ '429': Ficiéronse milenta solicitúes
+ exports:
+ archive_takeout:
+ date: Data
+ hint_html: Pues solicitar un archivu colos tos
toots y ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes.
+ size: Tamañu
+ csv: CSV
+ filters:
+ contexts:
+ public: Llinies temporales públiques
+ thread: Conversaciones
+ followers:
+ domain: Dominiu
+ followers_count: Númberu de siguidores
+ invites:
+ expires_in:
+ '1800': 30 minutos
+ '21600': 6 hores
+ '3600': 1 hora
+ '43200': 12 hores
+ '604800': 1 selmana
+ '86400': 1 día
+ expires_in_prompt: Enxamás
+ invited_by: 'Convidóte:'
+ max_uses:
+ one: 1 usu
+ other: "%{count} usos"
+ table:
+ uses: Usos
+ lists:
+ errors:
+ limit: Algamesti la cantidá máxima de llistes
+ media_attachments:
+ validations:
+ images_and_video: Nun pue axuntase un videu a un estáu que yá contién imáxenes
+ too_many: Nun puen axuntase más de 4 ficheros
+ migrations:
+ acct: nome_usuariu@dominiu de la cuenta nueva
+ notification_mailer:
+ digest:
+ mention: "%{name} mentóte en:"
+ subject:
+ other: "%{count} avisos nuevos dende la última visita \U0001F418"
+ follow:
+ body: "¡Agora %{name} ta siguiéndote!"
+ title: Siguidor nuevu
+ follow_request:
+ body: "%{name} solicitó siguite"
+ title: Petición nueva de siguimientu
+ mention:
+ body: "%{name} mentóte en:"
+ subject: "%{name} mentóte"
+ title: Mención nueva
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ pagination:
+ next: Siguiente
+ preferences:
+ languages: Llingües
+ web: Web
+ remote_follow:
+ no_account_html: "¿Nun tienes una cuenta? Pues
rexistrate equí"
+ prompt: 'Vas siguir a:'
+ remote_unfollow:
+ error: Fallu
+ sessions:
+ browser: Restolador
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Restolador desconocíu
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Sesión actual
+ description: "%{browser} en %{platform}"
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: plataforma desconocida
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ title: Sesiones
+ settings:
+ authorized_apps: Aplicaciones autorizaes
+ back: Volver a Mastodon
+ edit_profile: Edición del perfil
+ notifications: Avisos
+ preferences: Preferencies
+ settings: Axustes
+ statuses:
+ attached:
+ image:
+ one: "%{count} imaxe"
+ other: "%{count} imáxenes"
+ video:
+ one: "%{count} videu"
+ other: "%{count} vídeos"
+ pin_errors:
+ limit: Yá fixesti'l númberu máxiumu de toots
+ show_more: Amosar más
+ title: "%{name}: «%{quote}»"
+ stream_entries:
+ sensitive_content: Conteníu sensible
+ themes:
+ default: Mastodon
+ two_factor_authentication:
+ code_hint: Introduz el códigu xeneráu pola aplicación autenticadora pa confirmar
+ enabled: L'autenticación en dos pasos ta activada
+ enabled_success: L'autenticación en dos pasos activóse con ésitu
+ manual_instructions: 'Si nun pues escaniar el códigu QR y precises introducilu a mano, equí ta''l secretu en testu planu:'
+ user_mailer:
+ welcome:
+ full_handle_hint: Esto ye lo que-yos diríes a los collacios pa que puean unviate mensaxes o siguite dende otra instancia.
+ subject: Afáyate en Mastodon
+ tips: Conseyos
+ users:
+ invalid_email: La direición de corréu nun ye válida
+ seamless_external_login: Aniciesti sesión pente un serviciu esternu, polo que los axustes de la contraseña y corréu nun tán disponibles.
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index cb3ed2244..8c11ac7b7 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -5,9 +5,6 @@ bg:
about_this: За тази инстанция
closed_registrations: В момента регистрациите за тази инстанция са затворени.
contact: За контакти
- description_headline: Какво е %{domain}?
- domain_count_after: други инстанции
- domain_count_before: Свързани към
other_instances: Други инстанции
source_code: Програмен код
status_count_after: публикации
@@ -22,7 +19,6 @@ bg:
people_followed_by: Хора, които %{name} следва
people_who_follow: Хора, които следват %{name}
posts: Публикации
- remote_follow: Последвай
unfollow: Не следвай
application_mailer:
settings: 'Промяна на предпочитанията за e-mail: %{link}'
@@ -64,7 +60,6 @@ bg:
storage: Съхранение на мултимедия
generic:
changes_saved_msg: Успешно запазване на промените!
- powered_by: поддържано от %{link}
save_changes: Запази промените
validation_errors:
one: Нещо все още не е наред! Моля, прегледай грешката по-долу
@@ -76,8 +71,6 @@ bg:
blocking: Списък на блокираните
following: Списък на последователите
upload: Качване
- landing_strip_html: "
%{name} е потребител от %{link_to_root_path}. Можеш да ги следваш, или да контактуваш с тях, ако имаш акаунт където и да е из федерираната вселена на Mastodon."
- landing_strip_signup_html: Ако нямаш акаунт, можеш да си
създадеш ето тук.
media_attachments:
validations:
images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения
@@ -144,7 +137,6 @@ bg:
public: Публично
unlisted: Публично, но не показвай в публичния канал
stream_entries:
- click_to_show: Покажи
reblogged: споделено
sensitive_content: Деликатно съдържание
time:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 45430f541..41c35e79b 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -9,9 +9,6 @@ ca:
contact: Contacte
contact_missing: No configurat
contact_unavailable: N/D
- description_headline: Què es %{domain}?
- domain_count_after: altres instàncies
- domain_count_before: Connectada a
extended_description_html: |
Un bon lloc per les regles
Encara no s'ha configurat la descripció ampliada.
@@ -46,7 +43,6 @@ ca:
people_who_follow: Usuaris que segueixen %{name}
posts: Toots
posts_with_replies: Toots i respostes
- remote_follow: Seguiment remot
reserved_username: El nom d'usuari està reservat
roles:
admin: Administrador
@@ -504,7 +500,6 @@ ca:
unlocked_warning_title: El teu compte no està blocat
generic:
changes_saved_msg: Els canvis s'han desat correctament!
- powered_by: amb tecnologia %{link}
save_changes: Desa els canvis
validation_errors:
one: Alguna cosa no va bé! Si us plau, revisa l'error
@@ -540,8 +535,6 @@ ca:
expires_at: Caduca
uses: Usos
title: Convida persones
- landing_strip_html: "
%{name} és un usuari/a de %{link_to_root_path}. Pots seguir-lo/la o interactuar amb ell/a si tens un compte a qualsevol node del fediverse."
- landing_strip_signup_html: Si no en tens, pots
registrar-te aquí.
lists:
errors:
limit: Has assolit la quantitat màxima de llistes
@@ -710,7 +703,6 @@ ca:
unlisted: No llistat
unlisted_long: Tothom ho pot veure, però no es mostra en la història federada
stream_entries:
- click_to_show: Clic per mostrar
pinned: Toot fixat
reblogged: ha impulsat
sensitive_content: Contingut sensible
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 6608f05a9..bb0ae8134 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -5,13 +5,12 @@ co:
about_mastodon_html: Mastodon ghjè una rete suciale custruita incù prutucolli web aperti è lugiziali liberi. Hè decentralizatu cumu l’e-mail.
about_this: À prupositu
administered_by: 'Amministratu da:'
+ api: API
closed_registrations: Pè avà, l’arregistramenti sò chjosi nant’à st’istanza. Mà pudete truvà un’altr’istanza per fà un contu è avè accessu à listessa reta da quallà.
contact: Cuntattu
contact_missing: Mancante
contact_unavailable: Micca dispunibule
- description_headline: Quale hè %{domain} ?
- domain_count_after: altre istanze
- domain_count_before: Cunnettati à
+ documentation: Ducumentazione
extended_description_html: |
Una bona piazza per e regule
A descrizzione stesa ùn hè micca stata riempiuta.
@@ -28,9 +27,11 @@ co:
hosted_on: Mastodon allughjatu nant’à %{domain}
learn_more: Amparà di più
other_instances: Lista di l’istanze
+ privacy_policy: Pulitica di vita privata
source_code: Codice di fonte
status_count_after: statuti
status_count_before: chì anu pubblicatu
+ terms: Cundizione di u serviziu
user_count_after: parsone quì
user_count_before: Ci sò
what_is_mastodon: Quale hè Mastodon?
@@ -46,7 +47,6 @@ co:
people_who_follow: Seguitanu %{name}
posts: Statuti
posts_with_replies: Statuti è risposte
- remote_follow: Siguità d’altrò
reserved_username: Stu cugnome hè riservatu
roles:
admin: Amministratore
@@ -206,6 +206,25 @@ co:
update_failed_msg: Ùn s’hè micca pussutu mette à ghjornu l’emoji
updated_msg: L’emoji hè stata messa à ghjornu!
upload: Caricà
+ dashboard:
+ config: Cunfigurazione
+ feature_deletions: Sguassamenti di conti
+ feature_invites: Ligami d'invitazione
+ feature_registrations: Arregistramenti
+ feature_relay: Ripetitore di federazione
+ features: Funziunalità
+ hidden_service: Federazione cù servizii piattati
+ open_reports: signalamenti aperti
+ recent_users: Utilizatori ricenti
+ search: Ricerca di testu sanu
+ single_user_mode: Modu utilizatore unicu
+ software: Lugiziale
+ space: Usu di u spaziu
+ total_users: utilizatori in tutale
+ trends: Tindenze
+ week_interactions: interazzione sta settimana
+ week_users_active: attivi sta settimana
+ week_users_new: utilizatori sta settimana
domain_blocks:
add_new: Aghjustà
created_msg: U blucchime di u duminiu hè attivu
@@ -261,6 +280,14 @@ co:
expired: Spirati
title: Filtrà
title: Invitazione
+ relays:
+ add_new: Aghjustà un ripetitore
+ description_html: Un
ripetitore di federazione ghjè un servore intermediariu chì manda statuti pubblichi trà l'istanze abbunate.
Pò aiutà l'istanze chjuche è mezane à scuprì u cuntinutu di u fediverse senza chì l'utilizatori appianu bisognu di seguità tutti i conti di l'altri servori.
+ enable_hint: Quandu sarà attivatu, u vostru servore hà da seguità i statuti pubblichi di u ripetitore, è mandarà i so statuti pubblichi quallà.
+ inbox_url: URL di u ripetitore
+ setup: Creà una cunnessione cù un ripetitore
+ status: Statutu
+ title: Ripetitori
report_notes:
created_msg: Nota di signalamentu creata!
destroyed_msg: Nota di signalamentu sguassata!
@@ -321,7 +348,7 @@ co:
desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML
title: Missaghju per l’arregistramenti chjosi
deletion:
- desc_html: Auturizà tuttu u mondu di sguassà u so propiu contu
+ desc_html: Auturizà tuttu u mondu à sguassà u so propiu contu
title: Auturizà à sguassà i conti
min_invite_role:
disabled: Nisunu
@@ -336,11 +363,13 @@ co:
desc_html: Mustrerà un badge Squadra nant’à un prufile d’utilizatore
title: Mustrà un badge staff
site_description:
- desc_html: Paragrafu di prisentazione nant’a pagina d’accolta è i marchi meta. Pudete fà usu di marchi HTML, in particulare
<a>
è
<em>
.
+ desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare
<a>
è
<em>
.
title: Discrizzione di l’istanza
site_description_extended:
desc_html: Una bona piazza per e regule, infurmazione è altre cose chì l’utilizatori duverìanu sapè. Pudete fà usu di marchi HTML
title: Discrizzione stesa di u situ
+ site_short_description:
+ title: Descrizzione corta di l'istanza
site_terms:
desc_html: Quì pudete scrive e vostre regule di cunfidenzialità, cundizione d’usu o altre menzione legale. Pudete fà usu di marchi HTML
title: Termini persunalizati
@@ -424,7 +453,7 @@ co:
following: 'Eccu! Avà seguitate:'
post_follow:
close: O pudete ancu chjude sta finestra.
- return: Rivultà à u prufile di l’utilizatore
+ return: Vede u prufile di l’utilizatore
web: Andà à l’interfaccia web
title: Siguità %{acct}
datetime:
@@ -474,6 +503,20 @@ co:
follows: Seguitate
mutes: Piattate
storage: I vostri media
+ filters:
+ contexts:
+ notifications: Nutificazione
+ public: Linee pubbliche
+ thread: Cunversazione
+ edit:
+ title: Mudificà u filtru
+ errors:
+ invalid_context: Micca abbastanza cuntestu
+ index:
+ delete: Toglie
+ title: Filtri
+ new:
+ title: Aghjustà un novu filtru
followers:
domain: Duminiu
explanation_html: Per assicuravi di a cunfidenzialità di i vostri statuti, duvete avè primura di quale vi seguita.
I vostri statuti privati sò mandati à tutte l’istanze induve avete abbunati. Pensate à u vostru livellu di cunfidenza in i so amministratori.
@@ -486,9 +529,12 @@ co:
true_privacy_html: Ùn vi scurdate chì
una vera cunfidenzialità pò solu esse ottenuta cù crittografia da un capu à l’altru.
unlocked_warning_html: Tuttu u mondu pò seguitavi è vede i vostri statuti privati. %{lock_link} per pudè cunfirmà o righjittà abbunamenti.
unlocked_warning_title: U vostru contu hè pubblicu
+ footer:
+ developers: Sviluppatori
+ more: Di più…
+ resources: Risorze
generic:
changes_saved_msg: Cambiamenti salvati!
- powered_by: mossu da %{link}
save_changes: Salvà e mudificazione
validation_errors:
one: Qualcosa ùn và bè! Verificate u prublemu quì sottu
@@ -514,6 +560,7 @@ co:
'86400': 1 ghjornu
expires_in_prompt: Mai
generate: Creà
+ invited_by: 'Site statu·a invitatu·a da:'
max_uses:
one: 1 usu
other: "%{count} usi"
@@ -523,8 +570,6 @@ co:
expires_at: Spira
uses: Utiliza
title: Invità ghjente
- landing_strip_html: "
%{name} hè nant’à %{link_to_root_path}. Pudete seguitallu·a o cumunicà cù ellu·a cù un contu in qualche parte di u fediverse."
- landing_strip_signup_html: Pudete ancu
arrigistravi quì.
lists:
errors:
limit: Ùn pudete più creà altre liste
@@ -598,6 +643,7 @@ co:
remote_follow:
acct: Entrate u vostru cugnome@istanza da induve vulete siguità stu contu
missing_resource: Ùn avemu pussutu à truvà l’indirizzu di ridirezzione
+ no_account_html: Ùn avete micca un contu? Pudete
arregistravi quì
proceed: Cuntinuà per siguità
prompt: 'Avete da siguità:'
remote_unfollow:
@@ -674,6 +720,7 @@ co:
disallowed_hashtags:
one: 'cuntene l’hashtag disattivatu: %{tags}'
other: 'cuntene l’hashtag disattivati: %{tags}'
+ language_detection: Truvà a lingua autumaticamente
open_in_web: Apre nant’à u web
over_character_limit: Site sopr’à a limita di %{max} caratteri
pin_errors:
@@ -691,7 +738,6 @@ co:
unlisted: Micca listatu
unlisted_long: Tuttu u mondu pò vede, mà micca indè e linee pubbliche
stream_entries:
- click_to_show: Cliccà per vede
pinned: Statutu puntarulatu
reblogged: spartutu
sensitive_content: Cuntenutu sensibile
@@ -704,6 +750,7 @@ co:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Entrate u codice generatu da l’applicazione per cunfirmà
description_html: S’ella hè attivata
l’identificazione à dui fattori, duvete avè u vostru telefuninu pè ottene un codice di cunnezzione.
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 7b6021f13..5f1f415ec 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1,44 +1,901 @@
---
cs:
about:
- about_hashtag_html: Toto jsou veřejné příspěvky typu označené jako
#%{hashtag}. Pokud máte účet kdekoliv na fediverse, můžete s nimi interagovat.
+ about_hashtag_html: Toto jsou veřejné tooty označené hashtagem
#%{hashtag}. Pokud máte účet kdekoliv na fediverse, můžete s nimi interagovat.
about_mastodon_html: Mastodon je sociální síť založená na otevřených webových protokolech a svobodném, otevřeném softwaru. Je decentrovalizovaná jako e-mail.
about_this: O této instanci
administered_by: 'Server spravuje:'
+ api: API
+ apps: Mobilní aplikace
closed_registrations: Registrace na této instanci jsou momentálně uzavřené. Můžete si však najít jinou instanci, vytvořit si na ní účet a získat z ní přístup do naprosto stejné sítě.
contact: Kontakt
contact_missing: Nenastaveno
contact_unavailable: Neuvedeno
- description_headline: Co je %{domain}?
- domain_count_after: dalším instancím
- domain_count_before: Připojeno k
+ documentation: Dokumentace
extended_description_html: |
Dobré místo pro pravidla
Rozšířený popis ještě nebyl nastaven.
features:
humane_approach_body: Mastodon, poučen z chyb jiných sociálních sítí, se snaží bojovat se zneužíváním sociálních sítí vytvářením etických možností.
humane_approach_title: Lidštější přístup
- not_a_product_title: Jste osoba, ne produkt.
+ not_a_product_body: Mastodon není komerční síť. Žádné reklamy, žádné dolování dat, žádné hranice. Žádná centrální autorita.
+ not_a_product_title: Jste osoba, ne produkt
+ real_conversation_body: S 500 znaky k vaší dispozici a podporou pro varování o obsahu a médiích se můžete vyjadřovat tak, jak chcete.
+ real_conversation_title: Vytvořen pro opravdovou konverzaci
+ within_reach_body: Několik aplikací pro iOS, Android a jiné platformy vám díky jednoduchému API ekosystému dovolují držet krok s vašimi přáteli, ať už jste kdekoliv.
+ within_reach_title: Vždy v dosahu
generic_description: "%{domain} je jedním serverem v síti"
+ hosted_on: Mastodon hostovaný na %{domain}
learn_more: Zjistit více
+ other_instances: Seznam instancí
+ privacy_policy: Zásady soukromí
source_code: Zdrojový kód
status_count_after: příspěvků
- status_count_before: Kdo je autorem
+ status_count_before: Kteří napsali
+ terms: Podmínky používání
user_count_after: uživatelů
- user_count_before: Domov pro
+ user_count_before: Domov
what_is_mastodon: Co je Mastodon?
accounts:
+ choices_html: 'Volby uživatele %{name}:'
follow: Sledovat
followers: Sledovatelé
following: Sleduje
+ joined: Připojil/a se %{date}
media: Média
moved_html: 'Účet %{name} byl přesunut na %{new_profile_link}:'
network_hidden: Tato informace není k dispozici
nothing_here: Tady nic není!
+ people_followed_by: Lidé, které %{name} sleduje
+ people_who_follow: Lidé, kteří sledují uživatele %{name}
+ pin_errors:
+ following: Musíte již sledovat osobu, kterou chcete podpořit
+ posts: Tooty
+ posts_with_replies: Tooty a odpovědi
+ reserved_username: Toto uživatelské jméno je rezervováno
+ roles:
+ admin: Administrátor
+ bot: Robot
+ moderator: Moderátor
+ unfollow: Přestat sledovat
+ admin:
+ account_moderation_notes:
+ create: Zanechat poznámku
+ created_msg: Poznámka moderátora byla úspěšně vytvořena!
+ delete: Smazat
+ destroyed_msg: Poznámka moderátora byla úspěšně zničena!
+ accounts:
+ are_you_sure: Jste si jistý/á?
+ avatar: Avatar
+ by_domain: Doména
+ change_email:
+ changed_msg: E-mail k tomuto účtu byl úspěšně změněn!
+ current_email: Současný e-mail
+ label: Změnit e-mail
+ new_email: Nový e-mail
+ submit: Změnit e-mail
+ title: Změnit e-mail pro uživatele %{username}
+ confirm: Potvrdit
+ confirmed: Potvrzeno
+ confirming: Potvrzující
+ demote: Degradovat
+ disable: Zablokovat
+ disable_two_factor_authentication: Zakázat 2FA
+ disabled: Blokováno
+ display_name: Zobrazované jméno
+ domain: Doména
+ edit: Upravit
+ email: E-mail
+ email_status: Stav e-mailu
+ enable: Povolit
+ enabled: Povoleno
+ feed_url: URL proudu
+ followers: Sledovatelé
+ followers_url: URL sledovatelů
+ follows: Sleduje
+ inbox_url: URL přijatých zpráv
+ ip: IP
+ location:
+ all: Vše
+ local: Místní
+ remote: Vzdálené
+ title: Umístění
+ login_status: Stav přihlášení
+ media_attachments: Mediální přílohy
+ memorialize: Změnit na "in memoriam"
+ moderation:
+ all: Vše
+ silenced: Utišen
+ suspended: Suspendován
+ title: Moderace
+ moderation_notes: Moderační poznámky
+ most_recent_activity: Nejnovější aktivita
+ most_recent_ip: Nejnovější IP
+ not_subscribed: Neodebírá
+ order:
+ alphabetic: Abecedně
+ most_recent: Nejnovější
+ title: Pořadí
+ outbox_url: URL odchozích zpráv
+ perform_full_suspension: Provést plnou suspenzaci
+ profile_url: URL profilu
+ promote: Povýšit
+ protocol: Protokol
+ public: Veřejný
+ push_subscription_expires: Odebírání PuSH expiruje
+ redownload: Obnovit avatar
+ remove_avatar: Odstranit avatar
+ resend_confirmation:
+ already_confirmed: Tento uživatel je již potvrzen
+ send: Znovu odeslat potvrzovací e-mail
+ success: Potvrzovací e-mail byl úspěšně odeslán!
+ reset: Resetovat
+ reset_password: Obnovit heslo
+ resubscribe: Znovu odebírat
+ role: Oprávnění
+ roles:
+ admin: Administrátor
+ moderator: Moderátor
+ staff: Personál
+ user: Uživatel
+ salmon_url: URL Salmon
+ search: Hledat
+ shared_inbox_url: URL sdílené schránky
+ show:
+ created_reports: Nahlášení vytvořené z tohoto účtu
+ report: nahlášení
+ targeted_reports: Nahlášení vytvořena o tomto účtu
+ silence: Utišit
+ statuses: Příspěvky
+ subscribe: Odebírat
+ title: Účty
+ unconfirmed_email: Nepotvrzený e-mail
+ undo_silenced: Zrušit utišení
+ undo_suspension: Zrušit suspenzaci
+ unsubscribe: Přestat odebírat
+ username: Uživatelské jméno
+ web: Web
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name} přidělil/a hlášení %{target} sobě"
+ change_email_user: "%{name} změnil/a e-mailovou adresu uživatele %{target}"
+ confirm_user: "%{name} potvrdil/a e-mailovou adresu uživatele %{target}"
+ create_custom_emoji: "%{name} nahrál/a nové emoji %{target}"
+ create_domain_block: "%{name} zablokoval/a doménu %{target}"
+ create_email_domain_block: "%{name} přidal/a e-mailovou doménu %{target} na černou listinu"
+ demote_user: "%{name} degradoval/a uživatele %{target}"
+ 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 příspěvek uživatele %{target}"
+ disable_2fa_user: "%{name} vypnul/a požadavek pro dvoufaktorovou autentikaci 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}"
+ enable_user: "%{name} povolil/a přihlašování pro uživatele %{target}"
+ memorialize_account: '%{name} změnil/a účet %{target} na stránku "in memoriam"'
+ promote_user: "%{name} povýšil/a uživatele %{target}"
+ remove_avatar_user: "%{name} odstranil/a avatar uživatele %{target}"
+ reopen_report: "%{name} znovuotevřel/a nahlášení %{target}"
+ reset_password_user: "%{name} resetoval/a heslo uživatele %{target}"
+ resolve_report: "%{name} vyřešil/a nahlášení %{target}"
+ silence_account: "%{name} utišil/a účet uživatele %{target}"
+ suspend_account: "%{name} suspendoval/a účet uživatele %{target}"
+ unassigned_report: "%{name} odebral/a nahlášení %{target}"
+ unsilence_account: "%{name} odtišil/a účet uživatele %{target}"
+ unsuspend_account: "%{name} zrušil/a suspenzaci účtu uživatele %{target}"
+ update_custom_emoji: "%{name} aktualizoval/a emoji %{target}"
+ update_status: "%{name} aktualizoval/a příspěvek uživatele %{target}"
+ deleted_status: "(smazaný příspěvek)"
+ title: Záznam auditu
+ custom_emojis:
+ by_domain: Doména
+ copied_msg: Místní kopie emoji byla úspěšně vytvořena
+ copy: Kopírovat
+ copy_failed_msg: Nebylo možné vytvořit místní kopii tohoto emoji
+ created_msg: Emoji úspěšně vytvořeno!
+ delete: Smazat
+ destroyed_msg: Emoji úspěšně zničeno!
+ disable: Zakázat
+ disabled_msg: Emoji bylo úspěšně zakázáno
+ emoji: Emoji
+ enable: Povolit
+ enabled_msg: Emoji bylo úspěšně povoleno
+ image_hint: PNG až do 50KB
+ listed: Uvedené
+ new:
+ title: Přidat nové vlastní emoji
+ overwrite: Přepsat
+ shortcode: Zkratka
+ shortcode_hint: Alespoň 2 znaky, pouze alfanumerické znaky a podtržítka
+ title: Vlastní emoji
+ unlisted: Neuvedené
+ update_failed_msg: Nebylo možné aktualizovat toto emoji
+ updated_msg: Emoji úspěšně aktualizováno!
+ upload: Nahrát
+ dashboard:
+ backlog: opožděné úlohy
+ config: Konfigurace
+ feature_deletions: Smazání účtů
+ feature_invites: Pozvánky
+ feature_registrations: Registrace
+ feature_relay: Federovací most
+ features: Vlastnosti
+ hidden_service: Federace se skrytými službami
+ open_reports: otevřená hlášení
+ recent_users: Nedávní uživatelé
+ search: Fulltextové vyhledávání
+ single_user_mode: Režim jednoho uživatele
+ software: Software
+ space: Využití prostoru
+ title: Přehled
+ total_users: uživatelů celkem
+ trends: Trendy
+ week_interactions: interakcí tento týden
+ week_users_active: aktivních tento týden
+ week_users_new: uživatelů tento týden
+ domain_blocks:
+ add_new: Přidat nové
+ created_msg: Blokace domény se právě vyřizuje
+ destroyed_msg: Blokace domény byla zrušena
+ domain: Doména
+ new:
+ create: Vytvořit blokaci
+ hint: Blokace domény nezakáže vytváření účtových záznamů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderace.
+ severity:
+ desc_html: Funkce
Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce
Suspendovat odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci
Žádné.
+ noop: Žádné
+ silence: Utišit
+ suspend: Suspendovat
+ title: Nová doménová blokace
+ reject_media: Odmítat mediální soubory
+ reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace
+ severities:
+ noop: Žádné
+ silence: Utišit
+ suspend: Suspendovat
+ severity: Přísnost
+ show:
+ affected_accounts:
+ one: Jeden účet v databázi byl ovlivněn
+ other: "%{count} účtů v databázi byl ovlivněn"
+ retroactive:
+ silence: Odtišit všechny existující účty z této domény
+ suspend: Zrušit suspenzaci všech existujících účtů z této domény
+ title: Zrušit blokaci domény %{domain}
+ undo: Odvolat
+ title: Doménové blokace
+ undo: Odvolat
+ email_domain_blocks:
+ add_new: Přidat nový
+ created_msg: E-mailová doména úspěšně přidána na černou listinu
+ delete: Smazat
+ destroyed_msg: E-mailová doména úspěšně odstraněna z černé listiny
+ domain: Doména
+ new:
+ create: Přidat doménu
+ title: Nový e-mail pro zablokování
+ title: Černá listina e-mailů
+ instances:
+ account_count: Známé účty
+ domain_name: Doména
+ reset: Resetovat
+ search: Hledat
+ title: Známé instance
+ invites:
+ deactivate_all: Deaktivovat vše
+ filter:
+ all: Vše
+ available: Dostupné
+ expired: Vypršelé
+ title: Filtrovat
+ title: Pozvánky
+ relays:
+ add_new: Přidat nový most
+ description_html: "
Federovací most je přechodný server, který vyměňuje velká množství veřejných tootů mezi servery, které z něj odebírají a poblikují na něj.
Může pomoci malým a středně velkým serverům objevovat obsah z fediverse, což by jinak vyžadovalo, aby místní uživatelé manuálně sledovali jiné lidi na vzdálených serverech."
+ enable_hint: Je-li tohle povoleno, začne váš server odebírat všechny veřejné tooty z tohoto mostu a odesílat na něj své vlastní veřejné tooty.
+ inbox_url: URL mostu
+ setup: Nastavit připojení k mostu
+ status: Stav
+ title: Mosty
+ report_notes:
+ created_msg: Poznámka o nahlášení úspěšně vytvořena!
+ destroyed_msg: Poznámka o nahlášení úspěšně smazána!
+ reports:
+ account:
+ note: poznámka
+ report: nahlášení
+ action_taken_by: Akci vykonal/a
+ are_you_sure: Jste si jistý/á?
+ assign_to_self: Přidělit ke mně
+ assigned: Přiřazený moderátor
+ comment:
+ none: Žádné
+ created_at: Nahlášené
+ id: ID
+ mark_as_resolved: Označit jako vyřešené
+ mark_as_unresolved: Označit jako nevyřešené
+ notes:
+ create: Přidat poznámku
+ create_and_resolve: Vyřešit s poznámkou
+ create_and_unresolve: Znovu otevřít s poznámkou
+ delete: Smazat
+ placeholder: Popište, jaké akce byly vykonány, nebo jakékoliv jiné související aktuality...
+ reopen: Znovu otevřít nahlášení
+ report: 'Nahlásit #%{id}'
+ report_contents: Obsah
+ reported_account: Nahlášený účet
+ reported_by: Nahlášeno uživatelem
+ resolved: Vyřešeno
+ resolved_msg: Nahlášení úspěšně vyřešeno!
+ silence_account: Utišit účet
+ status: Stav
+ suspend_account: Suspendovat účet
+ target: Cíl
+ title: Nahlášení
+ unassign: Odebrat
+ unresolved: Nevyřešeno
+ updated_at: Aktualizováno
+ view: Zobrazit
+ settings:
+ activity_api_enabled:
+ desc_html: Počty lokálně publikovaných příspěvků, aktivních uživatelů a nových registrací, v týdenních intervalech
+ title: Publikovat hromadné statistiky o uživatelské aktivitě
+ bootstrap_timeline_accounts:
+ desc_html: Je-li uživatelskch jmen více, oddělujte je čárkami. Lze zadat pouze místní a odemknuté účty. Je-li tohle prázdné, jsou výchozí hodnotou všichni místní administrátoři.
+ title: Výchozí sledování pro nové uživatele
+ contact_information:
+ email: Pracovní e-mail
+ username: Uživatelské jméno kontaktu
+ hero:
+ desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 600x100px. Pokud toto není nastavené, bude zobrazena miniatura instance
+ title: Hlavní obrázek
+ peers_api_enabled:
+ desc_html: Domény, na které tato instanve narazila ve fediverse
+ title: Zveřejnit seznam objevených instancí
+ preview_sensitive_media:
+ desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá
+ title: Zobrazovat v náhledech OpenGraph i citlivá média
+ registrations:
+ closed_message:
+ desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky
+ title: Zpráva o uzavřených registracích
+ deletion:
+ desc_html: Dovolit každému smazání svého účtu
+ title: Zpřístupnit smazání účtu
+ min_invite_role:
+ disabled: Nikdo
+ title: Povolit pozvánky od
+ open:
+ desc_html: Povolit každému vytvořit si účet
+ title: Zpřístupnit registraci
+ show_known_fediverse_at_about_page:
+ desc_html: Je-li toto zapnuto, zobrazí se v náhledu tooty ze všech známých serverů na fediverse. Jinak budou zobrazeny pouze místní tooty.
+ title: Zobrazit celou známou fediverse na náhledu časové osy
+ show_staff_badge:
+ desc_html: Zobrazit na stránce uživatele odznak člena personálu
+ title: Zobrazit odznak personálu
+ site_description:
+ desc_html: Úvodní odstavec na hlavní straně. Popište, díky čemu je tento server Mastodon zvláštní, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně
<a>
a
<em>
.
+ title: Popis instance
+ site_description_extended:
+ desc_html: Dobré místo pro vaše pravidla, pokyny a jiné věci, které vaši instanci odlišují od ostatních. Lze použít HTML značky
+ title: Vlastní doplňující informace
+ site_short_description:
+ desc_html: Zobrazen v postranním panelu a meta značkách. Popište, co je Mastodon a díky čemu je tento server zvláštní v jediném odstavci. Je-li tohle prázdné, zobrazí se popis instance.
+ title: Krátký popis instance
+ site_terms:
+ desc_html: Můžete si napsat vlastní zásady soukromí, podmínky používání či jiné legality. Můžete použít HTML značky
+ title: Vlastní podmínky používání
+ site_title: Název instance
+ thumbnail:
+ desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučuje se rozlišení 1200x630px
+ title: Miniatura instance
+ timeline_preview:
+ desc_html: Zobrazit na hlavní straně veřejnou časovou osu
+ title: Náhled časové osy
+ title: Nastavení stránky
+ statuses:
+ back_to_account: Zpět na stránku účtu
+ batch:
+ delete: Vymazat
+ nsfw_off: Označit, že není citlivý
+ nsfw_on: Označit jako citlivý
+ failed_to_execute: Nepodařilo se vykonat
+ media:
+ title: Média
+ no_media: Žádná média
+ no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány
+ title: Příspěvky účtu
+ with_media: S médii
+ subscriptions:
+ callback_url: Zpáteční URL
+ confirmed: Potvrzeno
+ expires_in: Vyprší v
+ last_delivery: Poslední doručení
+ title: WebSub
+ topic: Téma
+ suspensions:
+ proceed: Pokračovat
+ title: Suspendovat účet %{acct}
+ title: Administrace
+ admin_mailer:
+ new_report:
+ 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})
+ application_mailer:
+ notification_preferences: Změnit volby e-mailu
+ salutation: "%{name},"
+ settings: 'Změnit volby e-mailu: %{link}'
+ view: 'Zobrazit:'
+ view_profile: Zobrazit profil
+ view_status: Zobrazit příspěvek
+ applications:
+ created: Aplikace úspěšně vytvořena
+ destroyed: Aplikace úspěšně smazána
+ invalid_url: Zadaná adresa URL je neplatná
+ regenerate_token: Znovu vygenerovat přístupový token
+ token_regenerated: Přístupový token byl úspěšně vygenerován
+ 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: Registrací souhlasíte s následováním
pravidel této instance a
našich podmínek používání.
+ change_password: Heslo
+ confirm_email: Potvrdit e-mail
+ delete_account: Odstranit účet
+ delete_account_html: Chcete-li odstranit svůj účet,
pokračujte zde. Budete požádán/a o potvrzení.
+ didnt_get_confirmation: Neobdržel/a jste pokyny pro potvrzení?
+ forgot_password: Zapomněl/a jste heslo?
+ invalid_reset_password_token: Token na obnovu hesla je buď neplatný, nebo vypršel. Prosím vyžádejte si nový.
+ login: Přihlásit
+ logout: Odhlásit
+ migrate_account: Přesunout se na jiný účet
+ migrate_account_html: Chcete-li přesměrovat tento účet na jiný, můžete to
nastavit zde.
+ or: nebo
+ or_log_in_with: Nebo se přihlaste pomocí
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Registrovat
+ register_elsewhere: Registrovat na jiném serveru
+ resend_confirmation: Znovu odeslat pokyny pro potvrzení
+ reset_password: Obnovit heslo
+ security: Zabezpečení
+ set_new_password: Nastavit nové heslo
+ authorize_follow:
+ already_following: Tento účet již sledujete
+ error: Při hledání vzdáleného účtu bohužel nastala chyba
+ follow: Sledovat
+ follow_request: 'Poslal/a jste žádost o sledování uživateli:'
+ following: 'Podařilo se! Nyní sledujete uživatele:'
+ post_follow:
+ close: Nebo můžete toto okno klidně zavřít.
+ return: Zobrazit profil uživatele
+ web: Přejít na web
+ title: Sledovat uživatele %{acct}
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count} hod"
+ about_x_months: "%{count} měsíců"
+ about_x_years: "%{count} let"
+ almost_x_years: "%{count} let"
+ half_a_minute: Právě teď
+ less_than_x_minutes: "%{count} min"
+ less_than_x_seconds: Právě teď
+ over_x_years: "%{count} let"
+ x_days: "%{count} dní"
+ x_minutes: "%{count} min"
+ x_months: "%{count} mesíců"
+ x_seconds: "%{count} s"
+ deletes:
+ bad_password_msg: Dobrý pokus, hackeři! Nesprávné heslo
+ confirm_password: Zadejte svoje současné heslo pro ověření vaší identity
+ description_html: Tímto
trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivuje ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
+ proceed: Odstranit účet
+ success_msg: Váš účet byl úspěšně odstraněn
+ warning_html: Pouze vymazání obsahu z této konkrétní instance je zaručeno. Obsah, který byl široce sdílen, po sobě pravděpodobně zanechá stopy. U offline serverů a serverů, které vaše aktualizace již neodebírají, nebudou databáze aktualizovány.
+ warning_title: Dostupnost rozšířeného obsahu
+ errors:
+ '403': Nemáte povolení zobrazit tuto stránku.
+ '404': Stránka, kterou hledáte, neexistuje.
+ '410': Stránka, kterou hledáte, již neexistuje.
+ '422':
+ content: Bezpečnostní ověření selhalo. Neblokujete cookoes?
+ title: Bezpečnostní ověření selhalo
+ '429': Příliš mnoho požadavků
+ '500':
+ content: Omlouváme se, ale něco se pokazilo u nás.
+ title: Tato stránka není správná
+ noscript_html: Pro použití webové aplikace Mastodon prosím povolte JavaScript. Nebo zkuste jednu z
nativních aplikací pro Mastodon pro vaši platformu.
+ exports:
+ archive_takeout:
+ date: Datum
+ download: Stáhnout svůj archiv
+ hint_html: Můžete si vyžádat archiv vašich
tootů a nahraných médií. Exportovaná data budou ve formátu ActivityPub a budou čitelné kterýmkoliv kompatibilním softwarem. Archiv si můžete vyžádat každých 7 dní.
+ in_progress: Kompiluji váš archiv...
+ request: Vyžádat svůj archiv
+ size: Velikost
+ blocks: Blokujete
+ csv: CSV
+ follows: Sledujete
+ mutes: Ignorujete
+ storage: Úložisko médií
+ filters:
+ contexts:
+ home: Domovská časová osa
+ notifications: Oznámení
+ public: Veřejný časové osy
+ thread: Konverzace
+ edit:
+ title: Upravit filtr
+ errors:
+ invalid_context: Nebylo poskytnuto nic, nebo má neplatný kontext
+ invalid_irreversible: Nezvratné filtrování funguje pouze v souvislosti s domovskou osou či oznámeními
+ index:
+ delete: Smazat
+ title: Filtry
+ new:
+ title: Přidat nový filtr
+ followers:
+ domain: Doména
+ explanation_html: Chcete-li zaručit soukromí vašich příspěvků, musíte mít na vědomí, kdo vás sleduje.
Vaše soukromé příspěvky jsou doručeny na všechny instance, kde máte sledovatele. Nejspíš si je budete chtít zkontrolovat a odstranit sledovatele na instancích, jejichž personálu či softwaru nedůvěřujete s respektováním vašeho soukromí.
+ followers_count: Počet sledovatelů
+ lock_link: Zamkněte svůj účet
+ purge: Odstranit ze sledovatelů
+ success:
+ one: V průběhu utišování sledovatelů z jedné domény...
+ other: V průběhu utišování sledovatelů z %{count} domén...
+ true_privacy_html: Berte prosím na vědomí, že
skutečného soukromí se dá dosáhnout pouze za pomoci end-to-end šifrování.
+ unlocked_warning_html: Kdokoliv vás může sledovat a okamžitě vidět vaše soukromé příspěvky. %{lock_link}, abyste mohl/a zkontrolovat a odmítnout sledovatele.
+ unlocked_warning_title: Váš účet není zamknutý
+ footer:
+ developers: Vývojáři
+ more: Více…
+ resources: Zdroje
+ generic:
+ changes_saved_msg: Změny byly úspěšně uloženy!
+ save_changes: Uložit změny
+ validation_errors:
+ one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže
+ other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
+ imports:
+ preface: Můžete importovat data, která jste exportoval/a z jiné instance, jako například seznam lidí, které sledujete či blokujete.
+ success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas
+ types:
+ blocking: Seznam blokovaných
+ following: Seznam sledovaných
+ muting: Seznam ignorovaných
+ upload: Nahrát
+ in_memoriam_html: Navždy budeme vzpomínat.
+ invites:
+ delete: Deaktivovat
+ expired: Vypršelé
+ expires_in:
+ '1800': 30 minut
+ '21600': 6 hodin
+ '3600': 1 hodina
+ '43200': 12 hodin
+ '604800': 1 týden
+ '86400': 1 den
+ expires_in_prompt: Nikdy
+ generate: Vygenerovat
+ invited_by: 'Byl/a jste pozván/a uživatelem:'
+ max_uses:
+ one: 1 použití
+ other: "%{count} použití"
+ max_uses_prompt: Bez limitu
+ prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tuto instanci
+ table:
+ expires_at: Vyprší
+ uses: Použití
+ title: Pozvěte lidi
+ lists:
+ errors:
+ limit: Dosáhl/a jste maximálního počtu seznamů
+ media_attachments:
+ validations:
+ images_and_video: K příspěvku, který již obsahuje obrázky, nelze připojit video
+ too_many: Nelze připojit více než 4 soubory
+ migrations:
+ acct: přezdívka@doména nového účtu
+ currently_redirecting: 'Váš profil má nastaveno přesměrování na:'
+ proceed: Uložit
+ updated_msg: Vaše nastavení migrace účtu bylo úspěšně aktualizováno!
+ moderation:
+ title: Moderace
+ notification_mailer:
+ digest:
+ action: Zobrazit všechna oznámení
+ body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since}
+ mention: "%{name} vás zmínil/a v:"
+ new_followers_summary:
+ one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá!
+ other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
+ subject:
+ one: "Jedno nové oznámení od vaší poslední návštěvy \U0001F418"
+ other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+ title: Ve vaší absenci...
+ favourite:
+ body: 'Váš příspěvek si oblíbil/a %{name}:'
+ subject: "%{name} si oblíbil/a váš příspěvek"
+ title: Nové oblíbení
+ follow:
+ body: "%{name} vás nyní sleduje!"
+ subject: "%{name} vás nyní sleduje"
+ title: Nový sledovatel
+ follow_request:
+ action: Spravovat žádosti o sledování
+ body: "%{name} žádá o povolení vás následovat"
+ subject: 'Čekající sledovatel: %{name}'
+ title: Nová žádost o sledování
+ mention:
+ action: Odpovědět
+ body: 'Byl/a jste zmíněn/a uživatelem %{name} v:'
+ subject: Byl/a jste zmíněn/a uživatelem %{name}
+ title: Nová zmínka
+ reblog:
+ body: 'Váš příspěvek byl boostnutý uživatelem %{name}:'
+ subject: "%{name} boostnul/a váš příspěvek"
+ title: Nové boostnutí
+ number:
+ human:
+ decimal_units:
+ format: "%n %u"
+ units:
+ billion: mld
+ million: mil
+ quadrillion: bld
+ thousand: tis
+ trillion: bil
+ pagination:
+ newer: Novější
+ next: Starší
+ older: Starší
+ prev: Před
+ truncate: "…"
+ preferences:
+ languages: Jazyky
+ other: Ostatní
+ publishing: Publikování
+ web: Web
+ remote_follow:
+ acct: Napište svou přezdívku@doménu, ze které chcete jednat
+ missing_resource: Nemůžeme najít požadované přesměrovací URL pro váš účet
+ no_account_html: Ještě nemáte účet? Můžete se
registrovat zde
+ proceed: Pokračujte pro sledování
+ prompt: 'Budete sledovat:'
+ remote_interaction:
+ proceed: Pokračujte k interakci
+ prompt: 'Chcete interagovat s tímto tootem:'
+ remote_unfollow:
+ error: Chyba
+ title: Nadpis
+ unfollowed: Už nesledujete
+ sessions:
+ activity: Nejnovější aktivita
+ browser: Prohlížeč
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Neznámý prohlížeč
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Aktuální relace
+ description: "%{browser} na %{platform}"
+ explanation: Toto jsou webové prohlížeče aktuálně přihlášené na váš účet Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: Chrome OS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: neznámé platformě
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Zamítnout
+ revoke_success: Relace úspěšně zamítnuta
+ title: Relace
+ settings:
+ authorized_apps: Autorizované aplikace
+ back: Zpět na Mastodon
+ delete: Smazání účtu
+ development: Vývoj
+ edit_profile: Upravit profil
+ export: Export dat
+ followers: Autorizovaní sledovatelé
+ import: Import
+ migrate: Přesunutí účtu
+ notifications: Oznámení
+ preferences: Předvolby
+ settings: Nastavení
+ two_factor_authentication: Dvoufaktorové ověřování
+ your_apps: Vaše aplikace
+ statuses:
+ attached:
+ description: 'Přiloženo: %{attached}'
+ image:
+ one: "%{count} obrázek"
+ other: "%{count} obrázků"
+ video:
+ one: "%{count} video"
+ other: "%{count} videí"
+ boosted_from_html: Boostnuto z %{acct_link}
+ content_warning: 'Varování o obsahu: %{warning}'
+ disallowed_hashtags:
+ one: 'obsahuje nepovolený hashtag: %{tags}'
+ other: 'obsahuje nepovolené hashtagy: %{tags}'
+ language_detection: Zjistit jazyk automaticky
+ open_in_web: Otevřít na webu
+ over_character_limit: limit %{max} znaků byl překročen
+ pin_errors:
+ limit: Už jste si připnul/a maximální počet tootů
+ ownership: Nelže připnout toot někoho jiného
+ private: Nelze připnout neveřejné tooty
+ reblog: Nelze připnout boostnutí
+ show_more: Zobrazit více
+ sign_in_to_participate: Chcete-li se účastnit této konverzace, přihlaste se
+ title: '%{name}: "%{quote}"'
+ visibilities:
+ private: Pouze pro sledovatele
+ private_long: Zobrazit pouze sledovatelům
+ public: Veřejné
+ public_long: Všichni mohou vidět
+ unlisted: Neuvedené
+ unlisted_long: Všichni mohou vidět, ale není zahrnut ve veřejných časových osách
+ stream_entries:
+ pinned: Připnutý toot
+ reblogged: boostnutý
+ sensitive_content: Citlivý obsah
+ terms:
+ body_html: |
+
Zásady soukromí
+
Jaké informace sbíráme?
+
+
+ - Základní informace o účtu: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno a krátký životopis, a nahrát si profilovou fotografii a hlavičkový obrázek. Uživatelské i zobrazované jméno, životopis, profilová fotografie a hlavičkový obrázek jsou vždy uvedeny veřejně.
+ - Příspěvky, sledovatelé a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledovatele. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a nezobrazované příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledovatelům, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledovatelům. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.
+ - Příspěvky přímé a pouze pro sledovatele: Všechny příspěvky jsou uloženy a zpracovány na serveru. Příspěvky pouze pro sledovatele jsou doručeny vašim sledovatelům a uživateům v nich zmíněných a přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněných. V některých případech tohle znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Snažíme se omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem jiné servery tak nemusejí učinit. Proto je důležité posoudit servery, ke kterým vaši sledovatelé patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledovatelů. Prosím mějte na paměti, že operátoři tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon jakékoliv nebezpečné informace.
+ - IP adresy a další metadata: Když se přihlásíte, zaznamenáváme IP adresu, ze které se přihlašujete, jakožto i název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Nejpozdější IP adresa použita je uložena maximálně do 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.
+
+
+
+
+
Na co používáme vaše informace?
+
+
Jakékoliv informace, které sbíráme, mohou být použity následujícími způsoby:
+
+
+ - K poskytnutí základních funkcí Mastodonu. Interagovat s obsahem od jiných lidí a přispívat svým vlastním obsahem můžete pouze, pokud jste přihlášeni. Můžete například sledovat jiné lidi a zobrazit si jejich kombinované příspěvky ve vaší vlastní personalizované časové ose.
+ - Pro pomoc moderaci komunity, například porovnáním vaší IP adresy s dalšími známými adresami pro určení vyhýbání se zákazům či jiných přestupků.
+ - E-mailová adresa, kterou nám poskytnete, může být použita pro zasílání informací, oznámení o interakcích jiných uživatelů s vaším obsahem nebo přijatých zprávách a k odpovědím na dotazy a/nebo další požadavky či otázky.
+
+
+
+
+
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.
+
+
+
+
Jaké jsou naše zásady o uchovávání údajů?
+
+
Budeme se snažit:
+
+
+ - Uchovávat serverové záznamy obsahující IP adresy všech požadavků pro tento server, pokud se takové záznamy uchovávají, maximálně 90 dní.
+ - Uchovávat IP adresy související s registrovanými uživateli maximálně 12 měsíců.
+
+
+
Kdykoliv si můžete vyžádat a stáhnout archiv vašeho obsahu, včetně vašich příspěvků, mediálních příloh, profilové fotografie a hlavičkového obrázku.
+
+
Kdykoliv můžete nenávratně smazat váš účet.
+
+
+
+
Používáme cookies?
+
+
Ano. Cookies jsou malé soubory, které stránka nebo její poskytovatel uloží na pevný disk vašeho počítače (pokud to dovolíte). Tyto cookies umožňují stránce rozpoznat váš prohlížeč a, pokud máte registrovaný účet, přidružit ho s vaším registrovaným účtem.
+
+
POužíváme cookies pro pochopení a ukládání vašich předvoleb pro budoucí návštěvy.
+
+
+
+
Zveřejňujeme jakékoliv informace třetím stranám?
+
+
Vaše osobně identifikovatelné informace neprodáváme, neobchodujeme s nimi, ani je nijak nepřenášíme vnějším stranám. Do tohoto se nepočítají důvěryhodné třetí strany, které nám pomáhají provozovat naši stránku, podnikat, nebo vás obsluhovat, pokud tyto strany souhlasí se zachováním důvěrnosti těchto informací. Můžeme také uvolnit vaše informace, pokud věříme, že je to nutné pro soulad se zákonem, prosazování našich zásad, nebo ochranu práv, majetku, či bezpečnost nás či ostatních.
+
+
Váš veřejný obsah může být stažen jinými servery na síti. Vaše příspěvky veřejné a pouze pro sledovatele budou doručeny na servery vašich sledovatelů a přímé zprávy budou doručeny na servery příjemců, pokud jsou tito sledovatelé nebo příjemci zaregistrováni na jiném serveru, než je tento.
+
+
Když autorizujete aplikaci, aby používala váš účet, může, v závislosti na rozsahu oprávnění, které jí udělíte, přistupovat k vašim veřejným profilovým informacím, seznamu lidí, které sledujete, vašim sledovatelům, vašim seznamům, všem vašim příspěvkům a příspěvkům, které jste si oblíbili. Aplikace nikdy nemohou získat vaši e-mailovou adresu či heslo.
+
+
+
+
Používání stránky dětmi
+
+
Pokud se tento server nachází v EU nebo EHP: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 16 let. Pokud je vám méně než 16, dle požadavků nařízení GDPR (Obecné nařízení o ochě sobních údajů)
+
+
Pokud se tento server nachází v USA: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 13 let. Pokud je vám méně než 13, dle požadavků zákona COPPA (Children's Online Privacy Protection Act) tuto stránku nepoužívejte.
+
+
Právní požadavky mohou být jiné, pokud se tento server nachází v jiné jurisdikci.
+
+
+
+
Změny v našich zásadách soukromí
+
+
Rozhodneme-li se naše zásady soukromí změnit, zveřejníme tyto změny na této stránce.
+
+
Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 7 března 2018.
+
+
Původně adaptováno ze zásad soukromí Discourse.
+ title: Podmínky používání a zásady soukromí %{instance}
+ themes:
+ contrast: Vysoký kontrast
+ default: Mastodon
+ mastodon-light: Mastodon (světlý)
+ time:
+ formats:
+ 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.
+ disable: Zakázat
+ enable: Povolit
+ enabled: Dvoufaktorové ověřování je povoleno
+ enabled_success: Dvoufaktorové 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řebovat 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_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ý?
user_mailer:
+ backup_ready:
+ explanation: Vyžádal/a jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení!
+ subject: Váš archiv je připraven ke stažení
+ title: Stažení archivu
welcome:
+ edit_profile_action: Nastavit profil
+ edit_profile_step: Můžete si přizpůsobit svůj profil nahráním avataru a obrázku na hlavičce, změnou zobrazovaného jména a dalších. Chcete-li posoudit nové sledovatele 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 sledovatele, 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.'
+ 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é instance.
+ review_preferences_action: Změnit nastavení
+ review_preferences_step: Nezapomeňte si nastavit své volby, například jaké e-maily chcete přijímat či jak soukromé mají být vaše příspěvky ve výchozím stavu. Nemáte-li epilepsii, můžete si nastavit automatické přehrávání obrázků GIF.
+ subject: Vítejte na Mastodonu
+ tip_bridge_html: Pokud přicházíte z Twitteru, můžete najít vaše přátele na Mastodonu pomocí
mostové aplikace. Funguje ovšem pouze, pokud ji oni někdy také použili!
+ tip_federated_timeline: Federovaná časová osa je náhled celé sítě Mastodon. Zahrnuje ovšem pouze lidi, které sledují vaši sousedé, takže není úplná.
+ tip_following: Administrátora/y serveru sledujete automaticky. Chcete-li najít další zajímavé lidi, podívejte se na místní a federované časové osy.
+ tip_local_timeline: Místní časová osa je náhled lidí na %{instance}. Toto jsou vaši nejbližší sousedé!
+ tip_mobile_webapp: Pokud vám váš mobilní prohlížeč nabídne přidat si Mastodon na vaši domovskou obrazovku, můžete dostávat oznámení. V mnoha ohledech to funguje jako nativní aplikace!
tips: Tipy
title: Vítejte na palubě, %{name}!
users:
invalid_email: E-mailová adresa je neplatná
+ invalid_otp_token: Neplatný kód pro dvoufaktorovou autentikaci
+ 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/da.yml b/config/locales/da.yml
index 0e3da55f1..285a0b23f 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -5,13 +5,13 @@ da:
about_mastodon_html: Mastodon er et socialt netværk der er baseret på åbne web protokoller og frit, open-source source software. Der er decentraliseret ligesom e-mail tjenester.
about_this: Om
administered_by: 'Administreret af:'
+ api: API
+ apps: Apps til mobilen
closed_registrations: Registreringer er på nuværrende tidspunkt lukkede for denne instans. Du kan dog finde andre instanser du kan oprette dig på og få adgang til det samme netværk derfra.
contact: Kontakt
contact_missing: Ikke sat
contact_unavailable: Ikke tilgængeligt
- description_headline: Hvad er %{domain}?
- domain_count_after: andre instancer
- domain_count_before: Forbundet til
+ documentation: Dokumentation
extended_description_html: |
Et godt sted for regler
Den udvidede beskrivelse er endnu ikke blevet opsat.
@@ -27,27 +27,32 @@ da:
generic_description: "%{domain} er en server i netværket"
hosted_on: Mostodon hostet på %{domain}
learn_more: Lær mere
- other_instances: Liste over instancer
+ other_instances: Liste over instanser
+ privacy_policy: Privatlivspolitik
source_code: Kildekode
status_count_after: statusser
status_count_before: Som har skrevet
+ terms: Vilkår for service
user_count_after: brugere
user_count_before: Hjem til
what_is_mastodon: Hvad er Mastodon?
accounts:
+ choices_html: "%{name}s valg:"
follow: Følg
followers: Følgere
following: Følger
+ joined: Tilmeldt den %{date}
media: Multimedia
moved_html: "%{name} er flyttet til %{new_profile_link}:"
network_hidden: Denne information er ikke tilgængelig
nothing_here: Der er intet her!
- people_followed_by: Folk some %{name} følger
+ people_followed_by: Folk som %{name} følger
people_who_follow: Folk der følger %{name}
- posts: Dyt
- posts_with_replies: Toots og svar
- remote_follow: Følg fra andre instancer
- reserved_username: Brugernavnet er reserveret
+ pin_errors:
+ following: Du er nødt til at følge den person du ønsker at støtte
+ posts: Trut
+ posts_with_replies: Trut og svar
+ reserved_username: Brugernavnet er allerede taget
roles:
admin: Administrator
bot: Robot
@@ -55,7 +60,7 @@ da:
unfollow: Følg ikke længere
admin:
account_moderation_notes:
- create: Læg en kommentar
+ create: Læg en note
created_msg: Moderator notat succesfuldt oprettet!
delete: Slet
destroyed_msg: Moderator notat succesfuldt destrueret!
@@ -137,8 +142,8 @@ da:
search: Søg
shared_inbox_url: Link til delt indbakke
show:
- created_reports: Rapporter oprettet af denne konto
- report: rapporter
+ created_reports: Anmeldelser oprettet af denne konto
+ report: anmeld
targeted_reports: Anmeldelser fra denne konto
silence: Dæmp
statuses: Statusser
@@ -180,6 +185,7 @@ da:
unsuspend_account: "%{name} fjernede udelukkelsen fra %{target}s konto"
update_custom_emoji: "%{name} opdaterede humørikonet %{target}"
update_status: "%{name} opdaterede status for %{target}"
+ deleted_status: "(slettet status)"
title: Revisionslog
custom_emojis:
by_domain: Domæne
@@ -206,6 +212,27 @@ da:
update_failed_msg: Kunne ikke opdatere det humørikon
updated_msg: Humørikon succesfuldt opdateret!
upload: Læg op
+ dashboard:
+ backlog: ophobede jobs
+ config: Konfiguration
+ feature_deletions: Konto sletninger
+ feature_invites: Invitations links
+ feature_registrations: Registreringer
+ feature_relay: Føderations relæ
+ features: Funktioner
+ hidden_service: Føderation med skjulte tjenester
+ open_reports: åbne anmeldelser
+ recent_users: Seneste brugere
+ search: Søg på fuld tekst
+ single_user_mode: Enkelt bruger mode
+ software: Software
+ space: Brugt lagerplads
+ title: Betjeningspanel
+ total_users: samlede antal brugere
+ trends: Tendenser
+ week_interactions: interaktioner denne uge
+ week_users_active: aktive denne uge
+ week_users_new: brugere denne uge
domain_blocks:
add_new: Tilføj ny
created_msg: Domæne blokade bliver nu behandlet
@@ -238,10 +265,13 @@ da:
undo: Fortryd
email_domain_blocks:
add_new: Tilføj ny
+ created_msg: Tilføjede succesfuldt email domænet til sortliste
delete: Slet
+ destroyed_msg: Fjernede succesfuldt email domænet fra sortliste
domain: Domæne
new:
create: Tilføj domæne
+ title: Ny email blokade opslag
title: Email sortliste
instances:
account_count: Kendte konti
@@ -250,12 +280,19 @@ da:
search: Søg
title: Kendte instanser
invites:
+ deactivate_all: Deaktiver alle
filter:
all: Alle
available: Tilgængelig
expired: Udløbet
title: Filtre
title: Invitationer
+ relays:
+ add_new: Tilføj nyt relay
+ inbox_url: Link til relay
+ setup: Opsæt en videresendelses forbindelse
+ status: Status
+ title: Videresendelser
reports:
account:
note: notat
@@ -288,16 +325,27 @@ da:
suspend_account: Udeluk konto
target: Mål
title: Anmeldelser
+ unassign: Utildel
unresolved: Uløst
updated_at: Opdateret
view: Se
settings:
+ bootstrap_timeline_accounts:
+ title: Standard følger for nye brugere
contact_information:
email: Forretnings email
username: Kontakt brugernavn
hero:
+ desc_html: Vist på forsiden. Mindst 600x100px anbefales. Hvis ikke sat, vil dette falde tilbage til billedet for instansen
title: Billede af helt
+ peers_api_enabled:
+ title: Udgiv liste over opdagede instanser
+ preview_sensitive_media:
+ title: Vis følsomt medie i OpenGraph forhåndsvisninger
registrations:
+ closed_message:
+ desc_html: Vist på forsiden når registreringer er lukkede. Du kan bruge HTML tags
+ title: Besked for lukkede registreringer
deletion:
desc_html: Tillad alle at slette deres konto
title: Åben konto sletning
@@ -307,14 +355,19 @@ da:
open:
desc_html: Tillad alle at oprette en konto
title: Åben registrering
+ show_known_fediverse_at_about_page:
+ title: Vis kendte fedivers på tidslinje forhåndsvisning
show_staff_badge:
desc_html: Vis personale emblem på en brugerside
title: Vis personale emblem
site_description:
title: Beskrivelse af instans
+ site_short_description:
+ title: Kort beskrivelse af instans
site_title: Navn på instans
timeline_preview:
desc_html: Vis offentlig tidslinje på landingssiden
+ title: Tidslinje forhåndsvisning
title: Indstillinger for side
statuses:
back_to_account: Tilbage til kontosiden
@@ -332,12 +385,14 @@ da:
confirmed: Bekræftet
expires_in: Udløber om
last_delivery: Sidste levering
+ title: Websub
topic: Emne
title: Administration
admin_mailer:
new_report:
body: "%{reporter} har anmeldt %{target}"
body_remote: Nogen fra %{domain} har anmeldt %{target}
+ subject: Ny anmeldelse for %{instance} (#%{id})
application_mailer:
notification_preferences: Ændre email indstillinger
salutation: "%{name},"
@@ -346,6 +401,8 @@ da:
view_profile: Se profil
view_status: Se status
applications:
+ created: Applikation blev oprettet
+ destroyed: Applikation er blevet slettet
invalid_url: Det angivne URL er ugyldigt
warning: Vær meget forsigtig med disse data. Del dem aldrig med nogen!
auth:
@@ -359,8 +416,12 @@ da:
migrate_account: Flyt til en anden konto
or: eller
or_log_in_with: Eller log in med
+ providers:
+ cas: CAS
+ saml: SAML
register: Opret dig
register_elsewhere: Opret dig på en anden server
+ resend_confirmation: Gensend bekræftelses instrukser
reset_password: Nulstil kodeord
security: Sikkerhed
set_new_password: Sæt et nyt kodeord
@@ -378,8 +439,15 @@ da:
distance_in_words:
about_x_hours: "%{count}t"
about_x_months: "%{count} måneder"
+ about_x_years: "%{count}år"
+ almost_x_years: "%{count}år"
half_a_minute: Lige nu
+ less_than_x_minutes: "%{count}m"
less_than_x_seconds: Lige nu
+ over_x_years: "%{count}år"
+ x_days: "%{count}d"
+ x_minutes: "%{count}m"
+ x_months: "%{count}md"
x_seconds: "%{count}s"
deletes:
bad_password_msg: Godt forsøg, hackere! Forkert kodeord
@@ -401,8 +469,10 @@ da:
download: Hent dit arkiv
size: Størrelse
blocks: Du blokerer
+ csv: CSV
follows: Du følger
mutes: Du dæmper
+ storage: Medie lager
filters:
contexts:
home: Hjemme tidslinje
@@ -422,10 +492,16 @@ da:
lock_link: Lås din konto
purge: Fjern fra følgere
unlocked_warning_title: Din konto er ikke låst
+ footer:
+ developers: Udviklere
+ more: Mere…
+ resources: Ressourcer
generic:
changes_saved_msg: Ændringerne blev gemt!
- powered_by: drevet af %{link}
save_changes: Gem ændringer
+ validation_errors:
+ one: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende fejl forneden
+ other: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende %{count} fejl forneden
imports:
types:
blocking: Blokeringsliste
@@ -445,12 +521,20 @@ da:
expires_in_prompt: Aldrig
generate: Generer
invited_by: 'Du er blevet inviteret af:'
+ max_uses:
+ one: 1 benyttelse
+ other: "%{count} benyttelser"
max_uses_prompt: Ubegrænset
table:
expires_at: Udløber
+ uses: Benyttelser
title: Inviter folk
+ lists:
+ errors:
+ limit: Du har nået det højeste antal lister
media_attachments:
validations:
+ images_and_video: Kan ikke vedhæfte en video til en status der allerede har billeder
too_many: Kan ikke vedhæfte mere en 4 filer
migrations:
acct: username@domain af den nye konto
@@ -462,11 +546,23 @@ da:
digest:
action: Se alle notifikationer
mention: "%{name} nævnte dig i:"
+ new_followers_summary:
+ other: Du har også fået %{count} nye følgere mens du var væk! Fantastisk!
+ subject:
+ one: "1 ny notifikation siden du sidst var her \U0001F418"
+ other: "%{count} nye notifikationer siden du sidst var her \U0001F418"
title: Mens du var væk...
+ favourite:
+ body: 'Din status blev favoriseret af %{name}:'
+ subject: "%{name} favoriserede din status"
+ title: Ny favorit
follow:
body: "%{name} følger dig nu!"
subject: "%{name} følger dig nu"
title: Ny følger
+ follow_request:
+ action: Håndter følgeranmodninger
+ body: "%{name} har anmodet om at følge dig"
mention:
action: Svar
body: 'Du blev nævnt af %{name} i:'
@@ -482,6 +578,10 @@ da:
units:
billion: mia.
million: mio.
+ quadrillion: Q
+ thousand: K
+ trillion: T
+ unit: "\n"
pagination:
newer: Nyere
next: Næste
@@ -490,38 +590,55 @@ da:
preferences:
languages: Sprog
other: Andet
+ publishing: Offentligører
web: Web
+ remote_follow:
+ no_account_html: Har du ikke en konto? Du kan
oprette dig her
+ proceed: Fortsæt for at følge
+ prompt: 'Du er ved at følge:'
+ remote_interaction:
+ prompt: 'Du ønsker at interagere med dette trut:'
remote_unfollow:
error: Fejl
title: Titel
unfollowed: Følger ikke længere
sessions:
+ activity: Sidste aktivitet
+ browser: Browser
browsers:
blackberry: Blackberry OS
chrome: Google Chrome
+ edge: Microsoft edge
firefox: Mozilla Firefox
generic: Ukendt browser
ie: IE
+ qq: QQ browser
+ safari: Apple Safari
description: "%{browser} på %{platform}"
ip: IP
platforms:
+ adobe_air: Adobe air
android: Android
ios: iOS
linux: Linux
mac: Mac.
other: ukendt platform
+ windows: Microsoft windows
+ windows_phone: Windows fon
settings:
authorized_apps: Godkendte apps
back: Tilbage til Mastodon
delete: Sletning af konto
development: Udvikling
edit_profile: Rediger profil
+ export: Data exportering
followers: Godkendte følgere
import: Importer
migrate: Konto migrering
notifications: Notifikationer
preferences: Indstillinger
settings: Indstillinger
+ two_factor_authentication: To-faktor godkendelse
your_apps: Dine applikationer
statuses:
attached:
@@ -532,11 +649,18 @@ da:
video:
one: "%{count} video"
other: "%{count} videoer"
+ boosted_from_html: Fremhævet fra %{acct_link}
content_warning: 'Advarsel om indhold: %{warning}'
language_detection: Opfang automatisk sprog
+ open_in_web: Åbn i browser
+ over_character_limit: grænsen på %{max} tegn er overskredet
pin_errors:
- ownership: Dun kan ikke fastgøre en anden persons toot
+ limit: Du har allerede fastgjort det maksimale antal trut
+ ownership: Du kan ikke fastgøre en anden persons trut
+ private: Ikke offentlige trut kan ikke blive fastgjort
+ reblog: Fremhævede trut kan ikke fastgøres
show_more: Vis mere
+ sign_in_to_participate: Log ind for at deltage i samtalen
title: '%{name}: "%{quote}"'
visibilities:
private: Kun-følgere
@@ -544,14 +668,21 @@ da:
public: Offentlig
public_long: Alle kan se
unlisted: Ikke listet
+ unlisted_long: Alle kan se, men vil ikke være listet på offentlige tidslinjer
stream_entries:
- click_to_show: Tryk for at vise
- pinned: Fastgjort toot
+ pinned: Fastgjort trut
+ reblogged: fremhævede
sensitive_content: Følsomt indhold
+ terms:
+ title: Vilkår og privatlivpolitik for %{instance}
themes:
contrast: Høj kontrast
default: Mastodon
mastodon-light: Mastodon (lys)
+ time:
+ formats:
+ default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Indtast koden der er genereret af din app for at bekræfte
disable: Deaktiver
@@ -573,10 +704,12 @@ da:
edit_profile_action: Opsæt profil
explanation: Her er nogle råd til at starte med
final_action: Kom igang med at poste
+ final_step: 'Start med at skrive opslag! Selv uden følgere vil dine offentlige beskeder kunne ses af andre, foreksempel på den lokale tidslinje og i hashtags. Måske kunne du tænke dig at introducere dig selv på #introductions hashtagget.'
full_handle: Dit fulde brugernavn
full_handle_hint: Dette er hvad du vil fortælle dine venner så de kan sende dig beskeder eller følge dig fra andre instanser.
review_preferences_action: Ændre præferencer
subject: Velkommen til Mastodon
+ tip_bridge_html: Hvis du kommer fra Twitter, kan du finde dine venner på Mastodon ved at bruge
bridge appen. Den virker dog kun hvis de også bruger bridge appen!
tip_following: Du følger som standard administratoren(e) for den server du er på. For at finde flere folk, tjek både den lokale og fælles tidslinje.
tip_local_timeline: Den lokale tidslinje er et have af folk i %{instance}. Disse er dine umiddelbare naboer!
tip_mobile_webapp: Hvis din mobil browser tilbyder dig at tilføje Mastodon til din hjemmeskærm, kan du modtage push meddelelser. Dette opfører sig på mange måder ligesom en almindelig app!
diff --git a/config/locales/de.yml b/config/locales/de.yml
index f86fce3ce..299e74392 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -5,13 +5,12 @@ de:
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
administered_by: 'Administriert von:'
+ api: API
closed_registrations: Die Registrierung auf dieser Instanz ist momentan geschlossen. Aber du kannst dein Konto auch auf einer anderen Instanz erstellen! Von dort hast du genauso Zugriff auf das Mastodon-Netzwerk.
contact: Kontakt
contact_missing: Nicht angegeben
contact_unavailable: N/A
- description_headline: Was ist %{domain}?
- domain_count_after: anderen Instanzen
- domain_count_before: Vernetzt mit
+ documentation: Dokumentation
extended_description_html: |
Ein guter Platz für Regeln
Die erweiterte Beschreibung wurde noch nicht aufgesetzt.
@@ -28,9 +27,11 @@ de:
hosted_on: Mastodon, beherbergt auf %{domain}
learn_more: Mehr erfahren
other_instances: Andere Instanzen
+ privacy_policy: Datenschutzerklärung
source_code: Quellcode
status_count_after: Beiträge verfassten
status_count_before: die
+ terms: Nutzungsbedingungen
user_count_after: Wesen
user_count_before: Zuhause für
what_is_mastodon: Was ist Mastodon?
@@ -38,6 +39,7 @@ de:
follow: Folgen
followers: Folgende
following: Folgt
+ joined: Beigetreten am %{date}
media: Medien
moved_html: "%{name} ist auf %{new_profile_link} umgezogen:"
network_hidden: Diese Informationen sind nicht verfügbar
@@ -46,7 +48,6 @@ de:
people_who_follow: Profile, die %{name} folgen
posts: Beiträge
posts_with_replies: Beiträge mit Antworten
- remote_follow: Folgen
reserved_username: Dieser Profilname ist belegt
roles:
admin: Admin
@@ -55,7 +56,7 @@ de:
unfollow: Entfolgen
admin:
account_moderation_notes:
- create: Notiz hinterlassen
+ create: Notiz erstellen
created_msg: Moderationsnotiz erfolgreich erstellt!
delete: Löschen
destroyed_msg: Moderationsnotiz erfolgreich gelöscht!
@@ -206,6 +207,27 @@ de:
update_failed_msg: Konnte dieses Emoji nicht aktualisieren
updated_msg: Emoji erfolgreich aktualisiert!
upload: Hochladen
+ dashboard:
+ backlog: Unerledigte Jobs
+ config: Konfiguration
+ feature_deletions: Kontolöschung
+ feature_invites: Einladungslinks
+ feature_registrations: Registrierung
+ feature_relay: Föderations-Relay
+ features: Eigenschaften
+ hidden_service: Föderation mit versteckten Diensten
+ open_reports: Offene Meldungen
+ recent_users: Neueste Nutzer
+ search: Volltextsuche
+ single_user_mode: Einzelnutzermodus
+ software: Software
+ space: Speicherverbrauch
+ title: Übersicht
+ total_users: Benutzer Insgesamt
+ trends: Trends
+ week_interactions: Interaktionen diese Woche
+ week_users_active: Aktiv diese Woche
+ week_users_new: Benutzer diese Woche
domain_blocks:
add_new: Neu hinzufügen
created_msg: Die Domain-Blockade wird nun durchgeführt
@@ -261,6 +283,14 @@ de:
expired: Ausgelaufen
title: Filter
title: Einladungen
+ relays:
+ add_new: Neues Relay hinzufügen
+ description_html: Ein
Föderierungsrelay ist ein vermittelnder Server, der eine große Anzahl öffentlicher Beiträge zwischen Servern austauscht, die es abonnieren und zu ihm veröffentlichen.
Es kann kleinen und mittleren Servern dabei helfen, Inhalte des Fediverse zu entdecken, was andernfalls das manuelle Folgen anderer Leute auf entfernten Servern durch lokale Nutzer erfordern würde.
+ enable_hint: Sobald aktiviert wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und wird alle öffentlichen Beiträge dieses Servers an es senden.
+ inbox_url: Relay-URL
+ setup: Relayverbindung einrichten
+ status: Status
+ title: Relays
report_notes:
created_msg: Meldungs-Kommentar erfolgreich erstellt!
destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht!
@@ -316,6 +346,9 @@ de:
peers_api_enabled:
desc_html: Domain-Namen dieser Instanz, die im Fediverse gefunden wurden
title: Veröffentliche Liste von gefundenen Instanzen
+ preview_sensitive_media:
+ desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als heikel gekennzeichnet sind
+ title: Heikle Medien in OpenGraph-Vorschauen anzeigen
registrations:
closed_message:
desc_html: Wird auf der Frontseite angezeigt, wenn die Registrierung geschlossen ist. Du kannst HTML-Tags benutzen
@@ -336,11 +369,14 @@ de:
desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite
title: Zeige Mitarbeiter-Badge
site_description:
- desc_html: Wird als Absatz auf der Frontseite angezeigt und als Meta-Tag benutzt. Du kannst HTML-Tags benutzen, insbesondere
<a>
und
<em>
.
+ desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diese Mastodon-Instanz ausmacht. Du kannst HTML-Tags benutzen, insbesondere
<a>
und
<em>
.
title: Beschreibung der Instanz
site_description_extended:
desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deine Instanz auszeichnet. Du kannst HTML-Tags benutzen
title: Erweiterte Beschreibung der Instanz
+ 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 Instanz-Beschreibung verwendet.
+ title: Kurze Instanz-Beschreibung
site_terms:
desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags benutzen
title: Eigene Geschäftsbedingungen
@@ -465,7 +501,7 @@ de:
archive_takeout:
date: Datum
download: Dein Archiv herunterladen
- hint_html: Du kannst ein Archiv deiner
Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden im ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein neues Archiv anfordern.
+ hint_html: Du kannst ein Archiv deiner
Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden im ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern.
in_progress: Stelle dein Archiv zusammen...
request: Dein Archiv anfragen
size: Größe
@@ -502,9 +538,12 @@ de:
true_privacy_html: Bitte beachte, dass
wirklicher Schutz deiner Privatsphäre nur durch Ende-zu-Ende-Verschlüsselung erreicht werden kann..
unlocked_warning_html: Wer dir folgen will, kann dies jederzeit ohne deine vorige Einverständnis tun und erhält damit automatisch Zugriff auf deine privaten Beiträge. Wenn du %{lock_link}, kannst du vorab entscheiden, wer dir folgen darf und wer nicht.
unlocked_warning_title: Dein Konto ist nicht gesperrt
+ footer:
+ developers: Entwickler
+ more: Mehr…
+ resources: Ressourcen
generic:
changes_saved_msg: Änderungen gespeichert!
- powered_by: angetrieben von %{link}
save_changes: Änderungen speichern
validation_errors:
one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler
@@ -540,8 +579,6 @@ de:
expires_at: Läuft ab
uses: Verwendungen
title: Leute Einladen
- landing_strip_html: "
%{name} hat ein Profil auf %{link_to_root_path}. Du kannst folgen oder interagieren, sofern du ein Konto irgendwo im Fediversum hast."
- landing_strip_signup_html: Wenn nicht, kannst du dich
hier anmelden.
lists:
errors:
limit: Du hast die maximale Anzahl an Listen erreicht
@@ -710,11 +747,93 @@ de:
unlisted: Nicht gelistet
unlisted_long: Für alle sichtbar, aber nicht in öffentlichen Zeitleisten aufgelistet
stream_entries:
- click_to_show: Klicken, um zu zeigen
pinned: Angehefteter Beitrag
reblogged: teilte
sensitive_content: Heikle Inhalte
terms:
+ body_html: |
+
Datenschutzerklärung
+
Welche Informationen sammeln wir?
+
+
+ - Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
+ - Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil featurest, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
+ - Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche gefährlichen Informationen über Mastodon.
+ - Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
+
+
+
+
+
Für was verwenden wir deine Informationen?
+
+
Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:
+
+
+ - Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.
+ - Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.
+ - Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.
+
+
+
+
+
Wie beschützen wir deine Informationen?
+
+
Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.
+
+
+
+
Was ist unsere Datenspeicherungsrichtlinie?
+
+
Wir werden mit bestem Wissen und Gewissen:
+
+
+ - Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.
+ - registrierten Benutzern zu geordnete IP-Adressen nicht länger als 12 Monate behalten.
+
+
+
Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.
+
+
Du kannst dein Konto unwiderruflich jederzeit löschen.
+
+
+
+
Verwenden wir Cookies?
+
+
Ja. Cookies sind kleine Dateien, die eine Webseite oder ihr Serviceanbieter über deinen Webbrowser (sofern er es erlaubt) auf die Festplatte deines Computers überträgt. Diese Cookies ermöglichen es der Seite deinen Browser wiederzuerkennen und, sofern du ein registriertes Konto hast, diesen mit deinem registrierten Konto zu verknüpfen.
+
+
Wir verwenden Cookies, um deine Einstellungen zu verstehen und für zukünftige Besuche zu speichern.
+
+
+
+
Offenbaren wir Informationen an Dritte?
+
+
Wir verkaufen nicht, handeln nicht mit oder übertragen deine persönlich identifizierbaren Informationen nicht an Dritte. Dies beinhaltet nicht Dritte, die vertrauenswürdig sind und uns beim Betreiben unserer Seite, Leiten unseres Geschäftes oder dabei, die Dienste für dich bereitzustellen, unterstützen, sofern diese Dritte zustimmen, diese Informationen vertraulich zu halten. Wir können auch Informationen freigeben, wenn wir glauben, dass Freigabe angemessen ist, um dem Gesetz zu entsprechen, unsere Seitenrichtlinien durchzusetzen oder unsere Rechte, Eigentum und/oder Sicherheit oder die anderer zu beschützen.
+
+
Dein öffentlicher Inhalt kann durch andere Server im Netzwerk heruntergeladen werden. Deine öffentlichen und "Nur Folgende"-Beiträge werden an die Server ausgeliefert, bei denen sich deine Folgenden befinden und direkte Nachrichten werden an die Server des Empfängers ausgeliefert, falls diese Folgenden oder Empfänger sich auf einem anderen Server als diesen befinden.
+
+
Wenn du eine Anwendung autorisierst, dein Konto zu benutzen, kann diese – abhängig von den von dir genehmigten Befugnissen – auf deine öffentlichen Profilinformationen, deine Folgt- und Folgende-Liste, deine Listen, alle deine Beiträge und deine Favoriten zugreifen. Anwendungen können nie auf deine E-Mail-Adresse oder dein Passwort zugreifen
+
+
+
+
Webseitenbenutzung durch Kinder
+
+
Wenn sich dieser Server in der EU oder im Europäischen Wirtschaftsraum befinden: Unsere Website, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 16 Jahre als sind. Wenn du unter 16 bist, darfst du nach den Bestimmungen der DSGVO (Datenschutz-Grundverordnung) diese Webseite nicht benutzen.
+
+
Wenn sich dieser Server in den USA befindet: Unsere Webseite, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, darfst du nach den Bestimmungen des COPPA (Children's Online Privacy Protection Act, dt. "Gesetz zum Schutz der Privatsphäre von Kindern im Internet") diese Webseite nicht benutzen.
+
+
Gesetzesvorschriften können unterschiedlich sein, wenn sich dieser Server in anderer Gerichtsbarkeit befindet.
+
+
+
+
Änderung an unserer Datenschutzerklärung
+
+
Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wird diese Änderungen auf dieser Seite bekannt geben.
+
+
Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion
+
+
Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 7. März 2018.
+
+
Ursprünglich übernommen von der Discourse-Datenschutzerklärung.
title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung"
themes:
contrast: Hoher Kontrast
@@ -723,6 +842,7 @@ de:
time:
formats:
default: "%d.%m.%Y %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Gib zur Bestätigung den Code ein, den deine Authenticator-App generiert hat
description_html: Wenn du
Zwei-Faktor-Authentisierung (2FA) aktivierst, wirst du dein Telefon zum Anmelden benötigen. Darauf werden Tokens erzeugt, die du bei der Anmeldung eingeben musst.
@@ -765,6 +885,6 @@ de:
users:
invalid_email: Ungültige E-Mail-Adresse
invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code
- otp_lost_help_html: Wenn Sie zu beidem keinen Zugriff mehr haben, kontaktieren sie %{email}
+ otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email}
seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind.
signed_in_as: 'Angemeldet als:'
diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/devise.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index adaa40835..49814b368 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -8,3 +8,75 @@ cs:
failure:
already_authenticated: Již jste přihlášen/a.
inactive: Váš účet ještě není aktivován.
+ invalid: Neplatné %{authentication_keys} nebo heslo.
+ last_attempt: Máte ještě jeden pokus, než bude váš účet uzamčen.
+ locked: Váš účet je uzamčen.
+ not_found_in_database: Neplatné %{authentication_keys} nebo heslo.
+ timeout: Vaše relace vypršela. Pro pokračování se prosím přihlaste znovu.
+ unauthenticated: Před pokračováním se musíte přihlásit nebo registrovat.
+ unconfirmed: Před pokračováním musíte potvrdit svůj e-mail.
+ mailer:
+ confirmation_instructions:
+ action: Potvrdit e-mailovou adresu
+ explanation: S touto e-mailovou adresou jste si vytvořil/a účet na %{host}. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyl/a vy, ignorujte této e-mail.
+ extra_html: Prosím podívejte se také na
pravidla této instance a
naše podmínky používání.
+ subject: 'Mastodon: Potvrzovací instrukce pro %{instance}'
+ title: Potvrďte e-mailovou adresu
+ email_changed:
+ explanation: 'E-mailová adresa vašeho účtu byla změněna na:'
+ extra: Pokud jste si e-mail nezměnil/a, je pravděpodobné, že někdo jiný získal přístup k vašemu účtu. Prosím změňte si okamžitě heslo, nebo, pokud se nemůžete na účet přihlásit, kontaktujte administrátora instance.
+ subject: 'Mastodon: E-mail byl změněn'
+ title: Nová e-mailová adresa
+ password_change:
+ explanation: Heslo k vašemu účtu bylo změněno.
+ extra: Pokud jste si heslo nezměnil/a, je pravděpodobné, že někdo jiný získal přístup k vašemu účtu. Prosím změňte si okamžitě heslo, nebo, pokud se nemůžete na účet přihlásit, kontaktujte administrátora instance.
+ subject: 'Mastodon: Heslo bylo změněno'
+ title: Heslo bylo změněno
+ reconfirmation_instructions:
+ explanation: Potvrďte novou adresu pro změnu e-mailu.
+ extra: Pokud jste tuto změnu nevyžádal/a vy, prosím ignorujte tento e-mail. E-mailová adresa nebude změněna, dokud nepřejdete na výše uvedenou adresu.
+ subject: 'Mastodon: Potvrďte e-mail pro %{instance}'
+ title: Ověřit e-mailovou adresu
+ reset_password_instructions:
+ action: Změnit heslo
+ explanation: Vyžádal/a jste si pro svůj účet nové heslo.
+ extra: Pokud jste tohle nevyžádal/a, prosím ignorujte tento e-mail. Vaše heslo nebude změněno, dokud nepřejdete na výše uvedenou adresu a nevytvoříte si nové.
+ subject: 'Mastodon: Instrukce pro obnovu hesla'
+ title: Obnovení hesla
+ unlock_instructions:
+ subject: 'Mastodon: Instrukce pro odemčení účtu'
+ omniauth_callbacks:
+ failure: Nelze vás ověřit z %{kind}, protože "%{reason}".
+ success: Úspěšně ověřeno z účtu %{kind}.
+ passwords:
+ no_token: Tuto stránku nemůžete navštívit, pokud nepřicházíte z e-mailu pro obnovu hesla. Pokud jste z něj přišel/la, ujistěte se, že jste použil/a celé URL z e-mailu.
+ send_instructions: Pokud vaše e-mailová adresa existuje v naší databázi, obdržíte za pár minut ve vašem e-mailu odkaz pro obnovení hesla. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ send_paranoid_instructions: Pokud vaše e-mailová adresa existuje v naší databázi, obdržíte za pár minut ve vašem e-mailu odkaz pro obnovení hesla. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ updated: Vaše heslo bylo úspěšně změněno. Nyní jste přihlášen/a.
+ updated_not_active: Vaše heslo bylo úspěšně změněno.
+ registrations:
+ destroyed: Sbohem! Váš účet byl úspěšně zrušen. Doufáme, že vás opět brzy uvidíme.
+ signed_up: Vítejte! Registroval/a jste se úspěšně.
+ signed_up_but_inactive: Registroval/a jste se úspěšně. Nemohli jsme vás však přihlásit, protože váš účet ještě není aktivován.
+ signed_up_but_locked: Registroval/a jste se úspěšně. Nemohli jsme vás však přihlásit, protože váš účet je uzamčen.
+ signed_up_but_unconfirmed: Na vaši e-mailovou adresu byla poslána zpráva s potvrzovacím odkazem. Pro aktivaci účtu přejděte na danou adresu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ update_needs_confirmation: Váš účet byl úspěšně aktualizován, ale je potřeba ověřit vaši novou e-mailovou adresu. Prosím zkontrolujte si e-mail a klikněte na odkaz pro potvrzení vaši nové e-mailové adresy. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ updated: Váš účet byl úspěšně aktualizován.
+ sessions:
+ already_signed_out: Odhlášení proběhlo úspěšně.
+ signed_in: Přihlášení proběhlo úspěšně.
+ signed_out: Odhlášení proběhlo úspěšně.
+ unlocks:
+ send_instructions: Za pár minut obdržíte e-mail s instrukcemi pro odemčení vašeho účtu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ send_paranoid_instructions: Pokud váš účet existuje, obdržíte za pár minut e-mail s instrukcemi pro odemčení vašeho účtu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ unlocked: Váš účet byl úspěšně odemčen. Pro pokračování se prosím přihlaste.
+ errors:
+ messages:
+ already_confirmed: byl již potvrzen, prosím zkuste se přihlásit
+ confirmation_period_expired: musí být potvrzen do %{period}, prosím vyžádejte si nový
+ expired: vypršel, prosím vyžádejte si nový
+ not_found: nenalezen
+ not_locked: nebyl uzamčen
+ not_saved:
+ one: '1 chyba zabránila uložení tohoto %{resource}:'
+ other: "%{count} chyb zabránila uložení tohoto %{resource}:"
diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml
index 7c6ac8b19..b201b7ca8 100644
--- a/config/locales/devise.da.yml
+++ b/config/locales/devise.da.yml
@@ -4,6 +4,7 @@ da:
confirmations:
confirmed: Din email adresse er blevet succesfuldt bekræftet.
send_instructions: Du vil modtage en mail med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
+ send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage en email med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek gerne din spam mappe hvis du ikke modtager denne email.
failure:
already_authenticated: Du er allerede logget ind.
inactive: Din konto er endnu ikke aktiveret.
@@ -18,6 +19,7 @@ da:
confirmation_instructions:
action: Bekræft email adresse
explanation: Du har oprettet en konto på %{host} med denne email adresse. Du er et klik fra at aktivere din konto. Hvis du ikke har oprettet dig, ignorer venligst denne email.
+ extra_html: Tjek også
reglerne for instansen og
vores betingelser.
subject: 'Mastodon: Bekræftelses instrukser for %{instance}'
title: Bekræft email adresse
email_changed:
@@ -32,14 +34,33 @@ da:
title: Kodeordet er blevet ændret
reconfirmation_instructions:
explanation: Bekræft den nye adresse for at ændre din email.
+ extra: Hvis denne ændring ikke blev foretaget af dig, ignorer denne email. Email adressen for denne Mastodon konto vil ikke blive ændret før du følger linket foroven.
subject: 'Mastodon: Bekræft email for %{instance}'
title: Bekræft email adresse
reset_password_instructions:
action: Ændre kodeord
- explanation: Du anmodede om et nyt kodeord for din konto.
+ explanation: Du anmodede om en ny adgangskode for din konto.
+ extra: Hvis du ikke har anmodet om dette, ignorer denne email. Din adgangskode vil ikke blive ændret før du har fulgt linket foroven og oprettet en ny.
+ subject: 'Mastodon: Instrukser for nulstilling af adgangskode'
title: Kodeordet er blevet nulstillet
+ unlock_instructions:
+ subject: 'Mastodon: Instruktioner for oplåsning'
+ omniauth_callbacks:
+ failure: Kunne ikke godkende dig fra %{kind} fordi "%{reason}".
+ success: Godkendelse fra %{kind} konto lykkedes.
+ passwords:
+ no_token: Du kan ikke tilgå denne side uden at komme fra en email om nulstilling af adgangskode. Hvis du kommer fra en email om nulstilling af adgangskode, tjek om du brugte det fulde link der blev angivet.
+ send_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ updated: Din adgangskode er nu blevet ændret. Du er nu logget ind.
+ updated_not_active: Din adgangskode blev ændret.
registrations:
+ destroyed: Farvel! Din konto er nu annulleret. Vi håber snart at se dig igen.
signed_up: Velkommen! Du har nu tilmeldt dig.
+ signed_up_but_inactive: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto endnu ikke er aktiveret.
+ signed_up_but_locked: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto er låst.
+ signed_up_but_unconfirmed: En besked med et bekræftelses link er nu blevet sendt til din email adresse. Følg linket for at aktivere din konti. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ update_needs_confirmation: Du har succesfuldt opdateret din konto, men vi er nødt til at bekræfte din email adresse. Tjek venligst din email og følg bekræftelses linket for at bekræfte din nye email adresse. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
updated: Din konto er nu blevet opdateret.
sessions:
already_signed_out: Du er nu logget ud.
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index 7e10f83b4..e9c98a63f 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -17,30 +17,30 @@ fr:
unconfirmed: Vous devez valider votre compte pour continuer.
mailer:
confirmation_instructions:
- action: Vérifier l'adresse courriel
- 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: S'il vous plaît, consultez également
1les règles de l'instance 2 et
3nos termes de service 4.
+ action: Vérifier l’adresse courriel
+ 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.
subject: Merci de confirmer votre inscription sur %{instance}
- title: Vérifier l'adresse courriel
+ 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 de l'instance si vous êtes bloqué hors de votre compte.
+ 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.
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 de l'instance si vous êtes bloqué 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 de l’instance si vous êtes bloqué·e hors de votre compte.
subject: Votre mot de passe a été modifié avec succès
title: Mot de passe modifié
reconfirmation_instructions:
explanation: Confirmez la nouvelle adresse pour changer votre courriel.
- extra: Si ce changement n' a pas été initié par vous, veuillez ignorer ce courriel. L'adresse courriel du compte Mastodon ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus.
- subject: 'Mastodon : Confirmez l''email pour %{instance}'
- title: Vérifier l'adresse courriel
+ extra: Si ce changement n’a pas été initié par vous, veuillez ignorer ce courriel. L’adresse courriel du compte Mastodon ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus.
+ subject: 'Mastodon : Confirmez l’adresse pour %{instance}'
+ title: Vérifier l’adresse courriel
reset_password_instructions:
action: Modifier le mot de passe
explanation: Vous avez demandé un nouveau mot de passe pour votre compte.
- extra: Si vous ne l'avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus et que vous n'en aurez pas créé un nouveau.
+ extra: Si vous ne l’avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus et que vous n’en aurez pas créé un nouveau.
subject: Instructions pour changer votre mot de passe
title: Réinitialisation du mot de passe
unlock_instructions:
diff --git a/config/locales/devise.ka.yml b/config/locales/devise.ka.yml
new file mode 100644
index 000000000..3267eb22e
--- /dev/null
+++ b/config/locales/devise.ka.yml
@@ -0,0 +1,82 @@
+---
+ka:
+ devise:
+ confirmations:
+ confirmed: თქვენი ელ-ფოსტის მისამართი წარმატებით დამოწმდა.
+ send_instructions: თქვენ მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორც დაამოწმოთ თქვენი ელ-ფოსტის მისამართი რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორც დაამოწმოთ თქვენი ელ-ფოსტის მისამართი რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ failure:
+ already_authenticated: უკვე შესული ხართ.
+ inactive: თქვენი ანგარიში ჯერ არაა აქტივირებული.
+ invalid: არასწორი %{authentication_keys} ან პაროლი.
+ last_attempt: თქვენი ანგარიშის ჩაკეტვამდე დაგრჩათ კიდევ ერთი მცდელობა.
+ locked: თქვენი ანგარიში ჩაიკეტა.
+ not_found_in_database: არასწორი %{authentication_keys} ან პაროლი.
+ timeout: თქვენს სესიას გაუვიდა ვადა. გთხოვთ შედით ახლიდან რომ გააგრძელოთ.
+ unauthenticated: გაგრძელებამდე საჭიროა შეხვიდეთ ან დარეგისტრირდეთ.
+ unconfirmed: გაგრძელებამდე საჭიროა დაამოწმოთ თქვენი ელ-ფოსტა.
+ mailer:
+ confirmation_instructions:
+ action: დაამოწმეთ ელ-ფოსტის მისამართი
+ explanation: თქვენ ამ ელ-ფოსტის მისამართი ანგარიში შექმენით %{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: 'ვერ მოხდა აუტენტიფიკაცია %{kind}-თან. მიზეზი: "%{reason}".'
+ success: წარმატებით შედგა აუტენტიფიკაცია %{kind} ანგარიშთან.
+ passwords:
+ no_token: ამ გვერდზე წვდომა ვერ გექნებათ თუ არ მოდიხართ პაროლის აღდგენის ელ-ფოსტის წერილიდან. თუ მოდიხართ პაროლის აღგენის წერილიდან, დაამოწმეთ რომ გადადიხართ სრულ ურლ-ზე.
+ send_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს პაროლის განახლების ბმულით, რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს პაროლის განახლების ბმულით, რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ updated: თქვენი პაროლი წარმატებით შეიცვალა. ახლა შესული ხართ.
+ updated_not_active: თქვენი პაროლი წარმატებით შეიცვალა.
+ registrations:
+ destroyed: ნახვამდის! თქვენი ანგარიში წარმატებით გაუქმდა. იმედი გვაქვს ისევ შევხვდებით.
+ signed_up: გამარჯობა! თქვენ წარმატებით დარეგისტრირდით.
+ signed_up_but_inactive: თქვენ წარმატებით დარეგისტრირდით. თუმცა, ავტორიზაცია ვერ შედგა, თქვენი ანგარიში ჯერ არაა გააქტიურებული.
+ signed_up_but_locked: თქვენ წარმატებით დარეგისტრირდით. თუმცა, აცტორიზაცია ვერ შედგა, თქვენი ანგარიში ჩაკეტილია.
+ signed_up_but_unconfirmed: წერილი დამოწმების ბმულით თქვენს ელ-ფოსტაზე გამოგზავნილია. გთხოვთ გაჰყევით ბმულს, რათა გაააქტიუროთ ანგარიში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ update_needs_confirmation: თქვენი ანგარიში წარმატებით განახლდა, მაგრამ გვესაჭიროება თქვენი ელ-ფოსტის მისამართის დამოწმება. შეამოწმეთ ელ-ფოსტა და დასამოწმებლად გადადით მიღებულ ბმულზე. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ updated: თქვენი ანგარიში წარმატებით განახლდა.
+ sessions:
+ already_signed_out: წარმატებით გახვედით.
+ signed_in: წარმატებით შეხვედით.
+ signed_out: წარმატებით გახვედით.
+ unlocks:
+ send_instructions: წერილს, ინსტრუქციებით თუ როგორ მოხსნათ ჩაკეტვა თქვენს ანგარიშს, მიიღებთ რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს ჩაკეტვის მოხნის ინსტრუქციებით. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ unlocked: თქვენს ანგარიშს ჩაკეტვა წარმატებით მოეხსნა. გაგრძელებისთვის, გთხოვთ გაიაროთ ავტორიზაცია.
+ errors:
+ messages:
+ already_confirmed: უკვე დამოწმდა, გთხოვთ სცადოთ ავტორიზაციის გავლა
+ confirmation_period_expired: საჭიროებს დამოწმებას პერიოდში %{period}, გთხოვთ მოითხოვოთ ახლიდან
+ expired: გაუვიდა ვადა, გთხოვთ მოითხოვოთ ახალი
+ not_found: ვერ იქნა ნაპოვნი
+ not_locked: არ ჩაკეტილა
+ not_saved:
+ one: "%{resource} ვერ დამახსოვრდა ერთი შეცდომის გამო:"
+ other: "%{resource} ვერ დამახსოვრდა %{count} შეცდომის გამო:"
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 53a4f4552..49fcca024 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -6,7 +6,7 @@ pl:
send_instructions: W ciągu kilku minut otrzymasz wiadomosć e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
failure:
- already_authenticated: Jesteś już zalogowany/zalogowana.
+ already_authenticated: Jesteś już zalogowany(-a).
inactive: Twoje konto nie zostało jeszcze aktywowane.
invalid: Nieprawidłowy %{authentication_keys} lub hasło.
last_attempt: Masz jeszcze jedną próbę; Twoje konto zostanie zablokowane jeśli się nie powiedzie.
@@ -18,28 +18,28 @@ pl:
mailer:
confirmation_instructions:
action: Zweryfikuj adres e-mail
- explanation: Utworzyłeś 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: 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.
extra_html: Przeczytaj też
regulamin instancji i
nasze zasady użytkowania.
subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail'
title: Zweryfikuj adres e-mail
email_changed:
explanation: 'Adres e-mail dla Twojego konta zostanie zmieniony na:'
- extra: Jeżeli nie próbowałeś zmienić adresu e-mail, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień natychmiastowo hasło lub skontaktuj się z administratorem isntancji, jeżeli nie masz dostępu do konta.
+ extra: Jeżeli nie próbowałeś(-aś) zmienić adresu e-mail, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień natychmiastowo hasło lub skontaktuj się z administratorem isntancji, jeżeli nie masz dostępu do konta.
subject: 'Mastodon: Zmieniono adres e-mail'
title: Nowy adres e-mail
password_change:
explanation: Hasło do Twojego konta zostało zmienione.
- extra: Jeżeli nie zmieniałeś hasła, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień hasło natychmiastowo lub skontaktuj się z administratorem instancji, jeżeli nie masz dostępu do konta.
+ extra: Jeżeli nie zmieniałeś(-aś) hasła, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień hasło natychmiastowo lub skontaktuj się z administratorem instancji, jeżeli nie masz dostępu do konta.
subject: 'Mastodon: Zmieniono hasło'
title: Zmieniono hasło
reconfirmation_instructions:
explanation: Potwierdź nowy adres aby zmienić e-mail.
- extra: Jeżeli nie próbowałeś zmienić e-maila, zignoruj tą wiadomość. Adres e-mail przypisany do konta Mastodona nie ulegnie zmianie, jeżeli nie użyjesz powyższego odnośniku.
+ extra: Jeżeli nie próbowałeś(-aś) zmienić e-maila, zignoruj tą wiadomość. Adres e-mail przypisany do konta Mastodona nie ulegnie zmianie, jeżeli nie użyjesz powyższego odnośniku.
subject: 'Mastodon: Potwierdź adres e-mail na &{instance}'
title: Zweryfikuj adres e-mail
reset_password_instructions:
action: Zmień hasło
- explanation: Próbowałeś uzyskać nowe hasło do swojego konta.
+ explanation: Próbowałeś(-aś) uzyskać nowe hasło do swojego konta.
extra: Jeżeli to nie Ty, zignoruj tą wiadomość. Twoje hasło nie ulegnie zmianie, jeżeli nie wykorzystasz powyższego odnośnika i nie utworzysz nowego hasła.
subject: 'Mastodon: Instrukcje ustawienia nowego hasła'
title: Przywracanie hasła
@@ -49,10 +49,10 @@ pl:
failure: 'Uwierzytelnienie przez %{kind} nie powiodło się, ponieważ: "%{reason}".'
success: Uwierzytelnienie przez %{kind} powiodło się.
passwords:
- no_token: Dostęp do tej strony możliwy jest wyłącznie za pomocą odnośnika z e-maila z instrukcjami ustawienia nowego hasła. Jeśli skorzystałeś/aś z takiego odnośnika, upewnij się, że został wykorzystany/skopiowany cały odnośnik.
+ no_token: Dostęp do tej strony możliwy jest wyłącznie za pomocą odnośnika z e-maila z instrukcjami ustawienia nowego hasła. Jeśli skorzystałeś(-aś) z takiego odnośnika, upewnij się, że został wykorzystany/skopiowany cały odnośnik.
send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją ustawienia nowego hasła. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail zawierającą odnośnik pozwalający na ustawienie nowego hasła. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
- updated: Twoje hasło zostało zmienione. Jesteś zalogowany/a.
+ updated: Twoje hasło zostało zmienione. Jesteś zalogowany(-a).
updated_not_active: Twoje hasło zostało zmienione.
registrations:
destroyed: Twoje konto zostało zawieszone. Mamy jednak nadzieję, że do nas wrócisz. Do zobaczenia!
@@ -63,9 +63,9 @@ pl:
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.
sessions:
- already_signed_out: Zostałeś/aś wylogowany/a.
- signed_in: Zostałeś/aś zalogowany/a.
- signed_out: Zostałeś/aś wylogowany/a.
+ already_signed_out: Zostałeś(-aś) wylogowany(-a).
+ signed_in: Zostałeś(-aś) zalogowany(-a).
+ signed_out: Zostałeś(-aś) wylogowany(-a).
unlocks:
send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcjami odblokowania konta. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twoje konto istnieje, instrukcje odblokowania go otrzymasz w wiadomości e-mail w ciągu kilku minut. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml
deleted file mode 100644
index fb819978f..000000000
--- a/config/locales/devise.tr.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-tr:
- simple_form:
- hints:
- defaults:
- avatar: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 400x400px büyüklüğüne indirgenecektir
- display_name: "%{count} karakter kaldı"
- header: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 700x335px büyüklüğüne indirgenecektir.
- locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar.
- note: "%{count} karakter kaldı"
- imports:
- data: Diğer Mastodon sunucusundan dışarı aktardığınız CSV dosyası
- sessions:
- otp: Telefonunuzdaki two-factor kodunuzu giriniz veya kurtarma kodlarınızdan birini giriniz.
- labels:
- defaults:
- avatar: Profil resmi
- confirm_new_password: Yeni parolanız (tekrar)
- confirm_password: Parolanız (tekrar)
- current_password: Mevcut parolanız
- data: Dosya
- display_name: Görünen adınız
- email: E-posta adresiniz
- header: Kapak resmi
- locale: Dil
- locked: Hesabımı kilitle
- new_password: Yeni parolanız
- note: Kişisel bilgiler
- otp_attempt: İki-faktörlü kod
- password: Parolanız
- setting_auto_play_gif: GIF'leri otomatik oynatt
- setting_boost_modal: Boost etmeden önce onay diyaloğu göster
- setting_default_privacy: Gönderi gizliliği
- severity: Zorluk
- type: Dosya türü
- username: Kullanıcı adınız
- interactions:
- must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle
- must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle
- notification_emails:
- digest: Özet e-postaları gönder
- favourite: Biri durumumu favorilerine eklediginde bana e-posta gönder
- follow: Biri beni takip ettiğinde bana e-posta gönder
- follow_request: Biri bana takip isteği gönderdiğinde, bana e-posta gönder
- mention: Biri benden bahsettiğinde, bana e-posta gönder
- reblog: Biri durumumu paylaştığında, bana e-posta gönder
- 'no': Hayır
- required:
- mark: "*"
- text: gerekli
- 'yes': Evet
diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/doorkeeper.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/doorkeeper.co.yml b/config/locales/doorkeeper.co.yml
index 52777eaf0..542ad7c57 100644
--- a/config/locales/doorkeeper.co.yml
+++ b/config/locales/doorkeeper.co.yml
@@ -114,7 +114,29 @@ co:
application:
title: Auturizazione OAuth riquestata
scopes:
- follow: bluccà, sbluccà, è reghje l’abbunamenti
- push: Riceve nutificazione push per u vostru contu
- read: leghje l’infurmazione di u vostru contu
- write: mandà missaghji per voi
+ follow: Mudificà rilazione trà i conti
+ push: Riceve e vostre nutificazione push
+ read: leghje tutte l’infurmazioni di u vostru contu
+ read:accounts: Vede l'infurmazione di i conti
+ read:blocks: vede i vostri blucchimi
+ read:favourites: vede i vostri favuriti
+ read:filters: vede i vostri filtri
+ read:follows: vede i vostri abbunamenti
+ read:lists: vede e vostre liste
+ read:mutes: vede i vostri piattati
+ read:notifications: vede e vostre nutificazione
+ read:reports: vede i vostri signalamenti
+ read:search: ricercà per voi
+ read:statuses: vede tutti i statuti
+ write: mudificà i dati di u vostru contu
+ write:accounts: mudificà u prufile
+ write:blocks: bluccà conti è dumini
+ write:favourites: aghjustà statuti à i favuriti
+ write:filters: creà filtri
+ write:follows: siguità conti
+ write:lists: creà liste
+ write:media: caricà fugliali media
+ write:mutes: piattà persone è cunversazione
+ write:notifications: sguassà e nutificazione
+ write:reports: palisà altre persone
+ write:statuses: pubblicà statuti
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index 876f448c7..352b31895 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -4,3 +4,139 @@ cs:
attributes:
doorkeeper/application:
name: Název aplikace
+ redirect_uri: URI přesměrování
+ scopes: Rozsahy
+ website: Stránka aplikace
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: nesmí obsahovat fragment.
+ invalid_uri: musí být platné URI.
+ relative_uri: musí být apsolutní URI.
+ secured_uri: musí být URI HTTPS/SSL.
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: Autorizovat
+ cancel: Zrušit
+ destroy: Zničit
+ edit: Upravit
+ submit: Odeslat
+ confirmations:
+ destroy: Jste si jistý/á?
+ edit:
+ title: Upravit aplikaci
+ form:
+ error: A jéje! Zkontrolujte svůj formulář kvůli případným chybám
+ help:
+ native_redirect_uri: Použijte %{native_redirect_uri} pro místní testy
+ redirect_uri: Jedno URI na řádek
+ scopes: Oddělujte rozsahy mezerami. Pro použití výchozích rozsahů zanechte prázdné.
+ index:
+ application: Aplikace
+ callback_url: Zpáteční URL
+ delete: Smazat
+ name: Název
+ new: Nová aplikace
+ scopes: Rozsahy
+ show: Zobrazit
+ title: Vaše aplikace
+ new:
+ title: Nová aplikace
+ show:
+ actions: Akce
+ application_id: Klientský klíč
+ callback_urls: Zpáteční URL
+ scopes: Rozsahy
+ secret: Klientské tajemství
+ title: 'Aplikace: %{name}'
+ authorizations:
+ buttons:
+ authorize: Ověřit
+ deny: Zamítnout
+ error:
+ title: Vyskytla se chyba
+ new:
+ able_to: Bude moci
+ prompt: Aplikace %{client_name} vyžaduje přístup k vašemu účtu
+ title: Je vyžadována autorizace
+ show:
+ title: Zkopírujte tento autorizační kód a vložte ho do aplikace.
+ authorized_applications:
+ buttons:
+ revoke: Zamítnout
+ confirmations:
+ revoke: Jste si jistý/á?
+ index:
+ application: Aplikace
+ created_at: Autorizováno
+ date_format: "%d.%m.%Y %H:%M:%S"
+ scopes: Rozsahy
+ title: Vaše autorizované aplikace
+ errors:
+ 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_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ý.
+ invalid_resource_owner: Poskytnuté přihlašovací údaje vlastníka zdroje nejsou platné, nebo vlastník zdroje nemůže být nalezen
+ invalid_scope: Požadovaný rozsah je neplatný, neznámý, nebo malformovaný.
+ invalid_token:
+ expired: Přístupový token vypršel
+ revoked: Přístupový token byl zamítnut
+ unknown: Přístupový token je neplatný
+ resource_owner_authenticator_not_configured: Nález Resource Owner selhal, protože Doorkeeper.configure.resource_owner_authenticator nebylo nakonfigurováno.
+ server_error: Autorizační server se setkal s neočekávanou chybou, která mu zabránila ve vykonání požadavku.
+ temporarily_unavailable: Autorizační server vás nyní nemůže obsloužit kvůli dočasnému přetížení či údržbě serveru.
+ unauthorized_client: Klient není autorizován k vykonání tohoto požadavku touto metodou.
+ unsupported_grant_type: Tento typ oprávnění není podporován autorizačním serverem.
+ unsupported_response_type: Autorizační server nepodporuje tento typ odpovědi.
+ flash:
+ applications:
+ create:
+ notice: Aplikace vytvořena.
+ destroy:
+ notice: Aplikace smazána.
+ update:
+ notice: Aplikace aktualizována.
+ authorized_applications:
+ destroy:
+ notice: Aplikace zamítnuta.
+ layouts:
+ admin:
+ nav:
+ applications: Aplikace
+ oauth2_provider: Poskytovatel OAuth2
+ application:
+ title: Je požadována autorizace OAuth
+ scopes:
+ follow: upravovat vztahy mezi profily
+ push: přijímat vaše push oznámení
+ read: vidět všechna data vašeho účtu
+ read:accounts: vidět informace o účtech
+ read:blocks: vidět vaše blokace
+ read:favourites: vidět vaše oblíbení
+ read:filters: vidět vaše filtry
+ read:follows: vidět vaše sledování
+ read:lists: vidět vaše seznamy
+ read:mutes: vidět vaše ignorace
+ read:notifications: vidět vaše oznámení
+ read:reports: vidět vaše nahlášení
+ read:search: vyhledávat za vás
+ read:statuses: vidět všechny příspěvky
+ write: měnit všechna data vašeho účtu
+ write:accounts: měnit váš profil
+ write:blocks: blokovat účty a domény
+ write:favourites: oblibovat si příspěvky
+ write:filters: vytvářet filtry
+ write:follows: sledovat lidi
+ write:lists: vytvářet seznamy
+ write:media: nahrávat mediální soubory
+ write:mutes: ignorovat lidi a konverzace
+ write:notifications: vymazávat vaše oznámení
+ write:reports: nahlašovat jiné uživatele
+ write:statuses: publikovat příspěvky
diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml
index 051bfd237..df964e4b1 100644
--- a/config/locales/doorkeeper.da.yml
+++ b/config/locales/doorkeeper.da.yml
@@ -78,14 +78,22 @@ da:
errors:
messages:
access_denied: Ejeren af ressourcen eller godkendelses serveren afviste anmodningen.
+ credential_flow_not_configured: Flytning af ressourceejers adgangskode mislykkedes grundet Doorkeeper.configure.resource_owner_from_credentials ikke er opsat.
+ invalid_client: Klient autentikationen mislykkedes grundet en ukendt klient, ingen klient autentikation fulgte med, eller en ikke-understøttet metode.
+ invalid_grant: Autoriseringen er ugyldig, udløbet, ophævet, passer ikke med den henvisnings URI der blev brugt i autoriserings anmodningen, eller blev givet til en anden klient.
invalid_redirect_uri: Ormdirigerings-uri'en der blev angivet er ikke gyldig.
invalid_request: Anmodningen mangler en parametre, inkluderer en ikke understøttet parametre værdi eller er på en eller anden måde deformeret.
+ invalid_resource_owner: De angivne ressource ejer kredentialer er ikke gyldige, eller ressource ejeren kunne ikke blive fundet
invalid_scope: Det anmodede omfang er ugyldigt, ukendt eller deformeret.
invalid_token:
expired: Adgangs-beviset er udløbet
revoked: Adgangs-beviset er blevet ophævet
unknown: Adgangs-beviset er ugyldigt
+ resource_owner_authenticator_not_configured: Ressource ejeren kunne ikke blive fundet grundet Doorkeeper.configure.resource_owner_authenticator ikke er konfigureret.
+ server_error: Autoriserings serveren blev mødt med en uventet betingelse der forhindrede den i at færdiggøre anmodningen.
+ temporarily_unavailable: Autoriserings serveren er på nuværende tidspunkt ikke i stand til at håndtere anmodningen grundet midlertidig overlast eller serveren er ved at blive opdateret.
unauthorized_client: Klienten er ikke godkendt til at udføre denne anmodning ved at bruge denne metode.
+ unsupported_grant_type: Autoriserings typen understøttes ikke af autoriserings serveren.
unsupported_response_type: Godkendelses serveren understøtter ikke denne type respons.
flash:
applications:
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index 7f3764180..bf4b06e7c 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -15,7 +15,7 @@ de:
fragment_present: darf kein Fragment enthalten.
invalid_uri: muss ein valider URI sein.
relative_uri: muss ein absoluter URI sein.
- secured_uri: muss ein HTTPS/SSL-URI sein.
+ secured_uri: muss ein HTTPS-/SSL-URI sein.
doorkeeper:
applications:
buttons:
@@ -59,7 +59,7 @@ de:
error:
title: Ein Fehler ist aufgetreten
new:
- able_to: Es wird in der Lage sein zu
+ able_to: 'Es wird folgende Befugnisse haben:'
prompt: Die Anwendung %{client_name} verlangt Zugriff auf dein Konto
title: Autorisierung erforderlich
show:
@@ -115,13 +115,13 @@ de:
title: OAuth-Autorisierung nötig
scopes:
follow: Kontenbeziehungen verändern
- push: erhalte deine Push-Benachrichtigungen
+ push: deine Push-Benachrichtigungen erhalten
read: all deine Daten lesen
read:accounts: deine Konteninformationen einsehen
read:blocks: deine Blockaden einsehen
read:favourites: deine Favoriten ansehen
read:filters: deine Filter ansehen
- read:follows: deine Follows sehen
+ read:follows: sehen, wem du folgst
read:lists: deine Listen sehen
read:mutes: deine Stummschaltungen einsehen
read:notifications: deine Benachrichtigungen sehen
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 9713c462c..e80ba3236 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -114,7 +114,29 @@ eo:
application:
title: OAuth-a rajtigo bezonata
scopes:
- follow: sekvi, bloki, malbloki kaj malsekvi kontojn
- push: ricevi puŝ-sciigojn por via konto
- read: legi la datumojn de via konto
- write: mesaĝi kiel vi
+ follow: ŝanĝi rilatojn al aliaj kontoj
+ push: ricevi viajn puŝ-sciigojn
+ read: legi ĉiujn datumojn de via konto
+ read:accounts: vidi la informojn de la konto
+ read:blocks: vidi viajn blokojn
+ read:favourites: vidi viajn stelumojn
+ read:filters: vidi viajn filtrilojn
+ read:follows: vidi viajn sekvatojn
+ read:lists: vidi viajn listojn
+ read:mutes: vidi viajn silentigojn
+ read:notifications: vidi viajn sciigojn
+ read:reports: vidi viajn signalojn
+ read:search: serĉi vianome
+ read:statuses: vidi ĉiujn mesaĝojn
+ write: ŝanĝi ĉiujn datumojn de via konto
+ write:accounts: ŝanĝi vian profilon
+ write:blocks: bloki kontojn kaj domajnojn
+ write:favourites: stelumitaj mesaĝoj
+ write:filters: krei filtrilojn
+ write:follows: sekvi homojn
+ write:lists: krei listojn
+ write:media: alŝuti aŭdovidaĵojn
+ write:mutes: silentigi homojn kaj konversaciojn
+ write:notifications: forigi viajn sciigojn
+ write:reports: signali aliajn homojn
+ write:statuses: publikigi mesaĝojn
diff --git a/config/locales/doorkeeper.eu.yml b/config/locales/doorkeeper.eu.yml
index aba3166ac..f98babae6 100644
--- a/config/locales/doorkeeper.eu.yml
+++ b/config/locales/doorkeeper.eu.yml
@@ -114,7 +114,29 @@ eu:
application:
title: OAuth autorizazioa behar da
scopes:
- follow: jarraitu kontuak, blokeatu, utzi jarraitzeari eta desblokeatu
- push: jaso zure kontuaren push jakinarazpenak
- read: irakurri zure kontuko datuak
- write: zure izenean argitaratu
+ follow: aldatu kontuaren erlazioak
+ push: jaso push jakinarazpenak
+ read: irakurri zure kontuko datu guztiak
+ read:accounts: ikusi kontuaren informazioa
+ read:blocks: ikusi zure blokeoak
+ read:favourites: ikusi zure gogokoak
+ read:filters: ikusi zure iragazkiak
+ read:follows: ikusi zuk jarraitutakoak
+ read:lists: ikusi zure zerrendak
+ read:mutes: ikusi zuk mutututakoak
+ read:notifications: ikusi zure jakinarazpenak
+ read:reports: ikusi zure salaketak
+ read:search: bilatu zure izenean
+ read:statuses: ikusi mezu guztiak
+ write: kontuaren datu guztiak aldatzea
+ write:accounts: zure profila aldatzea
+ write:blocks: kontuak eta domeinuak blokeatzea
+ write:favourites: gogoko mezuak
+ write:filters: sortu iragazkiak
+ write:follows: jarraitu jendea
+ write:lists: sortu zerrendak
+ write:media: igo multimedia fitxategiak
+ write:mutes: mututu pertsonak eta elkarrizketak
+ write:notifications: garbitu zure jakinarazpenak
+ write:reports: salatu beste jendea
+ write:statuses: argitaratu mezuak
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 09660cb49..eae691659 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -7,7 +7,7 @@ fr:
redirect_uri: L’URL de redirection
scope: Portée
scopes: Étendues
- website: Site web de l'application
+ website: Site web de l’application
errors:
models:
doorkeeper/application:
@@ -64,7 +64,7 @@ fr:
prompt: Autoriser %{client_name} à utiliser votre compte ?
title: Autorisation requise
show:
- title: Copiez ce code d'autorisation et collez-le dans l'application.
+ title: Copiez ce code d’autorisation et collez-le dans l’application.
authorized_applications:
buttons:
revoke: Annuler
@@ -119,11 +119,12 @@ fr:
push: recevoir vos notifications
read: lire toutes les données de votre compte
read:accounts: voir les informations du compte
- read:blocks: voir vos bloqués
+ read:blocks: voir vos bloquages
read:favourites: voir vos favoris
read:filters: voir vos filtres
+ read:follows: voir vos suivis
read:lists: voir vos listes
- read:mutes: voir vos silenciés
+ read:mutes: voir vos masquages
read:notifications: voir vos notifications
read:reports: voir vos rapports
read:search: rechercher en votre nom
@@ -131,10 +132,12 @@ fr:
write: modifier toutes les données de votre compte
write:accounts: modifier votre profil
write:blocks: bloquer des comptes et des domaines
+ write:favourites: statuts favoris
write:filters: créer des filtres
write:follows: suivre les gens
write:lists: créer des listes
write:media: téléverser des fichiers-média
- write:mutes: silencier des gens et des conversations
+ write:mutes: masquer des gens et des conversations
write:notifications: nettoyer vos notifications
+ write:reports: rapporter d’autres personnes
write:statuses: publier des statuts
diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml
index 37b6f1013..a76130bb9 100644
--- a/config/locales/doorkeeper.it.yml
+++ b/config/locales/doorkeeper.it.yml
@@ -138,4 +138,5 @@ it:
write:media: caricare media
write:mutes: silenziare persone e conversazioni
write:notifications: cancellare le tue notifiche
+ write:reports: fare rapporto su altre persone
write:statuses: pubblicare status
diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml
index 76174ef79..9bc2d9a80 100644
--- a/config/locales/doorkeeper.ja.yml
+++ b/config/locales/doorkeeper.ja.yml
@@ -133,7 +133,7 @@ ja:
write:blocks: ユーザーのブロックやドメインの非表示
write:favourites: トゥートのお気に入り登録
write:filters: フィルターの変更
- write:follows: フォローの変更
+ write:follows: あなたの代わりにフォロー、アンフォロー
write:lists: リストの変更
write:media: メディアのアップロード
write:mutes: アカウントや会話のミュート
diff --git a/config/locales/doorkeeper.ka.yml b/config/locales/doorkeeper.ka.yml
new file mode 100644
index 000000000..e462e66f1
--- /dev/null
+++ b/config/locales/doorkeeper.ka.yml
@@ -0,0 +1,142 @@
+---
+ka:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: აპლიკაციის სახელი
+ redirect_uri: გადამისამართების ური
+ scopes: ფარგლები
+ website: აპლიკაციის ვებ-საიტი
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: ვერ ექნება ფრაგმეტი.
+ invalid_uri: უნდა იყოს ვალიდური ური.
+ relative_uri: უნდა იყოს აბსოლუტური ური.
+ secured_uri: უნდა იყოს ჰტტპს/სსლ ური.
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: ავტორიზაცია
+ cancel: უარყოფა
+ destroy: გაუქმება
+ edit: შეცვლა
+ submit: გაგრძელება
+ confirmations:
+ destroy: დარწმუნებული ხართ?
+ edit:
+ title: აპლიკაციის შეცვლა
+ form:
+ error: უპს! შესაძლო შეცდომებზე შეამოწმეთ თქვენი ფორმა
+ help:
+ native_redirect_uri: ლოკალური ტესტებისთვის მოიხმარეთ %{native_redirect_uri}
+ redirect_uri: გამოიყენეთ ერთი ხაზი თითო ური-სთვის
+ scopes: ფარგლები გამოჰყავით სიცარიელით. საწყისი ფარგლის გამოსაყენებლად დატოვეთ ცარიელი.
+ index:
+ application: აპლიკაცია
+ callback_url: ქოლბექ ურლ
+ delete: გაუქმება
+ name: სახელი
+ new: ახალი აპლიკაცია
+ scopes: ფარგლები
+ show: ჩვენება
+ title: თქვენი აპლიკაციები
+ new:
+ title: ახალი აპლიკაცია
+ show:
+ actions: მოქმედებები
+ application_id: კლიენტის გასაღები
+ callback_urls: ქოლბექ ურლები
+ scopes: ფარგლები
+ secret: კლიენტის სერვერი
+ title: 'აპლიკაცია: %{name}'
+ authorizations:
+ buttons:
+ authorize: ავტორიზაცია
+ deny: აკრძალვა
+ error:
+ title: წარმოიშვა შეცდომა
+ new:
+ able_to: ის შეძლებს
+ prompt: აპლიკაცია %{client_name} ითხოვს წვდომას თქვენს ანგარიშზე
+ title: საჭიროა ავტორიზაცია
+ show:
+ title: დააკოპირეთ ეს ავტორიზაციის კოდი და ჩასვით აპლიკაციაში.
+ authorized_applications:
+ buttons:
+ revoke: გაუქმება
+ confirmations:
+ revoke: დარწმუნებული ხართ?
+ index:
+ application: აპლიკაცია
+ created_at: ავტორიზებული
+ date_format: "%Y-%m-%d %H:%M:%S"
+ scopes: ფარგლები
+ title: თქვენი ავტორიზებული აპლიკაციები
+ errors:
+ messages:
+ access_denied: რესურსის მფლობელმა ან აუტორიზაციის სერვერმა აკრძალა ეს მოთხოვნა.
+ credential_flow_not_configured: რესურის მფლობელის პაროლის რწმუნებულებების ნაკადი ვერ შესრულდა არაკონფიგურირებული Doorkeeper.configure.resource_owner_from_credentials გამო.
+ invalid_client: ამოუცნობი კლიენტის გამო კლიენტ აუტენტიფიკაცია ვერ მოხერხდა, კლიენტის აუტენტიფიკაცია არ იყო თან დართული, ან მხარდაუჭერელი აუტენტიფიკაციის მეთოდი.
+ invalid_grant: მოწოდებული ავტორიზაციის გრანტი არასწორია, ვადაგასულია, გაუქმებულია არ ემთხვევა გადამისამართების ურის, რომელიც მოიხმარება ავტორიზაცის მოთხოვნაში, ან მიეცა სხვა კლიენტს.
+ invalid_redirect_uri: მითითებული გადამისამართების ური არაა ვალიდური.
+ invalid_request: მოთხოვნას აკლია აუცილებელი პარამეტრი, მოიცავს მხარდაუჭერელ პარამეტრის მნიშვნელობას, ან სხვაგვარად არაა გამართული.
+ invalid_resource_owner: მოწოდებული რესურსის მფლობელის რწმუნებულებები არაა ვალიდური, ან მფლობელის პონვა ვერ ხერხდება
+ invalid_scope: მოთხოვნილი ფარგალი არასწორია, ამოუცნობია ან არაა გამართული.
+ invalid_token:
+ expired: წვდომის ტოკენს გაუვიდა ვადა
+ revoked: წვდომის ტოკენი გაუქმდა
+ unknown: წვდომის ტოკენი არაა ვალიდური
+ resource_owner_authenticator_not_configured: რესურსის მფლობელის მოპოვება არ შედგა Doorkeeper.configure.resource_owner_authenticator კონფიგურაციის არ არსებობის გამო.
+ server_error: აუტორიზაციის სერვერს შეხვდა მოულოდნელი მდგომარეობა, რამაც ხელი შეუშალა მას აღესრულებინა მოთხონვა.
+ temporarily_unavailable: ავტორიზაციის სერვერი ამჟამად ვერ ახერხებს მოთხოვნის შემუშავებას დროებითი გადატვირთვის ან სერვერის შენარჩუნების გამო.
+ unauthorized_client: კლიენტი არაა ავტორიზებული შეასრულოს ეს მოთხოვნა ამ მეთოდით.
+ unsupported_grant_type: ავტორიზაციის გრანტის სახეობა არაა მხარდაჭერილი ავტორიზაციის სერვერის მიერ.
+ unsupported_response_type: ავტორიზაციის სერვერი არ უჭერს მხარს ამ პასუხის სახეობას.
+ flash:
+ applications:
+ create:
+ notice: აპლიკაცია შეიქმნა.
+ destroy:
+ notice: აპლიკაცია გაუქმდა.
+ update:
+ notice: აპლიკაცია განახლდა.
+ authorized_applications:
+ destroy:
+ notice: აპლიკაცია წაიშალა.
+ layouts:
+ admin:
+ nav:
+ applications: აპლიკაციები
+ oauth2_provider: ოუ-აუთ2 პროვაიდერი
+ application:
+ title: საჭიროა ოუ-აუთ ავტორიზაცია
+ scopes:
+ follow: შეცვალეთ ანგარიშის ურთიერთობები
+ push: მიიღეთ თქვენი ფუშ შეტყობინებები
+ read: წაიკითხოს მთელი თქვენი ანგარიშის მონაცემები
+ read:accounts: იხილოს ანგარიშის ინფორმაცია
+ read:blocks: იხილოს თქვენი ბლოკები
+ read:favourites: იხილოს თქვენი ფავორიტები
+ read:filters: იხილოს თქვენი ფილრები
+ read:follows: იხილოს თქვენი მიდევნებები
+ read:lists: იხილოს თქვენი სიები
+ read:mutes: იხილოს თქვენი გაჩუმებები
+ read:notifications: იხილოს თქვენი შეტყობინებები
+ read:reports: იხილოს თქვენი რეპორტები
+ read:search: მოძებნოს თქვენი სახელით
+ read:statuses: იხილოს ყველა სტატუსი
+ write: შეცვალოს მთელი თქვენი ანგარიშის მონაცემები
+ write:accounts: შეცვალოს თქვენი პროფილი
+ write:blocks: დაბლოკოს ანგარიშები და დომენები
+ write:favourites: ფავორიტი სტატუსები
+ write:filters: შექმნას ფილტრები
+ write:follows: გაყვეს ხალხს
+ write:lists: შექმნას სიები
+ write:media: ატვირთოს მედია ფაილები
+ write:mutes: გააგჩუმოს ადამიანები და საუბრები
+ write:notifications: გაასუფთავოს თქვენი შეტყობინებები
+ write:reports: დაარეპორტოს სხვა ადამიანები
+ write:statuses: გამოაქვეყნოს სტატუსები
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 2e0254864..de724f6c9 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -90,7 +90,7 @@ pl:
revoked: Token dostępowy został unieważniony
unknown: Token dostępowy jest błędny
resource_owner_authenticator_not_configured: Wyszukiwanie właściciela zasobu nie powiodło się, ponieważ Doorkeeper.configure.resource_owner_authenticator nie został skonfigurowany.
- server_error: Serwer uwierzytelniający napotkał nieoczekiwand warunki, które uniemożliwiły obsłużenie żądania.
+ server_error: Serwer uwierzytelniający napotkał nieoczekiwane warunki, które uniemożliwiły obsłużenie żądania.
temporarily_unavailable: Serwer uwierzytelniający nie jest obecnie w stanie obsłużyć żądania z powodu tymczasowego przeciążenia lub prac konserwacyjnych.
unauthorized_client: Klient nie jest uprawniony do wykonania tego żądania przy pomocy tej metody.
unsupported_grant_type: Ten typ grantu uwierzytelniającego nie jest wspierany przez serwer uwierzytelniający.
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index afacfd7f7..dfab853c6 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -114,7 +114,29 @@ pt-BR:
application:
title: Autorização OAuth obrigatória
scopes:
- follow: seguir, bloquear, desbloquear e deixar de seguir outras contas
- push: receber notificações push na sua conta
- read: ler os dados da sua conta
- write: postar em seu nome
+ follow: modificar as relações com outras contas
+ push: receber suas notificações push
+ read: ler todos os dados da sua conta
+ read:accounts: ver as informações da conta
+ read:blocks: ver seus bloqueios
+ read:favourites: ver seus favoritos
+ read:filters: ver seus filtros
+ read:follows: ver quem você segue
+ read:lists: ver suas listas
+ read:mutes: ver seus usuários silenciados
+ read:notifications: ver suas notificações
+ read:reports: ver suas denúncias
+ read:search: buscar em seu nome
+ read:statuses: ver todos os status
+ write: modificar todos os dados da sua conta
+ write:accounts: modificar seu perfil
+ write:blocks: bloquear contas e domínios
+ write:favourites: status favoritos
+ write:filters: criar filtros
+ write:follows: seguir pessoas
+ write:lists: criar listas
+ write:media: enviar arquivos de mídia
+ write:mutes: silenciar pessoas e conversas
+ write:notifications: limpar suas notificações
+ write:reports: reportar outras pessoas
+ write:statuses: publicar status
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 0a88d628e..f37317559 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -72,7 +72,7 @@ ru:
index:
application: Приложение
created_at: Авторизовано
- date_format: "%Y-%m-%d %H:%M:%S"
+ date_format: "%d.%m.%Y %H:%M:%S"
scopes: Разрешения
title: Ваши авторизованные приложения
errors:
@@ -117,4 +117,26 @@ ru:
follow: подписываться, отписываться, блокировать и разблокировать аккаунты
push: принимать push-уведомления для Вашего аккаунта
read: читать данные Вашего аккаунта
- write: отправлять за Вас посты
+ read:accounts: видеть информацию об аккаунтах
+ read:blocks: видеть ваших заблокированных
+ read:favourites: видеть ваше избранное
+ read:filters: видеть ваши фильтры
+ read:follows: видеть, на кого вы подписаны
+ read:lists: видеть ваши списки
+ read:mutes: видеть список заглушенных
+ read:notifications: видеть ваши уведомления
+ read:reports: видеть ваши жалобы
+ read:search: использовать поиск
+ read:statuses: видеть все статусы
+ write: изменять все данные вашего аккаунта
+ write:accounts: редактировать ваш профиль
+ write:blocks: блокировать аккаунты и домены
+ write:favourites: отмечать статусы как избранные
+ write:filters: создавать фильтры
+ write:follows: подписываться на людей
+ write:lists: создавать списки
+ write:media: выкладывать медиаконтент
+ write:mutes: заглушать людей и обсуждения
+ write:notifications: очищать список уведомлений
+ write:reports: отправлять жалобы на других
+ write:statuses: публиковать статусы
diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml
index 0967ef424..c27457089 100644
--- a/config/locales/doorkeeper.sl.yml
+++ b/config/locales/doorkeeper.sl.yml
@@ -1 +1,6 @@
-{}
+---
+sl:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Ime programa
diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml
index d80abf01a..205ad026f 100644
--- a/config/locales/doorkeeper.uk.yml
+++ b/config/locales/doorkeeper.uk.yml
@@ -5,6 +5,8 @@ uk:
doorkeeper/application:
name: Ім'я
redirect_uri: URI перенаправлення
+ scopes: Рамки
+ website: Веб-сайт додатку
errors:
models:
doorkeeper/application:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 11ba128c1..67baee0f2 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -5,13 +5,13 @@ el:
about_mastodon_html: Το Mastodon είναι ένα κοινωνικό δίκτυο που βασίζεται σε ανοιχτά δικτυακά πρωτόκολλα και ελεύθερο λογισμικό ανοιχτού κώδικα. Είναι αποκεντρωμένο όπως το e-mail.
about_this: Σχετικά
administered_by: 'Διαχειρίζεται από:'
+ api: API
+ apps: Εφαρμογές κινητών
closed_registrations: Αυτή τη στιγμή οι εγγραφές σε αυτό τον κόμβο είναι κλειστές. Αλλά! Μπορείς να βρεις έναν άλλο κόμβο για να ανοίξεις λογαριασμό και να έχεις πρόσβαση από εκεί στο ίδιο ακριβώς δίκτυο.
contact: Επικοινωνία
contact_missing: Δεν έχει οριστεί
contact_unavailable: Μ/Δ
- description_headline: Τι είναι το %{domain};
- domain_count_after: άλλους διακομιστές
- domain_count_before: Συνδέεται με
+ documentation: Τεκμηρίωση
extended_description_html: |
Ένα καλό σημείο για κανόνες
Η αναλυτική περιγραφή δεν έχει ακόμα οριστεί
@@ -28,25 +28,30 @@ el:
hosted_on: Το Mastodon φιλοξενείται στο %{domain}
learn_more: Μάθε περισσότερα
other_instances: Λίστα κόμβων
+ privacy_policy: Πολιτική απορρήτου
source_code: Πηγαίος κώδικας
status_count_after: καταστάσεις
- status_count_before: Που έχουν γράψει
+ status_count_before: Που έγραψαν
+ terms: Όροι χρήσης
user_count_after: χρήστες
user_count_before: Σπίτι για
what_is_mastodon: Τι είναι το Mastodon;
accounts:
+ choices_html: 'Επιλογές του/της %{name}:'
follow: Ακολούθησε
followers: Ακόλουθοι
following: Ακολουθεί
+ joined: Εγγράφηκε στις %{date}
media: Πολυμέσα
moved_html: 'Ο/Η %{name} μετακόμισε στο %{new_profile_link}:'
network_hidden: Αυτή η πληροφορία δεν είναι διαθέσιμη
nothing_here: Δεν υπάρχει τίποτα εδώ!
people_followed_by: Χρήστες που ακολουθεί ο/η %{name}
people_who_follow: Χρήστες που ακολουθούν τον/την %{name}
+ pin_errors:
+ following: Πρέπει ήδη να ακολουθείς το άτομο που θέλεις να επιδοκιμάσεις
posts: Τουτ
posts_with_replies: Τουτ και απαντήσεις
- remote_follow: Απομακρυσμένη παρακολούθηση
reserved_username: Το όνομα χρήστη είναι κατειλημμένο
roles:
admin: Διαχειριστής
@@ -180,6 +185,7 @@ el:
unsuspend_account: Ο/Η %{name} ήρε την παύση του λογαριασμού του χρήστη %{target}
update_custom_emoji: Ο/Η %{name} ενημέρωσε το emoji %{target}
update_status: Ο/Η %{name} ενημέρωσε την κατάσταση του/της %{target}
+ deleted_status: "(διαγραμμένη δημοσίευση)"
title: Αρχείο ελέγχου
custom_emojis:
by_domain: Τομέας
@@ -206,6 +212,27 @@ el:
update_failed_msg: Αδυναμία ενημέρωσης του emoji
updated_msg: Επιτυχής ενημέρωση του Emoji!
upload: Ανέβασμα
+ dashboard:
+ backlog: χρονοκαθυστερημένες εργασίες
+ config: Διαμόρφωση
+ feature_deletions: Διαγραφή λογαριασμών
+ feature_invites: Σύνδεσμοι προσκλήσεων
+ feature_registrations: Εγγραφές
+ feature_relay: Ανταποκριτής ομοσπονδίας
+ features: Λειτουργίες
+ hidden_service: Ομοσπονδία με κρυμμένες υπηρεσίες
+ open_reports: ανοιχτές καταγγελίες
+ recent_users: Πρόσφατοι χρήστες
+ search: Αναζήτηση πλήρους κειμένου
+ single_user_mode: Λειτουργία μοναδιαίου χρήστη
+ software: Λογισμικό
+ space: Κατανάλωση χώρου
+ title: Ταμπλό
+ total_users: χρήστες συνολικά
+ trends: Τάσεις
+ week_interactions: αλληλεπιδράσεις αυτή την εβδομάδα
+ week_users_active: ενεργοί αυτή την εβδομάδα
+ week_users_new: χρήστες αυτή την εβδομάδα
domain_blocks:
add_new: Προσθήκη νέου
created_msg: Ο αποκλεισμός τομέα είναι υπό επεξεργασία
@@ -255,12 +282,21 @@ el:
search: Αναζήτηση
title: Γνωστοί κόμβοι
invites:
+ deactivate_all: Απενεργοποίηση όλων
filter:
all: Όλες
available: Διαθέσιμες
expired: Ληγμένες
title: Φίλτρο
title: Προσκλήσεις
+ relays:
+ add_new: Πρόσθεσε νέο ανταποκριτή (relay)
+ description_html: Ο
ομοσπονδιακός ανταποκριτής είναι ένας ενδιάμεσος εξυπηρετητής (server) που ανταλλάσσει μεγάλους όγκους δημόσιων τουτ μεταξύ εξυπηρετητών που εγγράφονται και δημοσιεύουν σε αυτόν.
Βοηθάει μικρούς και μεσαίους εξυπηρετητές να ανακαλύψουν περιεχόμενο στο fediverse, που υπό άλλες συνθήκες θα χρειαζόταν κάποιους τοπικούς χρήστες που να ακολουθούν χρήστες σε απομακρυσμένους εξυπηρετητές.
+ enable_hint: Μόλις ενεργοποιηθεί, ο εξυπηρετητής (server) σου θα εγγραφεί σε όλα τα δημόσια τουτ αυτού του ανταποκριτή (relay) και θα αρχίσει να προωθεί τα δικά του δημόσια τουτ σε αυτόν.
+ inbox_url: URL ανταποκριτή
+ setup: Όρισε μια σύνδεση ανταπόκρισης
+ status: Κατάσταση
+ title: Ανταποκριτές
report_notes:
created_msg: Επιτυχής δημιουργία σημείωσης καταγγελίας!
destroyed_msg: Επιτυχής διαγραφή σημείωσης καταγγελίας!
@@ -316,6 +352,9 @@ el:
peers_api_enabled:
desc_html: Ονόματα τομέων που αυτός ο κόμβος έχει ήδη συναντήσει στο fediverse
title: Δημοσίευση λίστας κόμβων που έχουν ανακαλυφθεί
+ preview_sensitive_media:
+ desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο
+ title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph
registrations:
closed_message:
desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags
@@ -336,11 +375,14 @@ el:
desc_html: Δείξε ένα σήμα προσωπικού στη σελίδα ενός χρήστη
title: Δείξε διακριτικό προσωπικού
site_description:
- desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα και στα meta tags. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα
< a>
και
< em>
.
+ desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα
< a>
και
< em>
.
title: Περιγραφή κόμβου
site_description_extended:
desc_html: Ένα καλό μέρος για τον κώδικα δεοντολογίας, τους κανόνες, τις οδηγίες και ό,τι άλλο διαφοροποιεί τον κόμβο σου. Δέχεται και κώδικα HTML
title: Προσαρμοσμένες εκτεταμένες πληροφορίες
+ site_short_description:
+ desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα πάρει την προκαθορισμένη περιγραφή του κόμβου.
+ title: Σύντομη περιγραφή του κόμβου
site_terms:
desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags
title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας
@@ -362,6 +404,7 @@ el:
media:
title: Πολυμέσα
no_media: Χωρίς πολυμέσα
+ no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη
title: Καταστάσεις λογαριασμού
with_media: Με πολυμέσα
subscriptions:
@@ -502,10 +545,13 @@ el:
true_privacy_html: Έχε υπ' όψιν σου πως
η πραγματική ιδιωτικότητα επιτυγχάνεται μόνο με κρυπτογράφηση από άκρη σε άκρη.
unlocked_warning_html: Μπορεί ο οποιοσδήποτε να σε ακολουθήσει και να βλέπει κατευθείαν τις ιδιωτικές ενημερώσεις σου. %{lock_link} για να αναθεωρήσεις και απορρίψεις ακόλουθους.
unlocked_warning_title: Ο λογαριασμός σου δεν είναι κλειδωμένος
+ footer:
+ developers: Ανάπτυξη
+ more: Περισσότερα…
+ resources: Πόροι
generic:
changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
- powered_by: παρέχεται από %{link}
- save_changes: Αποθήκευσε αλλαγές
+ save_changes: Αποθήκευσε τις αλλαγές
validation_errors:
one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα
other: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε τα παρακάτω %{count} σφάλματα
@@ -540,8 +586,6 @@ el:
expires_at: Λήγει
uses: Χρήσεις
title: Προσκάλεσε άτομα
- landing_strip_html: Ο/Η
%{name} είναι χρήστης στο %{link_to_root_path}. Μπορείς να ακολουθήσεις ή να αλληλεπιδράσεις μαζί τους αν έχεις λογαριασμό οπουδήποτε στο fediverse.
- landing_strip_signup_html: Αν όχι, μπορείς να
γραφτείς εδώ.
lists:
errors:
limit: Έχεις φτάσει το μέγιστο πλήθος επιτρεπτών λιστών
@@ -595,11 +639,11 @@ el:
decimal_units:
format: "%n%u"
units:
- billion: Δις.
- million: Εκ.
- quadrillion: Τετρ.
- thousand: Χ.
- trillion: Τρις.
+ billion: δις.
+ million: εκ.
+ quadrillion: τετράκις.
+ thousand: χ.
+ trillion: τρις.
pagination:
newer: Νεότερο
next: Επόμενο
@@ -612,11 +656,14 @@ el:
publishing: Δημοσίευση
web: Διαδίκτυο
remote_follow:
- acct: Γράψε το ΌνομαΧρήστη@τομέας από όπου θέλεις να ακολουθήσεις
+ acct: Γράψε το ΌνομαΧρήστη@τομέα από όπου θέλεις να εκτελέσεις την ενέργεια αυτή
missing_resource: Δεν βρέθηκε το απαιτούμενο URL ανακατεύθυνσης για το λογαριασμό σου
no_account_html: Δεν έχεις λογαριασμό; Μπορείς
να γραφτείς εδώ
proceed: Συνέχισε για να ακολουθήσεις
prompt: 'Θα ακολουθήσεις:'
+ remote_interaction:
+ proceed: Συνέχισε για να αλληλεπιδράσεις
+ prompt: 'Θέλεις να αλληλεπιδράσεις με αυτό το τουτ:'
remote_unfollow:
error: Σφάλμα
title: Τίτλος
@@ -700,16 +747,16 @@ el:
private: Τα μη δημόσια τουτ δεν καρφιτσώνονται
reblog: Οι προωθήσεις δεν καρφιτσώνονται
show_more: Δείξε περισσότερα
+ sign_in_to_participate: Εγγράφου για να συμμετάσχεις στη συζήτηση
title: '%{name}: "%{quote}"'
visibilities:
private: Μόνο ακόλουθοι
private_long: Εμφάνιση μόνο σε ακόλουθους
public: Δημόσιο
public_long: Βλέπει οποιοσδήποτε
- unlisted: Ακαταχώριστο
+ unlisted: Μη καταχωρημένο
unlisted_long: Βλέπει οποιοσδήποτε, αλλά δεν καταχωρείται στις δημόσιες ροές
stream_entries:
- click_to_show: Κλικ για εμφάνιση
pinned: Καρφιτσωμένο τουτ
reblogged: προωθημένο
sensitive_content: Ευαίσθητο περιεχόμενο
@@ -803,6 +850,7 @@ el:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Βάλε τον κωδικό που δημιούργησε η εφαρμογή πιστοποίησής σου για επιβεβαίωση
description_html: Αν ενεργοποιήσεις την
πιστοποίηση 2 παραγόντων (2FA), για να συνδεθείς θα πρέπει να έχεις το τηλέφωνό σου, που θα σου δημιουργήσει κλειδιά εισόδου.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 1c7eb54a1..6fe4fa290 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -5,13 +5,13 @@ en:
about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.
about_this: About
administered_by: 'Administered by:'
+ api: API
+ apps: Mobile apps
closed_registrations: Registrations are currently closed on this instance. However! You can find a different instance to make an account on and get access to the very same network from there.
contact: Contact
contact_missing: Not set
contact_unavailable: N/A
- description_headline: What is %{domain}?
- domain_count_after: other instances
- domain_count_before: Connected to
+ documentation: Documentation
extended_description_html: |
A good place for rules
The extended description has not been set up yet.
@@ -28,25 +28,39 @@ en:
hosted_on: Mastodon hosted on %{domain}
learn_more: Learn more
other_instances: Instance list
+ privacy_policy: Privacy policy
source_code: Source code
- status_count_after: statuses
+ status_count_after:
+ one: status
+ other: statuses
status_count_before: Who authored
- user_count_after: users
+ terms: Terms of service
+ user_count_after:
+ one: user
+ other: users
user_count_before: Home to
what_is_mastodon: What is Mastodon?
accounts:
+ choices_html: "%{name}'s choices:"
follow: Follow
- followers: Followers
+ followers:
+ one: Follower
+ other: Followers
following: Following
+ joined: Joined %{date}
media: Media
moved_html: "%{name} has moved to %{new_profile_link}:"
network_hidden: This information is not available
nothing_here: There is nothing here!
people_followed_by: People whom %{name} follows
people_who_follow: People who follow %{name}
- posts: Toots
+ pin_errors:
+ following: You must be already following the person you want to endorse
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots and replies
- remote_follow: Remote follow
reserved_username: The username is reserved
roles:
admin: Admin
@@ -180,6 +194,7 @@ en:
unsuspend_account: "%{name} unsuspended %{target}'s account"
update_custom_emoji: "%{name} updated emoji %{target}"
update_status: "%{name} updated status by %{target}"
+ deleted_status: "(deleted status)"
title: Audit log
custom_emojis:
by_domain: Domain
@@ -206,6 +221,27 @@ en:
update_failed_msg: Could not update that emoji
updated_msg: Emoji successfully updated!
upload: Upload
+ dashboard:
+ backlog: backlogged jobs
+ config: Configuration
+ feature_deletions: Account deletions
+ feature_invites: Invite links
+ feature_registrations: Registrations
+ feature_relay: Federation relay
+ features: Features
+ hidden_service: Federation with hidden services
+ open_reports: open reports
+ recent_users: Recent users
+ search: Full-text search
+ single_user_mode: Single user mode
+ software: Software
+ space: Space usage
+ title: Dashboard
+ total_users: users in total
+ trends: Trends
+ week_interactions: interactions this week
+ week_users_active: active this week
+ week_users_new: users this week
domain_blocks:
add_new: Add new
created_msg: Domain block is now being processed
@@ -255,12 +291,21 @@ en:
search: Search
title: Known instances
invites:
+ deactivate_all: Deactivate all
filter:
all: All
available: Available
expired: Expired
title: Filter
title: Invites
+ relays:
+ add_new: Add new relay
+ description_html: A
federation relay is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it.
It can help small and medium servers discover content from the fediverse, which would otherwise require local users manually following other people on remote servers.
+ enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it.
+ inbox_url: Relay URL
+ setup: Setup a relay connection
+ status: Status
+ title: Relays
report_notes:
created_msg: Report note successfully created!
destroyed_msg: Report note successfully deleted!
@@ -310,6 +355,9 @@ en:
contact_information:
email: Business e-mail
username: Contact username
+ custom_css:
+ desc_html: Modify the look with CSS loaded on every page
+ title: Custom CSS
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
title: Hero image
@@ -339,11 +387,14 @@ en:
desc_html: Show a staff badge on a user page
title: Show staff badge
site_description:
- desc_html: Introductory paragraph on the frontpage and in meta tags. You can use HTML tags, in particular
<a>
and
<em>
.
+ desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular
<a>
and
<em>
.
title: Instance description
site_description_extended:
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
title: Custom extended information
+ site_short_description:
+ desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
+ title: Short instance description
site_terms:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
@@ -365,6 +416,7 @@ en:
media:
title: Media
no_media: No media
+ no_status_selected: No statuses were changed as none were selected
title: Account statuses
with_media: With media
subscriptions:
@@ -374,6 +426,12 @@ en:
last_delivery: Last delivery
title: WebSub
topic: Topic
+ suspensions:
+ bad_acct_msg: The confirmation value didn't match up. Are you suspending the right account?
+ hint_html: 'To confirm the suspension of the account, please enter %{value} into the field below:'
+ proceed: Proceed
+ title: Suspend %{acct}
+ warning_html: 'Suspending this account will
irreversibly delete data from this account, which includes:'
title: Administration
admin_mailer:
new_report:
@@ -505,9 +563,12 @@ en:
true_privacy_html: Please mind that
true privacy can only be achieved with end-to-end encryption.
unlocked_warning_html: Anyone can follow you to immediately view your private statuses. %{lock_link} to be able to review and reject followers.
unlocked_warning_title: Your account is not locked
+ footer:
+ developers: Developers
+ more: More…
+ resources: Resources
generic:
changes_saved_msg: Changes successfully saved!
- powered_by: powered by %{link}
save_changes: Save changes
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -543,8 +604,6 @@ en:
expires_at: Expires
uses: Uses
title: Invite people
- landing_strip_html: "
%{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
- landing_strip_signup_html: If you don't, you can
sign up here.
lists:
errors:
limit: You have reached the maximum amount of lists
@@ -616,11 +675,14 @@ en:
publishing: Publishing
web: Web
remote_follow:
- acct: Enter your username@domain you want to follow from
+ acct: Enter your username@domain you want to act from
missing_resource: Could not find the required redirect URL for your account
no_account_html: Don't have an account? You can
sign up here
proceed: Proceed to follow
prompt: 'You are going to follow:'
+ remote_interaction:
+ proceed: Proceed to interact
+ prompt: 'You want to interact with this toot:'
remote_unfollow:
error: Error
title: Title
@@ -704,6 +766,7 @@ en:
private: Non-public toot cannot be pinned
reblog: A boost cannot be pinned
show_more: Show more
+ sign_in_to_participate: Sign in to participate in the conversation
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
@@ -713,7 +776,6 @@ en:
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
- click_to_show: Click to show
pinned: Pinned toot
reblogged: boosted
sensitive_content: Sensitive content
@@ -808,6 +870,7 @@ en:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Enter the code generated by your authenticator app to confirm
description_html: If you enable
two-factor authentication, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 389819f7f..996287335 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -5,13 +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
administered_by: 'Administrata de:'
+ api: API
+ apps: Poŝtelefonaj aplikaĵoj
closed_registrations: Registriĝoj estas nuntempe fermitaj en ĉi tiu nodo. Tamen, vi povas trovi alian nodon por fari konton kaj aliri al la sama reto de tie.
contact: Kontakti
contact_missing: Ne elektita
contact_unavailable: Ne disponebla
- description_headline: Kio estas %{domain}?
- domain_count_after: aliaj nodoj
- domain_count_before: Konektita al
+ documentation: Dokumentado
extended_description_html: |
Bona loko por reguloj
La detala priskribo ne estis elektita.
@@ -28,25 +28,30 @@ eo:
hosted_on: "%{domain} estas nodo de Mastodon"
learn_more: Lerni pli
other_instances: Listo de nodoj
+ privacy_policy: Privateca politiko
source_code: Fontkodo
status_count_after: mesaĝoj
status_count_before: Kie skribiĝis
+ terms: Uzkondiĉoj
user_count_after: uzantoj
user_count_before: Hejmo de
what_is_mastodon: Kio estas Mastodon?
accounts:
+ choices_html: 'Proponoj de %{name}:'
follow: Sekvi
followers: Sekvantoj
following: Sekvatoj
+ joined: Aliĝis je %{date}
media: Aŭdovidaĵoj
moved_html: "%{name} moviĝis al %{new_profile_link}:"
network_hidden: Tiu informo ne estas disponebla
nothing_here: Estas nenio ĉi tie!
people_followed_by: Sekvatoj de %{name}
people_who_follow: Sekvantoj de %{name}
+ pin_errors:
+ following: Vi devas sekvi la homon, kiun vi volas proponi
posts: Mesaĝoj
posts_with_replies: Mesaĝoj kaj respondoj
- remote_follow: Fore sekvi
reserved_username: La uzantnomo estas rezervita
roles:
admin: Administranto
@@ -180,6 +185,7 @@ eo:
unsuspend_account: "%{name} malhaltigis la konton de %{target}"
update_custom_emoji: "%{name} ĝisdatigis emoĝion %{target}"
update_status: "%{name} ĝisdatigis mesaĝon de %{target}"
+ deleted_status: "(forigita mesaĝo)"
title: Kontrola protokolo
custom_emojis:
by_domain: Domajno
@@ -206,6 +212,27 @@ eo:
update_failed_msg: Ĝisdatigi tiun emoĝion ne eblis
updated_msg: Emoĝio sukcese ĝisdatigita!
upload: Alŝuti
+ dashboard:
+ backlog: postigitaj taskoj
+ config: Agordado
+ feature_deletions: Forigo de kontoj
+ feature_invites: Invitaj ligiloj
+ feature_registrations: Registriĝoj
+ feature_relay: Federacia ripetilo
+ features: Funkcioj
+ hidden_service: Federacio kun kaŝitaj servoj
+ open_reports: nefermitaj raportoj
+ recent_users: Lastatempaj uzantoj
+ search: Tutteksta serĉado
+ single_user_mode: Unuuzanta reĝimo
+ software: Programo
+ space: Memorspaca uzado
+ title: Kontrolpanelo
+ total_users: uzantoj sume
+ trends: Furoroj
+ week_interactions: interagoj tiusemajne
+ week_users_active: aktivaj tiusemajne
+ week_users_new: uzantoj tiusemajne
domain_blocks:
add_new: Aldoni novan
created_msg: Domajna blokado en traktado
@@ -255,12 +282,21 @@ eo:
search: Serĉi
title: Konataj nodoj
invites:
+ deactivate_all: Malaktivigi ĉion
filter:
all: Ĉio
available: Disponebla
expired: Eksvalida
title: Filtri
title: Invitoj
+ relays:
+ add_new: Aldoni novan ripetilon
+ description_html: "
Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi.
Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj."
+ enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi.
+ inbox_url: URL de la ripetilo
+ setup: Agordi konekton al ripetilo
+ status: Stato
+ title: Ripetiloj
report_notes:
created_msg: Signala noto sukcese kreita!
destroyed_msg: Signala noto sukcese forigita!
@@ -316,6 +352,9 @@ eo:
peers_api_enabled:
desc_html: Nomoj de domajnoj, kiujn ĉi tiu nodo renkontis en la fediverse
title: Publikigi liston de malkovritaj nodoj
+ preview_sensitive_media:
+ desc_html: Antaŭvido de ligiloj en aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla
+ title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph
registrations:
closed_message:
desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn
@@ -336,11 +375,14 @@ eo:
desc_html: Montri teaman insignon en paĝo de uzanto
title: Montri teaman insignon
site_description:
- desc_html: Enkonduka alineo en la ĉefpaĝo kaj en informaj etikedoj. Vi povas uzi HTML-etikedojn, kiel
<a>
kaj
<em>
.
+ desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel
<a>
kaj
<em>
.
title: Priskribo de la nodo
site_description_extended:
desc_html: Bona loko por viaj sintenaj reguloj, aliaj reguloj, gvidlinioj kaj aliaj aferoj, kiuj apartigas vian nodon. Vi povas uzi HTML-etikedojn
title: Propraj detalaj informoj
+ site_short_description:
+ desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la nodo estos uzata.
+ title: Mallonga priskribo de la nodo
site_terms:
desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn
title: Propraj uzkondiĉoj
@@ -362,6 +404,7 @@ eo:
media:
title: Aŭdovidaĵoj
no_media: Neniu aŭdovidaĵo
+ no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita
title: Mesaĝoj de la konto
with_media: Kun aŭdovidaĵoj
subscriptions:
@@ -504,9 +547,12 @@ eo:
true_privacy_html: Bonvolu atenti, ke
vera privateco povas esti atingita nur per ĉifrado de komenco al fino.
unlocked_warning_html: Iu ajn povas eksekvi vin por tuj vidi viajn privatajn mesaĝojn. %{lock_link} por povi akcepti kaj rifuzi petojn de sekvado.
unlocked_warning_title: Via konto ne estas ŝlosita
+ footer:
+ developers: Programistoj
+ more: Pli…
+ resources: Rimedoj
generic:
changes_saved_msg: Ŝanĝoj sukcese konservitaj!
- powered_by: povigita de %{link}
save_changes: Konservi ŝanĝojn
validation_errors:
one: Io mise okazis! Bonvolu konsulti la suban erar-raporton
@@ -542,8 +588,6 @@ eo:
expires_at: Eksvalidiĝas je
uses: Uzoj
title: Inviti homojn
- landing_strip_html: "
%{name} estas uzanto en %{link_to_root_path}. Vi povas sekvi tiun aŭ interagi kun tiu, se vi havas konton ie ajn en la fediverse."
- landing_strip_signup_html: Se vi ne havas, vi povas
registriĝi ĉi tie.
lists:
errors:
limit: Vi atingis la maksimuman kvanton de listoj
@@ -615,11 +659,14 @@ eo:
publishing: Publikado
web: Reto
remote_follow:
- acct: Enmetu vian uzantnomo@domajno de kie vi volas sekvi
+ acct: Enmetu vian uzantnomo@domajno de kie vi volas agi
missing_resource: La URL de plusendado ne estis trovita
no_account_html: Ĉu vi ne havas konton? Vi povas
registriĝi tie
proceed: Daŭrigi por eksekvi
prompt: 'Vi eksekvos:'
+ remote_interaction:
+ proceed: Efektivigi la interagon
+ prompt: 'Vi volas interagi kun ĉi tiu mesaĝo:'
remote_unfollow:
error: Eraro
title: Titolo
@@ -703,6 +750,7 @@ eo:
private: Mesaĝo nepublika ne povas esti alpinglita
reblog: Diskonigo ne povas esti alpinglita
show_more: Montri pli
+ sign_in_to_participate: Ensaluti por partopreni en la konversacio
title: '%{name}: "%{quote}"'
visibilities:
private: Montri nur al sekvantoj
@@ -712,7 +760,6 @@ eo:
unlisted: Nelistigita
unlisted_long: Ĉiuj povas vidi, sed nelistigita en publikaj tempolinioj
stream_entries:
- click_to_show: Alklaki por montri
pinned: Alpinglita
reblogged: diskonigita
sensitive_content: Tikla enhavo
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 3e22e2643..ca04f0b1c 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -9,9 +9,6 @@ es:
contact: Contacto
contact_missing: No especificado
contact_unavailable: N/A
- description_headline: "¿Qué es %{domain}?"
- domain_count_after: otras instancias
- domain_count_before: Conectado a
extended_description_html: |
Un buen lugar para las reglas
La descripción extendida no se ha colocado aún.
@@ -45,7 +42,6 @@ es:
people_who_follow: Usuarios que siguen a %{name}
posts: Toots
posts_with_replies: Toots con respuestas
- remote_follow: Seguir
reserved_username: El nombre de usuario está reservado
roles:
admin: Administrador
@@ -486,7 +482,6 @@ es:
unlocked_warning_title: Tu cuenta no está bloqueada
generic:
changes_saved_msg: "¡Cambios guardados con éxito!"
- powered_by: gracias a %{link}
save_changes: Guardar cambios
validation_errors:
one: "¡Algo no está bien! Por favor, revisa el error"
@@ -521,8 +516,6 @@ es:
expires_at: Expira
uses: Usos
title: Invitar a gente
- landing_strip_html: "
%{name} es un usuario en %{link_to_root_path}. Puedes seguirlo(a) o interactuar con el o ella si tienes una cuenta en cualquier parte del fediverse."
- landing_strip_signup_html: Si no tienes una, puedes
registrarte aquí.
lists:
errors:
limit: Has alcanzado la cantidad máxima de listas
@@ -688,7 +681,6 @@ es:
unlisted: Público, pero no mostrar en la historia federada
unlisted_long: Todos pueden ver, pero no está listado en las líneas de tiempo públicas
stream_entries:
- click_to_show: Click para mostrar
pinned: Toot fijado
reblogged: retooteado
sensitive_content: Contenido sensible
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index e141f27ee..1cacad345 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -5,13 +5,12 @@ eu:
about_mastodon_html: Mastodon web protokolo ireki eta libreak darabiltzan gizarte sare bat da. E-mail sarea bezala deszentralizatua da.
about_this: Honi buruz
administered_by: 'Administratzailea(k):'
+ api: APIa
closed_registrations: Harpidetza itxita dago orain instantzia honetan. Hala ere, beste instantzia bat aurkitu dezakezu kontua egiteko eta hona ere sarbidea izan.
contact: Kontaktua
contact_missing: Ezarri gabe
contact_unavailable: E/E
- description_headline: Zer da %{domain}?
- domain_count_after: instantzia desberdinetara
- domain_count_before: Konektatuta
+ documentation: Dokumentazioa
extended_description_html: |
Arauentzako toki egoki bat
Azalpen luzea ez da ezarri oraindik.
@@ -28,25 +27,30 @@ eu:
hosted_on: Mastodon %{domain} domeinuan ostatatua
learn_more: Ikasi gehiago
other_instances: Instantzien zerrenda
+ privacy_policy: Pribatutasun politika
source_code: Iturburu kodea
status_count_after: mezu idatzi dituzte
status_count_before: Hauek
+ terms: Erabilera baldintzak
user_count_after: erabiltzaile daude
user_count_before: Hemen
what_is_mastodon: Zer da Mastodon?
accounts:
+ choices_html: "%{name}(r)en aukerak:"
follow: Jarraitu
followers: Jarraitzaile
following: Jarraitzen
+ joined: "%{date}(e)an elkartua"
media: Multimedia
moved_html: "%{name} hona lekualdatu da %{new_profile_link}:"
network_hidden: Informazio hau ez dago eskuragarri
nothing_here: Ez dago ezer hemen!
people_followed_by: "%{name}(e)k jarraitzen dituenak"
people_who_follow: "%{name} jarraitzen dutenak"
+ pin_errors:
+ following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu
posts: Toot-ak
posts_with_replies: Toot eta erantzunak
- remote_follow: Jarraitu urrunetik
reserved_username: Erabiltzaile-izena erreserbatuta dago
roles:
admin: Administratzailea
@@ -206,6 +210,27 @@ eu:
update_failed_msg: Ezin izan da emoji hori eguneratu
updated_msg: Emoji-a ongi eguneratu da!
upload: Igo
+ dashboard:
+ backlog: aurreikusitako lanak
+ config: Konfigurazioa
+ feature_deletions: Kontu ezabaketak
+ feature_invites: Gonbidapen estekak
+ feature_registrations: Izen emateak
+ feature_relay: Federazio haria
+ features: Ezaugarriak
+ hidden_service: Federazioa ezkutuko zerbitzuekin
+ open_reports: salaketa irekiak
+ recent_users: Azken erabiltzaileak
+ search: Testu osoko bilaketa
+ single_user_mode: Erabiltzaile bakarreko modua
+ software: Software
+ space: Espazio erabilera
+ title: Kontrol panela
+ total_users: erabiltzaile guztira
+ trends: Joerak
+ week_interactions: interakzio aste honetan
+ week_users_active: aktibo aste honetan
+ week_users_new: erabiltzaile aste honetan
domain_blocks:
add_new: Gehitu berria
created_msg: Domeinuaren blokeoa orain prozesatzen ari da
@@ -261,6 +286,8 @@ eu:
expired: Iraungitua
title: Iragazi
title: Gonbidapenak
+ relays:
+ add_new: Gehitu hari berria
report_notes:
created_msg: Salaketa oharra ongi sortu da!
destroyed_msg: Salaketa oharra ongi ezabatu da!
@@ -316,6 +343,9 @@ eu:
peers_api_enabled:
desc_html: Instantzia honek fedibertsuan aurkitutako domeinu-izenak
title: Argitaratu aurkitutako instantzien zerrenda
+ preview_sensitive_media:
+ desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere
+ title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan
registrations:
closed_message:
desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu
@@ -336,11 +366,13 @@ eu:
desc_html: Erakutsi langile banda erabiltzailearen orrian
title: Erakutsi langile banda
site_description:
- desc_html: Azaleko orrian eta meta etiketetan agertuko den sarrera paragrafoa. HTML etiketak erabili ditzakezu, zehazki
<a>
eta
<em>
.
+ desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki
<a>
eta
<em>
.
title: Instantziaren deskripzioa
site_description_extended:
desc_html: Zure jokabide-koderako toki on bat, arauak, gidalerroak eta zure instantzia desberdin egiten duten bestelakoak. HTML etiketak erabili ditzakezu
title: Informazio hedatu pertsonalizatua
+ site_short_description:
+ title: Instantziaren deskripzio laburra
site_terms:
desc_html: Zure pribatutasun politika, erabilera baldintzak eta bestelako testu legalak idatzi ditzakezu. HTML etiketak erabili ditzakezu
title: Erabilera baldintza pertsonalizatuak
@@ -474,6 +506,22 @@ eu:
follows: Zuk jarraitutakoak
mutes: Zuk mututukoak
storage: Multimedia biltegiratzea
+ filters:
+ contexts:
+ home: Hasierako denbora-lerroa
+ notifications: Jakinarazpenak
+ public: Denbora-lerro publikoak
+ thread: Elkarrizketak
+ edit:
+ title: Editatu iragazkia
+ errors:
+ invalid_context: Testuinguru baliogabe edo hutsa eman da
+ invalid_irreversible: Behin betiko iragazketa hasiera edo jakinarazpenen testuinguruan besterik ez dabil
+ index:
+ delete: Ezabatu
+ title: Iragazkiak
+ new:
+ title: Gehitu iragazki berria
followers:
domain: Domeinua
explanation_html: Zure mezuen pribatutasuna bermatu nahi baduzu, nork jarraitzen zaituen jakin behar duzu.
Zure mezu pribatuak zure jarraitzaileak dituzten instantzia guztietara bidaltzen dira. Instantzia bateko langileek edo softwareak zure pribatutasunari dagokion begirunea ez dutela izango uste baduzu, berrikusi eta kendu jarraitzaileak.
@@ -486,9 +534,12 @@ eu:
true_privacy_html: Kontuan izan
egiazko pribatutasuna lortzeko muturretik muturrerako zifratzea ezinbestekoa dela.
unlocked_warning_html: Edonork jarraitu zaitzake eta berehala zure mezu pribatuak ikusi. %{lock_link} jarraitzaileak berrikusi eta ukatu ahal izateko.
unlocked_warning_title: Zure kontua ez dago giltzapetuta
+ footer:
+ developers: Garatzaileak
+ more: Gehiago…
+ resources: Baliabideak
generic:
changes_saved_msg: Aldaketak ongi gorde dira!
- powered_by: "(e)k %{link} darabil"
save_changes: Gorde aldaketak
validation_errors:
one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez
@@ -524,8 +575,6 @@ eu:
expires_at: Iraungitzea
uses: Erabilerak
title: Gonbidatu jendea
- landing_strip_html: "
%{name} %{link_to_root_path} instantziako erabiltzailea da. Fedibertsoko edozein tokitan kontua baduzu jarraitu dezakezu eta harremanetan jarri."
- landing_strip_signup_html: Ez baduzu,
hemen izena eman dezakezu.
lists:
errors:
limit: Gehieneko zerrenda kopurura heldu zara
@@ -599,6 +648,7 @@ eu:
remote_follow:
acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua
missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a
+ no_account_html: Ez duzu konturik?
Izena eman dezakezu
proceed: Ekin jarraitzeari
prompt: 'Hau jarraituko duzu:'
remote_unfollow:
@@ -693,7 +743,6 @@ eu:
unlisted: Zerrendatu gabea
unlisted_long: Edonork ikusi dezake, baina ez da denbora-lerro publikoetan agertzen
stream_entries:
- click_to_show: Klik erakusteko
pinned: Finkatutako toot-a
reblogged: "(r)en bultzada"
sensitive_content: Eduki hunkigarria
@@ -787,6 +836,7 @@ eu:
time:
formats:
default: "%Y(e)ko %b %d, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Sartu zure autentifikazio aplikazioak sortutako kodea berresteko
description_html: "
Bi faktoreetako autentifikazioa gaitzen baduzu, saioa hasteko telefonoa eskura izan beharko duzu, honek zuk sartu behar dituzun kodeak sortuko dituelako."
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 89ed2bbfb..f9ed10fd5 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -5,13 +5,12 @@ fa:
about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی است که بر اساس پروتکلهای آزاد وب و نرمافزارهای آزاد و کدباز ساخته شده است. این شبکه مانند ایمیل غیرمتمرکز است.
about_this: درباره
administered_by: 'با مدیریت:'
+ api: رابط برنامهنویسی کاربردی
closed_registrations: ثبتنام روی این سرور هماینک فعال نیست. اما شما میتوانید سرور دیگری بیابید و با حسابی که آنجا میسازید دقیقاً به همین شبکه دسترسی داشته باشید.
contact: تماس
contact_missing: تعیین نشده
contact_unavailable: موجود نیست
- description_headline: "%{domain} چیست؟"
- domain_count_after: سرور دیگر
- domain_count_before: متصل به
+ documentation: مستندات
extended_description_html: |
جای خوبی برای قانونها
توضیحات تکمیلی نوشته نشده است.
@@ -28,25 +27,30 @@ fa:
hosted_on: ماستدون، میزبانیشده روی %{domain}
learn_more: بیشتر بدانید
other_instances: فهرست سرورها
+ privacy_policy: سیاست رازداری
source_code: کدهای منبع
status_count_after: چیز نوشتهاند
status_count_before: که جمعاً
+ terms: شرایط کاربری
user_count_after: کاربر
user_count_before: دارای
what_is_mastodon: ماستدون چیست؟
accounts:
+ choices_html: 'انتخابهای %{name}:'
follow: پی بگیرید
followers: پیگیران
following: پی میگیرد
+ joined: کاربر از %{date}
media: عکس و ویدیو
moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:"
network_hidden: این اطلاعات در دسترس نیست
nothing_here: اینجا چیزی نیست!
people_followed_by: کسانی که %{name} پی میگیرد
people_who_follow: کسانی که %{name} را پی میگیرند
+ pin_errors:
+ following: شما باید پیگیر کاربری باشید که میخواهید ثابت کنید
posts: نوشتهها
posts_with_replies: نوشتهها و پاسخها
- remote_follow: پیگیری غیرمستقیم
reserved_username: این نام کاربری در دسترس نیست
roles:
admin: مدیر
@@ -180,6 +184,7 @@ fa:
unsuspend_account: "%{name} حساب کاربر %{target} را از تعلیق خارج کرد"
update_custom_emoji: "%{name} شکلک %{target} را بهروز کرد"
update_status: "%{name} نوشتهٔ %{target} را بهروز کرد"
+ deleted_status: "(بوق پاکشده)"
title: سیاههٔ بازرسی
custom_emojis:
by_domain: دامین
@@ -206,6 +211,27 @@ fa:
update_failed_msg: این شکلک نتوانست بهروز شود
updated_msg: شکلک با موفقیت بهروز شد!
upload: بارگذاری
+ dashboard:
+ backlog: کارهای باقیمانده
+ config: پیکربندی
+ feature_deletions: حسابهای حذفشده
+ feature_invites: دعوتنامهها
+ feature_registrations: ثبتنامها
+ feature_relay: رله
+ features: ویژگیها
+ hidden_service: ارتباط میانسروری با سرویسهای نهفته
+ open_reports: گزارشهای فعال
+ recent_users: کاربران تازه
+ search: جستجوی متنی
+ single_user_mode: حالت تککاربره
+ software: نرمافزار
+ space: فضای مصرفشده
+ title: ابزارهای مدیریت
+ total_users: شمار کاربران
+ trends: هشتگهای پرکاربرد
+ week_interactions: فعالیتها در این هفته
+ week_users_active: کاربران فعال هفتهٔ اخیر
+ week_users_new: کاربران هفتهٔ اخیر
domain_blocks:
add_new: افزودن تازه
created_msg: مسدودکردن دامین در حال انجام است
@@ -261,6 +287,14 @@ fa:
expired: منقضیشده
title: فیلتر
title: دعوتها
+ relays:
+ add_new: افزودن رلهٔ تازه
+ description_html: یک
رلهٔ میانسروری (federation relay) یک سرور میانجی است که حجم زیادی از بوقهای عمومی را بین سرورهای گوناگونی که عضوش میشوند جابهجا میکند.
رلهها به سرورهای کوچک و متوسط کمک میکنند تا مطالب عمومی بیشتری را بیابند. اگر رله نباشد، این مطالب عمومی تنها وقتی پیدا میشوند که کاربران محلی خودشان پیگیر کاربران روی سرورهای دیگر شوند.
+ enable_hint: اگر فعال باشد، سرور شما عضو همهٔ بوقهای عمومیای را که از این رله میآید میگیرد، و بوقهای عمومی این سرور را به آن میفرستند.
+ inbox_url: نشانی رله
+ setup: پیوستن به رلهها
+ status: وضعیت
+ title: رلهها
report_notes:
created_msg: یادداشت گزارش با موفقیت ساخته شد!
destroyed_msg: یادداشت گزارش با موفقیت حذف شد!
@@ -339,11 +373,14 @@ fa:
desc_html: نمایش علامت همکار روی صفحهٔ کاربر
title: نمایش علامت همکار
site_description:
- desc_html: معرفی کوتاهی که روی صفحهٔ اصلی و همچنین به عنوان فرادادهٔ صفحهها نمایش مییابد. میتوانید HTML بنویسید, بهویژه
<a>
و
<em>
.
+ desc_html: معرفی کوتاهی که روی صفحهٔ اصلی نمایش مییابد. دربارهٔ این که چه چیزی دربارهٔ این سرور ماستدون ویژه است یا هر چیز مهم دیگری بنویسید. میتوانید HTML بنویسید، بهویژه
<a>
و
<em>
.
title: دربارهٔ سایت
site_description_extended:
desc_html: جای خوبی برای نوشتن سیاستهای کاربری، قانونها، راهنماها، و هر چیزی که ویژهٔ این سرور است. تگهای HTML هم مجاز است
title: اطلاعات تکمیلی سفارشی
+ site_short_description:
+ desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحهها نمایش مییابد. در یک بند توضیح دهید که ماستدون چیست و چرا این سرور با بقیه فرق دارد. اگر خالی بگذارید، به جایش «دربارهٔ سایت» نمایش مییابد.
+ title: توضیح کوتاه دربارهٔ سایت
site_terms:
desc_html: میتوانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگهای HTML هم مجاز است
title: شرایط استفادهٔ سفارشی
@@ -365,6 +402,7 @@ fa:
media:
title: رسانه
no_media: بدون عکس یا ویدیو
+ no_status_selected: هیچ بوقی تغییری نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
title: نوشتههای حساب
with_media: دارای عکس یا ویدیو
subscriptions:
@@ -505,9 +543,12 @@ fa:
true_privacy_html: لطفاً بدانید که
داشتن حریم خصوصی واقعی تنها با رمزگذاری سرتاسر (end-to-end encryption) ممکن است.
unlocked_warning_html: هر کسی میتواند پیگیر شما شود تا بلافاصله نوشتههای خصوصی شما را ببیند. اگر %{lock_link} خواهید توانست درخواستهای پیگیری را بررسی کرده و نپذیرید.
unlocked_warning_title: حساب شما خصوصی نیست
+ footer:
+ developers: برنامهنویسان
+ more: بیشتر…
+ resources: منابع
generic:
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
- powered_by: نیرو گرفته از %{link}
save_changes: ذخیرهٔ تغییرات
validation_errors:
one: یک چیزی هنوز درست نیست! لطفاً خطاهای زیر را ببینید
@@ -543,8 +584,6 @@ fa:
expires_at: تاریخ انقضا
uses: استفادهها
title: دعوت دیگران
- landing_strip_html: "
%{name} کاربری روی %{link_to_root_path} است. شما با داشتن حساب روی هر سروری میتوانید نوشتههای او را پیگیری کرده یا با او ارتباط داشته باشید."
- landing_strip_signup_html: اگر هنوز حسابی ندارید
اینجا حساب باز کنید.
lists:
errors:
limit: از این بیشتر نمیشود فهرست داشت
@@ -713,7 +752,6 @@ fa:
unlisted: فهرستنشده
unlisted_long: عمومی، ولی در فهرست نوشتهها نمایش نمییابد
stream_entries:
- click_to_show: برای نمایش کلیک کنید
pinned: نوشتههای ثابت
reblogged: بازبوقید
sensitive_content: محتوای حساس
@@ -726,6 +764,7 @@ fa:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: برای تأیید، کدی را که برنامهٔ تأییدکننده ساخته است وارد کنید
description_html: اگر
ورود دومرحلهای را فعال کنید، برای ورود به سیستم به تلفن خود نیاز خواهید داشت تا برایتان یک کد موقتی بسازد.
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 6c9076919..96339e35e 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -9,9 +9,6 @@ fi:
contact: Ota yhteyttä
contact_missing: Ei asetettu
contact_unavailable: Ei saatavilla
- description_headline: Mikä on %{domain}?
- domain_count_after: muuhun instanssiin
- domain_count_before: Yhdistyneenä
extended_description_html: |
Hyvä paikka säännöille
Pidempää kuvausta ei ole vielä laadittu.
@@ -46,7 +43,6 @@ fi:
people_who_follow: Käyttäjän %{name} seuraajat
posts: Tuuttaukset
posts_with_replies: Tuuttaukset ja vastaukset
- remote_follow: Etäseuranta
reserved_username: Käyttäjänimi on varattu
roles:
admin: Ylläpitäjä
@@ -484,7 +480,6 @@ fi:
unlocked_warning_title: Tiliäsi ei ole lukittu
generic:
changes_saved_msg: Muutosten tallennus onnistui!
- powered_by: voimanlähteenä %{link}
save_changes: Tallenna muutokset
validation_errors:
one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe
@@ -519,8 +514,6 @@ fi:
expires_at: Vanhenee
uses: Käytetty
title: Kutsu ihmisiä
- landing_strip_html: "
%{name} on käyttäjänä palvelimella %{link_to_root_path}. Voit seurata heitä tai pitää heihin yhteyttä, jos sinulla on tili missä tahansa fediversumin kolkassa."
- landing_strip_signup_html: Jos sinulla ei ole tiliä, voit
rekisteröityä tätä kautta.
lists:
errors:
limit: Sinulla on jo suurin sallittu määrä listoja
@@ -684,7 +677,6 @@ fi:
unlisted: Listaamaton julkinen
unlisted_long: Kaikki voivat nähdä, mutta ei näytetä julkisilla aikajanoilla
stream_entries:
- click_to_show: Katso napsauttamalla
pinned: Kiinnitetty tuuttaus
reblogged: buustasi
sensitive_content: Arkaluontoista sisältöä
@@ -733,7 +725,7 @@ fi:
tip_local_timeline: Paikallinen aikajana näyttää instanssin %{instance} käyttäjien julkaisut. He ovat naapureitasi!
tip_mobile_webapp: Jos voit lisätä Mastodonin mobiiliselaimen kautta aloitusnäytöllesi, voit vastaanottaa push-ilmoituksia. Toiminta vastaa monin tavoin tavanomaista sovellusta!
tips: Vinkkejä
- title: Tervetuloa mukaan, %name}!
+ title: Tervetuloa mukaan, %{name}!
users:
invalid_email: Virheellinen sähköpostiosoite
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 07d900cfa..cf8ceb247 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -4,23 +4,23 @@ 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
- administered_by: 'Administré par :'
+ administered_by: 'Administrée par :'
+ api: API
+ apps: Applications mobiles
closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. Cependant, vous pouvez trouver une autre instance sur laquelle vous créer un compte et à partir de laquelle vous pourrez accéder au même réseau.
contact: Contact
contact_missing: Manquant
contact_unavailable: Non disponible
- description_headline: Qu’est-ce que %{domain} ?
- domain_count_after: autres instances
- domain_count_before: Connecté⋅e⋅s à
+ documentation: Documentation
extended_description_html: |
Un bon endroit pour les règles
La description étendue n’a pas été remplie.
features:
humane_approach_body: Ayant appris des échecs d’autres réseaux, Mastodon à l’ambition de combattre l’abus des médias sociaux en effectuant des choix de conception éthiques.
humane_approach_title: Une approche plus humaine
- not_a_product_body: Mastodon n’est pas un réseau commercial. Ici, pas de publicités, pas de prospection de données et pas d’environnement fermés. Il n’y existe aucune autorité centrale.
+ not_a_product_body: Mastodon n’est pas un réseau commercial. Ici, pas de publicités, pas de prospection de données et pas d’environnements fermés. Il n’y existe aucune autorité centrale.
not_a_product_title: Vous êtes une personne, pas un produit
- real_conversation_body: Avec 500 caractères à votre dispostion, une grande granularité en terme de diffusion et la possibilité de masquer vos messages derrières des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
+ real_conversation_body: Avec 500 caractères à votre disposition, une grande granularité en termes de diffusion et la possibilité de masquer vos messages derrière des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
real_conversation_title: Construit pour de vraies conversations
within_reach_body: Grâce à l’existence d’un environnement API accueillant pour les développeur·se·s, de multiples applications pour iOS, Android et d’autres plateformes vous permettent de rester en contact avec vos ami·e·s où que vous soyez.
within_reach_title: Toujours à portée de main
@@ -28,25 +28,30 @@ fr:
hosted_on: Instance Mastodon hébergée par %{domain}
learn_more: En savoir plus
other_instances: Liste des instances
+ privacy_policy: Politique de vie privée
source_code: Code source
status_count_after: statuts
status_count_before: Ayant publié
+ terms: Conditions d'utilisation
user_count_after: utilisateur⋅ice⋅s
user_count_before: Abrite
what_is_mastodon: Qu’est-ce que Mastodon ?
accounts:
+ choices_html: "%{name} recommande :"
follow: Suivre
followers: Abonné⋅e⋅s
following: Abonnements
+ joined: Inscrit·e en %{date}
media: Médias
- moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
- network_hidden: Cette information n'est pas disponible
+ moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
+ network_hidden: Cette information n’est pas disponible
nothing_here: Rien à voir ici !
people_followed_by: Personnes suivies par %{name}
people_who_follow: Personnes qui suivent %{name}
+ pin_errors:
+ following: Vous devez être déjà abonné·e à la personne que vous désirez recommander
posts: Statuts
posts_with_replies: Statuts & réponses
- remote_follow: Suivre à distance
reserved_username: Ce nom d’utilisateur⋅ice est réservé
roles:
admin: Admin
@@ -64,7 +69,7 @@ fr:
avatar: Avatar
by_domain: Domaine
change_email:
- changed_msg: Courriel du compte modifié avec succès !
+ changed_msg: Courriel du compte modifié avec succès !
current_email: Courriel actuel
label: Modifier le courriel
new_email: Nouveau courriel
@@ -119,11 +124,11 @@ fr:
public: Publique
push_subscription_expires: Expiration de l’abonnement PuSH
redownload: Rafraîchir les avatars
- remove_avatar: Supprimer l'avatar
+ remove_avatar: Supprimer l’avatar
resend_confirmation:
- already_confirmed: Cet utilisateur est déjà confirmé
+ already_confirmed: Cet·te utilisateur·ice est déjà confirmé·e
send: Renvoyer un courriel de confirmation
- success: Email de confirmation envoyé avec succès !
+ success: Courriel de confirmation envoyé avec succès !
reset: Réinitialiser
reset_password: Réinitialiser le mot de passe
resubscribe: Se réabonner
@@ -152,35 +157,36 @@ fr:
web: Web
action_logs:
actions:
- assigned_to_self_report: "%{name} s'est assigné le signalement de %{target} à eux-même"
- change_email_user: "%{name} a modifié l'adresse de courriel de l'utilisateur %{target}"
- confirm_user: "%{name} adresse courriel confirmée de l'utilisateur %{target}"
- create_custom_emoji: "%{name} a importé de nouveaux emoji %{target}"
+ assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
+ change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
+ confirm_user: "%{name} adresse courriel confirmée de l’utilisateur·ice %{target}"
+ create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}"
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 %{target}"
+ demote_user: "%{name} a rétrogradé l’utilisateur·ice %{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}"
- disable_2fa_user: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur %{target}"
- disable_custom_emoji: "%{name} a désactivé l'emoji %{target}"
- disable_user: "%{name} a désactivé le login pour l'utilisateur %{target}"
- enable_custom_emoji: "%{name} a activé l'emoji %{target}"
- enable_user: "%{name} a activé le login pour l'utilisateur %{target}"
+ disable_2fa_user: "%{name} a désactivé l’authentification à deux facteurs pour l’utilisateur·ice %{target}"
+ disable_custom_emoji: "%{name} a désactivé l’émoji %{target}"
+ disable_user: "%{name} a désactivé le login pour l’utilisateur·ice %{target}"
+ enable_custom_emoji: "%{name} a activé l’émoji %{target}"
+ enable_user: "%{name} a activé le login pour l’utilisateur·ice %{target}"
memorialize_account: "%{name} a transformé le compte de %{target} en une page de mémorial"
- promote_user: "%{name} a promu l'utilisateur %{target}"
- remove_avatar_user: "%{name} a supprimé l'avatar de %{target}'s"
- reopen_report: "%{name} a ré-ouvert le signalement %{target}"
+ promote_user: "%{name} a promu l’utilisateur·ice %{target}"
+ remove_avatar_user: "%{name} a supprimé l’avatar de %{target}"
+ reopen_report: "%{name} a rouvert le signalement %{target}"
reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
resolve_report: "%{name} a résolu la dénonciation de %{target}"
silence_account: "%{name} a mis le compte %{target} en mode silence"
suspend_account: "%{name} a suspendu le compte %{target}"
- unassigned_report: "%{name} a dés-assigné le signalement %{target}"
+ unassigned_report: "%{name} a désassigné le signalement %{target}"
unsilence_account: "%{name} a mis fin au mode silence de %{target}"
unsuspend_account: "%{name} a réactivé le compte de %{target}"
- update_custom_emoji: "%{name} a mis à jour l'emoji %{target}"
+ update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
update_status: "%{name} a mis à jour le statut de %{target}"
- title: Journal d'audit
+ deleted_status: "(statut supprimé)"
+ title: Journal d’audit
custom_emojis:
by_domain: Domaine
copied_msg: Copie locale de l’émoji créée avec succès !
@@ -201,11 +207,32 @@ fr:
overwrite: Réécrire
shortcode: Raccourci
shortcode_hint: Au moins deux caractères, seulement des caractères alphanumériques ou des tirets bas
- title: Émoji personnalisés
+ title: Émojis personnalisés
unlisted: Délisté
- update_failed_msg: N'a pas pu mettre à jour cet emoji
- updated_msg: Emoji mis à jour avec succès !
+ update_failed_msg: N’a pas pu mettre à jour cet émoji
+ updated_msg: Émoji mis à jour avec succès !
upload: Téléverser
+ dashboard:
+ backlog: tâches en attente
+ config: Configuration
+ feature_deletions: Suppressions de comptes
+ feature_invites: Liens d’invitation
+ feature_registrations: Inscriptions
+ feature_relay: Relais de fédération
+ features: Fonctionnalités
+ hidden_service: Fédération avec des services cachés
+ open_reports: signalements non résolus
+ recent_users: Utilisateur·rice·s récent·e·s
+ search: Recherche plein texte
+ single_user_mode: Mode utilisateur·ice unique
+ software: Logiciel
+ space: Espace utilisé
+ title: Tableau de bord
+ total_users: utilisateur·rice·s au total
+ trends: Tendances
+ week_interactions: interactions cette semaine
+ week_users_active: actif·ve·s cette semaine
+ week_users_new: utilisateur·rice·s cette semaine
domain_blocks:
add_new: Ajouter
created_msg: Le blocage de domaine est désormais activé
@@ -255,22 +282,31 @@ fr:
search: Rechercher
title: Instances connues
invites:
+ deactivate_all: Tout désactiver
filter:
all: Tout
available: Disponible
expired: Expiré
title: Filtre
title: Invitations
+ relays:
+ add_new: Ajouter un nouveau relais
+ 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.
+ enable_hint: Une fois activé, votre serveur souscrira à tous les pouets publics présents sur ce relais et y enverra ses propres pouets publics.
+ inbox_url: URL de relais
+ setup: Paramétrer une connexion de relais
+ status: Statut
+ title: Relais
report_notes:
- created_msg: Note de signalement créée avec succès !
- destroyed_msg: Note de signalement effacée avec succès !
+ created_msg: Note de signalement créée avec succès !
+ destroyed_msg: Note de signalement effacée avec succès !
reports:
account:
note: note
report: signaler
action_taken_by: Intervention de
are_you_sure: Êtes vous certain⋅e ?
- assign_to_self: Me l'assigner
+ assign_to_self: Me l’assigner
assigned: Modérateur assigné
comment:
none: Aucun
@@ -290,7 +326,7 @@ fr:
reported_account: Compte signalé
reported_by: Signalé par
resolved: Résolus
- resolved_msg: Signalement résolu avec succès !
+ resolved_msg: Signalement résolu avec succès !
silence_account: Masquer le compte
status: Statut
suspend_account: Suspendre le compte
@@ -302,20 +338,23 @@ fr:
view: Voir
settings:
activity_api_enabled:
- desc_html: Nombre de statuts affichés localement, d'utilisateurs actifs et de nouveaux enregistrements dans les registres hebdomadaires
- title: Publier des statistiques agrégées sur l'activité des utilisateurs
+ desc_html: Nombre de statuts affichés localement, d’utilisateur·ice·s actif·ve·s et de nouveaux enregistrements dans les registres hebdomadaires
+ title: Publier des statistiques agrégées sur l’activité des utilisateur·ice·s
bootstrap_timeline_accounts:
- desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non-verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
+ desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
title: Abonnements par défaut pour les nouveaux·elles utilisateur·ice·s
contact_information:
email: Entrez une adresse courriel publique
username: Entrez un nom d’utilisateur⋅ice
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
- title: Image d'en-tête
+ 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
+ title: Image d’en-tête
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
+ 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
registrations:
closed_message:
desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées
Vous pouvez utiliser des balises HTML
@@ -330,17 +369,20 @@ fr:
desc_html: Autoriser tout le monde à créer un compte
title: Ouvrir les inscriptions
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. Si non, seuls les pouets locaux sont affichés.
+ 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.
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
+ 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 et dans les méta-balises. Vous pouvez utiliser des balises HTML, en particulier
<a>
et
<em>
.
+ 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 du site
site_description_extended:
desc_html: Affichée sur la page d’informations complémentaires du site
Vous pouvez utiliser des balises HTML
title: Description étendue du site
+ site_short_description:
+ desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description de l’instance sera affiché par défaut.
+ title: Description courte de l’instance
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é
@@ -362,6 +404,7 @@ fr:
media:
title: Médias
no_media: Aucun média
+ no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné
title: État du compte
with_media: avec médias
subscriptions:
@@ -375,13 +418,13 @@ fr:
admin_mailer:
new_report:
body: "%{reporter} a signalé %{target}"
- body_remote: Quelqu'un de %{domain} a signalé %{target}
+ body_remote: Quelqu’un de %{domain} a signalé %{target}
subject: Nouveau signalement sur %{instance} (#%{id})
application_mailer:
notification_preferences: Modifier les préférences de courriel
salutation: "%{name},"
settings: 'Changer les préférences courriel : %{link}'
- view: 'Voir :'
+ view: 'Voir :'
view_profile: Voir le profil
view_status: Afficher le statut
applications:
@@ -411,7 +454,7 @@ fr:
cas: CAS
saml: SAML
register: S’inscrire
- register_elsewhere: S'inscrire sur un autre serveur
+ register_elsewhere: S’inscrire sur un autre serveur
resend_confirmation: Envoyer à nouveau les consignes de confirmation
reset_password: Réinitialiser le mot de passe
security: Sécurité
@@ -420,8 +463,8 @@ fr:
already_following: Vous suivez déjà ce compte
error: Malheureusement, il y a eu une erreur en cherchant les détails du compte distant
follow: Suivre
- follow_request: 'Vous avez demandé à suivre :'
- following: 'Youpi ! Vous suivez :'
+ follow_request: 'Vous avez demandé à suivre :'
+ following: 'Youpi ! Vous suivez :'
post_follow:
close: Ou bien, vous pouvez fermer cette fenêtre.
return: Afficher le profil de l’utilisateur⋅ice
@@ -447,7 +490,7 @@ 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 serveurs hors-lignes ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
+ 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 serveurs hors-ligne ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
warning_title: Disponibilité du contenu disséminé
errors:
'403': Vous n’avez pas accès à cette page.
@@ -460,13 +503,13 @@ fr:
'500':
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.
+ noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l’une des
applications natives pour Mastodon pour votre plate-forme.
exports:
archive_takeout:
date: Date
download: Télécharger votre archive
hint_html: Vous pouvez demander une archive de vos
pouets et médias téléversés. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours.
- in_progress: Élaboration de votre archive....
+ in_progress: Création de votre archive…
request: Demandez vos archives
size: Taille
blocks: Vous bloquez
@@ -474,6 +517,22 @@ fr:
follows: Vous suivez
mutes: Vous masquez
storage: Médias stockés
+ filters:
+ contexts:
+ home: Accueil
+ notifications: Notifications
+ public: Fils publics
+ thread: Conversations
+ edit:
+ title: Éditer le filtre
+ errors:
+ invalid_context: Contexte invalide ou insuffisant
+ invalid_irreversible: Le filtrage irréversible ne fonctionne que pour l’accueil et les notifications
+ index:
+ delete: Effacer
+ title: Filtres
+ new:
+ title: Ajouter un nouveau filtre
followers:
domain: Domaine
explanation_html: Si vous voulez être sûr⋅e que vos statuts restent privés, vous devez savoir qui vous suit.
Vos statuts privés seront diffusés à toutes les instances des utilisateur⋅ice⋅s qui vous suivent. Vous voudrez peut-être les passer en revue et les supprimer si vous n’êtes pas sûr⋅e que votre vie privée sera respectée par l’administration ou le logiciel de ces instances.
@@ -486,9 +545,12 @@ fr:
true_privacy_html: Soyez conscient⋅e⋅s
qu’une vraie confidentialité ne peut être atteinte que par un chiffrement de bout-en-bout.
unlocked_warning_html: N’importe qui peut vous suivre et voir vos statuts privés. %{lock_link} afin de pouvoir vérifier et rejeter des abonné⋅e⋅s.
unlocked_warning_title: Votre compte n’est pas privé
+ footer:
+ developers: Développeurs
+ more: Davantage…
+ resources: Ressources
generic:
changes_saved_msg: Les modifications ont été enregistrées avec succès !
- powered_by: propulsé par %{link}
save_changes: Enregistrer les modifications
validation_errors:
one: Quelque chose ne va pas ! Vérifiez l’erreur ci-dessous
@@ -514,6 +576,7 @@ fr:
'86400': 1 jour
expires_in_prompt: Jamais
generate: Générer
+ invited_by: 'Vous avez été invité·e par :'
max_uses:
one: 1 usage
other: "%{count} usages"
@@ -523,8 +586,6 @@ fr:
expires_at: Expire
uses: Utilise
title: Inviter des gens
- landing_strip_html:
%{name} utilise %{link_to_root_path}. Vous pouvez læ suivre et interagir si vous possédez un compte quelque part dans le "fediverse".
- landing_strip_signup_html: Si ce n’est pas le cas, vous pouvez
en créer un ici.
lists:
errors:
limit: Vous avez atteint le nombre maximum de listes
@@ -533,26 +594,26 @@ fr:
images_and_video: Impossible de joindre une vidéo à un statut contenant déjà des images
too_many: Impossible de joindre plus de 4 fichiers
migrations:
- acct: utilisateur@domaine du nouveau compte
- currently_redirecting: 'Votre profile va être redirigé vers :'
+ acct: profil@domaine du nouveau compte
+ currently_redirecting: 'Votre profile va être redirigé vers :'
proceed: Enregistrer
- updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
+ updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
moderation:
title: Modération
notification_mailer:
digest:
action: Voir toutes les notifications
- body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
- mention: "%{name} vous a mentionné⋅e dans :"
+ body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
+ mention: "%{name} vous a mentionné⋅e dans :"
new_followers_summary:
one: Vous avez un⋅e nouvel⋅le abonné⋅e ! Youpi !
other: Vous avez %{count} nouveaux⋅elles abonné⋅e·s ! Incroyable !
subject:
one: "Une nouvelle notification depuis votre dernière visite \U0001F418"
other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418"
- title: Pendant votre absence...
+ title: Pendant votre absence…
favourite:
- body: "%{name} a ajouté votre post à ses favoris :"
+ body: "%{name} a ajouté votre post à ses favoris :"
subject: "%{name} a ajouté votre post à ses favoris"
title: Nouveau favori
follow:
@@ -560,17 +621,17 @@ fr:
subject: "%{name} vous suit"
title: Nouvel·le abonné·e
follow_request:
- action: Gérer les demandes d'abonnement
+ action: Gérer les demandes d’abonnement
body: "%{name} a demandé à vous suivre"
subject: 'Abonné⋅es en attente : %{name}'
- title: Nouvelle demande d'abonnement
+ title: Nouvelle demande d’abonnement
mention:
action: Répondre
- body: "%{name} vous a mentionné⋅e dans :"
+ body: "%{name} vous a mentionné⋅e dans :"
subject: "%{name} vous a mentionné·e"
title: Nouvelle mention
reblog:
- body: "%{name} a partagé votre statut :"
+ body: "%{name} a partagé votre statut :"
subject: "%{name} a partagé votre statut"
title: Nouveau partage
number:
@@ -596,10 +657,14 @@ fr:
publishing: Publication
web: Web
remote_follow:
- acct: Entrez votre pseudo@instance depuis lequel vous voulez suivre cet·te utilisateur⋅ice
+ acct: Entrez l’adresse profil@instance depuis laquelle vous voulez vous abonner
missing_resource: L’URL de redirection n’a pas pu être trouvée
- proceed: Continuez pour suivre
- prompt: 'Vous allez suivre :'
+ no_account_html: Vous n’avez pas de compte ? Vous pouvez
vous inscrire ici
+ proceed: Confirmer l’abonnement
+ prompt: 'Vous allez suivre :'
+ remote_interaction:
+ proceed: Confirmer l’interaction
+ prompt: 'Vous désirez interagir avec ce pouet :'
remote_unfollow:
error: Erreur
title: Titre
@@ -662,7 +727,7 @@ fr:
your_apps: Vos applications
statuses:
attached:
- description: 'Attaché : %{attached}'
+ description: 'Attaché : %{attached}'
image:
one: "%{count} image"
other: "%{count} images"
@@ -670,10 +735,11 @@ fr:
one: "%{count} vidéo"
other: "%{count} vidéos"
boosted_from_html: Repartagé depuis %{acct_link}
- content_warning: 'Attention au contenu : %{warning}'
+ content_warning: 'Avertissement sur le contenu : %{warning}'
disallowed_hashtags:
- one: 'contient un hashtag désactivé : %{tags}'
- other: 'contient les hashtag désactivés : %{tags}'
+ one: 'contient un hashtag désactivé : %{tags}'
+ other: 'contient les hashtags désactivés : %{tags}'
+ language_detection: Détecter automatiquement la langue
open_in_web: Ouvrir sur le web
over_character_limit: limite de caractères dépassée de %{max} caractères
pin_errors:
@@ -682,6 +748,7 @@ fr:
private: Les statuts non-publics ne peuvent pas être épinglés
reblog: Un partage ne peut pas être épinglé
show_more: Afficher plus
+ sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
title: '%{name} : "%{quote}"'
visibilities:
private: Abonné⋅e⋅s uniquement
@@ -691,12 +758,92 @@ fr:
unlisted: Public sans être affiché sur le fil public
unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas sur listés sur les fils publics
stream_entries:
- click_to_show: Cliquer pour afficher
pinned: Pouet épinglé
reblogged: a partagé
sensitive_content: Contenu sensible
terms:
- title: "%{instance} Conditions d’utilisations et politique de confidentialité"
+ body_html: |
+
Politique de confidentialité
+
Quelles informations collectons-nous ?
+
+
+ - Informations de base sur votre compte : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
+ - Posts, liste d’abonnements et autres informations publiques : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
+ - Posts directs et abonné·e·s uniquement : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partager aucune information sensible à l’aide de Mastodon.
+ - IP et autres métadonnées : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
+
+
+
+
+
Que faisons-nous des informations que nous collectons ?
+
+
Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :
+
+
+ - Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.
+ - Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.
+ - L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.
+
+
+
+
+
Comment protégeons-nous vos informations ?
+
+
Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.
+
+
+
+
Quelle est notre politique de conservation des données ?
+
+
Nous ferons un effort de bonne foi :
+
+
+ - Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.
+ - Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
+
+
+
Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.
+
+
Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.
+
+
+
+
Utilisons-nous des témoins de connexion ?
+
+
Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transféres sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier.
+
+
Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.
+
+
+
+
Divulguons-nous des informations à des tierces parties ?
+
+
Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes.
+
+
Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.
+
+
Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tout vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.
+
+
+
+
Utilisation de ce site par les enfants
+
+
Si ce serveur est situé dans dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site.
+
+
Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.
+
+
Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.
+
+
+
+
Modifications de notre politique de confidentialité
+
+
Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.
+
+
Ce document est publié sous lincence CC-BY-SA. Il a été mis à jours pour la dernière fois le 7 mars 2018.
+
+
Originellement adapté de la politique de confidentialité de Discourse.
+ title: "%{instance} Conditions d’utilisation et politique de confidentialité"
themes:
contrast: Contraste élevé
default: Mastodon
@@ -704,6 +851,7 @@ fr:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Entrez le code généré par votre application pour confirmer
description_html: Si vous activez
l’identification à deux facteurs, vous devrez être en possession de votre téléphone afin de générer un code de connexion.
@@ -713,8 +861,8 @@ fr:
enabled_success: Identification à deux facteurs activée avec succès
generate_recovery_codes: Générer les codes de récupération
instructions_html: "
Scannez ce QR code grâce à Google Authenticator, Authy ou une application similaire sur votre téléphone. Désormais, cette application génèrera des jetons que vous devrez saisir à chaque connexion."
- lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre comptre si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
- manual_instructions: 'Si vous ne pouvez pas scanner ce QR code et devez l’entrer manuellement, voici le secret en clair :'
+ lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre compte si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
+ manual_instructions: 'Si vous ne pouvez pas scanner ce QR code et devez l’entrer manuellement, voici le secret en clair :'
recovery_codes: Codes de récupération
recovery_codes_regenerated: Codes de récupération régénérés avec succès
recovery_instructions_html: Si vous perdez l’accès à votre téléphone, vous pouvez utiliser un des codes de récupération ci-dessous pour retrouver l’accès à votre compte.
Conservez les codes de récupération en sécurité. Par exemple, en les imprimant et en les stockant avec vos autres documents importants.
@@ -722,30 +870,30 @@ fr:
wrong_code: Les codes entrés sont incorrects ! L’heure du serveur et celle de votre appareil sont-elles correctes ?
user_mailer:
backup_ready:
- explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
+ explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
subject: Votre archive est prête à être téléchargée
- title: Retrait de l'archive
+ title: Récupération de l’archive
welcome:
edit_profile_action: Configuration du profil
- edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d'en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux abonnés avant qu'ils ne soient autorisés à vous suivre, vous pouvez verrouiller votre compte.
+ edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’il·elle·s ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte.
explanation: Voici quelques conseils pour vous aider à démarrer
final_action: Commencer à publier
- final_step: 'Commencez à poster ! Même sans abonné·es, vos messages publics peuvent être vus par d''autres, par exemple sur la chronologie locale et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
- full_handle: Votre pleine maîtrise
- full_handle_hint: C'est ce que vous diriez à vos amis pour qu'ils puissent vous envoyer un message ou vous suivre à partir d'une autre instance.
+ 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 qu’il·elle·s puissent vous envoyer un message ou vous suivre à partir d’une autre instance.
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 GIF.
+ 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
- tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos amis sur Mastodon en utilisant le
bridge app. Cela ne fonctionne que s'ils ont aussi utilisé cette application !
- tip_federated_timeline: La chronologie fédérée est une vue en direct du réseau Mastodon. Mais elle n'inclut que les personnes auxquelles vos voisin·es sont abonné·es, donc elle n'est pas complète.
- tip_following: Vous suivez les administrateurs et administratrices de votre serveur par défaut. Pour trouver d'autres personnes intéressantes, consultez les chronologies locales et fédérées.
- tip_local_timeline: La chronologie locale est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
- tip_mobile_webapp: Si votre navigateur mobile vous propose d'ajouter Mastodon à votre écran d'accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
+ tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos ami·e·s sur Mastodon en utilisant l’
application de mise en relation. Cela ne fonctionne que s’il·elle·s ont aussi utilisé cette application !
+ tip_federated_timeline: La fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·es sont abonné·e·s, donc elle n’est pas complète.
+ tip_following: Vous suivez les administrateur·rice·s de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global.
+ tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
+ tip_mobile_webapp: Si votre navigateur mobile vous propose d’ajouter Mastodon à votre écran d’accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
tips: Astuces
- title: Bienvenue à bord, %{name} !
+ title: Bienvenue à bord, %{name} !
users:
invalid_email: L’adresse courriel est invalide
invalid_otp_token: Le code d’authentification à deux facteurs est invalide
otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
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 :'
+ signed_in_as: 'Connecté·e en tant que :'
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 33889d0f1..a414990d2 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -5,13 +5,13 @@ gl:
about_mastodon_html: Mastodon é unha rede social que se basea en protocolos web abertos e libres, software de código aberto. É descentralizada como o correo electrónico.
about_this: Sobre
administered_by: 'Administrada por:'
+ api: API
+ apps: Apps móbiles
closed_registrations: O rexistro en esta instancia está pechado en este intre. Porén! Pode atopar unha instancia diferente para obter unha conta e ter acceso exactamente a misma rede desde alí.
contact: Contacto
contact_missing: Non establecido
contact_unavailable: N/A
- description_headline: Qué é %{domain}?
- domain_count_after: outras instancias
- domain_count_before: Conectada a
+ documentation: Documentación
extended_description_html: |
Un bo lugar para regras
A descrición extendida aínda non se proporcionou.
@@ -28,25 +28,30 @@ gl:
hosted_on: Mastodon aloxado en %{domain}
learn_more: Coñeza máis
other_instances: Listado de instancias
+ privacy_policy: Política de intimidade
source_code: Código fonte
status_count_after: estados
status_count_before: Que publicaron
+ terms: Termos do servizo
user_count_after: usuarias
user_count_before: Fogar de
what_is_mastodon: Qué é Mastodon?
accounts:
+ choices_html: 'Eleccións de %{name}:'
follow: Seguir
followers: Seguidoras
following: Seguindo
+ joined: Uneuse %{date}
media: Medios
moved_html: "%{name} mudouse a %{new_profile_link}:"
network_hidden: A información non está dispoñible
nothing_here: Nada por aquí!
people_followed_by: Personas que segue %{name}
people_who_follow: Personas que seguen a %{name}
+ pin_errors:
+ following: Debe seguir a persoa que intenta recomendar
posts: Mensaxes
posts_with_replies: Toots e respostas
- remote_follow: Seguimento remoto
reserved_username: O nome de usuaria está reservado
roles:
admin: Admin
@@ -180,6 +185,7 @@ gl:
unsuspend_account: "%{name} activou a conta de %{target}"
update_custom_emoji: "%{name} actualizou emoji %{target}"
update_status: "%{name} actualizou un estado de %{target}"
+ deleted_status: "(estado eliminado)"
title: Rexistro de auditoría
custom_emojis:
by_domain: Dominio
@@ -206,6 +212,27 @@ gl:
update_failed_msg: Non se puido actualizar ese emoji
updated_msg: Actualizouse correctamente o emoji!
upload: Subir
+ dashboard:
+ backlog: backlogged jobs
+ config: Axustes
+ feature_deletions: Borrado de contas
+ feature_invites: Ligazóns de convite
+ feature_registrations: Rexistros
+ feature_relay: Repetidores de federación
+ features: Características
+ hidden_service: Federación con servizos ocultos
+ open_reports: informes abertos
+ recent_users: Usuarias recentes
+ search: Busca de texto completo
+ single_user_mode: Modo de usuario individual
+ software: Software
+ space: Uso de espazo
+ title: Taboleiro
+ total_users: total de usuarias
+ trends: Tendencias
+ week_interactions: interaccións en esta semana
+ week_users_active: activas estas semana
+ week_users_new: usuarias esta semana
domain_blocks:
add_new: Engadir novo
created_msg: Estase a procesar o bloqueo do dominio
@@ -255,12 +282,21 @@ gl:
search: Buscar
title: Instancias coñecidas
invites:
+ deactivate_all: Desactivar todo
filter:
all: Todo
available: Dispoñible
expired: Cadudado
title: Filtro
title: Convida
+ relays:
+ add_new: Engadir un novo repetidor
+ description_html: Un
repetidor da federación é un servidor intermedio que intercambia grandes volumes de toots públicos entre servidores que se suscriban e publiquen nel.
Pode axudar a servidores pequenos e medios a descubrir contido no fediverso, o que de outro xeito precisaría que as usuarias locais seguisen a outra xente en servidores remotos.
+ enable_hint: Unha vez activado, o seu servidor suscribirase a todos os toots públicos de este servidor, e tamén comezará a eviar a el os toots públicos do servidor.
+ inbox_url: URL do repetidor
+ setup: Configurar a conexión ao repetidor
+ status: Estado
+ title: Repetidores
report_notes:
created_msg: Creouse correctamente a nota do informe!
destroyed_msg: Nota do informe eliminouse con éxito!
@@ -339,11 +375,14 @@ gl:
desc_html: Mostrar unha insignia de membresía nunha páxina de usuaria
title: Mostrar insigna de membresía
site_description:
- desc_html: Parágrafo de presentación na páxina principal e nas meta etiquetas. Pode utilizar etiquetas HTML, en particular
<a>
e
<em>
.
+ desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar etiquetas HTML, en particular
<a>
e
<em>
.
title: Descrición da instancia
site_description_extended:
desc_html: Un bo lugar para o seu código de conducta, regras, guías e outras cousas que distingan a súa instancia. Pode utilizar etiquetas HTML
title: Información extendida da personalización
+ site_short_description:
+ desc_html: Mostrado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Si está baldeiro, mostrará a descrición da instancia.
+ title: Descrición curta da instancia
site_terms:
desc_html: Pode escribir a súa propia política de intimidade, termos de servizo ou aclaracións legais. Pode utilizar etiquetas HTML
title: Termos de servizo personalizados
@@ -365,6 +404,7 @@ gl:
media:
title: Medios
no_media: Sen medios
+ no_status_selected: Non se cambiou ningún estado xa que ningún foi seleccionado
title: Estados da conta
with_media: con medios
subscriptions:
@@ -505,9 +545,12 @@ gl:
true_privacy_html: Por favor teña en conta que
a verdadeira intimidade só pode ser conseguida con cifrado de extremo-a-extremo.
unlocked_warning_html: Calquera pode seguila para inmediatamente ver os seus estados privados. %{lock_link} para poder revisar e rexeitar seguidoras.
unlocked_warning_title: A súa conta non está pechada
+ footer:
+ developers: Desenvolvedoras
+ more: Máis…
+ resources: Recursos
generic:
changes_saved_msg: Cambios gardados correctamente!!
- powered_by: grazas a %{link}
save_changes: Gardar cambios
validation_errors:
one: Algo non está ben de todo! Por favor revise abaixo o erro
@@ -543,8 +586,6 @@ gl:
expires_at: Caduca
uses: Usos
title: Convidar xente
- landing_strip_html: "
%{name} é unha usuaria en %{link_to_root_path}. Pode seguila ou interactuar con ela si ten unha conta en algún lugar do fediverso."
- landing_strip_signup_html: Si non, pode
rexistrarse aquí.
lists:
errors:
limit: Acadou o número máximo de listas
@@ -616,11 +657,14 @@ gl:
publishing: Publicando
web: Web
remote_follow:
- acct: Introduza o seu nomedeusuaria@dominio desde onde quere facer seguimento
+ acct: Introduza o seu usuaria@servidor desde onde quere interactuar
missing_resource: Non se puido atopar o URL de redirecionamento requerido para a súa conta
no_account_html: Non ten unha conta? Pode
rexistrarse aquí
proceed: Proceda para seguir
prompt: 'Vostede vai seguir:'
+ remote_interaction:
+ proceed: Proceda para interactuar
+ prompt: 'Vostede quere interactuar con este toot:'
remote_unfollow:
error: Fallo
title: Título
@@ -704,6 +748,7 @@ gl:
private: As mensaxes non-públicas non poden ser fixadas
reblog: Non se poden fixar as mensaxes promovidas
show_more: Mostrar máis
+ sign_in_to_participate: Conéctese para participar na conversa
title: '%{name}: "%{quote}"'
visibilities:
private: Só seguidoras
@@ -713,7 +758,6 @@ gl:
unlisted: Non listado
unlisted_long: Visible para calquera, pero non listado en liñas de tempo públicas
stream_entries:
- click_to_show: Pulse para mostrar
pinned: Mensaxe fixada
reblogged: promovida
sensitive_content: Contido sensible
@@ -807,6 +851,7 @@ gl:
time:
formats:
default: "%d %b, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Introducir o código xerado polo seu aplicativo de autenticación para confirmar
description_html: Si habilita a
autenticación de doble factor, a conexión pediralle estar en posesión do seu teléfono, que xerará testemuños para poder entrar.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index c127db385..ccf53e14a 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -4,13 +4,13 @@ he:
about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור
#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה.
about_mastodon_html: מסטודון היא רשת חברתית
חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה
בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב
רשת החברתית באופן חלק.
about_this: אודות שרת זה
+ api: API
+ apps: יישומונים לנייד
closed_registrations: הרשמות סגורות לשרת זה לעת עתה.
- contact: צור קשר
- contact_missing: אין
+ contact: יצירת קשר
+ contact_missing: ללא הגדרה
contact_unavailable: לא רלוונטי/חסר
- description_headline: מהו %{domain}?
- domain_count_after: שרתים אחרים
- domain_count_before: מחובר אל
+ documentation: תיעוד
extended_description_html: |
מקום טוב לכללים
התיאור המורחב טרם הוגדר.
@@ -44,7 +44,6 @@ he:
people_who_follow: העוקבים של %{name}
posts: הודעות
posts_with_replies: חצרוצים ותגובות
- remote_follow: מעקב מרחוק
reserved_username: שם המשתמש שמור
roles:
admin: מנהל
@@ -286,7 +285,6 @@ he:
unlocked_warning_title: חשבונך אינו נעול
generic:
changes_saved_msg: השינויים נשמרו בהצלחה!
- powered_by: רץ על %{link}
save_changes: שמור שינויים
validation_errors:
one: משהו לא לגמרי בסדר עדיין! אנא הציצו על השגיאה מטה
@@ -299,8 +297,6 @@ he:
following: רשימת נעקבים
muting: רשימת השתקות
upload: יבוא
- landing_strip_html: "
%{name} מזהה משתמש(ת) מהקהילה %{link_to_root_path}. ניתן לעקוב אחריהם או לדבר איתם בעזרת חשבון על כל שרת קהילה ברחבי הפדרציה."
- landing_strip_signup_html: לחלופין , ניתן
להרשם מקומית כאן.
media_attachments:
validations:
images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות
@@ -372,7 +368,6 @@ he:
unlisted: מוסתר
unlisted_long: פומבי, אבל לא להצגה בפיד הציבורי
stream_entries:
- click_to_show: ללחוץ להצגה
reblogged: הודהד
sensitive_content: תוכן רגיש
time:
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 2d2eddc08..a6e7649f2 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -5,9 +5,6 @@ hr:
about_this: O ovoj instanci
closed_registrations: Registracije na ovoj instanci su trenutno zatvorene.
contact: Kontakt
- description_headline: Što je %{domain}?
- domain_count_after: druge instance
- domain_count_before: Spojen na
other_instances: Druge instance
source_code: Izvorni kod
status_count_after: statusi
@@ -22,7 +19,6 @@ hr:
people_followed_by: Ljudi koje %{name} slijedi
people_who_follow: Ljudi koji slijede %{name}
posts: Postovi
- remote_follow: Remote follow
unfollow: Prestani slijediti
application_mailer:
settings: 'Promijeni e-mail postavke: %{link}'
@@ -64,7 +60,6 @@ hr:
storage: Pohrana media zapisa
generic:
changes_saved_msg: Izmjene su uspješno sačuvane!
- powered_by: omogućuje %{link}
save_changes: Sačuvaj izmjene
validation_errors:
one: Nešto ne štima! Vidi grešku ispod
@@ -77,8 +72,6 @@ hr:
following: Lista onih koje slijedim
muting: Lista utišanih
upload: Upload
- landing_strip_html: "
%{name} je korisnik na %{link_to_root_path}. Možeš ih slijediti ili komunicirati s njima ako imaš račun igdje u fediversu."
- landing_strip_signup_html: Ako nemaš, možeš se
registrirati ovdje.
notification_mailer:
digest:
body: 'Ovo je kratak sažetak propuštenog %{instance} od tvog prošlog posjeta %{since}:'
@@ -141,7 +134,6 @@ hr:
public: Javno
unlisted: Javno, no nemoj prikazati na javnom timelineu
stream_entries:
- click_to_show: Klikni da bi prikazao
reblogged: potaknut
sensitive_content: Osjetljivi sadržaj
time:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 41093aa43..824a46066 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -8,9 +8,6 @@ hu:
contact: Kapcsolat
contact_missing: Nincs megadva
contact_unavailable: N/A
- description_headline: Mi az a %{domain}?
- domain_count_after: további instanciával
- domain_count_before: Kapcsolatban
extended_description_html: |
Ez itt a szabályzat helye
Még nem állítottál be bővebb leírást.
@@ -44,7 +41,6 @@ hu:
people_who_follow: "%{name} követői"
posts: Tülkök
posts_with_replies: Tülkök és válaszok
- remote_follow: Követés más hálózaton
reserved_username: Ez egy már lefoglalt felhasználónév
roles:
admin: Adminisztrátor
@@ -427,7 +423,6 @@ hu:
unlocked_warning_title: A fiókod jelenleg nem privát
generic:
changes_saved_msg: Változások sikeresen elmentve!
- powered_by: működteti a %{link}
save_changes: Változások mentése
validation_errors:
one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant
@@ -461,8 +456,6 @@ hu:
expires_at: Lejárat
uses: Használat
title: Meghívások
- landing_strip_html: "
%{name} az alábbi instancia használója: %{link_to_root_path}. Követheted vagy kapcsolatba léphetsz vele, ha már van felhasználói fiókod a föderációban."
- landing_strip_signup_html: Ha még nincs fiókod,
itt regisztrálhatsz.
lists:
errors:
limit: Elérted a hozzáadható listák maximális számát
@@ -610,7 +603,6 @@ hu:
unlisted: Listázatlan
unlisted_long: Mindenki látja, de a nyilvános időfolyamokban nem jelenik meg
stream_entries:
- click_to_show: Megtekintéshez kattints
pinned: Kitűzött tülk
reblogged: reblogolt
sensitive_content: Szenzitív tartalom
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 4fb75f2b0..33a764a28 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -5,9 +5,6 @@ id:
about_this: Tentang server ini
closed_registrations: Pendaftaran untuk server ini sedang ditutup.
contact: Kontak
- description_headline: Apa itu %{domain}?
- domain_count_after: server lain
- domain_count_before: Terhubung dengan
other_instances: Server lain
source_code: Kode sumber
status_count_after: status
@@ -22,7 +19,6 @@ id:
people_followed_by: Orang yang diikuti %{name}
people_who_follow: Orang-orang yang mengikuti %{name}
posts: Postingan
- remote_follow: Mengikuti
unfollow: Berhenti mengikuti
admin:
accounts:
@@ -213,7 +209,6 @@ id:
unlocked_warning_title: Akun anda tidak dikunci
generic:
changes_saved_msg: Perubahan berhasil disimpan!
- powered_by: didukung oleh %{link}
save_changes: Simpan perubahan
validation_errors:
one: Ada yang tidak beres! Mohon tinjau error dibawah ini
@@ -226,8 +221,6 @@ id:
following: Daftar diikuti
muting: Daftar didiamkan
upload: Unggah
- landing_strip_html: "
%{name} adalah pengguna di %{link_to_root_path}.Anda dapat mengikuti mereka atau berinteraksi dengan mereka jika anda memiliki akun di fediverse."
- landing_strip_signup_html: Jika anda tidak punya, anda bisa
daftar disini.
media_attachments:
validations:
images_and_video: Tidak bisa melampirkan video pada status yang telah memiliki gambar
@@ -298,7 +291,6 @@ id:
public_long: Bisa dilihat semua orang
unlisted: Bisa dilihat semua orang, tapi tidak ditampilkan di linimasa publik
stream_entries:
- click_to_show: Klik untuk menampilkan
reblogged: di-boost-kan
sensitive_content: Konten sensitif
time:
diff --git a/config/locales/io.yml b/config/locales/io.yml
index bf15de488..287c1d0e6 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -5,9 +5,6 @@ io:
about_this: Pri ta instaluro
closed_registrations: Membresko ne nun esas posible en ta instaluro.
contact: Kontaktar
- description_headline: Quo esas %{domain}?
- domain_count_after: altra instaluri
- domain_count_before: Konektita ad
other_instances: Altra instaluri
source_code: Fontkodexo
status_count_after: mesaji
@@ -22,7 +19,6 @@ io:
people_followed_by: Sequati da %{name}
people_who_follow: Sequanti di %{name}
posts: Mesaji
- remote_follow: Fore sequar
unfollow: Dessequar
admin:
accounts:
@@ -192,7 +188,6 @@ io:
storage: Konservado di kontenajo
generic:
changes_saved_msg: Chanji senprobleme konservita!
- powered_by: povigita da %{link}
save_changes: Konservar la chanji
validation_errors:
one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto.
@@ -205,8 +200,6 @@ io:
following: Listo de sequati
muting: Muting list
upload: Kargar
- landing_strip_html: "
%{name} esas uzero en %{link_to_root_path}. Tu povas sequar lu o komunikar kun lu, se tu havas konto irgaloke en la Fediverse."
- landing_strip_signup_html: Se tu ne havas, tu povas
membreskar hike.
media_attachments:
validations:
images_and_video: Cannot attach a video to a status that already contains images
@@ -274,7 +267,6 @@ io:
public: Publika
unlisted: Publika, ma ne aperos en publika tempolinei
stream_entries:
- click_to_show: Kliktar por montrar
reblogged: diskonocigita
sensitive_content: Titiliva kontenajo
time:
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 7478fbab7..c947e3107 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -5,49 +5,54 @@ it:
about_mastodon_html: Mastodon è un social network
gratuito e open-source. Un'alternativa
decentralizzata alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del
social network.
about_this: A proposito di questo server
administered_by: 'Amministrato da:'
- closed_registrations: Al momento le iscrizioni a questo server sono chiuse. Tuttavia! Puoi provare a cercare un istanza diversa su cui creare un account ed avere accesso alla stessa identica rete di questa.
+ api: API
+ apps: Applicazioni Mobile
+ closed_registrations: Al momento le iscrizioni a questo server sono chiuse. Tuttavia! Puoi provare a cercare un istanza diversa su cui creare un account ed avere accesso alla stessa identica rete.
contact: Contatti
contact_missing: Non impostato
contact_unavailable: N/D
- description_headline: Cos'è %{domain}?
- domain_count_after: altri server
- domain_count_before: Connesso a
+ documentation: Documentazione
extended_description_html: |
Un buon posto per le regole
La descrizione estesa non è ancora stata preparata.
features:
- humane_approach_body: Imparando dai fallimenti degli altri networks, Mastodon mira a fare scelte di design etico per combattere l'abuso dei social media.
+ humane_approach_body: Imparando dai fallimenti degli altri networks, Mastodon mira a fare scelte etiche di design per combattere l'abuso dei social media.
humane_approach_title: Un approccio più umano
- not_a_product_body: Mastodon non è una rete commerciale. Niente pubblicità, niente data mining, nessun giardino murato. Non c'è nessuna autorità centrale.
+ not_a_product_body: Mastodon non è una rete commerciale. Niente pubblicità, niente data mining, nessun recinto dorato. Non c'è nessuna autorità centrale.
not_a_product_title: Tu sei una persona, non un prodotto
real_conversation_body: Con 500 caratteri a disposizione, un supporto per i contenuti granulari ed avvisi sui media potrai esprimerti nel modo desiderato.
real_conversation_title: Creato per conversazioni reali
- within_reach_body: Apps per iOS, Android ed altre piattaforme, realizzate grazie ad un ecosistema di API adatto agli sviluppatori, ti consentono di poter stare ovunque al passo con i tuoi amici.
+ within_reach_body: Apps per iOS, Android ed altre piattaforme, realizzate grazie ad un ecosistema di API adatto agli sviluppatori, ti consentono di poter stare in contatto con i tuoi amici ovunque ti trovi.
within_reach_title: Sempre a portata di mano
generic_description: "%{domain} è un server nella rete"
hosted_on: Mastodon ospitato su %{domain}
learn_more: Scopri altro
other_instances: Elenco istanze
+ privacy_policy: Policy su la Privacy
source_code: Codice sorgente
status_count_after: stati
status_count_before: Che hanno pubblicato
+ terms: Termini di Servizio
user_count_after: utenti
user_count_before: Home di
what_is_mastodon: Che cos'è Mastodon?
accounts:
+ choices_html: 'Suggerimenti da %{name}:'
follow: Segui
followers: Seguaci
following: Segui
+ joined: Dal %{date}
media: Media
moved_html: "%{name} è stato spostato su %{new_profile_link}:"
network_hidden: Questa informazione non e' disponibile
nothing_here: Qui non c'è nulla!
people_followed_by: Persone seguite da %{name}
people_who_follow: Persone che seguono %{name}
+ pin_errors:
+ following: Devi gia seguire la persona che vuoi promuovere
posts: Posts
posts_with_replies: Toot e risposte
- remote_follow: Segui da remoto
- reserved_username: Il nome utente è riservato
+ reserved_username: Il nome utente è gia stato preso
roles:
admin: Amministratore
bot: Bot
@@ -158,6 +163,7 @@ it:
create_custom_emoji: "%{name} ha caricato un nuovo emoji %{target}"
create_domain_block: "%{name} ha bloccato il dominio %{target}"
create_email_domain_block: "%{name} ha messo il dominio email %{target} nella blacklist"
+ demote_user: "%{name} ha degradato l'utente %{target}"
destroy_domain_block: "%{name} ha sbloccato il dominio %{target}"
destroy_email_domain_block: "%{name}ha messo il dominio email %{target} nella whitelist"
destroy_status: "%{name} ha eliminato lo status di %{target}"
@@ -174,9 +180,13 @@ it:
resolve_report: "%{name} ha risolto il rapporto %{target}"
silence_account: "%{name} ha silenziato l'account di %{target}"
suspend_account: "%{name} ha sospeso l'account di %{target}"
+ unassigned_report: "%{name} report non assegnato %{target}"
unsilence_account: "%{name} ha de-silenziato l'account di %{target}"
unsuspend_account: "%{name} ha annullato la sospensione dell'account di %{target}"
update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
+ update_status: "%{name} stato aggiornato da %{target}"
+ deleted_status: "(stato cancellato)"
+ title: Audit log
custom_emojis:
by_domain: Dominio
copied_msg: Creata con successo una copia locale dell'emoji
@@ -202,6 +212,25 @@ it:
update_failed_msg: Impossibile aggiornare questa emojii
updated_msg: Emoji aggiornata con successo!
upload: Carica
+ dashboard:
+ backlog: backlogged jobs
+ config: Configurazione
+ feature_invites: Link di invito
+ feature_registrations: Registrazioni
+ features: Funzionalità
+ hidden_service: Federazione con servizi nascosti
+ open_reports: apri report
+ recent_users: Utenti Recenti
+ search: Ricerca testo intero
+ single_user_mode: Modalita utente singolo
+ software: Software
+ space: Utilizzo dello spazio
+ title: Dashboard
+ total_users: utenti totali
+ trends: Trends
+ week_interactions: interazioni per questa settimana
+ week_users_active: attivi questa settimana
+ week_users_new: utenti questa settimana
domain_blocks:
add_new: Aggiungi nuovo
created_msg: Il blocco del dominio sta venendo processato
@@ -209,11 +238,14 @@ it:
domain: Dominio
new:
create: Crea blocco
+ hint: Il blocco dominio non previene la creazione di utenti nel database, ma applicherà automaticamente e retroattivamente metodi di moderazione specifici su quegli account.
severity:
noop: Nessuno
silence: Silenzia
suspend: Sospendi
title: Nuovo blocco dominio
+ reject_media: Rifiuta file media
+ reject_media_hint: Rimuovi i file media salvati in locale e blocca i download futuri. Irrilevante per le sospensioni
severities:
noop: Nessuno
silence: Silenzia
@@ -238,6 +270,7 @@ it:
domain: Dominio
new:
create: Aggiungi dominio
+ title: Lista nera email
instances:
account_count: Accounts conosciuti
domain_name: Dominio
@@ -245,12 +278,15 @@ it:
search: Cerca
title: Istanze conosciute
invites:
+ deactivate_all: Disattiva tutto
filter:
all: Tutto
available: Disponibile
expired: Scaduto
title: Filtro
title: Inviti
+ relays:
+ inbox_url: Url Relay
reports:
account:
note: note
@@ -431,7 +467,6 @@ it:
unlocked_warning_html: Chiunque può seguirti per vedere immediatamente i tuoi status privati. %{lock_link} per poter esaminare e respingere gli utenti che vogliono seguirti.
generic:
changes_saved_msg: Modifiche effettuate con successo!
- powered_by: offerto da %{link}
save_changes: Salva modifiche
validation_errors:
one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto
@@ -465,8 +500,6 @@ it:
expires_at: Scade
uses: Utilizzi
title: Invita persone
- landing_strip_html: "
%{name} è un utente su %{link_to_root_path}. Puoi seguirlo o interagire con lui se possiedi un account ovunque nel fediverse."
- landing_strip_signup_html: Se non possiedi un account, puoi
iscriverti qui.
lists:
errors:
limit: Hai raggiunto il numero massimo di liste
@@ -603,7 +636,6 @@ it:
unlisted: Pubblico, ma non visibile sulla timeline pubblica
unlisted_long: Tutti lo possono vedere, ma non compare nelle timeline pubbliche
stream_entries:
- click_to_show: Clicca per mostrare
pinned: Toot fissato in cima
reblogged: condiviso
sensitive_content: Materiale sensibile
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 0e30a39e7..ae00edee6 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -5,13 +5,13 @@ ja:
about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。
about_this: 詳細情報
administered_by: '管理者:'
+ api: API
+ apps: アプリ
closed_registrations: 現在このインスタンスでの新規登録は受け付けていません。しかし、他のインスタンスにアカウントを作成しても全く同じネットワークに参加することができます。
contact: 連絡先
contact_missing: 未設定
contact_unavailable: N/A
- description_headline: "%{domain} とは?"
- domain_count_after: 個のインスタンス
- domain_count_before: 接続中
+ documentation: ドキュメント
extended_description_html: |
ルールを書くのに適した場所
詳細説明が設定されていません。
@@ -28,25 +28,34 @@ ja:
hosted_on: Mastodon hosted on %{domain}
learn_more: もっと詳しく
other_instances: 他のインスタンス
+ privacy_policy: プライバシーポリシー
source_code: ソースコード
- status_count_after: トゥート
+ status_count_after:
+ one: トゥート
+ other: トゥート
status_count_before: トゥート数
- user_count_after: 人
+ terms: 利用規約
+ user_count_after:
+ one: 人
+ other: 人
user_count_before: ユーザー数
what_is_mastodon: Mastodon とは?
accounts:
+ choices_html: "%{name} によるおすすめ:"
follow: フォロー
followers: フォロワー
following: フォロー中
+ joined: "%{date} に登録"
media: メディア
moved_html: "%{name} さんは引っ越しました %{new_profile_link}:"
network_hidden: この情報は利用できません
nothing_here: 何もありません!
people_followed_by: "%{name} さんがフォロー中のアカウント"
people_who_follow: "%{name} さんをフォロー中のアカウント"
+ pin_errors:
+ following: おすすめしたい人はあなたが既にフォローしている必要があります
posts: トゥート
posts_with_replies: トゥートと返信
- remote_follow: リモートフォロー
reserved_username: このユーザー名は予約されています
roles:
admin: Admin
@@ -180,6 +189,7 @@ ja:
unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
update_status: "%{name} さんが %{target} さんの投稿を更新しました"
+ deleted_status: "(削除済)"
title: 操作履歴
custom_emojis:
by_domain: ドメイン
@@ -206,6 +216,27 @@ ja:
update_failed_msg: 絵文字を更新できませんでした
updated_msg: 絵文字の更新に成功しました!
upload: アップロード
+ dashboard:
+ backlog: 未処理のジョブ
+ config: 構成
+ feature_deletions: アカウント削除
+ feature_invites: 招待リンク
+ feature_registrations: 新規登録
+ feature_relay: 連合リレー
+ features: 機能
+ hidden_service: 秘匿サービスとの連合
+ open_reports: 未解決のレポート
+ recent_users: 最近登録したユーザー
+ search: 全文検索
+ single_user_mode: シングルユーザーモード
+ software: ソフトウェア
+ space: ディスク使用量
+ title: ダッシュボード
+ total_users: 全ユーザー
+ trends: トレンドタグ
+ week_interactions: 今週交流のあった回数
+ week_users_active: 今週活動した人数
+ week_users_new: 今週登録した人数
domain_blocks:
add_new: 新規追加
created_msg: ドメインブロック処理を完了しました
@@ -255,12 +286,21 @@ ja:
search: 検索
title: 既知のインスタンス
invites:
+ deactivate_all: すべて無効化
filter:
all: すべて
available: 使用可能
expired: 期限切れ
title: フィルター
title: 招待
+ relays:
+ add_new: リレーを追加
+ description_html: "
連合リレーとは、登録しているサーバー間の公開トゥートを仲介するサーバーです。
中小規模のサーバーが連合のコンテンツを見つけるのを助けます。これを使用しない場合、ローカルユーザーがリモートユーザーを手動でフォローする必要があります。"
+ enable_hint: 有効にすると、リレーから全ての公開トゥートを受信するようになり、またこのサーバーの全ての公開トゥートをリレーに送信するようになります。
+ inbox_url: リレーURL
+ setup: リレー接続を設定する
+ status: ステータス
+ title: リレー
report_notes:
created_msg: レポートメモを書き込みました!
destroyed_msg: レポートメモを削除しました!
@@ -339,11 +379,14 @@ ja:
desc_html: ユーザーページにスタッフのバッジを表示します
title: スタッフバッジを表示する
site_description:
- desc_html: フロントページへの表示と meta タグに使用される紹介文です。HTMLタグ、特に
<a>
と
<em>
が使えます。
+ desc_html: フロントページへの表示に使用される紹介文です。このMastodonインスタンスを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に
<a>
と
<em>
が使えます。
title: インスタンスの説明
site_description_extended:
desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます
title: カスタム詳細説明
+ site_short_description:
+ desc_html: サイドバーと meta タグに表示されます。Mastodon とは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、インスタンスの説明が使用されます。
+ title: 短いインスタンスの説明
site_terms:
desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます
title: カスタム利用規約
@@ -365,6 +408,7 @@ ja:
media:
title: メディア
no_media: メディアなし
+ no_status_selected: 何も選択されていないため、変更されていません
title: トゥート一覧
with_media: メディアあり
subscriptions:
@@ -374,6 +418,12 @@ ja:
last_delivery: 最終配送
title: WebSub
topic: トピック
+ suspensions:
+ bad_acct_msg: 値が一致しませんでした。停止しようとしているアカウントに間違いはありませんか?
+ hint_html: 'アカウントの停止を確認するには、以下のフィールドに %{value} と入力してください:'
+ proceed: 完全に活動停止させる
+ title: "%{acct} を停止"
+ warning_html: 'このアカウントを停止すると、このアカウントから次のようなデータが
不可逆的に削除されます:'
title: 管理
admin_mailer:
new_report:
@@ -505,9 +555,12 @@ ja:
true_privacy_html: "
プライバシーの保護はエンドツーエンドの暗号化でのみ実現可能であることに留意ください。"
unlocked_warning_html: 誰でもあなたをフォローすることができ、フォロワー限定の投稿をすぐに見ることができます。フォローする人を限定したい場合は%{lock_link}に設定してください。
unlocked_warning_title: このアカウントは承認制アカウントに設定されていません
+ footer:
+ developers: 開発者向け
+ more: さらに…
+ resources: リソース
generic:
changes_saved_msg: 正常に変更されました!
- powered_by: powered by %{link}
save_changes: 変更を保存
validation_errors:
one: エラーが発生しました! 以下のエラーを確認してください
@@ -543,8 +596,6 @@ ja:
expires_at: 有効期限
uses: 使用
title: 新規ユーザーの招待
- landing_strip_html: "
%{name} さんはインスタンス %{link_to_root_path} のユーザーです。アカウントさえ持っていればフォローしたり会話したりできます。"
- landing_strip_signup_html: もしお持ちでないなら
こちら からサインアップできます。
lists:
errors:
limit: リストの上限に達しました
@@ -603,7 +654,6 @@ ja:
quadrillion: Q
thousand: K
trillion: T
- unit: ''
pagination:
newer: 新しいトゥート
next: 次
@@ -621,6 +671,9 @@ ja:
no_account_html: アカウントをお持ちではないですか?
こちらからサインアップできます
proceed: フォローする
prompt: 'フォローしようとしています:'
+ remote_interaction:
+ proceed: 進む
+ prompt: 'このトゥートに返信しようとしています:'
remote_unfollow:
error: エラー
title: タイトル
@@ -695,7 +748,7 @@ ja:
disallowed_hashtags:
one: '許可されていないハッシュタグが含まれています: %{tags}'
other: '許可されていないハッシュタグが含まれています: %{tags}'
- language_detection: 自動的に言語を検出する
+ language_detection: 自動検出
open_in_web: Webで開く
over_character_limit: 上限は %{max}文字までです
pin_errors:
@@ -704,6 +757,7 @@ ja:
private: 非公開のトゥートを固定することはできません
reblog: ブーストされたトゥートを固定することはできません
show_more: もっと見る
+ sign_in_to_participate: ログインして会話に参加
title: '%{name}: "%{quote}"'
visibilities:
private: フォロワー限定
@@ -713,7 +767,6 @@ ja:
unlisted: 未収載
unlisted_long: 誰でも見ることができますが、公開タイムラインには表示されません
stream_entries:
- click_to_show: クリックして表示
pinned: 固定されたトゥート
reblogged: さんがブースト
sensitive_content: 閲覧注意
@@ -807,6 +860,7 @@ ja:
time:
formats:
default: "%Y年%m月%d日 %H:%M"
+ month: "%Y年 %b"
two_factor_authentication:
code_hint: 確認するには認証アプリで表示されたコードを入力してください
description_html: "
二段階認証を有効にするとログイン時、認証アプリからコードを入力する必要があります。"
@@ -822,7 +876,7 @@ ja:
recovery_codes_regenerated: リカバリーコードが再生成されました
recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。
リカバリーコードは大切に保全してください。たとえば印刷してほかの重要な書類と一緒に保管することができます。
setup: 初期設定
- wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していることを確認してください。
+ wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していますか?
user_mailer:
backup_ready:
explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます!
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
new file mode 100644
index 000000000..c1105b017
--- /dev/null
+++ b/config/locales/ka.yml
@@ -0,0 +1,899 @@
+---
+ka:
+ about:
+ about_hashtag_html: ეს საჯარო ტუტებია, რომლებიც ატარებენ
#%{hashtag} ტეგს. მათთან ინტერაქციას შეძლებთ, თუ ფედივერსში გაქვთ რაიმე ანგარიში.
+ about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა.
+ about_this: შესახებ
+ administered_by: 'ადმინისტრატორი:'
+ api: აპი
+ apps: მობილური აპლიკაციები
+ closed_registrations: რეგისტრაციები ამჟამად ინსტანციაზე დახურულია. თუმცა! ანგარიშის შესაქმნელად შეგიძლიათ იპოვოთ სხვა ინსტანცია და იმავე ქსელზე იქონიოთ წვდომა იქიდან.
+ contact: კონტაქტი
+ contact_missing: არაა დაყენებული
+ contact_unavailable: მიუწ.
+ documentation: დოკუმენტაცია
+ extended_description_html: |
+
კარგი ადგილი წესებისთვის
+
განვრცობილი აღწერილობა ჯერ არ შექმნილა.
+ features:
+ humane_approach_body: სხვა ქსელების შეცდომების გათვალისწინებით, მასტოდონი მიზნად ისახავს ეტიკური დიზაინის არჩევნების გაკეთებას, დაუპირისპირდეს სოციალური მედიის არასწორ მოხმარებას.
+ humane_approach_title: უფრო ადამიანური მიდგომა
+ not_a_product_body: მასტოდონი არ არის კომერციული ქსელი. არაა რეკლამა, არაა მაინინგი, არაა შემოღობილი ბაღები. არაა ცენტრალური ავტორიტეტი.
+ not_a_product_title: შენ ხარ პერსონა და არა პროდუქტი
+ real_conversation_body: 500 ნიშნის განკარგულებით, მარცვლოვანი კონტენტის და მედია გაფრთხილებების მხარდაჭერით, შეგიძლიათ გამოხატოთ ისე როგორც გსურთ.
+ real_conversation_title: შექმნილია ნამდვილი საუბრისთვის
+ within_reach_body: დეველოპერისთვის-მეგობრული აპი ექოსისტემის წყალობით, მრავალი აპლიკაცია აი-ოსისთვის, ანდროიდისთვის და სხვა პლატფორმებისთვის, საშალებას მოგცემთ ნებისმიერი ადგილიდან იქონიოთ კავშირი თქვენს მეგობრებთან.
+ within_reach_title: მუდამ წვდომის ქვეშ
+ generic_description: "%{domain} ერთი სერვერია ქსელში"
+ hosted_on: მასტოდონს მასპინძლობს %{domain}
+ learn_more: გაიგე მეტი
+ other_instances: ინსტანციების სია
+ privacy_policy: კონფიდენციალურობის პოლიტიკა
+ source_code: კოდი
+ status_count_after: სტატუსები
+ status_count_before: ვინც უავტორა
+ terms: მომსახურების პირობები
+ user_count_after: მომხმარებლისთვის
+ user_count_before: სახლი
+ what_is_mastodon: რა არის მასტოდონი?
+ accounts:
+ choices_html: "%{name}-ის არჩევნები:"
+ follow: გაყევი
+ followers: მიმდევრები
+ following: მიჰყვება
+ joined: გაწევრიანდა %{date}
+ media: მედია
+ moved_html: "%{name} გადავიდა %{new_profile_link}:"
+ network_hidden: ეს ინფორმაცია ხელმიუწვდომელია
+ nothing_here: აქ არაფერია!
+ people_followed_by: ხალხი ვისაც %{name} მიჰყვება
+ people_who_follow: ხალხი ვინც მიჰყვება %{name}-ს
+ pin_errors:
+ following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ
+ posts: ტუტები
+ posts_with_replies: ტუტები და პასუხები
+ reserved_username: მომხმარებელი რეზერვირებულია
+ roles:
+ admin: ადმინისტრატორი
+ bot: ბოტი
+ moderator: მოდერატორი
+ unfollow: ნუღარ მიჰყვები
+ admin:
+ account_moderation_notes:
+ create: დატოვეთ ჩანაწერი
+ created_msg: მოდერაციის ჩანაწერი წარმატებით შეიქმნა!
+ delete: გაუქმება
+ destroyed_msg: მოდერაციის ჩანაწერი წარმატებით გაუქმდა!
+ accounts:
+ are_you_sure: დარწმუნებული ხარ?
+ avatar: ავატარი
+ by_domain: დომენი
+ change_email:
+ changed_msg: ანგარიშის ელ-ფოსტა წარმატებით შეიცვალა!
+ current_email: მიმდინარე ელ-ფოსტა
+ label: ელ-ფოსტის შეცვლა
+ new_email: ახალი ელ-ფოსტა
+ submit: ელ-ფოსტის შეცვლა
+ title: შეცვალეთ ელ-ფოსტა მომხმარებლისთვის %{username}
+ confirm: დადასტურება
+ confirmed: დადასტურებულია
+ confirming: დასტურდება
+ demote: დაქვეითება
+ disable: გამორთვა
+ disable_two_factor_authentication: გამორთე 2FA
+ disabled: გამორთულია
+ display_name: დისპლეი სახელი
+ domain: დომენი
+ edit: შეცვლა
+ email: ელ-ფოსტა
+ email_status: ელ-ფოსტის სტატუსი
+ enable: ჩართვა
+ enabled: ჩართულია
+ feed_url: ლენტის ურლ
+ followers: მიმდევრები
+ followers_url: მიმდევრების ურლ
+ follows: დადევნებები
+ inbox_url: ინბოქსის ურლ
+ ip: აი-პი
+ location:
+ all: ყველა
+ local: ლოკალური
+ remote: დისტანციური
+ title: ადგილმდებარეობა
+ login_status: ლოგინის სტატუსი
+ media_attachments: თან-დართული მედია
+ memorialize: აქციე მემორანდუმად
+ moderation:
+ all: ყველა
+ silenced: გაჩუმებული
+ suspended: შეჩერებული
+ title: მოდერაცია
+ moderation_notes: მოდერაციის ჩანაწერები
+ most_recent_activity: უახლესი აქტივობა
+ most_recent_ip: უახლესი აი-პი
+ not_subscribed: გამოუწერელი
+ order:
+ alphabetic: ანბანური
+ most_recent: უახლესი
+ title: წესრიგი
+ outbox_url: აუთბოქსის ურლ
+ perform_full_suspension: მოახდინეთ სრული შეჩერება
+ profile_url: პროფილის ურლ
+ promote: დაწინაურება
+ protocol: პროტოკოლი
+ public: საჯარო
+ push_subscription_expires: ფუშ გამოწერა უქმდება
+ redownload: განაახლე ავატარი
+ remove_avatar: გააუქმე ავატარი
+ resend_confirmation:
+ already_confirmed: ეს მომხმარებელი უკვე დამოწმებულია
+ send: დამოწმების ინსტრუქციების გადაგზავნა
+ success: დამოწმების ინსტრუქციები წარმატებით გაიგზავნა!
+ reset: გადატვირთვა
+ reset_password: პაროლის გადატვირთვა
+ resubscribe: ხელახალი გამოწერა
+ role: უფლებები
+ roles:
+ admin: ადმინისტრატორი
+ moderator: მოდერატორი
+ staff: სტაფი
+ user: მომხმარებელი
+ salmon_url: სალმონის ურლ
+ search: ძებნა
+ shared_inbox_url: გაზიარებული ინბოქსის ურლ
+ show:
+ created_reports: ამ ანგარიშის მიერ შექმნილი რეპორტები
+ report: რეპორტი
+ targeted_reports: ამ ანგარიშზე მიღებული რეპორტები
+ silence: სიჩუმე
+ statuses: სტატუსები
+ subscribe: გამოწერა
+ title: ანგარიშები
+ unconfirmed_email: დაუმოწმებელი ელ-ფოსტა
+ undo_silenced: გაჩუმების მოშორება
+ undo_suspension: შეჩერების მოშორება
+ unsubscribe: გამოწერის შეწყვეტა
+ username: მომხმარებლის სახელი
+ web: ვები
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name}-მა დანიშნა რეპორტი %{target} საკუთარ თავზე"
+ change_email_user: "%{name}-მა შეცვალა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
+ confirm_user: "%{name}-მა დაამოწმა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
+ create_custom_emoji: "%{name}-მა ატვირთა ახალი ემოჯი %{target}"
+ create_domain_block: "%{name}-მა დაბლოკა დომენი %{target}"
+ create_email_domain_block: "%{name}-მა შავ სიაში მოაქცია დომენი %{target}"
+ demote_user: "%{name}-მა დააქვეითა მომხმარებელი %{target}"
+ destroy_domain_block: "%{name}-მა ბლოკი მოხსნა დომენს %{target}"
+ destroy_email_domain_block: "%{name} თეთრ სიაში მოაქცია დომენი %{target}"
+ destroy_status: "%{name}-მა გააუქმა სტატუსი %{target}-ზე"
+ disable_2fa_user: "%{name} გათიშა მეორე ფაქტორის მოთხოვნილება მომხმარებელზე %{target}"
+ disable_custom_emoji: "%{name}-მა გათისა ემოჯი %{target}"
+ disable_user: "%{name}-მა გათიშა ლოგინი მომხმარებლისთვის %{target}"
+ enable_custom_emoji: "%{name}-მა ჩართო ემოჯი %{target}"
+ enable_user: "%{name}-მა ჩართო ლოგინი მომხმარებლისთვის %{target}"
+ memorialize_account: "%{name}-მა აქცია ანგარიში %{target} მემორანდუმის გვერდად"
+ promote_user: "%{name}-მა დააწინაურა მომხმარებელი %{target}"
+ remove_avatar_user: "%{name}-მა გააუქმა %{target} მომხმარებლის ავატარი"
+ reopen_report: "%{name}-მა ხელახლა გახსნა რეპორტი %{target}"
+ reset_password_user: "%{name} გადატვირთა მომხმარებლის %{target} პაროლი"
+ resolve_report: "%{name}-მა მოაგვარა %{target} მომხმარებლის რეპორტი"
+ silence_account: "%{name}-მა გააჩუმა %{target} ანგარიში"
+ suspend_account: "%{name} შეაჩერა %{target} ანგარიში"
+ unassigned_report: "%{name}-მა მოაშორა რეპორტი %{target}"
+ unsilence_account: "%{name}-მა მოაშორა გაჩუმება %{target} ანგარიშს"
+ unsuspend_account: "%{name}-მა მოაშორა შეჩერება %{target} ანგარიშს"
+ update_custom_emoji: "%{name}-მა განაახლა ემოჯი %{target}"
+ update_status: "%{name}-მა განაახლა სტატუსი %{target}-ით"
+ deleted_status: "(გაუქმებული სტატუსი)"
+ title: აუდიტის ლოგი
+ custom_emojis:
+ by_domain: დომენი
+ copied_msg: ემოჯის ლოკალური ასლი წარმატებით შეიქმნა
+ copy: კოპირება
+ copy_failed_msg: ამ ემოჯის ლოკალური ასლი ვერ შეიქმნა
+ created_msg: ემოჯი წარმატებით შეიქმნა!
+ delete: გაუქმება
+ destroyed_msg: ემოჯი წარმატებით გაუქმდა!
+ disable: გათიშვა
+ disabled_msg: ეს ემოჯი წარმატებით გაითიშა
+ emoji: ემოჯი
+ enable: ჩართვა
+ enabled_msg: წარმატებით ჩაირთო ეს ემოჯი
+ image_hint: PNG 50კბმდე
+ listed: ჩამოთვლილი
+ new:
+ title: ახალი პერსონალიზირებული ემოჯის დამატება
+ overwrite: გადაწერა
+ shortcode: მოკლე-კოდი
+ shortcode_hint: მინ. 2 ნიშანი, მხოლოდ ალფანუმერიკული ნიშნები და "ქვედა-ტირეები"
+ title: პერსონალიზირებული ემოჯიები
+ unlisted: ჩამოუთვლელი
+ update_failed_msg: ემოჯის განახლება ვერ მოხერხდა
+ updated_msg: ემოჯი წარმატებით განახლდა!
+ upload: ატვირთვა
+ dashboard:
+ backlog: დაუსრულებელი საქმეები
+ config: კონფიგურაცია
+ feature_deletions: ანგარიშის გაუქმებები
+ feature_invites: მოწვევის ბმულები
+ feature_registrations: რეგისტრაციები
+ feature_relay: ფედერაციის რილეი
+ features: ფუნქციები
+ hidden_service: ფედერაცია დამალულ სერვისებთან
+ open_reports: ღია რეპორტები
+ recent_users: ახალი მომხმარებლები
+ search: სრული-ტექსტის ძიება
+ single_user_mode: ერთ-მომხმარებლიანი რეჟიმი
+ software: პროგრამა
+ space: მოცულობის მოხმარება
+ title: დაფა
+ total_users: სულ მომხმარებლები
+ trends: ტრენდები
+ week_interactions: ამ კვირის ინტერაქციები
+ week_users_active: აქტიური ამ კვირას
+ week_users_new: ამ კვირის მომხმარებლები
+ domain_blocks:
+ add_new: ახლის დამატება
+ created_msg: დომენის ბლოკი ახლა პროცესირების ქვეშაა
+ destroyed_msg: დომენის ბლოკი გაუქმდა
+ domain: დომენი
+ new:
+ create: ბლოკის შექმნა
+ hint: დომენის ბლოკი არ შეაჩერებს ანგარიშების ჩაწერას მონაცემთა ბაზაში, მაგრამ ეს ამ ანგარიშებზე რეტროაქტიულად და ავტომატურად გაატარებს სპეციფიურ მოდერაციის მეთოდებს.
+ severity:
+ desc_html: "
გაჩუმება გახდის ანგარიშის პოსტებს უჩინარს ყველასთვის, ვინც მას არ მიჰყვება.
შეჩერება გააუქმებს ანგარიშის მთელ კონტენტს, მედიას და პროფილის მონაცემს. გამოიყენეთ
არც ერთი თუ გსურთ უბრალოდ უარყოთ ფაილები."
+ noop: არც ერთი
+ silence: გაჩუმება
+ suspend: შეჩერება
+ title: ახალი დომენის ბლოკი
+ reject_media: მედია ფაილების უარყოფა
+ reject_media_hint: შლის ლოკალურად შენახულ მედია ფაილებს და უარყოფს სამომავლო გადმოტვირთებს. შეუსაბამო შეჩერებებისთვის
+ severities:
+ noop: არც ერთი
+ silence: გაჩუმება
+ suspend: შეჩერება
+ severity: სიმძიმე
+ show:
+ affected_accounts:
+ one: გავლენა იქონია მონაცემთა ბაზაში ერთ ანგარიშზე
+ other: გავლენა იქონიო მონაცემთა ბაზაში %{count} ანგარიშზე
+ retroactive:
+ silence: ამ დომენში ყველა არსებულ ანგარიშზე გაჩუმების მოშორება
+ suspend: ამ დომენში ყველა არსებულ ანგარიშზე შეჩერების მოშორება
+ title: უკუაქციეთ დომენის ბლოკი %{domain} დომენზე
+ undo: უკუქცევა
+ title: დომენის ბლოკები
+ undo: უკუქცევა
+ email_domain_blocks:
+ add_new: ახლის დამატება
+ created_msg: ელ-ფოსტის დომენი წარმატებით დაემატა შავ სიას
+ delete: გაუქმება
+ destroyed_msg: ელ-ფოსტის დომენი წარმატებით ამოიშალა შავი სიიდან
+ domain: დომენი
+ new:
+ create: დომენის დამატება
+ title: ელ-ფოსტის ახალი შენატანი შავ სიაში
+ title: ელ-ფოსტის შავი სია
+ instances:
+ account_count: ცნობილი ანგარიშები
+ domain_name: დომენი
+ reset: გადატვირთვა
+ search: ძებნა
+ title: ცნობილი ინსტანციები
+ invites:
+ deactivate_all: ყველას დეაქტივაცია
+ filter:
+ all: ყველა
+ available: ხელმისაწვდომი
+ expired: ვადაგასული
+ title: ფილტრი
+ title: მოწვევები
+ relays:
+ add_new: ახელი რილეი
+ description_html: "
ფედერაციის რილეი შუამავალი სერვერია, რომელიც ცვლის საჯარო ტუტების დიდ ოდენობას იმ სერვერებს შორის, რომლებიც გამოიწერენ და მასზე გამოაქვეყნებენ.
ეს მცირე და საშუალო სერვერებს ეხმარება აღმოაჩინონ კონტენტი ფედივერსისგან, რომელიც სხვა შემთხვევაში მომხარებლებს აიძულებდა მექნიკურ რეჟიმში გაჰყოლოდნენ ხალხს სხვა დისტანციურ სერვერებზე."
+ enable_hint: ამოქმდების შემდეგ, თქვენი სერვერი გამოიწერს ყველა საჯარო ტუტს ამ რილეიდან და დაიწყებს სერვერის ღია ტუტების იქ გაგზავნას.
+ inbox_url: რილეი ურლ
+ setup: რილეი კავშირის დამყარება
+ status: სტატუსი
+ title: რილეი სია
+ report_notes:
+ created_msg: რეპორტის ჩანაწერი წარმატებით შეიქმნა!
+ destroyed_msg: რეპორტის ჩანაწერი წარმატებით გაუქმდა!
+ reports:
+ account:
+ note: ჩანაწერი
+ report: რეპორტი
+ action_taken_by: მოქმედება შეასრულა
+ are_you_sure: დარწმუნებული ხარ?
+ assign_to_self: დანიშნე ჩემზე
+ assigned: დაინიშნა მოდერატორი
+ comment:
+ none: არაფერი
+ created_at: რეპორტის დრო
+ id: იდ
+ mark_as_resolved: მონიშნე გადაწყვეტილად
+ mark_as_unresolved: მონიშნე გადაუწყვეტლად
+ notes:
+ create: ჩანაწერის დამატება
+ create_and_resolve: გადაწყვეტა ჩანაწერით
+ create_and_unresolve: ხელახალი გახსნა ჩანაწერით
+ delete: გაუქმება
+ placeholder: აღწერეთ თუ რა ნაბიჯები უნდა გადაიდგას, ან სხვა დაკავშირებული განახლებები...
+ reopen: რეპორტის ხელახალი გახსნა
+ report: 'რეპორტი #%{id}'
+ report_contents: მოცულობები
+ reported_account: დარეპორტებული ანგარიში
+ reported_by: დაარეპორტა
+ resolved: გადაწყვეტილი
+ resolved_msg: რეპორტი წარმატებით გადაწყდა!
+ silence_account: ანგარიშის გაჩუმება
+ status: სტატუსი
+ suspend_account: ანგარიშის შეჩერება
+ target: მიზანი
+ title: რეპორტები
+ unassign: გადაყენება
+ unresolved: გადაუწყვეტელი
+ updated_at: განახების დრო
+ view: ჩვენება
+ settings:
+ activity_api_enabled:
+ desc_html: ლოკალურად გამოქვეყნებული სტატუსების, აქტიური მომხმარებლების და ყოველკვირეული რეგისტრაციების მთვლელი
+ title: გამოაქვეყნე აგრეგატი სტატისტიკები მომხმარებლის აქტივობაზე
+ bootstrap_timeline_accounts:
+ desc_html: გამოჰყავი მომხმარებლები მძიმით. იმუშავებს მხოლოდ ლოკალური და "ბლოკ-მოხსნილ" ანგარიშები. საწყისი როდესაც ცარიელია ყველა ლოკალური ადმინი.
+ title: საწყისი მიდევნებები ახლა მომხმარებლებზე
+ contact_information:
+ email: ბიზნეს ელ-ფოსტა
+ username: საკონტაქტო მომხმარებლის სახელი
+ hero:
+ desc_html: წინა გვერდზე გამოჩენილი. მინ. 600/100პიქს. რეკომენდირებული. როდესაც არაა დაყენებული, ჩნდება ინსტანციის პიქტოგრამა
+ title: გმირი სურათი
+ peers_api_enabled:
+ desc_html: დომენების სახელები რომლებსაც შეხვდა ეს ინსტანცია ფედივერსში
+ title: გამოაქვეყნე აღმოჩენილი ინსტანციების სია
+ preview_sensitive_media:
+ desc_html: ბმულის პრევიუები სხვა ვებ-საიტებზე გამოაჩენენ პიქტოგრამას, მაშინაც კი თუ მედია მონიშნულია მგრძნობიარედ
+ title: გამოაჩინე მგრძნობიარე მედია ოუფენ-გრეფ პრევიუებში
+ registrations:
+ closed_message:
+ desc_html: გამოჩნდება წინა გვერდზე, როდესაც რეგისტრაციები დახურულია. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: დახურული რეგისტრაციის წერილი
+ deletion:
+ desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში
+ title: ღია ანგარიშის გაუქმება
+ min_invite_role:
+ disabled: არავინ
+ title: ნება დაერთოს მოწვეევებს
+ open:
+ desc_html: უფლება მიეცით ყველას, გახსნან ანგარიში
+ title: ღია რეგისტრაცია
+ show_known_fediverse_at_about_page:
+ desc_html: ჩართვისას, ეს გამოაჩენს ტუტებს ყველა ცნობილი ფედივერსისგან პრევიუზე. სხვა შემთხვევაში, გამოაჩენს მხოლოდ ლოკალურ ტუტებს.
+ title: გამოჩნდეს ცნობილი ვედივერსი თაიმლაინ პრევიუში
+ show_staff_badge:
+ desc_html: გამოჩნდეს სტაფის ნიშანი მომხმარებლის გვერდზე
+ title: სტაფის ნიშნის გამოჩენა
+ site_description:
+ desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ
<a>
და
<em>
.
+ title: ინსტანციის აღწერილობა
+ site_description_extended:
+ desc_html: კარგი ადგილი მოქცევის კოდექსისთვის, წესები, სახელმძღვანელოები და სხვა რაც გამოარჩევს თქვენს ინსტანციას. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: პერსონალიზირებული განვრცობილი ინფორმაცია
+ site_short_description:
+ desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა.
+ title: აჩვენეთ ინსტანციის აღწერილობა
+ site_terms:
+ desc_html: შეგიძლიათ დაწეროთ საკუთარი კონფიდენციალურობის პოლიტიკა, მომსახურების პირობები ან სხვა იურიდიული დოკუმენტი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: პერსონალიზირებული მომსახურების პირობები
+ site_title: ინსტანციის სახელი
+ thumbnail:
+ desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული
+ title: ინსტანციის პიქტოგრამა
+ timeline_preview:
+ desc_html: აჩვენეთ საჯარო თაიმლაინი ლენდინგ გვერდზე
+ title: თაიმლაინ პრევიუ
+ title: საიტის პარამეტრები
+ statuses:
+ back_to_account: უკან ანგარიშის გვერდისკენ
+ batch:
+ delete: გაუქმება
+ nsfw_off: მონიშნე არა-მგრძნობიარედ
+ nsfw_on: მონიშნე მგრძნობიარედ
+ failed_to_execute: ვერ გაეშვა
+ media:
+ title: მედია
+ no_media: არაა მედია
+ no_status_selected: სატუსები არ შეცვლილა, რადგან არცერთი არ მონიშნულა
+ title: ანგარიშის სტატუსები
+ with_media: მედიით
+ subscriptions:
+ callback_url: ქოლბექ ურლ
+ confirmed: დამოწმდა
+ expires_in: ვადა გასდის
+ last_delivery: ბოლო მიღება
+ title: ვებ-საბი
+ topic: სათაური
+ title: ადმინისტრაცია
+ admin_mailer:
+ new_report:
+ body: "%{reporter}-მა დაარეპორტა %{target}"
+ body_remote: ვიღაცამ %{domain}-იდან დაარეპორტა %{target}
+ subject: ახალი რეპორტი %{instance} (#%{id})-ზე
+ application_mailer:
+ notification_preferences: შეცვალეთ ელ-ფოსტის პრეფერნსიები
+ salutation: "%{name},"
+ settings: 'შეცვალეთ ელ-ფოსტის პრეფერენსიები: %{link}'
+ view: 'ჩვენება:'
+ view_profile: პროფილის ჩვენება
+ view_status: სტატუსის ჩვენება
+ applications:
+ created: აპლიკაცია წარმატებით შეიქმნა
+ destroyed: აპლიკაცია წარმატებით გაუქმდა
+ invalid_url: მოწოდებული ურლ არასწორია
+ regenerate_token: წვდომის ტოკენის რეგენერაცია
+ token_regenerated: წვდომის ტოკენის რეგენერაცია მოხერხდა
+ warning: იყავით ძალიან ფრთხილად ამ მონაცემთან. არასდროს გააზიაროთ ეს!
+ your_token: თქვენი წვდომის ტოკენი
+ auth:
+ agreement_html: რეგისტრაციით თქვენ ეთანხმებით
ინსტანციის წესებს და
ჩვენ მომსახურების პირობებს.
+ change_password: პაროლი
+ confirm_email: ელ-ფოსტის დამოწმება
+ delete_account: ანგარიშის გაუქმება
+ delete_account_html: თუ გსურთ გააუქმოთ თქვენი ანგარიში, შეგიძლიათ
გააგრძელოთ აქ. საჭირო იქნება დამოწმება.
+ didnt_get_confirmation: არ მოგსვლიათ დამოწმების ინსტრუქციები?
+ forgot_password: დაგავიწყდათ პაროლი?
+ invalid_reset_password_token: პაროლის გადატვირთვის ტოკენი არასწორია ან ვადაგასული. გთხოვთ მოითხოვეთ ახალი.
+ login: შესვლა
+ logout: გასვლა
+ migrate_account: სხვა ანგარიშზე გადასვლა
+ migrate_account_html: თუ გსურთ ამ ანგარიშის რედირექტის ხვაზე, შეგიძლიათ
გაუწიოთ კონფიგურაცია აქ.
+ or: ან
+ or_log_in_with: ან გამოიყენეთ
+ providers:
+ cas: ქეს
+ saml: სამლ
+ register: რეგისტრაცია
+ register_elsewhere: რეგისტრაცია სხვა სერვერზე
+ resend_confirmation: დამოწმების ინსტრუქციების ხელახალი გამოგზავნა
+ reset_password: პაროლის გადატვირთვა
+ security: უსაფრთხოება
+ set_new_password: ახალი პაროლის დაყენება
+ authorize_follow:
+ already_following: უკვე მიჰყვებით ამ ანგარიშს
+ error: სამწუხაროთ, დისტანციური სერვერის წაკითხვამ გამოიწვია შეცდომა
+ follow: გაყევი
+ follow_request: 'დადევნების მოთხონვა გაეგზავნა:'
+ following: 'წარმატება! ახლა მიჰყვებით:'
+ post_follow:
+ close: ან შეგიძლიათ დახუროთ ეს ფანჯარა.
+ return: მომხმარებლის პროფილის ჩვენება
+ web: ვებზე გადასვლა
+ title: გაყევი %{acct}-ს
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}სთ"
+ about_x_months: "%{count}თვე"
+ about_x_years: "%{count}წელი"
+ almost_x_years: "%{count}წელი"
+ half_a_minute: ამ წამს
+ less_than_x_minutes: "%{count}წთ"
+ less_than_x_seconds: ამ წამს
+ over_x_years: "%{count}წელი"
+ x_days: "%{count}დღე"
+ x_minutes: "%{count}წთ"
+ x_months: "%{count}თვე"
+ x_seconds: "%{count}წმ"
+ deletes:
+ bad_password_msg: კარგად სცადეთ, ჰაკერებო! არასწორი პაროლი
+ confirm_password: იდენტობის დასამოწმებლად შეიყვანეთ მიმდინარე პაროლი
+ description_html: ეს
სამუდამოდ, დაუბრუნებლად გააუქმებს კონტენტს თქვენი ანგარიშიდან და მოახდენს მის დეაქტივაციას. მომხმარებლის სახელი კი, სამომავლო იმპერსონაციების შესაჩერებლად, გახდება რეზერვირებული
+ proceed: ანგარიშის გაუქმება
+ success_msg: თქვენი ანგარიში წარმატებით გაუქმდა
+ warning_html: მოცულობის გაუქმება გარანტირებულია მხოლოდ ამ ინსტანციაზე. კონტენტი რომელიც ფართო მასშტაბით გაზიარდა უფრო დატოვებს კვალს. ოფლაინ სერვერები და სერვერები, რომლებმაც შეწყვიტეს თქვენი განახლებების გამოწერა არ განაახლებენ მონაცემთა ბაზებს.
+ warning_title: წვდომა გავრცელებულ კონტენტზე
+ errors:
+ '403': ამ გვერდის ხილვის უფლება არ გაქვთ.
+ '404': გვერდი რომელსაც ეძებთ არ არსებობს.
+ '410': გვერდი რომელსაც ეძებდით აღარ არსებობს.
+ '422':
+ content: უსაფრთხოების ვერიფიკაცია ვერ მოხერხდა. ბლოკავთ ქუქის?
+ title: უსაფრთხოების ვერიფიკაცია არ შედგა
+ '429': დარტყმა
+ '500':
+ content: ბოდიში, ჩვენ მხარეს რაღაც არია.
+ title: გვერდი არაა სწორი
+ noscript_html: მასტოდონ ვებ-აპლიკაციის გამოყენებისთვის, გთხოვთ ჩართოთ ჯავასკრიპტი. სხვა შემთხვევაში, მასტოდონის თქვენი პატფორმისთვის სცადეთ გამოიყენოთ ერთ-ერთი
მშობლიური აპლიკაცია.
+ exports:
+ archive_takeout:
+ date: თარიღი
+ download: ჩამოტვირთეთ თქვენი არქივი
+ hint_html: შეგიძლიათ მოითხოვოთ თქვენი აქივი
ტუტებისა და ატვირთული მედიისა. ექსპორტირებული მონაცემები იქნება ექთივითი-ფაბ ფორმატში, წაკითხვადი ნებისმიერი თავსებადი პროგრამით. არქივის მოთხოვნა შეგიძლიათ 7 დღეში ერთხელ.
+ in_progress: მიმდინარეობს თქვენი არქივის შედგენა...
+ request: თქვენი არქივის მოთხოვნა
+ size: ზომა
+ blocks: თქვენ ბლოკავთ
+ csv: ცსვ
+ follows: თქვენ მიჰყვებით
+ mutes: თქვენ აჩუმებთ
+ storage: მედია საცავი
+ filters:
+ contexts:
+ home: სახლის თაიმლაინი
+ notifications: შეტყობინებები
+ public: საჯარო თაიმლაინი
+ thread: საუბრები
+ edit:
+ title: ფილტრის ცვლილება
+ errors:
+ invalid_context: მოწოდებულია არასწორი ან ცარიელი კონტექსტი
+ invalid_irreversible: დაუბრუნებელი ფილტრაცია მუშაობს მხოლოდ სახლის ან ნოტიფიკაციის კონტექსტში
+ index:
+ delete: გაუქმება
+ title: ფილტრები
+ new:
+ title: ახალი ფილტრის დამატება
+ followers:
+ domain: დომენი
+ explanation_html: თუ გსურთ უზრუნველყოთ თქვენი სტატუსების კონფიდენციალურობა, უნდა იცოდეთ თუ ვინ მოგყვებათ.
კერძო სტატუსები მიეწოდება ყველა ინსტანციას, სადაც გყავთ მიმდევრები. შესაძლოა გსურდეთ განიხილოთ ისინი და ამოშალოთ მიმდევრები თუ არ ენდობით თქვენი კონფიდენციალურობის პატივისცემას სტაფისა თუ პროგრამისგან იმ ინსტანციებში.
+ followers_count: მიმდევრების რაოდენობა
+ lock_link: თქვენი ანგარიშის ჩაკეტვა
+ purge: მიმდევრებიდან ამოშლა
+ success:
+ one: მიმდევრების სოფტ-ბლოკირების პროცესი ერთი დომენზე...
+ other: მიმდევრების სოფტ-ბლოკირების პროცესი %{count} დომენზე...
+ true_privacy_html: გთხოვთ გაითვალისწინეთ,
ჭეშმარიტი კონფიდენციალურობა მიღწევადია მხოლოდ ენდ-თუ-ენდ შიფრაციით.
+ unlocked_warning_html: ყველას შეუძლია გამოგყვეთ, რომ უცბად იხილოს თქვენი სტატუსები. %{lock_link} რომ შეძლოთ განიხილოთ და უარყოთ მიმდევრები.
+ unlocked_warning_title: თქვენი ანგარიში არაა ჩაკეტილი
+ footer:
+ developers: დეველოპერები
+ more: მეტი…
+ resources: რესურსები
+ generic:
+ changes_saved_msg: ცვლილებები წარმატებით დამახსოვრდა!
+ save_changes: ცვლილებების შენახვა
+ validation_errors:
+ one: რაღაც ჯერ არაა მთლად კარგად! გთხოვთ განიხილოთ ქვემოთ მოცემული შეცდომები
+ other: რაღაც ჯერ არაა მთლად კარგად! გთხოვთ განიხილოთ ქვემოთ მოცემული %{count} შეცდომა
+ imports:
+ preface: შეგიძლიათ დააიმპორტოთ მონაცემები, რომლებიც დააექსპორტეთ სხვა სერვერიდან, მაგალითად ადამიანების სია, რომლებსაც მიჰყვებით ან ბლოკავთ.
+ success: თქვენი მონაცემები წარმატებით აიტვირთა და მათი პროცესირება მოხდება გარკვეულ დროში
+ types:
+ blocking: ბლოკირების სია
+ following: დადევნების სია
+ muting: გაჩუმების სია
+ upload: ატვირთვა
+ in_memoriam_html: მემორანდუმში.
+ invites:
+ delete: დეაქტივაცია
+ expired: ვადა გაუვიდა
+ expires_in:
+ '1800': 30 წუთში
+ '21600': 6 საათში
+ '3600': 1 საათში
+ '43200': 12 საათში
+ '604800': 1 კვირაში
+ '86400': 1 დღეში
+ expires_in_prompt: არასდროს
+ generate: გენერირება
+ invited_by: 'თქვენ მოგიწვიათ:'
+ max_uses:
+ one: 1 მოხმარება
+ other: "%{count} მოხმარება"
+ max_uses_prompt: ლიმიტის გარეშე
+ prompt: ამ ინსტანციაზე წვდომის მისაცემად, დააგენერირეთ და გააზიარეთ ბმულები სხვებთან
+ table:
+ expires_at: ვადა გასდის
+ uses: მოხმარება
+ title: მოიწვიეთ ხალხი
+ lists:
+ errors:
+ limit: მიაღწიეთ სიების მაქსიმალურ ოდენობას
+ media_attachments:
+ validations:
+ images_and_video: ვიდეოს დართვა სტატუსზე, რომელიც უკვე მოიცავს სურათებს, ვერ მოხერხდება
+ too_many: თან ვერ დაურთავთ 4 ფაილზე მეტს
+ migrations:
+ acct: username@domain ახალი ანგარიშის
+ currently_redirecting: 'თქვენი პროფილი გამართულია მოახდინოს გადამისამართება მისამართზე:'
+ proceed: შენახვა
+ updated_msg: თქვენი ანგარიშის მიგრაციის პარამეტრები წარმატეებით დამახსოვრდა!
+ moderation:
+ title: მოდერაცია
+ notification_mailer:
+ digest:
+ action: ყველა შეტყობინების ჩვენება
+ body: 'აქ მოკლე შინაარსია წერილების, რომლებიც გამოგეპარათ წინა სტუმრობის შემდეგ: %{since}'
+ mention: "%{name}-მა დაგასახელათ:"
+ new_followers_summary:
+ one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი!
+ other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია!
+ subject:
+ one: "1 ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
+ other: "%{count} ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
+ title: თქვენს არყოფნაში...
+ favourite:
+ body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:'
+ subject: "%{name}-მა თქვენი სტატუსი გახადა ფავორიტი"
+ title: ახალი ფავორიტი
+ follow:
+ body: "%{name} ახლა მოგყვებათ!"
+ subject: "%{name} ახლა მოგყვებათ"
+ title: ახალი მიმდევარი
+ follow_request:
+ action: დადევნების მოთხოვნების მენეჯმენტი
+ body: "%{name}-მა მოითხოვა გამოგყვეთ"
+ subject: 'მიმდევარი მოლოდინში: %{name}'
+ title: ახალი დადევნების მოთხოვნა
+ mention:
+ action: პასუხი
+ body: 'თქვენ %{name}-მა გასახელათ:'
+ subject: თქვენ გასახელათ %{name}-მა
+ title: ახალი სახელობა
+ reblog:
+ body: 'თქვენი სტატუსი გაზარდა %{name}-მა:'
+ subject: "%{name}-მა გაზარდა თქვენი სტატუსი"
+ title: ახალი ბუსტი
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ units:
+ billion: ბილ.
+ million: მილ.
+ quadrillion: კუად.
+ thousand: ათას.
+ trillion: ტრილ.
+ unit: ''
+ pagination:
+ newer: უფრო ახალი
+ next: შემდეგი
+ older: ძველი
+ prev: წინა
+ truncate: "…"
+ preferences:
+ languages: ენები
+ other: სხვა
+ publishing: გამოქვეყნება
+ web: ვები
+ remote_follow:
+ acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ
+ missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა
+ no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ
დარეგისტრირდეთ აქ
+ proceed: გააგრძელეთ გასაყოლად
+ prompt: 'თქვენ გაჰყვებით:'
+ remote_interaction:
+ proceed: გააგრძელეთ ურთიერთქმედება
+ prompt: 'თქვენ გსურთ ურთიერთქმედება ამ ტუტთან:'
+ remote_unfollow:
+ error: შეცდომა
+ title: სათაური
+ unfollowed: დადევნების შეწყვეტა
+ sessions:
+ activity: ბოლო აქტივობა
+ browser: ბრაუზერი
+ browsers:
+ alipay: ალიფეი
+ blackberry: ბლექბერი
+ chrome: ქრომი
+ edge: მაიკროსოფთ ედჯი
+ electron: ელექტრონი
+ firefox: ფაირფოქსი
+ generic: ამოუცნობი ბრაუზერი
+ ie: ინტერნეტ ექფლორერი
+ micro_messenger: მიკრო-მესინჯერი
+ nokia: ნოკია ს40 ოვი ბრაუზერი
+ opera: ოპერა
+ otter: ოტერი
+ phantom_js: ფანტომჯეიესი
+ qq: ქქ ბრაუზერი
+ safari: საფარი
+ uc_browser: იუსიბიბრაუზერი
+ weibo: ვეიბო
+ current_session: მიმდინარე სესია
+ description: "%{browser} %{platform}-ზე"
+ explanation: ეს ვებ-ბრაუზერებია, რომლებიც ამჟამად აუტენტიფიცირებულ არიან თქვენს მასტოდონ ანგარიშთან.
+ ip: აი-პი
+ platforms:
+ adobe_air: ედობ ეარი
+ android: ანდროიდი
+ blackberry: ბლექბერი
+ chrome_os: ქრომო-ოსი
+ firefox_os: ფაირფოქს-ოსი
+ ios: აი-ოსი
+ linux: ლინუქსი
+ mac: მაკი
+ other: ამოუცნობი პლატფორმა
+ windows: ვინდოუსი
+ windows_mobile: ვინდოუს მობაილი
+ windows_phone: ვინდოუს ფოუნი
+ revoke: გაუქმება
+ revoke_success: სესია წარმატებით გაუქმდა
+ title: სესიები
+ settings:
+ authorized_apps: ავტორიზირებული აპლიკაციები
+ back: უკან მასტოდონისკენ
+ delete: ანგარიშის გაუქმება
+ development: დეველოპმენტი
+ edit_profile: პროფილის ცვლილება
+ export: მონაცემის ექსპორტი
+ followers: ავტორიზირებული მიმდევრები
+ import: იმპორტი
+ migrate: ანგარიშის მიგრაცია
+ notifications: შეტყობინებები
+ preferences: პრეფერენციები
+ settings: პარამეტრები
+ two_factor_authentication: მეორე-ფაქტორის აუტენტიფიკაცია
+ your_apps: თქვენი აპლიკაციები
+ statuses:
+ attached:
+ description: 'თან დართული: %{attached}'
+ image:
+ one: "%{count} სურათი"
+ other: "%{count} სურათები"
+ video:
+ one: "%{count} ვიდეო"
+ other: "%{count} ვიდეოები"
+ boosted_from_html: გაიზარდა %{acct_link}-იდან
+ content_warning: 'გაფრთხილება კონტენტზე: %{warning}'
+ disallowed_hashtags:
+ one: 'მოიცავდა აკრძალულ ჰეშტეგს: %{tags}'
+ other: 'მოიცავს აკრძალულ ჰეშტეგს: %{tags}'
+ language_detection: ავტომატურად დადგინდეს ენა
+ open_in_web: ვებში გახნსა
+ over_character_limit: ნიშნების ლიმიტი გადასცდა %{max}-ს
+ pin_errors:
+ limit: ტუტების მაქსიმალური რაოდენობა უკვე აპინეთ
+ ownership: სხვისი ტუტი ვერ აიპინება
+ private: არა-საჯარო ტუტი ვერ აიპინება
+ reblog: ბუსტი ვერ აიპინება
+ show_more: მეტის ჩვენება
+ sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია
+ title: '%{name}: "%{quote}"'
+ visibilities:
+ private: მხოლოდ-მიმდევრები
+ private_long: აჩვენე მხოლოდ მიმდევრებს
+ public: საჯარო
+ public_long: ხედავს ყველა
+ unlisted: ჩამოუთვლელი
+ unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში
+ stream_entries:
+ pinned: აპინული ტუტი
+ reblogged: გაზრდილი
+ sensitive_content: მგრძნობიარე კონტენტი
+ terms:
+ body_html: |
+
კონფიდენციალურობის პოლიტიკა
+
რა ინფორმაციას ვაგროვებთ?
+
+
+ - ძირითადი ანგარიშის ინფორმაცია: თუ დარეგისტრირდებით ამ სერვერზე, შესაძლოა მოგთხოვოთ მომხმარებლის სახელი, ელ-ფოსტის მისამართი და პაროლი. შესაძლებელია, ასევე შეიყვანოთ დამატებითი პროფილის ინორმაცია, როგორიცაა დისპლეის სახელი და ბიოგრაფია, ასევე ატვირთოთ პროფილის და დასათაურების სურათი. მომხმარებლის სახელი, დისპლეის სახელი, ბიოგრაფია, პროფილის სურათი, დასათაურების სურათი ყოველთვის ღიადაა ჩამოთვლილი.
+ - პოსტები, დადევნებები და სხვა საჯარო ინფორმაცია: ადამიანების სია, რომლებსაც მიჰყვებით საჯაროდაა ჩამოთვლილი, იგივე ეხება თქვენს მიდევრებსაც. როდესაც აგზავნით წერილს, თარიღი, დრო და აპლიკაცია თუ საიდანაც განათავსეთ წერილი ინახება. წერილები შესაძლოა შეიცავდნენ მედია ფაილებს, როგორებიცაა სურათები და ვიდეოები. ღია და ჩამოუთვლელი პოსტები ხელმისაწვდომია საჯაროდ. როდესაც ათავსებთ პოსტს თქვენს პროფილზე, ის ასევე საჟაროდ წვდომადი ხდება. თქვენი პოსტები ეგზავნებათ თქვენს მიმდევრებს, ზოგიერთ შემთხვევაში ეს ნიშნავს, რომ ისინი იგზავნება სხვა სერვერებზე და მათი ასლები იქვე ინახება. როდესაც აუქმებთ პოსტს, ეს მოქმედება ეგზავნებათ თქვენს მიმდევრებს. რე-ბლოგირების ან ფავორიტად ქცევის ქმედებები ასევე საქვეყნოა.
+ - პირდაპირი და პოსტები მხოლოდ-მიმდევრებისთვის: ყველა პოსტი ინახება და მათი პროცესირება ხდება სერვერზე. პოსტები რომლებიც განეკუთვნება მხოლოდ მიმდევრებს მიეწოდებათ მათ, მომხმარებლები, რომლებიც დასახელებულია პოსტებში და პირდაპირი პოსტები ეგზავნებათ მხოლოდ ჩამოთვლილ მომხმარებლებს. ზოგიერთ შემთხვევაში, ეს ნიშნავს, რომ გადაგზავნა ხდება გარე სერვერებზე და ასლებიც იქ ინახება. ჩვენ დიდ ძალისხმევას ვუწევთ წვდომის ლიმიტს მხოლოდ აუტორიზირებული ადამიანებისთვის, თუმცა სხვა სერვერებმა შეიძლება ეს არ აწარმოონ. აქედან გამომდინარე, მნიშვნელოვანია განიხილოთ სერვერები, საიდანაც მოდიან თქვენი მიმდევრები. შეგიძლიათ ჩართოთ ან გამორთოთ პარამეტრი, დაადასტუროთ ან უარყოთ ახალი მიმდევარი. გთხოვთ გაითვალისწინოთ, რომ სერვერის ოპერაციები და სხვა მიმღები სერვერები შესაძლოა კითხულობდნენ ამგვარ წერილებს, მიმღებებს შეუძლიათ შექმნან სქრინშოთი, დააკოპირონ ან ხელახლა გააზიარონ ისინი. არ გააზიაროთ საშიში ინფორმაცია მასტოდონით.
+ - აი-პიები და სხვა მეტა-მონაცემები: როდესაც გაივლით აუტენტიფიკაციას, ჩვენ ვინახავთ აი-პი მისამართს საიდანაც შემოხვედით, ასევე ბრაუზერის აპლიკაციას. ყველა ავტორიზირებული სესია თქვენთვის განსახილველად და გასაუქმებლად ხელმისაწვდომია პარამეტრებში. ბოლო შენახული აი-პი მისამართი ინახება მაქსიმუმ 12 თვით. ჩვენ ასევე შეიძლება გაგვაჩნდეს სერვერის ლოგი, რომელიც ინახავს თითოეული მოთხოვნის IP მისამართს.
+
+
+
+
+
რაში ვიყენებთ ინფორმაციას?
+
+
ნებისმიერი სხვა ინფორმაცია, რომელსაც ვაგროვებთ თქვენგან შესაძლოა გამოყენებულ იქნას შემდეგი გზებით:
+
+
+ - რომ უზრუნველვყოთ მასტოდონის მთავარი ფუნქციონალი. შეგიძლიათ ინტერაქცია გაუწიოთ მხოლოდ სხვის კონტენტს და შექმნათ პოსტები მაშინ როდესაც ავტორიზებული ხართ. მაგალითად, შესაძლოა გაჰყვეთ სხვა ადამიანებს, რათა იხილოთ მათი ჯამური პოსტები საკუთარ პერსონალიზებულ სახლის თაიმლაინზე.
+ - რომ შევუწყვოთ ხელი საზოგადოების მოდერაციას, მაგალითად შევადაროთ თქვენი აი-პი მისამართი სხვა ცნობილ მისამართებს, რათა ამოვიცნოთ ბანის გადაუხდელობა ან სხვა დარღვევები.
+ - ელ-ფოსტის მისამართი რომელსაც გვაწვდით, შესაძლოა გამოვიყენოთ თქვენთვის ინფორმაციის გამოსაგძავნად, შეგატყობინოთ სხვა ადამიანების ინტერაქციაზე თქვენს კონტენტთან ან თქვენთვის გამოგზავნილ წერილებზე, ასევე რომ გიპასუხოთ მოთხოვნებზე და/ან სხვა საკითხებზე.
+
+
+
+
+
როგორ ვიცავთ თქვენს ინფორმაციას?
+
+
მიღებული გვაქვს სხვადასხვა ზომა, შევინარჩუნოთ თქვენი პირადი ინფორმაციის უსაფრთხოება, რომელსაც აგზავნით, შეგყავთ ან კითხულობთ. ამ ყველაფერთან ერთად თქვენი ბრაუზერის სესია, ტრეფიკი თქვენს აპლიკაციასა და აპის შორის დაცულია სსლ-ით, თქვენი პაროლი იშიფრება ძლიერი ალგორითმით. შეგიძლიათ ჩართოთ მეორე-ფაქტორის აუტენტიფიკაცია, რათა გააღმაოთ თქვენი ანგარიშის თავდაცვა.
+
+
+
+
რა არის ჩვენი მონაცემის უარყოფის პოლიტიკა?
+
+
ჩვენ არ დავიშურებთ ძალისხმევას რომ:
+
+
+ - შევინარჩუნოთ სერვერის ლოგები, რომლებიც მოიცავენ ყველა მოთხოვნის აი-პი მისამართს, თუმცა ესეთი ლოგები არ ინახება 90 დღეზე მეტ ხანს.
+ - შევინარჩუნოთ რეგისტრირებული მომხმარებლების აი-პი მისამართები მაქსიმუმ 12 თვით.
+
+
+
შეგიძლიათ მოითხოვოთ და ჩამოტვირთოთ თქვენი კონტენტის არქივი, რომელიც მოიცავს თქვენს პოსტებს, მედია ფაილებს, პროფილის და დასათაურების სურათს.
+
+
შეგიძლიათ დაუბრუნებლად გააუქმოთ თქვენი ანგარიში ნებისმიერ დროს.
+
+
+
+
ვიყენებთ თუ არა ქუქის?
+
+
დიახ. ქუქიები წარმოადგენენ პატარა ფაილებს, რომელთაც, საიტი ან სერვის-პროვაიდერი, ათავსებს თქვენი კომპიუტერის მყარ დისკზე, ვებ-ბრაუზერის (თუ ნებას რთავთ) მეშვეობით. ქუქიები საშუალებას აძლევს საიტს ამოიცნონ თქვენი ბრაუზზერი და თუ გაქვთ რეგისტრირებული ანგარიში მისი ასოციაცია მოახდინონ თქვენს ანგარიშთან.
+
+
ჩვენ ვიყენებთ ქუქის, ვიცოდეთ და შევინახოთ თქვენი პრეფერენსიები სამომავლო სტუმრობებისთვის.
+
+
+
+
ვამჟღავნებთ თუ არა ინფორმაციას გარე მხარეებისთვის?
+
+
ჩვენ არ ვყიდით, ვვაჭრობთ ან გადაქვაქ თქვენთვის პირადად იდენტიფიცირებადი ინფორმაცია სხვა მხარეებისთვის. ეს არ მოიცავს სანდო მხარეებს, რომლებიც გვეხმარება საიტის ოპერირებაში, ჩვენი საქმიანობის ჩატარებაში, ან თქვენთვის მომსახურების გაწევაში, წინაპირობით კონფიდენციალურად შეინახონ თქვენი ინფორმაცია. ჩვენ შესაძლოა გამოვაქვეყნოთ თქვენი ინფორმაცია, რომელიც შესაბამისად შეიძლება ჩავთვალოთ კანონმდებლობასთან შეთავსებისთვის, აღვასრულოთ პოლიტიკა ან დავიცვათ ჩვენი ან სხვისი უფლებები, კუთვნილება ან უსაფრთხოება.
+
+
თქვენი საჯარო ინფორმაცია შესაძლოა ჩამოტვირთულ იქნას სხვა სერვერების მიერ ქსელში. თქვენი ღია და მიმდევრებზე გათვლილი პოსტები მიეწოდება სერვერებს სადაც თქვენი მიმდევრები მოღვაწეობენ, იმ შემთხვევაში თუ მიმღებები მომდინარეობენ სხვა სერვერიდან, პირდაპირი წერილები მიეწოდებათ მიმღებების სერვერებს.
+
+
როდესაც უფლებას მისცემთ აპლიკაციას გამოიყენოს თქვენი ანგარიში, უფლებებისგან გამომდინარე, მან შესაძლოა მოიპოვოს თქვენი საჯარო ინფორმაცია, თქვენი დადევნების სიები, თქვენი მიმდევრები, თქვენი სიები, ყველა პოსტი და თქვენი ფავორიტები. აპლიკაციები ვერასდროს იქონიებენ წვდომას თქვენი ელ-ფოსტის მისამართზე ან პაროლზე.
+
+
+
+
საიტის მოხმარებს ბავშვების მიერ
+
+
თუ ეს სერვერი მდებარეობს ეუ-ში ან ეეა-ში: ჩვენი საიტი, პროდუქტები და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 16 წელი. თუ თქვენი ასაკი 16 წელიწადზე ნაკლებია, ჯიდიფიარის (ზოგადი მონაცემების დაცვის რეგულაცია/a>) მოთხოვნის მიხედვით არ გამოიყენოთ ეს საიტი.
+
+
თუ ეს სერვერი მდებარეობს ა.შ.შ.-ში: ჩვენი საიტი პროდუქტი და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 13 წელი. თუ თქვენი ასაკი 13 წელიწადზე ნაკლებია, კოპპას (ბავშვთა ონლაინ კონფიდენციალურობის დაცვის აქტი) მოთხოვნების მიხედვით არ გამოიყენოთ ეს საიტი.
+
+
იურიდიული მოთხოვნილებები შეიძლება განსხვავდებოდეს, თუ ეს სერვერი იმყოფება სხვა იურისდიქციის ქვეშ.
+
+
+
+
ცვლილებები კონფიდენციალურობის პოლიტიკაში
+
+
თუ გადავწყვეტთ შევცვალოთ კონფიდენციალურობის პოლიტიკა, გამოვაქვეყნებთ ამ გვერდზე.
+
+
ეს დოკუმენტი არის ცც-ბაი-სა. ეს ბოლოს განახლდა 2018 წლის, 17 აგვისტოს.
+
+
საწყისად ადაპტირებულია გამჟღავნების კონფიდენციალური პოლიტიკისგან.
+ title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა"
+ themes:
+ contrast: მაღალი კონტრასტი
+ default: მასტოდონი
+ mastodon-light: მასტოდონი (ღია)
+ time:
+ formats:
+ default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
+ two_factor_authentication:
+ code_hint: დასამოწმებლად შეიყვანეთ თქვენი აუტენტიფიკატორ აპლიკაციისგან გენერირებული კოდი
+ description_html: თუ ჩართავთ
მეორე-ფაქტორის აუტენტიფიკაციას, შესვლისას აუცილებელი იქნება ფლობდეთ ტელეფონს, რომელიც დააგენერირებს შესვლის ტოკენებს.
+ disable: გათიშვა
+ enable: ჩართვა
+ enabled: მეორე-ფაქტორის აუტენტიფიკაცია ჩართულია
+ enabled_success: მეორე-ფაქტორის აუტენტიფიკაცია წარმატებით ჩაირთო
+ generate_recovery_codes: აღდგენის კოდების გენერაცია
+ instructions_html: "
დაასკანირეთ ეს ქრ კოდი გუგლ აუტენტიფიკატორში ან მსგავს ტოტპ აპლიკაციაში თქვენს ტელეფონზე. ამიერიდან, ეს აპლიკაცია დააგენერირებს ტოკენებს მაშინ როდესაც დაგჭირდებათ ავტორიზაცია."
+ lost_recovery_codes: აღდგენის კოდები უფლებას გაძლევთ მიიღოთ ხელმეორე წვდომა თქვენი ანგარიშისადმი თუ დაკარგავთ ტელეფონს. თუ დაკარგეთ აღდგენის კოდები, მათ რეგენერაცია შეგიძლიათ აქ. ძველი აღდგენის კოდები აღარ იქნება ვალიდური.
+ manual_instructions: 'თუ ვერ ასკანირებთ ქრ კოდს და საჭიროებთ მის მექანიკურ რეჟიმში შეყვანას, აქ არის ჩვეულებრივი ტექსტური საიდუმლო:'
+ recovery_codes: გაუწიეთ აღდგენის კოდებს რეზერვაცია
+ recovery_codes_regenerated: აღგენის კოდების რეგენერაცია წარმატებით შესრულდა
+ recovery_instructions_html: თუ როდესმე დაკარგავთ წვდომას თქვენს ტელეფონთან, შეგიძლიათ ქვემოთ მოცემული აღდგენის კოდები გამოიყენოთ, რათა მოიპოვოთ ხელმეორე წვდომა თქვენი ანგარიშისადმი.
იქონიეთ აღდგენის კოდები დაცულად. მაგალითისთვის, შეგიძლიათ ამობეჭდოთ და შეინახოთ სხვა საბუთებთან ერთად.
+ setup: დაყენება
+ wrong_code: შეყვანილი კოდი არ იყო სწორი! სწორია სერვერის და მოწყობილობის დრო?
+ user_mailer:
+ backup_ready:
+ explanation: თქვენ მოითხოვეთ თქვენი მასტოდონის ანგარიშის სრული რეზერვაცია. ის ახლა უკვე მზადაა გადმოსაწერად!
+ subject: თქვენი არქივი გადმოსაწერად მზადაა
+ title: არქივის მიღება
+ welcome:
+ edit_profile_action: პროფილის მოწყობა
+ edit_profile_step: შეგიძლიათ მოაწყოთ თქვენი პროფილი ავატარის ატვირთვით, დასათაურების სურათით, თქვენი დისპლეი სახელის შეცვლით და სხვა. თუ გსურთ გაუწიოთ ახალ მიმდევრებს რევიუ, სანამ რეალურად გამოგყვებიან, შეგიძლიათ ჩაკეტოთ თქვენი ანგარიში.
+ explanation: აქ რამდენიმე რჩევაა დასაწყისისთვის
+ final_action: დაიწყე პოსტვა
+ final_step: 'დაიწყე პოსტვა! თქვენი ღია წერილები შესაძლოა ნახონ სხვებმა მიმდევრების გარეშეც კი, მაგალითად თქვენს ლოკალურ თაიმლაინზე ან ჰეშტეგებში. შეგიძლიათ წარადგინოთ თქვენი თავი #introductions ჰეშტეგით.'
+ full_handle: თქვენი სრული სახელური
+ full_handle_hint: ეს არის ის რასაც ეტყვით თქვენს მეგობრებს, რათა მოგწერონ ან გამოგყვნენ სხვა ინსტანციიდან.
+ review_preferences_action: შეცვალეთ პრეფერენსიები
+ review_preferences_step: დარწმუნდით რომ აყენებთ თქვენს პრეფერენსიებს, მაგალითად რა ელ-ფოსტის წერილების მიღება გსურთ, ან კონფიდენციალურობის რა დონე გსურთ ჰქონდეთ თქვენს პოსტებს საწყისად. თუ არ გაღიზიანებთ მოძრაობა, შეგიძლიათ ჩართოთ გიფის ავტო-დაკვრა.
+ subject: კეთილი იყოს თქვენი მობრძანება მასტოდონში
+ tip_bridge_html: თუ მოდიხართ ტვიტერიდან, შეგიძლიათ იპოვოთ მეგობრები მასტოდონში
ხიდის აპლიკაციით. თუმცა, ეს მუშაობს მხოლოდ მაშინ თუ მათაც მოიხმარეს ხიდის აპლიკაცია!
+ tip_federated_timeline: ფედერალური თაიმლაინი მასტოდონის ქსელის ცეცხლოვანი ხედია. ის მოიცავს მხოლოდ იმ ადამიანებს, რომელთაგანაც გამოიწერეს თქვენმა მეზობლებმა, ასე რომ ეს არაა სრული.
+ tip_following: თქვენ საწყისად მიჰყვებით თქვენი სერვერის ადმინისტრატორ(ებ)ს. უფრო საინტერესო ადამიანების მოსაძებნად იხილეთ ლოკალური და ფედერალური თაიმლაინები.
+ tip_local_timeline: ლოკალური თაიმლაინი ცეცხლოვანი ხედია ადამიანებისთვის %{instance}-ზე. ისინი არიან თქვენი უსიტყვო მეზობლები!
+ tip_mobile_webapp: თუ თქვენი მობილური ბრაუზერი გთავაზობთ მასტოდონის სახლის-ეკრანზე დამატებას, შეძლებთ ფუშ შეტყობინებების მიღებას. ეს მრავალმხრივ მოქმედებს როგორც მშობლიური აპლიკაცია!
+ tips: რჩევები
+ title: კეთილი იყოს თქვენი მობრძანება, %{name}!
+ users:
+ invalid_email: ელ-ფოსტის მისამართი არაა მართებული
+ invalid_otp_token: არასწორი მეორე ფაქტორის კოდი
+ otp_lost_help_html: თუ დაკარგეთ წვდომა ორივეზე, შესაძლოა დაუკავშირდეთ %{email}-ს
+ seamless_external_login: შესული ხართ გარე სერვისით, აქედან გამომდინარე პაროლი და ელ-ფოსტის მისამართი არაა ხელმისაწვდომი.
+ signed_in_as: 'შესული ხართ როგორც:'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 9b742d18b..1ae825443 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -9,9 +9,6 @@ ko:
contact: 연락처
contact_missing: 미설정
contact_unavailable: N/A
- description_headline: "%{domain} (은)는 무엇인가요?"
- domain_count_after: 개의 인스턴스
- domain_count_before: 연결된
extended_description_html: |
룰을 작성하는 장소
아직 설명이 작성되지 않았습니다.
@@ -46,7 +43,6 @@ ko:
people_who_follow: "%{name} 님을 팔로우 중인 계정"
posts: 툿
posts_with_replies: 툿과 답장
- remote_follow: 리모트 팔로우
reserved_username: 이 아이디는 예약되어 있습니다
roles:
admin: 관리자
@@ -206,6 +202,27 @@ ko:
update_failed_msg: 에모지를 업데이트 할 수 없습니다
updated_msg: 에모지가 성공적으로 업데이트 되었습니다!
upload: 업로드
+ dashboard:
+ backlog: 미처리 된 작업
+ config: 설정
+ feature_deletions: 계정 삭제
+ feature_invites: 초대 링크
+ feature_registrations: 가입
+ feature_relay: 연합 릴레이
+ features: 기능
+ hidden_service: 히든 서비스와의 연합
+ open_reports: 미해결 신고
+ recent_users: 최근 가입 한 유저
+ search: 전문 검색
+ single_user_mode: 싱글 유저 모드
+ software: 소프트웨어
+ space: 디스크 사용량
+ title: 대시보드
+ total_users: 총 유저 수
+ trends: 트렌드
+ week_interactions: 이번 주의 상호작용
+ week_users_active: 이번 주의 활성 사용자
+ week_users_new: 이번 주의 신규 유저
domain_blocks:
add_new: 추가하기
created_msg: 도메인 차단 처리를 완료했습니다
@@ -263,6 +280,14 @@ ko:
expired: 만료됨
title: 필터
title: 초대
+ relays:
+ add_new: 릴레이 추가
+ description_html: "
연합 릴레이는 서버들 사이에서 많은 양의 공개 툿을 구독하고 중개하는 서버입니다.
이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다."
+ enable_hint: 활성화 되면, 이 릴레이의 모든 공개 툿을 구독하고 이 서버의 공개 툿을 전송하게 됩니다.
+ inbox_url: 릴레이 URL
+ setup: 릴레이 연결 설정
+ status: 상태
+ title: 릴레이
report_notes:
created_msg: 리포트 노트가 성공적으로 작성되었습니다!
destroyed_msg: 리포트 노트가 성공적으로 삭제되었습니다!
@@ -341,7 +366,7 @@ ko:
desc_html: 유저 페이지에 스태프 배지를 표시합니다
title: 스태프 배지 표시
site_description:
- desc_html: 탑 페이지와 meta 태그에 사용됩니다. HTML 태그, 주로
<a>
,
<em>
같은 것을 사용 가능합니다.
+ desc_html: 프론트 페이지의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로
<a>
,
<em>
같은 것을 사용 가능합니다.
title: 사이트 설명
site_description_extended:
desc_html: 규칙, 가이드라인 등을 작성하기 좋은 곳입니다. HTML 태그를 사용할 수 있습니다
@@ -509,7 +534,6 @@ ko:
unlocked_warning_title: 이 계정은 비공개로 설정되어 있지 않습니다
generic:
changes_saved_msg: 정상적으로 변경되었습니다!
- powered_by: "%{link}에 의해 제공"
save_changes: 변경 사항을 저장
validation_errors:
one: 오류가 발생했습니다. 아래 오류를 확인해 주십시오
@@ -545,8 +569,6 @@ ko:
expires_at: 만료
uses: 사용됨
title: 초대
- landing_strip_html: "
%{name} 님은 %{link_to_root_path} 인스턴스의 사용자입니다. 계정을 가지고 있다면 팔로우 하거나 대화할 수 있습니다."
- landing_strip_signup_html: 아직 계정이 없다면
여기서 등록할 수 있습니다.
lists:
errors:
limit: 리스트 최대치에 도달했습니다
@@ -618,7 +640,7 @@ ko:
publishing: 퍼블리싱
web: 웹
remote_follow:
- acct: 아이디@도메인을 입력해 주십시오
+ acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오
missing_resource: 리디렉션 대상을 찾을 수 없습니다
no_account_html: 계정이 없나요?
여기에서 가입 할 수 있습니다
proceed: 팔로우 하기
@@ -715,7 +737,6 @@ ko:
unlisted: 공개 타임라인 비공개
unlisted_long: 누구나 볼 수 있지만, 공개 타임라인에는 표시되지 않습니다
stream_entries:
- click_to_show: 클릭해서 표시
pinned: 고정된 툿
reblogged: 님이 부스트 했습니다
sensitive_content: 민감한 컨텐츠
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 757afd97e..94537243f 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -5,13 +5,13 @@ nl:
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
administered_by: 'Beheerd door:'
+ api: API
+ apps: Mobiele apps
closed_registrations: Registreren op deze server is momenteel niet mogelijk. Je kunt echter een andere server vinden om zo toegang te krijgen tot het netwerk.
contact: Contact
contact_missing: Niet ingesteld
contact_unavailable: n.v.t
- description_headline: Wat is %{domain}?
- domain_count_after: andere servers
- domain_count_before: Verbonden met
+ documentation: Documentatie
extended_description_html: |
Een goede plek voor richtlijnen
De uitgebreide omschrijving is nog niet ingevuld.
@@ -28,25 +28,30 @@ nl:
hosted_on: Mastodon op %{domain}
learn_more: Meer leren
other_instances: Andere servers
+ privacy_policy: Privacybeleid
source_code: Broncode
status_count_after: toots
status_count_before: Zij schreven
+ terms: Gebruiksvoorwaarden
user_count_after: gebruikers
user_count_before: Thuisbasis van
what_is_mastodon: Wat is Mastodon?
accounts:
+ choices_html: 'Aanbevelingen van %{name}:'
follow: Volgen
followers: Volgers
following: Volgend
+ joined: Geregistreerd in %{date}
media: Media
moved_html: "%{name} is verhuisd naar %{new_profile_link}:"
network_hidden: Deze informatie is niet beschikbaar
nothing_here: Hier is niets!
people_followed_by: Mensen die %{name} volgen
people_who_follow: Mensen die %{name} volgen
+ pin_errors:
+ following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen
posts: Toots
posts_with_replies: Toots en reacties
- remote_follow: Extern volgen
reserved_username: Deze gebruikersnaam is gereserveerd
roles:
admin: Beheerder
@@ -180,6 +185,7 @@ nl:
unsuspend_account: Opschorten van account %{target} is door %{name} opgeheven
update_custom_emoji: Emoji %{target} is door %{name} bijgewerkt
update_status: De toots van %{target} zijn door %{name} bijgewerkt
+ deleted_status: "(verwijderde toot}"
title: Auditlog
custom_emojis:
by_domain: Domein
@@ -206,6 +212,27 @@ nl:
update_failed_msg: Deze emoji kon niet worden bijgewerkt
updated_msg: Bijwerken van emoji is geslaagd!
upload: Uploaden
+ dashboard:
+ backlog: achterstallige taken
+ config: Configuratie
+ feature_deletions: Verwijderen van account
+ feature_invites: Uitnodigingen
+ feature_registrations: Registraties
+ feature_relay: Federatierelay
+ features: Functies
+ hidden_service: Federatie met verborgen diensten
+ open_reports: onopgeloste gerapporteerde toots
+ recent_users: Recente gebruikers
+ search: In volledige tekst zoeken
+ single_user_mode: Modus voor één gebruiker
+ software: Software
+ space: Ruimtegebruik
+ title: Dashboard
+ total_users: gebruikers in totaal
+ trends: Trends
+ week_interactions: interacties deze week
+ week_users_active: actieve gebruikers deze week
+ week_users_new: nieuwe gebruikers deze week
domain_blocks:
add_new: Nieuwe toevoegen
created_msg: Domeinblokkade wordt nu verwerkt
@@ -255,12 +282,21 @@ nl:
search: Zoeken
title: Bekende servers
invites:
+ deactivate_all: Alles deactiveren
filter:
all: Alles
available: Beschikbaar
expired: Verlopen
title: Filter
title: Uitnodigingen
+ relays:
+ add_new: Nieuwe relayserver toevoegen
+ description_html: Een
federatierelay is een tussenliggende server die grote hoeveelheden openbare toots uitwisselt tussen servers die zich hierop hebben geabonneerd.
Het kan kleine en middelgrote servers helpen om content uit de fediverse te ontdekken, waarvoor anders lokale gebruikers handmatig mensen van externe servers moeten volgen.
+ enable_hint: Eenmaal ingeschakeld gaat jouw server zich op alle openbare toots van deze relayserver abonneren en stuurt het de openbare toots van jouw server naar de relayserver.
+ inbox_url: Relay-URL
+ setup: Een verbinding met een relayserver maken
+ status: Status
+ title: Relayservers
report_notes:
created_msg: Opmerking bij gerapporteerde toot succesvol aangemaakt!
destroyed_msg: Opmerking bij gerapporteerde toot succesvol verwijderd!
@@ -339,11 +375,14 @@ nl:
desc_html: Medewerkersbadge op profielpagina tonen
title: Medewerkersbadge tonen
site_description:
- desc_html: Dit wordt als een alinea op de voorpagina getoond en gebruikt als meta-tag in de paginabron.
Je kan HTML gebruiken, zoals
<a>
en
<em>
.
+ 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
site_description_extended:
desc_html: Wordt op de uitgebreide informatiepagina weergegeven
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
site_terms:
desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken
title: Aangepaste gebruiksvoorwaarden
@@ -365,6 +404,7 @@ nl:
media:
title: Media
no_media: Geen media
+ no_status_selected: Er werden geen toots gewijzigd, omdat er geen enkele werd geselecteerd
title: Toots van account
with_media: Met media
subscriptions:
@@ -492,7 +532,7 @@ nl:
delete: Verwijderen
title: Filters
new:
- title: Nieuwe filter toevoegen
+ title: Nieuw filter toevoegen
followers:
domain: Domein
explanation_html: Wanneer je de privacy van jouw toots wilt garanderen, moet je goed weten wie jouw volgers zijn.
Toots die alleen aan jouw volgers zijn gericht, worden aan de Mastodonservers van jouw volgers afgeleverd. Daarom wil je ze misschien controleren en desnoods volgers verwijderen die zich op een Mastodonserver bevinden die jij niet vertrouwd. Bijvoorbeeld omdat de beheerder(s) of de software van zo'n server jouw privacy niet respecteert.
@@ -505,9 +545,12 @@ nl:
true_privacy_html: Hou er wel rekening mee dat
echte privacy alleen gegarandeerd kan worden met behulp van end-to-end-encryptie.
unlocked_warning_html: Iedereen kan jou volgen en daarmee meteen toots zien die je alleen aan jouw volgers hebt gericht. %{lock_link} om volgers te kunnen beoordelen en desnoods te weigeren.
unlocked_warning_title: Jouw account is niet besloten
+ footer:
+ developers: Ontwikkelaars
+ more: Meer…
+ resources: Hulpmiddelen
generic:
changes_saved_msg: Wijzigingen succesvol opgeslagen!
- powered_by: wordt mogelijk gemaakt door %{link}
save_changes: Wijzigingen opslaan
validation_errors:
one: Er is iets niet helemaal goed! Bekijk onderstaande fout
@@ -543,8 +586,6 @@ nl:
expires_at: Verloopt op
uses: Aantal keer te gebruiken
title: Mensen uitnodigen
- landing_strip_html: "
%{name} is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je op Mastodon (of ergens anders in de fediverse) een account hebt."
- landing_strip_signup_html: Als je dat niet hebt, kun je je
hier registreren.
lists:
errors:
limit: Je hebt het maximaal aantal lijsten bereikt
@@ -616,11 +657,14 @@ nl:
publishing: Publiceren
web: Webapp
remote_follow:
- acct: Geef jouw account@domein.tld op waarvandaan je wilt volgen
+ acct: Geef jouw account@domein op die je wilt gebruiken
missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden
no_account_html: Heb je geen account? Je kunt er
hier een registreren
proceed: Ga door om te volgen
prompt: 'Jij gaat volgen:'
+ remote_interaction:
+ proceed: Ga de interactie aan
+ prompt: 'Jij wilt de interactie aangaan met deze toot:'
remote_unfollow:
error: Fout
title: Titel
@@ -704,6 +748,7 @@ nl:
private: Alleen openbare toots kunnen worden vastgezet
reblog: Een boost kan niet worden vastgezet
show_more: Meer tonen
+ sign_in_to_participate: Meld je aan om aan dit gesprek mee te doen
title: '%{name}: "%{quote}"'
visibilities:
private: Alleen volgers
@@ -713,7 +758,6 @@ nl:
unlisted: Minder openbaar
unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen
stream_entries:
- click_to_show: Klik om te tonen
pinned: Vastgemaakte toot
reblogged: boostte
sensitive_content: Gevoelige inhoud
@@ -807,6 +851,7 @@ nl:
time:
formats:
default: "%d %B %Y om %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Voer de code in die door de authenticatie-app gegenereerd is
description_html: Na het instellen van
tweestapsverificatie, kun jij je alleen aanmelden als je jouw mobiele telefoon bij je hebt. Hiermee genereer je namelijk de in te voeren aanmeldcode.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index eb1d27a19..bcf3966d4 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -8,9 +8,6 @@
contact: Kontakt
contact_missing: Ikke innstilt
contact_unavailable: Ikke tilgjengelig
- description_headline: Hva er %{domain}?
- domain_count_after: andre instanser
- domain_count_before: Koblet til
extended_description_html: |
En god plassering for regler
En utvidet beskrivelse er ikke satt opp ennå.
@@ -44,7 +41,6 @@
people_who_follow: Folk som følger %{name}
posts: Poster
posts_with_replies: Tuter med svar
- remote_follow: Følg fra andre instanser
reserved_username: Brukernavnet er reservert
roles:
admin: Admin
@@ -427,7 +423,6 @@
unlocked_warning_title: Din konto er ikke låst
generic:
changes_saved_msg: Vellykket lagring av endringer!
- powered_by: drevet av %{link}
save_changes: Lagre endringer
validation_errors:
one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til
@@ -461,8 +456,6 @@
expires_at: Utløper
uses: Bruk
title: Inviter personer
- landing_strip_html: "
%{name} er en bruker på %{link_to_root_path}. Du kan følge dem eller kommunisere med dem hvis du har en konto hvor som helst i fediverset."
- landing_strip_signup_html: Hvis du ikke har en konto så kan du
registrere deg her.
lists:
errors:
limit: Du har nådd det maksimale antall lister
@@ -610,7 +603,6 @@
unlisted: Uoppført
unlisted_long: Synlig for alle, men ikke på offentlige tidslinjer
stream_entries:
- click_to_show: Klikk for å vise
pinned: Festet tut
reblogged: fremhevde
sensitive_content: Følsomt innhold
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 6c56ab1c0..5edfd2ded 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -5,13 +5,13 @@ oc:
about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls.
about_this: A prepaus d’aquesta instància
administered_by: 'Gerida per :'
+ api: API
+ apps: Aplicacions per mobil
closed_registrations: Las inscripcions son clavadas pel moment sus aquesta instància.
contact: Contacte
contact_missing: Pas parametrat
contact_unavailable: Pas disponible
- description_headline: Qué es %{domain} ?
- domain_count_after: autras instàncias
- domain_count_before: Connectat a
+ documentation: Documentacion
extended_description_html: |
Una bona plaça per las règlas
La descripcion longa es pas estada causida pel moment.
@@ -28,25 +28,30 @@ oc:
hosted_on: Mastodon albergat sus %{domain}
learn_more: Ne saber mai
other_instances: Lista d’instàncias
+ privacy_policy: Politica de confidencialitat
source_code: Còdi font
status_count_after: estatuts
status_count_before: qu’an escrich
+ terms: Condicions d’utilizacion
user_count_after: personas
user_count_before: Ostal de
what_is_mastodon: Qu’es Mastodon ?
accounts:
+ choices_html: 'Recomandacion de %{name} :'
follow: Sègre
followers: Seguidors
following: Abonaments
+ joined: Arribèt lo %{date}
media: Mèdias
moved_html: "%{name} a mudat a %{new_profile_link} :"
network_hidden: Aquesta informacion es pas disponibla
nothing_here: I a pas res aquí !
people_followed_by: Lo monde que %{name} sèc
people_who_follow: Lo monde que sègon %{name}
+ pin_errors:
+ following: Vos cal d’en primièr sègre las personas que volètz promòure
posts: Tuts
posts_with_replies: Tuts e responsas
- remote_follow: Sègre a distància
reserved_username: Aqueste nom d’utilizaire es reservat
roles:
admin: Admin
@@ -181,6 +186,7 @@ oc:
unsuspend_account: "%{name} restabliguèt lo compte a %{target}"
update_custom_emoji: "%{name} metèt a jorn l’emoji %{target}"
update_status: "%{name} metèt a jorn l’estatut a %{target}"
+ deleted_status: "(estatut suprimit)"
title: Audit dels jornals
custom_emojis:
by_domain: Domeni
@@ -207,6 +213,27 @@ oc:
update_failed_msg: Mesa a jorn de l’emoji fracasada
updated_msg: Emoji ben mes a jorn !
upload: Enviar
+ dashboard:
+ backlog: Accions en retard
+ config: Configuracion
+ feature_deletions: Supressions de comptes
+ feature_invites: Ligams convidat
+ feature_registrations: Inscripcions
+ feature_relay: Relai de federacion
+ features: Foncionalitats
+ hidden_service: Federacion amb servicis amagats
+ open_reports: Senhalaments dobèrts
+ recent_users: Utilizaires recents
+ search: Recèrca tèxte complèt
+ single_user_mode: Mòde sol utilizaire
+ software: Logicial
+ space: Utilizacion de l’espaci
+ title: Tablèu de bòrd
+ total_users: total dels utilizaires
+ trends: Tendéncias
+ week_interactions: interaccions aquesta setmana
+ week_users_active: actius aquesta setmana
+ week_users_new: utilizaires aquesta setmana
domain_blocks:
add_new: Ajustar
created_msg: Domeni blocat es a èsser tractat
@@ -256,12 +283,21 @@ oc:
search: Cercar
title: Instàncias conegudas
invites:
+ deactivate_all: O desactivar tot
filter:
all: Totes
available: Disponibles
expired: Expirats
title: Filtre
title: Convits
+ relays:
+ add_new: Ajustar un nòu relai
+ description_html: Un
relai de federacion es un servidor intermediari qu’escàmbia de bèls volumes de tuts publics entre servidors que son abonats e i publican.
Pòt ajudar de pichons e mejans servidors a trobar de contenguts del fediverse estant, qu’autrament demandariá als utilizaires locals de s’abonar manualament a d’autres monde marcats sus de servidors alonhats.
+ enable_hint: Un còp activat, vòstre servidor s’abonarà a totes los tuts publics del relai estant, e començarà de mandar sos tuts publics a aqueste d’enlà.
+ inbox_url: URL del relai
+ setup: Configurar una connexion relai
+ status: Estatut
+ title: Relais
report_notes:
created_msg: Nòta de moderacion corrèctament creada !
destroyed_msg: Nòta de moderacion corrèctament suprimida !
@@ -340,11 +376,14 @@ oc:
desc_html: Mostrar lo badge Personal sus la pagina de perfil
title: Mostrar lo badge personal
site_description:
- desc_html: Afichada jos la forma de paragraf sus la pagina d’acuèlh e utilizada coma balisa meta. Podètz utilizar de balisas HTML, en particular
<a>
e
<em>
.
+ desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular
<a>
e
<em>
.
title: Descripcion de l’instància
site_description_extended:
desc_html: Afichada sus la pagina d’informacion complementària del site
Podètz utilizar de balisas HTML
title: Descripcion espandida del site
+ site_short_description:
+ desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion de l’instància.
+ title: Descripcion corta de l’instància
site_terms:
desc_html: Afichada sus la pagina de las condicions d’utilizacion
Podètz utilizar de balisas HTML
title: Politica de confidencialitat del site
@@ -366,6 +405,7 @@ oc:
media:
title: Mèdia
no_media: Cap de mèdia
+ no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat
title: Estatuts del compte
with_media: Amb mèdia
subscriptions:
@@ -562,9 +602,12 @@ oc:
true_privacy_html: Mèfi que la
vertadièra confidencialitat pòt solament èsser amb un chiframent del cap a la fin (end-to-end).
unlocked_warning_html: Tot lo monde pòt vos sègre e veire sulpic vòstres estatuts privats. %{lock_link} per poder repassar e regetar los seguidors.
unlocked_warning_title: Vòstre compte es pas clavat
+ footer:
+ developers: Desvolopaires
+ more: Mai…
+ resources: Ressorsas
generic:
changes_saved_msg: Cambiaments ben realizats !
- powered_by: propulsat per %{link}
save_changes: Salvar los cambiaments
validation_errors:
one: I a quicòm que truca ! Mercés de corregir l’error çai-jos
@@ -600,8 +643,6 @@ oc:
expires_at: Expirats
uses: Usatges
title: Convidar de mond
- landing_strip_html: "
%{name} utiliza %{link_to_root_path}. Podètz lo/la sègre o interagir amb el o ela s’avètz un compte ont que siasque sul fediverse."
- landing_strip_signup_html: S’es pas lo cas, podètz
vos marcar aquí.
lists:
errors:
limit: Avètz atengut lo maximum de listas
@@ -678,6 +719,8 @@ oc:
no_account_html: Avètz pas cap de compte ? Podètz
vos marcar aquí
proceed: Clicatz per sègre
prompt: 'Sètz per sègre :'
+ remote_interaction:
+ prompt: 'Volètz interagir amb aqueste tut :'
remote_unfollow:
error: Error
title: Títol
@@ -761,6 +804,7 @@ oc:
private: Se pòt pas penjar los tuts pas publics
reblog: Se pòt pas penjar un tut partejat
show_more: Ne veire mai
+ sign_in_to_participate: Inscrivètz-vos per participar a la conversacion
title: '%{name} : "%{quote}"'
visibilities:
private: Seguidors solament
@@ -770,7 +814,6 @@ oc:
unlisted: Pas listat
unlisted_long: Tot lo monde pòt veire mai serà pas visible sul flux public
stream_entries:
- click_to_show: Clicatz per veire
pinned: Tut penjat
reblogged: a partejat
sensitive_content: Contengut sensible
@@ -795,7 +838,23 @@ oc:
- Per provesir la foncionament màger de Mastodon. Podètz pas qu’interagir amb lo contengut del monde e de vòstras publicacions quand sètz connectat. Per exemple, avètz la possibilitat de sègre de monde per veire lors publicacions amassadas dins vòstre flux d’actualitat personalizat.
- Per ajudar la moderacion de la comunitat, per exemple en comparant vòstra adreça IP amb d’autras per determinar d’ensages de contornament de bandiment e d’autras violéncias.
- - Per enviar periodicament de corrièls — Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
+ - Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
+
+
+
+
+
Cossí protegèm vòstras informacions ?
+
+
Apliquem tota una mena de mesuras de seguretat per manténer la fisança de vòstras informacions personalas quand las picatz, mandatz, o i accedètz. Entre aquelas, vòstre session de navigacion, coma lo trafic entre vòstra aplicacion e l’API, son securizats amb SSL e lo senhal es copat en tròces en emplegar un algorisme fòrt a sens unic. Podètz activar l’autentificacion en dos temps pels accèsses futurs a vòstre compte.
+
+
+
Quala es nòstra politica de conservacion de donadas ?
+
+
Farem esfòrces per :
+
+
+ - Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
+ - Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.
title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
themes:
@@ -805,6 +864,7 @@ oc:
time:
formats:
default: Lo %d %b de %Y a %Ho%M
+ month: "%b %Y"
two_factor_authentication:
code_hint: Picatz lo còdi generat per vòstra aplicacion d’autentificacion per confirmar
description_html: S’activatz
l’autentificacion two-factor, vos caldrà vòstre mobil per vos connectar perque generarà un geton per vos daissar dintrar.
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 061c07b64..236b9d897 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -5,13 +5,13 @@ pl:
about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform.
about_this: O tej instancji
administered_by: 'Administrowana przez:'
+ api: API
+ apps: Aplikacje
closed_registrations: Rejestracja na tej instancji jest obecnie zamknięta. Możesz jednak zarejestrować się na innej instancji, uzyskując dostęp do tej samej sieci.
contact: Kontakt
contact_missing: Nie ustawiono
contact_unavailable: Nie dotyczy
- description_headline: Czym jest %{domain}?
- domain_count_after: instancjami
- domain_count_before: Serwer połączony z
+ documentation: Dokumentacja
extended_description_html: |
Dobre miejsce na zasady użytkowania
Nie ustawiono jeszcze szczegółowego opisu
@@ -28,25 +28,36 @@ pl:
hosted_on: Mastodon uruchomiony na %{domain}
learn_more: Dowiedz się więcej
other_instances: Lista instancji
+ privacy_policy: Polityka prywatności
source_code: Kod źródłowy
- status_count_after: wpisów
+ status_count_after:
+ few: wpisów
+ many: wpisów
+ one: wpisu
status_count_before: Są autorami
- user_count_after: użytkowników
+ terms: Zasady użytkowania
+ user_count_after:
+ few: użytkowników
+ many: użytkowników
+ one: użytkownik
user_count_before: Z serwera korzysta
what_is_mastodon: Czym jest Mastodon?
accounts:
+ choices_html: 'Polecani przez %{name}:'
follow: Śledź
followers: Śledzący
following: Śledzeni
+ joined: Dołączył(a) %{date}
media: Zawartość multimedialna
moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:"
network_hidden: Ta informacja nie jest dostępna
nothing_here: Niczego tu nie ma!
people_followed_by: Konta śledzone przez %{name}
people_who_follow: Osoby, które śledzą konto %{name}
+ pin_errors:
+ following: Musisz śledzić osobę, którą chcesz polecać
posts: Wpisy
posts_with_replies: Wpisy z odpowiedziami
- remote_follow: Śledź zdalnie
reserved_username: Ta nazwa użytkownika jest zarezerwowana
roles:
admin: Administrator
@@ -152,34 +163,34 @@ pl:
web: Sieć
action_logs:
actions:
- assigned_to_self_report: "%{name} przypisał sobie zgłoszenie %{target}"
- change_email_user: "%{name} zmienił adres-email użytkownika %{target}"
- confirm_user: "%{name} potwierdził adres e-mail użytkownika %{target}"
- create_custom_emoji: "%{name} dodał nowe emoji %{target}"
- create_domain_block: "%{name} zablokował domenę %{target}"
- create_email_domain_block: "%{name} dodał domenę e-mail %{target} na czarną listę"
- demote_user: "%{name} zdegradował użytkownika %{target}"
- destroy_domain_block: "%{name} odblokował domenę %{target}"
- destroy_email_domain_block: "%{name} usunął domenę e-mail %{target} z czarnej listy"
- destroy_status: "%{name} usunął wpis użytkownika %{target}"
- disable_2fa_user: "%{name} wyłączył uwierzytelnianie dwustopniowe użytkownikowi %{target}"
- disable_custom_emoji: "%{name} wyłączył emoji %{target}"
- disable_user: "%{name} zablokował możliwość logowania użytkownikowi %{target}"
- enable_custom_emoji: "%{name} włączył emoji %{target}"
- enable_user: "%{name} przywrócił możliwość logowania użytkownikowi %{target}"
- memorialize_account: "%{name} nadał kontu %{target} status in memoriam"
- promote_user: "%{name} podniósł uprawnienia użytkownikowi %{target}"
- remove_avatar_user: "%{name} usunął awatar użytkownikowi %{target}"
- reopen_report: "%{name} otworzył ponownie zgłoszenie %{target}"
- reset_password_user: "%{name} przywrócił hasło użytkownikowi %{target}"
- resolve_report: "%{name} rozwiązał zgłoszenie %{target}"
- silence_account: "%{name} wyciszył konto %{target}"
- suspend_account: "%{name} zawiesił konto %{target}"
- unassigned_report: "%{name} cofnął przypisanie zgłoszenia %{target}"
- unsilence_account: "%{name} cofnął wyciszenie konta %{target}"
- unsuspend_account: "%{name} cofnął zawieszenie konta %{target}"
- update_custom_emoji: "%{name} zaktualizował emoji %{target}"
- update_status: "%{name} zaktualizował wpis użytkownika %{target}"
+ assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}"
+ change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
+ confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
+ create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}"
+ create_domain_block: "%{name} zablokował(a) domenę %{target}"
+ create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
+ demote_user: "%{name} zdegradował(a) użytkownika %{target}"
+ destroy_domain_block: "%{name} odblokował(a) domenę %{target}"
+ destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy"
+ destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}"
+ disable_2fa_user: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}"
+ disable_custom_emoji: "%{name} wyłączył(a) emoji %{target}"
+ disable_user: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}"
+ enable_custom_emoji: "%{name} włączył(a) emoji %{target}"
+ enable_user: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}"
+ memorialize_account: "%{name} nadał(a) kontu %{target} status in memoriam"
+ promote_user: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}"
+ remove_avatar_user: "%{name} usunął(-ęła) awatar użytkownikowi %{target}"
+ reopen_report: "%{name} otworzył(a) ponownie zgłoszenie %{target}"
+ reset_password_user: "%{name} przywrócił(a) hasło użytkownikowi %{target}"
+ resolve_report: "%{name} rozwiązał(a) zgłoszenie %{target}"
+ silence_account: "%{name} wyciszył(a) konto %{target}"
+ suspend_account: "%{name} zawiesił(a) konto %{target}"
+ unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
+ unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
+ unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
+ update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}"
+ update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}"
title: Dziennik działań administracyjnych
custom_emojis:
by_domain: Domeny
@@ -206,6 +217,27 @@ pl:
update_failed_msg: Nie udało się zaktualizować emoji
updated_msg: Pomyślnie zaktualizowano emoji!
upload: Dodaj
+ dashboard:
+ backlog: zaległe zadania
+ config: Konfiguracja
+ feature_deletions: Usuwanie kont
+ feature_invites: Zaproszenia
+ feature_registrations: Rejestracja
+ feature_relay: Przekazywanie federacji
+ features: Możliwości
+ hidden_service: Federowanie z ukrytymi usługami
+ open_reports: otwarte zgłoszenia
+ recent_users: Ostatni użytkownicy
+ search: Wyszukiwanie pełnego tekstu
+ single_user_mode: Tryb jednego użytkownika
+ software: Oprogramowanie
+ space: Używana powierzchnia
+ title: Panel administracyjny
+ total_users: łącznie użytkowników
+ trends: Na czasie
+ week_interactions: interakcje w tym tygodniu
+ week_users_active: aktywni w tym tygodniu
+ week_users_new: rejestracje w tym tygodniu
domain_blocks:
add_new: Dodaj nową
created_msg: Blokada domen jest przetwarzana
@@ -256,12 +288,21 @@ pl:
search: Szukaj
title: Znane instancje
invites:
+ deactivate_all: Unieważnij wszystkie
filter:
all: Wszystkie
available: Dostępne
expired: Wygasłe
title: Filtruj
title: Zaproszenia
+ relays:
+ add_new: Dodaj nowy
+ description_html: "
Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich.
Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznego śledzenia osób z innych serwerów."
+ enable_hint: Jeżeli włączone, Twój serwer zasubskrybuje wszystkie publiczne wpisy z tego przekaźnika i zacznie wysyłać tam publiczne wpisy z tego serwera.
+ inbox_url: Adres przekaźnika
+ setup: Skonfiguruj połączenie z przekaźnikiem
+ status: Stan
+ title: Przekaźniki
report_notes:
created_msg: Pomyslnie utworzono notatkę moderacyjną.
destroyed_msg: Pomyślnie usunięto notatkę moderacyjną.
@@ -340,13 +381,16 @@ pl:
desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika
title: Pokazuj odznakę administracji
site_description:
- desc_html: Akapit wprowadzający, widoczny na stronie głównej i znacznikach meta. Możesz korzystać z tagów HTML, w szczególności
<a>
i
<em>
.
+ desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności
<a>
i
<em>
.
title: Opis instancji
site_description_extended:
- desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tę instancję. Możesz korzystać z tagów HTML
+ desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tę instancję. Możesz korzystać ze znaczników HTML
title: Niestandardowy opis strony
+ site_short_description:
+ desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz, czym jest Mastodon i czym wyróżnia się ta instancja w jednym akapicie. Jeżeli pusty, zostanie użyty opis instancji.
+ title: Krótki opis instancji
site_terms:
- desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać z tagów HTML
+ desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać ze znaczników HTML
title: Niestandardowe zasady użytkowania
site_title: Nazwa instancji
thumbnail:
@@ -375,11 +419,17 @@ pl:
last_delivery: Ostatnio doręczono
title: WebSub
topic: Temat
+ suspensions:
+ bad_acct_msg: Zawartość potwierdzenia nie zgadza się. Czy próbujesz zawiesić właściwe konto?
+ hint_html: 'Aby potwierdzić zawieszenie konta, wprowadź %{value} w poniższe pole:'
+ proceed: Przejdź
+ title: Zawieś %{acct}
+ warning_html: 'Zawieszenie konta będzie skutkowało
nieodwracalnym usunięciem danych z tego konta, wliczając:'
title: Administracja
admin_mailer:
new_report:
- body: Użytkownik %{reporter} zgłosił %{target}
- body_remote: Użytkownik instancji %{domain} zgłosił %{target}
+ body: Użytkownik %{reporter} zgłosił(a) %{target}
+ body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target}
subject: Nowe zgłoszenie na %{instance} (#%{id})
application_mailer:
notification_preferences: Zmień ustawienia e-maili
@@ -397,18 +447,18 @@ 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ś się z
informacjami o instancji i
zasadami korzystania z usługi.
+ agreement_html: Rejestrując się, oświadczasz, że zapoznałeś(-aś) się z
informacjami o instancji i
zasadami korzystania z usługi.
change_password: Hasło
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.
- didnt_get_confirmation: Nie otrzymałeś instrukcji weryfikacji?
+ didnt_get_confirmation: Nie otrzymałeś(-aś) instrukcji weryfikacji?
forgot_password: Nie pamiętasz hasła?
invalid_reset_password_token: Token do resetowania hasła jest nieprawidłowy lub utracił ważność. Spróbuj uzyskać nowy.
login: Zaloguj się
logout: Wyloguj się
migrate_account: Przenieś konto
- migrate_account_html: Jeżeli chcesz skonfigurować przekierowanie z obecnego konta na inne, możesz
skonfigurować to tutaj.
+ migrate_account_html: Jeżeli chcesz skonfigurować przekierowanie z obecnego konta na inne, możesz
zrobić to tutaj.
or: lub
or_log_in_with: Lub zaloguj się z użyciem
providers:
@@ -506,9 +556,12 @@ pl:
true_privacy_html: Pamiętaj, że
rzeczywista prywatność może zostać uzyskana wyłącznie dzięki szyfrowaniu end-to-end.
unlocked_warning_html: Każdy może Cię śledzić, dzięki czemu może zobaczyć Twoje niepubliczne wpisy. %{lock_link} aby móc kontrolować, kto Cię śledzi.
unlocked_warning_title: Twoje konto nie jest zablokowane
+ footer:
+ developers: Dla programistów
+ more: Więcej…
+ resources: Zasoby
generic:
changes_saved_msg: Ustawienia zapisane!
- powered_by: uruchomione na %{link}
save_changes: Zapisz zmiany
validation_errors:
few: Coś jest wciąż nie tak! Przejrzyj %{count} poniższe błędy
@@ -536,7 +589,7 @@ pl:
'86400': dobie
expires_in_prompt: Nigdy
generate: Wygeneruj
- invited_by: 'Zostałeś zaproszony przez:'
+ invited_by: 'Zostałeś(-aś) zaproszony(-a) przez:'
max_uses:
few: "%{count} użycia"
many: "%{count} użyć"
@@ -548,8 +601,6 @@ pl:
expires_at: Wygaśnie po
uses: Użycia
title: Zaproś użytkowników
- landing_strip_html: "
%{name} ma konto na %{link_to_root_path}. Możesz je śledzić i wejść z nim w interakcję jeśli masz konto gdziekolwiek w Fediwersum."
- landing_strip_signup_html: Jeśli jeszcze go nie masz, możesz
stworzyć konto.
lists:
errors:
limit: Przekroczyłeś maksymalną liczbę utworzonych list
@@ -590,13 +641,13 @@ pl:
title: Nowy śledzący
follow_request:
action: Zarządzaj prośbami o możliwość śledzenia
- body: "%{name} poprosił o możliwość śledzenia Cię"
+ body: "%{name} poprosił(a) o możliwość śledzenia Cię"
subject: 'Prośba o możliwość śledzenia: %{name}'
title: Nowa prośba o możliwość śledzenia
mention:
action: Odpowiedz
- body: "%{name} wspomniał o Tobie w:"
- subject: "%{name} wspomniał o Tobie"
+ body: "%{name} wspomniał(a) o Tobie w:"
+ subject: "%{name} wspomniał(a) o Tobie"
title: Nowe wspomnienie o Tobie
reblog:
body: 'Twój wpis został podbity przez %{name}:'
@@ -625,11 +676,14 @@ pl:
publishing: Publikowanie
web: Sieć
remote_follow:
- acct: Podaj swój adres (nazwa@domena), z którego chcesz śledzić
+ 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
no_account_html: Nie masz konta? Możesz
zarejestrować się tutaj
proceed: Śledź
prompt: 'Zamierzasz śledzić:'
+ remote_interaction:
+ proceed: Przejdź do interakcji
+ prompt: 'Chcesz dokonać interakcji z tym wpisem:'
remote_unfollow:
error: Błąd
title: Tytuł
@@ -717,6 +771,7 @@ pl:
private: Nie możesz przypiąć niepublicznego wpisu
reblog: Nie możesz przypiąć podbicia wpisu
show_more: Pokaż więcej
+ sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji
title: '%{name}: "%{quote}"'
visibilities:
private: Tylko dla śledzących
@@ -726,7 +781,6 @@ pl:
unlisted: Niewypisane
unlisted_long: Widoczne dla wszystkich, ale nie wyświetlane na publicznych osiach czasu
stream_entries:
- click_to_show: Naciśnij aby wyświetlić
pinned: Przypięty wpis
reblogged: podbił
sensitive_content: Wrażliwa zawartość
@@ -736,9 +790,9 @@ pl:
Jakie informacje zbieramy?
- - Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze, możesz zostać poproszony o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.
+ - Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze, możesz zostać poproszony(-a) o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.
- Wpisy, śledzenie i inne publiczne informacje: Lista osób które śledzisz jest widoczna publicznie, tak jak lista osób, które Cię śledzą. Jeżeli dodasz wpis, data i czas jego utworzenia i aplikacja, z której go wysłano są przechowywane. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niewidoczne wpisy są dostępne publicznie. Udostępniony wpis również jest widoczny publicznie. Twoje wpisy są dostarczane obserwującym, co oznacza że jego kopie mogą zostać dostarczone i być przechowywane na innych serwerach. Kiedy usuniesz wpis, przestaje być widoczny również dla osób śledzących Cię. „Podbijanie” i dodanie do ulubionych jest zawsze publiczne.
- - Wpisy bezpośrednie i tylko dla śledzących: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspimnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. Nie udostępniaj wrażliwych danych z użyciem Mastodona.
+ - Wpisy bezpośrednie i tylko dla śledzących: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspomnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. Nie udostępniaj wrażliwych danych z użyciem Mastodona.
- Adresy IP i inne metadane: Kiedy zalogujesz się, przechowujemy adres IP użyty w trakcie logowania wraz z nazwą używanej przeglądarki. Wszystkie aktywne sesje możesz zobaczyć (i wygasić) w ustawieniach. Ostatnio używany adres IP jest przechowywany przez nas do 12 miesięcy. Możemy również przechowywać adresy IP wykorzystywane przy każdym działaniu na serwerze.
@@ -779,15 +833,15 @@ pl:
Czy używany plików cookies?
-
Tak. Pliki cookies są małymi plikami, które strona lub dostawca jej usługi dostarcza na dysk twardy komputera z użyciem przeglądarki internetowej (jeżeli na to pozwoli). Pliki cookies pozwalają na rozpoznanie przeglądarki i – jeśli jesteś zarejestrowany – przypisanie jej do konta.
+
Tak. Pliki cookies są małymi plikami, które strona lub dostawca jej usługi dostarcza na dysk twardy komputera z użyciem przeglądarki internetowej (jeżeli na to pozwoli). Pliki cookies pozwalają na rozpoznanie przeglądarki i – jeśli jesteś zarejestrowany(-a) – przypisanie jej do konta.
-
Wykorzystujemy pliki cookies, aby przechowywać preferencję użytkowników na przyszłe wizyty.
+
Wykorzystujemy pliki cookies, aby przechowywać preferencje użytkowników na przyszłe wizyty.
Czy przekazujemy informacje osobom trzecim?
-
Nie sprzedajemy, nie wymieniamy i nie przekazujemy osobom trzecim informacji pozwalających na identyfikację Ciebie. Nie dotyczy to zaufanym dostawcom pomagającym w prowadzeniu lub obsługiwaniu użytkowników, jeżeli zgadzają się, aby nie przekazywać dalej tych informacji. Możemy również udostępnić informacje, jeżeli uważany to za wymagane przez prawo, konieczne do wypełnienia polityki strony, przestrzegania naszych lub cudzych praw, własności i bezpieczeństwa.
+
Nie sprzedajemy, nie wymieniamy i nie przekazujemy osobom trzecim informacji pozwalających na identyfikację Ciebie. Nie dotyczy to zaufanych dostawców pomagających w prowadzeniu strony lub obsługiwaniu użytkowników, jeżeli zgadzają się, aby nie przekazywać dalej tych informacji. Możemy również udostępnić informacje, jeżeli uważany to za wymagane przez prawo, konieczne do wypełnienia polityki strony, przestrzegania naszych lub cudzych praw, własności i bezpieczeństwa.
Twoja publiczna zawartość może zostać pobrana przez inne serwery w sieci. Wpisy publiczne i tylko dla śledzących są dostarczane na serwery, na których znajdują się śledzący Cię, a wiadomości bezpośrednie trafiają na serwery adresatów, jeżeli są oni użytkownikami innego serwera.
@@ -797,9 +851,9 @@ pl:
Korzystanie ze strony przez dzieci
-
Jeżeli serwer znajduje się w UE lub w EOG: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 16 lat. Jeżeli nie ukończyłeś 16 roku życia, zgodnie z wymogami COPPA (Prawo o Ochronie Prywatności Dzieci w Internecie), nie używaj tej strony.
+
Jeżeli serwer znajduje się w UE lub w EOG: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 16 lat. Jeżeli nie ukończyłeś(-aś) 16 roku życia, zgodnie z wymogami COPPA (Prawo o Ochronie Prywatności Dzieci w Internecie), nie używaj tej strony.
-
Jeżeli serwer znajduje się w USA: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 13 lat. Jeżeli nie ukończyłeś 13 roku życia, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych), nie używaj tej strony.
+
Jeżeli serwer znajduje się w USA: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 13 lat. Jeżeli nie ukończyłeś(-aś) 13 roku życia, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych), nie używaj tej strony.
Wymogi mogą być inne, jeżeli serwer znajduje się w innym kraju.
@@ -838,7 +892,7 @@ pl:
wrong_code: Wprowadzony kod jest niepoprawny! Czy czas serwera i urządzenia jest poprawny?
user_mailer:
backup_ready:
- explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ono dostępne do pobrania
+ explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania!
subject: Twoje archiwum jest gotowe do pobrania
title: Odbiór archiwum
welcome:
@@ -850,7 +904,7 @@ pl:
full_handle: Twój pełny adres
full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć śledzić z innej instancji.
review_preferences_action: Zmień ustawienia
- review_preferences_step: Upewnij się, że zmieniłeś ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF.
+ review_preferences_step: Upewnij się, że zmieniłeś(-aś) ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF.
subject: Witaj w Mastodonie
tip_bridge_html: Jeżeli przybywasz z Twittera, możesz znaleźć znajomych na Mastodonie używając
aplikacji mostku. Działa to tylko, jeżeli oni również z niej korzystali!
tip_federated_timeline: Oś czasu federacji przedstawia całą sieć Mastodona. Wyświetla tylko wpisy osób, które śledzą użytkownicy Twojej instancji, więc nie jest kompletna.
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index cb2b12abd..842548278 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -5,13 +5,13 @@ pt-BR:
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
administered_by: 'Administrado por:'
+ api: API
+ apps: Apps
closed_registrations: Os cadastros estão atualmente fechados nesta instância. No entanto, você pode procurar uma instância diferente na qual possa criar uma conta e acessar a mesma rede por lá.
contact: Contato
contact_missing: Não definido
contact_unavailable: N/A
- description_headline: O que é %{domain}?
- domain_count_after: outras instâncias
- domain_count_before: Conectado a
+ documentation: Documentação
extended_description_html: |
Um bom lugar para regras
A descrição da instância ainda não foi feita.
@@ -28,25 +28,30 @@ pt-BR:
hosted_on: Mastodon hospedado em %{domain}
learn_more: Saiba mais
other_instances: Lista de instâncias
+ privacy_policy: Política de Privacidade
source_code: Código-fonte
status_count_after: publicações
status_count_before: Autores de
+ terms: Termos de serviço
user_count_after: usuários
user_count_before: Casa de
what_is_mastodon: O que é Mastodon?
accounts:
+ choices_html: 'Escolhas de %{name}:'
follow: Seguir
followers: Seguidores
following: Seguindo
+ joined: Participa desde %{date}
media: Mídia
moved_html: "%{name} se mudou para %{new_profile_link}:"
network_hidden: Esta informação não está disponível
nothing_here: Não há nada aqui!
people_followed_by: Pessoas que %{name} segue
people_who_follow: Pessoas que seguem %{name}
+ pin_errors:
+ following: Você tem que estar seguindo a pessoa que você quer sugerir
posts: Toots
posts_with_replies: Toots e respostas
- remote_follow: Siga remotamente
reserved_username: Este usuário está reservado
roles:
admin: Administrador
@@ -180,6 +185,7 @@ pt-BR:
unsuspend_account: "%{name} desativou a suspensão de %{target}"
update_custom_emoji: "%{name} atualizou o emoji %{target}"
update_status: "%{name} atualizou o estado de %{target}"
+ deleted_status: "(status deletado)"
title: Auditar relatório
custom_emojis:
by_domain: Domínio
@@ -206,6 +212,27 @@ pt-BR:
update_failed_msg: Não foi possível atualizar esse emoji
updated_msg: Emoji atualizado com sucesso!
upload: Enviar
+ dashboard:
+ backlog: tarefas na fila
+ config: Configuração
+ feature_deletions: Remoção de contas
+ feature_invites: Convites
+ feature_registrations: Cadastros
+ feature_relay: Repetidor da federação
+ features: Funcionalidades
+ hidden_service: Federação com serviços onion
+ open_reports: Denúncias em aberto
+ recent_users: Usuários recentes
+ search: Pesquisa em texto
+ single_user_mode: Modo de usuário único
+ software: Software
+ space: Uso de espaço em disco
+ title: Painel de controle
+ total_users: usuários no total
+ trends: Tendências
+ week_interactions: interações essa semana
+ week_users_active: ativos essa semana
+ week_users_new: usuários essa semana
domain_blocks:
add_new: Adicionar novo
created_msg: Bloqueio de domínio está sendo processado
@@ -255,12 +282,21 @@ pt-BR:
search: Buscar
title: Instâncias conhecidas
invites:
+ deactivate_all: Desativar todos
filter:
all: Todos
available: Disponíveis
expired: Expirados
title: Filtro
title: Convites
+ relays:
+ add_new: Adicionar novo repetidor
+ description_html: Um
repetidor de federação é um servidor intermediário que troca um grande volume de toots públicos entre servidores que se inscrevem e publicam nele.
O repetidor pode ser usado para ajudar servidores pequenos e médios a descobrir conteúdo do fediverso, que normalmente precisariam que usuários locais manualmente seguissem outras pessoas em servidores remotos.
+ enable_hint: Uma vez habilitado, seu servidor vai se inscrever para receber todos os toots públicos desse repetidor; E vai começar a enviar todos os toots públicos desse servidor para o repetidor.
+ inbox_url: URL do repetidor
+ setup: Configurar uma conexão de repetidor
+ status: Status
+ title: Repetidores
report_notes:
created_msg: Nota de denúncia criada com sucesso!
destroyed_msg: Nota de denúncia excluída com sucesso!
@@ -339,11 +375,14 @@ pt-BR:
desc_html: Mostrar uma insígnia de Equipe na página de usuário
title: Mostrar insígnia de equipe
site_description:
- desc_html: Parágrafo introdutório na página inicial e em meta tags. Você pode usar tags HTML, em especial
<a>
e
<em>
.
+ desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial
<a>
e
<em>
.
title: Descrição da instância
site_description_extended:
desc_html: Um ótimo lugar para seu código de conduta, regras, diretrizes e outras coisas para diferenciar a sua instância. Você pode usar tags HTML
title: Informação estendida customizada
+ site_short_description:
+ desc_html: Aparece na barra lateral e nas meta tags. Descreva o que é Mastodon e o que faz esse servidor especial em um único parágrafo. Se não for preenchido, é substituído pela descrição da instância.
+ title: Descrição curta da instância
site_terms:
desc_html: Você pode escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Você pode usar tags HTML
title: Termos de serviço customizados
@@ -365,6 +404,7 @@ pt-BR:
media:
title: Mídia
no_media: Não há mídia
+ no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado
title: Postagens da conta
with_media: Com mídia
subscriptions:
@@ -505,9 +545,12 @@ pt-BR:
true_privacy_html: Lembre-se de que
a verdadeira privacidade só pode ser alcançada através de encriptação ponto-a-ponto.
unlocked_warning_html: Qualquer pessoa pode te seguir e ver as suas postagens privadas. %{lock_link} para ser capaz de revisar e rejeitar seguidores.
unlocked_warning_title: A sua conta não está trancada
+ footer:
+ developers: Desenvolvedores
+ more: Mais…
+ resources: Recursos
generic:
changes_saved_msg: Mudanças salvas com sucesso!
- powered_by: graças a tecnologia de %{link}
save_changes: Salvar mudanças
validation_errors:
one: Algo não está certo! Por favor, reveja o erro abaixo
@@ -543,8 +586,6 @@ pt-BR:
expires_at: Expira em
uses: Usos
title: Convidar pessoas
- landing_strip_html: "
%{name} é um usuário no %{link_to_root_path}. Você pode segui-lo ou interagir com ele se você tiver uma conta em qualquer lugar no fediverso."
- landing_strip_signup_html: Se não, você pode
se cadastrar aqui.
lists:
errors:
limit: Você alcançou o número máximo de listas
@@ -616,11 +657,14 @@ pt-BR:
publishing: Publicação
web: Web
remote_follow:
- acct: Insira o seu usuário@domínio do qual você quer seguir
+ 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
no_account_html: Não tem uma conta? Você pode
cadastrar-se aqui
proceed: Prosseguir para seguir
prompt: 'Você irá seguir:'
+ remote_interaction:
+ proceed: Continue para interagir
+ prompt: 'Você quer interagir com este toot:'
remote_unfollow:
error: Erro
title: Título
@@ -704,6 +748,7 @@ pt-BR:
private: Toot não-público não pode ser fixado
reblog: Um compartilhamento não pode ser fixado
show_more: Mostrar mais
+ sign_in_to_participate: Entre para participar dessa conversa
title: '%{name}: "%{quote}"'
visibilities:
private: Apenas seguidores
@@ -713,7 +758,6 @@ pt-BR:
unlisted: Não listado
unlisted_long: Todos podem ver, porém não será postado nas timelines públicas
stream_entries:
- click_to_show: Clique para mostrar
pinned: Toot fixado
reblogged: compartilhou
sensitive_content: Conteúdo sensível
@@ -807,6 +851,7 @@ pt-BR:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%B de %Y"
two_factor_authentication:
code_hint: Insira o código gerado pelo seu aplicativo auteticador para confirmar
description_html: Se você ativar a
autenticação em dois passos, o acesso à sua conta exigirá posse de seu celular, que irá gerar tokens para validação.
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 3a6f2c993..eebeb498e 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -8,9 +8,6 @@ pt:
contact: Contacto
contact_missing: Não configurado
contact_unavailable: n.d.
- description_headline: O que é o %{domain}?
- domain_count_after: outras instâncias
- domain_count_before: Ligado a
extended_description_html: |
Um bom lugar para regras
A descrição estendida ainda não foi configurada.
@@ -44,7 +41,6 @@ pt:
people_who_follow: Pessoas que seguem %{name}
posts: Posts
posts_with_replies: Posts e Respostas
- remote_follow: Seguir remotamente
reserved_username: Este nome de utilizadores é reservado
roles:
admin: Administrador
@@ -430,7 +426,6 @@ pt:
unlocked_warning_title: A tua conta não está bloqueada
generic:
changes_saved_msg: Alterações guardadas!
- powered_by: fornecido por %{link}
save_changes: Guardar alterações
validation_errors:
one: Algo não está correcto. Por favor vê o erro abaixo
@@ -464,8 +459,6 @@ pt:
expires_at: Expira
uses: Usos
title: Convidar pessoas
- landing_strip_html: "
%{name} é um utilizador em %{link_to_root_path}. Podes segui-lo ou interagir com ele se tiveres uma conta em qualquer lugar no fediverso."
- landing_strip_signup_html: If you don't, you can
sign up here.
lists:
errors:
limit: Número máximo de listas alcançado
@@ -612,7 +605,6 @@ pt:
unlisted: Público, mas não mostre no timeline público
unlisted_long: Todos podem ver, porém não será postado nas timelines públicas
stream_entries:
- click_to_show: Clique pra mostrar
pinned: Toot fixado
reblogged: boosted
sensitive_content: Conteúdo sensível
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 89aefc1cd..44e41eaf6 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -5,13 +5,10 @@ ru:
about_mastodon_html: Mastodon - это
свободная социальная сеть с
открытым исходным кодом. Как
децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в
социальной сети совершенно бесшовно.
about_this: Об этом узле
administered_by: 'Администратор узла:'
- closed_registrations: В данный момент регистрация на этом узле закрыта.
+ closed_registrations: В данный момент регистрация на этом узле закрыта. Но вы можете найти другой узел, создать на нём учётную запись и получить доступ к той же сети оттуда.
contact: Связаться
contact_missing: Не установлено
contact_unavailable: Недоступен
- description_headline: Что такое %{domain}?
- domain_count_after: другими узлами
- domain_count_before: Связан с
extended_description_html: |
Хорошее место для правил
Расширенное описание еще не настроено.
@@ -28,25 +25,30 @@ ru:
hosted_on: Mastodon размещен на %{domain}
learn_more: Узнать больше
other_instances: Другие узлы
+ privacy_policy: Политика конфиденциальности
source_code: Исходный код
status_count_after: статусов
status_count_before: Опубликовано
+ terms: Условия использования
user_count_after: пользователей
user_count_before: Здесь живет
what_is_mastodon: Что такое Mastodon?
accounts:
+ choices_html: "%{name} рекомендует:"
follow: Подписаться
followers: Подписчики
following: Подписан(а)
- media: Медиаконтент
+ joined: 'Дата регистрации: %{date}'
+ media: Медиа
moved_html: "%{name} переехал(а) на %{new_profile_link}:"
network_hidden: Эта информация недоступна
nothing_here: Здесь ничего нет!
people_followed_by: Люди, на которых подписан(а) %{name}
people_who_follow: Подписчики %{name}
+ pin_errors:
+ following: Чтобы порекомендовать кого-то, надо сначала на них подписаться
posts: Посты
posts_with_replies: Посты с ответами
- remote_follow: Подписаться на удаленном узле
reserved_username: Имя пользователя зарезервировано
roles:
admin: Администратор
@@ -206,6 +208,27 @@ ru:
update_failed_msg: Невозможно обновить этот эмодзи
updated_msg: Эмодзи обновлён!
upload: Загрузить
+ dashboard:
+ backlog: задачи
+ config: Конфигурация
+ feature_deletions: Аккаунтов удалено
+ feature_invites: Пригласительные ссылки
+ feature_registrations: Регистрации
+ feature_relay: Ретрансляторов сети
+ features: Нововведения
+ hidden_service: Федерация со скрытыми сервисами
+ open_reports: открытых жалоб
+ recent_users: Недавние пользователи
+ search: Полнотекстовый поиск
+ single_user_mode: Однопользовательский режим
+ software: Программное обеспечение
+ space: Использовано места
+ title: Панель управления
+ total_users: всего пользователей
+ trends: Тренды
+ week_interactions: взаимодействий на этой неделе
+ week_users_active: активно на этой неделе
+ week_users_new: пользователей на этой неделе
domain_blocks:
add_new: Добавить новую
created_msg: Блокировка домена обрабатывается
@@ -263,6 +286,14 @@ ru:
expired: Истёкшие
title: Фильтр
title: Приглашения
+ relays:
+ add_new: Добавить ретранслятор
+ description_html: "
Федеративный ретранслятор – это промежуточный сервер, который передаёт большие объёмы публичных статусов между серверами, которые подписываются и публикуют туда.
Это может помочь небольшим и средним серверам находить записи со всей федерации, ведь в противном случае пользователям нужно будет вручную подписываться на людей с удалённых узлов."
+ enable_hint: Если включено, ваш сервер будет подписан на все публичные статусы с этого ретранслятора и начнёт туда отправлять публичные статусы со своего узла.
+ inbox_url: URL ретранслятора
+ setup: Настроте соединение с ретранслятором
+ status: Состояние
+ title: Ретрансляторы
report_notes:
created_msg: Примечание жалобы создано!
destroyed_msg: Примечание жалобы удалено!
@@ -282,8 +313,8 @@ ru:
mark_as_unresolved: Отметить как неразрешённую
notes:
create: Добавить заметку
- create_and_resolve: Разрешить с заметкой
- create_and_unresolve: Переоткрыть с заметкой
+ create_and_resolve: Разрешить с примечанием
+ create_and_unresolve: Переоткрыть с примечанием
delete: Удалить
placeholder: Опишите, какие действия были приняты, или любые другие подробности…
reopen: Переоткрыть жалобу
@@ -318,6 +349,9 @@ ru:
peers_api_enabled:
desc_html: Домены, которые были замечены этим узлом среди всей федерации
title: Публикация списка обнаруженных узлов
+ preview_sensitive_media:
+ desc_html: Предпросмотр ссылок с остальных веб-сайтов будет показан даже если медиаконтент отмечен как чувствительный
+ title: Показывать чувствительный медиаконтент в предпросмотре OpenGraph
registrations:
closed_message:
desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги
@@ -327,7 +361,7 @@ ru:
title: Разрешить удаление аккаунтов
min_invite_role:
disabled: Никого
- title: Разрешает приглашения от
+ title: Разрешать приглашения от
open:
desc_html: Позволяет любому создавать аккаунт
title: Открыть регистрацию
@@ -342,7 +376,10 @@ ru:
title: Описание сайта
site_description_extended:
desc_html: Отображается на странице дополнительной информации
Можно использовать HTML-теги
- title: Расширенное описание сайта
+ title: Расширенное описание узла
+ site_short_description:
+ desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию.
+ title: Короткое описание узла
site_terms:
desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML.
title: Условия использования
@@ -476,6 +513,22 @@ ru:
follows: Подписки
mutes: Список глушения
storage: Ваш медиаконтент
+ filters:
+ contexts:
+ home: Домашняя лента
+ notifications: Уведомления
+ public: Публичные ленты
+ thread: Диалоги
+ edit:
+ title: Изменить фильтр
+ errors:
+ invalid_context: Некорректный контекст или ничего
+ invalid_irreversible: Необратимая фильтрация работает только с лентой уведомлений и домашней лентой
+ index:
+ delete: Удалить
+ title: Фильтры
+ new:
+ title: Добавить фильтр
followers:
domain: Домен
explanation_html: Если Вы хотите быть уверены в приватности Ваших статусов, Вы должны иметь четкое представление о том, кто на Вас подписан.
Ваши приватные статусы отправляются всем узлам, на которых у Вас есть подписчики. Рекомендуем удалить из подписчиков пользователей узлов, администрации или программному обеспечению которых Вы не доверяете.
@@ -490,9 +543,12 @@ ru:
true_privacy_html: Пожалуйста, заметьте, что
настоящая конфиденциальность может быть достигнута только при помощи end-to-end шифрования.
unlocked_warning_html: Кто угодно может подписаться на Вас и получить доступ к просмотру Ваших приватных статусов. %{lock_link}, чтобы получить возможность рассматривать и вручную подтверждать запросы о подписке.
unlocked_warning_title: Ваш аккаунт не закрыт для подписки
+ footer:
+ developers: Разработчикам
+ more: Ещё…
+ resources: Ссылки
generic:
changes_saved_msg: Изменения успешно сохранены!
- powered_by: работает на %{link}
save_changes: Сохранить изменения
validation_errors:
few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
@@ -531,8 +587,6 @@ ru:
expires_at: Истекает
uses: Исп.
title: Пригласить людей
- landing_strip_html: "
%{name} - пользователь на %{link_to_root_path}. Вы можете подписаться на него/нее и общаться с ним/ней, если у Вас есть аккаунт на любом узле общей сети."
- landing_strip_signup_html: Если у Вас его нет, вы можете
зарегистрироваться здесь.
lists:
errors:
limit: Вы достигли максимального числа списков
@@ -610,6 +664,7 @@ ru:
remote_follow:
acct: Введите username@domain, откуда Вы хотите подписаться
missing_resource: Поиск требуемого перенаправления URL для Вашего аккаунта завершился неудачей
+ no_account_html: Нет учётной записи? Вы можете
зарегистрироваться здесь
proceed: Продолжить подписку
prompt: 'Вы хотите подписаться на:'
remote_unfollow:
@@ -692,6 +747,7 @@ ru:
many: 'содержались запрещённые хэштеги: %{tags}'
one: 'содержался запрещённый хэштег: %{tags}'
other: 'содержались запрещённые хэштеги: %{tags}'
+ language_detection: Определять язык автоматически
open_in_web: Открыть в WWW
over_character_limit: превышен лимит символов (%{max})
pin_errors:
@@ -709,8 +765,7 @@ ru:
unlisted: Скрывать из лент
unlisted_long: Показывать всем, но не отображать в публичных лентах
stream_entries:
- click_to_show: Показать
- pinned: Закреплённое сообщение
+ pinned: Закреплённый статус
reblogged: продвинул(а)
sensitive_content: Чувствительный контент
terms:
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 5c0c0a57c..3ee4a92a4 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -4,21 +4,19 @@ ar:
hints:
defaults:
autofollow: سوف يتابعك تلقائيًا الأشخاص الذين يقومون بالتسجيل من خلال الدعوة
- avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 400x400px
+ avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
bot: يُعلِم أنّ هذا الحساب لا يمثل شخصًا
context: واحد أو أكثر من السياقات التي يجب أن ينطبق عليها عامل التصفية
digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة
- display_name:
- one:
1 حرف باق
- other:
%{count} حرف باق
+ display_name:
%{count} حرف باق
fields: يُمكنك عرض 4 عناصر على شكل جدول في ملفك الشخصي
- header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 700x335px
+ header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
+ inbox_url: نسخ العنوان الذي تريد استخدامه مِن صفحة الإستقبال للمُرحَّل
irreversible: التبويقات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا
locale: لغة واجهة المستخدم و الرسائل الإلكترونية و الإشعارات
locked: يتطلب منك الموافقة يدويا على طلبات المتابعة
- note:
- one:
1 حرف باق
- other:
%{count} حرف باق
+ note:
%{count} حرف باق
+ phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى
scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي.
setting_default_language: يمكن الكشف التلقائي للّغة اللتي استخدمتها في تحرير تبويقاتك ، غيرَ أنّ العملية ليست دائما دقيقة
setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك الشخصية
@@ -50,6 +48,7 @@ ar:
expires_in: تنتهي مدة صلاحيته بعد
fields: واصفات بيانات الملف الشخصي
header: الرأسية
+ inbox_url: عنوان رابط صندوق المُرَحِّل
irreversible: إسقاط بدلا من إخفائها
locale: لغة الواجهة
locked: تجميد الحساب
@@ -76,6 +75,7 @@ ar:
type: صيغة الإستيراد
username: إسم المستخدم
username_or_email: إسم المستخدم أو كلمة السر
+ whole_word: الكلمة كاملة
interactions:
must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك
must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/simple_form.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index 720a8391d..938dacc95 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -3,9 +3,9 @@ bg:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 400x400 пиксела
+ avatar: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела
display_name: До 30 символа
- header: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 700x335 пиксела
+ header: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела
locked: Изисква ръчно одобрение на последователите. По подразбиране, публикациите са достъпни само до последователи.
note: До 160 символа
imports:
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 482ddd7be..d45b84971 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -4,7 +4,7 @@ ca:
hints:
defaults:
autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament
- avatar: PNG, GIF o JPG. Màxim 2MB. S'escalarà a 400x400px
+ avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona
context: Un o diversos contextos on s'ha d'aplicar el filtre
digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència
@@ -12,7 +12,7 @@ ca:
one:
1 càracter restant
other:
%{count} càracters restans
fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil
- header: PNG, GIF o JPG. Màxim 2MB. S'escalarà a 700x335px
+ header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
irreversible: Els nodes filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard
locale: El llenguatge de l’interfície d’usuari, els correus i les notificacions push
locked: Requereix que aprovis manualment els seguidors
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index ac8b89a7b..b1b83b9cb 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -3,35 +3,49 @@ co:
simple_form:
hints:
defaults:
- avatar: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à 400x400px
+ autofollow: Quelli·e chì s'arregistranu cù l'invitazione saranu autumaticamente abbunati·e à voi
+ avatar: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px
bot: Stu contu hè autumatizatu è ùn hè forse micca survegliatu
+ context: Cuntestu·i induve u filtru deve esse applicatu
digest: Solu mandatu dopu à una longa perioda d’inattività, è solu s’elli ci sò novi missaghji diretti
display_name:
one: Ci ferma
1 caratteru
other: Ci fermanu
%{count} caratteri
fields: Pudete avè fin’à 4 elementi mustrati cum’un tavulone nant’à u vostru prufile
- header: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à 700x335px
+ header: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px
+ inbox_url: Cupiate l'URL di a pagina d'accolta di u ripetitore chì vulete utilizà
+ irreversible: I statuti filtrati saranu sguassati di manera irreversibile, ancu s'ellu hè toltu u filtru
+ locale: A lingua di l'interfaccia utilizatore, di l'e-mail è di e nutificazione push
locked: Duvarete appruvà e dumande d’abbunamentu
note:
one: Ci ferma
1 caratteru
other: Ci fermanu
%{count} caratteri
+ 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_default_language: A lingua di i vostri statuti pò esse induvinata autumaticamente, mà ùn marchja micca sempre bè
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_theme: Tocca à l’apparenza di Mastodon quandu site cunnettatu·a da qualch’apparechju.
+ whole_word: Quandu a parolla o a frasa sana hè alfanumerica, sarà applicata solu s'ella currisponde à a parolla sana
imports:
data: Un fugliale CSV da un’altr’istanza di Mastodon
sessions:
otp: 'Entrate u codice d’identificazione à dui fattori nant’à u vostru telefuninu, o unu di i vostri codici di ricuperazione:'
+ user:
+ chosen_languages: Soli i statuti scritti in e lingue selezziunate saranu mustrati indè e linee pubbliche
labels:
account:
fields:
name: Label
value: Cuntinutu
defaults:
+ autofollow: Invità à siguità u vostru contu
avatar: Ritrattu di prufile
bot: Stu contu hè un bot
+ chosen_languages: Filtrà lingue
confirm_new_password: Cunfirmà a nova chjave d’accessu
confirm_password: Cunfirmà a chjave d’accessu
+ context: Cuntesti di u filtru
current_password: Chjave d’accessu attuale
data: Dati
display_name: Nome pubblicu
@@ -39,15 +53,19 @@ co:
expires_in: Spira dopu à
fields: Metadata di u prufile
header: Ritrattu di cuprendula
- locale: Lingua
+ inbox_url: URL di l'inbox di u ripetitore
+ irreversible: Sguassà invece di piattà
+ locale: Lingua di l'interfaccia
locked: Privatizà u contu
max_uses: Numeru massimale d’utilizazione
new_password: Nova chjave d’accessu
note: Descrizzione
otp_attempt: Codice d’identificazione à dui fattori
password: Chjave d’accessu
+ phrase: Parolla-chjave o frasa
setting_auto_play_gif: Lettura autumatica di i GIF animati
setting_boost_modal: Mustrà una cunfirmazione per sparte un statutu
+ setting_default_language: Lingua di pubblicazione
setting_default_privacy: Cunfidenzialità di i statuti
setting_default_sensitive: Sempre cunsiderà media cum’è sensibili
setting_delete_modal: Mustrà une cunfirmazione per toglie un statutu
@@ -62,6 +80,7 @@ co:
type: Tippu d’impurtazione
username: Cugnome
username_or_email: Cugnome o Email
+ whole_word: Parolla sana
interactions:
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
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index e8e7628f3..c23aad3c4 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -3,8 +3,97 @@ cs:
simple_form:
hints:
defaults:
- avatar: PNG, GIF či JPG. Maximálně 2 MB. Bude zmenšena na 400x400px
- bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován.
+ autofollow: Lidé, kteří se zaregistrují přes pozvání, vás budou automaticky sledovat
+ avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován
+ context: Jedno či více kontextů, ve kterých má být filtr uplatněn
+ digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdržel/a osobní zprávy
display_name:
one: Zbývá
1 znak
- other: Zbývá
%{count} znaků
+ other: Zbývá vám
%{count} znaků
+ fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka
+ header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít
+ irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn
+ locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push
+ locked: Vyžaduje manuální schvalování sledovatelů
+ note:
+ one: Zbývá
1znak
+ other: Zbývá
%{count} znaků
+ phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
+ scopes: Které API bude aplikace povolena používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat po jednom.
+ setting_default_language: Jazyk vašich tootů může být detekován automaticky, není to však vždy přesné
+ 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 příspěvků
+ setting_theme: Ovlivňuje jak Mastodon vypadá, jste-li přihlášen na libovolném zařízení.
+ whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikována pouze, pokud se shoduje s celým slovem
+ imports:
+ data: Soubor CSV exportován z jiné instance Mastodon
+ sessions:
+ otp: 'Napište dvoufaktorový 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:
+ account:
+ fields:
+ name: Označení
+ value: Obsah
+ defaults:
+ autofollow: Pozvěte ke sledování vašeho účtu
+ avatar: Avatar
+ bot: Tohle je účet robota
+ chosen_languages: Filtrovat jazyky
+ confirm_new_password: Potvrďte nové heslo
+ confirm_password: Potvrdit heslo
+ context: Kontexty filtrů
+ current_password: Současné heslo
+ data: Data
+ display_name: Zobrazované jméno
+ email: E-mailová adresa
+ expires_in: Expirovat po
+ fields: Metadata profilu
+ header: Hlavičkový obrázek
+ inbox_url: URL schránky mostu
+ irreversible: Zahodit místo skrytí
+ locale: Jazyk rozhraní
+ locked: Zamknout účet
+ max_uses: Maximální počet použití
+ new_password: Nové heslo
+ note: O vás
+ otp_attempt: Dvoufaktorový kód
+ password: Heslo
+ phrase: Klíčové slovo či fráze
+ setting_auto_play_gif: Automaticky přehrávat animace GIF
+ setting_boost_modal: Zobrazovat před boostnutím potvrzovací okno
+ setting_default_language: Jazyk příspěvků
+ setting_default_privacy: Soukromí příspěvků
+ setting_default_sensitive: Vždy označovat média jako citlivá
+ setting_delete_modal: Zobrazovat před smazáním tootu potvrzovací okno
+ setting_display_sensitive_media: Vždy zobrazovat média označená jako citlivá
+ setting_hide_network: Skrýt svou síť
+ setting_noindex: Neindexovat svůj profil vyhledávači
+ setting_reduce_motion: Redukovat pohyb v animacích
+ setting_system_font_ui: Použít výchozí písmo systému
+ setting_theme: Motiv stránky
+ setting_unfollow_modal: Zobrazovat před zrušením sledování potvrzovací okno
+ severity: Přísnost
+ type: Typ importu
+ username: Uživatelské jméno
+ username_or_email: Uživatelské jméno nebo e-mail
+ whole_word: Celé slovo
+ interactions:
+ 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
+ notification_emails:
+ digest: Posílat e-maily s přehledem
+ favourite: Posílat e-maily, když si někdo oblíbí váš příspěvek
+ 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í
+ reblog: Posílat e-maily, když někdo boostne váš příspěvek
+ 'no': Ne
+ required:
+ mark: "*"
+ text: požadováno
+ 'yes': Ano
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 07862e8a8..a5697220e 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -4,7 +4,7 @@ da:
hints:
defaults:
autofollow: Folk der har oprettet sig gennem invitationen vil automatisk følge dig
- avatar: PNG, GIF eller JPG. Højest 2MB. Vil blive skaleret ned til 400x400px
+ avatar: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
bot: Denne konto udfører hovedsageligt automatiserede handlinger og bliver muligvis ikke overvåget
context: En eller flere sammenhænge hvor filteret skal være gældende
digest: Sendes kun efter en lang periode med inaktivitet og kun hvis du har modtaget nogle personlige beskeder mens du er væk
@@ -12,25 +12,27 @@ da:
one:
1 tegn tilbage
other:
%{count}tegn tilbage
fields: Du kan have op til 4 ting vist som en tabel på din profil
- header: PNG, GIF eller JPG. Højest 2MB. Vil blive skaleret ned til 700x335px
- irreversible: Filtrerede toots vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet
+ header: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
+ inbox_url: Kopiere linket fra forsiden af den relay som du ønsker at bruge
+ irreversible: Filtrerede trut vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet
locale: Sproget på interfacet, emails og push beskeder
locked: Kræver, at du godkender følgere manuelt
note:
one:
1 tegn tilbage
other:
%{count} tegn tilbage
- phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om en toot
+ 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 toots kan blive fundet automatisk, men det er ikke altid præcist
+ setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist
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åt du er logget ind via en hvilken som helst enhed.
+ setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed.
+ whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
imports:
data: CSV fil eksporteret fra en anden Mastodon instans
sessions:
- otp: 'Indtast to-faktor koden der generes af appen på din fon eller brug en af din genoprettelses koder:'
+ otp: 'Indtast to-faktor koden der generes af appen af appen på din telefon eller brug en af din genoprettelses koder:'
user:
- chosen_languages: Når markeret, vil kun toots i de valgte sprog blive vist på offentlige tidslinjer
+ chosen_languages: Når markeret, vil kun trut i de valgte sprog blive vist på offentlige tidslinjer
labels:
account:
fields:
@@ -39,33 +41,34 @@ da:
defaults:
autofollow: Inviter til at følge din konto
avatar: Profilbillede
- bot: Dette er en bot konto
+ bot: Dette er en robot konto
chosen_languages: Filtrer sprog
- confirm_new_password: Bekræft dit nye kodeord
- confirm_password: Bekræft kodeord
+ confirm_new_password: Bekræft din nye adgangskode
+ confirm_password: Bekræft adgangskode
context: Filtrer sammenhænge
- current_password: Nuværende kodeord
+ current_password: Nuværende adgangskode
data: Data
display_name: Visningsnavn
email: E-mail adresse
expires_in: Udløber efter
fields: Profil metadata
header: Overskrift
+ inbox_url: Link til relay indbakken
irreversible: Ignorer istedet for at skjule
locale: Sprog på interface
locked: Lås konto
max_uses: Højeste antal benyttelser
- new_password: Nyt kodeord
+ new_password: Ny adgangskode
note: Biografi
otp_attempt: To-faktor kode
- password: Kodeord
+ password: Adgangskode
phrase: Nøgleord eller sætning
setting_auto_play_gif: Afspil automatisk animerede GIFs
setting_boost_modal: Vis bekræftelses dialog før du fremhæver
setting_default_language: Sprog for opslag
setting_default_privacy: Privatliv
setting_default_sensitive: Marker altid multimedia som værende følsomt
- setting_delete_modal: Vis bekræftelses dialog før du sletter et toot
+ setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
setting_display_sensitive_media: Vis altid multimedier markeret som værende følsomt
setting_hide_network: Skjul dit netværk
setting_noindex: Frameld dig søgemaskiners indeksering
@@ -77,6 +80,7 @@ da:
type: Importtype
username: Brugernavn
username_or_email: Brugernavn eller Email
+ whole_word: Helt ord
interactions:
must_be_follower: Bloker notifikationer fra folk der ikke følger dig
must_be_following: Bloker notifikationer fra folk du ikke følger
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index fb8d9e7c7..38e276d52 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -4,7 +4,7 @@ de:
hints:
defaults:
autofollow: Leute die sich über deine Einladung registrieren werden dir automatisch folgen
- avatar: PNG, GIF oder JPG. Maximal 2 MB. Wird auf 400×400 px herunterskaliert
+ avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf 400×400 px herunterskaliert
bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht
context: Ein oder mehrere Aspekte, wo der Filter greifen soll
digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt
@@ -12,7 +12,8 @@ de:
one:
1 Zeichen verbleibt
other:
%{count} Zeichen verbleiben
fields: Du kannst bis zu 4 Elemente als Tabelle dargestellt auf deinem Profil anzeigen lassen
- header: PNG, GIF oder JPG. Maximal 2 MB. Wird auf 700×335 px herunterskaliert
+ header: PNG, GIF oder JPG. Maximal %{size}. Wird auf 700×335 px herunterskaliert
+ inbox_url: Kopiere die URL von der Startseite des gewünschten Relays
irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde
locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen
locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten
@@ -25,6 +26,7 @@ de:
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_theme: Wirkt sich darauf aus, wie Mastodon aussieht, egal auf welchem Gerät du eingeloggt bist.
+ whole_word: Wenn das Schlüsselwort oder -phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet werden, wenn es dem ganzen Wort entspricht
imports:
data: CSV-Datei, die aus einer anderen Mastodon-Instanz exportiert wurde
sessions:
@@ -39,7 +41,7 @@ de:
defaults:
autofollow: Einladen, um deinen Account zu folgen
avatar: Profilbild
- bot: Dies ist ein bot Benutzer
+ bot: Dieser Benutzer ist ein Bot
chosen_languages: Sprachen filtern
confirm_new_password: Neues Passwort bestätigen
confirm_password: Passwort bestätigen
@@ -48,9 +50,10 @@ de:
data: Daten
display_name: Anzeigename
email: E-Mail-Adresse
- expires_in: Gültig bis
+ expires_in: Läuft ab
fields: Profil-Metadaten
header: Kopfbild
+ inbox_url: Inbox-URL des Relays
irreversible: Fallen lassen anstatt es zu verstecken
locale: Sprache der Benutzeroberfläche
locked: Gesperrtes Profil
@@ -77,6 +80,7 @@ de:
type: Importtyp
username: Profilname
username_or_email: Profilname oder Email
+ whole_word: Ganzes Wort
interactions:
must_be_follower: Benachrichtigungen von Nicht-Folgenden blockieren
must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 00fba5d27..c85959557 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -4,7 +4,7 @@ el:
hints:
defaults:
autofollow: Όσοι εγγραφούν μέσω της πρόσκλησης θα σε ακολουθούν αυτόματα
- avatar: PNG, GIF ή JPG. Έως 2MB. Θα μειωθεί σε διάσταση 400x400px
+ avatar: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
bot: Ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται
context: Ένα ή περισσότερα πλαίσια στα οποία μπορεί να εφαρμόζεται αυτό το φίλτρο
digest: Αποστέλλεται μόνο μετά από μακρά περίοδο αδράνειας και μόνο αν έχεις λάβει προσωπικά μηνύματα κατά την απουσία σου
@@ -12,7 +12,8 @@ el:
one: απομένει
1 χαρακτήρας
other: απομένουν
%{count} χαρακτήρες
fields: Μπορείς να έχεις έως 4 σημειώσεις σε μορφή πίνακα στο προφίλ σου
- header: PNG, GIF ή JPG. Έως 2MB. Θα μειωθεί σε διάσταση 700x335px
+ header: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
+ inbox_url: Αντέγραψε το URL της αρχικής σελίδας του ανταποκριτή (relay) που θέλεις να χρησιμοποιήσεις
irreversible: Τα φιλτραρισμένα τουτ θα εξαφανιστούν αμετάκλητα, ακόμα και αν το φίλτρο αργότερα αφαιρεθεί
locale: Η γλώσσα του περιβάλλοντος χρήσης, των email και των ειδοποιήσεων ώθησης
locked: Απαιτεί να εγκρίνεις χειροκίνητα τους ακόλουθούς σου
@@ -22,9 +23,10 @@ el:
phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ
scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα.
setting_default_language: Η γλώσσα των τουτ σου μπορεί να ανιχνευτεί αυτόματα αλλά δεν είναι πάντα ακριβές
- setting_hide_network: Το ποιους ακολουθείς και το ποιοι σε ακολουθούν δε θα φαίνεται στο προφίλ σου
+ setting_hide_network: Δε θα εμφανίζεται στο προφίλ σου ποιους ακολουθείς και ποιοι σε ακολουθούν
setting_noindex: Επηρεάζει το δημόσιο προφίλ και τις δημοσιεύσεις σου
setting_theme: Επηρεάζει την εμφάνιση του Mastodon όταν συνδέεται από οποιαδήποτε συσκευή.
+ whole_word: Όταν η λέξη ή η φράση κλειδί είναι μόνο αλφαριθμητική, θα εφαρμοστεί μόνο αν ταιριάζει με ολόκληρη τη λέξη
imports:
data: Αρχείο CSV που έχει εξαχθεί από διαφορετικό κόμβο Mastodon
sessions:
@@ -51,6 +53,7 @@ el:
expires_in: Λήξη μετά από
fields: Μετεδεδομένα προφίλ
header: Επικεφαλίδα
+ inbox_url: Το URL του inbox του ανταποκριτή (relay)
irreversible: Απόρριψη αντί για κρύψιμο
locale: Γλώσσα περιβάλλοντος
locked: Κλείδωμα λογαριασμού
@@ -77,6 +80,7 @@ el:
type: Τύπος εισαγωγής
username: Όνομα χρηστη
username_or_email: Όνομα ή διεύθυνση email χρήστη
+ whole_word: Ολόκληρη λέξη
interactions:
must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς
must_be_following: Μπλόκαρε τις ειδοποιήσεις που προέρχονται από άτομα που δεν τα ακολουθείς
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 49d94bcde..59ebe0a7e 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -4,7 +4,7 @@ en:
hints:
defaults:
autofollow: People who sign up through the invite will automatically follow you
- avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px
+ avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
bot: This account mainly performs automated actions and might not be monitored
context: One or multiple contexts where the filter should apply
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
@@ -12,7 +12,8 @@ en:
one:
1 character left
other:
%{count} characters left
fields: You can have up to 4 items displayed as a table on your profile
- header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
+ header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
+ inbox_url: Copy the URL from the frontpage of the relay you want to use
irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
locale: The language of the user interface, e-mails and push notifications
locked: Requires you to manually approve followers
@@ -25,6 +26,7 @@ en:
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_theme: Affects how Mastodon looks when you're logged in from any device.
+ whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
imports:
data: CSV file exported from another Mastodon instance
sessions:
@@ -51,6 +53,7 @@ en:
expires_in: Expire after
fields: Profile metadata
header: Header
+ inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
locked: Lock account
@@ -77,6 +80,7 @@ en:
type: Import type
username: Username
username_or_email: Username or Email
+ whole_word: Whole word
interactions:
must_be_follower: Block notifications from non-followers
must_be_following: Block notifications from people you don't follow
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index a46fcc42e..9b6e7cd9e 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -4,7 +4,7 @@ eo:
hints:
defaults:
autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin
- avatar: Formato PNG, GIF aŭ JPG. Ĝis 2MB. Estos malgrandigita al 400x400px
+ avatar: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata
context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi
digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto
@@ -12,7 +12,8 @@ eo:
one:
1 signo restas
other:
%{count} signoj restas
fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo
- header: Formato PNG, GIF aŭ JPG. Ĝis 2MB. Estos malgrandigita al 700x335px
+ header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
+ inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi
irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita
locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj
locked: Vi devos aprobi ĉiun peton de sekvado mane
@@ -24,6 +25,7 @@ eo:
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_theme: Influas kiel Mastodon aspektas post ensaluto de ajna aparato.
+ whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
imports:
data: CSV-dosiero el alia nodo de Mastodon
sessions:
@@ -50,6 +52,7 @@ eo:
expires_in: Eksvalidiĝas post
fields: Profilaj metadatumoj
header: Fonbildo
+ inbox_url: URL de la ripetila enirkesto
irreversible: Forĵeti anstataŭ kaŝi
locale: Interfaca lingvo
locked: Ŝlosi konton
@@ -76,6 +79,7 @@ eo:
type: Importa tipo
username: Uzantnomo
username_or_email: Uzantnomo aŭ Retadreso
+ whole_word: Tuta vorto
interactions:
must_be_follower: Bloki sciigojn de nesekvantoj
must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 000a33edc..483f79058 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -3,12 +3,12 @@ es:
simple_form:
hints:
defaults:
- avatar: PNG, GIF o JPG. Máximo 2MB. Será escalado a 400x400px
+ avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia
display_name:
one:
1 caracter restante
other:
%{count} caracteres restantes
- header: PNG, GIF o JPG. Máximo 2MB. Será escalado a 700x335px
+ header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
note:
one:
1 carácter restante
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index 2d60030ec..09a338200 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -4,23 +4,28 @@ eu:
hints:
defaults:
autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko zaituzte
- avatar: PNG, GIF edo JPG. Gehienez 2MB. 400x400px neurrira eskalatuko da
+ avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da
bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen
+ context: Iragazkia aplikatzeko testuinguru bat edo batzuk
digest: Soilik jarduerarik gabeko epe luze bat eta gero, eta soilik ez zeudela mezu pertsonalen bat jaso baduzu
display_name:
one: Karaktere
1 geratzen da
other:
%{count} karaktere geratzen dira
fields: 4 elementu bistaratu ditzakezu taula batean zure profilean
- header: PNG, GIF edo JPG. Gehienez 2MB. 700x335px eskalara txikituko da
+ header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da
+ irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza
locked: Jarraitzaileak eskuz onartu behar dituzu
note:
one: Karaktere
1 geratzen da
other:
%{count} karaktere geratzen dira
+ 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_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
setting_noindex: Zure profil publiko eta toot orrietan eragina du
setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
+ whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
imports:
data: Beste Mastodon instantzia batetik esportatutako CSV fitxategia
sessions:
@@ -39,6 +44,7 @@ eu:
chosen_languages: Iragazi hizkuntzak
confirm_new_password: Berretsi pasahitz berria
confirm_password: Berretsi pasahitza
+ context: Iragazkiaren testuinguruak
current_password: Oraingo pasahitza
data: Datuak
display_name: Pantaila-izena
@@ -46,6 +52,7 @@ eu:
expires_in: Iraungitzea
fields: Profilaren metadatuak
header: Goiburua
+ irreversible: Baztertu ezkutatu ordez
locale: Interfazearen hizkuntza
locked: Giltzapetu kontua
max_uses: Gehieneko erabiltzaile kopurua
@@ -53,6 +60,7 @@ eu:
note: Biografia
otp_attempt: Bi faktoreetako kodea
password: Pasahitza
+ phrase: Hitz edo esaldi gakoa
setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki
setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik
setting_default_language: Argitalpenen hizkuntza
@@ -70,6 +78,7 @@ eu:
type: Inportazio mota
username: Erabiltzaile-izena
username_or_email: Erabiltzaile-izena edo e-mail helbidea
+ whole_word: Hitz osoa
interactions:
must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak
must_be_following: Blokeatu zuk jarraitzen ez dituzunen jakinarazpenak
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 2a2cc6731..c24037d41 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -4,7 +4,7 @@ fa:
hints:
defaults:
autofollow: کسانی که از راه دعوتنامه عضو میشوند به طور خودکار پیگیر شما خواهند شد
- avatar: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۴۰۰×۴۰۰ پیکسل تبدیل خواهد شد
+ avatar: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
bot: این حساب بیشتر به طور خودکار فعالیت میکند و نظارت پیوستهای روی آن وجود ندارد
context: یک یا چند زمینه که فیلتر باید در آنها اعمال شود
digest: تنها وقتی فرستاده میشود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصیای نوشته شده باشد
@@ -12,7 +12,8 @@ fa:
one:
1 حرف باقی مانده
other:
%{count} حرف باقی مانده
fields: شما میتوانید تا چهار مورد را در یک جدول در نمایهٔ خود نمایش دهید
- header: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۳۳۵×۷۰۰ پیکسل تبدیل خواهد شد
+ header: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
+ inbox_url: نشانی صفحهٔ اصلی رلهای را که میخواهید به کار ببرید کپی کنید
irreversible: بوقهای فیلترشده به طور برگشتناپذیری ناپدید میشوند، حتی اگر فیلتر را بعداً بردارید
locale: زبان محیط کاربری، ایمیلها، و اعلانها
locked: باید پیگیران تازه را خودتان تأیید کنید
@@ -20,10 +21,12 @@ fa:
one:
1 حرف باقی مانده
other:
%{count} حرف باقی مانده
phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوقها مقایسه میشود
+ scopes: واسطهای برنامهنویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطحهای پایینی ندارید.
setting_default_language: زبان نوشتههای شما به طور خودکار تشخیص داده میشود، ولی این تشخصی همیشه دقیق نیست
setting_hide_network: فهرست پیگیران شما و فهرست کسانی که شما پی میگیرید روی نمایهٔ شما دیده نخواهد شد
setting_noindex: روی نمایهٔ عمومی و صفحهٔ نوشتههای شما تأثیر میگذارد
setting_theme: ظاهر ماستدون را وقتی که از هر دستگاهی به آن وارد میشوید تعیین میکند.
+ whole_word: اگر کلیدواژه فقط دارای حروف و اعداد باشد، تنها وقتی پیدا میشود که با کل یک واژه در متن منطبق باشد، نه با بخشی از یک واژه
imports:
data: پروندهٔ CSV که از سرور ماستدون دیگری برونسپاری شده
sessions:
@@ -50,6 +53,7 @@ fa:
expires_in: تاریخ انقضا
fields: اطلاعات تکمیلی نمایه
header: تصویر زمینه
+ inbox_url: نشانی صندوق ورودی رله
irreversible: به جای پنهانسازی، حذف کن
locale: زبان محیط کاربری
locked: خصوصیکردن حساب
@@ -76,6 +80,7 @@ fa:
type: نوع درونریزی
username: نام کاربری (تنها حروف انگلیسی)
username_or_email: نام کاربری یا ایمیل
+ whole_word: تطابق واژهٔ کامل
interactions:
must_be_follower: مسدودکردن اعلانهای همه به جز پیگیران
must_be_following: مسدودکردن اعلانهای کسانی که شما پی نمیگیرید
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index e510bd155..c13cfa50d 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -3,32 +3,34 @@ fr:
simple_form:
hints:
defaults:
- autofollow: Les personnes qui s'inscrivent grâce à l'invitation vous suivront automatiquement
- avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à 400x400px
+ autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
+ avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
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
+ 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
display_name:
one:
1 caractère restant
other:
%{count} caractères restants
- fields: Vous pouvez avoir jusqu'à 4 éléments affichés en tant que tableau sur votre profil
- header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à 700x335px
+ fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
+ header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
+ inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser
irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard
- locale: La langue de l'interface-utilisateur, des courriels, et des notifications
+ locale: La langue de l’interface, des courriels et des notifications
locked: Vous devrez approuver chaque abonné⋅e et vos statuts ne s’afficheront qu’à vos abonné⋅es
note:
one:
1 caractère restant
other:
%{count} caractères restants
- 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_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n'est pas toujours pertinent
+ 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_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
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_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil.
+ whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier
imports:
data: Un fichier CSV généré par une autre instance de Mastodon
sessions:
- otp: 'Entrez le code d’authentification à deux facteurs généré par votre téléphone ou utilisez un de vos codes de récupération :'
+ 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:
chosen_languages: Lorsque coché, seuls les pouets dans les langues sélectionnées seront affichés sur les fils publics
labels:
@@ -51,10 +53,11 @@ fr:
expires_in: Expire après
fields: Métadonnées du profil
header: Image d’en-tête
+ inbox_url: URL de la boîte de relais
irreversible: Supprimer plutôt que de cacher
- locale: Langue de l'interface
+ locale: Langue de l’interface
locked: Verrouiller le compte
- max_uses: Nombre maximum d'utilisations
+ max_uses: Nombre maximum d’utilisations
new_password: Nouveau mot de passe
note: Présentation
otp_attempt: Code d’identification à deux facteurs
@@ -76,7 +79,8 @@ fr:
severity: Sévérité
type: Type d’import
username: Identifiant
- username_or_email: Nom d'utilisateur ou courriel
+ username_or_email: Nom d’utilisateur·ice ou courriel
+ whole_word: Mot entier
interactions:
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
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 25694395d..b84a95826 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -4,7 +4,7 @@ gl:
hints:
defaults:
autofollow: As persoas que se conectaron a través de un convite seguirana automáticamente a vostede
- avatar: PNG, GIF ou JPG. Máximo 2MB. Será reducida a 400x400px
+ avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
bot: Esta conta realiza principalmente accións automatizadas e podería non estar monitorizada
context: Un ou varios contextos onde se debería aplicar o filtro
digest: Enviar só tras un longo período de inactividade e só si recibeu algunha mensaxe personal na súa ausencia
@@ -12,7 +12,8 @@ gl:
one:
1 caracter restante
other:
%{count} caracteres restantes
fields: Pode ter ate 4 elementos no seu perfil mostrados como unha táboa
- header: PNG, GIF ou JPG. Máximo 2MB. Será reducida a 700x335px
+ header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
+ inbox_url: Copiar o URL desde a páxina de inicio do repetidor que quere utilizar
irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso si despois se elimina o filtro
locale: O idioma da interface de usuaria, correos e notificacións
locked: Require que vostede acepte as seguidoras de xeito manual
@@ -25,6 +26,7 @@ gl:
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_theme: Afecta ao aspecto de Mastodon en calquer dispositivo cando está conectada.
+ whole_word: Si a chave ou frase de paso é só alfanumérica, só se aplicará si concorda a palabra completa
imports:
data: Ficheiro CSV exportado desde outra instancia Mastodon
sessions:
@@ -51,6 +53,7 @@ gl:
expires_in: Caducidade despois de
fields: Metadatos do perfil
header: Cabeceira
+ inbox_url: URL da caixa de entrada do repetidor
irreversible: Soltar en lugar de agochar
locale: Idioma da interface
locked: Protexer conta
@@ -77,6 +80,7 @@ gl:
type: Tipo de importación
username: Nome de usuaria
username_or_email: Nome de usuaria ou Correo-e
+ whole_word: Palabra completa
interactions:
must_be_follower: Bloquear as notificacións de non-seguidoras
must_be_following: Bloquea as notificacións de personas que non segue
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 96cdccd2b..aa5c7e827 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -3,12 +3,12 @@ he:
simple_form:
hints:
defaults:
- avatar: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן ל-400x400px
+ avatar: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן ל-%{dimensions}px
digest: נשלח לאחר תקופה ארוכה של אי-פעילות עם סיכום איזכורים שקיבלת בהעדרך
display_name:
one: נותרה אות
אחת
other: נותרו
%{count} אותיות
- header: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן 700x335px
+ header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px
locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
note:
one: נותרה אות
אחת
diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml
index 2506c8d92..2b3ebf91e 100644
--- a/config/locales/simple_form.hr.yml
+++ b/config/locales/simple_form.hr.yml
@@ -3,9 +3,9 @@ hr:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ili JPG. Najviše 2MB. Bit će smanjen na 400x400px
+ avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px
display_name: Najviše 30 znakova
- header: PNG, GIF ili JPG. Najviše 2MB. Bit će smanjen na 700x335px
+ header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px
locked: traži te da ručno odobriš sljedbenike i postavlja privatnost postova na dostupnu samo sljedbenicima
note: Najviše 160 znakova
imports:
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 2b36dc85b..ef915dec5 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -3,12 +3,12 @@ hu:
simple_form:
hints:
defaults:
- avatar: PNG, GIF vagy JPG. Maximum 2MB. Át lesz méretezve 400x400 pixelre
+ avatar: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
digest: Csak hosszú távollét esetén küldve és csak ha személyes üzenetet kaptál távollétedben
display_name:
one:
1karakter maradt
other:
%{count}karakter maradt
- header: PNG, GIF vagy JPG. Maximum 2MB. Át lesz méretezve 700x335 pixelre
+ header: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
locked: Egyenként engedélyezned kell a követőidet
note:
one:
1karakter maradt
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index 6b2868e02..fcd9d862c 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -3,9 +3,9 @@ id:
simple_form:
hints:
defaults:
- avatar: PNG, GIF atau JPG. Maksimal 2MB. Ukuran dikecilkan menjadi 400x400px
+ avatar: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
display_name: Maksimal 30 karakter
- header: PNG, GIF atau JPG. Maksimal 2MB. Ukuran dikecilkan menjadi 700x335px
+ header: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut
note: Maksimum 160 karakter
imports:
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index 60b578a12..cf87aa6d9 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -3,9 +3,9 @@ io:
simple_form:
hints:
defaults:
- avatar: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a 400x400px
+ avatar: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px
display_name: 30 signi maxime
- header: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a 700x335px
+ header: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px
locked: Tu devos aprobar omna demandi di sequado, e tua mesaji esos senchanje nur por tua sequanti.
note: 160 signi maxime
imports:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 185bba205..810ac813e 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -4,7 +4,7 @@ it:
hints:
defaults:
autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente
- avatar: PNG, GIF o JPG. Al massimo 2MB. Verranno scalate a 400x400px
+ avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
bot: Questo account esegue principalmente operazioni automatiche e potrebbe non essere tenuto sotto controllo da una persona
context: Uno o più contesti nei quali il filtro dovrebbe essere applicato
digest: Inviata solo dopo un lungo periodo di inattività e solo se hai ricevuto qualche messaggio personale in tua assenza
@@ -12,7 +12,8 @@ it:
one:
1 carattere rimanente
other:
%{count} caratteri rimanenti
fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo
- header: PNG, GIF o JPG. Al massimo 2MB. Verranno scalate a 700x335px
+ header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
+ inbox_url: Copia la URL dalla pagina iniziale del ripetitore che vuoi usare
irreversible: I toot filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato
locale: La lingua dell'interfaccia utente, di email e notifiche push
locked: Richiede che approvi i follower manualmente
@@ -25,6 +26,7 @@ it:
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_theme: Ha effetto sul modo in cui Mastodon verrà visualizzato quando sarai collegato da qualsiasi dispositivo.
+ whole_word: Quando la parola chiave o la frase è solo alfanumerica, si applica solo se corrisponde alla parola intera
imports:
data: File CSV esportato da un'altra istanza di Mastodon
sessions:
@@ -51,6 +53,7 @@ it:
expires_in: Scade dopo
fields: Metadati del profilo
header: Header
+ inbox_url: URL della inbox del ripetitore
irreversible: Elimina invece di nascondere
locale: Lingua dell'interfaccia
locked: Blocca account
@@ -77,6 +80,7 @@ it:
type: Tipo importazione
username: Nome utente
username_or_email: Nome utente o email
+ whole_word: Parola intera
interactions:
must_be_follower: Blocca notifiche dai non follower
must_be_following: Blocca notifiche dalle persone che non segui
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 7f7f3af19..6aa7af979 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -4,13 +4,14 @@ ja:
hints:
defaults:
autofollow: 招待から登録した人が自動的にあなたをフォローするようになります
- avatar: 2MBまでのPNG、GIF、JPGが利用可能です。400x400pxまで縮小されます
+ avatar: "%{size}までのPNG、GIF、JPGが利用可能です。%{dimensions}pxまで縮小されます"
bot: このアカウントは主に自動で動作し、人が見ていない可能性があります
context: フィルターを適用する対象 (複数選択可)
digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます
display_name: あと
%{count}文字入力できます。
fields: プロフィールに表として4つまでの項目を表示することができます
- header: 2MBまでのPNG、GIF、JPGが利用可能です。 700x335pxまで縮小されます
+ header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます"
+ inbox_url: 使用したいリレーサーバーのトップページからURLをコピーします
irreversible: フィルターが後で削除されても、除外されたトゥートは元に戻せなくなります
locale: ユーザーインターフェース、メールやプッシュ通知の言語
locked: フォロワーを手動で承認する必要があります
@@ -21,6 +22,7 @@ ja:
setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
setting_theme: ログインしている全てのデバイスで適用されるデザインです。
+ whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります
imports:
data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい
sessions:
@@ -39,7 +41,7 @@ ja:
chosen_languages: 表示する言語
confirm_new_password: 新しいパスワード(確認用)
confirm_password: パスワード(確認用)
- context: フィルター対象
+ context: 除外対象
current_password: 現在のパスワード
data: データ
display_name: 表示名
@@ -47,6 +49,7 @@ ja:
expires_in: 有効期限
fields: プロフィール補足情報
header: ヘッダー
+ inbox_url: リレーサーバーの inbox URL
irreversible: 隠すのではなく除外する
locale: 言語
locked: 承認制アカウントにする
@@ -55,7 +58,7 @@ ja:
note: プロフィール
otp_attempt: 二段階認証コード
password: パスワード
- phrase: 単語または語句
+ phrase: キーワードまたはフレーズ
setting_auto_play_gif: アニメーションGIFを自動再生する
setting_boost_modal: ブーストする前に確認ダイアログを表示する
setting_default_language: 投稿する言語
@@ -73,6 +76,7 @@ ja:
type: インポートする項目
username: ユーザー名
username_or_email: ユーザー名またはメールアドレス
+ whole_word: 単語全体にマッチ
interactions:
must_be_follower: フォロワー以外からの通知をブロック
must_be_following: フォローしていないユーザーからの通知をブロック
diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml
new file mode 100644
index 000000000..eb6d82bb2
--- /dev/null
+++ b/config/locales/simple_form.ka.yml
@@ -0,0 +1,99 @@
+---
+ka:
+ simple_form:
+ hints:
+ defaults:
+ autofollow: ადამიანები რომლებიც დარეგისტრირდებიან მოწვევით, ავტომატურად გამოგყვებიან
+ avatar: პნგ, გიფ ან ჯპგ. მაქს. %{size}. ზომა დაპატარავდება %{dimensions}პიქს.-ზე
+ bot: ეს ანგარიში უმთავრესად ასრულებს ავტომატურ მოქმედებებს და შესაძლოა არ იყოს მონიტორინგის ქვეშ
+ context: ერთ ან მრავალი კონტექსტი სადაც ფილტრი უნდა შესრულდეს
+ digest: იგზავნება მხოლოდ ხანგრძლივი უაქტივობის პერიოდის შემდეგ და არყოფნისას თუ მიიღეთ ერთი წერილი მაინც
+ display_name:
+ one: დარჩა
ერთი ნიშანი
+ other: დარჩა
%{count} ნიშანი
+ fields: პროფილზე ტაბულის სახით შესაძლოა საჩვენებლად გაგაჩნდეთ მაქს. 4 პუნქტი
+ header: პნგ, გიფ ან ჯპგ. მაქს. %{size}. ზომა დაპატარავდება %{dimensions}პიქს.-ზე
+ inbox_url: ურლ დააკოირეთ გამოყენებისთვის სასურველი რილეის წინა გვერდიდან
+ irreversible: გაფილტრული ტუტები გაუქმდება აღუდგენლად, იმ შემთხვევაშიც კი თუ ფილტრი სამომავლოდ გაუქმდება
+ locale: მომხმარებლის ინტერფეისის, ელ-ფოსტის წერილების და ფუშ შეტყობინებების ენა
+ locked: საჭიროებს თქვენ მიერ მიმდევრების ხელით დადასტურებას
+ note:
+ one: დარჩა
ერთი ნიშანი
+ other: დარჩა
%{count} ნიშანი
+ phrase: დამთხვევა მოხდება დიდი და პატარა ასოების ან კონტენტის გაფრთხილების გათვალისწინების გარეშე
+ scopes: რომელი აპიებისადმი ექნება აპლიკაციას ცვდომა. თუ არიჩევთ უმთავრეს ფარგლებს, არ დაგჭირდებათ ინდივიდუალურების ამორჩევა.
+ setting_default_language: თქვენი ტუტების ენა შეიძლება დადგინდეს ავტომატურად, მაგრამ ეს არაა ყოველთვის ზუსტი
+ setting_hide_network: ვის მიყვებით და ვინ მოგყვებათ არ გამოჩნდება აქ
+ setting_noindex: გავლენას ახდენს თქვენს ღია პროფილისა და სტატუსის გვერდებზე
+ setting_theme: გავლენას ახდენს თუ როგორ გამოიყურება მასტოდონი, როდესაც შესული ხართ რომელიმე მოწყობილობიდან.
+ whole_word: როდესაც სიტყვა ან ფრაზა მხოლოდ ალფა-ნუმერიკულია, ის დაფიქსირდება თუ ემთხვევა სრულ სიტყვას
+ imports:
+ data: ცსვ ფაილის ექსპორტი მოხდა მასტოდონის სხვა ინსტანციიდან
+ sessions:
+ otp: 'შეიყვანეთ მეორე ფაქტორის კოდი, რომელიც დააგერირა თქვენმა ტელეფონმა ან მოიხმარეთ შემდეგი აღდგენის კოდებიდან ერთ-ერთი:'
+ user:
+ chosen_languages: როდესაც მოინიშნება, ღია თაიმლაინზე გამოჩნდება ტუტები მხოლოდ არჩეულ ენებზე
+ labels:
+ account:
+ fields:
+ name: ლეიბლი
+ value: მოცულობა
+ defaults:
+ autofollow: მოიწვიეთ რომ გამოჰყვნენ თქვენს ანგარიშს
+ avatar: ავატარი
+ bot: ეს ბოტის ანგარიშია
+ chosen_languages: ენების ფილტრი
+ confirm_new_password: დაადასტურეთ ახალი პაროლი
+ confirm_password: დაადასტურეთ პაროლი
+ context: კონტექსტის ფილტრი
+ current_password: მიმდინარე პაროლი
+ data: მონაცემები
+ display_name: დისპლეის სახელი
+ email: ელ-ფოსტის მისამართი
+ expires_in: ვადის გასვლის დრო
+ fields: პროფილის მეტა-მონაცემი
+ header: დასათაურება
+ inbox_url: რილეი ინბოქსის ურლ
+ irreversible: გაუქმდეს დამალვის მაგივრად
+ locale: ინტერფეისის ენა
+ locked: ანგარიშის ჩაკეტვა
+ max_uses: მოხმარების მაქს. ოდენობა
+ new_password: ახალი პაროლი
+ note: ბიო.
+ otp_attempt: მეორე-ფაქტორის კოდი
+ password: პაროლი
+ phrase: სიტყვა ან ფრაზა
+ setting_auto_play_gif: ანიმაციური გიფების ავტო-დაკვრა
+ setting_boost_modal: ბუსტამე მოხდეს დამოწმება
+ setting_default_language: პოსტინგის ენა
+ setting_default_privacy: პოსტის კონფიდენციალურობა
+ setting_default_sensitive: ყოველთვის მოინიშნოს მედია მგრძნობიარედ
+ setting_delete_modal: ტუტის გაუქმებამდე გამოჩნდეს დადასტურების ფანჯარა
+ setting_display_sensitive_media: ყოველთვის გამოჩნდეს მგრძნობიარე მედია
+ setting_hide_network: თქვენი ქსელის დამალვა
+ setting_noindex: საძოები სისტემების ინდექსაციის შეჩერება
+ setting_reduce_motion: მოძრაობის შემცირება ანიმაციებში
+ setting_system_font_ui: მოხდეს სისტემის საწყისი ფონტის მოხმარება
+ setting_theme: საიტის თემა
+ setting_unfollow_modal: გამოჩნდეს დადასტურების ფანჯარა, სანამ შეყვეტთ ვინმეს დადევნებას
+ severity: სიმძიმე
+ type: იმპორტის სახეობა
+ username: მომხმარებლის სახელი
+ username_or_email: მომხმარებლის სახელი ან ელ-ფოსტა
+ whole_word: მთელი სიტყვა
+ interactions:
+ must_be_follower: დაიბლოკოს შეტყობინებები არა მიმდევრებისგან
+ must_be_following: დაიბლოკოს შეტყობინებები ადამიანებისგან ვისაც არ მიჰყვებით
+ must_be_following_dm: დაიბლოკოს პირადი წერილები ადამიანბისგან ვისაც არ მიჰყვებით
+ notification_emails:
+ digest: გამოიგზავნოს დაიჯესტ წერილები
+ favourite: გამოიგზავნოს წერილი როდესაც ვინმე ფავორიტად აქცევს თქვენს სტატუსს
+ follow: გამოიგზავნოს წერილი როდესაც ვინმე გამოგყვებათ
+ follow_request: გამოიგზავნოს წერილი როდესაც ვინმე მოგთხოვთ გაჰყვეთ
+ mention: გამოიგზავნოს წერილი როდესაც ვინმე გასახელებთ
+ reblog: გამოიგზავნოს წერილი როდესაც ვინმე გაზრდის თქვენს სტატუსს
+ 'no': არა
+ required:
+ mark: "*"
+ text: აუცილებელი
+ 'yes': კი
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index e0a6a7405..73751fc99 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -4,7 +4,7 @@ ko:
hints:
defaults:
autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다
- avatar: PNG, GIF 혹은 JPG. 최대 2MB. 400x400px로 다운스케일 될 것임
+ avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 될 것임
bot: 사람들에게 계정이 사람이 아님을 알립니다
context: 필터를 적용 할 한 개 이상의 컨텍스트
digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
@@ -12,7 +12,8 @@ ko:
one:
1 글자 남음
other:
%{count} 글자 남음
fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다
- header: PNG, GIF 혹은 JPG. 최대 2MB. 700x335px로 다운스케일 됨
+ header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 됨
+ inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다
irreversible: 필터링 된 툿은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다
locale: 유저 인터페이스, 이메일, 푸시 알림 언어
locked: 수동으로 팔로워를 승인하고, 기본 툿 프라이버시 설정을 팔로워 전용으로 변경
@@ -20,10 +21,12 @@ ko:
one:
1 글자 남음
other:
%{count} 글자 남음
phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
+ scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다
setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다
setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다
setting_theme: 로그인중인 모든 디바이스에 적용되는 디자인입니다.
+ whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다
imports:
data: 다른 마스토돈 인스턴스에서 추출된 CSV 파일
sessions:
@@ -50,6 +53,7 @@ ko:
expires_in: 만료시각
fields: 프로필 메타데이터
header: 헤더
+ inbox_url: 릴레이 서버의 inbox URL
irreversible: 숨기는 대신 삭제
locale: 인터페이스 언어
locked: 계정 잠금
@@ -76,6 +80,7 @@ ko:
type: 불러오기 종류
username: 유저 이름
username_or_email: 유저네임 또는 이메일
+ whole_word: 단어 전체에 매칭
interactions:
must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단
must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index eb13ec195..ddbc58978 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -4,7 +4,7 @@ nl:
hints:
defaults:
autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
- avatar: PNG, GIF of JPG. Maximaal 2MB. Wordt teruggeschaald naar 400x400px
+ avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord
context: Een of meerdere locaties waar de filter actief moet zijn
digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen
@@ -12,7 +12,8 @@ nl:
one:
1 teken over
other:
%{count} tekens over
fields: Je kan maximaal 4 items als een tabel op je profiel weergeven
- header: PNG, GIF of JPG. Maximaal 2MB. Wordt teruggeschaald naar 700x335px
+ header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
+ inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken
irreversible: Gefilterde toots verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd
locale: De taal van de gebruikersomgeving, e-mails en pushmeldingen
locked: Vereist dat je handmatig volgers moet accepteren
@@ -25,6 +26,7 @@ nl:
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_theme: Heeft invloed op hoe de webapp van Mastodon eruitziet (op elk apparaat waarmee je inlogt).
+ whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt
imports:
data: CSV-bestand dat op een andere Mastodonserver werd geëxporteerd
sessions:
@@ -51,6 +53,7 @@ nl:
expires_in: Vervalt na
fields: Metadata profiel
header: Omslagfoto
+ inbox_url: Inbox-URL van de relayserver
irreversible: Verwijderen in plaats van verbergen
locale: Taal van de gebruikersomgeving
locked: Maak account besloten
@@ -77,6 +80,7 @@ nl:
type: Importtype
username: Gebruikersnaam
username_or_email: Gebruikersnaam of e-mailadres
+ whole_word: Heel woord
interactions:
must_be_follower: Meldingen van mensen die jou niet volgen blokkeren
must_be_following: Meldingen van mensen die jij niet volgt blokkeren
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index aba8feeb6..98c6b82fe 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -3,12 +3,12 @@
simple_form:
hints:
defaults:
- avatar: PNG, GIF eller JPG. Maksimalt 2 MB. Vil bli nedskalert til 400x400px
+ avatar: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
digest: Kun sendt etter en lang periode med inaktivitet og bare dersom du har mottatt noen personlige meldinger mens du var borte
display_name:
one:
1 tegn igjen
other:
%{count} tegn igjen
- header: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 700x335px
+ header: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
locked: Krever at du manuelt godkjenner følgere
note:
one:
1 tegn igjen
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 7d11d0d3f..4842e5c4e 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -4,7 +4,7 @@ oc:
hints:
defaults:
autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament
- avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en 400x400px
+ avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en %{dimensions}px
bot: Avisar lo monde qu’aqueste compte es pas d’una persona
context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar
digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia
@@ -12,7 +12,8 @@ oc:
one: Demòra encara
1 caractèr
other: Demòran encara
%{count} caractèrs
fields: Podètz far veire cap a 4 elements sus vòstre perfil
- header: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhada en 700x335px
+ header: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhada en %{dimensions}px
+ inbox_url: Copiatz l’URL de la pagina màger del relai que volètz utilizar
irreversible: Los tuts filtrats desapareisseràn irreversiblament, encara que lo filtre siá suprimit mai tard
locale: La lenga de l’interfàcia d’utilizacion, los messatges e las notificacions
locked: Demanda qu’acceptetz manualament lo mond que vos sègon e botarà la visibilitat de vòstras publicacions coma accessiblas a vòstres seguidors solament
@@ -25,6 +26,7 @@ oc:
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_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qual que siasque lo periferic.
+ whole_word: Quand lo mot-clau o frasa es solament alfranumeric, serà pas qu’aplicat se correspond al mot complèt
imports:
data: Fichièr CSV exportat d’una autra instància Mastodon
sessions:
@@ -51,6 +53,7 @@ oc:
expires_in: Expira aprèp
fields: Metadonada del perfil
header: Bandièra
+ inbox_url: URL de la bóstia de recepcion del relai
irreversible: Suprimir allòc de rescondre
locale: Lenga de l’interfàcia
locked: Far venir lo compte privat
@@ -63,7 +66,7 @@ oc:
setting_auto_play_gif: Lectura automatica dels GIFS animats
setting_boost_modal: Afichar una fenèstra de confirmacion abans de partejar un estatut
setting_default_language: Lenga de publicacion
- setting_default_privacy: Confidencialitat de las publicacions
+ setting_default_privacy: Confidencialitat dels tuts
setting_default_sensitive: Totjorn marcar los mèdias coma sensibles
setting_delete_modal: Mostrar una fenèstra de confirmacion abans de suprimir un estatut
setting_display_sensitive_media: Totjorn mostrar los mèdias coma sensibles
@@ -77,6 +80,7 @@ oc:
type: Tipe d’impòrt
username: Nom d’utilizaire
username_or_email: Nom d’utilizaire o corrièl
+ whole_word: Mot complèt
interactions:
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
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 55c5e1c6d..96dd5191f 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -4,7 +4,7 @@ pl:
hints:
defaults:
autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić
- avatar: PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie zmniejszony do 400x400px
+ avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane
context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany
digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią
@@ -14,7 +14,7 @@ pl:
one: Pozostał
1 znak
other: Pozostało
%{count} znaków
fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu
- header: PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie zmniejszony do 700x335px
+ header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty
locale: Język interfejsu, wiadomości e-mail i powiadomieniach push
locked: Musisz akceptować prośby o śledzenie
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 9b72c7a7a..013b26066 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -4,7 +4,7 @@ pt-BR:
hints:
defaults:
autofollow: Pessoas que se cadastrarem através de seu convite te seguirão automaticamente
- avatar: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 400x400px
+ avatar: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada
context: Um ou mais contextos onde o filtro deve ser aplicado
digest: Enviado após um longo período de inatividade com um resumo das menções que você recebeu em sua ausência
@@ -12,7 +12,8 @@ pt-BR:
one:
1 caracter restante
other:
%{count} caracteres restantes
fields: Você pode ter até 4 itens exibidos em forma de tabela no seu perfil
- header: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 700x335px
+ header: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
+ inbox_url: Copie a URL da página inicial do repetidor que você quer usar
irreversible: Os toots filtrados vão desaparecer irreversivelmente, mesmo se o filtro for removido depois
locale: O idioma das telas de usuário, e-mails e notificações push
locked: Requer aprovação manual de seguidores
@@ -25,6 +26,7 @@ pt-BR:
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.
+ whole_word: Quando a palavra ou frase é inteiramente alfanumérica, ela será aplicada somente se corresponder a palavra inteira
imports:
data: Arquivo CSV exportado de outra instância do Mastodon
sessions:
@@ -51,6 +53,7 @@ pt-BR:
expires_in: Expira em
fields: Metadados do perfil
header: Cabeçalho
+ inbox_url: URL da caixa de entrada do repetidor
irreversible: Ignorar ao invés de esconder
locale: Idioma das telas
locked: Trancar conta
@@ -77,6 +80,7 @@ pt-BR:
type: Tipo de importação
username: Nome de usuário
username_or_email: Nome de usuário ou e-mail
+ whole_word: Palavra inteira
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que você não segue
diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml
index 5b79bd29f..8c515c1de 100644
--- a/config/locales/simple_form.pt.yml
+++ b/config/locales/simple_form.pt.yml
@@ -3,12 +3,12 @@ pt:
simple_form:
hints:
defaults:
- avatar: PNG, GIF or JPG. Arquivos até 2MB. Vão ser reduzidos para 400x400px
+ avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
digest: Enviado após um longo período de inatividade e apenas se foste mencionado na tua ausência
display_name:
one:
1 caracter restante
other:
%{count} caracteres restantes
- header: PNG, GIF or JPG. Arquivos até 2MB. Vão ser reduzidos para 700x335px
+ header: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
locked: Requer aprovação manual de seguidores
note:
one:
1 caracter restante
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 6bb95b13f..5cb0a0064 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -3,8 +3,10 @@ ru:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. Максимально 2MB. Будет уменьшено до 400x400px
+ autofollow: Люди, пришедшие по этому приглашению автоматически будут подписаны на Вас
+ avatar: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
bot: Этот аккаунт обычно выполяет автоматизированные действия и может не просматриваться владельцем
+ context: Один или несколько контекстов, к которым должны быть применены фильтры
digest: Отсылается лишь после длительной неактивности, если Вы в это время получали личные сообщения
display_name:
few: Осталось
%{count} символа
@@ -12,16 +14,23 @@ ru:
one: Остался
1 символ
other: Осталось
%{count} символов
fields: В профиле можно отобразить до 4 пунктов как таблицу
- header: PNG, GIF или JPG. Максимально 2MB. Будет уменьшено до 700x335px
+ header: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
+ inbox_url: Копировать URL с главной страницы ретранслятора, который Вы хотите использовать
+ irreversible: Отфильтрованные статусы будут утеряны навсегда, даже если в будущем фильтр будет убран
+ locale: Язык интерфейса, e-mail писем и push-уведомлений
locked: Потребует от Вас ручного подтверждения подписчиков, изменит приватность постов по умолчанию на "только для подписчиков"
note:
few: Осталось
%{count} символа
many: Осталось
%{count} символов
one: Остался
1 символ
other: Осталось
%{count} символов
+ phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании статуса
+ scopes: Какие API приложению будет позволено использовать. Если Вы выберите самый верхний, нижестоящие будут выбраны автоматически.
+ setting_default_language: Язык Ваших статусов может быть определён автоматически, но не всегда правильно
setting_hide_network: Те, на кого Вы подписаны и кто подписан на Вас, не будут отображены в Вашем профиле
setting_noindex: Относится к Вашему публичному профилю и страницам статусов
setting_theme: Влияет на внешний вид Mastodon при выполненном входе в аккаунт.
+ whole_word: Если слово или фраза состоит только из букв и цифр, сопоставление произойдёт только по полному совпадению
imports:
data: Файл CSV, экспортированный с другого узла Mastodon
sessions:
@@ -32,26 +41,33 @@ ru:
name: Пункт
value: Значение
defaults:
+ autofollow: Пригласите подписаться на Ваш аккаунт
avatar: Аватар
bot: Это аккаунт бота
+ chosen_languages: Фильтр языков
confirm_new_password: Повторите новый пароль
confirm_password: Повторите пароль
+ context: Контекст фильтра
current_password: Текущий пароль
data: Данные
display_name: Показываемое имя
email: Адрес e-mail
- expires_in: Срок действия
+ expires_in: Истекает через
fields: Метаданные профиля
header: Заголовок
- locale: Язык
+ inbox_url: URL для входящих от ретрансляторов
+ irreversible: Удалять, а не скрывать
+ locale: Язык интерфейса
locked: Сделать аккаунт закрытым
max_uses: Макс. число использований
new_password: Новый пароль
note: О Вас
otp_attempt: Двухфакторный код
password: Пароль
+ phrase: Слово или фраза
setting_auto_play_gif: Автоматически проигрывать анимированные GIF
setting_boost_modal: Показывать диалог подтверждения перед продвижением
+ setting_default_language: Язык отправляемых статусов
setting_default_privacy: Видимость постов
setting_default_sensitive: Всегда отмечать медиаконтент как чувствительный
setting_delete_modal: Показывать диалог подтверждения перед удалением
@@ -66,6 +82,7 @@ ru:
type: Тип импорта
username: Имя пользователя
username_or_email: Имя пользователя или e-mail
+ whole_word: Слово целиком
interactions:
must_be_follower: Заблокировать уведомления не от подписчиков
must_be_following: Заблокировать уведомления от людей, на которых Вы не подписаны
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 39fa3b833..c9ec7fb20 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -4,7 +4,7 @@ sk:
hints:
defaults:
autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď následovať
- avatar: PNG, GIF alebo JPG. Maximálne 2MB. Bude zmenšený na 400x400px
+ avatar: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný
context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené
digest: Odoslané iba v prípade dlhodobej neprítomnosti, a len ak si obdŕžal/a nejaké osobné správy kým si bol/a preč
@@ -13,7 +13,8 @@ sk:
one: Ostáva ti
1 znak
other: Ostáva ti
%{count} znakov
fields: Môžeš mať 4 položky na svojom profile zobrazené vo forme tabuľky
- header: PNG, GIF alebo JPG. Maximálne 2MB. Bude zmenšený na 700x335px
+ header: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
+ inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať
irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení
locked: Vyžaduje manuálne schvalovať sledujúcich
@@ -27,6 +28,7 @@ sk:
setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
setting_noindex: Ovplyvňuje verejný profil a statusy
setting_theme: Toto ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ 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
imports:
data: CSV súbor vyexportovaný z inej Mastodon inštancie
sessions:
@@ -53,6 +55,7 @@ sk:
expires_in: Expirovať po
fields: Metadáta profilu
header: Obrázok v hlavičke
+ inbox_url: URL adresa prechodnej schránky
irreversible: Zahoď, namiesto skritia
locale: Jazyk rozhrania
locked: Zamknúť účet
@@ -79,6 +82,7 @@ sk:
type: Typ importu
username: Prezývka
username_or_email: Prezívka, alebo email
+ whole_word: Celé slovo
interactions:
must_be_follower: Blokovať oznámenia od užívateľov, ktorí ťa nesledujú
must_be_following: Blokovať oboznámenia ohľadom ľudí ktorých nesleduješ
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 31d1e1170..0f86841d3 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -3,13 +3,13 @@ sl:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 400x400px
+ avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
bot: Opozarja ljudi, da račun ne predstavlja osebe
digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti
display_name:
one:
1 znak ostane
other:
%{count} znakov ostane
fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo.
- header: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 700x335px
+ header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
imports:
data: Izvožena CSV datoteka iz drugega Mastodon vozlišča
diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml
index 608630c0c..259ac0046 100644
--- a/config/locales/simple_form.sr-Latn.yml
+++ b/config/locales/simple_form.sr-Latn.yml
@@ -3,14 +3,14 @@ sr-Latn:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ili JPG. Najviše 2MB. Biće smanjena na 400x400px
+ avatar: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
digest: Poslato posle dužeg perioda neaktivnosti sa pregledom svih bitnih stvari koje ste dobili dok ste bili odsutni
display_name:
few:
%{count} karaktera preostala
many:
%{count} karaktera preostalo
one:
1 karakter preostao
other:
%{count} karaktera preostalo
- header: PNG, GIF ili JPG. Najviše 2MB. Biće smanjena na 700x335px
+ header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
locked: Zahteva da pojedinačno odobrite pratioce
note:
few:
%{count} karaktera preostal
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index ab9ef0f49..d84052c66 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -3,14 +3,14 @@ sr:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. Највише 2MB. Биће смањена на 400x400px
+ avatar: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
digest: Послато после дужег периода неактивности са прегледом свих битних ствари које сте добили док сте били одсутни
display_name:
few:
%{count} карактера преостала
many:
%{count} карактера преостало
one:
1 карактер преостао
other:
%{count} карактера преостало
- header: PNG, GIF или JPG. Највише 2MB. Биће смањена на 700x335px
+ header: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
locked: Захтева да појединачно одобрите пратиоце
note:
few:
%{count} карактера преостал
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index e761f3d99..7a10aa1e2 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -4,14 +4,14 @@ sv:
hints:
defaults:
autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig
- avatar: Högst 2 MB. Kommer att skalas ner till 400x400px
+ avatar: Högst %{size}. Kommer att skalas ner till %{dimensions}px
bot: Detta konto utför huvudsakligen automatiserade åtgärder och kanske inte övervakas
digest: Skickas endast efter en lång period av inaktivitet och endast om du har fått några personliga meddelanden i din frånvaro
display_name:
one:
1 tecken kvar
other:
%{count} tecken kvar
fields: Du kan ha upp till 4 objekt visade som en tabell på din profil
- header: NG, GIF eller JPG. Högst 2 MB. Kommer nedskalas till 700x335px
+ header: NG, GIF eller JPG. Högst %{size}. Kommer nedskalas till %{dimensions}px
locale: Användargränssnittets språk, e-post och push aviseringar
locked: Kräver att du manuellt godkänner följare
note:
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 575b6a9f4..29491de0b 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -3,11 +3,11 @@ th:
simple_form:
hints:
defaults:
- avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px
+ avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
display_name:
one:
1 character left
other:
%{count} characters left
- header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
+ header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
locked: Requires you to manually approve followers and defaults post privacy to followers-only
note:
one:
1 character left
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index c827aac46..bd5c65d83 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -3,9 +3,9 @@ tr:
simple_form:
hints:
defaults:
- avatar: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 400x400px büyüklüğüne indirgenecektir
+ avatar: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir
display_name:
%{count} karakter kaldı
- header: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 700x335px büyüklüğüne indirgenecektir.
+ header: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir.
locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar.
note:
%{count} karakter kaldı
imports:
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 7bc3ee4b8..834631fdf 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -3,9 +3,10 @@ uk:
simple_form:
hints:
defaults:
- avatar: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до 400x400px
+ avatar: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px
+ bot: Цей аккаунт в основному виконує автоматичні дії та може не відстежуватіся
display_name: 'Залишилося символів:
%{count}'
- header: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до 700x335px
+ header: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px
locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників"
note: 'Осталось символов:
%{count}'
imports:
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index ce990d692..b84f7107d 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -4,12 +4,12 @@ zh-CN:
hints:
defaults:
autofollow: 通过邀请链接注册的用户将会自动关注你
- avatar: 文件大小限制 2MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400×400px
+ avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400×400px
bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控
digest: 仅在你长时间未登录,且收到了私信时发送
display_name: 还能输入
%{count} 个字符
fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目
- header: 文件大小限制 2MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 700×335px
+ header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 700×335px
locale: 用户界面、电子邮件和推送通知中使用的语言
locked: 你需要手动审核所有关注请求
note: 还能输入
%{count} 个字符
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index 0575c09f8..abe6b7e06 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -4,14 +4,14 @@ zh-HK:
hints:
defaults:
autofollow: 通過邀請網址註冊的用戶將會自動關注你
- avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 400x400px
+ avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
bot: 提醒用戶本帳號是機械人
digest: 僅在你長時間未登錄,且收到了私信時發送
display_name:
one: 尚餘
1 個字
other: 尚餘
%{count} 個字
fields: 個人資料頁可顯示多至 4 個項目
- header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 700x335px
+ header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
locale: 使用者介面、電郵和通知的語言
locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」
note:
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 6b1dbae91..3763fc747 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -4,14 +4,14 @@ zh-TW:
hints:
defaults:
autofollow: 通過邀請網址註冊的使用者將會自動關注你
- avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 400x400px
+ avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
bot: 這個帳號由程式進行自動式操作
digest: 僅在你長時間未登入,並且收到了私訊時發送
display_name:
one: 尚餘
1 個字
other: 尚餘
%{count} 個字
fields: 個人資訊頁至多可顯示 4 個項目
- header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 700x335px
+ header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
locale: 使用者介面、 E-mail 與通知的語言
locked: 你必須手動核准每個使用者對你的關注請求,而你的貼文隱私將會被設定為「只有關注你的人能看」
note:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 7dc7a751f..1be11baa4 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -9,9 +9,6 @@ sk:
contact: Kontakt
contact_missing: Nezadané
contact_unavailable: Neuvedené
- description_headline: Čo je %{domain}?
- domain_count_after: ďalším instanciám
- domain_count_before: Pripojený k
extended_description_html: |
Pravidlá
Žiadne zatiaľ nie sú
@@ -46,7 +43,6 @@ sk:
people_who_follow: Ľudia sledujúci %{name}
posts: Príspevky
posts_with_replies: Príspevky s odpoveďami
- remote_follow: Sleduj vzdialeného
reserved_username: Prihlasovacie meno je rezervované
roles:
admin: Administrátor
@@ -206,6 +202,19 @@ sk:
update_failed_msg: Nebolo možné aktualizovať toto emoji
updated_msg: Emoji bolo úspešne aktualizované!
upload: Nahrať
+ dashboard:
+ config: Nastavenia
+ feature_deletions: Vymazanie účtov
+ feature_invites: Pozvánky
+ feature_registrations: Registrácie
+ feature_relay: Federovací mostík
+ features: Vymoženosti
+ hidden_service: Federácia so skritými službami
+ open_reports: otvorené hlásenia
+ recent_users: Nedávny užívatelia
+ software: Softvér
+ space: Využitie miesta
+ total_users: užívateľov celkovo
domain_blocks:
add_new: Pridať nový
created_msg: Doména je v procese blokovania
@@ -259,9 +268,13 @@ sk:
filter:
all: Všetky
available: Dostupné
- expired: Expirované
+ expired: Vypršalo
title: Filtrovať
title: Pozvánky
+ relays:
+ add_new: Pridaj novú priechodnú oporu
+ 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í."
+ status: Stav
report_notes:
created_msg: Poznámka o nahlásení úspešne vytvorená!
destroyed_msg: Poznámka o nahlásení úspešne vymazaná!
@@ -423,11 +436,11 @@ sk:
authorize_follow:
already_following: Tento účet už následuješ
error: Naneštastie nastala chyba pri hľadaní vzdialeného účtu
- follow: Následovať
- follow_request: 'Poslali ste požiadavku následovať užívateľa:'
- following: 'Podarilo sa! Teraz už následujete užívateľa:'
+ follow: Následuj
+ follow_request: 'Poslal/a si žiadosť následovať užívateľa:'
+ following: 'Podarilo sa! Teraz už následuješ užívateľa:'
post_follow:
- close: Alebo môžete iba zatvoriť toto okno.
+ close: Alebo môžeš iba zatvoriť toto okno.
return: Ukáž užívateľov profil
web: Prejdi do siete
title: Následuj %{acct}
@@ -509,7 +522,6 @@ sk:
unlocked_warning_title: Tvoj účet nieje zamknutý
generic:
changes_saved_msg: Zmeny boli úspešne uložené!
- powered_by: poháňané vďaka %{link}
save_changes: Uložiť zmeny
validation_errors:
few: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} chyby
@@ -547,8 +559,6 @@ sk:
expires_at: Vyprší
uses: Používa
title: Pozvi ľudí
- landing_strip_html: "
%{name} je užívateľ na serveri %{link_to_root_path}. Ty ich môžeš následovať a môžeš s nimi interaktovať pokiaľ máš účet kdekoľvek v rámci fediversa."
- landing_strip_signup_html: Pokiaľ ešte nemáš, môžeš
si tu vytvoriť účet.
lists:
errors:
limit: Dosiahli ste maximálny možný počet zoznamov
@@ -635,6 +645,7 @@ sk:
browser: Prehliadač
browsers:
alipay: Alipay
+ blackberry: RIM Blackberry
chrome: Google Chrome
edge: Microsoft Edge
electron: Electron
@@ -707,7 +718,6 @@ sk:
unlisted: Nezaradené
unlisted_long: Všetci môžu vidieť, ale nieje zaradené do verejnej osi
stream_entries:
- click_to_show: Klikni pre zobrazenie
pinned: Pripnutý toot
reblogged: vyzdvihnutý
sensitive_content: Senzitívny obsah
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 6f581f838..f7ef65423 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -9,9 +9,6 @@ sl:
contact: Kontakt
contact_missing: Ni nastavljeno
contact_unavailable: Ni na voljo
- description_headline: Kaj je %{domain}?
- domain_count_after: ostala vozlišča
- domain_count_before: Povezan z
extended_description_html: |
Dober prostor za pravila
Razširjen opis še ni bil nastavljen.
@@ -42,7 +39,6 @@ sl:
people_who_follow: Ljudje, ki sledijo %{name}
posts: Tuti
posts_with_replies: Tuti in odgovori
- remote_follow: Oddaljeno sledenje
reserved_username: Uporabniško ime je zasedeno
roles:
admin: Skrbnik
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 15c6b00ac..d9813db47 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -8,9 +8,6 @@ sr-Latn:
contact: Kontakt
contact_missing: Nije postavljeno
contact_unavailable: N/A
- description_headline: Šta je %{domain}?
- domain_count_after: ostale instance
- domain_count_before: Povezan na
extended_description_html: |
Dobro mesto za pravila
Prošireni opis koji još nije postavljen.
@@ -44,7 +41,6 @@ sr-Latn:
people_who_follow: Ljudi koji prate %{name}
posts: Tutovi
posts_with_replies: Tutovi i odgovori
- remote_follow: Udaljena praćenja
reserved_username: Korisničko ime je rezervisano
roles:
admin: Administrator
@@ -422,7 +418,6 @@ sr-Latn:
unlocked_warning_title: Vaš nalog nije zaključan
generic:
changes_saved_msg: Izmene uspešno sačuvane!
- powered_by: omogućio %{link}
save_changes: Snimi izmene
validation_errors:
few: Nešto nije baš kako treba! Pregledajte %{count} greške ispod
@@ -460,8 +455,6 @@ sr-Latn:
expires_at: Ističe
uses: Korišćenja
title: Pozovi ljude
- landing_strip_html: "
%{name} je korisnik na %{link_to_root_path}. Možete ga zapratiti ili komunicirati sa njim ako imte nalog bilo gde u fediversu."
- landing_strip_signup_html: Ako nemate, možete se
registrovati ovde.
lists:
errors:
limit: Dostigli ste limit broja listi
@@ -602,7 +595,6 @@ sr-Latn:
unlisted: Neizlistano
unlisted_long: Svako može da vidi, ali nije izlistano na javnim lajnama
stream_entries:
- click_to_show: Klikni da vidiš
pinned: Prikačeni tut
reblogged: podržano
sensitive_content: Osetljiv sadržaj
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 040090932..61c0b123c 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -9,9 +9,6 @@ sr:
contact: Контакт
contact_missing: Није постављено
contact_unavailable: N/A
- description_headline: Шта је %{domain}?
- domain_count_after: остале инстанце
- domain_count_before: Повезан на
extended_description_html: |
Добро место за правила
Проширени опис који још није постављен.
@@ -45,7 +42,6 @@ sr:
people_who_follow: Људи који прате %{name}
posts: Тутови
posts_with_replies: Тутови и одговори
- remote_follow: Удаљена праћења
reserved_username: Корисничко име је резервисано
roles:
admin: Администратор
@@ -423,7 +419,6 @@ sr:
unlocked_warning_title: Ваш налог није закључан
generic:
changes_saved_msg: Измене успешно сачуване!
- powered_by: омогућио %{link}
save_changes: Сними измене
validation_errors:
few: Нешто није баш како треба! Прегледајте %{count} грешке испод
@@ -461,8 +456,6 @@ sr:
expires_at: Истиче
uses: Коришћења
title: Позови људе
- landing_strip_html: "
%{name} је корисник на %{link_to_root_path}. Можете га запратити или комуницирати са њим ако имте налог било где у федиверсу."
- landing_strip_signup_html: Ако немате, можете се
регистровати овде.
lists:
errors:
limit: Достигли сте лимит броја листи
@@ -603,7 +596,6 @@ sr:
unlisted: Неизлистано
unlisted_long: Свако може да види, али није излистано на јавним лајнама
stream_entries:
- click_to_show: Кликни да видиш
pinned: Прикачени тут
reblogged: подржано
sensitive_content: Осетљив садржај
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 76b26c24f..605d9db12 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -9,9 +9,6 @@ sv:
contact: Kontakt
contact_missing: Inte inställd
contact_unavailable: N/A
- description_headline: Vad är %{domain}?
- domain_count_after: andra instanser
- domain_count_before: Uppkopplad mot
extended_description_html: |
En bra plats för regler
Den utökade beskrivningen har inte konfigurerats ännu.
@@ -46,7 +43,6 @@ sv:
people_who_follow: Personer som följer %{name}
posts: Toots
posts_with_replies: Toots med svar
- remote_follow: Avlägsen följare
reserved_username: Användarnamnet är reserverat
roles:
admin: Admin
@@ -488,7 +484,6 @@ sv:
unlocked_warning_title: Ditt konto är inte låst
generic:
changes_saved_msg: Ändringar sparades framgångsrikt!
- powered_by: drivs av %{link}
save_changes: Spara ändringar
validation_errors:
one: Något är inte riktigt rätt ännu! Kontrollera felet nedan
@@ -524,8 +519,6 @@ sv:
expires_at: Utgår
uses: Användningar
title: Bjud in andra
- landing_strip_html: "
%{name} är en användare på %{link_to_root_path}. Du kan följa dem eller interagera med dem om du har ett konto någonstans i federationen."
- landing_strip_signup_html: Om du inte gör det, så kan du
registrera dig här.
lists:
errors:
limit: Du har nått det maximala antalet listor
@@ -693,7 +686,6 @@ sv:
unlisted: Olistade
unlisted_long: Alla kan se, men listas inte på offentliga tidslinjer
stream_entries:
- click_to_show: Klicka för att visa
pinned: Fäst toot
reblogged: boostad
sensitive_content: Känsligt innehåll
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 6804dbd13..88e1eb44c 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -5,9 +5,6 @@ th:
about_this: เกี่ยวกับอินซะแตนซ์นี้
closed_registrations: อินซะแตนซ์นี้ปิดรับลงทะเบียนแล้ว.
contact: ติดต่อ
- description_headline: โดเมนคือ %{domain} ?
- domain_count_after: อินซะแตนซ์อื่นๆ
- domain_count_before: เชื่อมต่อกับ
other_instances: อินซะแตนซ์อื่นๆ
source_code: ซอร์สโค๊ด
status_count_after: สถานะ
@@ -22,7 +19,6 @@ th:
people_followed_by: ถูกติดตามโดย %{name}
people_who_follow: คนที่ติดตาม %{name}
posts: โพสต์
- remote_follow: Remote follow
unfollow: เลิกติดตาม
admin:
accounts:
@@ -216,7 +212,6 @@ th:
unlocked_warning_title: แอคเค๊าท์ของคุณไม่ได้ล๊อค
generic:
changes_saved_msg: บันทึกการแก้ไขแล้ว!
- powered_by: powered by %{link}
save_changes: บันทึกการเปลี่ยนแปลง
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -229,8 +224,6 @@ th:
following: Following list
muting: Muting list
upload: Upload
- landing_strip_html: "
%{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
- landing_strip_signup_html: If you don't, you can
sign up here.
media_attachments:
validations:
images_and_video: Cannot attach a video to a status that already contains images
@@ -302,7 +295,6 @@ th:
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
- click_to_show: คลิกเพื่อแสดง
reblogged: boosted
sensitive_content: Sensitive content
time:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 8bafbface..26dd4c1e3 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -5,9 +5,6 @@ tr:
about_this: Bu sunucu hakkında
closed_registrations: Bu sunucu şu anda yeni kayıt almamaktadır.
contact: İletişim
- description_headline: Peki %{domain} nedir?
- domain_count_after: sunucu var.
- domain_count_before: Bağlı olduğu
other_instances: Diğer sunucular
source_code: Kaynak kodu
status_count_after: adet gönderi yazıldı.
@@ -22,7 +19,6 @@ tr:
people_followed_by: Kullanıcı %{name}'in takip ettikleri
people_who_follow: Kullanıcı %{name}'i takip edenler
posts: Gönderiler
- remote_follow: Uzaktan takip et
unfollow: Takibi bırak
admin:
accounts:
@@ -214,7 +210,6 @@ tr:
unlocked_warning_title: Hesabınız kilitlendi
generic:
changes_saved_msg: Değişiklikler başarıyla kaydedildi!
- powered_by: powered by %{link}
save_changes: Değişiklikleri kaydet
validation_errors:
one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz
@@ -227,8 +222,6 @@ tr:
following: Takip edilenler listesi
muting: Susturulanlar listesi
upload: Yükle
- landing_strip_html: "
%{name}, %{link_to_root_path} sunucusundaki bir kullanıcıdır. Onu takip edebilir, veya Mastodon ağındaki bir hesabınızı kullanarak etkileşime geçebilirsiniz."
- landing_strip_signup_html: Eğer hesabınız yoksa
buradan kaydolabilirsiniz.
media_attachments:
validations:
images_and_video: Halihazırda görsel içeren bir gönderiye video ekleyemezsiniz.
@@ -300,7 +293,6 @@ tr:
unlisted: Listelenmemiş
unlisted_long: Herkes görebilir fakat herkese açık zaman tünellerinde listelenmez.
stream_entries:
- click_to_show: Görüntülemek için tıklayınız
reblogged: boost edildi
sensitive_content: Hassas içerik
time:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 6fe46b4d9..6783495bb 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1,50 +1,110 @@
---
uk:
about:
+ about_hashtag_html: Немає публічних постів з хештегом
#%{hashtag}. Ви можете You can interact with them if you have an account anywhere in the fediverse.
about_mastodon_html: Mastodon - це
вільна соціальна мережа з
відкритим вихідним кодом. Вона є
децентралізованою альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте — що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в
соціальній мережі.
about_this: Про цю інстанцію
+ administered_by: 'Адміністратор:'
+ api: API
closed_registrations: На даний момент реєстрація на цій інстанції закрита.
contact: Зв'язатися
- description_headline: Що таке %{domain}?
- domain_count_after: іншими інстанціями
- domain_count_before: Зв'язаний з
+ contact_missing: Не зазначено
+ contact_unavailable: Недоступно
+ documentation: Документація
+ extended_description_html: |
+
Гарне місце для правил
+
Детальний опис ще не налаштований.
+ features:
+ humane_approach_body: Навчаючись з помилок інших соціальних мереж, Mastodon націлений на етичні рішення для боротьби з направильним використанням соціальних медіа.
+ humane_approach_title: Більш людський підхід
+ not_a_product_body: Mastodon - це некомерційна мережа. Ніякої реклами, збору даних і залізних стін. Тут немає центральної влади.
+ not_a_product_title: Ви - особистість, а не продукт
+ real_conversation_body: Висловлюйте свої думки себе у будь-який спосіб маючи в розпорядженні 500 символів з підтримкою гранульованого контенту та попереджень медіа.
+ real_conversation_title: Побудований для справжньої розмови
+ within_reach_body: Велика кількість застосунків для iOS, Android та інших платформ, завдяки дружній до розробника екосистемі дозволяє бути на звязку з друзями звідусіль.
+ within_reach_title: Завжди на звязку
+ generic_description: "%{domain} є одним сервером у мережі"
+ hosted_on: Mastodon розміщено на %{domain}
+ learn_more: Дізнатися більше
other_instances: Інші інстанції
+ privacy_policy: Політика приватності
source_code: Вихідний код
status_count_after: статусів
status_count_before: Опубліковано
+ terms: Правила використання
user_count_after: користувачів
user_count_before: Тут живе
+ what_is_mastodon: Що таке Mastodon?
accounts:
follow: Підписатися
followers: Підписники
following: Підписаний(-а)
+ joined: Приєднався %{date}
+ media: Медіа
+ moved_html: "%{name} переїхав на %{new_profile_link}:"
+ network_hidden: Ця інформація недоступна
nothing_here: Тут нічого немає!
people_followed_by: Люди, на яких підписаний(-а) %{name}
people_who_follow: Підписники %{name}
posts: Пости
- remote_follow: Підписатися на іншій інстанції
+ posts_with_replies: Пости і відповіді
+ reserved_username: Це ім'я користувача зарезервоване
+ roles:
+ admin: Адміністратор
+ bot: Бот
+ moderator: Мод
unfollow: Відписатися
admin:
+ account_moderation_notes:
+ create: Залишити примітки
+ created_msg: Примітку модератора успішно створено!
+ delete: Видалити
+ destroyed_msg: Примітку модератора успішно видалено!
accounts:
are_you_sure: Ви впевнені?
+ avatar: Аватар
+ by_domain: Домен
+ change_email:
+ changed_msg: Поштова адреса аккаунту успішно змінена!
+ current_email: Поточна поштова адреса
+ label: Змінити поштову адресу
+ new_email: Новий e-mail
+ submit: Змінити поштову адресу
+ title: Змінити поштову адресу для %{username}
+ confirm: Зберегти
+ confirmed: Збережено
+ confirming: Зберігається
+ demote: Усунути
+ disable: Вимкнути
+ disable_two_factor_authentication: Вимкнути двофакторну авторизацію
+ disabled: Вимкнено
display_name: Відображуване ім'я
domain: Домен
edit: Змінити
email: Email
+ email_status: Статус e-mail
+ enable: Увімкнути
+ enabled: Увімкнено
feed_url: URL фіду
followers: Підписники
+ followers_url: URL підписників
follows: Підписки
+ inbox_url: Вхідний URL
+ ip: IP
location:
all: Усі
local: Локальні
remote: Віддалені
title: Розміщення
+ login_status: Статус авторизації
media_attachments: Мультимедійні вкладення
+ memorialize: Зробити пам'ятником
moderation:
all: Усі
silenced: Заглушені
suspended: Заблоковані
title: Модерація
+ moderation_notes: Примітки модераторів
most_recent_activity: Остання активність
most_recent_ip: Останній IP
not_subscribed: Не підписані
@@ -52,19 +112,120 @@ uk:
alphabetic: За алфавітом
most_recent: За датою
title: Порядок
+ outbox_url: Вихідний URL
perform_full_suspension: Повне блокування
profile_url: URL профілю
+ promote: Просунути
+ protocol: Протокол
public: Публічний
push_subscription_expires: Підписка PuSH спливає
+ redownload: Оновити аватар
+ remove_avatar: Видалити аватар
+ resend_confirmation:
+ already_confirmed: Цей користувач уже підтверджений
+ send: Надіслати підтвердження ще раз
+ success: Повідомлення з підтвердженням успішно надіслано!
+ reset: Скинути
reset_password: Зкинути пароль
+ resubscribe: Перепідписатися
+ role: Дозволи
+ roles:
+ admin: Адміністратор
+ moderator: Модератор
+ staff: Персонал
+ user: Користувач
salmon_url: Salmon URL
+ search: Пошук
+ shared_inbox_url: URL спільного вхідного кошика
+ show:
+ created_reports: Скарги створені цим аккаунтом
+ report: скарга
+ targeted_reports: Скарги щодо цього аккаунту
silence: Глушення
statuses: Статуси
+ subscribe: Підписатися
title: Акаунти
+ unconfirmed_email: Непідтверджений e-mail
undo_silenced: Зняти глушення
undo_suspension: Зняти блокування
+ unsubscribe: Відписатися
username: Ім'я користувача
web: WWW
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name} призначив(-ла) скаргу %{target} на себе"
+ change_email_user: "%{name} змінив(-ла) поштову адресу користувача %{target}"
+ confirm_user: "%{name} підтвердив(-ла) статус поштової адреси користувача %{target}"
+ create_custom_emoji: "%{name} вивантажив(-ла) нове емодзі %{target}"
+ create_domain_block: "%{name} заблокував(-ла) домен %{target}"
+ create_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до чорного списку"
+ demote_user: "%{name} понизив(-ла) %{target}"
+ destroy_domain_block: "%{name} розблокував(-ла) домен %{target}"
+ destroy_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до білого списку"
+ destroy_status: "%{name} видалив(-ла) статус користувача %{target}"
+ disable_2fa_user: "%{name} вимкнув(-ла) двофакторну авторизацію для користувача %{target}"
+ disable_custom_emoji: "%{name} вимкнув(-ла) емодзі %{target}"
+ disable_user: "%{name} заборонив(-ла) авторизацію користувачу %{target}"
+ enable_custom_emoji: "%{name} увімкнув(-ла) емодзі %{target}"
+ enable_user: "%{name} увімкнув(-ла) авторизацію користувачу %{target}"
+ memorialize_account: "%{name} перетворив(-ла) сторінку %{target} у пам'ятник"
+ promote_user: "%{name} підвищив(-ла) користувача %{target}"
+ remove_avatar_user: "%{name} прибрав(-ла) аватар користувача %{target}"
+ reopen_report: "%{name} перевідкрив(-ла) скаргу %{target}"
+ reset_password_user: "%{name} скинув(-ла) пароль користувача %{target}"
+ resolve_report: "%{name} розв'язав(-ла) скаргу %{target}"
+ silence_account: "%{name} заглушив(-ла) аккаунт %{target}"
+ suspend_account: "%{name} заблокував аккаунт користувача %{target}"
+ unassigned_report: "%{name} зняв(-ла) призначення скарги %{target}"
+ unsilence_account: "%{name} розглушив(-ла) аккаунт %{target}"
+ unsuspend_account: "%{name} розблокував аккаунт користувача %{target}"
+ update_custom_emoji: "%{name} оновив(-ла) емодзі %{target}"
+ update_status: "%{name} змінив(-ла) статус користуача %{target}"
+ title: Журнал подій
+ custom_emojis:
+ by_domain: Домен
+ copied_msg: Локальна копія емодзі успішно створена
+ copy: Копіювати
+ copy_failed_msg: Не вийшло створити локальну копію емодзі
+ created_msg: Емодзі успішно створене!
+ delete: Видалити
+ destroyed_msg: Емодзі усіпішно видалене!
+ disable: Вимкнути
+ disabled_msg: Емодзі успішно вимкнено
+ emoji: Емодзі
+ enable: Увімкнути
+ enabled_msg: Емодзі успішно увімкнене
+ image_hint: PNG розміром до 50 КБ
+ listed: У списку
+ new:
+ title: Додати новий емодзі
+ overwrite: Переписати
+ shortcode: Шорткод
+ shortcode_hint: Мінімум два символи, тільки цифрові й латинські символи або нижні підкреслення
+ title: Особливі емодзі
+ unlisted: Не у списку
+ update_failed_msg: Не вийшло оновити емозді
+ updated_msg: Емодзі успішно оновлене!
+ upload: Вивантажити
+ dashboard:
+ config: Налаштування
+ feature_deletions: Видалення аккаунтів
+ feature_invites: Посилання-запрошення
+ feature_registrations: Реєстрації
+ features: Можливості
+ hidden_service: Федерація з прихованими сервісами
+ open_reports: відкриті скарги
+ recent_users: Останні користувачі
+ search: Повнотекстовий пошук
+ single_user_mode: Режим одного користувача
+ software: Програмне забезпечення
+ space: Використання дискового простору
+ title: Дашборд
+ total_users: користувачів загалом
+ trends: Тренди
+ week_interactions: дій за цей тиждень
+ week_users_active: активно протягом тижня
+ week_users_new: користувачів цього тижня
domain_blocks:
add_new: Додати нове
created_msg: Блокування домену оброблюється
@@ -72,15 +233,17 @@ uk:
domain: Домен
new:
create: Створити блокування
- hint: Блокування домену не запобіжить створенню нових акаунтів у базі даних, але ретроактивно та автоматично застосує указані методи модерації для цих акаунтів.
+ hint: Блокування домену не завадить створенню нових акаунтів у базі даних, але ретроактивно та автоматично застосує вказані методи модерації для цих акаунтів.
severity:
- desc_html: "
Глушення зробить статуси акаунту невидимими для всіх, крім їхніх підписників.
Блокування видалить увесь контент акаунту, включаючи мультимедійні вкладення та дані профілю."
+ desc_html: "
Глушення зробить статуси акаунту невидимими для всіх, окрім їхніх підписників.
Блокування видалить увесь контент акаунту, включаючи мультимедійні вкладення та дані профілю."
+ noop: Нічого
silence: Глушення
suspend: Блокування
- title: Нове доменне блокування
+ title: Нове блокування домену
reject_media: Заборонити медіаконтент
reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування.
severities:
+ noop: Нічого
silence: Глушення
suspend: Блокування
severity: Суворість
@@ -97,40 +260,138 @@ uk:
undo: Відмінити
title: Доменні блокування
undo: Відмінити
+ email_domain_blocks:
+ add_new: Додати
+ created_msg: Успішно додано поштовий домен до чорного списку
+ delete: Видалити
+ destroyed_msg: Успішно видалено поштовий домен з чорного списку
+ domain: Домен
+ new:
+ create: Додати домен
+ title: Нове доменне блокування домену email
+ title: Чорний список поштових доменів
+ instances:
+ account_count: Відомі аккаунти
+ domain_name: Домен
+ reset: Скинути
+ search: Пошук
+ title: Відомі інстанції
+ invites:
+ filter:
+ all: Все
+ available: Доступно
+ expired: Просрочено
+ title: Фільтр
+ title: Запрошення
+ relays:
+ status: Статус
+ report_notes:
+ created_msg: Скарга успішно створена!
+ destroyed_msg: Скарга успішно видалена!
reports:
+ account:
+ note: примітка
+ report: скарга
+ action_taken_by: Дія виконана
+ are_you_sure: Ви впевнені?
+ assign_to_self: Призначити мені
+ assigned: Призначений модератор
comment:
none: Немає
+ created_at: Створено
id: ID
mark_as_resolved: Відмітити як вирішену
+ mark_as_unresolved: Відмітити як невирішену
+ notes:
+ create: Додати примітку
+ create_and_resolve: Розв'язати з приміткою
+ create_and_unresolve: Перевідкрити з приміткою
+ delete: Видалити
+ placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи...
+ reopen: Перевідкрити скаргу
report: 'Скарга #%{id}'
+ report_contents: Зміст
reported_account: Акаунт порушника
reported_by: Відправник скарги
resolved: Вирішено
+ resolved_msg: Скаргу успішно вирішено!
silence_account: Заглушити акаунт
status: Статус
- suspend_account: Блокувати акаунт
+ suspend_account: Заблокувати акаунт
target: Ціль
title: Скарги
+ unassign: Зняти призначення
unresolved: Невирішені
+ updated_at: Оновлені
view: Подивитися
settings:
+ activity_api_enabled:
+ desc_html: Кількість локальних постів, активних та нових користувачів у тижневих розрізах
+ title: Публікація агрегованої статистики про активність користувачів
+ bootstrap_timeline_accounts:
+ title: Підписки за замовчуванням для нових користувачів
contact_information:
email: Введіть публічний email
username: Введіть ім'я користувача
+ hero:
+ desc_html: Відображається на головній сторінці. Рекомендована як мінімум 600x100 пікселів. Якщо не вказано, буде використано передпоказ інстанції
+ title: Банер інстанції
+ peers_api_enabled:
+ desc_html: Доменні ім'я, помічені цією інстанцією федисвіту
+ title: Опублікувати список знайдених інстанцій
+ preview_sensitive_media:
+ desc_html: Передпоказ посилання на інших сайтах буде відображати мініатюру навіть якщо медіа відмічене як вразливе
+ title: Показувати вразливе медія у перепоказі OpenGraph
registrations:
closed_message:
desc_html: Відображається на титульній сторінці, коли реєстрація закрита
Можна використовувати HTML-теги
title: Повідомлення про закриту реєстрацію
+ deletion:
+ desc_html: Дозволити будь-кому видаляти свій аккаунт
+ title: Дозволити видалення аккаунтів
+ min_invite_role:
+ disabled: Ніхто
+ title: Дозволити запрошення від
open:
+ desc_html: Дозволити будь-ком створювати аккаунт
title: Відкрити реєстрацію
+ show_known_fediverse_at_about_page:
+ desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані локальні пости
+ title: Показувати доступний федисвіт у передпоказі фіду
+ show_staff_badge:
+ desc_html: Відмічати персонал на сторінці користувачів
+ title: Показувати персонал
site_description:
desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
Можна використовувати HTML-теги, особливо
<a>
і
<em>
.
- title: Опис сайту
+ title: Опис інстанції
site_description_extended:
desc_html: Відображається на сторінці додаткової информації
Можна використовувати HTML-теги
title: Розширений опис сайту
+ site_terms:
+ desc_html: |-
+ Ви можене написати власну політику приватності, умови використанні та інші законні штуки
+ Можете використовувати HTML теги
+ title: Особливі умови використання
site_title: Назва сайту
+ thumbnail:
+ desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів.
+ title: Мініатюра інстанції
+ timeline_preview:
+ desc_html: Показувати публічний фід на головній сторінці
+ title: Передпоказ фіду
title: Налаштування сайту
+ statuses:
+ back_to_account: Назад на сторінку профілю
+ batch:
+ delete: Видалити
+ nsfw_off: Відмітити сприйнятливим
+ nsfw_on: Відмітити несприйнятливим
+ failed_to_execute: Не вийшло
+ media:
+ title: Медіа
+ no_media: Немає медіа
+ title: Статуси аккаунтів
+ with_media: З медіа
subscriptions:
callback_url: Callback URL
confirmed: Підтверджено
@@ -139,24 +400,60 @@ uk:
title: WebSub
topic: Тема
title: Адміністрування
+ admin_mailer:
+ new_report:
+ body: "%{reporter} поскаржився(-лася) %{target}"
+ body_remote: Хтось з домену %{domain} поскаржився(-лася) %{target}
+ subject: Нова скарга до %{instance} (#%{id})
application_mailer:
- settings: 'Змінити налаштування email: %{link}'
+ notification_preferences: Змінити налаштування e-mail
+ salutation: "%{name},"
+ settings: 'Змінити налаштування e-mail: %{link}'
view: 'Перегляд:'
+ view_profile: Показати профіль
+ view_status: Показати статус
applications:
+ created: Застосунок успішно створений
+ destroyed: Застосунок успішно видалений
invalid_url: Введена URL неправильна
+ regenerate_token: Перегенерувати токен доступу
+ token_regenerated: Токен доступу успішне перегенеровано
+ warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким!
+ your_token: Ваш токен доступу
auth:
+ agreement_html: Реєструючись, ви погоджуєтеся виконувати
правила інстанції та
наші умови використання.
+ change_password: Пароль
+ confirm_email: Підтвердьте e-mail адресу
+ delete_account: Видалити аккаунт
+ delete_account_html: Якщо ви хочете видалити аккаунт, ви можете
перейти сюди. Вас попросять підтвердити дію.
didnt_get_confirmation: Ви не отримали інструкції з підтвердження?
forgot_password: Забули свій пароль?
+ invalid_reset_password_token: Токен скидання паролю неправильний або просрочений. Спробуйте попросити новий.
login: Увійти
logout: Вийти
+ migrate_account: Переїхати до іншого аккаунту
+ migrate_account_html: Якщо ви бажаєте, щоб відвідувачі цього акканту були перенаправлені до іншого, ви можете
налаштувати це тут.
+ or: або
+ or_log_in_with: Або увійдіть з
+ providers:
+ cas: CAS
+ saml: SAML
register: Зареєструватися
+ register_elsewhere: Зареєструватися на іншому сервері
resend_confirmation: Повторно відправити інструкції з підтвердження
reset_password: Скинути пароль
security: Зміна паролю
set_new_password: Встановити новий пароль
authorize_follow:
+ already_following: Ви вже підписані на цей аккаунт
error: На жаль, при пошуку віддаленого аккаунту виникла помилка
follow: Підписатися
+ follow_request: 'Вам надіслали запит на підписку:'
+ following: 'Ура! Ви тепер підписані на:'
+ post_follow:
+ close: Або, ви можете просто закрити вікно.
+ return: Перейти до профілю користувача
+ web: Перейти до вебу
title: Підписатися на %{acct}
datetime:
distance_in_words:
@@ -164,14 +461,22 @@ uk:
about_x_months: "%{count}міс"
about_x_years: "%{count}р"
almost_x_years: "%{count}р"
- half_a_minute: Тільки що
+ half_a_minute: Щойно
less_than_x_minutes: "%{count}хв"
- less_than_x_seconds: Тільки що
+ less_than_x_seconds: Щойно
over_x_years: "%{count}р"
x_days: "%{count}д"
x_minutes: "%{count}хв"
x_months: "%{count}міс"
x_seconds: "%{count}сек"
+ deletes:
+ bad_password_msg: Гарна спроба, гакери! Неправильний пароль
+ confirm_password: Введіть актуальний пароль щоб перевірити що ви це ви
+ description_html: Це
безвідворотно і назавжди видалить контент з вашого аккаунту та деактивує його. Ваше ім'я користувача буде залишатися зарезервованим для уникнення вашої деперсоналізації.
+ proceed: Видалити аккаунт
+ success_msg: Ваш аккаунт було успішно видалено
+ warning_html: Ми можемо гарантувати видалення контенти
лише з цього сайту. Контент, що був поширений залишає сліди. Сервери, що є офлайн та ті, що відписалися від наших оновлень не запишуть змін до своїх баз даних.
+ warning_title: Про доступність поширеного контенту
errors:
'403': У Вас немає доступу до перегляду даної сторінки.
'404': Сторінка, яку Ви шукали, не існує.
@@ -179,15 +484,43 @@ uk:
'422':
content: Перевірка безпеки не вдалася. Можливо, Ви блокуєте cookies?
title: Перевірка безпеки не вдалася.
+ '429': Забагато запитів
+ '500':
+ content: Пробачте, та щось пішло не так з нашого боку.
+ title: Ця сторінка неправильна
+ noscript_html: Для використання веб-застосунку Mastodon, будь-ласка увімкніть JavaScript. Якщо у вас немає такої можливості, скористайтесь одним із
нативних застосунків для Mastodon для вашої платформи.
exports:
+ archive_takeout:
+ date: Дата
+ download: Завантажити ваш архів
+ hint_html: Ви можете зробити запит на архів ваших
постів та вивантаженого медіа контенту. Завантажені дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів кожні 7 днів.
+ in_progress: Збираємо ваш архів...
+ request: Зробити запит на архів
+ size: Розмір
blocks: Список блокувань
csv: CSV
follows: Підписки
mutes: Список глушення
storage: Ваш медіаконтент
+ filters:
+ contexts:
+ home: Ваш фід
+ notifications: Сповіщення
+ public: Публічний фід
+ thread: Повідомлення
+ edit:
+ title: Редагувати фільтр
+ errors:
+ invalid_context: Контекст неправильний або не був наданий
+ invalid_irreversible: Незворотне фільтрування працює тільки в контексті свого фіду або сповіщень
+ index:
+ delete: Видалити
+ title: Фільтри
+ new:
+ title: Додати фільтр
followers:
domain: Домен
- explanation_html: Якщо Ви хочете бути впевнені в приватності Ваших статусів, Ви повинні мати чітке уявлення про те, хто на Вас підписаний.
Ваші приватні статусі відправляються усім інстанціям, на яких у Вас є підписники. Рекомендуємо видалити з підписників користувачів інстанцій, адміністрації чи програмному забезпеченню яких Ви не довіряєте.
+ explanation_html: Якщо Ви хочете бути впевнені в приватності Ваших статусів, Ви повинні мати чітке уявлення про те, хто на Вас підписаний.
Ваші приватні статусі відправляються усім сайтам, на яких у Вас є підписники. Рекомендуємо видалити з підписників користувачів інстанцій, адміністрації чи програмному забезпеченню яких Ви не довіряєте.
followers_count: Кількість підписників
lock_link: Закрийте акаунт
purge: Видалити з підписників
@@ -199,7 +532,6 @@ uk:
unlocked_warning_title: Ваш аккаунт не закритий для підписки
generic:
changes_saved_msg: Зміни успішно збережені!
- powered_by: працює на %{link}
save_changes: Зберегти зміни
validation_errors:
one: Щось тут не так! Будь ласка, ознайомтеся з помилкою нижче
@@ -212,103 +544,252 @@ uk:
following: Підписки
muting: Список глушення
upload: Завантажити
- landing_strip_html: "
%{name} - користувач на %{link_to_root_path}. Ви можете підписатися на нього/неї та спілкуватися з ним/нею, якщо у Вас є акаунт на будь-якій інстанції загальної мережі."
- landing_strip_signup_html: Якщо його у Вас немає, Ви можете
зареєструватися тут.
+ in_memoriam_html: Пам'ятник.
+ invites:
+ delete: Деактивувати
+ expired: Вийшов
+ expires_in:
+ '1800': 30 хвилин
+ '21600': 6 годин
+ '3600': 1 година
+ '43200': 12 годин
+ '604800': 1 тиждень
+ '86400': 1 день
+ expires_in_prompt: Ніколи
+ generate: Згенерувати
+ invited_by: 'Вас запросив(-ла):'
+ max_uses:
+ one: 1 використання
+ other: "%{count} використань"
+ max_uses_prompt: Без обмеження
+ prompt: Генеруйте та діліться посиланням з іншими для надання доступу до сайту
+ table:
+ expires_at: Час роботи
+ uses: Використання
+ title: Запросити людей
+ lists:
+ errors:
+ limit: Ви досягнули максимальної кількості списків
media_attachments:
validations:
images_and_video: Не можна додати відео до статусу з зображеннями
too_many: Не можна додати більше 4 файлів
+ migrations:
+ acct: username@domain нового аккаунту
+ currently_redirecting: 'Ваш профіль налаштований перенаправляти на:'
+ proceed: Зберегти
+ updated_msg: Переїзд вашого аккаунту успішно оновлений!
+ moderation:
+ title: Модерація
notification_mailer:
digest:
- body: 'Коротко про пропущене Вами на %{instance} з Вашого останнього входу %{since}:'
+ action: Показати усі сповіщення
+ body: Коротко про пропущене вами з Вашого останнього входу %{since}
mention: "%{name} згадав(-ла) Вас в:"
new_followers_summary:
few: У Вас з'явилось %{count} нових підписники! Чудово!
many: У Вас з'явилось %{count} нових підписників! Чудово!
- one: У Вас з'явився новий підписник! Ура!
- other: У Вас з'явилось %{count} нових підписників! Чудово!
+ one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура!
+ other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово!
subject:
few: "%{count} нові сповіщення з Вашого останнього входу \U0001F418"
many: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
one: "1 нове сповіщення з Вашого останнього входу \U0001F418"
other: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
+ title: Поки ви були відсутні...
favourite:
body: 'Ваш статус подобається %{name}:'
subject: Користувачу %{name} сподобався ваш статус
+ title: Нове вподобання
follow:
body: "%{name} тепер підписаний на вас!"
subject: "%{name} тепер підписаний(-а) на вас"
+ title: Новий підписник
follow_request:
+ action: Керувати запитами на підписку
body: "%{name} запитав Вас про підписку"
subject: "%{name} хоче підписатися на Вас"
+ title: Новий запит на підписку
mention:
- body: 'Ви були згадані %{name} в:'
- subject: Ви були згадані %{name}
+ action: Відповісти
+ body: 'Вас згадав(-ла) %{name} в:'
+ subject: Вас згадав(-ла) %{name}
+ title: Нова згадка
reblog:
body: 'Ваш статус було передмухнуто %{name}:'
subject: "%{name} передмухнув ваш статус"
+ title: Нове передмухування
number:
human:
decimal_units:
format: "%n%u"
units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
+ billion: млрд
+ million: млн
+ quadrillion: квдрл
+ thousand: тис
+ trillion: трлн
unit: ''
pagination:
+ newer: Новіше
next: Далі
prev: Назад
truncate: "…"
+ preferences:
+ languages: Мови
+ other: Інше
+ publishing: Публікація
+ web: Веб
remote_follow:
- acct: Введіть username@domain, звідки ви хочете підписатися
- missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився неудачою
- proceed: Продовжити підписку
+ acct: Введіть username@domain, яким ви хочете підписатися
+ missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився невдачею
+ no_account_html: Не маєте аккаунту? Не біда, ви можете
зареєструватися
+ proceed: Перейти до підписки
prompt: 'Ви хочете підписатися на:'
+ remote_unfollow:
+ error: Помилка
+ title: Заголовок
+ unfollowed: Відписані
+ sessions:
+ activity: Остання активність
+ browser: Браузер
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Невідомий браузер
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Активна сесія
+ description: "%{browser} на %{platform}"
+ explanation: Це веб-браузери, нині авторизовані до вашого аккаунту Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: невідома платформа
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Закінчити
+ revoke_success: Сесія успішно закінчена
+ title: Сесії
settings:
- authorized_apps: Авторизованные приложения
- back: Назад в Mastodon
+ authorized_apps: Авторизовані застосунки
+ back: Назад у Mastodon
+ delete: Видалення аккаунту
+ development: Розробка
edit_profile: Редагувати профіль
export: Експорт даних
followers: Авторизовані підписники
import: Імпорт
+ migrate: Міграція акаунту
+ notifications: Сповіщення
preferences: Налаштування
settings: Опції
- two_factor_authentication: Двофакторна аутентифікація
+ two_factor_authentication: Двофакторна авторизація
+ your_apps: Ваші затосунки
statuses:
- open_in_web: Відкрити в WWW
+ attached:
+ description: 'Прикріплено: %{attached}'
+ image:
+ one: "%{count} картинка"
+ other: "%{count} картинки"
+ video:
+ one: "%{count} відео"
+ other: "%{count} відео"
+ boosted_from_html: Просунуто від %{acct_link}
+ content_warning: 'Попередження про контент: %{warning}'
+ disallowed_hashtags:
+ one: 'містив заборонений хештеґ: %{tags}'
+ other: 'містив заборонені хештеґи: %{tags}'
+ language_detection: Автоматично визначати мову
+ open_in_web: Відкрити у вебі
over_character_limit: перевищено ліміт символів (%{max})
+ pin_errors:
+ limit: Ви вже закріпили максимальну кількість постів
+ ownership: Не можна закріпити чужий пост
+ private: Не можна закріпити непублічний пост
+ reblog: Не можна закріпити просунутий пост
show_more: Детальніше
+ title: '%{name}: "%{quote}"'
visibilities:
private: Для підписників
- private_long: Показувати тількои підписникам
+ private_long: Показувати тільки підписникам
public: Для всіх
public_long: Показувати всім
- unlisted: Приховувати зі стріок
+ unlisted: Приховувати зі стрічок
unlisted_long: Показувати всім, але не відображати в публічних стрічках
stream_entries:
- click_to_show: Показати
+ pinned: Закріплений пост
reblogged: передмухнув(-ла)
- sensitive_content: Непристойний контент
+ sensitive_content: Несприйнятливий контент
+ terms:
+ title: Умови використання та Політика приватності %{instance}
+ themes:
+ contrast: Висока контрасність
+ default: Mastodon
+ mastodon-light: Mastodon (світла)
time:
formats:
default: "%b %d, %Y, %H:%M"
two_factor_authentication:
- code_hint: Для підтверждення введіть код, згенерований додатком аутентифікатора
+ code_hint: Для підтверждення введіть код, згенерований застосунком аутентифікатора
description_html: При увімкненні
двофакторної аутентифікації, вхід буде вимагати від Вас використовування Вашого телефона, який згенерує вхідний код.
disable: Вимкнути
enable: Увімкнути
+ enabled: Двофакторна аутентифікація увімкнена
enabled_success: Двофакторна аутентифікація успішно увімкнена
generate_recovery_codes: Згенерувати коди відновлення
- instructions_html: "
Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-додатка на Вашому телефоні. Від цього моменту додаток буде генерувати коди, які буде необхідно ввести для входу."
- lost_recovery_codes: Коди відновлення дозволяють повернути доступ до акаунту у випадку втрати телефону. Якщо Ви втратили Ваші коди відновлення, Ви можете знову згенерувати їх тут. Ваші старі коди відновлення будуть анульовані.
+ instructions_html: "
Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-застосунку на Вашому телефоні. З цього моменту він буде генерувати коди, які буде необхідно ввести для входу."
+ lost_recovery_codes: Коди відновлення дозволяють повернути доступ до акаунту у випадку втрати телефону. Якщо Ви втратили Ваші коди відновлення, Ви можете знову згенерувати їх тут. Тоді ваші старі коди відновлення будуть анульовані.
manual_instructions: 'Якщо Ви не можете відсканувати QR-код та хочете ввести його вручну, секрет представлений тут відкритим текстом:'
+ recovery_codes: Запасні коди відновлення
recovery_codes_regenerated: Коди відновлення успішно згенеровані
- recovery_instructions_html: У випадку втрати доступу до Вашого телефона Ви можете використати один з кодів відновлення, вказаних нижче, щоб повернути доступ до акаунту. Тримайте коди відновлення у безпеці, наприклад, роздрукувавши їх та тримаючи їх з іншими важливими документами.
+ recovery_instructions_html: У випадку втрати доступу до вашого телефону ви можете використати один з кодів відновлення, вказаних нижче, щоб повернути доступ до акаунту. Тримайте коди відновлення у безпеці, наприклад, роздруйте їх та зберігайте їх з іншими важливими документами.
setup: Налаштувати
- wrong_code: Введений код неправильний! Чи правильно встановлені серверний час та час пристрою?
+ wrong_code: Введений код неправильний! Чи правильно встановлений час на сервері та пристрої?
+ user_mailer:
+ backup_ready:
+ explanation: Ви зробили запит на повний архів вашого аккаунту Mastodon. Він вже готовий для завантаження!
+ subject: Ваш архів готовий до завантаження
+ title: Винесення архіву
+ welcome:
+ edit_profile_action: Налаштувати профіль
+ edit_profile_step: Ви можете налаштувати профіль під себе завантаживши аватар, шпалери, змінивши відображуване ім'я тощо. Якщо ви захочете переглядати нових підписників до того, як вони зможуть підписатися на вас, ви можете заблокувати свій аккаунт.
+ explanation: Ось декілька порад для початку
+ final_action: Почати постити
+ final_step: 'Почність постити! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприкоал, у локальному фіді та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.'
+ full_handle: Ваше звернення
+ full_handle_hint: Те, що ви хочете сказати друзям, щоб вони могли написати вам або підписатися з інших сайтів.
+ review_preferences_action: Змінити налаштування
+ review_preferences_step: Переконайтеся у тому, що ви налаштували все необхідне, як от які e-mail повідомлення ви хочете отримувати, або який рівень приватності ви хочете встановити вашим постам за замовчуванням. Якщо хочете, ви можете увімкнути автоматичне програвання GIF анімацій.
+ subject: Ласкаво просимо до Mastodon
+ tip_bridge_html: Якщо ви прийшли до нас із Twitter, ви можете знайти ваших друзів на Mastodon, скориставшись
проміжним застосунком. Проте він працює тільки, якщо вони теж користуються проміжним застосунком!
+ tip_federated_timeline: Федерований фід є широким поглядом на мережу Mastodon. Але він включає лише людей, на яких підписані ваші сусіди по сайту, тому він не є повним.
+ tip_following: Ви автоматично підписані на адміністратора(-ів) сервера. Для того, щоб знайти ще цікавих людей, дослідіть локальний та федерований фіди.
+ tip_local_timeline: Локальний фід - це погляд згори на людей на %{instance}. Це ваші прямі сусіди!
+ tip_mobile_webapp: Якщо ваш мобільний браузер пропонує вам додати Mastodon на робочий стіл, ви можете отримувати push-сповіщення. Все може виглядати як нативний застосунок у багатьох речах.
+ tips: Поради
+ title: Ласкаво просимо, %{name}!
users:
- invalid_email: Введений email неправильний
+ invalid_email: Введена адреса e-mail неправильна
invalid_otp_token: Введено неправильний код
+ otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email}
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 1b741a7d6..b2f9fd01e 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -9,9 +9,6 @@ zh-CN:
contact: 联系方式
contact_missing: 未设定
contact_unavailable: 未公开
- description_headline: 关于 %{domain}
- domain_count_after: 个其它实例
- domain_count_before: 现已接入
extended_description_html: |
这里可以写一些规定
本站尚未设置详细介绍。
@@ -46,7 +43,6 @@ zh-CN:
people_who_follow: 关注 %{name} 的人
posts: 嘟文
posts_with_replies: 嘟文和回复
- remote_follow: 跨站关注
reserved_username: 此用户名已被保留
roles:
admin: 管理员
@@ -484,7 +480,6 @@ zh-CN:
unlocked_warning_title: 你的帐户未受到保护
generic:
changes_saved_msg: 更改保存成功!
- powered_by: 基于 %{link} 构建
save_changes: 保存更改
validation_errors:
one: 出错啦!检查一下下面出错的地方吧
@@ -518,8 +513,6 @@ zh-CN:
expires_at: 失效时间
uses: 已使用次数
title: 邀请用户
- landing_strip_html: "
%{name} 是一位来自 %{link_to_root_path} 的用户。如果你想关注他们或者与他们互动,你需要在任意一个 Mastodon 实例或与其兼容的网站上拥有一个帐户。"
- landing_strip_signup_html: 还没有这种帐户?你可以
在本站注册一个。
lists:
errors:
limit: 你所建立的列表数量已经达到上限
@@ -681,7 +674,6 @@ zh-CN:
unlisted: 不公开
unlisted_long: 所有人可见,但不会出现在公共时间轴上
stream_entries:
- click_to_show: 点击显示
pinned: 置顶嘟文
reblogged: 转嘟
sensitive_content: 敏感内容
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index a5e997536..ee7ca4443 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -9,9 +9,6 @@ zh-HK:
contact: 聯絡
contact_missing: 未設定
contact_unavailable: 未公開
- description_headline: 甚麼是 %{domain} ?
- domain_count_after: 個其他服務站
- domain_count_before: 已連接至
extended_description_html: |
這裡可以寫一些網站規則
本站未有詳細介紹
@@ -46,7 +43,6 @@ zh-HK:
people_who_follow: 關注 %{name} 的人
posts: 文章
posts_with_replies: 文章和回覆
- remote_follow: 跨站關注
reserved_username: 此用戶名已被保留
roles:
admin: 管理員
@@ -488,7 +484,6 @@ zh-HK:
unlocked_warning_title: 你的用戶目前為「公共」
generic:
changes_saved_msg: 已成功儲存修改。
- powered_by: 網站由 %{link} 開發
save_changes: 儲存修改
validation_errors:
one: 提交的資料有問題
@@ -524,8 +519,6 @@ zh-HK:
expires_at: 失效時間
uses: 已使用次數
title: 邀請用戶
- landing_strip_html: "
%{name} 是一個在 %{link_to_root_path} 的用戶。只要你有任何 Mastodon 服務站、或者聯盟網站的用戶,便可以跨站關注此站用戶,或者與他們互動。"
- landing_strip_signup_html: 如果你沒有這類用戶,歡迎在
此處登記。
lists:
errors:
limit: 你所建立的列表數量已經達到上限
@@ -692,7 +685,6 @@ zh-HK:
unlisted: 公開,但不在公共時間軸顯示
unlisted_long: 所有人都能看到,但不在公共時間軸(本站時間軸、跨站時間軸)顯示
stream_entries:
- click_to_show: 點擊顯示
pinned: 置頂文章
reblogged: 轉推
sensitive_content: 敏感內容
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index e2b376a3f..0a18dc990 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -9,9 +9,6 @@ zh-TW:
contact: 聯絡我們
contact_missing: 未設定
contact_unavailable: 未公開
- description_headline: 關於 %{domain}?
- domain_count_after: 個站點相連
- domain_count_before: 與其他
extended_description_html: |
這裡可以寫一些網站規則
本站點未有詳細介紹
@@ -46,7 +43,6 @@ zh-TW:
people_who_follow: 關注 %{name} 的人
posts: 嘟文
posts_with_replies: 嘟文與回覆
- remote_follow: 跨站關注
reserved_username: 此用戶名已被保留
roles:
admin: 管理員
@@ -488,7 +484,6 @@ zh-TW:
unlocked_warning_title: 你的帳戶是公開的
generic:
changes_saved_msg: 已成功儲存修改!
- powered_by: 網站由 %{link} 開發
save_changes: 儲存修改
validation_errors:
one: 送出的資料有問題
@@ -524,8 +519,6 @@ zh-TW:
expires_at: 失效時間
uses: 已使用次數
title: 邀請使用者
- landing_strip_html: "
%{name} 是一個在 %{link_to_root_path} 的使用者。只要您有任何 Mastodon 站點、或者聯盟站點的帳戶,便可以跨站關注此站使用者,或者與他們互動。"
- landing_strip_signup_html: 如果您沒有這些帳戶,歡迎在
這裡註冊。
lists:
errors:
limit: 你所建立的列表數量已經達到上限
@@ -685,7 +678,6 @@ zh-TW:
unlisted: 公開,但不在公共時間軸顯示
unlisted_long: 所有人都能看到,但不會出現在公共時間軸上
stream_entries:
- click_to_show: 點選顯示
pinned: 置頂嘟文
reblogged: 轉嘟
sensitive_content: 敏感內容
diff --git a/config/navigation.rb b/config/navigation.rb
index 3f2e913c6..99d227f11 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -33,9 +33,11 @@ SimpleNavigation::Configuration.run do |navigation|
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? }
end
- primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), proc { current_user.admin? ? edit_admin_settings_url : admin_custom_emojis_url }, if: proc { current_user.staff? } do |admin|
+ 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? }
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? }
diff --git a/config/routes.rb b/config/routes.rb
index fd26b4aa7..0e54157dc 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -23,6 +23,7 @@ Rails.application.routes.draw do
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
get 'intent', to: 'intents#show'
+ get 'custom.css', to: 'custom_css#show', as: :custom_css
devise_scope :user do
get '/invite/:invite_code', to: 'auth/registrations#new', as: :public_invite
@@ -74,6 +75,9 @@ Rails.application.routes.draw do
get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status
get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status
+ get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction
+ post '/interact/:id', to: 'remote_interaction#create'
+
namespace :settings do
resource :profile, only: [:show, :update]
resource :preferences, only: [:show, :update]
@@ -120,16 +124,30 @@ Rails.application.routes.draw do
# Remote follow
resource :remote_unfollow, only: [:create]
- resource :authorize_follow, only: [:show, :create]
+ resource :authorize_interaction, only: [:show, :create]
resource :share, only: [:show, :create]
namespace :admin do
+ get '/dashboard', to: 'dashboard#index'
+
resources :subscriptions, only: [:index]
resources :domain_blocks, only: [:index, :new, :create, :show, :destroy]
resources :email_domain_blocks, only: [:index, :new, :create, :destroy]
resources :action_logs, only: [:index]
resource :settings, only: [:edit, :update]
- resources :invites, only: [:index, :create, :destroy]
+
+ resources :invites, only: [:index, :create, :destroy] do
+ collection do
+ post :deactivate_all
+ end
+ end
+
+ resources :relays, only: [:index, :new, :create, :destroy] do
+ member do
+ post :enable
+ post :disable
+ end
+ end
resources :instances, only: [:index] do
collection do
@@ -157,7 +175,7 @@ Rails.application.routes.draw do
resource :change_email, only: [:show, :update]
resource :reset, only: [:create]
resource :silence, only: [:create, :destroy]
- resource :suspension, only: [:create, :destroy]
+ resource :suspension, only: [:new, :create, :destroy]
resources :statuses, only: [:index, :create, :update, :destroy]
resource :confirmation, only: [:create] do
@@ -189,13 +207,7 @@ Rails.application.routes.draw do
resources :account_moderation_notes, only: [:create, :destroy]
end
- authenticate :user, lambda { |u| u.admin? } do
- get '/admin', to: redirect('/admin/settings/edit', status: 302)
- end
-
- authenticate :user, lambda { |u| u.moderator? } do
- get '/admin', to: redirect('/admin/reports', status: 302)
- end
+ get '/admin', to: redirect('/admin/dashboard', status: 302)
namespace :api do
# PubSubHubbub outgoing subscriptions
@@ -250,13 +262,14 @@ Rails.application.routes.draw do
get '/search', to: 'search#index', as: :search
- resources :follows, only: [:create]
- resources :media, only: [:create, :update]
- resources :blocks, only: [:index]
- resources :mutes, only: [:index]
- resources :favourites, only: [:index]
- resources :reports, only: [:index, :create]
- resources :filters, only: [:index, :create, :show, :update, :destroy]
+ resources :follows, only: [:create]
+ resources :media, only: [:create, :update]
+ resources :blocks, only: [:index]
+ resources :mutes, only: [:index]
+ resources :favourites, only: [:index]
+ resources :reports, only: [:index, :create]
+ resources :filters, only: [:index, :create, :show, :update, :destroy]
+ resources :endorsements, only: [:index]
namespace :apps do
get :verify_credentials, to: 'credentials#show'
@@ -306,6 +319,9 @@ Rails.application.routes.draw do
post :mute
post :unmute
end
+
+ resource :pin, only: :create, controller: 'accounts/pins'
+ post :unpin, to: 'accounts/pins#destroy'
end
resources :lists, only: [:index, :create, :show, :update, :destroy] do
diff --git a/config/settings.yml b/config/settings.yml
index 190f6afcd..399f25a9a 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -8,6 +8,7 @@
#
defaults: &defaults
site_title: Mastodon
+ site_short_description: ''
site_description: ''
site_extended_description: ''
site_terms: ''
diff --git a/config/webpack/development.js b/config/webpack/development.js
index 12670f5cd..d54d919ec 100644
--- a/config/webpack/development.js
+++ b/config/webpack/development.js
@@ -16,6 +16,8 @@ if (process.env.VAGRANT) {
}
module.exports = merge(sharedConfig, {
+ mode: 'development',
+
devtool: 'cheap-module-eval-source-map',
stats: {
diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js
index 88d94c684..bad09ceb4 100644
--- a/config/webpack/loaders/sass.js
+++ b/config/webpack/loaders/sass.js
@@ -1,15 +1,22 @@
-const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { env } = require('../configuration.js');
module.exports = {
- test: /\.(scss|sass|css)$/i,
- use: ExtractTextPlugin.extract({
- fallback: 'style-loader',
- use: [
- { loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
- { loader: 'postcss-loader', options: { sourceMap: true } },
- 'resolve-url-loader',
- 'sass-loader',
- ],
- }),
+ test: /\.s?css$/i,
+ use: [
+ MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ minimize: env.NODE_ENV === 'production',
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: true,
+ },
+ },
+ 'sass-loader',
+ ],
};
diff --git a/config/webpack/production.js b/config/webpack/production.js
index 037a76a59..27a78108b 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -1,14 +1,14 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const webpack = require('webpack');
const merge = require('webpack-merge');
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const sharedConfig = require('./shared.js');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const OfflinePlugin = require('offline-plugin');
const { publicPath } = require('./configuration.js');
const path = require('path');
-const { URL } = require('whatwg-url');
+const { URL } = require('url');
let compressionAlgorithm;
try {
@@ -23,8 +23,8 @@ try {
let attachmentHost;
if (process.env.S3_ENABLED === 'true') {
- if (process.env.S3_CLOUDFRONT_HOST) {
- attachmentHost = process.env.S3_CLOUDFRONT_HOST;
+ if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) {
+ attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST;
} else {
attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`;
}
@@ -36,6 +36,8 @@ if (process.env.S3_ENABLED === 'true') {
}
module.exports = merge(sharedConfig, {
+ mode: 'production',
+
output: {
filename: '[name]-[chunkhash].js',
chunkFilename: '[name]-[chunkhash].js',
@@ -44,19 +46,28 @@ module.exports = merge(sharedConfig, {
devtool: 'source-map', // separate sourcemap file, suitable for production
stats: 'normal',
+ optimization: {
+ minimize: true,
+ minimizer: [
+ new UglifyJsPlugin({
+ sourceMap: true,
+
+ uglifyOptions: {
+ mangle: true,
+
+ compress: {
+ warnings: false,
+ },
+
+ output: {
+ comments: false,
+ },
+ },
+ }),
+ ],
+ },
+
plugins: [
- new webpack.optimize.UglifyJsPlugin({
- sourceMap: true,
- mangle: true,
-
- compress: {
- warnings: false,
- },
-
- output: {
- comments: false,
- },
- }),
new CompressionPlugin({
asset: '[path].gz[query]',
algorithm: compressionAlgorithm,
diff --git a/config/webpack/shared.js b/config/webpack/shared.js
index 50fa48175..a1572665c 100644
--- a/config/webpack/shared.js
+++ b/config/webpack/shared.js
@@ -1,9 +1,9 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
const webpack = require('webpack');
-const { basename, dirname, join, relative, resolve, sep } = require('path');
+const { basename, dirname, join, relative, resolve } = require('path');
const { sync } = require('glob');
-const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const ManifestPlugin = require('webpack-manifest-plugin');
const extname = require('path-complete-extname');
const { env, settings, themes, output, loadersDir } = require('./configuration.js');
@@ -39,6 +39,26 @@ module.exports = {
publicPath: output.publicPath,
},
+ optimization: {
+ runtimeChunk: {
+ name: 'common',
+ },
+ splitChunks: {
+ cacheGroups: {
+ default: false,
+ vendors: false,
+ common: {
+ name: 'common',
+ chunks: 'all',
+ minChunks: 2,
+ minSize: 0,
+ test: /^(?!.*[\\\/]node_modules[\\\/]react-intl[\\\/]).+$/,
+ },
+ },
+ },
+ occurrenceOrder: true,
+ },
+
module: {
rules: sync(join(loadersDir, '*.js')).map(loader => require(loader)),
},
@@ -52,25 +72,13 @@ module.exports = {
resource.request = resource.request.replace(/^history/, 'history/es');
}
),
- new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css'),
+ new MiniCssExtractPlugin({
+ filename: env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css',
+ }),
new ManifestPlugin({
publicPath: output.publicPath,
writeToFileEmit: true,
- }),
- new webpack.optimize.CommonsChunkPlugin({
- name: 'common',
- minChunks: (module, count) => {
- const reactIntlPathRegexp = new RegExp(`node_modules\\${sep}react-intl`);
-
- if (module.resource && reactIntlPathRegexp.test(module.resource)) {
- // skip react-intl because it's useless to put in the common chunk,
- // e.g. because "shared" modules between zh-TW and zh-CN will never
- // be loaded together
- return false;
- }
-
- return count >= 2;
- },
+ filter: file => !file.isAsset || file.isModuleAsset,
}),
],
diff --git a/config/webpack/test.js b/config/webpack/test.js
index 6b2b073bb..8b56eb92f 100644
--- a/config/webpack/test.js
+++ b/config/webpack/test.js
@@ -3,4 +3,6 @@
const merge = require('webpack-merge');
const sharedConfig = require('./shared.js');
-module.exports = merge(sharedConfig, {});
+module.exports = merge(sharedConfig, {
+ mode: 'development',
+});
diff --git a/db/migrate/20180711152640_create_relays.rb b/db/migrate/20180711152640_create_relays.rb
new file mode 100644
index 000000000..8762f473a
--- /dev/null
+++ b/db/migrate/20180711152640_create_relays.rb
@@ -0,0 +1,12 @@
+class CreateRelays < ActiveRecord::Migration[5.2]
+ def change
+ create_table :relays do |t|
+ t.string :inbox_url, default: '', null: false
+ t.boolean :enabled, default: false, null: false, index: true
+
+ t.string :follow_activity_id
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20180808175627_create_account_pins.rb b/db/migrate/20180808175627_create_account_pins.rb
new file mode 100644
index 000000000..43d8185be
--- /dev/null
+++ b/db/migrate/20180808175627_create_account_pins.rb
@@ -0,0 +1,12 @@
+class CreateAccountPins < ActiveRecord::Migration[5.2]
+ def change
+ create_table :account_pins do |t|
+ t.belongs_to :account, foreign_key: { on_delete: :cascade }
+ t.belongs_to :target_account, foreign_key: { on_delete: :cascade, to_table: :accounts }
+
+ t.timestamps
+ end
+
+ add_index :account_pins, [:account_id, :target_account_id], unique: true
+ end
+end
diff --git a/db/migrate/20180812123222_change_relays_enabled.rb b/db/migrate/20180812123222_change_relays_enabled.rb
new file mode 100644
index 000000000..c4fd8179b
--- /dev/null
+++ b/db/migrate/20180812123222_change_relays_enabled.rb
@@ -0,0 +1,19 @@
+class ChangeRelaysEnabled < ActiveRecord::Migration[5.2]
+ def up
+ # The relays table is supposed to be very small,
+ # single-digit number of rows, so this should be fine
+ safety_assured do
+ add_column :relays, :state, :integer, default: 0, null: false
+
+ # At the time of this migration, no relays reject anyone, so if
+ # there are enabled ones, they are accepted
+ execute 'UPDATE relays SET state = 2 WHERE enabled = true'
+ remove_column :relays, :enabled
+ end
+ end
+
+ def down
+ remove_column :relays, :state
+ add_column :relays, :enabled, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20180812162710_create_status_stats.rb b/db/migrate/20180812162710_create_status_stats.rb
new file mode 100644
index 000000000..d4da36fe7
--- /dev/null
+++ b/db/migrate/20180812162710_create_status_stats.rb
@@ -0,0 +1,12 @@
+class CreateStatusStats < ActiveRecord::Migration[5.2]
+ def change
+ create_table :status_stats do |t|
+ t.belongs_to :status, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true }
+ t.bigint :replies_count, null: false, default: 0
+ t.bigint :reblogs_count, null: false, default: 0
+ t.bigint :favourites_count, null: false, default: 0
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20180812173710_copy_status_stats.rb b/db/migrate/20180812173710_copy_status_stats.rb
new file mode 100644
index 000000000..850aa9c13
--- /dev/null
+++ b/db/migrate/20180812173710_copy_status_stats.rb
@@ -0,0 +1,22 @@
+class CopyStatusStats < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ safety_assured do
+ Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses|
+ execute <<-SQL.squish
+ INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at)
+ SELECT id, reblogs_count, favourites_count, created_at, updated_at
+ FROM statuses
+ WHERE id IN (#{statuses.map(&:id).join(', ')})
+ ON CONFLICT (status_id) DO UPDATE
+ SET reblogs_count = EXCLUDED.reblogs_count, favourites_count = EXCLUDED.favourites_count
+ SQL
+ end
+ end
+ end
+
+ def down
+ # Nothing
+ end
+end
diff --git a/db/migrate/20180820232245_add_foreign_key_indices.rb b/db/migrate/20180820232245_add_foreign_key_indices.rb
new file mode 100644
index 000000000..e346c1f5b
--- /dev/null
+++ b/db/migrate/20180820232245_add_foreign_key_indices.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class AddForeignKeyIndices < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ add_index :follows, :target_account_id, algorithm: :concurrently
+ add_index :blocks, :target_account_id, algorithm: :concurrently
+ add_index :mutes, :target_account_id, algorithm: :concurrently
+ add_index :notifications, :from_account_id, algorithm: :concurrently
+ add_index :accounts, :moved_to_account_id, algorithm: :concurrently
+ add_index :statuses, :in_reply_to_account_id, algorithm: :concurrently
+ add_index :session_activations, :access_token_id, algorithm: :concurrently
+ add_index :oauth_access_grants, :resource_owner_id, algorithm: :concurrently
+ end
+end
diff --git a/db/post_migrate/.gitkeep b/db/post_migrate/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb b/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb
new file mode 100644
index 000000000..f3ae772c7
--- /dev/null
+++ b/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class CopyStatusStatsCleanup < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ safety_assured do
+ remove_column :statuses, :reblogs_count, :integer, default: 0, null: false
+ remove_column :statuses, :favourites_count, :integer, default: 0, null: false
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 2e46c3fb8..f3b06f7c0 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: 2018_08_14_171349) do
+ActiveRecord::Schema.define(version: 2018_08_20_232245) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -33,6 +33,16 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["target_account_id"], name: "index_account_moderation_notes_on_target_account_id"
end
+ create_table "account_pins", force: :cascade do |t|
+ t.bigint "account_id"
+ t.bigint "target_account_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["account_id", "target_account_id"], name: "index_account_pins_on_account_id_and_target_account_id", unique: true
+ t.index ["account_id"], name: "index_account_pins_on_account_id"
+ t.index ["target_account_id"], name: "index_account_pins_on_target_account_id"
+ end
+
create_table "accounts", force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
@@ -78,6 +88,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.string "actor_type"
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"
t.index ["uri"], name: "index_accounts_on_uri"
t.index ["url"], name: "index_accounts_on_url"
end
@@ -112,6 +123,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "target_account_id", null: false
t.string "uri"
t.index ["account_id", "target_account_id"], name: "index_blocks_on_account_id_and_target_account_id", unique: true
+ t.index ["target_account_id"], name: "index_blocks_on_target_account_id"
end
create_table "conversation_mutes", force: :cascade do |t|
@@ -199,6 +211,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.boolean "show_reblogs", default: true, null: false
t.string "uri"
t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true
+ t.index ["target_account_id"], name: "index_follows_on_target_account_id"
end
create_table "identities", id: :serial, force: :cascade do |t|
@@ -287,6 +300,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
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
create_table "notifications", force: :cascade do |t|
@@ -299,6 +313,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true
t.index ["account_id", "id"], name: "index_notifications_on_account_id_and_id", order: { id: :desc }
t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type"
+ t.index ["from_account_id"], name: "index_notifications_on_from_account_id"
end
create_table "oauth_access_grants", force: :cascade do |t|
@@ -310,6 +325,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.string "scopes"
t.bigint "application_id", null: false
t.bigint "resource_owner_id", null: false
+ t.index ["resource_owner_id"], name: "index_oauth_access_grants_on_resource_owner_id"
t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
end
@@ -372,6 +388,14 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["status_id", "preview_card_id"], name: "index_preview_cards_statuses_on_status_id_and_preview_card_id"
end
+ create_table "relays", force: :cascade do |t|
+ t.string "inbox_url", default: "", null: false
+ t.string "follow_activity_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.integer "state", default: 0, null: false
+ end
+
create_table "report_notes", force: :cascade do |t|
t.text "content", null: false
t.bigint "report_id", null: false
@@ -405,6 +429,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "access_token_id"
t.bigint "user_id", null: false
t.bigint "web_push_subscription_id"
+ t.index ["access_token_id"], name: "index_session_activations_on_access_token_id"
t.index ["session_id"], name: "index_session_activations_on_session_id", unique: true
t.index ["user_id"], name: "index_session_activations_on_user_id"
end
@@ -439,6 +464,16 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["account_id", "status_id"], name: "index_status_pins_on_account_id_and_status_id", unique: true
end
+ create_table "status_stats", force: :cascade do |t|
+ t.bigint "status_id", null: false
+ t.bigint "replies_count", default: 0, null: false
+ t.bigint "reblogs_count", default: 0, null: false
+ t.bigint "favourites_count", default: 0, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true
+ end
+
create_table "statuses", id: :bigint, default: -> { "timestamp_id('statuses'::text)" }, force: :cascade do |t|
t.string "uri"
t.text "text", default: "", null: false
@@ -451,8 +486,6 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.integer "visibility", default: 0, null: false
t.text "spoiler_text", default: "", null: false
t.boolean "reply", default: false, null: false
- t.integer "favourites_count", default: 0, null: false
- t.integer "reblogs_count", default: 0, null: false
t.string "language"
t.bigint "conversation_id"
t.boolean "local"
@@ -460,6 +493,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "application_id"
t.bigint "in_reply_to_account_id"
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20180106", order: { id: :desc }
+ t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id"
t.index ["reblog_of_id", "account_id"], name: "index_statuses_on_reblog_of_id_and_account_id"
t.index ["uri"], name: "index_statuses_on_uri", unique: true
@@ -567,6 +601,8 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
add_foreign_key "account_domain_blocks", "accounts", name: "fk_206c6029bd", on_delete: :cascade
add_foreign_key "account_moderation_notes", "accounts"
add_foreign_key "account_moderation_notes", "accounts", column: "target_account_id"
+ add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade
+ add_foreign_key "account_pins", "accounts", on_delete: :cascade
add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify
add_foreign_key "admin_action_logs", "accounts", on_delete: :cascade
add_foreign_key "backups", "users", on_delete: :nullify
@@ -611,6 +647,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
add_foreign_key "session_activations", "users", name: "fk_e5fda67334", on_delete: :cascade
add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade
add_foreign_key "status_pins", "statuses", on_delete: :cascade
+ add_foreign_key "status_stats", "statuses", on_delete: :cascade
add_foreign_key "statuses", "accounts", column: "in_reply_to_account_id", name: "fk_c7fa917661", on_delete: :nullify
add_foreign_key "statuses", "accounts", name: "fk_9bda1543f7", on_delete: :cascade
add_foreign_key "statuses", "statuses", column: "in_reply_to_id", on_delete: :nullify
diff --git a/docker-compose.yml b/docker-compose.yml
index c54c73e44..3b50f6d31 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -46,8 +46,6 @@ services:
- redis
# - es
volumes:
- - ./public/assets:/mastodon/public/assets
- - ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
streaming:
@@ -78,7 +76,6 @@ services:
- external_network
- internal_network
volumes:
- - ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
## Uncomment to enable federation with tor instances along with adding the following ENV variables
## http_proxy=http://privoxy:8118
diff --git a/lib/cli.rb b/lib/cli.rb
new file mode 100644
index 000000000..60bff4147
--- /dev/null
+++ b/lib/cli.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'thor'
+require_relative 'mastodon/media_cli'
+require_relative 'mastodon/emoji_cli'
+require_relative 'mastodon/accounts_cli'
+module Mastodon
+ class CLI < Thor
+ desc 'media SUBCOMMAND ...ARGS', 'Manage media files'
+ subcommand 'media', Mastodon::MediaCLI
+
+ desc 'emoji SUBCOMMAND ...ARGS', 'Manage custom emoji'
+ subcommand 'emoji', Mastodon::EmojiCLI
+
+ desc 'accounts SUBCOMMAND ...ARGS', 'Manage accounts'
+ subcommand 'accounts', Mastodon::AccountsCLI
+ end
+end
diff --git a/lib/devise/ldap_authenticatable.rb b/lib/devise/ldap_authenticatable.rb
index ef786fbb7..534c7a851 100644
--- a/lib/devise/ldap_authenticatable.rb
+++ b/lib/devise/ldap_authenticatable.rb
@@ -24,7 +24,8 @@ module Devise
connect_timeout: 10
)
- if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: "(#{Devise.ldap_uid}=#{email})", password: password))
+ filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, email: email)
+ if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: password))
user = User.ldap_get_user(user_info.first)
success!(user)
else
diff --git a/lib/generators/post_deployment_migration_generator.rb b/lib/generators/post_deployment_migration_generator.rb
new file mode 100644
index 000000000..798c01b88
--- /dev/null
+++ b/lib/generators/post_deployment_migration_generator.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'rails/generators'
+
+module Rails
+ class PostDeploymentMigrationGenerator < Rails::Generators::NamedBase
+ def create_migration_file
+ timestamp = Time.zone.now.strftime('%Y%m%d%H%M%S')
+
+ template 'migration.rb', "db/post_migrate/#{timestamp}_#{file_name}.rb"
+ end
+
+ def migration_class_name
+ file_name.camelize
+ end
+ end
+end
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
new file mode 100644
index 000000000..83b69549d
--- /dev/null
+++ b/lib/mastodon/accounts_cli.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require 'rubygems/package'
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+module Mastodon
+ class AccountsCLI < Thor
+ option :all, type: :boolean
+ desc 'rotate [USERNAME]', 'Generate and broadcast new keys'
+ long_desc <<-LONG_DESC
+ Generate and broadcast new RSA keys as part of security
+ maintenance.
+
+ With the --all option, all local accounts will be subject
+ to the rotation. Otherwise, and by default, only a single
+ account specified by the USERNAME argument will be
+ processed.
+ LONG_DESC
+ def rotate(username = nil)
+ if options[:all]
+ processed = 0
+ delay = 0
+
+ Account.local.without_suspended.find_in_batches do |accounts|
+ accounts.each do |account|
+ rotate_keys_for_account(account, delay)
+ processed += 1
+ say('.', :green, false)
+ end
+
+ delay += 5.minutes
+ end
+
+ say
+ say("OK, rotated keys for #{processed} accounts", :green)
+ elsif username.present?
+ rotate_keys_for_account(Account.find_local(username))
+ say('OK', :green)
+ else
+ say('No account(s) given', :red)
+ end
+ end
+
+ private
+
+ def rotate_keys_for_account(account, delay = 0)
+ old_key = account.private_key
+ new_key = OpenSSL::PKey::RSA.new(2048).to_pem
+ account.update(private_key: new_key)
+ ActivityPub::UpdateDistributionWorker.perform_in(delay, account.id, sign_with: old_key)
+ end
+ end
+end
diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb
new file mode 100644
index 000000000..8c4d9731c
--- /dev/null
+++ b/lib/mastodon/cli_helper.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+dev_null = Logger.new('/dev/null')
+
+Rails.logger = dev_null
+ActiveRecord::Base.logger = dev_null
+HttpLog.configuration.logger = dev_null
+Paperclip.options[:log] = false
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
new file mode 100644
index 000000000..0a773c771
--- /dev/null
+++ b/lib/mastodon/emoji_cli.rb
@@ -0,0 +1,81 @@
+# frozen_string_literal: true
+
+require 'rubygems/package'
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+# rubocop:disable Rails/Output
+
+module Mastodon
+ class EmojiCLI < Thor
+ option :prefix
+ option :suffix
+ option :overwrite, type: :boolean
+ option :unlisted, type: :boolean
+ desc 'import PATH', 'Import emoji from a TAR archive at PATH'
+ long_desc <<-LONG_DESC
+ Imports custom emoji from a TAR archive specified by PATH.
+
+ Existing emoji will be skipped unless the --overwrite option
+ is provided, in which case they will be overwritten.
+
+ With the --prefix option, a prefix can be added to all
+ generated shortcodes. Likewise, the --suffix option controls
+ the suffix of all shortcodes.
+
+ With the --unlisted option, the processed emoji will not be
+ visible in the emoji picker (but still usable via other means)
+ LONG_DESC
+ def import(path)
+ imported = 0
+ skipped = 0
+ failed = 0
+
+ Gem::Package::TarReader.new(Zlib::GzipReader.open(path)) do |tar|
+ tar.each do |entry|
+ next unless entry.file? && entry.full_name.end_with?('.png')
+
+ shortcode = [options[:prefix], File.basename(entry.full_name, '.*'), options[:suffix]].compact.join
+ custom_emoji = CustomEmoji.local.find_by(shortcode: shortcode)
+
+ if custom_emoji && !options[:overwrite]
+ skipped += 1
+ next
+ end
+
+ custom_emoji ||= CustomEmoji.new(shortcode: shortcode, domain: nil)
+ custom_emoji.image = StringIO.new(entry.read)
+ custom_emoji.image_file_name = File.basename(entry.full_name)
+ custom_emoji.visible_in_picker = !options[:unlisted]
+
+ if custom_emoji.save
+ imported += 1
+ else
+ failed += 1
+ say('Failure/Error: ', :red)
+ say(entry.full_name)
+ say(' ' + custom_emoji.errors[:image].join(', '), :red)
+ end
+ end
+ end
+
+ puts
+ say("Imported #{imported}, skipped #{skipped}, failed to import #{failed}", color(imported, skipped, failed))
+ end
+
+ private
+
+ def color(green, _yellow, red)
+ if !green.zero? && red.zero?
+ :green
+ elsif red.zero?
+ :yellow
+ else
+ :red
+ end
+ end
+ end
+end
+
+# rubocop:enable Rails/Output
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
new file mode 100644
index 000000000..ee28270da
--- /dev/null
+++ b/lib/mastodon/media_cli.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+# rubocop:disable Rails/Output
+
+module Mastodon
+ class MediaCLI < Thor
+ option :days, type: :numeric, default: 7
+ option :background, type: :boolean, default: false
+ desc 'remove', 'Remove remote media files'
+ long_desc <<-DESC
+ Removes locally cached copies of media attachments from other servers.
+
+ The --days option specifies how old media attachments have to be before
+ they are removed. It defaults to 7 days.
+
+ With the --background option, instead of deleting the files sequentially,
+ they will be queued into Sidekiq and the command will exit as soon as
+ possible. In Sidekiq they will be processed with higher concurrency, but
+ it may impact other operations of the Mastodon server, and it may overload
+ the underlying file storage.
+ DESC
+ def remove
+ time_ago = options[:days].days.ago
+ queued = 0
+ processed = 0
+
+ MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments|
+ if options[:background]
+ queued += media_attachments.size
+ Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id))
+ else
+ media_attachments.each do |m|
+ Maintenance::UncacheMediaWorker.new.perform(m)
+ say('.', :green, false)
+ processed += 1
+ end
+ end
+ end
+
+ say
+
+ if options[:background]
+ say("Scheduled the deletion of #{queued} media attachments", :green)
+ else
+ say("Removed #{processed} media attachments", :green)
+ end
+ end
+ end
+end
+
+# rubocop:enable Rails/Output
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 9806ed38f..84025c4f6 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,11 +9,11 @@ module Mastodon
end
def minor
- 4
+ 5
end
def patch
- 5
+ 0
end
def pre
@@ -21,7 +21,7 @@ module Mastodon
end
def flags
- ''
+ 'rc1'
end
def to_a
@@ -32,8 +32,12 @@ module Mastodon
[to_a.join('.'), flags].join
end
+ def repository
+ 'chinwagsocial/mastodon'
+ end
+
def source_base_url
- 'https://github.com/chinwagsocial/mastodon'
+ "https://github.com/#{repository}"
end
# specify git tag or commit hash here
diff --git a/lib/paperclip/gif_transcoder.rb b/lib/paperclip/gif_transcoder.rb
index 62787983c..cbab6fd99 100644
--- a/lib/paperclip/gif_transcoder.rb
+++ b/lib/paperclip/gif_transcoder.rb
@@ -5,14 +5,7 @@ module Paperclip
# to convert animated gifs to webm
class GifTranscoder < Paperclip::Processor
def make
- num_frames = identify('-format %n :file', file: file.path).to_i
-
- unless options[:style] == :original && num_frames > 1
- tmp_file = Paperclip::TempfileFactory.new.generate(attachment.instance.file_file_name)
- tmp_file << file.read
- tmp_file.flush
- return tmp_file
- end
+ return File.open(@file.path) unless needs_convert?
final_file = Paperclip::Transcoder.make(file, options, attachment)
@@ -22,5 +15,12 @@ module Paperclip
final_file
end
+
+ private
+
+ def needs_convert?
+ num_frames = identify('-format %n :file', file: file.path).to_i
+ options[:style] == :original && num_frames > 1
+ end
end
end
diff --git a/lib/paperclip/lazy_thumbnail.rb b/lib/paperclip/lazy_thumbnail.rb
index aafa21343..ea675a5bf 100644
--- a/lib/paperclip/lazy_thumbnail.rb
+++ b/lib/paperclip/lazy_thumbnail.rb
@@ -5,8 +5,14 @@ module Paperclip
def make
return File.open(@file.path) unless needs_convert?
- min_side = [@current_geometry.width, @current_geometry.height].min
- options[:geometry] = "#{min_side.to_i}x#{min_side.to_i}#" if @target_geometry.square? && min_side < @target_geometry.width
+ if options[:geometry]
+ min_side = [@current_geometry.width, @current_geometry.height].min.to_i
+ options[:geometry] = "#{min_side}x#{min_side}#" if @target_geometry.square? && min_side < @target_geometry.width
+ elsif options[:pixels]
+ width = Math.sqrt(options[:pixels] * (@current_geometry.width.to_f / @current_geometry.height.to_f)).round.to_i
+ height = Math.sqrt(options[:pixels] * (@current_geometry.height.to_f / @current_geometry.width.to_f)).round.to_i
+ options[:geometry] = "#{width}x#{height}>"
+ end
Paperclip::Thumbnail.make(file, options, attachment)
end
@@ -18,7 +24,8 @@ module Paperclip
end
def needs_different_geometry?
- !@target_geometry.nil? && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height
+ (options[:geometry] && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height) ||
+ (options[:pixels] && @current_geometry.width * @current_geometry.height > options[:pixels])
end
def needs_different_format?
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index 32039c31d..b76e90131 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -18,7 +18,7 @@ def each_schema_load_environment
# needing to do the same, and we can't even use the same method
# to do it.
- if Rails.env == 'development'
+ if Rails.env.development?
test_conf = ActiveRecord::Base.configurations['test']
if test_conf['database']&.present?
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index de8c0bb86..649a22a0b 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -222,7 +222,7 @@ namespace :mastodon do
end
if prompt.yes?('Do you want to access the uploaded files from your own domain?')
- env['S3_CLOUDFRONT_HOST'] = prompt.ask('Domain for uploaded files:') do |q|
+ env['S3_ALIAS_HOST'] = prompt.ask('Domain for uploaded files:') do |q|
q.required true
q.default "files.#{env['LOCAL_DOMAIN']}"
q.modify :strip
@@ -280,14 +280,14 @@ namespace :mastodon do
begin
ActionMailer::Base.smtp_settings = {
- :port => env['SMTP_PORT'],
- :address => env['SMTP_SERVER'],
- :user_name => env['SMTP_LOGIN'].presence,
- :password => env['SMTP_PASSWORD'].presence,
- :domain => env['LOCAL_DOMAIN'],
- :authentication => env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
- :openssl_verify_mode => env['SMTP_OPENSSL_VERIFY_MODE'],
- :enable_starttls_auto => true,
+ port: env['SMTP_PORT'],
+ address: env['SMTP_SERVER'],
+ user_name: env['SMTP_LOGIN'].presence,
+ password: env['SMTP_PASSWORD'].presence,
+ domain: env['LOCAL_DOMAIN'],
+ authentication: env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
+ openssl_verify_mode: env['SMTP_OPENSSL_VERIFY_MODE'],
+ enable_starttls_auto: true,
}
ActionMailer::Base.default_options = {
@@ -326,13 +326,11 @@ namespace :mastodon do
if prompt.yes?('Prepare the database now?')
prompt.say 'Running `RAILS_ENV=production rails db:setup` ...'
- prompt.say "\n"
+ prompt.say "\n\n"
if cmd.run!({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }, :rails, 'db:setup').failure?
- prompt.say "\n"
prompt.error 'That failed! Perhaps your configuration is not right'
else
- prompt.say "\n"
prompt.ok 'Done!'
end
end
@@ -343,13 +341,11 @@ namespace :mastodon do
if prompt.yes?('Compile the assets now?')
prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...'
- prompt.say "\n"
+ prompt.say "\n\n"
if cmd.run!({ RAILS_ENV: 'production' }, :rails, 'assets:precompile').failure?
- prompt.say "\n"
prompt.error 'That failed! Maybe you need swap space?'
else
- prompt.say "\n"
prompt.say 'Done!'
end
end
@@ -394,12 +390,6 @@ namespace :mastodon do
end
end
- desc 'Execute daily tasks (deprecated)'
- task :daily do
- # No-op
- # All of these tasks are now executed via sidekiq-scheduler
- end
-
desc 'Turn a user into an admin, identified by the USERNAME environment variable'
task make_admin: :environment do
include RoutingHelper
@@ -494,26 +484,22 @@ namespace :mastodon do
end
namespace :media do
- desc 'Removes media attachments that have not been assigned to any status for longer than a day (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'Remove media attachments attributed to silenced accounts'
task remove_silenced: :environment do
- MediaAttachment.where(account: Account.silenced).select(:id).find_in_batches do |media_attachments|
+ nb_media_attachments = 0
+ MediaAttachment.where(account: Account.silenced).select(:id).reorder(nil).find_in_batches do |media_attachments|
+ nb_media_attachments += media_attachments.length
Maintenance::DestroyMediaWorker.push_bulk(media_attachments.map(&:id))
end
+ puts "Scheduled the deletion of #{nb_media_attachments} media attachments"
end
desc 'Remove cached remote media attachments that are older than NUM_DAYS. By default 7 (week)'
task remove_remote: :environment do
- time_ago = ENV.fetch('NUM_DAYS') { 7 }.to_i.days.ago
-
- MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).find_in_batches do |media_attachments|
- Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id))
- end
+ puts 'Please use `./bin/tootctl media remove --help` directly'.colorize(:yellow)
+ require_relative '../mastodon/media_cli'
+ cli = Mastodon::MediaCLI.new([], days: (ENV['NUM_DAYS'] || 7).to_i)
+ cli.invoke(:remove)
end
desc 'Set unknown attachment type for remote-only attachments'
@@ -527,10 +513,13 @@ namespace :mastodon do
task redownload_avatars: :environment do
accounts = Account.remote
accounts = accounts.where(domain: ENV['DOMAIN']) if ENV['DOMAIN'].present?
+ nb_accounts = 0
- accounts.select(:id).find_in_batches do |accounts_batch|
+ accounts.select(:id).reorder(nil).find_in_batches do |accounts_batch|
+ nb_accounts += accounts_batch.length
Maintenance::RedownloadAccountMediaWorker.push_bulk(accounts_batch.map(&:id))
end
+ puts "Scheduled the download of avatars/headers for #{nb_accounts} remote users"
end
end
@@ -539,21 +528,9 @@ namespace :mastodon do
task clear: :environment do
Pubsubhubbub::UnsubscribeWorker.push_bulk(Account.remote.without_followers.where.not(subscription_expires_at: nil).pluck(:id))
end
-
- desc 'Re-subscribes to soon expiring PuSH subscriptions (deprecated)'
- task refresh: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
end
namespace :feeds do
- desc 'Clear timelines of inactive users (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'Clear all timelines without regenerating them'
task clear_all: :environment do
Redis.current.keys('feed:*').each { |key| Redis.current.del(key) }
@@ -561,27 +538,13 @@ namespace :mastodon do
desc 'Generates home timelines for users who logged in in the past two weeks'
task build: :environment do
- User.active.select(:id, :account_id).find_in_batches do |users|
+ User.active.select(:id, :account_id).reorder(nil).find_in_batches do |users|
RegenerationWorker.push_bulk(users.map(&:account_id))
end
end
end
- namespace :emails do
- desc 'Send out digest e-mails (deprecated)'
- task digest: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
- end
-
namespace :users do
- desc 'Clear out unconfirmed users (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'List e-mails of all admin users'
task admins: :environment do
puts 'Admin user emails:'
@@ -748,10 +711,10 @@ namespace :mastodon do
pastel = Pastel.new
duplicate_masters.each do |account|
- puts pastel.yellow("First of their name: ") + pastel.bold(account.username) + " (#{admin_account_url(account.id)})"
+ puts pastel.yellow('First of their name: ') + pastel.bold(account.username) + " (#{admin_account_url(account.id)})"
Account.where('lower(username) = ?', account.username.downcase).where.not(id: account.id).each do |duplicate|
- puts " " + pastel.red("Duplicate: ") + admin_account_url(duplicate.id)
+ puts ' ' + pastel.red('Duplicate: ') + admin_account_url(duplicate.id)
end
end
end
diff --git a/lib/templates/rails/post_deployment_migration/migration.rb b/lib/templates/rails/post_deployment_migration/migration.rb
new file mode 100644
index 000000000..503205b84
--- /dev/null
+++ b/lib/templates/rails/post_deployment_migration/migration.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class <%= migration_class_name %> < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ end
+end
diff --git a/package.json b/package.json
index 5b39f015e..b4d81d603 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "mastodon",
"license": "AGPL-3.0-or-later",
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"scripts": {
"postversion": "git push --tags",
@@ -21,29 +21,29 @@
"private": true,
"dependencies": {
"array-includes": "^3.0.3",
- "autoprefixer": "^7.1.6",
+ "autoprefixer": "^8.6.5",
"axios": "~0.16.2",
- "babel-core": "^6.25.0",
- "babel-loader": "^7.1.1",
- "babel-plugin-lodash": "^3.3.2",
+ "babel-core": "^6.26.3",
+ "babel-loader": "^7.1.5",
+ "babel-plugin-lodash": "^3.3.4",
"babel-plugin-preval": "^1.6.1",
- "babel-plugin-react-intl": "^2.3.1",
+ "babel-plugin-react-intl": "^2.4.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-class-properties": "^6.24.1",
- "babel-plugin-transform-decorators-legacy": "^1.3.4",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-plugin-transform-decorators-legacy": "^1.3.5",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-plugin-transform-react-inline-elements": "^6.22.0",
"babel-plugin-transform-react-jsx-self": "^6.22.0",
"babel-plugin-transform-react-jsx-source": "^6.22.0",
- "babel-plugin-transform-react-remove-prop-types": "^0.4.10",
+ "babel-plugin-transform-react-remove-prop-types": "^0.4.13",
"babel-plugin-transform-runtime": "^6.23.0",
- "babel-preset-env": "^1.6.1",
+ "babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"classnames": "^2.2.5",
- "compression-webpack-plugin": "^1.0.1",
- "cross-env": "^5.1.1",
- "css-loader": "^0.28.4",
+ "compression-webpack-plugin": "^1.1.11",
+ "cross-env": "^5.1.4",
+ "css-loader": "^0.28.11",
"detect-passive-events": "^1.0.2",
"dotenv": "^4.0.0",
"emoji-mart": "Gargron/emoji-mart#build",
@@ -51,8 +51,7 @@
"escape-html": "^1.0.3",
"exif-js": "^2.3.0",
"express": "^4.16.2",
- "extract-text-webpack-plugin": "^3.0.2",
- "file-loader": "^0.11.2",
+ "file-loader": "^1.1.11",
"font-awesome": "^4.7.0",
"glob": "^7.1.1",
"http-link-header": "^0.8.0",
@@ -63,27 +62,28 @@
"intl-messageformat": "^2.2.0",
"intl-relativeformat": "^2.1.0",
"is-nan": "^1.2.1",
- "js-yaml": "^3.9.0",
- "lodash": "^4.17.4",
+ "js-yaml": "^3.11.0",
+ "lodash": "^4.17.5",
"mark-loader": "^0.1.6",
"marky": "^1.2.0",
+ "mini-css-extract-plugin": "^0.4.1",
"mkdirp": "^0.5.1",
- "node-sass": "^4.7.2",
+ "node-sass": "^4.9.2",
"npm-run-all": "^4.1.2",
"npmlog": "^4.1.2",
"object-assign": "^4.1.1",
"object-fit-images": "^3.2.3",
"object.values": "^1.0.4",
- "offline-plugin": "^4.8.3",
- "path-complete-extname": "^0.1.0",
+ "offline-plugin": "^5.0.5",
+ "path-complete-extname": "^1.0.0",
"pg": "^6.4.0",
- "postcss-loader": "^2.0.9",
+ "postcss-loader": "^2.1.6",
"postcss-object-fit-images": "^1.1.2",
- "postcss-smart-import": "^0.7.5",
- "precss": "^2.0.0",
+ "postcss-smart-import": "^0.7.6",
+ "precss": "^3.1.2",
"prop-types": "^15.5.10",
"punycode": "^2.1.0",
- "rails-ujs": "^5.1.2",
+ "rails-ujs": "^5.2.0",
"react": "^16.3.0",
"react-dom": "^16.3.0",
"react-hotkeys": "^0.10.0",
@@ -98,34 +98,35 @@
"react-router-dom": "^4.1.1",
"react-router-scroll-4": "^1.0.0-beta.1",
"react-sparklines": "^1.7.0",
- "react-swipeable-views": "^0.12.3",
+ "react-swipeable-views": "0.12.13",
"react-textarea-autosize": "^5.2.1",
"react-toggle": "^4.0.1",
"redis": "^2.7.1",
"redux": "^3.7.1",
"redux-immutable": "^4.0.0",
"redux-thunk": "^2.2.0",
+ "rellax": "^1.6.2",
"requestidlecallback": "^0.3.0",
"reselect": "^3.0.1",
- "resolve-url-loader": "^2.2.0",
"rimraf": "^2.6.1",
- "sass-loader": "^6.0.6",
+ "sass-loader": "^7.0.3",
"stringz": "^0.3.0",
- "style-loader": "^0.19.0",
+ "style-loader": "^0.21.0",
"substring-trie": "^1.0.2",
"throng": "^4.0.0",
"tiny-queue": "^0.2.1",
+ "uglifyjs-webpack-plugin": "^1.2.7",
"uuid": "^3.1.0",
- "uws": "^8.14.0",
- "webpack": "^3.9.1",
- "webpack-bundle-analyzer": "^2.9.1",
- "webpack-manifest-plugin": "^1.2.1",
- "webpack-merge": "^4.1.1",
- "websocket.js": "^0.1.12",
- "whatwg-url": "^6.4.1"
+ "uws": "10.148.0",
+ "webpack": "^4.16.0",
+ "webpack-bundle-analyzer": "^2.13.1",
+ "webpack-cli": "^3.0.8",
+ "webpack-manifest-plugin": "^2.0.3",
+ "webpack-merge": "^4.1.3",
+ "websocket.js": "^0.1.12"
},
"devDependencies": {
- "babel-eslint": "^8.2.3",
+ "babel-eslint": "^8.2.6",
"enzyme": "^3.2.0",
"enzyme-adapter-react-16": "^1.1.0",
"eslint": "^4.19.1",
@@ -135,9 +136,9 @@
"eslint-plugin-react": "^7.8.2",
"jest": "^21.2.1",
"raf": "^3.4.0",
- "react-intl-translations-manager": "^5.0.0",
+ "react-intl-translations-manager": "^5.0.3",
"react-test-renderer": "^16.2.0",
- "webpack-dev-server": "^2.9.5",
+ "webpack-dev-server": "^3.1.4",
"yargs": "^8.0.2"
},
"optionalDependencies": {
diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb
index 2089b3b16..03dddd8c1 100644
--- a/spec/controllers/about_controller_spec.rb
+++ b/spec/controllers/about_controller_spec.rb
@@ -8,10 +8,6 @@ RSpec.describe AboutController, type: :controller do
get :show
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'assigns @instance_presenter' do
expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter
end
@@ -26,10 +22,6 @@ RSpec.describe AboutController, type: :controller do
get :more
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'assigns @instance_presenter' do
expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter
end
@@ -44,10 +36,6 @@ RSpec.describe AboutController, type: :controller do
get :terms
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'returns http success' do
expect(response).to have_http_status(200)
end
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index e50c02a72..bcc789c57 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -68,21 +68,6 @@ describe Admin::ReportsController do
end
end
- describe 'with an outcome of `suspend`' do
- it 'suspends the reported account' do
- report = Fabricate(:report)
- allow(Admin::SuspensionWorker).to receive(:perform_async)
-
- put :update, params: { id: report, outcome: 'suspend' }
- expect(response).to redirect_to(admin_reports_path)
- report.reload
- expect(report.action_taken_by_account).to eq user.account
- expect(report.action_taken).to eq true
- expect(Admin::SuspensionWorker).
- to have_received(:perform_async).with(report.target_account_id)
- end
- end
-
describe 'with an outsome of `silence`' do
it 'silences the reported account' do
report = Fabricate(:report)
diff --git a/spec/controllers/admin/suspensions_controller_spec.rb b/spec/controllers/admin/suspensions_controller_spec.rb
index ddfc938d1..babb1ed96 100644
--- a/spec/controllers/admin/suspensions_controller_spec.rb
+++ b/spec/controllers/admin/suspensions_controller_spec.rb
@@ -12,7 +12,7 @@ describe Admin::SuspensionsController do
account = Fabricate(:account, suspended: false)
expect(Admin::SuspensionWorker).to receive(:perform_async).with(account.id)
- post :create, params: { account_id: account.id }
+ post :create, params: { account_id: account.id, form_admin_suspension_confirmation: { acct: account.acct } }
expect(response).to redirect_to(admin_accounts_path)
end
diff --git a/spec/controllers/api/salmon_controller_spec.rb b/spec/controllers/api/salmon_controller_spec.rb
index 5f01f8073..8ce4913a5 100644
--- a/spec/controllers/api/salmon_controller_spec.rb
+++ b/spec/controllers/api/salmon_controller_spec.rb
@@ -15,8 +15,7 @@ RSpec.describe Api::SalmonController, type: :controller do
describe 'POST #update' do
context 'with valid post data' do
before do
- request.env['RAW_POST_DATA'] = File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
end
it 'contains XML in the request body' do
@@ -42,8 +41,7 @@ RSpec.describe Api::SalmonController, type: :controller do
context 'with empty post data' do
before do
- request.env['RAW_POST_DATA'] = ''
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: ''
end
it 'returns http client error' do
@@ -56,8 +54,7 @@ RSpec.describe Api::SalmonController, type: :controller do
service = double(call: false)
allow(VerifySalmonService).to receive(:new).and_return(service)
- request.env['RAW_POST_DATA'] = File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
end
it 'returns http client error' do
diff --git a/spec/controllers/api/subscriptions_controller_spec.rb b/spec/controllers/api/subscriptions_controller_spec.rb
index 48eb1fc64..b46971a54 100644
--- a/spec/controllers/api/subscriptions_controller_spec.rb
+++ b/spec/controllers/api/subscriptions_controller_spec.rb
@@ -53,9 +53,8 @@ RSpec.describe Api::SubscriptionsController, type: :controller do
stub_request(:any, "https://mastodon.social/users/Gargron").to_return(status: 404)
request.env['HTTP_X_HUB_SIGNATURE'] = "sha1=#{OpenSSL::HMAC.hexdigest('sha1', 'abc', feed)}"
- request.env['RAW_POST_DATA'] = feed
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: feed
end
it 'returns http success' do
diff --git a/spec/controllers/api/v1/mutes_controller_spec.rb b/spec/controllers/api/v1/mutes_controller_spec.rb
index f9603b7ff..a2b814a69 100644
--- a/spec/controllers/api/v1/mutes_controller_spec.rb
+++ b/spec/controllers/api/v1/mutes_controller_spec.rb
@@ -3,19 +3,61 @@ require 'rails_helper'
RSpec.describe Api::V1::MutesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
- let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:mutes') }
+ let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:scopes) { 'read:mutes' }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- before do
- Fabricate(:mute, account: user.account, hide_notifications: false)
- allow(controller).to receive(:doorkeeper_token) { token }
- end
+ before { allow(controller).to receive(:doorkeeper_token) { token } }
describe 'GET #index' do
- it 'returns http success' do
+ it 'limits according to limit parameter' do
+ 2.times.map { Fabricate(:mute, account: user.account) }
get :index, params: { limit: 1 }
+ expect(body_as_json.size).to eq 1
+ end
+ it 'queries mutes in range according to max_id' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+
+ get :index, params: { max_id: mutes[1] }
+
+ expect(body_as_json.size).to eq 1
+ expect(body_as_json[0][:id]).to eq mutes[0].target_account_id.to_s
+ end
+
+ it 'queries mutes in range according to since_id' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+
+ get :index, params: { since_id: mutes[0] }
+
+ expect(body_as_json.size).to eq 1
+ expect(body_as_json[0][:id]).to eq mutes[1].target_account_id.to_s
+ end
+
+ it 'sets pagination header for next path' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+ get :index, params: { limit: 1, since_id: mutes[0] }
+ expect(response.headers['Link'].find_link(['rel', 'next']).href).to eq api_v1_mutes_url(limit: 1, max_id: mutes[1])
+ end
+
+ it 'sets pagination header for previous path' do
+ mute = Fabricate(:mute, account: user.account)
+ get :index
+ expect(response.headers['Link'].find_link(['rel', 'prev']).href).to eq api_v1_mutes_url(since_id: mute)
+ end
+
+ it 'returns http success' do
+ get :index
expect(response).to have_http_status(200)
end
+
+ context 'with wrong scopes' do
+ let(:scopes) { 'write:mutes' }
+
+ it 'returns http forbidden' do
+ get :index
+ expect(response).to have_http_status(403)
+ end
+ end
end
end
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index c6c78d3f7..d158625e6 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -92,6 +92,39 @@ describe ApplicationController, type: :controller do
end
end
+ describe 'helper_method :current_theme' do
+ it 'returns "default" when theme wasn\'t changed in admin settings' do
+ allow(Setting).to receive(:default_settings).and_return({'theme' => 'default'})
+
+ expect(controller.view_context.current_theme).to eq 'default'
+ end
+
+ it 'returns instances\'s theme when user is not signed in' do
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'contrast'
+ end
+
+ it 'returns instances\'s default theme when user didn\'t set theme' do
+ current_user = Fabricate(:user)
+ sign_in current_user
+
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'contrast'
+ end
+
+ it 'returns user\'s theme when it is set' do
+ current_user = Fabricate(:user)
+ current_user.settings['theme'] = 'mastodon-light'
+ sign_in current_user
+
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'mastodon-light'
+ end
+ end
+
context 'ActionController::RoutingError' do
subject do
routes.draw { get 'routing_error' => 'anonymous#routing_error' }
diff --git a/spec/controllers/authorize_follows_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb
similarity index 71%
rename from spec/controllers/authorize_follows_controller_spec.rb
rename to spec/controllers/authorize_interactions_controller_spec.rb
index 52971c724..81fd9ceb7 100644
--- a/spec/controllers/authorize_follows_controller_spec.rb
+++ b/spec/controllers/authorize_interactions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AuthorizeFollowsController do
+describe AuthorizeInteractionsController do
render_views
describe 'GET #show' do
@@ -39,19 +39,19 @@ describe AuthorizeFollowsController do
expect(service).to have_received(:call).with('missing@hostname')
end
- it 'sets account from url' do
+ it 'sets resource from url' do
account = Account.new
service = double
- allow(FetchRemoteAccountService).to receive(:new).and_return(service)
+ allow(ResolveURLService).to receive(:new).and_return(service)
allow(service).to receive(:call).with('http://example.com').and_return(account)
get :show, params: { acct: 'http://example.com' }
expect(response).to have_http_status(200)
- expect(assigns(:account)).to eq account
+ expect(assigns(:resource)).to eq account
end
- it 'sets account from acct uri' do
+ it 'sets resource from acct uri' do
account = Account.new
service = double
allow(ResolveAccountService).to receive(:new).and_return(service)
@@ -60,7 +60,7 @@ describe AuthorizeFollowsController do
get :show, params: { acct: 'acct:found@hostname' }
expect(response).to have_http_status(200)
- expect(assigns(:account)).to eq account
+ expect(assigns(:resource)).to eq account
end
end
end
@@ -75,8 +75,8 @@ describe AuthorizeFollowsController do
end
describe 'when signed in' do
- let(:user) { Fabricate(:user) }
- let(:account) { Fabricate(:account, user: user) }
+ let!(:user) { Fabricate(:user) }
+ let!(:account) { user.account }
before do
sign_in(user)
@@ -84,25 +84,26 @@ describe AuthorizeFollowsController do
it 'shows error when account not found' do
service = double
- allow(FollowService).to receive(:new).and_return(service)
- allow(service).to receive(:call).with(account, 'user@hostname').and_return(nil)
+
+ allow(ResolveAccountService).to receive(:new).and_return(service)
+ allow(service).to receive(:call).with('user@hostname').and_return(nil)
post :create, params: { acct: 'acct:user@hostname' }
- expect(service).to have_received(:call).with(account, 'user@hostname')
expect(response).to render_template(:error)
end
it 'follows account when found' do
target_account = Fabricate(:account)
- result_account = double(target_account: target_account)
service = double
- allow(FollowService).to receive(:new).and_return(service)
- allow(service).to receive(:call).with(account, 'user@hostname').and_return(result_account)
+
+ allow(ResolveAccountService).to receive(:new).and_return(service)
+ allow(service).to receive(:call).with('user@hostname').and_return(target_account)
post :create, params: { acct: 'acct:user@hostname' }
- expect(service).to have_received(:call).with(account, 'user@hostname')
+ expect(service).to have_received(:call).with('user@hostname')
+ expect(account.following?(target_account)).to be true
expect(response).to render_template(:success)
end
end
diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb
index 64648621e..3daf1fc4e 100644
--- a/spec/controllers/concerns/signature_verification_spec.rb
+++ b/spec/controllers/concerns/signature_verification_spec.rb
@@ -105,7 +105,7 @@ describe ApplicationController, type: :controller do
end
it 'returns nil when body has been tampered' do
- request.headers['RAW_POST_DATA'] = 'doo doo doo'
+ post :success, body: 'doo doo doo'
expect(controller.signed_request_account).to be_nil
end
end
diff --git a/spec/controllers/intents_controller_spec.rb b/spec/controllers/intents_controller_spec.rb
index 3dde7f835..ddfd5ea36 100644
--- a/spec/controllers/intents_controller_spec.rb
+++ b/spec/controllers/intents_controller_spec.rb
@@ -13,7 +13,7 @@ RSpec.describe IntentsController, type: :controller do
context 'when host is follow' do
let(:uri) { 'web+mastodon://follow?uri=test' }
- it { is_expected.to redirect_to authorize_follow_path(acct: 'test') }
+ it { is_expected.to redirect_to authorize_interaction_path(uri: 'test') }
end
context 'when host is share' do
diff --git a/spec/fabricators/account_pin_fabricator.rb b/spec/fabricators/account_pin_fabricator.rb
new file mode 100644
index 000000000..c0f8b8afb
--- /dev/null
+++ b/spec/fabricators/account_pin_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:account_pin) do
+ account nil
+ target_account nil
+end
diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb
new file mode 100644
index 000000000..2c9df4ad3
--- /dev/null
+++ b/spec/fabricators/relay_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:relay) do
+ inbox_url "https://example.com/inbox"
+ enabled true
+end
diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb
new file mode 100644
index 000000000..9c67fd404
--- /dev/null
+++ b/spec/fabricators/status_stat_fabricator.rb
@@ -0,0 +1,6 @@
+Fabricator(:status_stat) do
+ status_id nil
+ replies_count ""
+ reblogs_count ""
+ favourites_count ""
+end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index ac54f1f70..3ccd96f44 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -17,7 +17,7 @@ describe ApplicationHelper do
end
end
- describe 'add_rtl_body_class' do
+ describe 'locale_direction' do
around do |example|
current_locale = I18n.locale
example.run
@@ -26,22 +26,22 @@ describe ApplicationHelper do
it 'adds rtl body class if locale is Arabic' do
I18n.locale = :ar
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'adds rtl body class if locale is Farsi' do
I18n.locale = :fa
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'adds rtl if locale is Hebrew' do
I18n.locale = :he
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'does not add rtl if locale is Thai' do
I18n.locale = :th
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes'
+ expect(helper.locale_direction).to_not eq 'rtl'
end
end
diff --git a/spec/helpers/stream_entries_helper_spec.rb b/spec/helpers/stream_entries_helper_spec.rb
index 1de6691ba..845b9974e 100644
--- a/spec/helpers/stream_entries_helper_spec.rb
+++ b/spec/helpers/stream_entries_helper_spec.rb
@@ -58,13 +58,14 @@ RSpec.describe StreamEntriesHelper, type: :helper do
expect(acct).to eq '@user@foreign_server.com'
end
- it 'is the shortname for non embedded local accounts' do
+ it 'is fully qualified for non embedded local accounts' do
+ allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain')
set_not_embedded_view
account = Account.new(domain: nil, username: 'user')
acct = helper.acct(account)
- expect(acct).to eq '@user'
+ expect(acct).to eq '@user@local_domain'
end
end
diff --git a/spec/lib/activitypub/activity/undo_spec.rb b/spec/lib/activitypub/activity/undo_spec.rb
index e01c5e03e..9545e1f46 100644
--- a/spec/lib/activitypub/activity/undo_spec.rb
+++ b/spec/lib/activitypub/activity/undo_spec.rb
@@ -52,6 +52,32 @@ RSpec.describe ActivityPub::Activity::Undo do
end
end
+ context 'with Accept' do
+ let(:recipient) { Fabricate(:account) }
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Accept',
+ actor: ActivityPub::TagManager.instance.uri_for(sender),
+ object: 'follow-to-revoke',
+ }
+ end
+
+ before do
+ recipient.follow!(sender, uri: 'follow-to-revoke')
+ end
+
+ it 'deletes follow from recipient to sender' do
+ subject.perform
+ expect(recipient.following?(sender)).to be false
+ end
+
+ it 'creates a follow request from recipient to sender' do
+ subject.perform
+ expect(recipient.requested?(sender)).to be true
+ end
+ end
+
context 'with Block' do
let(:recipient) { Fabricate(:account) }
diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb
index d17026511..d00d2a0e6 100644
--- a/spec/lib/language_detector_spec.rb
+++ b/spec/lib/language_detector_spec.rb
@@ -57,7 +57,7 @@ describe LanguageDetector do
end
it 'detects spanish language' do
- string = 'Obtener un Hola y bienvenidos a Mastodon'
+ string = 'Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon'
result = described_class.instance.detect(string, account_without_user_locale)
expect(result).to eq :es
@@ -86,7 +86,7 @@ describe LanguageDetector do
account = double(user_locale: 'fr')
result = described_class.instance.detect('', account)
- expect(result).to eq :fr
+ expect(result).to eq nil
end
it 'uses nil when account is present but has no locale' do
diff --git a/spec/models/account_pin_spec.rb b/spec/models/account_pin_spec.rb
new file mode 100644
index 000000000..4f226b127
--- /dev/null
+++ b/spec/models/account_pin_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe AccountPin, type: :model do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index c50791bcd..ec01026db 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -618,10 +618,10 @@ RSpec.describe Account, type: :model do
expect(account).not_to model_have_error_on_field(:username)
end
- it 'is valid even if the username doesn\'t only contains letters, numbers and underscores' do
+ it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
account.valid?
- expect(account).not_to model_have_error_on_field(:username)
+ expect(account).to model_have_error_on_field(:username)
end
it 'is valid even if the username is longer then 30 characters' do
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 6daa46145..277dcc526 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -48,17 +48,17 @@ describe Export do
describe 'total_follows' do
it 'returns the total number of the followed accounts' do
target_accounts.each(&account.method(:follow!))
- expect(Export.new(account).total_follows).to eq 2
+ expect(Export.new(account.reload).total_follows).to eq 2
end
it 'returns the total number of the blocked accounts' do
target_accounts.each(&account.method(:block!))
- expect(Export.new(account).total_blocks).to eq 2
+ expect(Export.new(account.reload).total_blocks).to eq 2
end
it 'returns the total number of the muted accounts' do
target_accounts.each(&account.method(:mute!))
- expect(Export.new(account).total_mutes).to eq 2
+ expect(Export.new(account.reload).total_mutes).to eq 2
end
end
end
diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb
index 43175d852..f221973b6 100644
--- a/spec/models/follow_spec.rb
+++ b/spec/models/follow_spec.rb
@@ -37,4 +37,20 @@ RSpec.describe Follow, type: :model do
expect(a[1]).to eq follow0
end
end
+
+ describe 'revoke_request!' do
+ let(:follow) { Fabricate(:follow, account: account, target_account: target_account) }
+ let(:account) { Fabricate(:account) }
+ let(:target_account) { Fabricate(:account) }
+
+ it 'revokes the follow relation' do
+ follow.revoke_request!
+ expect(account.following?(target_account)).to be false
+ end
+
+ it 'creates a follow request' do
+ follow.revoke_request!
+ expect(account.requested?(target_account)).to be true
+ end
+ end
end
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index d2230b6d0..cb1cee518 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -129,9 +129,9 @@ RSpec.describe MediaAttachment, type: :model do
expect(media.file.meta["original"]["width"]).to eq 600
expect(media.file.meta["original"]["height"]).to eq 400
expect(media.file.meta["original"]["aspect"]).to eq 1.5
- expect(media.file.meta["small"]["width"]).to eq 400
- expect(media.file.meta["small"]["height"]).to eq 267
- expect(media.file.meta["small"]["aspect"]).to eq 400.0/267
+ expect(media.file.meta["small"]["width"]).to eq 490
+ expect(media.file.meta["small"]["height"]).to eq 327
+ expect(media.file.meta["small"]["aspect"]).to eq 490.0/327
end
end
diff --git a/spec/models/relay_spec.rb b/spec/models/relay_spec.rb
new file mode 100644
index 000000000..12dc0f20f
--- /dev/null
+++ b/spec/models/relay_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe Relay, type: :model do
+end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index b3e475d99..9d8670129 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -182,6 +182,27 @@ RSpec.describe Status, type: :model do
reblog.destroy
expect(subject.reblogs_count).to eq 0
end
+
+ it 'does not fail when original is deleted before reblog' do
+ reblog = Fabricate(:status, account: bob, reblog: subject)
+ expect(subject.reblogs_count).to eq 1
+ expect { subject.destroy }.to_not raise_error
+ expect(Status.find_by(id: reblog.id)).to be_nil
+ end
+ end
+
+ describe '#replies_count' do
+ it 'is the number of replies' do
+ reply = Fabricate(:status, account: bob, thread: subject)
+ expect(subject.replies_count).to eq 1
+ end
+
+ it 'is decremented when reply is removed' do
+ reply = Fabricate(:status, account: bob, thread: subject)
+ expect(subject.replies_count).to eq 1
+ reply.destroy
+ expect(subject.replies_count).to eq 0
+ end
end
describe '#favourites_count' do
@@ -552,17 +573,6 @@ RSpec.describe Status, type: :model do
expect(results).to include(es_status)
end
end
-
- context 'where that account is silenced' do
- it 'includes statuses from other accounts that are silenced' do
- @account.update(silenced: true)
- other_silenced_account = Fabricate(:account, silenced: true)
- other_status = Fabricate(:status, account: other_silenced_account)
-
- results = Status.as_public_timeline(@account)
- expect(results).to include(other_status)
- end
- end
end
end
diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb
new file mode 100644
index 000000000..5e9351aff
--- /dev/null
+++ b/spec/models/status_stat_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe StatusStat, type: :model do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 93a6c26fb..015e90edc 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -512,7 +512,7 @@ RSpec.describe User, type: :model do
context 'when user is confirmed' do
let(:confirmed_at) { Time.zone.now }
- it { is_expected.to be false }
+ it { is_expected.to be true }
end
context 'when user is not confirmed' do
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index 673de5233..671080f1d 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -29,7 +29,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results
end
end
@@ -41,7 +41,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(accounts: [account])
end
end
@@ -53,7 +53,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(statuses: [status])
end
end
diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb
index fd303a9d5..8a5bd3301 100644
--- a/spec/services/suspend_account_service_spec.rb
+++ b/spec/services/suspend_account_service_spec.rb
@@ -2,6 +2,11 @@ require 'rails_helper'
RSpec.describe SuspendAccountService, type: :service do
describe '#call' do
+ before do
+ stub_request(:post, "https://alice.com/inbox").to_return(status: 201)
+ stub_request(:post, "https://bob.com/inbox").to_return(status: 201)
+ end
+
subject do
-> { described_class.new.call(account) }
end
@@ -14,6 +19,8 @@ RSpec.describe SuspendAccountService, type: :service do
let!(:active_relationship) { Fabricate(:follow, account: account) }
let!(:passive_relationship) { Fabricate(:follow, target_account: account) }
let!(:subscription) { Fabricate(:subscription, account: account) }
+ let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) }
+ let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) }
it 'deletes associated records' do
is_expected.to change {
@@ -29,5 +36,11 @@ RSpec.describe SuspendAccountService, type: :service do
].map(&:count)
}.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0])
end
+
+ it 'sends a delete actor activity to all known inboxes' do
+ subject.call
+ expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once
+ expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once
+ end
end
end
diff --git a/spec/views/about/_contact.html.haml_spec.rb b/spec/views/about/_contact.html.haml_spec.rb
deleted file mode 100644
index 25ba15794..000000000
--- a/spec/views/about/_contact.html.haml_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe 'about/_contact.html.haml' do
- describe 'the contact account', without_verify_partial_doubles: true do
- before do
- allow(view).to receive(:display_name).and_return('Display Name!')
- end
-
- it 'shows info when account is present' do
- account = Account.new(username: 'admin')
- contact = double(contact_account: account, site_contact_email: '')
- render 'about/contact', contact: contact
-
- expect(rendered).to have_content('@admin')
- end
-
- it 'does not show info when account is missing' do
- contact = double(contact_account: nil, site_contact_email: '')
- render 'about/contact', contact: contact
-
- expect(rendered).not_to have_content('@')
- end
- end
-
- describe 'the contact email' do
- it 'show info when email is present' do
- contact = double(site_contact_email: 'admin@example.com', contact_account: nil)
- render 'about/contact', contact: contact
-
- expect(rendered).to have_content('admin@example.com')
- end
- end
-end
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
index cbe5aa93b..12efc06fd 100644
--- a/spec/views/about/show.html.haml_spec.rb
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -11,6 +11,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
it 'has valid open graph tags' do
instance_presenter = double(:instance_presenter,
site_title: 'something',
+ site_short_description: 'something',
site_description: 'something',
version_number: '1.0',
source_url: 'https://github.com/tootsuite/mastodon',
diff --git a/spec/views/stream_entries/show.html.haml_spec.rb b/spec/views/stream_entries/show.html.haml_spec.rb
index e0681b125..34207aa6b 100644
--- a/spec/views/stream_entries/show.html.haml_spec.rb
+++ b/spec/views/stream_entries/show.html.haml_spec.rb
@@ -12,6 +12,7 @@ describe 'stream_entries/show.html.haml', without_verify_partial_doubles: true d
allow(view).to receive(:full_asset_url).and_return('//asset.host/image.svg')
allow(view).to receive(:local_time)
allow(view).to receive(:local_time_ago)
+ assign(:instance_presenter, InstancePresenter.new)
end
it 'has valid author h-card and basic data for a detailed_status' do
diff --git a/streaming/index.js b/streaming/index.js
index 4eaf66865..1c6004b77 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -9,6 +9,7 @@ const log = require('npmlog');
const url = require('url');
const WebSocket = require('uws');
const uuid = require('uuid');
+const fs = require('fs');
const env = process.env.NODE_ENV || 'development';
@@ -70,6 +71,9 @@ const redisUrlToClient = (defaultConfig, redisUrl) => {
const numWorkers = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' ? 1 : Math.max(os.cpus().length - 1, 1));
const startMaster = () => {
+ if (!process.env.SOCKET && process.env.PORT && isNaN(+process.env.PORT)) {
+ log.warn('UNIX domain socket is now supported by using SOCKET. Please migrate from PORT hack.');
+ }
log.info(`Starting streaming API server master with ${numWorkers} workers`);
};
@@ -192,7 +196,7 @@ const startWorker = (workerId) => {
return;
}
- client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.filtered_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 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) {
@@ -209,7 +213,7 @@ const startWorker = (workerId) => {
}
req.accountId = result.rows[0].account_id;
- req.filteredLanguages = result.rows[0].filtered_languages;
+ req.chosenLanguages = result.rows[0].chosen_languages;
next();
});
@@ -340,7 +344,7 @@ const startWorker = (workerId) => {
const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id));
const accountDomain = unpackedPayload.account.acct.split('@')[1];
- if (Array.isArray(req.filteredLanguages) && req.filteredLanguages.indexOf(unpackedPayload.language) !== -1) {
+ if (Array.isArray(req.chosenLanguages) && unpackedPayload.language !== null && req.chosenLanguages.indexOf(unpackedPayload.language) === -1) {
log.silly(req.requestId, `Message ${unpackedPayload.id} filtered by language (${unpackedPayload.language})`);
return;
}
@@ -448,6 +452,12 @@ const startWorker = (workerId) => {
app.use(setRequestId);
app.use(setRemoteAddress);
app.use(allowCrossDomain);
+
+ app.get('/api/v1/streaming/health', (req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('OK');
+ });
+
app.use(authenticationMiddleware);
app.use(errorMiddleware);
@@ -574,9 +584,16 @@ const startWorker = (workerId) => {
});
}, 30000);
- server.listen(process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => {
- log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`);
- });
+ if (process.env.SOCKET || process.env.PORT && isNaN(+process.env.PORT)) {
+ server.listen(process.env.SOCKET || process.env.PORT, () => {
+ fs.chmodSync(server.address(), 0o666);
+ log.info(`Worker ${workerId} now listening on ${server.address()}`);
+ });
+ } else {
+ server.listen(+process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => {
+ log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`);
+ });
+ }
const onExit = () => {
log.info(`Worker ${workerId} exiting, bye bye`);
diff --git a/yarn.lock b/yarn.lock
index 641835149..e558ea664 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,14 +2,6 @@
# yarn lockfile v1
-"@babel/code-frame@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz#2349d7ec04b3a06945ae173280ef8579b63728e4"
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
"@babel/code-frame@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
@@ -26,14 +18,6 @@
source-map "^0.5.0"
trim-right "^1.0.1"
-"@babel/helper-function-name@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz#366e3bc35147721b69009f803907c4d53212e88d"
- dependencies:
- "@babel/helper-get-function-arity" "7.0.0-beta.36"
- "@babel/template" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
-
"@babel/helper-function-name@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd"
@@ -42,18 +26,19 @@
"@babel/template" "7.0.0-beta.44"
"@babel/types" "7.0.0-beta.44"
-"@babel/helper-get-function-arity@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz#f5383bac9a96b274828b10d98900e84ee43e32b8"
- dependencies:
- "@babel/types" "7.0.0-beta.36"
-
"@babel/helper-get-function-arity@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15"
dependencies:
"@babel/types" "7.0.0-beta.44"
+"@babel/helper-module-imports@^7.0.0-beta.49":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz#e735e6aa30a504b0f9d85c38a6d470a9f4aa81d9"
+ dependencies:
+ "@babel/types" "7.0.0-beta.53"
+ lodash "^4.17.5"
+
"@babel/helper-split-export-declaration@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc"
@@ -68,14 +53,12 @@
esutils "^2.0.2"
js-tokens "^3.0.0"
-"@babel/template@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.36.tgz#02e903de5d68bd7899bce3c5b5447e59529abb00"
+"@babel/runtime@^7.0.0-beta.42":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.53.tgz#9df22ae34823ce89f790060594b83ee572e2c5d2"
dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- lodash "^4.2.0"
+ core-js "^2.5.7"
+ regenerator-runtime "^0.12.0"
"@babel/template@7.0.0-beta.44":
version "7.0.0-beta.44"
@@ -86,19 +69,6 @@
babylon "7.0.0-beta.44"
lodash "^4.2.0"
-"@babel/traverse@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.36.tgz#1dc6f8750e89b6b979de5fe44aa993b1a2192261"
- dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/helper-function-name" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- debug "^3.0.1"
- globals "^11.1.0"
- invariant "^2.2.0"
- lodash "^4.2.0"
-
"@babel/traverse@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966"
@@ -114,14 +84,6 @@
invariant "^2.2.0"
lodash "^4.2.0"
-"@babel/types@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.36.tgz#64f2004353de42adb72f9ebb4665fc35b5499d23"
- dependencies:
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^2.0.0"
-
"@babel/types@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757"
@@ -130,9 +92,179 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
+"@babel/types@7.0.0-beta.53", "@babel/types@^7.0.0-beta.49":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.53.tgz#19a461c0da515595dfb6740b4b45dc7bb0e6b375"
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.5"
+ to-fast-properties "^2.0.0"
+
+"@csstools/convert-colors@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
+
+"@csstools/postcss-image-set-function@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@csstools/postcss-image-set-function/-/postcss-image-set-function-1.0.0.tgz#1ef0913d90a9c4440495eb41624c202e53a703f3"
+ dependencies:
+ postcss "^6.0.20"
+ postcss-value-parser "^3.3.0"
+
+"@csstools/sass-import-resolve@^1":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5"
+
"@types/node@*":
- version "8.0.53"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8"
+ version "10.5.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707"
+
+"@webassemblyjs/ast@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25"
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/wast-parser" "1.5.13"
+ debug "^3.1.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/floating-point-hex-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298"
+
+"@webassemblyjs/helper-api-error@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59"
+
+"@webassemblyjs/helper-buffer@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e"
+ dependencies:
+ debug "^3.1.0"
+
+"@webassemblyjs/helper-code-frame@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58"
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.5.13"
+
+"@webassemblyjs/helper-fsm@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924"
+
+"@webassemblyjs/helper-module-context@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5"
+ dependencies:
+ debug "^3.1.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747"
+
+"@webassemblyjs/helper-wasm-section@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/ieee754@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364"
+ dependencies:
+ ieee754 "^1.1.11"
+
+"@webassemblyjs/leb128@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee"
+ dependencies:
+ long "4.0.0"
+
+"@webassemblyjs/utf8@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469"
+
+"@webassemblyjs/wasm-edit@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/helper-wasm-section" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ "@webassemblyjs/wasm-opt" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ "@webassemblyjs/wast-printer" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/wasm-gen@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/ieee754" "1.5.13"
+ "@webassemblyjs/leb128" "1.5.13"
+ "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wasm-opt@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/wasm-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-api-error" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/ieee754" "1.5.13"
+ "@webassemblyjs/leb128" "1.5.13"
+ "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wast-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/floating-point-hex-parser" "1.5.13"
+ "@webassemblyjs/helper-api-error" "1.5.13"
+ "@webassemblyjs/helper-code-frame" "1.5.13"
+ "@webassemblyjs/helper-fsm" "1.5.13"
+ long "^3.2.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/wast-printer@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/wast-parser" "1.5.13"
+ long "^3.2.0"
+
+"@webpack-contrib/schema-utils@^1.0.0-beta.0":
+ version "1.0.0-beta.0"
+ resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65"
+ dependencies:
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chalk "^2.3.2"
+ strip-ansi "^4.0.0"
+ text-table "^0.2.0"
+ webpack-log "^1.1.2"
abab@^1.0.3:
version "1.0.4"
@@ -142,18 +274,18 @@ abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-accepts@~1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
+accepts@~1.3.4, accepts@~1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
dependencies:
- mime-types "~2.1.16"
+ mime-types "~2.1.18"
negotiator "0.6.1"
-acorn-dynamic-import@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+acorn-dynamic-import@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
dependencies:
- acorn "^4.0.3"
+ acorn "^5.0.0"
acorn-globals@^3.1.0:
version "3.1.0"
@@ -171,34 +303,22 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-acorn@^4.0.3, acorn@^4.0.4:
+acorn@^4.0.4:
version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
-acorn@^5.0.0, acorn@^5.1.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
+acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.6.2:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
-acorn@^5.5.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.0.tgz#572bedb377a1c61b7a289e72b8c5cfeb7baaf0bf"
-
-adjust-sourcemap-loader@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2"
- dependencies:
- assert "^1.3.0"
- camelcase "^1.2.1"
- loader-utils "^1.0.2"
- lodash.assign "^4.0.1"
- lodash.defaults "^3.1.2"
- object-path "^0.9.2"
- regex-parser "^2.2.1"
-
-ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
+ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+ajv-keywords@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
+
ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -206,16 +326,7 @@ ajv@^4.9.1:
co "^4.6.0"
json-stable-stringify "^1.0.1"
-ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5:
- version "5.5.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2"
- dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
-
-ajv@^5.2.3, ajv@^5.3.0:
+ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
version "5.5.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
dependencies:
@@ -224,6 +335,15 @@ ajv@^5.2.3, ajv@^5.3.0:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
+ajv@^6.1.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.1"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -241,8 +361,8 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
ansi-escapes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
ansi-html@0.0.7:
version "0.0.7"
@@ -260,9 +380,9 @@ ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-ansi-styles@^3.1.0, ansi-styles@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
dependencies:
color-convert "^1.9.0"
@@ -270,41 +390,42 @@ any-promise@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27"
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
-append-transform@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+append-transform@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
dependencies:
- default-require-extensions "^1.0.0"
+ default-require-extensions "^2.0.0"
-aproba@^1.0.3:
+aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
dependencies:
sprintf-js "~1.0.2"
-aria-query@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24"
+aria-query@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
dependencies:
ast-types-flow "0.0.7"
+ commander "^2.11.0"
arr-diff@^2.0.0:
version "2.0.0"
@@ -312,10 +433,18 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
-arr-flatten@^1.0.1:
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
@@ -365,6 +494,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -374,8 +507,8 @@ asap@~2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
asn1.js@^4.0.0:
- version "4.9.2"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
dependencies:
bn.js "^4.0.0"
inherits "^2.0.1"
@@ -393,13 +526,17 @@ assert-plus@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-assert@^1.1.1, assert@^1.3.0:
+assert@^1.1.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
dependencies:
util "0.10.3"
-ast-types-flow@0.0.7:
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
+ast-types-flow@0.0.7, ast-types-flow@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
@@ -419,29 +556,23 @@ async-limiter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
-async@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7"
- dependencies:
- lodash "^4.14.0"
-
async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.4.1:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+async@^2.1.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
dependencies:
- lodash "^4.14.0"
+ lodash "^4.17.10"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-atob@~1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
+atob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a"
autoprefixer@^6.3.1:
version "6.7.7"
@@ -454,15 +585,15 @@ autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7"
+autoprefixer@^8.6.5:
+ version "8.6.5"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9"
dependencies:
- browserslist "^2.5.1"
- caniuse-lite "^1.0.30000748"
+ browserslist "^3.2.8"
+ caniuse-lite "^1.0.30000864"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
- postcss "^6.0.13"
+ postcss "^6.0.23"
postcss-value-parser "^3.2.3"
aws-sign2@~0.6.0:
@@ -474,8 +605,8 @@ aws-sign2@~0.7.0:
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
aws4@^1.2.1, aws4@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289"
axios@~0.16.2:
version "0.16.2"
@@ -484,13 +615,13 @@ axios@~0.16.2:
follow-redirects "^1.2.3"
is-buffer "^1.1.5"
-axobject-query@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0"
+axobject-query@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.1.tgz#05dfa705ada8ad9db993fa6896f22d395b0b0a07"
dependencies:
ast-types-flow "0.0.7"
-babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
@@ -498,9 +629,9 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
esutils "^2.0.2"
js-tokens "^3.0.2"
-babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3:
+ version "6.26.3"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
dependencies:
babel-code-frame "^6.26.0"
babel-generator "^6.26.0"
@@ -512,41 +643,30 @@ babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0:
babel-traverse "^6.26.0"
babel-types "^6.26.0"
babylon "^6.18.0"
- convert-source-map "^1.5.0"
- debug "^2.6.8"
+ convert-source-map "^1.5.1"
+ debug "^2.6.9"
json5 "^0.5.1"
lodash "^4.17.4"
minimatch "^3.0.4"
path-is-absolute "^1.0.1"
- private "^0.1.7"
+ private "^0.1.8"
slash "^1.0.0"
- source-map "^0.5.6"
+ source-map "^0.5.7"
-babel-eslint@^8.0.1:
- version "8.2.1"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.1.tgz#136888f3c109edc65376c23ebf494f36a3e03951"
- dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/traverse" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- eslint-scope "~3.7.1"
- eslint-visitor-keys "^1.0.0"
-
-babel-eslint@^8.2.3:
- version "8.2.3"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.3.tgz#1a2e6681cc9bc4473c32899e59915e19cd6733cf"
+babel-eslint@^8.0.1, babel-eslint@^8.2.6:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
dependencies:
"@babel/code-frame" "7.0.0-beta.44"
"@babel/traverse" "7.0.0-beta.44"
"@babel/types" "7.0.0-beta.44"
babylon "7.0.0-beta.44"
- eslint-scope "~3.7.1"
+ eslint-scope "3.7.1"
eslint-visitor-keys "^1.0.0"
babel-generator@^6.18.0, babel-generator@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
+ version "6.26.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
dependencies:
babel-messages "^6.23.0"
babel-runtime "^6.26.0"
@@ -554,7 +674,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0:
detect-indent "^4.0.0"
jsesc "^1.3.0"
lodash "^4.17.4"
- source-map "^0.5.6"
+ source-map "^0.5.7"
trim-right "^1.0.1"
babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
@@ -623,13 +743,6 @@ babel-helper-hoist-variables@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-helper-module-imports@^7.0.0-beta.3:
- version "7.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz#e15764e3af9c8e11810c09f78f498a2bdc71585a"
- dependencies:
- babel-types "7.0.0-beta.3"
- lodash "^4.2.0"
-
babel-helper-optimise-call-expression@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
@@ -680,20 +793,14 @@ babel-jest@^21.2.0:
babel-plugin-istanbul "^4.0.0"
babel-preset-jest "^21.2.0"
-babel-loader@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
+babel-loader@^7.1.5:
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
dependencies:
find-cache-dir "^1.0.0"
loader-utils "^1.0.2"
mkdirp "^0.5.1"
-babel-macros@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/babel-macros/-/babel-macros-1.2.0.tgz#39e47ed6d286d4a98f1948d8bab45dac17e4e2d4"
- dependencies:
- cosmiconfig "3.1.0"
-
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -707,39 +814,46 @@ babel-plugin-check-es2015-constants@^6.22.0:
babel-runtime "^6.22.0"
babel-plugin-istanbul@^4.0.0:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.13.0"
find-up "^2.1.0"
- istanbul-lib-instrument "^1.7.5"
- test-exclude "^4.1.1"
+ istanbul-lib-instrument "^1.10.1"
+ test-exclude "^4.2.1"
babel-plugin-jest-hoist@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006"
-babel-plugin-lodash@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz#da3a5b49ba27447f54463f6c4fa81396ccdd463f"
+babel-plugin-lodash@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
dependencies:
- babel-helper-module-imports "^7.0.0-beta.3"
- babel-types "^6.26.0"
+ "@babel/helper-module-imports" "^7.0.0-beta.49"
+ "@babel/types" "^7.0.0-beta.49"
glob "^7.1.1"
- lodash "^4.17.4"
+ lodash "^4.17.10"
require-package-name "^2.0.1"
-babel-plugin-preval@^1.6.1:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-1.6.2.tgz#8f580a1d4579d5fc79f1cfaee6f9fe0996fdeb1f"
+babel-plugin-macros@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.3.0.tgz#1538e6339cbcbf093f334dc2f10f5f53043e3fda"
dependencies:
- babel-macros "^1.1.1"
+ cosmiconfig "^4.0.0"
+
+babel-plugin-preval@^1.6.1:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-1.6.4.tgz#96febe8172b3ca6c3d03ed96eeb0382ba4b18056"
+ dependencies:
+ babel-plugin-macros "^2.0.0"
babel-register "^6.26.0"
babylon "^6.18.0"
require-from-string "^2.0.1"
-babel-plugin-react-intl@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-2.3.1.tgz#3d43912e824da005e08e8e8239d5ba784374bb00"
+babel-plugin-react-intl@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-2.4.0.tgz#292fca8030603a9e0476973290836aa0c7da17e2"
dependencies:
babel-runtime "^6.2.0"
intl-messageformat-parser "^1.2.0"
@@ -798,9 +912,9 @@ babel-plugin-transform-class-properties@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-decorators-legacy@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925"
+babel-plugin-transform-decorators-legacy@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1"
dependencies:
babel-plugin-syntax-decorators "^6.1.18"
babel-runtime "^6.2.0"
@@ -890,9 +1004,9 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.2:
+ version "6.26.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
dependencies:
babel-plugin-transform-strict-mode "^6.24.1"
babel-runtime "^6.26.0"
@@ -1030,9 +1144,9 @@ babel-plugin-transform-react-jsx@^6.24.1:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-remove-prop-types@^0.4.10:
- version "0.4.10"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.10.tgz#3c7f3a03ad8aa6bb8c00e93fd13a433910444545"
+babel-plugin-transform-react-remove-prop-types@^0.4.13:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.13.tgz#331cfc05099a808238311d78319c27460d481189"
babel-plugin-transform-regenerator@^6.22.0:
version "6.26.0"
@@ -1053,9 +1167,9 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-preset-env@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+babel-preset-env@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
dependencies:
babel-plugin-check-es2015-constants "^6.22.0"
babel-plugin-syntax-trailing-function-commas "^6.22.0"
@@ -1084,7 +1198,7 @@ babel-preset-env@^1.6.1:
babel-plugin-transform-es2015-unicode-regex "^6.22.0"
babel-plugin-transform-exponentiation-operator "^6.22.0"
babel-plugin-transform-regenerator "^6.22.0"
- browserslist "^2.1.2"
+ browserslist "^3.2.6"
invariant "^2.2.2"
semver "^5.3.0"
@@ -1155,14 +1269,6 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
invariant "^2.2.2"
lodash "^4.17.4"
-babel-types@7.0.0-beta.3:
- version "7.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4"
- dependencies:
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^2.0.0"
-
babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
@@ -1172,10 +1278,6 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26
lodash "^4.17.4"
to-fast-properties "^1.0.3"
-babylon@7.0.0-beta.36:
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.36.tgz#3a3683ba6a9a1e02b0aa507c8e63435e39305b9e"
-
babylon@7.0.0-beta.44:
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
@@ -1190,10 +1292,6 @@ backoff@^2.4.1:
dependencies:
precond "0.2"
-balanced-match@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
-
balanced-match@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
@@ -1203,19 +1301,39 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
base64-js@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
dependencies:
tweetnacl "^0.14.3"
+bfj-node4@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830"
+ dependencies:
+ bluebird "^3.5.1"
+ check-types "^7.3.0"
+ tryer "^1.0.0"
+
big.js@^3.1.3:
version "3.2.0"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -1230,6 +1348,10 @@ block-stream@*:
dependencies:
inherits "~2.0.0"
+bluebird@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+
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"
@@ -1270,21 +1392,9 @@ boom@2.x.x:
dependencies:
hoek "2.x.x"
-boom@4.x.x:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
- dependencies:
- hoek "4.x.x"
-
-boom@5.x.x:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
- dependencies:
- hoek "4.x.x"
-
brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
@@ -1297,19 +1407,34 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+braces@^2.3.0, braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
browser-resolve@^1.11.2:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
dependencies:
resolve "1.1.7"
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
dependencies:
buffer-xor "^1.0.3"
cipher-base "^1.0.0"
@@ -1319,20 +1444,21 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
safe-buffer "^5.0.1"
browserify-cipher@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
dependencies:
browserify-aes "^1.0.4"
browserify-des "^1.0.0"
evp_bytestokey "^1.0.0"
browserify-des@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
dependencies:
cipher-base "^1.0.1"
des.js "^1.0.0"
inherits "^2.0.1"
+ safe-buffer "^5.1.2"
browserify-rsa@^4.0.0:
version "4.0.1"
@@ -1366,12 +1492,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7"
-browserslist@^2.1.2, browserslist@^2.5.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.1.tgz#b72d3982ab01b5cd24da62ff6d45573886aff275"
+browserslist@^3.2.4, browserslist@^3.2.6, browserslist@^3.2.8:
+ version "3.2.8"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
dependencies:
- caniuse-lite "^1.0.30000770"
- electron-to-chromium "^1.3.27"
+ caniuse-lite "^1.0.30000844"
+ electron-to-chromium "^1.3.47"
bser@^2.0.0:
version "2.0.0"
@@ -1379,6 +1505,10 @@ bser@^2.0.0:
dependencies:
node-int64 "^0.4.0"
+buffer-from@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+
buffer-indexof@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -1399,7 +1529,7 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
-builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+builtin-modules@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -1411,6 +1541,38 @@ bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+cacache@^10.0.1, cacache@^10.0.4:
+ version "10.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+ dependencies:
+ bluebird "^3.5.1"
+ chownr "^1.0.1"
+ glob "^7.1.2"
+ graceful-fs "^4.1.11"
+ lru-cache "^4.1.1"
+ mississippi "^2.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.2"
+ ssri "^5.2.4"
+ unique-filename "^1.1.0"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
caller-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
@@ -1425,10 +1587,6 @@ callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
-camelcase-css@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705"
-
camelcase-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1436,7 +1594,7 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
-camelcase@^1.0.2, camelcase@^1.2.1:
+camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
@@ -1448,7 +1606,7 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-camelcase@^4.0.0, camelcase@^4.1.0:
+camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -1462,16 +1620,18 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000777"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000777.tgz#2e19adba63bdd7c501df637a862adead7f4bc054"
+ version "1.0.30000865"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000865.tgz#82ffb64d40f7567620aac02d3a632079689abc6b"
-caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000770:
- version "1.0.30000777"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000777.tgz#31c18a4a8cd49782ebb305c8e8a93e6b3b3e4f13"
+caniuse-lite@^1.0.30000823, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864:
+ version "1.0.30000865"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25"
-caseless@~0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+capture-exit@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
+ dependencies:
+ rsvp "^3.3.3"
caseless@~0.12.0:
version "0.12.0"
@@ -1484,10 +1644,6 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
-chain-function@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
-
chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1498,18 +1654,26 @@ chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.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"
dependencies:
- ansi-styles "^3.1.0"
+ ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
- supports-color "^4.0.0"
+ supports-color "^5.3.0"
chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+chardet@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029"
+
+check-types@^7.3.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4"
+
cheerio@^1.0.0-rc.2:
version "1.0.0-rc.2"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
@@ -1521,24 +1685,38 @@ cheerio@^1.0.0-rc.2:
lodash "^4.15.0"
parse5 "^3.0.1"
-chokidar@^1.6.0, chokidar@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+chokidar@^2.0.0, chokidar@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
dependencies:
- anymatch "^1.3.0"
+ anymatch "^2.0.0"
async-each "^1.0.0"
- glob-parent "^2.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
inherits "^2.0.1"
is-binary-path "^1.0.0"
- is-glob "^2.0.0"
+ is-glob "^4.0.0"
+ lodash.debounce "^4.0.8"
+ normalize-path "^2.1.1"
path-is-absolute "^1.0.0"
readdirp "^2.0.0"
+ upath "^1.0.5"
optionalDependencies:
- fsevents "^1.0.0"
+ fsevents "^1.2.2"
+
+chownr@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+
+chrome-trace-event@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+ dependencies:
+ tslib "^1.9.0"
ci-info@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2"
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
@@ -1557,9 +1735,18 @@ clap@^1.0.9:
dependencies:
chalk "^1.1.3"
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
classnames@^2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
cli-cursor@^2.1.0:
version "2.1.0"
@@ -1587,18 +1774,26 @@ cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
-clone-deep@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8"
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
+clone-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
dependencies:
for-own "^1.0.0"
- is-plain-object "^2.0.1"
- kind-of "^3.2.2"
- shallow-clone "^0.1.2"
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.0"
+ shallow-clone "^1.0.0"
clone@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
co@^4.6.0:
version "4.6.0"
@@ -1614,13 +1809,24 @@ code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-color-convert@^1.3.0, color-convert@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
dependencies:
- color-name "^1.1.1"
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
-color-name@^1.0.0, color-name@^1.1.1:
+color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
+ dependencies:
+ color-name "1.1.1"
+
+color-name@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
+
+color-name@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
@@ -1630,6 +1836,13 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
+color-string@^1.4.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
color@^0.11.0:
version "0.11.4"
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
@@ -1638,6 +1851,13 @@ color@^0.11.0:
color-convert "^1.3.0"
color-string "^0.3.0"
+color@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz#e48e832d85f14ef694fb468811c2d5cfe729b55d"
+ dependencies:
+ color-convert "^1.8.2"
+ color-string "^1.4.0"
+
colormin@^1.0.5:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
@@ -1654,44 +1874,55 @@ colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
dependencies:
delayed-stream "~1.0.0"
-commander@^2.8.1, commander@^2.9.0:
- version "2.12.2"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+commander@^2.11.0, commander@^2.13.0, commander@^2.8.1:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
+
+commander@~2.13.0:
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-complex.js@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.4.tgz#d8e7cfb9652d1e853e723386421c1a0ca7a48373"
+compare-versions@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3"
-compressible@~2.0.11:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
- dependencies:
- mime-db ">= 1.30.0 < 2"
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-compression-webpack-plugin@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz#7f0a2af9f642b4f87b5989516a3b9e9b41bb4b3f"
+compressible@~2.0.13:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
dependencies:
- async "2.4.1"
+ mime-db ">= 1.34.0 < 2"
+
+compression-webpack-plugin@^1.1.11:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.1.11.tgz#8384c7a6ead1d2e2efb190bdfcdcf35878ed8266"
+ dependencies:
+ cacache "^10.0.1"
+ find-cache-dir "^1.0.0"
+ neo-async "^2.5.0"
+ serialize-javascript "^1.4.0"
webpack-sources "^1.0.1"
compression@^1.5.2:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
+ version "1.7.2"
+ resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
dependencies:
accepts "~1.3.4"
bytes "3.0.0"
- compressible "~2.0.11"
+ compressible "~2.0.13"
debug "2.6.9"
on-headers "~1.0.1"
safe-buffer "5.1.1"
@@ -1701,10 +1932,11 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+concat-stream@^1.5.0, concat-stream@^1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
dependencies:
+ buffer-from "^1.0.0"
inherits "^2.0.3"
readable-stream "^2.2.2"
typedarray "^0.0.6"
@@ -1743,11 +1975,7 @@ content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-convert-source-map@^0.3.3:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
-
-convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+convert-source-map@^1.4.0, convert-source-map@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
@@ -1759,58 +1987,62 @@ cookie@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-core-js@^2.4.0, core-js@^2.5.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
+core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-cosmiconfig@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-3.1.0.tgz#640a94bf9847f321800403cd273af60665c73397"
+cosmiconfig@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
dependencies:
is-directory "^0.3.1"
js-yaml "^3.9.0"
- parse-json "^3.0.0"
+ parse-json "^4.0.0"
require-from-string "^2.0.1"
-cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
- dependencies:
- is-directory "^0.3.1"
- js-yaml "^3.4.3"
- minimist "^1.2.0"
- object-assign "^4.1.0"
- os-homedir "^1.0.1"
- parse-json "^2.2.0"
- require-from-string "^1.1.0"
-
create-ecdh@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
dependencies:
bn.js "^4.1.0"
elliptic "^6.0.0"
create-hash@^1.1.0, create-hash@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
dependencies:
cipher-base "^1.0.1"
inherits "^2.0.1"
- ripemd160 "^2.0.0"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
sha.js "^2.4.0"
create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
dependencies:
cipher-base "^1.0.3"
create-hash "^1.1.0"
@@ -1820,18 +2052,18 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
sha.js "^2.4.8"
create-react-class@^15.5.2:
- version "15.6.2"
- resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
+ version "15.6.3"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
dependencies:
fbjs "^0.8.9"
loose-envify "^1.3.1"
object-assign "^4.1.1"
-cross-env@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74"
+cross-env@^5.1.4:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2"
dependencies:
- cross-spawn "^5.1.0"
+ cross-spawn "^6.0.5"
is-windows "^1.0.0"
cross-spawn@^3.0.0:
@@ -1849,18 +2081,22 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^6.0.4, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cryptiles@2.x.x:
version "2.0.5"
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
dependencies:
boom "2.x.x"
-cryptiles@3.x.x:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
- dependencies:
- boom "5.x.x"
-
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -1877,15 +2113,6 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
-css-color-function@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/css-color-function/-/css-color-function-1.3.3.tgz#8ed24c2c0205073339fafa004bc8c141fccb282e"
- dependencies:
- balanced-match "0.1.0"
- color "^0.11.0"
- debug "^3.1.0"
- rgb "~0.1.0"
-
css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -1916,22 +2143,22 @@ css-list-helpers@^1.0.1:
dependencies:
tcomb "^2.5.0"
-css-loader@^0.28.4:
- version "0.28.7"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b"
+css-loader@^0.28.11:
+ version "0.28.11"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
dependencies:
- babel-code-frame "^6.11.0"
+ babel-code-frame "^6.26.0"
css-selector-tokenizer "^0.7.0"
- cssnano ">=2.6.1 <4"
+ cssnano "^3.10.0"
icss-utils "^2.1.0"
loader-utils "^1.0.2"
lodash.camelcase "^4.3.0"
- object-assign "^4.0.1"
+ object-assign "^4.1.1"
postcss "^5.0.6"
- postcss-modules-extract-imports "^1.0.0"
- postcss-modules-local-by-default "^1.0.1"
- postcss-modules-scope "^1.0.0"
- postcss-modules-values "^1.1.0"
+ postcss-modules-extract-imports "^1.2.0"
+ postcss-modules-local-by-default "^1.2.0"
+ postcss-modules-scope "^1.1.0"
+ postcss-modules-values "^1.3.0"
postcss-value-parser "^3.3.0"
source-list-map "^2.0.0"
@@ -1960,20 +2187,15 @@ css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
-css@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
- dependencies:
- inherits "^2.0.1"
- source-map "^0.1.38"
- source-map-resolve "^0.3.0"
- urix "^0.1.0"
+cssdb@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-1.6.0.tgz#3360c4163e07cf4d1efe58c1bc15170535f4d393"
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
-"cssnano@>=2.6.1 <4":
+cssnano@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
dependencies:
@@ -2018,8 +2240,8 @@ csso@~2.3.1:
source-map "^0.5.3"
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
"cssstyle@>= 0.2.37 < 0.3.0":
version "0.2.37"
@@ -2033,13 +2255,17 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+
d@1:
version "1.0.0"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
dependencies:
es5-ext "^0.10.9"
-damerau-levenshtein@^1.0.0:
+damerau-levenshtein@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
@@ -2053,13 +2279,13 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-debug@2.6.9, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
-debug@^3.0.1, debug@^3.1.0:
+debug@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
@@ -2069,27 +2295,31 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-decimal.js@7.2.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-7.2.3.tgz#6434c3b8a8c375780062fc633d0d2bbdb264cc78"
+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"
deep-equal@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
-deep-extend@^0.4.0, deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+deep-extend@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-default-require-extensions@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+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"
dependencies:
- strip-bom "^2.0.0"
+ strip-bom "^3.0.0"
defaults@^1.0.2:
version "1.0.3"
@@ -2104,6 +2334,25 @@ define-properties@^1.1.1, define-properties@^1.1.2:
foreach "^2.0.5"
object-keys "^1.0.8"
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -2139,10 +2388,14 @@ delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-depd@1.1.1, depd@~1.1.1:
+depd@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+depd@~1.1.1, depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -2173,12 +2426,12 @@ detect-passive-events@^1.0.2:
resolved "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.4.tgz#6ed477e6e5bceb79079735dcd357789d37f9a91a"
diff@^3.2.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
diffie-hellman@^5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
dependencies:
bn.js "^4.1.0"
miller-rabin "^4.0.0"
@@ -2192,9 +2445,9 @@ dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
-dns-packet@^1.0.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a"
+dns-packet@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
dependencies:
ip "^1.1.0"
safe-buffer "^5.0.1"
@@ -2212,15 +2465,15 @@ doctrine@1.5.0:
esutils "^2.0.2"
isarray "^1.0.0"
-doctrine@^2.0.2, doctrine@^2.1.0:
+doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
dependencies:
esutils "^2.0.2"
-dom-helpers@^3.2.0, dom-helpers@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
+dom-helpers@^3.2.1, dom-helpers@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
dom-serializer@0, dom-serializer@~0.1.0:
version "0.1.0"
@@ -2230,8 +2483,8 @@ dom-serializer@0, dom-serializer@~0.1.0:
entities "~1.1.1"
domain-browser@^1.1.1:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
domelementtype@1, domelementtype@^1.3.0:
version "1.3.0"
@@ -2242,8 +2495,8 @@ domelementtype@~1.1.1:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
domhandler@^2.3.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
dependencies:
domelementtype "1"
@@ -2255,12 +2508,18 @@ domutils@1.5.1:
domelementtype "1"
domutils@^1.5.1:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff"
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
dependencies:
dom-serializer "0"
domelementtype "1"
+dot-prop@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ dependencies:
+ is-obj "^1.0.0"
+
dotenv@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
@@ -2273,6 +2532,15 @@ duplexer@^0.1.1, duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410"
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -2283,13 +2551,13 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-ejs@^2.3.4, ejs@^2.5.6:
- version "2.5.7"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
+ejs@^2.3.4, ejs@^2.5.7:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27:
- version "1.3.27"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d"
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
+ version "1.3.52"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz#d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0"
elliptic@^6.0.0:
version "6.4.0"
@@ -2307,7 +2575,7 @@ emoji-mart@Gargron/emoji-mart#build:
version "2.6.2"
resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9"
-emoji-regex@^6.1.0:
+emoji-regex@^6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
@@ -2315,9 +2583,9 @@ emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-encodeurl@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
encoding@^0.1.11:
version "0.1.12"
@@ -2325,69 +2593,79 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
-enhanced-resolve@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
dependencies:
graceful-fs "^4.1.2"
memory-fs "^0.4.0"
- object-assign "^4.0.1"
- tapable "^0.2.7"
+ tapable "^1.0.0"
entities@^1.1.1, entities@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
enzyme-adapter-react-16@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz#86c5db7c10f0be6ec25d54ca41b59f2abb397cf4"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4"
dependencies:
- enzyme-adapter-utils "^1.1.0"
+ enzyme-adapter-utils "^1.3.0"
lodash "^4.17.4"
object.assign "^4.0.4"
object.values "^1.0.4"
- prop-types "^15.5.10"
+ prop-types "^15.6.0"
+ react-reconciler "^0.7.0"
react-test-renderer "^16.0.0-0"
-enzyme-adapter-utils@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2"
+enzyme-adapter-utils@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.4.0.tgz#c403b81e8eb9953658569e539780964bdc98de62"
dependencies:
- lodash "^4.17.4"
- object.assign "^4.0.4"
- prop-types "^15.5.10"
+ object.assign "^4.1.0"
+ prop-types "^15.6.0"
enzyme@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a"
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.3.0.tgz#0971abd167f2d4bf3f5bd508229e1c4b6dc50479"
dependencies:
cheerio "^1.0.0-rc.2"
function.prototype.name "^1.0.3"
has "^1.0.1"
+ is-boolean-object "^1.0.0"
+ is-callable "^1.1.3"
+ is-number-object "^1.0.3"
+ is-string "^1.0.4"
is-subset "^0.1.1"
lodash "^4.17.4"
+ object-inspect "^1.5.0"
object-is "^1.0.1"
- object.assign "^4.0.4"
+ object.assign "^4.1.0"
object.entries "^1.0.4"
object.values "^1.0.4"
raf "^3.4.0"
rst-selector-parser "^2.2.3"
-errno@^0.1.3, errno@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
dependencies:
- prr "~0.0.0"
+ prr "~1.0.1"
error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.4.3, es-abstract@^1.6.1, es-abstract@^1.7.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.1"
@@ -2403,14 +2681,15 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.1"
-es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.37"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3"
+es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+ version "0.10.45"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
dependencies:
- es6-iterator "~2.0.1"
+ es6-iterator "~2.0.3"
es6-symbol "~3.1.1"
+ next-tick "1"
-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"
dependencies:
@@ -2418,43 +2697,13 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.1:
es5-ext "^0.10.35"
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"
- 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"
- 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:
+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"
dependencies:
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"
- 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"
@@ -2464,24 +2713,15 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
escodegen@^1.6.1:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e"
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
- source-map "~0.5.6"
-
-escope@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
- dependencies:
- es6-map "^0.1.3"
- es6-weak-map "^2.0.1"
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
+ source-map "~0.6.1"
eslint-import-resolver-node@^0.3.1:
version "0.3.2"
@@ -2490,60 +2730,68 @@ eslint-import-resolver-node@^0.3.1:
debug "^2.6.9"
resolve "^1.5.0"
-eslint-module-utils@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449"
+eslint-module-utils@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746"
dependencies:
debug "^2.6.8"
pkg-dir "^1.0.0"
eslint-plugin-import@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed"
dependencies:
- builtin-modules "^1.1.1"
contains-path "^0.1.0"
debug "^2.6.8"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.1"
- eslint-module-utils "^2.1.1"
+ eslint-module-utils "^2.2.0"
has "^1.0.1"
- lodash.cond "^4.3.0"
+ lodash "^4.17.4"
minimatch "^3.0.3"
read-pkg-up "^2.0.0"
+ resolve "^1.6.0"
eslint-plugin-jsx-a11y@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz#54583d1ae442483162e040e13cc31865465100e5"
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz#7bf56dbe7d47d811d14dbb3ddff644aa656ce8e1"
dependencies:
- aria-query "^0.7.0"
+ aria-query "^3.0.0"
array-includes "^3.0.3"
- ast-types-flow "0.0.7"
- axobject-query "^0.1.0"
- damerau-levenshtein "^1.0.0"
- emoji-regex "^6.1.0"
- jsx-ast-utils "^2.0.0"
+ ast-types-flow "^0.0.7"
+ axobject-query "^2.0.1"
+ damerau-levenshtein "^1.0.4"
+ emoji-regex "^6.5.1"
+ has "^1.0.3"
+ jsx-ast-utils "^2.0.1"
eslint-plugin-promise@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621"
eslint-plugin-react@^7.8.2:
- version "7.8.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d"
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz#af5c1fef31c4704db02098f9be18202993828b50"
dependencies:
- doctrine "^2.0.2"
- has "^1.0.1"
+ doctrine "^2.1.0"
+ has "^1.0.3"
jsx-ast-utils "^2.0.1"
- prop-types "^15.6.0"
+ prop-types "^15.6.2"
-eslint-scope@^3.7.1, eslint-scope@~3.7.1:
+eslint-scope@3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint-scope@^3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint-visitor-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
@@ -2607,21 +2855,20 @@ esprima@^3.1.3:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
esprima@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
esquery@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
dependencies:
estraverse "^4.0.0"
esrecurse@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
dependencies:
estraverse "^4.1.0"
- object-assign "^4.0.1"
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
@@ -2635,16 +2882,9 @@ etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-event-emitter@~0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
event-stream@~3.3.0:
version "3.3.4"
- resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
dependencies:
duplexer "~0.1.1"
from "~0"
@@ -2654,9 +2894,9 @@ event-stream@~3.3.0:
stream-combiner "~0.0.4"
through "~2.3.1"
-eventemitter3@1.x.x:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+eventemitter3@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
events@^1.0.0:
version "1.1.1"
@@ -2676,10 +2916,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
safe-buffer "^5.1.1"
exec-sh@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36"
dependencies:
- merge "^1.1.3"
+ merge "^1.2.0"
execa@^0.7.0:
version "0.7.0"
@@ -2703,6 +2943,18 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -2720,11 +2972,11 @@ expect@^21.2.1:
jest-message-util "^21.2.1"
jest-regex-util "^21.2.0"
-express@^4.15.2, express@^4.16.2:
- version "4.16.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+express@^4.16.2:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
dependencies:
- accepts "~1.3.4"
+ accepts "~1.3.5"
array-flatten "1.1.1"
body-parser "1.18.2"
content-disposition "0.5.2"
@@ -2732,55 +2984,80 @@ express@^4.15.2, express@^4.16.2:
cookie "0.3.1"
cookie-signature "1.0.6"
debug "2.6.9"
- depd "~1.1.1"
- encodeurl "~1.0.1"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.1.0"
+ finalhandler "1.1.1"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.2"
path-to-regexp "0.1.7"
- proxy-addr "~2.0.2"
+ proxy-addr "~2.0.3"
qs "6.5.1"
range-parser "~1.2.0"
safe-buffer "5.1.1"
- send "0.16.1"
- serve-static "1.13.1"
+ send "0.16.2"
+ serve-static "1.13.2"
setprototypeof "1.1.0"
- statuses "~1.3.1"
- type-is "~1.6.15"
+ statuses "~1.4.0"
+ type-is "~1.6.16"
utils-merge "1.0.1"
vary "~1.1.2"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
external-editor@^2.0.4:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
dependencies:
chardet "^0.4.0"
iconv-lite "^0.4.17"
tmp "^0.0.33"
+external-editor@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6"
+ dependencies:
+ chardet "^0.5.0"
+ iconv-lite "^0.4.22"
+ tmp "^0.0.33"
+
extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
dependencies:
is-extglob "^1.0.0"
-extract-text-webpack-plugin@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
dependencies:
- async "^2.4.1"
- loader-utils "^1.1.0"
- schema-utils "^0.3.0"
- webpack-sources "^1.0.1"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
extsprintf@1.3.0:
version "1.3.0"
@@ -2791,8 +3068,12 @@ extsprintf@^1.2.0:
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
fast-deep-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
@@ -2825,8 +3106,8 @@ fb-watchman@^2.0.0:
bser "^2.0.0"
fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9:
- version "0.8.16"
- resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+ version "0.8.17"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
@@ -2834,7 +3115,7 @@ fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9:
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
- ua-parser-js "^0.7.9"
+ ua-parser-js "^0.7.18"
figures@^2.0.0:
version "2.0.0"
@@ -2849,11 +3130,12 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
-file-loader@^0.11.2:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34"
+file-loader@^1.1.11:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
dependencies:
loader-utils "^1.0.2"
+ schema-utils "^0.4.5"
filename-regex@^2.0.0:
version "2.0.1"
@@ -2866,30 +3148,39 @@ fileset@^2.0.2:
glob "^7.0.3"
minimatch "^3.0.3"
-filesize@^3.5.9:
- version "3.5.11"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+filesize@^3.5.11:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
dependencies:
is-number "^2.1.0"
isobject "^2.0.0"
- randomatic "^1.1.3"
+ randomatic "^3.0.0"
repeat-element "^1.1.2"
repeat-string "^1.5.2"
-finalhandler@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.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"
dependencies:
debug "2.6.9"
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
- statuses "~1.3.1"
+ statuses "~1.4.0"
unpipe "~1.0.0"
find-cache-dir@^1.0.0:
@@ -2926,9 +3217,16 @@ flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
-follow-redirects@^1.2.3:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf"
+flush-write-stream@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.4"
+
+follow-redirects@^1.0.0, follow-redirects@^1.2.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291"
dependencies:
debug "^3.1.0"
@@ -2940,7 +3238,7 @@ for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
-for-in@^1.0.1:
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -2973,25 +3271,34 @@ form-data@~2.1.1:
mime-types "^2.1.12"
form-data@~2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
dependencies:
asynckit "^0.4.0"
- combined-stream "^1.0.5"
+ combined-stream "1.0.6"
mime-types "^2.1.12"
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-fraction.js@4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.2.tgz#0eae896626f334b1bde763371347a83b5575d7f0"
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ dependencies:
+ map-cache "^0.2.2"
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
from@~0:
version "0.1.7"
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
@@ -3006,16 +3313,31 @@ fs-extra@^0.30.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
+fs-minipass@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+ dependencies:
+ minipass "^2.2.1"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-fsevents@*, fsevents@^1.0.0, fsevents@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
+fsevents@*, fsevents@^1.2.2, fsevents@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.39"
+ nan "^2.9.2"
+ node-pre-gyp "^0.10.0"
fstream-ignore@^1.0.5:
version "1.0.5"
@@ -3039,11 +3361,11 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
function.prototype.name@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.3.tgz#0099ae5572e9dd6f03c97d023fd92bcc5e639eac"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
dependencies:
define-properties "^1.1.2"
- function-bind "^1.1.0"
+ function-bind "^1.1.1"
is-callable "^1.1.3"
functional-red-black-tree@^1.0.1:
@@ -3064,28 +3386,18 @@ gauge@~2.7.3:
wide-align "^1.1.0"
gaze@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
dependencies:
globule "^1.0.0"
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-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"
- 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"
get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
get-stdin@^4.0.1:
version "4.0.1"
@@ -3095,6 +3407,10 @@ get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3114,6 +3430,13 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
glob@^6.0.4:
version "6.0.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
@@ -3135,9 +3458,13 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules-path@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb"
+
globals@^11.0.1, globals@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
+ version "11.7.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
globals@^9.18.0:
version "9.18.0"
@@ -3165,11 +3492,11 @@ globby@^6.1.0:
pinkie-promise "^2.0.0"
globule@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
dependencies:
glob "~7.1.1"
- lodash "~4.17.4"
+ lodash "~4.17.10"
minimatch "~3.0.2"
gonzales-pe@^4.0.3:
@@ -3186,11 +3513,12 @@ growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
-gzip-size@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+gzip-size@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c"
dependencies:
duplexer "^0.1.1"
+ pify "^3.0.0"
handle-thing@^1.2.5:
version "1.2.5"
@@ -3214,15 +3542,6 @@ har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-har-validator@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
- dependencies:
- chalk "^1.1.1"
- commander "^2.9.0"
- is-my-json-valid "^2.12.4"
- pinkie-promise "^2.0.0"
-
har-validator@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -3247,25 +3566,50 @@ has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
dependencies:
- function-bind "^1.0.2"
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
-hash-base@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
dependencies:
- inherits "^2.0.1"
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ dependencies:
+ function-bind "^1.1.1"
hash-base@^3.0.0:
version "3.0.4"
@@ -3275,11 +3619,11 @@ hash-base@^3.0.0:
safe-buffer "^5.0.1"
hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
dependencies:
inherits "^2.0.3"
- minimalistic-assert "^1.0.0"
+ minimalistic-assert "^1.0.1"
hawk@3.1.3, hawk@~3.1.3:
version "3.1.3"
@@ -3290,15 +3634,6 @@ hawk@3.1.3, hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
-hawk@~6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
- dependencies:
- boom "4.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
- sntp "2.x.x"
-
history@^4.7.2:
version "4.7.2"
resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b"
@@ -3321,13 +3656,9 @@ hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-hoek@4.x.x:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
-
-hoist-non-react-statics@^2.2.1, hoist-non-react-statics@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
+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"
home-or-tmp@^2.0.0:
version "2.0.0"
@@ -3337,8 +3668,8 @@ home-or-tmp@^2.0.0:
os-tmpdir "^1.0.1"
hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
hpack.js@^2.1.6:
version "2.1.6"
@@ -3378,7 +3709,7 @@ http-deceiver@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
-http-errors@1.6.2, http-errors@~1.6.2:
+http-errors@1.6.2:
version "1.6.2"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
dependencies:
@@ -3387,29 +3718,39 @@ http-errors@1.6.2, http-errors@~1.6.2:
setprototypeof "1.0.3"
statuses ">= 1.3.1 < 2"
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
http-link-header@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-0.8.0.tgz#a22b41a0c9b1e2d8fac1bf1b697c6bd532d5f5e4"
http-parser-js@>=0.4.0:
- version "0.4.9"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1"
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137"
-http-proxy-middleware@~0.17.4:
- version "0.17.4"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+http-proxy-middleware@~0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab"
dependencies:
http-proxy "^1.16.2"
- is-glob "^3.1.0"
- lodash "^4.17.2"
- micromatch "^2.3.11"
+ is-glob "^4.0.0"
+ lodash "^4.17.5"
+ micromatch "^3.1.9"
http-proxy@^1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
dependencies:
- eventemitter3 "1.x.x"
- requires-port "1.x.x"
+ eventemitter3 "^3.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
http-signature@~1.1.0:
version "1.1.1"
@@ -3431,10 +3772,16 @@ https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
-iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+iconv-lite@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+iconv-lite@^0.4.17, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -3445,21 +3792,43 @@ icss-utils@^2.1.0:
dependencies:
postcss "^6.0.1"
-ieee754@^1.1.4:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ieee754@^1.1.11, ieee754@^1.1.4:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ dependencies:
+ minimatch "^3.0.4"
ignore@^3.3.3:
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
immutable@^3.8.2:
version "3.8.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
-import-local@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8"
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ dependencies:
+ import-from "^2.1.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ dependencies:
+ resolve-from "^3.0.0"
+
+import-local@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
dependencies:
pkg-dir "^2.0.0"
resolve-cwd "^2.0.0"
@@ -3531,13 +3900,31 @@ inquirer@^3.0.6:
strip-ansi "^4.0.0"
through "^2.3.6"
+inquirer@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.0.0.tgz#e8c20303ddc15bbfc2c12a6213710ccd9e1413d8"
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.0"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^6.1.0"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
internal-ip@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
dependencies:
meow "^3.3.0"
-interpret@^1.0.0:
+interpret@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
@@ -3569,9 +3956,9 @@ intl@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde"
-invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
dependencies:
loose-envify "^1.0.0"
@@ -3583,25 +3970,45 @@ ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
-ipaddr.js@1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+ipaddr.js@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ dependencies:
+ kind-of "^6.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
dependencies:
binary-extensions "^1.0.0"
-is-buffer@^1.0.2, is-buffer@^1.1.5:
+is-boolean-object@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
+
+is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -3612,19 +4019,47 @@ is-builtin-module@^1.0.0:
builtin-modules "^1.0.0"
is-callable@^1.1.1, is-callable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
is-ci@^1.0.10:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
dependencies:
ci-info "^1.0.0"
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ dependencies:
+ kind-of "^6.0.0"
+
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3639,15 +4074,21 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
-is-extendable@^0.1.1:
+is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-is-extglob@^2.1.0:
+is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -3679,14 +4120,11 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-my-json-valid@^2.12.4:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
+is-glob@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
+ is-extglob "^2.1.1"
is-nan@^1.2.1:
version "1.2.1"
@@ -3694,6 +4132,10 @@ is-nan@^1.2.1:
dependencies:
define-properties "^1.1.1"
+is-number-object@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
+
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -3706,13 +4148,21 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
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"
is-path-in-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
dependencies:
is-path-inside "^1.0.0"
@@ -3726,7 +4176,7 @@ is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-is-plain-object@^2.0.1:
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
dependencies:
@@ -3744,10 +4194,6 @@ is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -3755,13 +4201,17 @@ is-regex@^1.0.4:
has "^1.0.1"
is-resolvable@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+is-string@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64"
+
is-subset@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
@@ -3784,9 +4234,9 @@ is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-is-windows@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9"
+is-windows@^1.0.0, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
is-wsl@^1.1.0:
version "1.1.0"
@@ -3810,7 +4260,7 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
-isobject@^3.0.1:
+isobject@^3.0.0, isobject@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
@@ -3826,72 +4276,79 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954"
dependencies:
async "^2.1.4"
+ compare-versions "^3.1.0"
fileset "^2.0.2"
- istanbul-lib-coverage "^1.1.1"
- istanbul-lib-hook "^1.1.0"
- istanbul-lib-instrument "^1.9.1"
- istanbul-lib-report "^1.1.2"
- istanbul-lib-source-maps "^1.2.2"
- istanbul-reports "^1.1.3"
+ istanbul-lib-coverage "^1.2.0"
+ istanbul-lib-hook "^1.2.0"
+ istanbul-lib-instrument "^1.10.1"
+ istanbul-lib-report "^1.1.4"
+ istanbul-lib-source-maps "^1.2.4"
+ istanbul-reports "^1.3.0"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
-istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
+istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
-istanbul-lib-hook@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
+istanbul-lib-hook@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
dependencies:
- append-transform "^0.4.0"
+ append-transform "^1.0.0"
-istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
+istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.4.2:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babylon "^6.18.0"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.2.0"
semver "^5.3.0"
-istanbul-lib-report@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
+istanbul-lib-report@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5"
dependencies:
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.2.0"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
-istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
+istanbul-lib-source-maps@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
dependencies:
debug "^3.1.0"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.1.2"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
-istanbul-reports@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
+istanbul-lib-source-maps@^1.2.4:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
+ dependencies:
+ debug "^3.1.0"
+ istanbul-lib-coverage "^1.2.0"
+ mkdirp "^0.5.1"
+ rimraf "^2.6.1"
+ source-map "^0.5.3"
+
+istanbul-reports@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554"
dependencies:
handlebars "^4.0.3"
-javascript-natural-sort@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59"
-
jest-changed-files@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29"
@@ -4118,8 +4575,8 @@ jest@^21.2.1:
jest-cli "^21.2.1"
js-base64@^2.1.8, js-base64@^2.1.9:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa"
+ version "2.4.6"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.6.tgz#1d49f618bef43630cd191f4e122447acfdb947d8"
js-string-escape@1.0.1:
version "1.0.1"
@@ -4129,9 +4586,13 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+
+js-yaml@^3.11.0, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -4183,18 +4644,18 @@ jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-json-loader@^0.5.4:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
-
-json-parse-better-errors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -4231,10 +4692,6 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4244,27 +4701,21 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
-jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1:
+jsx-ast-utils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
dependencies:
array-includes "^3.0.3"
keycode@^2.1.7:
- version "2.1.9"
- resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
killable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
-kind-of@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
- dependencies:
- is-buffer "^1.0.2"
-
-kind-of@^3.0.2, kind-of@^3.2.2:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies:
@@ -4276,16 +4727,20 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
optionalDependencies:
graceful-fs "^4.1.9"
-lazy-cache@^0.2.3:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
-
lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
@@ -4348,7 +4803,7 @@ loader-utils@0.2.x:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
dependencies:
@@ -4363,50 +4818,15 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash-es@^4.2.0, lodash-es@^4.2.1:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
+lodash-es@^4.17.5, lodash-es@^4.2.1:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05"
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
+lodash._reinterpolate@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._bindcallback@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-
-lodash._createassigner@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
- dependencies:
- lodash._bindcallback "^3.0.0"
- lodash._isiterateecall "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
-lodash.assign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._createassigner "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash.assign@^4.0.1, lodash.assign@^4.2.0:
+lodash.assign@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
@@ -4418,18 +4838,11 @@ lodash.clonedeep@^4.3.2:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-lodash.cond@^4.3.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-lodash.defaults@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
- dependencies:
- lodash.assign "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash.defaults@^4.0.0, lodash.defaults@^4.0.1:
+lodash.defaults@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -4437,85 +4850,91 @@ lodash.flattendeep@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
lodash.mergewith@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
-
-lodash.restparam@^3.0.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
-
-lodash.sortby@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+lodash.template@^4.2.4:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
+
+log-symbols@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ dependencies:
+ chalk "^2.0.1"
loglevel@^1.4.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.0.tgz#ae0caa561111498c5ba13723d6fb631d24003934"
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
+
+loglevelnext@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2"
+ dependencies:
+ es6-symbol "^3.1.1"
+ object.assign "^4.1.0"
+
+long@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+
+long@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
dependencies:
- js-tokens "^3.0.0"
+ js-tokens "^3.0.0 || ^4.0.0"
-loud-rejection@^1.0.0:
+loud-rejection@^1.0.0, loud-rejection@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
dependencies:
currently-unhandled "^0.4.1"
signal-exit "^3.0.0"
-lru-cache@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
+lru-cache@^4.0.1, lru-cache@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
dependencies:
pseudomap "^1.0.2"
yallist "^2.1.2"
-macaddress@^0.2.8:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-
make-dir@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
dependencies:
pify "^3.0.0"
@@ -4525,6 +4944,14 @@ makeerror@1.0.x:
dependencies:
tmpl "1.0.x"
+mamacro@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
@@ -4533,6 +4960,12 @@ map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ dependencies:
+ object-visit "^1.0.0"
+
mark-loader@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5"
@@ -4545,17 +4978,9 @@ math-expression-evaluator@^1.2.14:
version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
-mathjs@^3.11.5:
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.17.0.tgz#9569d278874546175c9d0497d7417eb88fb61503"
- dependencies:
- complex.js "2.0.4"
- decimal.js "7.2.3"
- fraction.js "4.0.2"
- javascript-natural-sort "0.7.1"
- seed-random "2.2.0"
- tiny-emitter "2.0.0"
- typed-function "0.10.6"
+math-random@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
md5.js@^1.3.4:
version "1.3.4"
@@ -4604,7 +5029,7 @@ merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-merge@^1.1.3:
+merge@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
@@ -4612,7 +5037,7 @@ methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-micromatch@^2.1.5, micromatch@^2.3.11:
+micromatch@^2.3.11:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
@@ -4630,6 +5055,24 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
+micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -4637,35 +5080,43 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-"mime-db@>= 1.30.0 < 2":
- version "1.32.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
+"mime-db@>= 1.34.0 < 2":
+ version "1.34.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a"
-mime-db@~1.30.0:
- version "1.30.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
-mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
- version "2.1.17"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
dependencies:
- mime-db "~1.30.0"
+ mime-db "~1.33.0"
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-mime@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+mime@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369"
mimic-fn@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-minimalistic-assert@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+mini-css-extract-plugin@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz#d2bcf77bb2596b8e4bd9257e43d3f9164c2e86cb"
+ dependencies:
+ "@webpack-contrib/schema-utils" "^1.0.0-beta.0"
+ loader-utils "^1.1.0"
+ webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
@@ -4693,6 +5144,41 @@ minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+minipass@^2.2.1, minipass@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233"
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^2.0.1"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
mixin-object@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
@@ -4707,8 +5193,19 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd
minimist "0.0.8"
mousetrap@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.1.tgz#2a085f5c751294c75e7e81f6ec2545b29cbf42d9"
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz#caadd9cf886db0986fb2fee59a82f6bd37527587"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
ms@2.0.0:
version "2.0.0"
@@ -4719,36 +5216,73 @@ multicast-dns-service-types@^1.1.0:
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
multicast-dns@^6.0.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.1.tgz#c5035defa9219d30640558a49298067352098060"
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
dependencies:
- dns-packet "^1.0.1"
- thunky "^0.1.0"
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
-nan@^2.0.0, nan@^2.3.0, nan@^2.3.2:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+nan@^2.0.0, nan@^2.10.0, nan@^2.9.2:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
nearley@^2.7.10:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae"
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.13.0.tgz#6e7b0f4e68bfc3e74c99eaef2eda39e513143439"
dependencies:
nomnom "~1.6.2"
railroad-diagrams "^1.0.0"
- randexp "^0.4.2"
+ randexp "0.4.6"
+ semver "^5.4.1"
+
+needle@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
+ dependencies:
+ debug "^2.1.2"
+ 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"
+neo-async@^2.5.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee"
+
+next-tick@1:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
+
+nice-try@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
+
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
@@ -4756,23 +5290,22 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-forge@0.6.33:
- version "0.6.33"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
+node-forge@0.7.5:
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
node-gyp@^3.3.1:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203"
dependencies:
fstream "^1.0.0"
glob "^7.0.3"
graceful-fs "^4.1.2"
- minimatch "^3.0.2"
mkdirp "^0.5.0"
nopt "2 || 3"
npmlog "0 || 1 || 2 || 3 || 4"
osenv "0"
- request "2"
+ request ">=2.9.0 <2.82.0"
rimraf "2"
semver "~5.3.0"
tar "^2.0.0"
@@ -4811,15 +5344,30 @@ node-libs-browser@^2.0.0:
vm-browserify "0.0.4"
node-notifier@^5.0.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea"
dependencies:
growly "^1.3.0"
- semver "^5.3.0"
- shellwords "^0.1.0"
- which "^1.2.12"
+ semver "^5.4.1"
+ shellwords "^0.1.1"
+ which "^1.3.0"
-node-pre-gyp@^0.6.39, node-pre-gyp@^0.6.4:
+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"
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+node-pre-gyp@^0.6.4:
version "0.6.39"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
dependencies:
@@ -4835,9 +5383,9 @@ node-pre-gyp@^0.6.39, node-pre-gyp@^0.6.4:
tar "^2.2.1"
tar-pack "^3.4.0"
-node-sass@^4.7.2:
- version "4.7.2"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
+node-sass@^4.9.2:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437"
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
@@ -4851,10 +5399,10 @@ node-sass@^4.7.2:
lodash.mergewith "^4.6.0"
meow "^3.7.0"
mkdirp "^0.5.1"
- nan "^2.3.2"
+ nan "^2.10.0"
node-gyp "^3.3.1"
npmlog "^4.0.0"
- request "~2.79.0"
+ request "2.87.0"
sass-graph "^2.2.4"
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
@@ -4897,7 +5445,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1:
+normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
@@ -4916,13 +5464,24 @@ normalize-url@^1.4.0:
query-string "^4.1.0"
sort-keys "^1.0.0"
+npm-bundled@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
+
+npm-packlist@^1.1.6:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a"
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
npm-run-all@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.2.tgz#90d62d078792d20669139e718621186656cea056"
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.3.tgz#49f15b55a66bb4101664ce270cb18e7103f8f185"
dependencies:
ansi-styles "^3.2.0"
chalk "^2.1.0"
- cross-spawn "^5.1.0"
+ cross-spawn "^6.0.4"
memorystream "^0.3.1"
minimatch "^3.0.4"
ps-tree "^1.1.0"
@@ -4960,8 +5519,8 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
"nwmatcher@>= 1.3.9 < 2.0.0":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
oauth-sign@~0.8.1, oauth-sign@~0.8.2:
version "0.8.2"
@@ -4975,29 +5534,44 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
object-fit-images@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.3.tgz#4089f6d0070a3b5563d3c1ab6f1b28d61331f0ac"
+object-inspect@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
+
object-is@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
-object-keys@^1.0.10, object-keys@^1.0.8:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+object-keys@^1.0.11, object-keys@^1.0.8:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
-object-path@^0.9.2:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ dependencies:
+ isobject "^3.0.0"
-object.assign@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+object.assign@^4.0.4, object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
dependencies:
define-properties "^1.1.2"
- function-bind "^1.1.0"
- object-keys "^1.0.10"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
object.entries@^1.0.4:
version "1.0.4"
@@ -5015,6 +5589,12 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ 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"
@@ -5025,14 +5605,14 @@ object.values@^1.0.4:
has "^1.0.1"
obuf@^1.0.0, obuf@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
-offline-plugin@^4.8.3:
- version "4.8.4"
- resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.8.4.tgz#1084c59f6606bded5ee5a6bf6208e2b9f5bdd339"
+offline-plugin@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.5.tgz#e9b16c569d19899af9c923f5bc260705578ffeba"
dependencies:
- deep-extend "^0.4.0"
+ deep-extend "^0.5.1"
ejs "^2.3.4"
loader-utils "0.2.x"
minimatch "^3.0.3"
@@ -5048,7 +5628,7 @@ on-headers@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-once@^1.3.0, once@^1.3.3, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@@ -5065,8 +5645,8 @@ opener@^1.4.3:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
opn@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
dependencies:
is-wsl "^1.1.0"
@@ -5089,16 +5669,16 @@ optionator@^0.8.1, optionator@^0.8.2:
wordwrap "~1.0.0"
original@>=0.0.5:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190"
dependencies:
- url-parse "1.0.x"
+ url-parse "~1.4.0"
os-browserify@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
-os-homedir@^1.0.0, os-homedir@^1.0.1:
+os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -5121,8 +5701,8 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
osenv@0, osenv@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
dependencies:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
@@ -5136,8 +5716,10 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
p-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ dependencies:
+ p-try "^1.0.0"
p-locate@^2.0.0:
version "2.0.0"
@@ -5149,6 +5731,10 @@ p-map@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+
packet-reader@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz#cd62e60af8d7fea8a705ec4ff990871c46871f27"
@@ -5157,9 +5743,17 @@ pako@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
parse-asn1@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
dependencies:
asn1.js "^4.0.0"
browserify-aes "^1.0.0"
@@ -5196,12 +5790,6 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
-parse-json@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-3.0.0.tgz#fa6f47b18e23826ead32f263e744d0e1e847fb13"
- dependencies:
- error-ex "^1.3.1"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -5223,13 +5811,21 @@ parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
path-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-path-complete-extname@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-0.1.0.tgz#c454702669f31452f8193aa6168915fa31692f4a"
+path-complete-extname@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b"
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
path-exists@^2.0.0:
version "2.1.0"
@@ -5249,7 +5845,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-path-key@^2.0.0:
+path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -5294,8 +5890,8 @@ pause-stream@0.0.11:
through "~2.3"
pbkdf2@^3.0.3:
- version "3.0.14"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+ version "3.0.16"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
@@ -5397,11 +5993,24 @@ portfinder@^1.0.9:
debug "^2.2.0"
mkdirp "0.5.x"
-postcss-advanced-variables@1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-1.2.2.tgz#90a6213262e66a050a368b4a9c5d4778d72dbd74"
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
+postcss-advanced-variables@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-2.3.3.tgz#80ac5b05988d02f63352974491e319910f33337e"
dependencies:
- postcss "^5.0.10"
+ "@csstools/sass-import-resolve" "^1"
+ postcss "^6"
+
+postcss-apply@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.9.0.tgz#a152e6e34a6c55d0895751929319c262c5d8c289"
+ dependencies:
+ babel-runtime "^6.23.0"
+ balanced-match "^0.4.2"
+ postcss "^6.0.0"
postcss-atroot@^0.1.3:
version "0.1.3"
@@ -5409,6 +6018,13 @@ postcss-atroot@^0.1.3:
dependencies:
postcss "^5.0.5"
+postcss-attribute-case-insensitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz#94dc422c8f90997f16bd33a3654bbbec084963b4"
+ dependencies:
+ postcss "^6.0.0"
+ postcss-selector-parser "^2.2.3"
+
postcss-calc@^5.2.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
@@ -5417,13 +6033,34 @@ postcss-calc@^5.2.0:
postcss-message-helpers "^2.0.0"
reduce-css-calc "^1.2.6"
-postcss-color-function@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-function/-/postcss-color-function-4.0.1.tgz#402b3f2cebc3f6947e618fb6be3654fbecef6444"
+postcss-color-hex-alpha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz#1e53e6c8acb237955e8fd08b7ecdb1b8b8309f95"
dependencies:
- css-color-function "~1.3.3"
+ color "^1.0.3"
postcss "^6.0.1"
postcss-message-helpers "^2.0.0"
+
+postcss-color-mod-function@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-2.4.2.tgz#bdf408f152bc3201517a4c38b7eb5cd2996114fb"
+ dependencies:
+ "@csstools/convert-colors" "^1.4.0"
+ postcss "^6.0.19"
+ postcss-values-parser "^1.3.2"
+
+postcss-color-rebeccapurple@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz#ce1269ecc2d0d8bf92aab44bd884e633124c33ec"
+ dependencies:
+ postcss "^6.0.22"
+ postcss-values-parser "^1.5.0"
+
+postcss-color-rgb@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz#14539c8a7131494b482e0dd1cc265ff6514b5263"
+ dependencies:
+ postcss "^6.0.1"
postcss-value-parser "^3.3.0"
postcss-colormin@^2.1.8:
@@ -5447,12 +6084,12 @@ postcss-custom-media@^6.0.0:
dependencies:
postcss "^6.0.1"
-postcss-custom-properties@^6.1.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz#5d929a7f06e9b84e0f11334194c0ba9a30acfbe9"
+postcss-custom-properties@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-7.0.0.tgz#24dc4fbe6d6ed550ea4fd3b11204660e9ffa3b33"
dependencies:
balanced-match "^1.0.0"
- postcss "^6.0.13"
+ postcss "^6.0.18"
postcss-custom-selectors@^4.0.1:
version "4.0.1"
@@ -5461,6 +6098,13 @@ postcss-custom-selectors@^4.0.1:
postcss "^6.0.1"
postcss-selector-matches "^3.0.0"
+postcss-dir-pseudo-class@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-3.0.0.tgz#31a18af3b9b1b33be635599b998a9829896c3fed"
+ dependencies:
+ postcss "^6.0.20"
+ postcss-selector-parser "^3.1.1"
+
postcss-discard-comments@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
@@ -5492,67 +6136,65 @@ postcss-discard-unused@^2.2.1:
postcss "^5.0.14"
uniqs "^2.0.0"
-postcss-extend@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7"
+postcss-extend-rule@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-extend-rule/-/postcss-extend-rule-1.1.0.tgz#11e4d590ffe4253b853ef1fc03be7167da607d38"
dependencies:
- postcss "^5.0.4"
+ postcss "^6.0.11"
+ postcss-nesting "^4.2.1"
postcss-filter-plugins@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
dependencies:
postcss "^5.0.4"
- uniqid "^4.0.0"
-postcss-import@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-10.0.0.tgz#4c85c97b099136cc5ea0240dc1dfdbfde4e2ebbe"
+postcss-focus-visible@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-2.0.0.tgz#a6b9881f6710f6251790e2f151c94b161e23eeb6"
+ dependencies:
+ postcss "^6.0"
+
+postcss-font-family-system-ui@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz#675fe7a9e029669f05f8dba2e44c2225ede80623"
+ dependencies:
+ postcss "^6.0"
+
+postcss-font-variant@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz#08ccc88f6050ba82ed8ef2cc76c0c6a6b41f183e"
dependencies:
- object-assign "^4.0.1"
postcss "^6.0.1"
- postcss-value-parser "^3.2.3"
- read-cache "^1.0.0"
- resolve "^1.1.7"
-postcss-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-1.0.1.tgz#ffaf29226e399ea74b5dce02cab1729d7addbc7b"
+postcss-initial@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz#72715f7336e0bb79351d99ee65c4a253a8441ba4"
dependencies:
- camelcase-css "^1.0.1"
- postcss "^6.0.11"
+ lodash.template "^4.2.4"
+ postcss "^6.0.1"
-postcss-load-config@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+postcss-load-config@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
- postcss-load-options "^1.2.0"
- postcss-load-plugins "^2.3.0"
+ cosmiconfig "^4.0.0"
+ import-cwd "^2.0.0"
-postcss-load-options@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
- dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
-
-postcss-load-plugins@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
- dependencies:
- cosmiconfig "^2.1.1"
- object-assign "^4.1.0"
-
-postcss-loader@^2.0.9:
- version "2.0.9"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.9.tgz#001fdf7bfeeb159405ee61d1bb8e59b528dbd309"
+postcss-loader@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740"
dependencies:
loader-utils "^1.1.0"
postcss "^6.0.0"
- postcss-load-config "^1.2.0"
- schema-utils "^0.3.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^0.4.0"
+
+postcss-logical@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-1.1.1.tgz#bcabf0638d8aa747743b32bc52f9d90d4a3313d2"
+ dependencies:
+ postcss "^6.0.20"
postcss-media-minmax@^3.0.0:
version "3.0.0"
@@ -5621,51 +6263,41 @@ postcss-minify-selectors@^2.0.4:
postcss "^5.0.14"
postcss-selector-parser "^2.0.0"
-postcss-mixins@^6.0.1:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-6.2.0.tgz#fa9d2c2166b2ae7745956c727ab9dd2de4b96a40"
- dependencies:
- globby "^6.1.0"
- postcss "^6.0.13"
- postcss-js "^1.0.1"
- postcss-simple-vars "^4.1.0"
- sugarss "^1.0.0"
-
-postcss-modules-extract-imports@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"
+postcss-modules-extract-imports@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
dependencies:
postcss "^6.0.1"
-postcss-modules-local-by-default@^1.0.1:
+postcss-modules-local-by-default@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^6.0.1"
-postcss-modules-scope@^1.0.0:
+postcss-modules-scope@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^6.0.1"
-postcss-modules-values@^1.1.0:
+postcss-modules-values@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
dependencies:
icss-replace-symbols "^1.1.0"
postcss "^6.0.1"
-postcss-nested@^2.0.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-2.1.2.tgz#04057281f9631fef684857fb0119bae04ede03c6"
+postcss-nested@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852"
dependencies:
- postcss "^6.0.9"
- postcss-selector-parser "^2.2.3"
+ postcss "^6.0.14"
+ postcss-selector-parser "^3.1.1"
-postcss-nesting@^4.0.1:
+postcss-nesting@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz#0483bce338b3f0828ced90ff530b29b98b00300d"
dependencies:
@@ -5701,20 +6333,58 @@ postcss-ordered-values@^2.1.0:
postcss "^5.0.4"
postcss-value-parser "^3.0.1"
-postcss-partial-import@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-partial-import/-/postcss-partial-import-4.1.0.tgz#f6c3e78e7bbeda4d9dab96d360367b90b353f9a4"
+postcss-page-break@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-1.0.0.tgz#09a63b6e03db092d38569b33dcba42a343ace60b"
dependencies:
- glob "^7.1.1"
- postcss-import "^10.0.0"
+ postcss "^6.0.16"
-postcss-property-lookup@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-1.2.1.tgz#30450a1361b7aae758bbedd5201fbe057bb8270b"
+postcss-preset-env@^3.2.2:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-3.5.0.tgz#b3aae2c65e5b3fa61d735b70392fa758a665b785"
+ dependencies:
+ "@csstools/postcss-image-set-function" "^1.0.0"
+ browserslist "^3.2.4"
+ caniuse-lite "^1.0.30000823"
+ cssdb "^1.6.0"
+ postcss "^6.0.21"
+ postcss-apply "^0.9.0"
+ postcss-attribute-case-insensitive "^2.0.0"
+ postcss-color-hex-alpha "^3.0.0"
+ postcss-color-mod-function "^2.4.2"
+ postcss-color-rebeccapurple "^3.0.0"
+ postcss-color-rgb "^2.0.0"
+ postcss-custom-media "^6.0.0"
+ postcss-custom-properties "^7.0.0"
+ postcss-custom-selectors "^4.0.1"
+ postcss-dir-pseudo-class "^3.0.0"
+ postcss-focus-visible "^2.0.0"
+ postcss-font-family-system-ui "^3.0.0"
+ postcss-font-variant "^3.0.0"
+ postcss-initial "^2.0.0"
+ postcss-logical "^1.1.1"
+ postcss-media-minmax "^3.0.0"
+ postcss-nesting "^4.2.1"
+ postcss-page-break "^1.0.0"
+ postcss-pseudo-class-any-link "^4.0.0"
+ postcss-replace-overflow-wrap "^2.0.0"
+ postcss-selector-matches "^3.0.1"
+ postcss-selector-not "^3.0.1"
+
+postcss-property-lookup@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-2.0.0.tgz#c995d1df42a75420f2aea834c2cbe296b2c15922"
dependencies:
object-assign "^4.0.1"
- postcss "^5.0.4"
- tcomb "^2.5.1"
+ postcss "^6.0.6"
+ tcomb "^3.2.21"
+
+postcss-pseudo-class-any-link@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz#9152a0613d3450720513e8892854bae42d0ee68e"
+ dependencies:
+ postcss "^6.0.1"
+ postcss-selector-parser "^2.2.3"
postcss-reduce-idents@^2.2.2:
version "2.4.0"
@@ -5737,19 +6407,24 @@ postcss-reduce-transforms@^1.0.3:
postcss "^5.0.8"
postcss-value-parser "^3.0.1"
-postcss-sass@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.1.0.tgz#0d2a655b5d241ec8f419bb3da38de5ca11746ddb"
+postcss-replace-overflow-wrap@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz#794db6faa54f8db100854392a93af45768b4e25b"
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-sass@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz#e55516441e9526ba4b380a730d3a02e9eaa78c7a"
dependencies:
gonzales-pe "^4.0.3"
- mathjs "^3.11.5"
- postcss "^5.2.6"
+ postcss "^6.0.6"
postcss-scss@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94"
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.6.tgz#ab903f3bb20161bc177896462293a53d4bff5f7a"
dependencies:
- postcss "^6.0.3"
+ postcss "^6.0.23"
postcss-selector-matches@^3.0.0, postcss-selector-matches@^3.0.1:
version "3.0.1"
@@ -5773,27 +6448,29 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2, postcss-selector
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-simple-vars@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-4.1.0.tgz#043248cfef8d3f51b3486a28c09f8375dbf1b2f9"
+postcss-selector-parser@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
dependencies:
- postcss "^6.0.9"
+ dot-prop "^4.1.1"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
-postcss-smart-import@^0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.5.tgz#df9a9c6dd60d916e5e0670d1c57d03af5d3dcc31"
+postcss-smart-import@^0.7.6:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz#259deb84aa28f138458218ecc0e9a84c61ada6a4"
dependencies:
- babel-runtime "^6.23.0"
+ babel-runtime "^6.26.0"
lodash "^4.17.4"
object-assign "^4.1.1"
- postcss "^6.0.6"
- postcss-sass "^0.1.0"
+ postcss "^6.0.14"
+ postcss-sass "^0.2.0"
postcss-scss "^1.0.2"
postcss-value-parser "^3.3.0"
promise-each "^2.2.0"
read-cache "^1.0.0"
- resolve "^1.3.3"
- sugarss "^1.0.0"
+ resolve "^1.5.0"
+ sugarss "^1.0.1"
postcss-svgo@^2.1.1:
version "2.1.6"
@@ -5816,6 +6493,14 @@ postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^
version "3.3.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+postcss-values-parser@^1.3.2, postcss-values-parser@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047"
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
postcss-zindex@^2.0.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
@@ -5824,7 +6509,7 @@ postcss-zindex@^2.0.1:
postcss "^5.0.4"
uniqs "^2.0.0"
-postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16, postcss@^5.2.6:
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
version "5.2.18"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
dependencies:
@@ -5833,13 +6518,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
source-map "^0.5.6"
supports-color "^3.2.3"
-postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.9:
- version "6.0.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885"
+postcss@^6, postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0.18, postcss@^6.0.19, postcss@^6.0.20, postcss@^6.0.21, postcss@^6.0.22, postcss@^6.0.23, postcss@^6.0.6:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
dependencies:
- chalk "^2.3.0"
+ chalk "^2.4.1"
source-map "^0.6.1"
- supports-color "^4.4.0"
+ supports-color "^5.4.0"
postgres-array@~1.0.0:
version "1.0.2"
@@ -5854,8 +6539,8 @@ postgres-date@~1.0.0:
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8"
postgres-interval@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.1.tgz#acdb0f897b4b1c6e496d9d4e0a853e1c428f06f0"
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz#bf71ff902635f21cb241a013fc421d81d1db15a9"
dependencies:
xtend "^4.0.0"
@@ -5863,26 +6548,17 @@ precond@0.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac"
-precss@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/precss/-/precss-2.0.0.tgz#7f567e3318e06d44c8fdbf9e58452e8358bf4b71"
+precss@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/precss/-/precss-3.1.2.tgz#c82c0aa4ca5fe1e879799d697db0fac6d15d23bc"
dependencies:
- postcss "^6.0.3"
- postcss-advanced-variables "1.2.2"
+ postcss "^6.0.19"
+ postcss-advanced-variables "^2.3.3"
postcss-atroot "^0.1.3"
- postcss-color-function "^4.0.0"
- postcss-custom-media "^6.0.0"
- postcss-custom-properties "^6.1.0"
- postcss-custom-selectors "^4.0.1"
- postcss-extend "^1.0.5"
- postcss-media-minmax "^3.0.0"
- postcss-mixins "^6.0.1"
- postcss-nested "^2.0.2"
- postcss-nesting "^4.0.1"
- postcss-partial-import "^4.1.0"
- postcss-property-lookup "^1.2.1"
- postcss-selector-matches "^3.0.1"
- postcss-selector-not "^3.0.1"
+ postcss-extend-rule "^1.1.0"
+ postcss-nested "^3.0.0"
+ postcss-preset-env "^3.2.2"
+ postcss-property-lookup "^2.0.0"
prelude-ls@~1.1.2:
version "1.1.2"
@@ -5903,13 +6579,13 @@ pretty-format@^21.2.1:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
-private@^0.1.6, private@^0.1.7:
+private@^0.1.6, private@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
process@^0.11.10:
version "0.11.10"
@@ -5925,6 +6601,10 @@ promise-each@^2.2.0:
dependencies:
any-promise "^0.1.0"
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -5932,29 +6612,29 @@ promise@^7.1.1:
asap "~2.0.3"
prop-types-extra@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.0.1.tgz#a57bd4810e82d27a3ff4317ecc1b4ad005f79a82"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz#32609910ea2dcf190366bacd3490d5a6412a605f"
dependencies:
+ react-is "^16.3.2"
warning "^3.0.0"
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0:
- version "15.6.0"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, 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"
dependencies:
- fbjs "^0.8.16"
loose-envify "^1.3.1"
object-assign "^4.1.1"
-proxy-addr@~2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
+proxy-addr@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
dependencies:
forwarded "~0.1.2"
- ipaddr.js "1.5.2"
+ ipaddr.js "1.6.0"
-prr@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
ps-tree@^1.1.0:
version "1.1.0"
@@ -5966,9 +6646,13 @@ pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+psl@^1.1.24:
+ version "1.1.28"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b"
+
public-encrypt@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
dependencies:
bn.js "^4.1.0"
browserify-rsa "^4.0.0"
@@ -5976,6 +6660,21 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
+pump@^2.0.0, pump@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
@@ -5985,25 +6684,25 @@ punycode@^1.2.4, punycode@^1.4.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-qs@6.5.1, qs@~6.5.1:
+qs@6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
-qs@~6.3.0:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
-
qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+qs@~6.5.1:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+
query-string@^4.1.0:
version "4.3.4"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
@@ -6019,13 +6718,9 @@ querystring@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-querystringify@0.0.x:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
-
-querystringify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+querystringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755"
quote@^0.4.0:
version "0.4.0"
@@ -6041,33 +6736,34 @@ railroad-diagrams@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
-rails-ujs@^5.1.2:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.1.4.tgz#e2e9f7bcbfe51ee69c5f72f4beb0d88ab81a638e"
+rails-ujs@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.0.tgz#d93f7a969a226c0ae67044172955be8c1cdf49fc"
-randexp@^0.4.2:
+randexp@0.4.6:
version "0.4.6"
resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
dependencies:
discontinuous-range "1.0.0"
ret "~0.1.10"
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+randomatic@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
dependencies:
safe-buffer "^5.1.0"
randomfill@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62"
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
dependencies:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
@@ -6085,32 +6781,31 @@ raw-body@2.3.2:
iconv-lite "0.4.19"
unpipe "1.0.0"
-rc@^1.1.7:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
+rc@^1.1.7, rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
dependencies:
- deep-extend "~0.4.0"
+ deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-dom@^16.3.0:
- version "16.3.2"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.3.2.tgz#cb90f107e09536d683d84ed5d4888e9640e0e4df"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.0"
-react-event-listener@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.5.1.tgz#ba36076e47bc37c5a67ff5ccd4a9ff0f15621040"
+react-event-listener@^0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.1.tgz#41c7a80a66b398c27dd511e22712b02f3d4eccca"
dependencies:
- babel-runtime "^6.26.0"
- fbjs "^0.8.16"
+ "@babel/runtime" "^7.0.0-beta.42"
prop-types "^15.6.0"
- warning "^3.0.0"
+ warning "^4.0.1"
react-hotkeys@^0.10.0:
version "0.10.0"
@@ -6126,14 +6821,14 @@ react-immutable-proptypes@^2.1.0:
resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4"
react-immutable-pure-component@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.1.1.tgz#0ff69c6d4eaecd886db16805f3bbc1d2a2c654d8"
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.2.tgz#772c8591720def73e4dc1c8e5c8bb39472ff7925"
-react-intl-translations-manager@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.1.tgz#f0ef1a9368abcac3b10b2e8b6027887dced5474e"
+react-intl-translations-manager@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz#aee010ecf35975673e033ca5d7d3f4147894324d"
dependencies:
- chalk "^2.1.0"
+ chalk "^2.3.2"
glob "^7.1.2"
json-stable-stringify "^1.0.1"
mkdirp "^0.5.1"
@@ -6147,6 +6842,14 @@ react-intl@^2.4.0:
intl-relativeformat "^2.0.0"
invariant "^2.1.1"
+react-is@^16.3.2, react-is@^16.4.1:
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.1.tgz#d624c4650d2c65dbd52c72622bbf389435d9776e"
+
+react-lifecycles-compat@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+
react-motion@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316"
@@ -6172,6 +6875,15 @@ react-overlays@^0.8.3:
react-transition-group "^2.2.0"
warning "^3.0.0"
+react-reconciler@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.7.0.tgz#9614894103e5f138deeeb5eabaf3ee80eb1d026d"
+ dependencies:
+ fbjs "^0.8.16"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.0"
+
react-redux-loading-bar@^2.9.3:
version "2.9.3"
resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-2.9.3.tgz#65865dddcbf597169e787edec15eec7ebfb84149"
@@ -6179,26 +6891,26 @@ react-redux-loading-bar@^2.9.3:
prop-types "^15.5.6"
react-redux@^5.0.4:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
dependencies:
- hoist-non-react-statics "^2.2.1"
+ hoist-non-react-statics "^2.5.0"
invariant "^2.0.0"
- lodash "^4.2.0"
- lodash-es "^4.2.0"
+ lodash "^4.17.5"
+ lodash-es "^4.17.5"
loose-envify "^1.1.0"
- prop-types "^15.5.10"
+ prop-types "^15.6.0"
react-router-dom@^4.1.1:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d"
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6"
dependencies:
history "^4.7.2"
- invariant "^2.2.2"
+ invariant "^2.2.4"
loose-envify "^1.3.1"
- prop-types "^15.5.4"
- react-router "^4.2.0"
- warning "^3.0.0"
+ prop-types "^15.6.1"
+ react-router "^4.3.1"
+ warning "^4.0.1"
react-router-scroll-4@^1.0.0-beta.1:
version "1.0.0-beta.1"
@@ -6208,17 +6920,17 @@ react-router-scroll-4@^1.0.0-beta.1:
scroll-behavior "^0.9.1"
warning "^3.0.0"
-react-router@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986"
+react-router@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e"
dependencies:
history "^4.7.2"
- hoist-non-react-statics "^2.3.0"
- invariant "^2.2.2"
+ hoist-non-react-statics "^2.5.0"
+ invariant "^2.2.4"
loose-envify "^1.3.1"
path-to-regexp "^1.7.0"
- prop-types "^15.5.4"
- warning "^3.0.0"
+ prop-types "^15.6.1"
+ warning "^4.0.1"
react-sparklines@^1.7.0:
version "1.7.0"
@@ -6226,42 +6938,43 @@ react-sparklines@^1.7.0:
dependencies:
prop-types "^15.5.10"
-react-swipeable-views-core@^0.12.11:
- version "0.12.11"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.11.tgz#3cf2b4daffbb36f9d69bd19bf5b2d5370b6b2c1b"
+react-swipeable-views-core@^0.12.11, react-swipeable-views-core@^0.12.14:
+ version "0.12.14"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.14.tgz#65271fd18dd9b359e39392fe065a8067e0d7bfdb"
dependencies:
- babel-runtime "^6.23.0"
- warning "^3.0.0"
+ "@babel/runtime" "^7.0.0-beta.42"
+ warning "^4.0.1"
-react-swipeable-views-utils@^0.12.11:
- version "0.12.11"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.11.tgz#3c9a6a2b8dbdcc331a5d107419578f57b7e101d6"
+react-swipeable-views-utils@^0.12.13:
+ version "0.12.14"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.14.tgz#7ba72ea8eff8149f2c50ed8abc6fb21d1e0de227"
dependencies:
- babel-runtime "^6.23.0"
+ "@babel/runtime" "^7.0.0-beta.42"
fbjs "^0.8.4"
keycode "^2.1.7"
prop-types "^15.6.0"
- react-event-listener "^0.5.1"
- react-swipeable-views-core "^0.12.11"
+ react-event-listener "^0.6.0"
+ react-swipeable-views-core "^0.12.14"
-react-swipeable-views@^0.12.3:
- version "0.12.12"
- resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.12.tgz#60cdc8e3682ed082aaf094f7761eaf691ed28a6f"
+react-swipeable-views@0.12.13:
+ version "0.12.13"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.13.tgz#247442dbe14922efe5ad6fe0297599c817600bf9"
dependencies:
babel-runtime "^6.23.0"
dom-helpers "^3.2.1"
prop-types "^15.5.4"
react-swipeable-views-core "^0.12.11"
- react-swipeable-views-utils "^0.12.11"
+ react-swipeable-views-utils "^0.12.13"
warning "^3.0.0"
react-test-renderer@^16.0.0-0, react-test-renderer@^16.2.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.1.tgz#f2fb30c2c7b517db6e5b10ed20bb6b0a7ccd8d70"
dependencies:
fbjs "^0.8.16"
object-assign "^4.1.1"
prop-types "^15.6.0"
+ react-is "^16.4.1"
react-textarea-autosize@^5.2.1:
version "5.2.1"
@@ -6276,19 +6989,17 @@ react-toggle@^4.0.1:
classnames "^2.2.5"
react-transition-group@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.1.tgz#e9fb677b79e6455fd391b03823afe84849df4a10"
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a"
dependencies:
- chain-function "^1.0.0"
- classnames "^2.2.5"
- dom-helpers "^3.2.0"
+ dom-helpers "^3.3.1"
loose-envify "^1.3.1"
- prop-types "^15.5.8"
- warning "^3.0.0"
+ prop-types "^15.6.2"
+ react-lifecycles-compat "^3.0.4"
react@^16.3.0:
- version "16.3.2"
- resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
@@ -6339,16 +7050,16 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
path-type "^3.0.0"
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
- process-nextick-args "~1.0.6"
+ process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
+ string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readdirp@^2.0.0:
@@ -6368,8 +7079,8 @@ redent@^1.0.0:
strip-indent "^1.0.1"
redis-commands@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b"
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2"
redis-parser@^2.6.0:
version "2.6.0"
@@ -6402,8 +7113,8 @@ redux-immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3"
redux-thunk@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5"
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
redux@^3.7.1:
version "3.7.2"
@@ -6415,12 +7126,16 @@ redux@^3.7.1:
symbol-observable "^1.0.3"
regenerate@^1.2.1:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
regenerator-runtime@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+
+regenerator-runtime@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz#8052ac952d85b10f3425192cd0c53f45cf65c6cb"
regenerator-transform@^0.10.0:
version "0.10.1"
@@ -6436,9 +7151,12 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
-regex-parser@^2.2.1:
- version "2.2.8"
- resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.8.tgz#da4c0cda5a828559094168930f455f532b6ffbac"
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
regexpp@^1.0.1:
version "1.1.0"
@@ -6470,6 +7188,10 @@ regjsparser@^0.1.4:
dependencies:
jsesc "~0.5.0"
+rellax@^1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.6.2.tgz#b22c8715f56324fa8b396465d3dca9953b711f30"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -6478,7 +7200,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-repeat-string@^1.5.2:
+repeat-string@^1.5.2, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@@ -6488,34 +7210,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request@2, request@^2.79.0:
- version "2.83.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.6.0"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.1"
- forever-agent "~0.6.1"
- form-data "~2.3.1"
- har-validator "~5.0.3"
- hawk "~6.0.2"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.17"
- oauth-sign "~0.8.2"
- performance-now "^2.1.0"
- qs "~6.5.1"
- safe-buffer "^5.1.1"
- stringstream "~0.0.5"
- tough-cookie "~2.3.3"
- tunnel-agent "^0.6.0"
- uuid "^3.1.0"
-
-request@2.81.0:
+request@2.81.0, "request@>=2.9.0 <2.82.0":
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@@ -6542,30 +7237,30 @@ request@2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
-request@~2.79.0:
- version "2.79.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+request@2.87.0, request@^2.79.0:
+ version "2.87.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.11.0"
+ aws-sign2 "~0.7.0"
+ aws4 "^1.6.0"
+ caseless "~0.12.0"
combined-stream "~1.0.5"
- extend "~3.0.0"
+ extend "~3.0.1"
forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~2.0.6"
- hawk "~3.1.3"
- http-signature "~1.1.0"
+ form-data "~2.3.1"
+ har-validator "~5.0.3"
+ http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- qs "~6.3.0"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "~0.4.1"
- uuid "^3.0.0"
+ mime-types "~2.1.17"
+ oauth-sign "~0.8.2"
+ performance-now "^2.1.0"
+ qs "~6.5.1"
+ safe-buffer "^5.1.1"
+ tough-cookie "~2.3.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.1.0"
requestidlecallback@^0.3.0:
version "0.3.0"
@@ -6575,13 +7270,9 @@ require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-require-from-string@^1.1.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
-
require-from-string@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
require-main-filename@^1.0.1:
version "1.0.1"
@@ -6598,7 +7289,7 @@ require-uncached@^1.0.3:
caller-path "^0.1.0"
resolve-from "^1.0.0"
-requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
@@ -6624,21 +7315,7 @@ resolve-pathname@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879"
-resolve-url-loader@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.2.0.tgz#9662feaa11debf7cf8e3feb91dae9544aa7dee88"
- dependencies:
- adjust-sourcemap-loader "^1.1.0"
- camelcase "^4.0.0"
- convert-source-map "^1.1.1"
- loader-utils "^1.0.0"
- lodash.defaults "^4.0.0"
- rework "^1.0.1"
- rework-visit "^1.0.0"
- source-map "^0.5.6"
- urix "^0.1.0"
-
-resolve-url@~0.2.1:
+resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -6646,9 +7323,9 @@ resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.1.7, resolve@^1.3.3, resolve@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+resolve@^1.5.0, resolve@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
dependencies:
path-parse "^1.0.5"
@@ -6663,38 +7340,23 @@ ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-rework-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
-
-rework@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
- dependencies:
- convert-source-map "^0.3.3"
- css "^2.0.0"
-
-rgb@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/rgb/-/rgb-0.1.0.tgz#be27b291e8feffeac1bd99729721bfa40fc037b5"
-
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
dependencies:
align-text "^0.1.1"
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
glob "^7.0.5"
ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
dependencies:
- hash-base "^2.0.0"
+ hash-base "^3.0.0"
inherits "^2.0.1"
rst-selector-parser@^2.2.3:
@@ -6704,12 +7366,22 @@ rst-selector-parser@^2.2.3:
lodash.flattendeep "^4.4.0"
nearley "^2.7.10"
+rsvp@^3.3.3:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
dependencies:
is-promise "^2.1.0"
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ dependencies:
+ aproba "^1.1.1"
+
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
@@ -6720,23 +7392,44 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+rxjs@^6.1.0:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-sane@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56"
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
dependencies:
- anymatch "^1.3.0"
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+
+sane@^2.0.0:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa"
+ dependencies:
+ anymatch "^2.0.0"
+ capture-exit "^1.2.0"
exec-sh "^0.2.0"
fb-watchman "^2.0.0"
- minimatch "^3.0.2"
+ micromatch "^3.1.4"
minimist "^1.1.1"
walker "~1.0.5"
watch "~0.18.0"
optionalDependencies:
- fsevents "^1.1.1"
+ fsevents "^1.2.3"
sass-graph@^2.2.4:
version "2.2.4"
@@ -6747,29 +7440,30 @@ sass-graph@^2.2.4:
scss-tokenizer "^0.2.3"
yargs "^7.0.0"
-sass-loader@^6.0.6:
- version "6.0.6"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9"
+sass-loader@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.0.3.tgz#6ca10871a1cc7549f8143db5a9958242c4e4ca2a"
dependencies:
- async "^2.1.5"
- clone-deep "^0.3.0"
+ clone-deep "^2.0.1"
loader-utils "^1.0.1"
lodash.tail "^4.1.1"
+ neo-async "^2.5.0"
pify "^3.0.0"
-sax@^1.2.1, sax@~1.2.1:
+sax@^1.2.1, sax@^1.2.4, sax@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-schema-utils@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
dependencies:
- ajv "^5.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
scroll-behavior@^0.9.1:
- version "0.9.5"
- resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.5.tgz#41da30b559da004eb48450f6cff6068c7696ff23"
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz#ebfe0658455b82ad885b66195215416674dacce2"
dependencies:
dom-helpers "^3.2.1"
invariant "^2.2.2"
@@ -6781,23 +7475,19 @@ scss-tokenizer@^0.2.3:
js-base64 "^2.1.8"
source-map "^0.4.2"
-seed-random@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54"
-
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
selfsigned@^1.9.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52"
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823"
dependencies:
- node-forge "0.6.33"
+ node-forge "0.7.5"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
semver@4.3.2:
version "4.3.2"
@@ -6807,14 +7497,14 @@ semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-send@0.16.1:
- version "0.16.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+send@0.16.2:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
dependencies:
debug "2.6.9"
- depd "~1.1.1"
+ depd "~1.1.2"
destroy "~1.0.4"
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
@@ -6823,7 +7513,11 @@ send@0.16.1:
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
- statuses "~1.3.1"
+ statuses "~1.4.0"
+
+serialize-javascript@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
serve-index@^1.7.2:
version "1.9.1"
@@ -6837,14 +7531,14 @@ serve-index@^1.7.2:
mime-types "~2.1.17"
parseurl "~1.3.2"
-serve-static@1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+serve-static@1.13.2:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
dependencies:
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.2"
- send "0.16.1"
+ send "0.16.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@@ -6854,6 +7548,24 @@ set-immediate-shim@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6867,19 +7579,18 @@ setprototypeof@1.1.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.9"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d"
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shallow-clone@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060"
+shallow-clone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
dependencies:
is-extendable "^0.1.1"
- kind-of "^2.0.1"
- lazy-cache "^0.2.3"
+ kind-of "^5.0.0"
mixin-object "^2.0.1"
shebang-command@^1.2.0:
@@ -6901,7 +7612,7 @@ shell-quote@^1.6.1:
array-reduce "~0.0.0"
jsonify "~0.0.0"
-shellwords@^0.1.0:
+shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -6909,6 +7620,12 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ dependencies:
+ is-arrayish "^0.3.1"
+
slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
@@ -6919,18 +7636,39 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
dependencies:
hoek "2.x.x"
-sntp@2.x.x:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
- dependencies:
- hoek "4.x.x"
-
sockjs-client@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
@@ -6942,12 +7680,12 @@ sockjs-client@1.1.4:
json3 "^3.3.2"
url-parse "^1.1.8"
-sockjs@0.3.18:
- version "0.3.18"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
+sockjs@0.3.19:
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
dependencies:
faye-websocket "^0.10.0"
- uuid "^2.0.2"
+ uuid "^3.0.1"
sort-keys@^1.0.0:
version "1.1.2"
@@ -6959,14 +7697,15 @@ source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
-source-map-resolve@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
dependencies:
- atob "~1.1.0"
- resolve-url "~0.2.1"
- source-map-url "~0.3.0"
- urix "~0.1.0"
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
source-map-support@^0.4.15:
version "0.4.18"
@@ -6974,15 +7713,9 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
-source-map-url@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
-
-source-map@^0.1.38:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
- dependencies:
- amdefine ">=0.0.4"
+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"
source-map@^0.4.2, source-map@^0.4.4:
version "0.4.4"
@@ -6990,7 +7723,7 @@ source-map@^0.4.2, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, 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, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -6998,23 +7731,31 @@ source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+spdx-correct@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
dependencies:
- spdx-license-ids "^1.0.2"
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+spdx-exceptions@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
spdy-transport@^2.0.18:
- version "2.0.20"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1"
dependencies:
debug "^2.6.8"
detect-node "^2.0.3"
@@ -7035,6 +7776,12 @@ spdy@^3.4.1:
select-hose "^2.0.0"
spdy-transport "^2.0.18"
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ dependencies:
+ extend-shallow "^3.0.0"
+
split@0.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
@@ -7052,27 +7799,41 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+ version "1.14.2"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
dashdash "^1.12.0"
getpass "^0.1.1"
+ safer-buffer "^2.0.2"
optionalDependencies:
bcrypt-pbkdf "^1.0.0"
ecc-jsbn "~0.1.1"
jsbn "~0.1.0"
tweetnacl "~0.14.0"
-"statuses@>= 1.3.1 < 2":
+ssri@^5.2.4:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+ dependencies:
+ safe-buffer "^5.1.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+
+statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
-statuses@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-
stdout-stream@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
@@ -7092,16 +7853,27 @@ stream-combiner@~0.0.4:
dependencies:
duplexer "~0.1.1"
+stream-each@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
stream-http@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
dependencies:
builtin-status-codes "^3.0.0"
inherits "^2.0.1"
- readable-stream "^2.2.6"
+ readable-stream "^2.3.6"
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -7121,7 +7893,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
@@ -7136,15 +7908,15 @@ string.prototype.padend@^3.0.0:
es-abstract "^1.4.3"
function-bind "^1.0.2"
-string_decoder@^1.0.0, string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+string_decoder@^1.0.0, string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4, stringstream@~0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+stringstream@~0.0.4:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
stringz@^0.3.0:
version "0.3.0"
@@ -7186,18 +7958,18 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-style-loader@^0.19.0:
- version "0.19.0"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759"
+style-loader@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852"
dependencies:
- loader-utils "^1.0.2"
- schema-utils "^0.3.0"
+ loader-utils "^1.1.0"
+ schema-utils "^0.4.5"
substring-trie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz#7b42592391628b4f2cb17365c6cce4257c7b7af5"
-sugarss@^1.0.0:
+sugarss@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44"
dependencies:
@@ -7213,11 +7985,11 @@ supports-color@^3.1.2, supports-color@^3.2.3:
dependencies:
has-flag "^1.0.0"
-supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
dependencies:
- has-flag "^2.0.0"
+ has-flag "^3.0.0"
svgo@^0.7.0:
version "0.7.2"
@@ -7232,8 +8004,8 @@ svgo@^0.7.0:
whet.extend "~0.9.9"
symbol-observable@^1.0.3:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
symbol-tree@^3.2.1:
version "3.2.2"
@@ -7250,9 +8022,9 @@ table@4.0.2:
slice-ansi "1.0.0"
string-width "^2.1.1"
-tapable@^0.2.7:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
+tapable@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
tar-pack@^3.4.0:
version "3.4.1"
@@ -7275,21 +8047,37 @@ tar@^2.0.0, tar@^2.2.1:
fstream "^1.0.2"
inherits "2"
-tcomb@^2.5.0, tcomb@^2.5.1:
+tar@^4:
+ version "4.4.4"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd"
+ dependencies:
+ chownr "^1.0.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.3"
+ minizlib "^1.1.0"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.2"
+
+tcomb@^2.5.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0"
-test-exclude@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26"
+tcomb@^3.2.21:
+ version "3.2.27"
+ resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.27.tgz#f4928bfc536b959d21a47e5f5f1ca2b2e4b7188a"
+
+test-exclude@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
dependencies:
arrify "^1.0.1"
- micromatch "^2.3.11"
+ micromatch "^3.1.8"
object-assign "^4.1.0"
read-pkg-up "^1.0.1"
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"
@@ -7303,28 +8091,27 @@ throng@^4.0.0:
dependencies:
lodash.defaults "^4.0.1"
+through2@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
through@2, through@^2.3.6, through@~2.3, through@~2.3.1:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-thunky@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
-
-time-stamp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+thunky@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371"
timers-browserify@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
dependencies:
setimmediate "^1.0.4"
-tiny-emitter@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.0.tgz#bad327adb1804b42a231afa741532bd884cd09ad"
-
tiny-queue@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046"
@@ -7351,17 +8138,40 @@ to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+tough-cookie@^2.3.2:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ dependencies:
+ psl "^1.1.24"
punycode "^1.4.1"
-tr46@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
dependencies:
- punycode "^2.1.0"
+ punycode "^1.4.1"
tr46@~0.0.3:
version "0.0.3"
@@ -7381,6 +8191,14 @@ trim-right@^1.0.1:
dependencies:
glob "^6.0.4"
+tryer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+
+tslib@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -7391,10 +8209,6 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
-tunnel-agent@~0.4.1:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
-
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -7405,26 +8219,29 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-is@~1.6.15:
- version "1.6.15"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+type-is@~1.6.15, type-is@~1.6.16:
+ version "1.6.16"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
dependencies:
media-typer "0.3.0"
- mime-types "~2.1.15"
-
-typed-function@0.10.6:
- version "0.10.6"
- resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-0.10.6.tgz#314aa0ea72bd586de5920095559683e20b01688b"
+ mime-types "~2.1.18"
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-ua-parser-js@^0.7.9:
- version "0.7.17"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+ua-parser-js@^0.7.18:
+ version "0.7.18"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed"
-uglify-js@^2.6, uglify-js@^2.8.29:
+uglify-es@^3.3.4:
+ version "3.3.9"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
+ dependencies:
+ commander "~2.13.0"
+ source-map "~0.6.1"
+
+uglify-js@^2.6:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies:
@@ -7437,65 +8254,95 @@ uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-uglifyjs-webpack-plugin@^0.4.6:
- version "0.4.6"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
dependencies:
- source-map "^0.5.6"
- uglify-js "^2.8.29"
- webpack-sources "^1.0.1"
+ cacache "^10.0.4"
+ find-cache-dir "^1.0.0"
+ schema-utils "^0.4.5"
+ serialize-javascript "^1.4.0"
+ source-map "^0.6.1"
+ uglify-es "^3.3.4"
+ webpack-sources "^1.1.0"
+ worker-farm "^1.5.2"
uid-number@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-ultron@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
-
underscore@~1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604"
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-uniqid@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
- dependencies:
- macaddress "^0.2.8"
-
uniqs@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+unique-filename@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab"
+ dependencies:
+ imurmurhash "^0.1.4"
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
unquote@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.0.tgz#98e1fc608b6b854c75afb1b95afc099ba69d942f"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
-urix@^0.1.0, urix@~0.1.0:
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ dependencies:
+ 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"
+
+uri-js@^4.2.1:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-url-parse@1.0.x:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
- dependencies:
- querystringify "0.0.x"
- requires-port "1.0.x"
+url-join@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a"
-url-parse@^1.1.8:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+url-parse@^1.1.8, url-parse@~1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.1.tgz#4dec9dad3dc8585f862fed461d2e19bbf623df30"
dependencies:
- querystringify "~1.0.0"
- requires-port "~1.0.0"
+ querystringify "^2.0.0"
+ requires-port "^1.0.0"
url@^0.11.0:
version "0.11.0"
@@ -7504,38 +8351,48 @@ url@^0.11.0:
punycode "1.3.2"
querystring "0.2.0"
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-util@0.10.3, util@^0.10.3:
+util@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
inherits "2.0.1"
+util@^0.10.3:
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ dependencies:
+ inherits "2.0.3"
+
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-uuid@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
-uuid@^3.0.0, uuid@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+uws@10.148.0:
+ version "10.148.0"
+ resolved "https://registry.yarnpkg.com/uws/-/uws-10.148.0.tgz#3fcd35f083ca515e091cd33b2d78f0f51a666215"
-uws@^8.14.0:
- version "8.14.1"
- resolved "https://registry.yarnpkg.com/uws/-/uws-8.14.1.tgz#de09619f305f6174d5516a9c6942cb120904b20b"
+v8-compile-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a"
validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
value-equal@^0.4.0:
version "0.4.0"
@@ -7546,8 +8403,8 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
vendors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
verror@1.10.0:
version "1.10.0"
@@ -7575,6 +8432,12 @@ warning@^3.0.0:
dependencies:
loose-envify "^1.0.0"
+warning@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.1.tgz#66ce376b7fbfe8a887c22bdf0e7349d73d397745"
+ dependencies:
+ loose-envify "^1.0.0"
+
watch@~0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
@@ -7582,17 +8445,17 @@ watch@~0.18.0:
exec-sh "^0.2.0"
minimist "^1.2.0"
-watchpack@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
+watchpack@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
dependencies:
- async "^2.1.2"
- chokidar "^1.7.0"
+ chokidar "^2.0.2"
graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
wbuf@^1.1.0, wbuf@^1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
dependencies:
minimalistic-assert "^1.0.0"
@@ -7600,52 +8463,71 @@ webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-webidl-conversions@^4.0.0, webidl-conversions@^4.0.2:
+webidl-conversions@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
-webpack-bundle-analyzer@^2.9.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.1.tgz#c2c8e03e8e5768ed288b39ae9e27a8b8d7b9d476"
+webpack-bundle-analyzer@^2.13.1:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526"
dependencies:
- acorn "^5.1.1"
- chalk "^1.1.3"
- commander "^2.9.0"
- ejs "^2.5.6"
- express "^4.15.2"
- filesize "^3.5.9"
- gzip-size "^3.0.0"
+ acorn "^5.3.0"
+ bfj-node4 "^5.2.0"
+ chalk "^2.3.0"
+ commander "^2.13.0"
+ ejs "^2.5.7"
+ express "^4.16.2"
+ filesize "^3.5.11"
+ gzip-size "^4.1.0"
lodash "^4.17.4"
mkdirp "^0.5.1"
opener "^1.4.3"
- ws "^3.3.1"
+ ws "^4.0.0"
-webpack-dev-middleware@^1.11.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+webpack-cli@^3.0.8:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9"
dependencies:
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ enhanced-resolve "^4.0.0"
+ global-modules-path "^2.1.0"
+ import-local "^1.0.0"
+ inquirer "^6.0.0"
+ interpret "^1.1.0"
+ loader-utils "^1.1.0"
+ supports-color "^5.4.0"
+ v8-compile-cache "^2.0.0"
+ yargs "^11.1.0"
+
+webpack-dev-middleware@3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed"
+ dependencies:
+ loud-rejection "^1.6.0"
memory-fs "~0.4.1"
- mime "^1.5.0"
+ mime "^2.1.0"
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
- time-stamp "^2.0.0"
+ url-join "^4.0.0"
+ webpack-log "^1.0.1"
-webpack-dev-server@^2.9.5:
- version "2.9.5"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz#79336fba0087a66ae491f4869f6545775b18daa8"
+webpack-dev-server@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4"
dependencies:
ansi-html "0.0.7"
array-includes "^3.0.3"
bonjour "^3.5.0"
- chokidar "^1.6.0"
+ chokidar "^2.0.0"
compression "^1.5.2"
connect-history-api-fallback "^1.3.0"
debug "^3.1.0"
del "^3.0.0"
express "^4.16.2"
html-entities "^1.2.0"
- http-proxy-middleware "~0.17.4"
- import-local "^0.1.1"
+ http-proxy-middleware "~0.18.0"
+ import-local "^1.0.0"
internal-ip "1.2.0"
ip "^1.1.5"
killable "^1.0.0"
@@ -7654,60 +8536,74 @@ webpack-dev-server@^2.9.5:
portfinder "^1.0.9"
selfsigned "^1.9.1"
serve-index "^1.7.2"
- sockjs "0.3.18"
+ sockjs "0.3.19"
sockjs-client "1.1.4"
spdy "^3.4.1"
- strip-ansi "^3.0.1"
- supports-color "^4.2.1"
- webpack-dev-middleware "^1.11.0"
- yargs "^6.6.0"
+ strip-ansi "^3.0.0"
+ supports-color "^5.1.0"
+ webpack-dev-middleware "3.1.3"
+ webpack-log "^1.1.2"
+ yargs "11.0.0"
-webpack-manifest-plugin@^1.2.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4"
+webpack-log@^1.0.1, webpack-log@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d"
+ dependencies:
+ chalk "^2.1.0"
+ log-symbols "^2.1.0"
+ loglevelnext "^1.0.1"
+ uuid "^3.1.0"
+
+webpack-manifest-plugin@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.3.tgz#b42c5b08a0319cedb3ec45d9375a9ecee0acf5eb"
dependencies:
fs-extra "^0.30.0"
lodash ">=3.5 <5"
+ tapable "^1.0.0"
-webpack-merge@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555"
+webpack-merge@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.3.tgz#8aaff2108a19c29849bc9ad2a7fd7fce68e87c4a"
dependencies:
- lodash "^4.17.4"
+ lodash "^4.17.5"
-webpack-sources@^1.0.1:
+webpack-sources@^1.0.1, webpack-sources@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^3.9.1:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.9.1.tgz#9a60aa544ed5d4d454c069e3f521aa007e02643c"
+webpack@^4.16.0:
+ version "4.16.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.0.tgz#660dae90890e55b8ed17c6f9d17bebb01dab5b4c"
dependencies:
- acorn "^5.0.0"
- acorn-dynamic-import "^2.0.0"
- ajv "^5.1.5"
- ajv-keywords "^2.0.0"
- async "^2.1.2"
- enhanced-resolve "^3.4.0"
- escope "^3.6.0"
- interpret "^1.0.0"
- json-loader "^0.5.4"
- json5 "^0.5.1"
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-module-context" "1.5.13"
+ "@webassemblyjs/wasm-edit" "1.5.13"
+ "@webassemblyjs/wasm-opt" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ acorn "^5.6.2"
+ acorn-dynamic-import "^3.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chrome-trace-event "^1.0.0"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^3.7.1"
+ json-parse-better-errors "^1.0.2"
loader-runner "^2.3.0"
loader-utils "^1.1.0"
memory-fs "~0.4.1"
+ micromatch "^3.1.8"
mkdirp "~0.5.0"
+ neo-async "^2.5.0"
node-libs-browser "^2.0.0"
- source-map "^0.5.3"
- supports-color "^4.2.1"
- tapable "^0.2.7"
- uglifyjs-webpack-plugin "^0.4.6"
- watchpack "^1.4.0"
+ schema-utils "^0.4.4"
+ tapable "^1.0.0"
+ uglifyjs-webpack-plugin "^1.2.4"
+ watchpack "^1.5.0"
webpack-sources "^1.0.1"
- yargs "^8.0.2"
websocket-driver@>=0.5.1:
version "0.7.0"
@@ -7733,8 +8629,8 @@ whatwg-encoding@^1.0.1:
iconv-lite "0.4.19"
whatwg-fetch@>=0.10.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
whatwg-url@^4.3.0:
version "4.8.0"
@@ -7743,14 +8639,6 @@ whatwg-url@^4.3.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-whatwg-url@^6.4.1:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67"
- dependencies:
- lodash.sortby "^4.7.0"
- tr46 "^1.0.1"
- webidl-conversions "^4.0.2"
-
whet.extend@~0.9.9:
version "0.9.9"
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
@@ -7763,17 +8651,17 @@ which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-which@1, which@^1.2.12, which@^1.2.9:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
dependencies:
isexe "^2.0.0"
wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
dependencies:
- string-width "^1.0.2"
+ string-width "^1.0.2 || 2"
window-size@0.1.0:
version "0.1.0"
@@ -7791,12 +8679,11 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-worker-farm@^1.3.1:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
+worker-farm@^1.3.1, worker-farm@^1.5.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
dependencies:
- errno "^0.1.4"
- xtend "^4.0.1"
+ errno "~0.1.7"
wrap-ansi@^2.0.0:
version "2.1.0"
@@ -7823,19 +8710,18 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
-ws@^3.3.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
+ws@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"
- ultron "~1.1.0"
xml-name-validator@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
-xtend@^4.0.0, xtend@^4.0.1:
+xtend@^4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
@@ -7843,15 +8729,17 @@ y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-yargs-parser@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
- dependencies:
- camelcase "^3.0.0"
+yallist@^3.0.0, yallist@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
yargs-parser@^5.0.0:
version "5.0.0"
@@ -7865,23 +8753,45 @@ yargs-parser@^7.0.0:
dependencies:
camelcase "^4.1.0"
-yargs@^6.6.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+yargs-parser@^9.0.2:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
+ camelcase "^4.1.0"
+
+yargs@11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"
+ dependencies:
+ cliui "^4.0.0"
decamelize "^1.1.1"
+ find-up "^2.1.0"
get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
+ os-locale "^2.0.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
y18n "^3.2.1"
- yargs-parser "^4.2.0"
+ yargs-parser "^9.0.2"
+
+yargs@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.1.1"
+ find-up "^2.1.0"
+ get-caller-file "^1.0.1"
+ os-locale "^2.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"
+ yargs-parser "^9.0.2"
yargs@^7.0.0:
version "7.1.0"