+
{header}
{children}
diff --git a/app/assets/javascripts/components/features/ui/components/column_header.jsx b/app/javascript/mastodon/features/ui/components/column_header.js
similarity index 97%
rename from app/assets/javascripts/components/features/ui/components/column_header.jsx
rename to app/javascript/mastodon/features/ui/components/column_header.js
index 7ccd72e0b0..2701cd57d2 100644
--- a/app/assets/javascripts/components/features/ui/components/column_header.jsx
+++ b/app/javascript/mastodon/features/ui/components/column_header.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types'
class ColumnHeader extends React.PureComponent {
diff --git a/app/assets/javascripts/components/features/ui/components/column_link.jsx b/app/javascript/mastodon/features/ui/components/column_link.js
similarity index 96%
rename from app/assets/javascripts/components/features/ui/components/column_link.jsx
rename to app/javascript/mastodon/features/ui/components/column_link.js
index 820e4246a1..cffe796ba1 100644
--- a/app/assets/javascripts/components/features/ui/components/column_link.jsx
+++ b/app/javascript/mastodon/features/ui/components/column_link.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types';
import { Link } from 'react-router';
diff --git a/app/assets/javascripts/components/features/ui/components/column_subheading.jsx b/app/javascript/mastodon/features/ui/components/column_subheading.js
similarity index 62%
rename from app/assets/javascripts/components/features/ui/components/column_subheading.jsx
rename to app/javascript/mastodon/features/ui/components/column_subheading.js
index 061c8be6c1..8160c4aa39 100644
--- a/app/assets/javascripts/components/features/ui/components/column_subheading.jsx
+++ b/app/javascript/mastodon/features/ui/components/column_subheading.js
@@ -1,12 +1,13 @@
+import React from 'react';
import PropTypes from 'prop-types';
const ColumnSubheading = ({ text }) => {
- return (
-
- {text}
-
- );
- };
+ return (
+
+ {text}
+
+ );
+};
ColumnSubheading.propTypes = {
text: PropTypes.string.isRequired,
diff --git a/app/assets/javascripts/components/features/ui/components/columns_area.jsx b/app/javascript/mastodon/features/ui/components/columns_area.js
similarity index 91%
rename from app/assets/javascripts/components/features/ui/components/columns_area.jsx
rename to app/javascript/mastodon/features/ui/components/columns_area.js
index 360a759aef..05f9f3fb52 100644
--- a/app/assets/javascripts/components/features/ui/components/columns_area.jsx
+++ b/app/javascript/mastodon/features/ui/components/columns_area.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types';
class ColumnsArea extends React.PureComponent {
diff --git a/app/assets/javascripts/components/features/ui/components/confirmation_modal.jsx b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
similarity index 98%
rename from app/assets/javascripts/components/features/ui/components/confirmation_modal.jsx
rename to app/javascript/mastodon/features/ui/components/confirmation_modal.js
index 914c12f82d..4999932076 100644
--- a/app/assets/javascripts/components/features/ui/components/confirmation_modal.jsx
+++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import Button from '../../../components/button';
diff --git a/app/assets/javascripts/components/features/ui/components/media_modal.jsx b/app/javascript/mastodon/features/ui/components/media_modal.js
similarity index 95%
rename from app/assets/javascripts/components/features/ui/components/media_modal.jsx
rename to app/javascript/mastodon/features/ui/components/media_modal.js
index 02a5775005..a8fb3858ab 100644
--- a/app/assets/javascripts/components/features/ui/components/media_modal.jsx
+++ b/app/javascript/mastodon/features/ui/components/media_modal.js
@@ -1,3 +1,4 @@
+import React from 'react';
import LoadingIndicator from '../../../components/loading_indicator';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
@@ -5,12 +6,13 @@ import ExtendedVideoPlayer from '../../../components/extended_video_player';
import ImageLoader from 'react-imageloader';
import { defineMessages, injectIntl } from 'react-intl';
import IconButton from '../../../components/icon_button';
+import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' }
});
-class MediaModal extends React.PureComponent {
+class MediaModal extends ImmutablePureComponent {
constructor (props, context) {
super(props, context);
diff --git a/app/assets/javascripts/components/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.js
similarity index 98%
rename from app/assets/javascripts/components/features/ui/components/modal_root.jsx
rename to app/javascript/mastodon/features/ui/components/modal_root.js
index 23057715ce..5cde65907f 100644
--- a/app/assets/javascripts/components/features/ui/components/modal_root.jsx
+++ b/app/javascript/mastodon/features/ui/components/modal_root.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types';
import MediaModal from './media_modal';
import OnboardingModal from './onboarding_modal';
diff --git a/app/assets/javascripts/components/features/ui/components/onboarding_modal.jsx b/app/javascript/mastodon/features/ui/components/onboarding_modal.js
similarity index 99%
rename from app/assets/javascripts/components/features/ui/components/onboarding_modal.jsx
rename to app/javascript/mastodon/features/ui/components/onboarding_modal.js
index 4c2c55f93b..7cdd3527ac 100644
--- a/app/assets/javascripts/components/features/ui/components/onboarding_modal.jsx
+++ b/app/javascript/mastodon/features/ui/components/onboarding_modal.js
@@ -1,3 +1,4 @@
+import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
diff --git a/app/assets/javascripts/components/features/ui/components/tabs_bar.jsx b/app/javascript/mastodon/features/ui/components/tabs_bar.js
similarity index 98%
rename from app/assets/javascripts/components/features/ui/components/tabs_bar.jsx
rename to app/javascript/mastodon/features/ui/components/tabs_bar.js
index 316b4bf7df..b6a30bc116 100644
--- a/app/assets/javascripts/components/features/ui/components/tabs_bar.jsx
+++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js
@@ -1,3 +1,4 @@
+import React from 'react';
import { Link } from 'react-router';
import { FormattedMessage } from 'react-intl';
diff --git a/app/assets/javascripts/components/features/ui/components/upload_area.jsx b/app/javascript/mastodon/features/ui/components/upload_area.js
similarity index 98%
rename from app/assets/javascripts/components/features/ui/components/upload_area.jsx
rename to app/javascript/mastodon/features/ui/components/upload_area.js
index 3a933398ba..c5710ee694 100644
--- a/app/assets/javascripts/components/features/ui/components/upload_area.jsx
+++ b/app/javascript/mastodon/features/ui/components/upload_area.js
@@ -1,3 +1,4 @@
+import React from 'react';
import PropTypes from 'prop-types';
import { Motion, spring } from 'react-motion';
import { FormattedMessage } from 'react-intl';
diff --git a/app/assets/javascripts/components/features/ui/components/video_modal.jsx b/app/javascript/mastodon/features/ui/components/video_modal.js
similarity index 88%
rename from app/assets/javascripts/components/features/ui/components/video_modal.jsx
rename to app/javascript/mastodon/features/ui/components/video_modal.js
index d98b42882e..8e2e4a5336 100644
--- a/app/assets/javascripts/components/features/ui/components/video_modal.jsx
+++ b/app/javascript/mastodon/features/ui/components/video_modal.js
@@ -1,15 +1,17 @@
+import React from 'react';
import LoadingIndicator from '../../../components/loading_indicator';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import ExtendedVideoPlayer from '../../../components/extended_video_player';
import { defineMessages, injectIntl } from 'react-intl';
import IconButton from '../../../components/icon_button';
+import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' }
});
-class VideoModal extends React.PureComponent {
+class VideoModal extends ImmutablePureComponent {
render () {
const { media, intl, time, onClose } = this.props;
diff --git a/app/assets/javascripts/components/features/ui/containers/loading_bar_container.jsx b/app/javascript/mastodon/features/ui/containers/loading_bar_container.js
similarity index 100%
rename from app/assets/javascripts/components/features/ui/containers/loading_bar_container.jsx
rename to app/javascript/mastodon/features/ui/containers/loading_bar_container.js
diff --git a/app/assets/javascripts/components/features/ui/containers/modal_container.jsx b/app/javascript/mastodon/features/ui/containers/modal_container.js
similarity index 100%
rename from app/assets/javascripts/components/features/ui/containers/modal_container.jsx
rename to app/javascript/mastodon/features/ui/containers/modal_container.js
diff --git a/app/assets/javascripts/components/features/ui/containers/notifications_container.jsx b/app/javascript/mastodon/features/ui/containers/notifications_container.js
similarity index 100%
rename from app/assets/javascripts/components/features/ui/containers/notifications_container.jsx
rename to app/javascript/mastodon/features/ui/containers/notifications_container.js
diff --git a/app/assets/javascripts/components/features/ui/containers/status_list_container.jsx b/app/javascript/mastodon/features/ui/containers/status_list_container.js
similarity index 100%
rename from app/assets/javascripts/components/features/ui/containers/status_list_container.jsx
rename to app/javascript/mastodon/features/ui/containers/status_list_container.js
diff --git a/app/assets/javascripts/components/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.js
similarity index 96%
rename from app/assets/javascripts/components/features/ui/index.jsx
rename to app/javascript/mastodon/features/ui/index.js
index b402639ce6..d096cb8829 100644
--- a/app/assets/javascripts/components/features/ui/index.jsx
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -1,3 +1,4 @@
+import React from 'react';
import ColumnsArea from './components/columns_area';
import NotificationsContainer from './containers/notifications_container';
import PropTypes from 'prop-types';
@@ -15,6 +16,8 @@ import { refreshTimeline } from '../../actions/timelines';
import { refreshNotifications } from '../../actions/notifications';
import UploadArea from './components/upload_area';
+const noOp = () => false;
+
class UI extends React.PureComponent {
constructor (props, context) {
@@ -135,8 +138,8 @@ class UI extends React.PureComponent {
mountedColumns = (
- false} />
- false} />
+
+
{children}
);
diff --git a/app/assets/javascripts/components/is_mobile.jsx b/app/javascript/mastodon/is_mobile.js
similarity index 100%
rename from app/assets/javascripts/components/is_mobile.jsx
rename to app/javascript/mastodon/is_mobile.js
diff --git a/app/assets/javascripts/components/link_header.jsx b/app/javascript/mastodon/link_header.js
similarity index 100%
rename from app/assets/javascripts/components/link_header.jsx
rename to app/javascript/mastodon/link_header.js
diff --git a/app/assets/javascripts/components/locales/ar.jsx b/app/javascript/mastodon/locales/ar.json
similarity index 63%
rename from app/assets/javascripts/components/locales/ar.jsx
rename to app/javascript/mastodon/locales/ar.json
index 06a83b6099..b4f05a73ef 100644
--- a/app/assets/javascripts/components/locales/ar.jsx
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,12 +1,4 @@
-/**
- * ملاحظة للمساهمين و المساهمات :
- * لجعل مهمة المساهمين الآخرين أسهل، رجاءا تذكر :
- * 1. إضافة سلسلة جديدة هنا؛ و
- * 2. لإزالة السلاسل القديمة التي لم تعد هناك حاجة إليها. و
- * 3. لفرز السلاسل تبعا للأبجدية
- * شكر!
- */
-const ar = {
+{
"account.block": "حظر @{name}",
"account.disclaimer": "هذا المستخدم من مثيل خادم آخر. قد يكون هذا الرقم أكبر.",
"account.edit_profile": "تعديل الملف الشخصي",
@@ -60,16 +52,14 @@ const ar = {
"emoji_button.travel": "أماكن و أسفار",
"empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.",
"empty_column.hashtag": "ليس هناك بعدُ أي محتوى ذو علاقة بهذا الوسم.",
- "empty_column.home.public_timeline": "الخيط العام",
"empty_column.home": "إنك لا تتبع بعد أي شخص إلى حد الآن. زر {public} أو استخدام حقل البحث لكي تبدأ على التعرف على مستخدمين آخرين.",
+ "empty_column.home.public_timeline": "الخيط العام",
"empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.",
"empty_column.public": "لا يوجد شيء هنا ! قم بتحرير شيء ما بشكل عام، أو اتبع مستخدمين آخرين في الخوادم المثيلة الأخرى لملء خيط المحادثات العام.",
"follow_request.authorize": "ترخيص",
"follow_request.reject": "رفض",
"getting_started.apps": "عدة تطبيقات مختلفة متوفرة",
"getting_started.heading": "إستعدّ للبدء",
- "getting_started.about_addressing": "يمكنك متابعة الأشخاص إذا كنت تعرف اسم المستخدم الخاص بهم والنطاق الذي هم عليه عن طريق إدخال عنوان شبيه بالبريد الإلكتروني في الحقل المخصص للبحث.",
- "getting_started.about_shortcuts": "إذا كان المستخدم المستهدف في نفس النطاق الذي تستخدمه، فإسم المستخدم وحده يكفي. وتنطبق نفس القاعدة على ذكر الأشخاص في المنشورات و التبويقات.",
"getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على GitHub {github}. {apps}.",
"home.column_settings.advanced": "متقدمة",
"home.column_settings.basic": "أساسية",
@@ -84,27 +74,80 @@ const ar = {
"navigation_bar.blocks": "الحسابات المحجوبة",
"navigation_bar.community_timeline": "الخيط العام المحلي",
"navigation_bar.edit_profile": "تعديل الملف الشخصي",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "خروج",
+ "navigation_bar.mutes": "Muted users",
"navigation_bar.preferences": "التفضيلات",
- "navigation_bar.community_timeline": "الخيط العام المحلي",
"navigation_bar.public_timeline": "الخيط العام الموحد",
- "navigation_bar.logout": "خروج",
+ "notification.favourite": "{name} أعجب بمنشورك",
+ "notification.follow": "{name} يتبعك",
+ "notification.reblog": "{name} قام بترقية تبويقك",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "إشعارات سطح المكتب",
+ "notifications.column_settings.favourite": "المُفَضَّلة :",
+ "notifications.column_settings.follow": "متابعُون جُدُد :",
+ "notifications.column_settings.mention": "الإشارات :",
+ "notifications.column_settings.reblog": "الترقيّات:",
+ "notifications.column_settings.show": "إعرِضها في عمود",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
"reply_indicator.cancel": "إلغاء",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
"search.placeholder": "ابحث",
- "search.account": "حساب",
- "search.hashtag": "وسم",
- "status.mention": "أذكُر @{name}",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "إحذف",
- "status.reply": "ردّ",
- "status.reblog": "رَقِّي",
"status.favourite": "أضف إلى المفضلة",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "أذكُر @{name}",
+ "status.open": "وسع هذه المشاركة",
+ "status.reblog": "رَقِّي",
"status.reblogged_by": "{name} رقى",
- "status.sensitive_warning": "محتوى حساس",
+ "status.reply": "ردّ",
+ "status.replyAll": "Reply to thread",
+ "status.report": "إبلِغ عن @{name}",
"status.sensitive_toggle": "اضغط للعرض",
- "status.show_more": "أظهر المزيد",
+ "status.sensitive_warning": "محتوى حساس",
"status.show_less": "إعرض أقلّ",
- "status.open": "وسع هذه المشاركة",
- "status.report": "إبلِغ عن @{name}",
+ "status.show_more": "أظهر المزيد",
"tabs_bar.compose": "تحرير",
+ "tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "الرئيسية",
"tabs_bar.mentions": "الإشارات",
"tabs_bar.public": "الخيط العام الموحد",
@@ -125,7 +168,5 @@ const ar = {
"video_player.toggle_sound": "تبديل الصوت",
"video_player.toggle_visible": "إظهار / إخفاء الفيديو",
"video_player.expand": "وسّع الفيديو",
- "video_player.video_error": "تعذر تشغيل الفيديو",
-};
-
-export default ar;
+ "video_player.video_error": "تعذر تشغيل الفيديو"
+}
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
new file mode 100644
index 0000000000..38dbb8b61f
--- /dev/null
+++ b/app/javascript/mastodon/locales/bg.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Блокирай",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Редактирай профила си",
+ "account.follow": "Последвай",
+ "account.followers": "Последователи",
+ "account.follows": "Следвам",
+ "account.follows_you": "Твой последовател",
+ "account.mention": "Споменаване",
+ "account.mute": "Mute @{name}",
+ "account.posts": "Публикации",
+ "account.report": "Report @{name}",
+ "account.requested": "В очакване на одобрение",
+ "account.unblock": "Не блокирай",
+ "account.unfollow": "Не следвай",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Начало",
+ "column.mutes": "Muted users",
+ "column.notifications": "Известия",
+ "column.public": "Публичен канал",
+ "column_back_button.label": "Назад",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "Какво си мислиш?",
+ "compose_form.privacy_disclaimer": "Поверителни публикации ще бъдат изпратени до споменатите потребители на {domains}. Доверяваш ли се на {domainsCount, plural, one {that server} other {those servers}}, че няма да издаде твоята публикация?",
+ "compose_form.publish": "Раздумай",
+ "compose_form.sensitive": "Отбележи съдържанието като деликатно",
+ "compose_form.spoiler": "Скрий текста зад предупреждение",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Първи стъпки",
+ "getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Затвори",
+ "loading_indicator.label": "Зареждане...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.edit_profile": "Редактирай профил",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "Излизане",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Предпочитания",
+ "navigation_bar.public_timeline": "Публичен канал",
+ "notification.favourite": "{name} хареса твоята публикация",
+ "notification.follow": "{name} те последва",
+ "notification.reblog": "{name} сподели твоята публикация",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Десктоп известия",
+ "notifications.column_settings.favourite": "Предпочитани:",
+ "notifications.column_settings.follow": "Нови последователи:",
+ "notifications.column_settings.mention": "Споменавания:",
+ "notifications.column_settings.reblog": "Споделяния:",
+ "notifications.column_settings.show": "Покажи в колона",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "reply_indicator.cancel": "Отказ",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Търсене",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Изтриване",
+ "status.favourite": "Предпочитани",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Споменаване",
+ "status.open": "Expand this status",
+ "status.reblog": "Споделяне",
+ "status.reblogged_by": "{name} сподели",
+ "status.reply": "Отговор",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Покажи",
+ "status.sensitive_warning": "Деликатно съдържание",
+ "status.show_less": "Show less",
+ "status.show_more": "Show more",
+ "tabs_bar.compose": "Съставяне",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Начало",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Известия",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Добави медия",
+ "upload_form.undo": "Отмяна",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Звук",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/de.jsx b/app/javascript/mastodon/locales/de.json
similarity index 69%
rename from app/assets/javascripts/components/locales/de.jsx
rename to app/javascript/mastodon/locales/de.json
index 8720a2d369..1d79f0cb8b 100644
--- a/app/assets/javascripts/components/locales/de.jsx
+++ b/app/javascript/mastodon/locales/de.json
@@ -1,4 +1,4 @@
-const de = {
+{
"account.block": "@{name} blocken",
"account.disclaimer": "Dieser Benutzer ist von einer anderen Instanz. Diese Zahl könnte größer sein.",
"account.edit_profile": "Profil bearbeiten",
@@ -15,7 +15,6 @@ const de = {
"account.unfollow": "Entfolgen",
"account.unmute": "@{name} nicht mehr stummschalten",
"boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
- "column_back_button.label": "Zurück",
"column.blocks": "Blockierte Benutzer",
"column.community": "Lokale Zeitleiste",
"column.favourites": "Favoriten",
@@ -24,17 +23,38 @@ const de = {
"column.mutes": "Stummgeschaltete Benutzer",
"column.notifications": "Mitteilungen",
"column.public": "Gesamtes bekanntes Netz",
+ "column_back_button.label": "Zurück",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Worüber möchtest du schreiben?",
"compose_form.privacy_disclaimer": "Dein privater Status wird an die genannten Benutzer auf den Domains {domains} zugestellt. Vertraust du {domainsCount, plural, one {diesem Server} other {diesen Servern}}? Private Beiträge funktionieren nur auf Mastodon-Instanzen. Wenn {domains} {domainsCount, plural, one {keine Mastodon-Instanz ist} other {keine Mastodon-Instanzen sind}}, wird es dort kein Anzeichen geben, dass dein Beitrag privat ist und er könnte geteilt oder anderweitig für unerwünschte Empfänger sichtbar gemacht werden.",
"compose_form.publish": "Tröt",
"compose_form.sensitive": "Medien als heikel markieren",
- "compose_form.spoiler_placeholder": "Inhaltswarnung",
"compose_form.spoiler": "Text hinter Warnung verbergen",
+ "compose_form.spoiler_placeholder": "Inhaltswarnung",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Emoji einfügen",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe etwas öffentlich, um den Ball ins Rollen zu bringen!",
"empty_column.hashtag": "Es gibt noch nichts unter diesem Hashtag.",
- "empty_column.home.public_timeline": "die öffentliche Zeitleiste",
"empty_column.home": "Du folgst noch niemandem. Besuche {public} oder benutze die Suche, um zu starten oder andere Benutzer anzutreffen.",
+ "empty_column.home.public_timeline": "die öffentliche Zeitleiste",
"empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um die Konversation zu starten.",
"empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Benutzern von anderen Instanzen, um es aufzufüllen.",
"follow_request.authorize": "Erlauben",
@@ -64,10 +84,9 @@ const de = {
"navigation_bar.public_timeline": "Föderierte Zeitleiste",
"notification.favourite": "{name} favorisierte deinen Status",
"notification.follow": "{name} folgt dir",
- "notification.mention": "{name} erwähnte dich",
"notification.reblog": "{name} teilte deinen Status",
- "notifications.clear_confirmation": "Bist du sicher, dass du alle Mitteilungen beseitigen willst?",
"notifications.clear": "Mitteilungen beseitigen",
+ "notifications.clear_confirmation": "Bist du sicher, dass du alle Mitteilungen beseitigen willst?",
"notifications.column_settings.alert": "Desktop-Benachrichtigungen",
"notifications.column_settings.favourite": "Favorisierungen:",
"notifications.column_settings.follow": "Neue Folgende:",
@@ -76,6 +95,26 @@ const de = {
"notifications.column_settings.show": "In der Spalte anzeigen",
"notifications.column_settings.sound": "Ton abspielen",
"notifications.settings": "Spalteneinstellungen",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Privatsphäre des Status anpassen",
"privacy.direct.long": "Beitrag nur an erwähnte Benutzer",
"privacy.direct.short": "Direkt",
@@ -90,9 +129,9 @@ const de = {
"report.placeholder": "Zusätzliche Kommentare",
"report.submit": "Absenden",
"report.target": "Melden",
- "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}",
"search.placeholder": "Suche",
- "search.status_by": "Status von {name}",
+ "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Löschen",
"status.favourite": "Favorisieren",
"status.load_more": "Weitere laden",
@@ -117,10 +156,8 @@ const de = {
"upload_button.label": "Mediendatei hinzufügen",
"upload_form.undo": "Entfernen",
"upload_progress.label": "Lade hoch…",
+ "video_player.expand": "Videoanzeige vergrößern",
"video_player.toggle_sound": "Ton umschalten",
"video_player.toggle_visible": "Sichtbarkeit umschalten",
- "video_player.expand": "Videoanzeige vergrößern",
- "video_player.video_error": "Video konnte nicht abgespielt werden",
-};
-
-export default de;
+ "video_player.video_error": "Video konnte nicht abgespielt werden"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
new file mode 100644
index 0000000000..ea481e1545
--- /dev/null
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -0,0 +1,1068 @@
+[
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Follow",
+ "id": "account.follow"
+ },
+ {
+ "defaultMessage": "Unfollow",
+ "id": "account.unfollow"
+ },
+ {
+ "defaultMessage": "Awaiting approval",
+ "id": "account.requested"
+ },
+ {
+ "defaultMessage": "Unblock @{name}",
+ "id": "account.unblock"
+ },
+ {
+ "defaultMessage": "Unmute @{name}",
+ "id": "account.unmute"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/account.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Back",
+ "id": "column_back_button.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/column_back_button_slim.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Back",
+ "id": "column_back_button.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/column_back_button.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Load more",
+ "id": "status.load_more"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/load_more.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Loading...",
+ "id": "loading_indicator.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/loading_indicator.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Toggle visibility",
+ "id": "media_gallery.toggle_visible"
+ },
+ {
+ "defaultMessage": "Sensitive content",
+ "id": "status.sensitive_warning"
+ },
+ {
+ "defaultMessage": "Media hidden",
+ "id": "status.media_hidden"
+ },
+ {
+ "defaultMessage": "Click to view",
+ "id": "status.sensitive_toggle"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/media_gallery.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Not found",
+ "id": "missing_indicator.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/missing_indicator.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Delete",
+ "id": "status.delete"
+ },
+ {
+ "defaultMessage": "Mention @{name}",
+ "id": "status.mention"
+ },
+ {
+ "defaultMessage": "Mute @{name}",
+ "id": "account.mute"
+ },
+ {
+ "defaultMessage": "Block @{name}",
+ "id": "account.block"
+ },
+ {
+ "defaultMessage": "Reply",
+ "id": "status.reply"
+ },
+ {
+ "defaultMessage": "Reply to thread",
+ "id": "status.replyAll"
+ },
+ {
+ "defaultMessage": "Boost",
+ "id": "status.reblog"
+ },
+ {
+ "defaultMessage": "This post cannot be boosted",
+ "id": "status.cannot_reblog"
+ },
+ {
+ "defaultMessage": "Favourite",
+ "id": "status.favourite"
+ },
+ {
+ "defaultMessage": "Expand this status",
+ "id": "status.open"
+ },
+ {
+ "defaultMessage": "Report @{name}",
+ "id": "status.report"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/status_action_bar.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Show more",
+ "id": "status.show_more"
+ },
+ {
+ "defaultMessage": "Show less",
+ "id": "status.show_less"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/status_content.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "{name} boosted",
+ "id": "status.reblogged_by"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/status.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Toggle sound",
+ "id": "video_player.toggle_sound"
+ },
+ {
+ "defaultMessage": "Toggle visibility",
+ "id": "video_player.toggle_visible"
+ },
+ {
+ "defaultMessage": "Expand video",
+ "id": "video_player.expand"
+ },
+ {
+ "defaultMessage": "Video could not be played",
+ "id": "video_player.video_error"
+ },
+ {
+ "defaultMessage": "Sensitive content",
+ "id": "status.sensitive_warning"
+ },
+ {
+ "defaultMessage": "Click to view",
+ "id": "status.sensitive_toggle"
+ },
+ {
+ "defaultMessage": "Media hidden",
+ "id": "status.media_hidden"
+ }
+ ],
+ "path": "app/javascript/mastodon/components/video_player.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Delete",
+ "id": "confirmations.delete.confirm"
+ },
+ {
+ "defaultMessage": "Are you sure you want to delete this status?",
+ "id": "confirmations.delete.message"
+ },
+ {
+ "defaultMessage": "Block",
+ "id": "confirmations.block.confirm"
+ },
+ {
+ "defaultMessage": "Mute",
+ "id": "confirmations.mute.confirm"
+ },
+ {
+ "defaultMessage": "Are you sure you want to block {name}?",
+ "id": "confirmations.block.message"
+ },
+ {
+ "defaultMessage": "Are you sure you want to mute {name}?",
+ "id": "confirmations.mute.message"
+ }
+ ],
+ "path": "app/javascript/mastodon/containers/status_container.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Block",
+ "id": "confirmations.block.confirm"
+ },
+ {
+ "defaultMessage": "Mute",
+ "id": "confirmations.mute.confirm"
+ },
+ {
+ "defaultMessage": "Are you sure you want to block {name}?",
+ "id": "confirmations.block.message"
+ },
+ {
+ "defaultMessage": "Are you sure you want to mute {name}?",
+ "id": "confirmations.mute.message"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/account_timeline/containers/header_container.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Mention @{name}",
+ "id": "account.mention"
+ },
+ {
+ "defaultMessage": "Edit profile",
+ "id": "account.edit_profile"
+ },
+ {
+ "defaultMessage": "Unblock @{name}",
+ "id": "account.unblock"
+ },
+ {
+ "defaultMessage": "Unfollow",
+ "id": "account.unfollow"
+ },
+ {
+ "defaultMessage": "Unmute @{name}",
+ "id": "account.unmute"
+ },
+ {
+ "defaultMessage": "Block @{name}",
+ "id": "account.block"
+ },
+ {
+ "defaultMessage": "Mute @{name}",
+ "id": "account.mute"
+ },
+ {
+ "defaultMessage": "Follow",
+ "id": "account.follow"
+ },
+ {
+ "defaultMessage": "Report @{name}",
+ "id": "account.report"
+ },
+ {
+ "defaultMessage": "This user is from another instance. This number may be larger.",
+ "id": "account.disclaimer"
+ },
+ {
+ "defaultMessage": "Posts",
+ "id": "account.posts"
+ },
+ {
+ "defaultMessage": "Follows",
+ "id": "account.follows"
+ },
+ {
+ "defaultMessage": "Followers",
+ "id": "account.followers"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/account/components/action_bar.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Unfollow",
+ "id": "account.unfollow"
+ },
+ {
+ "defaultMessage": "Follow",
+ "id": "account.follow"
+ },
+ {
+ "defaultMessage": "Awaiting approval",
+ "id": "account.requested"
+ },
+ {
+ "defaultMessage": "Follows you",
+ "id": "account.follows_you"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/account/components/header.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Blocked users",
+ "id": "column.blocks"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/blocks/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Local timeline",
+ "id": "column.community"
+ },
+ {
+ "defaultMessage": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "id": "empty_column.community"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/community_timeline/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "What is on your mind?",
+ "id": "compose_form.placeholder"
+ },
+ {
+ "defaultMessage": "Content warning",
+ "id": "compose_form.spoiler_placeholder"
+ },
+ {
+ "defaultMessage": "Toot",
+ "id": "compose_form.publish"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/compose_form.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Insert emoji",
+ "id": "emoji_button.label"
+ },
+ {
+ "defaultMessage": "Search...",
+ "id": "emoji_button.search"
+ },
+ {
+ "defaultMessage": "People",
+ "id": "emoji_button.people"
+ },
+ {
+ "defaultMessage": "Nature",
+ "id": "emoji_button.nature"
+ },
+ {
+ "defaultMessage": "Food & Drink",
+ "id": "emoji_button.food"
+ },
+ {
+ "defaultMessage": "Activity",
+ "id": "emoji_button.activity"
+ },
+ {
+ "defaultMessage": "Travel & Places",
+ "id": "emoji_button.travel"
+ },
+ {
+ "defaultMessage": "Objects",
+ "id": "emoji_button.objects"
+ },
+ {
+ "defaultMessage": "Symbols",
+ "id": "emoji_button.symbols"
+ },
+ {
+ "defaultMessage": "Flags",
+ "id": "emoji_button.flags"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Edit profile",
+ "id": "navigation_bar.edit_profile"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/navigation_bar.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Public",
+ "id": "privacy.public.short"
+ },
+ {
+ "defaultMessage": "Post to public timelines",
+ "id": "privacy.public.long"
+ },
+ {
+ "defaultMessage": "Unlisted",
+ "id": "privacy.unlisted.short"
+ },
+ {
+ "defaultMessage": "Do not show in public timelines",
+ "id": "privacy.unlisted.long"
+ },
+ {
+ "defaultMessage": "Followers-only",
+ "id": "privacy.private.short"
+ },
+ {
+ "defaultMessage": "Post to followers only",
+ "id": "privacy.private.long"
+ },
+ {
+ "defaultMessage": "Direct",
+ "id": "privacy.direct.short"
+ },
+ {
+ "defaultMessage": "Post to mentioned users only",
+ "id": "privacy.direct.long"
+ },
+ {
+ "defaultMessage": "Adjust status privacy",
+ "id": "privacy.change"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/privacy_dropdown.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Cancel",
+ "id": "reply_indicator.cancel"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/reply_indicator.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "{count, number} {count, plural, one {result} other {results}}",
+ "id": "search_results.total"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/search_results.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Search",
+ "id": "search.placeholder"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/search.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Add media",
+ "id": "upload_button.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/upload_button.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Undo",
+ "id": "upload_form.undo"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/upload_form.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Uploading...",
+ "id": "upload_progress.label"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/components/upload_progress.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Mark media as sensitive",
+ "id": "compose_form.sensitive"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/containers/sensitive_button_container.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Hide text behind warning",
+ "id": "compose_form.spoiler"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/containers/spoiler_button_container.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "id": "compose_form.lock_disclaimer"
+ },
+ {
+ "defaultMessage": "locked",
+ "id": "compose_form.lock_disclaimer.lock"
+ },
+ {
+ "defaultMessage": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
+ "id": "compose_form.privacy_disclaimer"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/containers/warning_container.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Getting started",
+ "id": "getting_started.heading"
+ },
+ {
+ "defaultMessage": "Federated timeline",
+ "id": "navigation_bar.public_timeline"
+ },
+ {
+ "defaultMessage": "Local timeline",
+ "id": "navigation_bar.community_timeline"
+ },
+ {
+ "defaultMessage": "Preferences",
+ "id": "navigation_bar.preferences"
+ },
+ {
+ "defaultMessage": "Logout",
+ "id": "navigation_bar.logout"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/compose/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Favourites",
+ "id": "column.favourites"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/favourited_statuses/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Authorize",
+ "id": "follow_request.authorize"
+ },
+ {
+ "defaultMessage": "Reject",
+ "id": "follow_request.reject"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/follow_requests/components/account_authorize.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Follow requests",
+ "id": "column.follow_requests"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/follow_requests/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Getting started",
+ "id": "getting_started.heading"
+ },
+ {
+ "defaultMessage": "Federated timeline",
+ "id": "navigation_bar.public_timeline"
+ },
+ {
+ "defaultMessage": "Navigation",
+ "id": "column_subheading.navigation"
+ },
+ {
+ "defaultMessage": "Settings",
+ "id": "column_subheading.settings"
+ },
+ {
+ "defaultMessage": "Local timeline",
+ "id": "navigation_bar.community_timeline"
+ },
+ {
+ "defaultMessage": "Preferences",
+ "id": "navigation_bar.preferences"
+ },
+ {
+ "defaultMessage": "Follow requests",
+ "id": "navigation_bar.follow_requests"
+ },
+ {
+ "defaultMessage": "Logout",
+ "id": "navigation_bar.logout"
+ },
+ {
+ "defaultMessage": "Favourites",
+ "id": "navigation_bar.favourites"
+ },
+ {
+ "defaultMessage": "Blocked users",
+ "id": "navigation_bar.blocks"
+ },
+ {
+ "defaultMessage": "Muted users",
+ "id": "navigation_bar.mutes"
+ },
+ {
+ "defaultMessage": "Extended information",
+ "id": "navigation_bar.info"
+ },
+ {
+ "defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}. {apps}.",
+ "id": "getting_started.open_source_notice"
+ },
+ {
+ "defaultMessage": "Various apps are available",
+ "id": "getting_started.apps"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/getting_started/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "There is nothing in this hashtag yet.",
+ "id": "empty_column.hashtag"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/hashtag_timeline/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Filter out by regular expressions",
+ "id": "home.column_settings.filter_regex"
+ },
+ {
+ "defaultMessage": "Column settings",
+ "id": "home.settings"
+ },
+ {
+ "defaultMessage": "Basic",
+ "id": "home.column_settings.basic"
+ },
+ {
+ "defaultMessage": "Show boosts",
+ "id": "home.column_settings.show_reblogs"
+ },
+ {
+ "defaultMessage": "Show replies",
+ "id": "home.column_settings.show_replies"
+ },
+ {
+ "defaultMessage": "Advanced",
+ "id": "home.column_settings.advanced"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/home_timeline/components/column_settings.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Home",
+ "id": "column.home"
+ },
+ {
+ "defaultMessage": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "id": "empty_column.home"
+ },
+ {
+ "defaultMessage": "the public timeline",
+ "id": "empty_column.home.public_timeline"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/home_timeline/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Muted users",
+ "id": "column.mutes"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/mutes/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Clear notifications",
+ "id": "notifications.clear"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/notifications/components/clear_column_button.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Column settings",
+ "id": "notifications.settings"
+ },
+ {
+ "defaultMessage": "Desktop notifications",
+ "id": "notifications.column_settings.alert"
+ },
+ {
+ "defaultMessage": "Show in column",
+ "id": "notifications.column_settings.show"
+ },
+ {
+ "defaultMessage": "Play sound",
+ "id": "notifications.column_settings.sound"
+ },
+ {
+ "defaultMessage": "New followers:",
+ "id": "notifications.column_settings.follow"
+ },
+ {
+ "defaultMessage": "Favourites:",
+ "id": "notifications.column_settings.favourite"
+ },
+ {
+ "defaultMessage": "Mentions:",
+ "id": "notifications.column_settings.mention"
+ },
+ {
+ "defaultMessage": "Boosts:",
+ "id": "notifications.column_settings.reblog"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/notifications/components/column_settings.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "{name} followed you",
+ "id": "notification.follow"
+ },
+ {
+ "defaultMessage": "{name} favourited your status",
+ "id": "notification.favourite"
+ },
+ {
+ "defaultMessage": "{name} boosted your status",
+ "id": "notification.reblog"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/notifications/components/notification.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Notifications",
+ "id": "column.notifications"
+ },
+ {
+ "defaultMessage": "Are you sure you want to permanently clear all your notifications?",
+ "id": "notifications.clear_confirmation"
+ },
+ {
+ "defaultMessage": "Clear notifications",
+ "id": "notifications.clear"
+ },
+ {
+ "defaultMessage": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "id": "empty_column.notifications"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/notifications/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Federated timeline",
+ "id": "column.public"
+ },
+ {
+ "defaultMessage": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "id": "empty_column.public"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/public_timeline/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "New report",
+ "id": "report.heading"
+ },
+ {
+ "defaultMessage": "Additional comments",
+ "id": "report.placeholder"
+ },
+ {
+ "defaultMessage": "Submit",
+ "id": "report.submit"
+ },
+ {
+ "defaultMessage": "Reporting",
+ "id": "report.target"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/report/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Delete",
+ "id": "status.delete"
+ },
+ {
+ "defaultMessage": "Mention @{name}",
+ "id": "status.mention"
+ },
+ {
+ "defaultMessage": "Reply",
+ "id": "status.reply"
+ },
+ {
+ "defaultMessage": "Boost",
+ "id": "status.reblog"
+ },
+ {
+ "defaultMessage": "This post cannot be boosted",
+ "id": "status.cannot_reblog"
+ },
+ {
+ "defaultMessage": "Favourite",
+ "id": "status.favourite"
+ },
+ {
+ "defaultMessage": "Report @{name}",
+ "id": "status.report"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/status/components/action_bar.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Delete",
+ "id": "confirmations.delete.confirm"
+ },
+ {
+ "defaultMessage": "Are you sure you want to delete this status?",
+ "id": "confirmations.delete.message"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/status/index.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Boost",
+ "id": "status.reblog"
+ },
+ {
+ "defaultMessage": "You can press {combo} to skip this next time",
+ "id": "boost_modal.combo"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/boost_modal.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Cancel",
+ "id": "confirmation_modal.cancel"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/confirmation_modal.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Close",
+ "id": "lightbox.close"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/media_modal.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Home",
+ "id": "column.home"
+ },
+ {
+ "defaultMessage": "Notifications",
+ "id": "column.notifications"
+ },
+ {
+ "defaultMessage": "Local timeline",
+ "id": "column.community"
+ },
+ {
+ "defaultMessage": "Federated timeline",
+ "id": "column.public"
+ },
+ {
+ "defaultMessage": "Welcome to Mastodon!",
+ "id": "onboarding.page_one.welcome"
+ },
+ {
+ "defaultMessage": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "id": "onboarding.page_one.federation"
+ },
+ {
+ "defaultMessage": "You are on {domain}, so your full handle is {handle}",
+ "id": "onboarding.page_one.handle"
+ },
+ {
+ "defaultMessage": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "id": "onboarding.page_two.compose"
+ },
+ {
+ "defaultMessage": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "id": "onboarding.page_three.search"
+ },
+ {
+ "defaultMessage": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "id": "onboarding.page_three.profile"
+ },
+ {
+ "defaultMessage": "The home timeline shows posts from people you follow.",
+ "id": "onboarding.page_four.home"
+ },
+ {
+ "defaultMessage": "The notifications column shows when someone interacts with you.",
+ "id": "onboarding.page_four.notifications"
+ },
+ {
+ "defaultMessage": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "id": "onboarding.page_five.public_timelines"
+ },
+ {
+ "defaultMessage": "Your instance's admin is {admin}.",
+ "id": "onboarding.page_six.admin"
+ },
+ {
+ "defaultMessage": "Please read {domain}'s {guidelines}!",
+ "id": "onboarding.page_six.read_guidelines"
+ },
+ {
+ "defaultMessage": "community guidelines",
+ "id": "onboarding.page_six.guidelines"
+ },
+ {
+ "defaultMessage": "Almost done...",
+ "id": "onboarding.page_six.almost_done"
+ },
+ {
+ "defaultMessage": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "id": "onboarding.page_six.github"
+ },
+ {
+ "defaultMessage": "There are {apps} available for iOS, Android and other platforms.",
+ "id": "onboarding.page_six.apps_available"
+ },
+ {
+ "defaultMessage": "mobile apps",
+ "id": "onboarding.page_six.various_app"
+ },
+ {
+ "defaultMessage": "Bon Appetoot!",
+ "id": "onboarding.page_six.appetoot"
+ },
+ {
+ "defaultMessage": "Next",
+ "id": "onboarding.next"
+ },
+ {
+ "defaultMessage": "Done",
+ "id": "onboarding.done"
+ },
+ {
+ "defaultMessage": "Skip",
+ "id": "onboarding.skip"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/onboarding_modal.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Compose",
+ "id": "tabs_bar.compose"
+ },
+ {
+ "defaultMessage": "Home",
+ "id": "tabs_bar.home"
+ },
+ {
+ "defaultMessage": "Notifications",
+ "id": "tabs_bar.notifications"
+ },
+ {
+ "defaultMessage": "Local",
+ "id": "tabs_bar.local_timeline"
+ },
+ {
+ "defaultMessage": "Federated",
+ "id": "tabs_bar.federated_timeline"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/tabs_bar.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Drag & drop to upload",
+ "id": "upload_area.title"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/upload_area.json"
+ },
+ {
+ "descriptors": [
+ {
+ "defaultMessage": "Close",
+ "id": "lightbox.close"
+ }
+ ],
+ "path": "app/javascript/mastodon/features/ui/components/video_modal.json"
+ }
+]
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/en.jsx b/app/javascript/mastodon/locales/en.json
similarity index 94%
rename from app/assets/javascripts/components/locales/en.jsx
rename to app/javascript/mastodon/locales/en.json
index afe714cac1..797a1caf2e 100644
--- a/app/assets/javascripts/components/locales/en.jsx
+++ b/app/javascript/mastodon/locales/en.json
@@ -1,14 +1,4 @@
-/**
- * Note for Contributors:
- * This file (en.jsx) serve as a template for other languages.
- * To make other contributors' life easier, please REMEMBER:
- * 1. to add your new string here; and
- * 2. to remove old strings that are no longer needed; and
- * 3. to sort the strings by the key.
- * 4. To rename the `en` const name and export default name to match your locale.
- * Thanks!
- */
-const en = {
+{
"account.block": "Block @{name}",
"account.disclaimer": "This user is from another instance. This number may be larger.",
"account.edit_profile": "Edit profile",
@@ -63,8 +53,8 @@ const en = {
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
- "empty_column.home.public_timeline": "the public timeline",
"empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize",
@@ -94,7 +84,6 @@ const en = {
"navigation_bar.public_timeline": "Federated timeline",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
- "notification.mention": "{name} mentioned you",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
@@ -141,7 +130,6 @@ const en = {
"report.submit": "Submit",
"report.target": "Reporting",
"search.placeholder": "Search",
- "search.status_by": "Status by {name}",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Delete",
@@ -171,7 +159,5 @@ const en = {
"video_player.expand": "Expand video",
"video_player.toggle_sound": "Toggle sound",
"video_player.toggle_visible": "Toggle visibility",
- "video_player.video_error": "Video could not be played",
-};
-
-export default en;
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
new file mode 100644
index 0000000000..b71088490d
--- /dev/null
+++ b/app/javascript/mastodon/locales/eo.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Bloki @{name}",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Redakti la profilon",
+ "account.follow": "Sekvi",
+ "account.followers": "Sekvantoj",
+ "account.follows": "Sekvatoj",
+ "account.follows_you": "Sekvas vin",
+ "account.mention": "Mencii @{name}",
+ "account.mute": "Mute @{name}",
+ "account.posts": "Mesaĝoj",
+ "account.report": "Report @{name}",
+ "account.requested": "Atendas aprobon",
+ "account.unblock": "Malbloki @{name}",
+ "account.unfollow": "Malsekvi",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Blocked users",
+ "column.community": "Loka tempolinio",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Hejmo",
+ "column.mutes": "Muted users",
+ "column.notifications": "Sciigoj",
+ "column.public": "Fratara tempolinio",
+ "column_back_button.label": "Reveni",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "Pri kio vi pensas?",
+ "compose_form.privacy_disclaimer": "Via privata mesaĝo estos sendita nur al menciitaj uzantoj en {domains}. Ĉu vi fidas {domainsCount, plural, one {tiun servilon} other {tiujn servilojn}}? Mesaĝa privateco funkcias nur en aperaĵoj de Mastodon. Se {domains} {domainsCount, plural, one {ne estas aperaĵo de Mastodon} other {ne estas aperaĵoj de Mastodon}}, estos neniu indiko ke via mesaĝo estas privata, kaj ĝi povus esti diskonigita aŭ videbligita al necelitaj ricevantoj.",
+ "compose_form.publish": "Hup",
+ "compose_form.sensitive": "Marki ke la enhavo estas tikla",
+ "compose_form.spoiler": "Kaŝi la tekston malantaŭ averto",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Por komenci",
+ "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en github je {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Fermi",
+ "loading_indicator.label": "Ŝarĝanta...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Loka tempolinio",
+ "navigation_bar.edit_profile": "Redakti la profilon",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "Elsaluti",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Preferoj",
+ "navigation_bar.public_timeline": "Fratara tempolinio",
+ "notification.favourite": "{name} favoris vian mesaĝon",
+ "notification.follow": "{name} sekvis vin",
+ "notification.reblog": "{name} diskonigis vian mesaĝon",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Retumilaj atentigoj",
+ "notifications.column_settings.favourite": "Favoroj:",
+ "notifications.column_settings.follow": "Novaj sekvantoj:",
+ "notifications.column_settings.mention": "Mencioj:",
+ "notifications.column_settings.reblog": "Diskonigoj:",
+ "notifications.column_settings.show": "Montri en kolono",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "reply_indicator.cancel": "Rezigni",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Serĉi",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Forigi",
+ "status.favourite": "Favori",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mencii @{name}",
+ "status.open": "Expand this status",
+ "status.reblog": "Diskonigi",
+ "status.reblogged_by": "{name} diskonigita",
+ "status.reply": "Respondi",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Alklaki por vidi",
+ "status.sensitive_warning": "Tikla enhavo",
+ "status.show_less": "Show less",
+ "status.show_more": "Show more",
+ "tabs_bar.compose": "Ekskribi",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Hejmo",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Sciigoj",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Aldoni enhavaĵon",
+ "upload_form.undo": "Malfari",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Aktivigi sonojn",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
new file mode 100644
index 0000000000..c023a4b7e0
--- /dev/null
+++ b/app/javascript/mastodon/locales/es.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Bloquear",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Editar perfil",
+ "account.follow": "Seguir",
+ "account.followers": "Seguidores",
+ "account.follows": "Seguir",
+ "account.follows_you": "Te sigue",
+ "account.mention": "Mencionar",
+ "account.mute": "Silenciar",
+ "account.posts": "Publicaciones",
+ "account.report": "Report @{name}",
+ "account.requested": "Esperando aprobación",
+ "account.unblock": "Desbloquear",
+ "account.unfollow": "Dejar de seguir",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Usuarios bloqueados",
+ "column.community": "Historia local",
+ "column.favourites": "Favoritos",
+ "column.follow_requests": "Solicitudes para seguirte",
+ "column.home": "Inicio",
+ "column.mutes": "Usuarios silenciados",
+ "column.notifications": "Notificaciones",
+ "column.public": "Historia federada",
+ "column_back_button.label": "Atrás",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "¿En qué estás pensando?",
+ "compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
+ "compose_form.publish": "Tootear",
+ "compose_form.sensitive": "Marcar contenido como sensible",
+ "compose_form.spoiler": "Ocultar texto tras advertencia",
+ "compose_form.spoiler_placeholder": "Advertencia de contenido",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insertar emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Primeros pasos",
+ "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Cerrar",
+ "loading_indicator.label": "Cargando...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Usuarios bloqueados",
+ "navigation_bar.community_timeline": "Historia local",
+ "navigation_bar.edit_profile": "Editar perfil",
+ "navigation_bar.favourites": "Favoritos",
+ "navigation_bar.follow_requests": "Solicitudes para seguirte",
+ "navigation_bar.info": "Información adicional",
+ "navigation_bar.logout": "Cerrar sesión",
+ "navigation_bar.mutes": "Usuarios silenciados",
+ "navigation_bar.preferences": "Preferencias",
+ "navigation_bar.public_timeline": "Historia federada",
+ "notification.favourite": "{name} marcó tu estado como favorito",
+ "notification.follow": "{name} te empezó a seguir",
+ "notification.reblog": "{name} ha retooteado tu estado",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Notificaciones de escritorio",
+ "notifications.column_settings.favourite": "Favoritos:",
+ "notifications.column_settings.follow": "Nuevos seguidores:",
+ "notifications.column_settings.mention": "Menciones:",
+ "notifications.column_settings.reblog": "Retoots:",
+ "notifications.column_settings.show": "Mostrar en columna",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Ajustar privacidad",
+ "privacy.direct.long": "Sólo mostrar a los usuarios mencionados",
+ "privacy.direct.short": "Directo",
+ "privacy.private.long": "Sólo mostrar a seguidores",
+ "privacy.private.short": "Privado",
+ "privacy.public.long": "Mostrar en la historia federada",
+ "privacy.public.short": "Público",
+ "privacy.unlisted.long": "No mostrar en la historia federada",
+ "privacy.unlisted.short": "Sin federar",
+ "reply_indicator.cancel": "Cancelar",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Buscar",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Borrar",
+ "status.favourite": "Favorito",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mencionar",
+ "status.open": "Expandir estado",
+ "status.reblog": "Retoot",
+ "status.reblogged_by": "Retooteado por {name}",
+ "status.reply": "Responder",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Reportar",
+ "status.sensitive_toggle": "Click para ver",
+ "status.sensitive_warning": "Contenido sensible",
+ "status.show_less": "Mostrar menos",
+ "status.show_more": "Mostrar más",
+ "tabs_bar.compose": "Redactar",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Inicio",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notificaciones",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Subir multimedia",
+ "upload_form.undo": "Deshacer",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Act/Desac. sonido",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/fa.jsx b/app/javascript/mastodon/locales/fa.json
similarity index 76%
rename from app/assets/javascripts/components/locales/fa.jsx
rename to app/javascript/mastodon/locales/fa.json
index 40a7506187..7f65858844 100644
--- a/app/assets/javascripts/components/locales/fa.jsx
+++ b/app/javascript/mastodon/locales/fa.json
@@ -1,11 +1,11 @@
-const fa = {
+{
"account.block": "@{name} را مسدود کن",
"account.disclaimer": "این کاربر عضو سرور متفاوتی است. شاید عدد واقعی بیشتر از این باشد.",
"account.edit_profile": "ویرایش نمایه",
"account.follow": "پی بگیرید",
"account.followers": "پیگیران",
- "account.follows_you": "پیگیر شماست",
"account.follows": "پی میگیرد",
+ "account.follows_you": "پیگیر شماست",
"account.mention": "نامبردن از @{name}",
"account.mute": "بیصدا کردن @{name}",
"account.posts": "نوشتهها",
@@ -15,7 +15,6 @@ const fa = {
"account.unfollow": "پایان پیگیری",
"account.unmute": "باصدا کردن @{name}",
"boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
- "column_back_button.label": "بازگشت",
"column.blocks": "کاربران مسدودشده",
"column.community": "نوشتههای محلی",
"column.favourites": "پسندیدهها",
@@ -24,26 +23,38 @@ const fa = {
"column.mutes": "کاربران بیصداشده",
"column.notifications": "اعلانها",
"column.public": "نوشتههای همهجا",
+ "column_back_button.label": "بازگشت",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "تازه چه خبر؟",
"compose_form.privacy_disclaimer": "نوشتهٔ خصوصی شما به کاربران نامبردهشده در {domains} فرستاده میشود. آیا به {domainsCount, plural, one {آن سرور} other {آن سرورها}} اعتماد دارید؟ تنظیمات حریم خصوصی نوشتهها تنها در سرورهای ماستدون کار میکند. اگر {domains} {domainsCount, plural, one {یک سرور ماستدون نباشد} other {سرورهای ماستدون نباشند}}، اشارهای به خصوصیبودن نوشتهٔ شما نخواهد شد و شاید نوشتهٔ شما همرسان شود یا برای کاربرانی که نمیخواهید نمایش یابد.",
"compose_form.publish": "بوق",
"compose_form.sensitive": "تصاویر حساس هستند",
- "compose_form.spoiler_placeholder": "هشدار محتوا",
"compose_form.spoiler": "نوشته را پشت هشدار پنهان کنید",
+ "compose_form.spoiler_placeholder": "هشدار محتوا",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "فعالیت",
+ "emoji_button.flags": "پرچمها",
+ "emoji_button.food": "غذا و نوشیدنی",
"emoji_button.label": "افزودن شکلک",
- "emoji_button.search": "جستجو...",
- "emoji_button.people": "مردم",
"emoji_button.nature": "طبیعت",
- "emoji_button.food": "غذا و نوشیدنی",
- "emoji_button.activity": "فعالیت",
- "emoji_button.travel": "سفر و مکان",
"emoji_button.objects": "اشیا",
+ "emoji_button.people": "مردم",
+ "emoji_button.search": "جستجو...",
"emoji_button.symbols": "نمادها",
- "emoji_button.flags": "پرچمها",
+ "emoji_button.travel": "سفر و مکان",
"empty_column.community": "فهرست نوشتههای محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
"empty_column.hashtag": "هنوز هیچ چیزی با این هشتگ نیست.",
- "empty_column.home.public_timeline": "فهرست نوشتههای همهجا",
"empty_column.home": "شما هنوز پیگیر کسی نیستید. {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.",
+ "empty_column.home.public_timeline": "فهرست نوشتههای همهجا",
"empty_column.notifications": "هنوز هیچ اعلانی ندارید. به نوشتههای دیگران واکنش نشان دهید تا گفتگو آغاز شود.",
"empty_column.public": "اینجا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران دیگر را پی بگیرید تا اینجا پر شود",
"follow_request.authorize": "اجازه دهید",
@@ -73,10 +84,9 @@ const fa = {
"navigation_bar.public_timeline": "نوشتههای همهجا",
"notification.favourite": "{name} نوشتهٔ شما را پسندید",
"notification.follow": "{name} پیگیر شما شد",
- "notification.mention": "{name} از شما نام برد",
"notification.reblog": "{name} نوشتهٔ شما را بازبوقید",
- "notifications.clear_confirmation": "واقعاً میخواهید همهٔ اعلانهایتان را برای همیشه پاک کنید؟",
"notifications.clear": "پاککردن اعلانها",
+ "notifications.clear_confirmation": "واقعاً میخواهید همهٔ اعلانهایتان را برای همیشه پاک کنید؟",
"notifications.column_settings.alert": "اعلان در کامپیوتر",
"notifications.column_settings.favourite": "پسندیدهها:",
"notifications.column_settings.follow": "پیگیران تازه:",
@@ -85,6 +95,26 @@ const fa = {
"notifications.column_settings.show": "در ستون نشان بده",
"notifications.column_settings.sound": "صدا را پخش کن",
"notifications.settings": "تنظیمات ستون",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "تنظیم حریم خصوصی نوشتهها",
"privacy.direct.long": "تنها به کاربران نامبردهشده نشان بده",
"privacy.direct.short": "مستقیم",
@@ -99,9 +129,9 @@ const fa = {
"report.placeholder": "توضیح اضافه",
"report.submit": "بفرست",
"report.target": "گزارشدادن",
- "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}",
"search.placeholder": "جستجو",
- "search.status_by": "نوشتهٔ {name}",
+ "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}",
+ "status.cannot_reblog": "این نوشته را نمیشود بازبوقید",
"status.delete": "پاککردن",
"status.favourite": "پسندیدن",
"status.load_more": "بیشتر نشان بده",
@@ -109,7 +139,6 @@ const fa = {
"status.mention": "از @{name} نام ببرید",
"status.open": "این نوشته را باز کن",
"status.reblog": "بوق",
- "status.cannot_reblog": "این نوشته را نمیشود بازبوقید",
"status.reblogged_by": "{name} بازبوقید",
"status.reply": "پاسخ",
"status.replyAll": "به نوشته پاسخ دهید",
@@ -127,10 +156,8 @@ const fa = {
"upload_button.label": "افزودن تصویر",
"upload_form.undo": "واگردانی",
"upload_progress.label": "بارگذاری...",
+ "video_player.expand": "بازکردن ویدیو",
"video_player.toggle_sound": "تغییر صداداری",
"video_player.toggle_visible": "تغییر پیدایی",
- "video_player.expand": "بازکردن ویدیو",
- "video_player.video_error": "ویدیو نمیتواند پخش شود",
-};
-
-export default fa;
+ "video_player.video_error": "ویدیو نمیتواند پخش شود"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
new file mode 100644
index 0000000000..148a371aeb
--- /dev/null
+++ b/app/javascript/mastodon/locales/fi.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Estä @{name}",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Muokkaa",
+ "account.follow": "Seuraa",
+ "account.followers": "Seuraajia",
+ "account.follows": "Seuraa",
+ "account.follows_you": "Seuraa sinua",
+ "account.mention": "Mainitse @{name}",
+ "account.mute": "Mute @{name}",
+ "account.posts": "Postit",
+ "account.report": "Report @{name}",
+ "account.requested": "Odottaa hyväksyntää",
+ "account.unblock": "Salli @{name}",
+ "account.unfollow": "Lopeta seuraaminen",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Blocked users",
+ "column.community": "Paikallinen aikajana",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Koti",
+ "column.mutes": "Muted users",
+ "column.notifications": "Ilmoitukset",
+ "column.public": "Yleinen aikajana",
+ "column_back_button.label": "Takaisin",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "Mitä sinulla on mielessä?",
+ "compose_form.privacy_disclaimer": "Sinun yksityinen status toimitetaan mainitsemallesi käyttäjille domaineissa {domains}. Luotatko {domainsCount, plural, one {tähän palvelimeen} other {näihin palvelimiin}}? Postauksen yksityisyys toimii van Mastodon palvelimilla. Jos {domains} {domainsCount, plural, one {ei ole Mastodon palvelin} other {eivät ole Mastodon palvelin}}, viestiin ei tule Yksityinen-merkintää, ja sitä voidaan boostata tai muuten tehdä näkyväksi muille vastaanottajille.",
+ "compose_form.publish": "Toot",
+ "compose_form.sensitive": "Merkitse media herkäksi",
+ "compose_form.spoiler": "Piiloita teksti varoituksen taakse",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Aloitus",
+ "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHub palvelussa {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Sulje",
+ "loading_indicator.label": "Ladataan...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Paikallinen aikajana",
+ "navigation_bar.edit_profile": "Muokkaa profiilia",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "Kirjaudu ulos",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Ominaisuudet",
+ "navigation_bar.public_timeline": "Yleinen aikajana",
+ "notification.favourite": "{name} tykkäsi statuksestasi",
+ "notification.follow": "{name} seurasi sinua",
+ "notification.reblog": "{name} buustasi statustasi",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Työpöytä ilmoitukset",
+ "notifications.column_settings.favourite": "Tykkäyksiä:",
+ "notifications.column_settings.follow": "Uusia seuraajia:",
+ "notifications.column_settings.mention": "Mainintoja:",
+ "notifications.column_settings.reblog": "Buusteja:",
+ "notifications.column_settings.show": "Näytä sarakkeessa",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "reply_indicator.cancel": "Peruuta",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Hae",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Poista",
+ "status.favourite": "Tykkää",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mainitse @{name}",
+ "status.open": "Expand this status",
+ "status.reblog": "Buustaa",
+ "status.reblogged_by": "{name} buustasi",
+ "status.reply": "Vastaa",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Klikkaa nähdäksesi",
+ "status.sensitive_warning": "Arkaluontoista sisältöä",
+ "status.show_less": "Show less",
+ "status.show_more": "Show more",
+ "tabs_bar.compose": "Luo",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Koti",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Ilmoitukset",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Lisää mediaa",
+ "upload_form.undo": "Peru",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Äänet päälle/pois",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/fr.jsx b/app/javascript/mastodon/locales/fr.json
similarity index 86%
rename from app/assets/javascripts/components/locales/fr.jsx
rename to app/javascript/mastodon/locales/fr.json
index de13284e56..36a5b04c64 100644
--- a/app/assets/javascripts/components/locales/fr.jsx
+++ b/app/javascript/mastodon/locales/fr.json
@@ -1,18 +1,10 @@
-/**
- * Note aux contributeurs⋅trices:
- * Pour rendre plus simple la vie des autres personnes
- * apportant leur contribution, merci de penser aux choses suivantes :
- * 1. Ajoutez les nouvelles chaînes traduites par ordre alphabétique
- * 2. Pensez à supprimer les chaînes inutilisées
- * Merci !
- */
-const fr = {
+{
"account.block": "Bloquer",
"account.disclaimer": "Ce compte est situé sur une autre instance. Les nombres peuvent être plus grands.",
"account.edit_profile": "Modifier le profil",
+ "account.follow": "Suivre",
"account.followers": "Abonné⋅e⋅s",
"account.follows": "Abonnements",
- "account.follow": "Suivre",
"account.follows_you": "Vous suit",
"account.mention": "Mentionner",
"account.mute": "Masquer",
@@ -22,14 +14,20 @@ const fr = {
"account.unblock": "Débloquer",
"account.unfollow": "Ne plus suivre",
"account.unmute": "Ne plus masquer",
- "column_back_button.label": "Retour",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
"column.blocks": "Comptes bloqués",
"column.community": "Fil public local",
"column.favourites": "Favoris",
"column.follow_requests": "Demandes de suivi",
"column.home": "Accueil",
+ "column.mutes": "Muted users",
"column.notifications": "Notifications",
"column.public": "Fil public global",
+ "column_back_button.label": "Retour",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Qu’avez-vous en tête ?",
"compose_form.privacy_disclaimer": "Votre statut privé va être transmis aux personnes mentionnées sur {domains}. Avez-vous confiance en {domainsCount, plural, one {ce serveur} other {ces serveurs}} pour ne pas divulguer votre statut ? Les statuts privés ne fonctionnent que sur les instances de Mastodon. Si {domains} {domainsCount, plural, one {n’est pas une instance de Mastodon} other {ne sont pas des instances de Mastodon}}, il n’y aura aucune indication que votre statut est privé, et il pourrait être partagé ou rendu visible d’une autre manière à d’autres personnes imprévues.",
"compose_form.private": "Rendre privé",
@@ -37,8 +35,23 @@ const fr = {
"compose_form.sensitive": "Marquer le média comme délicat",
"compose_form.spoiler": "Masquer le texte derrière un avertissement",
"compose_form.spoiler_placeholder": "Avertissement",
- "compose_form.unlisted": "Ne pas afficher dans les fils publics",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Insérer un emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",
"empty_column.hashtag": "Il n’y a encore aucun contenu relatif à ce hashtag",
"empty_column.home.public_timeline": "le fil public",
@@ -47,9 +60,7 @@ const fr = {
"empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des utilisateurs⋅trices d’autres instances pour remplir le fil public.",
"follow_request.authorize": "Autoriser",
"follow_request.reject": "Rejeter",
- "getting_started.about_addressing": "Vous pouvez suivre les statuts de quelqu’un en entrant dans le champ de recherche leur identifiant et le domaine de leur instance, séparés par un @ à la manière d’une adresse courriel.",
- "getting_started.about_developer": "Pour suivre le développeur de ce projet, c’est Gargron@mastodon.social",
- "getting_started.about_shortcuts": "Si cette personne utilise la même instance que vous, l’identifiant suffit. C’est le même principe pour mentionner quelqu’un dans vos statuts.",
+ "getting_started.apps": "Various apps are available",
"getting_started.heading": "Pour commencer",
"getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer et envoyer vos commentaires et rapports de bogues via {github} sur GitHub.",
"home.column_settings.advanced": "Avancé",
@@ -74,10 +85,9 @@ const fr = {
"navigation_bar.public_timeline": "Fil public global",
"notification.favourite": "{name} a ajouté à ses favoris :",
"notification.follow": "{name} vous suit.",
- "notification.mention": "{name} vous a mentionné⋅e :",
"notification.reblog": "{name} a partagé votre statut :",
- "notifications.clear_confirmation": "Voulez-vous vraiment supprimer toutes vos notifications ?",
"notifications.clear": "Nettoyer",
+ "notifications.clear_confirmation": "Voulez-vous vraiment supprimer toutes vos notifications ?",
"notifications.column_settings.alert": "Notifications locales",
"notifications.column_settings.favourite": "Favoris :",
"notifications.column_settings.follow": "Nouveaux abonné⋅e⋅s :",
@@ -86,6 +96,7 @@ const fr = {
"notifications.column_settings.show": "Afficher dans la colonne",
"notifications.column_settings.sound": "Émettre un son",
"notifications.settings": "Paramètres de la colonne",
+ "onboarding.done": "Done",
"onboarding.next": "Suivant",
"onboarding.page_five.public_timelines": "Le fil public global affiche les posts de tou⋅te⋅s les utilisateurs⋅trices suivi⋅es par les membres de {domain}. Le fil public local est identique mais se limite aux utilisateurs⋅trices de {domain}.",
"onboarding.page_four.home": "L’Accueil affiche les posts de tou⋅te⋅s les utilisateurs⋅trices que vous suivez",
@@ -118,20 +129,19 @@ const fr = {
"report.placeholder": "Commentaires additionnels",
"report.submit": "Envoyer",
"report.target": "Signalement",
- "search.account": "Compte",
- "search.hashtag": "Mot-clé",
"search.placeholder": "Rechercher",
"search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
- "search.status_by": "Statuts de {name}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Effacer",
"status.favourite": "Ajouter aux favoris",
"status.load_more": "Charger plus",
"status.media_hidden": "Média caché",
"status.mention": "Mentionner",
"status.open": "Déplier ce statut",
- "status.reblogged_by": "{name} a partagé :",
"status.reblog": "Partager",
+ "status.reblogged_by": "{name} a partagé :",
"status.reply": "Répondre",
+ "status.replyAll": "Reply to thread",
"status.report": "Signaler @{name}",
"status.sensitive_toggle": "Cliquer pour dévoiler",
"status.sensitive_warning": "Contenu délicat",
@@ -141,15 +151,13 @@ const fr = {
"tabs_bar.federated_timeline": "Fil public global",
"tabs_bar.home": "Accueil",
"tabs_bar.local_timeline": "Fil public local",
- "tabs_bar.mentions": "Mentions",
"tabs_bar.notifications": "Notifications",
- "tabs_bar.public": "Fil public global",
"upload_area.title": "Glissez et déposez pour envoyer",
"upload_button.label": "Joindre un média",
"upload_form.undo": "Annuler",
"upload_progress.label": "Envoi en cours…",
+ "video_player.expand": "Expand video",
"video_player.toggle_sound": "Mettre/Couper le son",
"video_player.toggle_visible": "Afficher/Cacher la vidéo",
-};
-
-export default fr;
+ "video_player.video_error": "Video could not be played"
+}
diff --git a/app/assets/javascripts/components/locales/he.jsx b/app/javascript/mastodon/locales/he.json
similarity index 77%
rename from app/assets/javascripts/components/locales/he.jsx
rename to app/javascript/mastodon/locales/he.json
index 0fcb3d33e4..f8945dc1c8 100644
--- a/app/assets/javascripts/components/locales/he.jsx
+++ b/app/javascript/mastodon/locales/he.json
@@ -1,16 +1,6 @@
-/**
- * הערה לתורמים:
- * קובץ זה (he.jsx)מבוסס על en.jsx ויש לעדכנו מפעם לפעם כשיוצאות גרסאות חדשות.
- * אנא הקלו על התורמים העתידיים:
- * 1. הוסיפו לכאן מחרוזות חדשות
- * 2. הסירו מחרוזות ישנות שכבר לא בשימוש בגרסא האנגלית
- * 3. מיינו את השורות לפי סדר ABC כמו בקובץ המקורי.
- * 4. ובבקשה כבדו את סגנון התרגום שהנחלנו כאן, או תאמו איתנו אם ישנם שינויים יסודיים
- * תודה!
- */
-const he = {
+{
"account.block": "חסימת @{name}",
- "account.disclaimer": "משתמש זה מגיע מקהילה אחרת. המספר הזה עשוי להיות גדול יותר.",
+ "account.disclaimer": "משתמש זה מגיע מקהילה אחרת. המספר הזה עשוי להיות גדול יותר.",
"account.edit_profile": "עריכת פרופיל",
"account.follow": "מעקב",
"account.followers": "עוקבים",
@@ -38,9 +28,9 @@ const he = {
"column_subheading.settings": "אפשרויות",
"compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
"compose_form.lock_disclaimer.lock": "נעול",
- "compose_form.placeholder": "מה עובר לך בראש?",
- "compose_form.privacy_disclaimer": "הודעתך הפרטית תשלח למשתמשים על {domains}. האם ניתן לסמוך על {domainsCount, plural, one {שרת זה} other {שרתים אלו}}? פרטיות ההודעה קיימת רק על שרתי מסטודון. אם {domains} {domainsCount, plural, one {הוא לא שרת מסטודון} other {הם לא שרתי מסטודון}}, לא יהיה שום סימן שההודעה פרטית, והוא עשוי להיות מקודם או להחשף למשתמשים שלא ברשימת היעד.",
- "compose_form.publish": "לחצרץ",
+ "compose_form.placeholder": "מה עובר לך בראש?",
+ "compose_form.privacy_disclaimer": "הודעתך הפרטית תשלח למשתמשים על {domains}. האם ניתן לסמוך על {domainsCount, plural, one {שרת זה} other {שרתים אלו}}? פרטיות ההודעה קיימת רק על שרתי מסטודון. אם {domains} {domainsCount, plural, one {הוא לא שרת מסטודון} other {הם לא שרתי מסטודון}}, לא יהיה שום סימן שההודעה פרטית, והוא עשוי להיות מקודם או להחשף למשתמשים שלא ברשימת היעד.",
+ "compose_form.publish": "לחצרץ",
"compose_form.sensitive": "סימון תוכן כרגיש",
"compose_form.spoiler": "הסתרה מאחורי אזהרת תוכן",
"compose_form.spoiler_placeholder": "אזהרת תוכן",
@@ -58,15 +48,15 @@ const he = {
"emoji_button.nature": "טבע",
"emoji_button.objects": "חפצים",
"emoji_button.people": "אנשים",
- "emoji_button.search": "חיפוש...",
+ "emoji_button.search": "חיפוש...",
"emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים",
- "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
- "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
+ "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
+ "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
"empty_column.home.public_timeline": "בפרהסיה",
- "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים.",
- "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב!",
- "empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות.",
+ "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים.",
+ "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב!",
+ "empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות.",
"follow_request.authorize": "קבלה",
"follow_request.reject": "דחיה",
"getting_started.apps": "קיים מבחר יישומונים לניידים",
@@ -74,7 +64,7 @@ const he = {
"getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}. {apps}.",
"home.column_settings.advanced": "למתקדמים",
"home.column_settings.basic": "למתחילים",
- "home.column_settings.filter_regex": "סינון באמצעות ביטויים רגולריים (regular expressions)",
+ "home.column_settings.filter_regex": "סינון באמצעות ביטויים רגולריים (regular expressions)",
"home.column_settings.show_reblogs": "הצגת הדהודים",
"home.column_settings.show_replies": "הצגת תגובות",
"home.settings": "הגדרות טור",
@@ -94,15 +84,15 @@ const he = {
"navigation_bar.public_timeline": "בפרהסיה",
"notification.favourite": "חצרוצך חובב על ידי {name}",
"notification.follow": "{name} במעקב אחרייך",
- "notification.mention": 'אוזכרת ע"י {name}',
+ "notification.mention": "אוזכרת ע\"י {name}",
"notification.reblog": "חצרוצך הודהד על ידי {name}",
"notifications.clear": "הסרת התראות",
- "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?",
+ "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?",
"notifications.column_settings.alert": "התראות לשולחן העבודה",
"notifications.column_settings.favourite": "מחובבים:",
"notifications.column_settings.follow": "עוקבים חדשים:",
- "notifications.column_settings.mention": "פניות:",
- "notifications.column_settings.reblog": "הדהודים:",
+ "notifications.column_settings.mention": "פניות:",
+ "notifications.column_settings.reblog": "הדהודים:",
"notifications.column_settings.show": "הצגה בטור",
"notifications.column_settings.sound": "שמע מופעל",
"notifications.settings": "הגדרות טור",
@@ -120,7 +110,7 @@ const he = {
"onboarding.page_six.apps_available": "קיימים {apps} זמינים עבור אנדרואיד, אייפון ופלטפורמות נוספות.",
"onboarding.page_six.github": "מסטודון הוא תוכנה חופשית. ניתן לדווח על באגים, לבקש יכולות, או לתרום לקוד באתר {github}.",
"onboarding.page_six.guidelines": "חוקי הקהילה",
- "onboarding.page_six.read_guidelines": "נא לקרוא את {guidelines} של {domain}!",
+ "onboarding.page_six.read_guidelines": "נא לקרוא את {guidelines} של {domain}!",
"onboarding.page_six.various_app": "יישומונים ניידים",
"onboarding.page_three.profile": "ץתחת 'עריכת פרופיל' ניתן להחליף את תמונת הפרופיל שלך, תיאור קצר, והשם המוצג. שם גם ניתן למצוא אפשרויות והעדפות נוספות.",
"onboarding.page_three.search": "בחלונית החיפוש ניתן לחפש אנשים והאשתגים, כמו למשל {illustration} או {introductions}. כדי למצוא מישהו שלא על האינסטנס המקומי, יש להשתמש בכינוי המשתמש המלא.",
@@ -171,7 +161,5 @@ const he = {
"video_player.expand": "הרחבת וידאו",
"video_player.toggle_sound": "הפעלת\\ביטול שמע",
"video_player.toggle_visible": "הפעלת\\ביטול תצוגה",
- "video_player.video_error": "לא ניתן לנגן וידאו",
-};
-
-export default he;
+ "video_player.video_error": "לא ניתן לנגן וידאו"
+}
diff --git a/app/assets/javascripts/components/locales/hr.jsx b/app/javascript/mastodon/locales/hr.json
similarity index 66%
rename from app/assets/javascripts/components/locales/hr.jsx
rename to app/javascript/mastodon/locales/hr.json
index 0ca3ef73ea..45c3cb7f62 100644
--- a/app/assets/javascripts/components/locales/hr.jsx
+++ b/app/javascript/mastodon/locales/hr.json
@@ -1,11 +1,11 @@
-const hr = {
+{
"account.block": "Blokiraj @{name}",
"account.disclaimer": "Ovaj korisnik je sa druge instance. Ovaj broj bi mogao biti veći.",
"account.edit_profile": "Uredi profil",
"account.follow": "Slijedi",
"account.followers": "Sljedbenici",
- "account.follows_you": "te slijedi",
"account.follows": "Slijedi",
+ "account.follows_you": "te slijedi",
"account.mention": "Spomeni @{name}",
"account.mute": "Utišaj @{name}",
"account.posts": "Postovi",
@@ -15,25 +15,46 @@ const hr = {
"account.unfollow": "Prestani slijediti",
"account.unmute": "Poništi utišavanje @{name}",
"boost_modal.combo": "Možeš pritisnuti {combo} kako bi ovo preskočio sljedeći put",
- "column_back_button.label": "Natrag",
"column.blocks": "Blokirani korisnici",
"column.community": "Lokalni timeline",
"column.favourites": "Favoriti",
"column.follow_requests": "Zahtjevi za slijeđenje",
"column.home": "Dom",
+ "column.mutes": "Muted users",
"column.notifications": "Notifikacije",
"column.public": "Federalni timeline",
+ "column_back_button.label": "Natrag",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Što ti je na umu?",
"compose_form.privacy_disclaimer": "Tvoj privatni status će biti dostavljen spomenutim korisnicima na {domains}. Vjeruješ li {domainsCount, plural, one {that server} drugim {those servers}}? Privatnost postova radi samo na Mastodon instancama. Ako {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, neće biti indikacije da je tvoj post privatan, i mogao bit biti podignut ili biti učinjen vidljivim na drugi način neželjenim primateljima.",
"compose_form.publish": "Toot",
"compose_form.sensitive": "Označi media sadržaj kao osjetljiv",
- "compose_form.spoiler_placeholder": "Upozorenje o sadržaju",
"compose_form.spoiler": "Sakrij text iza upozorenja",
+ "compose_form.spoiler_placeholder": "Upozorenje o sadržaju",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Umetni smajlije",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",
"empty_column.hashtag": "Još ne postoji ništa s ovim hashtagom.",
- "empty_column.home.public_timeline": "javni timeline",
"empty_column.home": "Još ne slijediš nikoga. Posjeti {public} ili koristi tražilicu kako bi počeo i upoznao druge korisnike.",
+ "empty_column.home.public_timeline": "javni timeline",
"empty_column.notifications": "Još nemaš notifikacija. Komuniciraj sa drugima kako bi započeo razgovor.",
"empty_column.public": "Ovdje nema ništa! Napiši nešto javno, ili ručno slijedi korisnike sa drugih instanci kako bi popunio",
"follow_request.authorize": "Authoriziraj",
@@ -58,13 +79,14 @@ const hr = {
"navigation_bar.follow_requests": "Zahtjevi za sljeđenje",
"navigation_bar.info": "Proširena informacija",
"navigation_bar.logout": "Odjavi se",
+ "navigation_bar.mutes": "Muted users",
"navigation_bar.preferences": "Postavke",
"navigation_bar.public_timeline": "Federalni timeline",
"notification.favourite": "{name} je lajkao tvoj status",
"notification.follow": "{name} te sada slijedi",
"notification.reblog": "{name} je podigao tvoj status",
- "notifications.clear_confirmation": "Želiš li zaista obrisati sve svoje notifikacije?",
"notifications.clear": "Očisti notifikacije",
+ "notifications.clear_confirmation": "Želiš li zaista obrisati sve svoje notifikacije?",
"notifications.column_settings.alert": "Desktop notifikacije",
"notifications.column_settings.favourite": "Favoriti:",
"notifications.column_settings.follow": "Novi sljedbenici:",
@@ -73,6 +95,26 @@ const hr = {
"notifications.column_settings.show": "Prikaži u stupcu",
"notifications.column_settings.sound": "Sviraj zvuk",
"notifications.settings": "Postavke rubrike",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Podesi status privatnosti",
"privacy.direct.long": "Prikaži samo spomenutim korisnicima",
"privacy.direct.short": "Direktno",
@@ -87,9 +129,9 @@ const hr = {
"report.placeholder": "Dodatni komentari",
"report.submit": "Pošalji",
"report.target": "Prijavljivanje",
- "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"search.placeholder": "Traži",
- "search.status_by": "Status od {name}",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Obriši",
"status.favourite": "Označi omiljenim",
"status.load_more": "Učitaj više",
@@ -99,6 +141,7 @@ const hr = {
"status.reblog": "Podigni",
"status.reblogged_by": "{name} je podigao",
"status.reply": "Odgovori",
+ "status.replyAll": "Reply to thread",
"status.report": "Prijavi @{name}",
"status.sensitive_toggle": "Klikni da bi vidio",
"status.sensitive_warning": "Osjetljiv sadržaj",
@@ -113,9 +156,8 @@ const hr = {
"upload_button.label": "Dodaj media",
"upload_form.undo": "Poništi",
"upload_progress.label": "Uploadam...",
+ "video_player.expand": "Proširi video",
"video_player.toggle_sound": "Toggle zvuk",
"video_player.toggle_visible": "Preklopi vidljivost",
- "video_player.expand": "Proširi video",
-};
-
-export default hr;
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
new file mode 100644
index 0000000000..e1d9d36be0
--- /dev/null
+++ b/app/javascript/mastodon/locales/hu.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Blokkolás",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Profil szerkesztése",
+ "account.follow": "Követés",
+ "account.followers": "Követők",
+ "account.follows": "Követve",
+ "account.follows_you": "Követnek téged",
+ "account.mention": "Említés",
+ "account.mute": "Mute @{name}",
+ "account.posts": "Posts",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.unblock": "Blokkolás levétele",
+ "account.unfollow": "Követés abbahagyása",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Kezdőlap",
+ "column.mutes": "Muted users",
+ "column.notifications": "Értesítések",
+ "column.public": "Nyilvános",
+ "column_back_button.label": "Vissza",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "Mire gondolsz?",
+ "compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
+ "compose_form.publish": "Tülk!",
+ "compose_form.sensitive": "Tartalom érzékenynek jelölése",
+ "compose_form.spoiler": "Hide text behind warning",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Első lépések",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Bezárás",
+ "loading_indicator.label": "Betöltés...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.edit_profile": "Profil szerkesztése",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "Kijelentkezés",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Beállítások",
+ "navigation_bar.public_timeline": "Nyilvános időfolyam",
+ "notification.favourite": "{name} kedvencnek jelölte az állapotod",
+ "notification.follow": "{name} követ téged",
+ "notification.reblog": "{name} reblogolta az állapotod",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "reply_indicator.cancel": "Mégsem",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Keresés",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Törlés",
+ "status.favourite": "Kedvenc",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Említés",
+ "status.open": "Expand this status",
+ "status.reblog": "Reblog",
+ "status.reblogged_by": "{name} reblogolta",
+ "status.reply": "Válasz",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Katt a megtekintéshez",
+ "status.sensitive_warning": "Érzékeny tartalom",
+ "status.show_less": "Show less",
+ "status.show_more": "Show more",
+ "tabs_bar.compose": "Összeállítás",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Kezdőlap",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Média hozzáadása",
+ "upload_form.undo": "Mégsem",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Hang kapcsolása",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/id.jsx b/app/javascript/mastodon/locales/id.json
similarity index 97%
rename from app/assets/javascripts/components/locales/id.jsx
rename to app/javascript/mastodon/locales/id.json
index 08ea6bf153..d73915a361 100644
--- a/app/assets/javascripts/components/locales/id.jsx
+++ b/app/javascript/mastodon/locales/id.json
@@ -1,11 +1,11 @@
-const id = {
+{
"account.block": "Blokir @{name}",
"account.disclaimer": "Pengguna ini berasal dari server lain. Angka berikut mungkin lebih besar.",
"account.edit_profile": "Ubah profil",
"account.follow": "Ikuti",
"account.followers": "Pengikut",
- "account.follows_you": "Mengikuti anda",
"account.follows": "Mengikuti",
+ "account.follows_you": "Mengikuti anda",
"account.mention": "Balasan @{name}",
"account.mute": "Bisukan @{name}",
"account.posts": "Postingan",
@@ -53,8 +53,8 @@ const id = {
"emoji_button.travel": "Tempat Wisata",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
"empty_column.hashtag": "Tidak ada apapun dalam hashtag ini.",
- "empty_column.home.public_timeline": "linimasa publik",
"empty_column.home": "Anda sedang tidak mengikuti siapapun. Kunjungi {public} atau gunakan pencarian untuk memulai dan bertemu pengguna lain.",
+ "empty_column.home.public_timeline": "linimasa publik",
"empty_column.notifications": "Anda tidak memiliki notifikasi apapun. Berinteraksi dengan orang lain untuk memulai percakapan.",
"empty_column.public": "Tidak ada apapun disini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisinya secara manual",
"follow_request.authorize": "Izinkan",
@@ -133,7 +133,8 @@ const id = {
"search_results.total": "{count} {count, plural, one {hasil} other {hasil}}",
"status.cannot_reblog": "Postingan ini tidak dapat di-boost",
"search.placeholder": "Pencarian",
- "search.status_by": "Status oleh {name}",
+ "search_results.total": "{count} {count, plural, one {hasil} other {hasil}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Hapus",
"status.favourite": "Difavoritkan",
"status.load_more": "Tampilkan semua",
@@ -158,10 +159,9 @@ const id = {
"upload_button.label": "Tambahkan media",
"upload_form.undo": "Undo",
"upload_progress.label": "Mengunggah...",
+ "video_player.expand": "Tampilkan video",
"video_player.toggle_sound": "Suara",
"video_player.toggle_visible": "Tampilan",
"video_player.expand": "Tampilkan video",
- "video_player.video_error": "Video tidak dapat diputar",
-};
-
-export default id;
+ "video_player.video_error": "Video tidak dapat diputar"
+}
diff --git a/app/javascript/mastodon/locales/index.js b/app/javascript/mastodon/locales/index.js
new file mode 100644
index 0000000000..c4d580ff5f
--- /dev/null
+++ b/app/javascript/mastodon/locales/index.js
@@ -0,0 +1,57 @@
+import ar from './ar.json';
+import en from './en.json';
+import de from './de.json';
+import es from './es.json';
+import fa from './fa.json';
+import he from './he.json';
+import hr from './hr.json';
+import hu from './hu.json';
+import io from './io.json';
+import it from './it.json';
+import fr from './fr.json';
+import nl from './nl.json';
+import no from './no.json';
+import oc from './oc.json';
+import pt from './pt.json';
+import pt_br from './pt-BR.json';
+import uk from './uk.json';
+import fi from './fi.json';
+import eo from './eo.json';
+import ru from './ru.json';
+import ja from './ja.json';
+import zh_hk from './zh-HK.json';
+import zh_cn from './zh-CN.json';
+import bg from './bg.json';
+import id from './id.json';
+
+const locales = {
+ ar,
+ en,
+ de,
+ es,
+ fa,
+ he,
+ hr,
+ hu,
+ io,
+ it,
+ fr,
+ nl,
+ no,
+ oc,
+ pt,
+ 'pt-BR': pt_br,
+ uk,
+ fi,
+ eo,
+ ru,
+ ja,
+ 'zh-HK': zh_hk,
+ 'zh-CN': zh_cn,
+ bg,
+ id,
+};
+
+export default function getMessagesForLocale(locale) {
+ return locales[locale];
+};
diff --git a/app/assets/javascripts/components/locales/io.jsx b/app/javascript/mastodon/locales/io.json
similarity index 67%
rename from app/assets/javascripts/components/locales/io.jsx
rename to app/javascript/mastodon/locales/io.json
index 6715663aa0..bcf89cfc2a 100644
--- a/app/assets/javascripts/components/locales/io.jsx
+++ b/app/javascript/mastodon/locales/io.json
@@ -1,11 +1,11 @@
-const io = {
+{
"account.block": "Blokusar @{name}",
"account.disclaimer": "Ca uzero esas de altra instaluro. Ca nombro forsan esas plu granda.",
"account.edit_profile": "Modifikar profilo",
"account.follow": "Sequar",
"account.followers": "Sequanti",
- "account.follows_you": "Sequas tu",
"account.follows": "Sequas",
+ "account.follows_you": "Sequas tu",
"account.mention": "Mencionar @{name}",
"account.mute": "Celar @{name}",
"account.posts": "Mesaji",
@@ -15,7 +15,6 @@ const io = {
"account.unfollow": "Ne plus sequar",
"account.unmute": "Ne plus celar @{name}",
"boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
- "column_back_button.label": "Retro",
"column.blocks": "Blokusita uzeri",
"column.community": "Lokala tempolineo",
"column.favourites": "Favorati",
@@ -24,17 +23,38 @@ const io = {
"column.mutes": "Celita uzeri",
"column.notifications": "Savigi",
"column.public": "Federata tempolineo",
+ "column_back_button.label": "Retro",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Quo esas en tua spirito?",
"compose_form.privacy_disclaimer": "Tua privata mesajo livresos a mencionata uzeri en {domains}. Ka tu fidas {domainsCount, plural, one {ta servero} other {ta serveri}}? Privateso di mesaji funcionas nur en instaluri di Mastodon. Se {domains} {domainsCount, plural, one {ne esas instaluro di Mastodon} other {ne esas instaluri di Mastodon}}, esos nula indiko, ke tua mesajo esas privata, ed ol povos repetesar od altre divenar videbla da nedezirinda recevanti.",
"compose_form.publish": "Siflar",
"compose_form.sensitive": "Markizar kontenajo kom trubliva",
- "compose_form.spoiler_placeholder": "Averto di kontenajo",
"compose_form.spoiler": "Celar texto dop averto",
+ "compose_form.spoiler_placeholder": "Averto di kontenajo",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Insertar emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",
"empty_column.hashtag": "Esas ankore nulo en ta gretovorto.",
- "empty_column.home.public_timeline": "la publika tempolineo",
"empty_column.home": "Tu sequas ankore nulu. Vizitez {public} od uzez la serchilo por komencar e renkontrar altra uzeri.",
+ "empty_column.home.public_timeline": "la publika tempolineo",
"empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.",
"empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.",
"follow_request.authorize": "Yurizar",
@@ -64,10 +84,9 @@ const io = {
"navigation_bar.public_timeline": "Federata tempolineo",
"notification.favourite": "{name} favorizis tua mesajo",
"notification.follow": "{name} sequeskis tu",
- "notification.mention": "{name} mencionis tu",
"notification.reblog": "{name} repetis tua mesajo",
- "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?",
"notifications.clear": "Efacar savigi",
+ "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?",
"notifications.column_settings.alert": "Surtabla savigi",
"notifications.column_settings.favourite": "Favorati:",
"notifications.column_settings.follow": "Nova sequanti:",
@@ -76,6 +95,26 @@ const io = {
"notifications.column_settings.show": "Montrar en kolumno",
"notifications.column_settings.sound": "Plear sono",
"notifications.settings": "Aranji di kolumno",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Aranjar privateso di mesaji",
"privacy.direct.long": "Sendar nur a mencionata uzeri",
"privacy.direct.short": "Direte",
@@ -90,9 +129,9 @@ const io = {
"report.placeholder": "Plusa komenti",
"report.submit": "Sendar",
"report.target": "Denuncante",
- "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}",
"search.placeholder": "Serchez",
- "search.status_by": "Mesajo da {name}",
+ "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Efacar",
"status.favourite": "Favorizar",
"status.load_more": "Kargar pluse",
@@ -117,10 +156,8 @@ const io = {
"upload_button.label": "Adjuntar kontenajo",
"upload_form.undo": "Desfacar",
"upload_progress.label": "Kargante...",
+ "video_player.expand": "Extensar video",
"video_player.toggle_sound": "Acendar sono",
"video_player.toggle_visible": "Chanjar videbleso",
- "video_player.expand": "Extensar video",
- "video_player.video_error": "Video ne povus pleesar",
-};
-
-export default io;
+ "video_player.video_error": "Video ne povus pleesar"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/it.jsx b/app/javascript/mastodon/locales/it.json
similarity index 67%
rename from app/assets/javascripts/components/locales/it.jsx
rename to app/javascript/mastodon/locales/it.json
index 04ff1311fc..0342f1e1f5 100644
--- a/app/assets/javascripts/components/locales/it.jsx
+++ b/app/javascript/mastodon/locales/it.json
@@ -1,11 +1,11 @@
-const it = {
+{
"account.block": "Blocca @{name}",
"account.disclaimer": "Questo utente si trova su un altro server. Questo numero potrebbe essere maggiore.",
"account.edit_profile": "Modifica profilo",
"account.follow": "Segui",
"account.followers": "Seguaci",
- "account.follows_you": "Ti segue",
"account.follows": "Segue",
+ "account.follows_you": "Ti segue",
"account.mention": "Menziona @{name}",
"account.mute": "Silenzia @{name}",
"account.posts": "Posts",
@@ -15,7 +15,6 @@ const it = {
"account.unfollow": "Non seguire",
"account.unmute": "Non silenziare @{name}",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
- "column_back_button.label": "Indietro",
"column.blocks": "Utenti bloccati",
"column.community": "Timeline locale",
"column.favourites": "Apprezzati",
@@ -24,17 +23,38 @@ const it = {
"column.mutes": "Utenti silenziati",
"column.notifications": "Notifiche",
"column.public": "Timeline federata",
+ "column_back_button.label": "Indietro",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "A cosa stai pensando?",
"compose_form.privacy_disclaimer": "Il tuo status privato verrà condiviso con gli utenti menzionati su {domains}. Ti fidi di {domainsCount, plural, one {quel server} other {quei server}}? Le impostazioni sulla privacy valgono solo su server Mastodon. Se {domains} {domainsCount, plural, one {non è un server Mastodon} other {non sono server Mastodon}}, non ci saranno indicazioni sulla privacy del tuo status, e potrebbe essere condiviso o reso visibile a destinatari indesiderati.",
"compose_form.publish": "Toot",
"compose_form.sensitive": "Segnala file come sensibile",
- "compose_form.spoiler_placeholder": "Content warning",
"compose_form.spoiler": "Nascondi testo con avvertimento",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserisci emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
"empty_column.hashtag": "Non c'è ancora nessun post con questo hashtag.",
- "empty_column.home.public_timeline": "la timeline pubblica",
"empty_column.home": "Non stai ancora seguendo nessuno. Visita {public} o usa la ricerca per incontrare nuove persone.",
+ "empty_column.home.public_timeline": "la timeline pubblica",
"empty_column.notifications": "Non hai ancora nessuna notifica. Interagisci con altri per iniziare conversazioni.",
"empty_column.public": "Qui non c'è nulla! Scrivi qualcosa pubblicamente, o aggiungi utenti da altri server per riempire questo spazio.",
"follow_request.authorize": "Autorizza",
@@ -64,10 +84,9 @@ const it = {
"navigation_bar.public_timeline": "Timeline federata",
"notification.favourite": "{name} ha apprezzato il tuo post",
"notification.follow": "{name} ha iniziato a seguirti",
- "notification.mention": "{name} ti ha menzionato",
"notification.reblog": "{name} ha condiviso il tuo post",
- "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?",
"notifications.clear": "Cancella notifiche",
+ "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?",
"notifications.column_settings.alert": "Notifiche desktop",
"notifications.column_settings.favourite": "Apprezzati:",
"notifications.column_settings.follow": "Nuovi seguaci:",
@@ -76,6 +95,26 @@ const it = {
"notifications.column_settings.show": "Mostra in colonna",
"notifications.column_settings.sound": "Riproduci suono",
"notifications.settings": "Impostazioni colonna",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Modifica privacy post",
"privacy.direct.long": "Invia solo a utenti menzionati",
"privacy.direct.short": "Diretto",
@@ -90,9 +129,9 @@ const it = {
"report.placeholder": "Commenti aggiuntivi",
"report.submit": "Invia",
"report.target": "Invio la segnalazione",
- "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}",
"search.placeholder": "Cerca",
- "search.status_by": "Status per {name}",
+ "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Elimina",
"status.favourite": "Apprezzato",
"status.load_more": "Mostra di più",
@@ -102,6 +141,7 @@ const it = {
"status.reblog": "Condividi",
"status.reblogged_by": "{name} ha condiviso",
"status.reply": "Rispondi",
+ "status.replyAll": "Reply to thread",
"status.report": "Segnala @{name}",
"status.sensitive_toggle": "Clicca per vedere",
"status.sensitive_warning": "Materiale sensibile",
@@ -116,10 +156,8 @@ const it = {
"upload_button.label": "Aggiungi file multimediale",
"upload_form.undo": "Annulla",
"upload_progress.label": "Sto caricando...",
+ "video_player.expand": "Espandi video",
"video_player.toggle_sound": "Attiva suono",
"video_player.toggle_visible": "Attiva visibilità",
- "video_player.expand": "Espandi video",
- "video_player.video_error": "Il video non può essere riprodotto",
-};
-
-export default it;
\ No newline at end of file
+ "video_player.video_error": "Il video non può essere riprodotto"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/ja.jsx b/app/javascript/mastodon/locales/ja.json
similarity index 98%
rename from app/assets/javascripts/components/locales/ja.jsx
rename to app/javascript/mastodon/locales/ja.json
index 6a75365270..c9ddde0837 100644
--- a/app/assets/javascripts/components/locales/ja.jsx
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,4 +1,4 @@
-const ja = {
+{
"account.block": "ブロック",
"account.disclaimer": "このユーザーは他のインスタンスに所属しているため、数字が正確で無い場合があります。",
"account.edit_profile": "プロフィールを編集",
@@ -41,16 +41,16 @@ const ja = {
"confirmations.delete.message": "本当に削除しますか?",
"confirmations.mute.confirm": "ミュート",
"confirmations.mute.message": "本当に {name} をミュートしますか?",
+ "emoji_button.activity": "活動",
+ "emoji_button.flags": "国旗",
+ "emoji_button.food": "食べ物",
"emoji_button.label": "絵文字を追加",
- "emoji_button.search": "検索...",
- "emoji_button.people": "人々",
"emoji_button.nature": "自然",
- "emoji_button.food": "食べ物",
- "emoji_button.activity": "活動",
- "emoji_button.travel": "旅行と場所",
"emoji_button.objects": "物",
+ "emoji_button.people": "人々",
+ "emoji_button.search": "検索...",
"emoji_button.symbols": "記号",
- "emoji_button.flags": "国旗",
+ "emoji_button.travel": "旅行と場所",
"empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
"empty_column.hashtag": "このハッシュタグはまだ使われていません。",
"empty_column.home": "まだ誰もフォローしていません。{public}を見に行くか、検索を使って他のユーザーを見つけましょう。",
@@ -84,7 +84,6 @@ const ja = {
"navigation_bar.public_timeline": "連合タイムライン",
"notification.favourite": "{name} さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name} さんにフォローされました",
- "notification.mention": "{name} さんがあなたに返信しました",
"notification.reblog": "{name} さんがあなたのトゥートをブーストしました",
"notifications.clear": "通知を消去",
"notifications.clear_confirmation": "本当に通知を消去しますか?",
@@ -98,23 +97,23 @@ const ja = {
"notifications.settings": "カラム設定",
"onboarding.done": "完了",
"onboarding.next": "次へ",
- "onboarding.page_one.welcome": "Mastodonへようこそ!",
- "onboarding.page_one.federation": "Mastodonは誰でも参加できるSNSです。",
- "onboarding.page_one.handle": "あなたは今数あるMastodonインスタンスの1つである{domain}にいます。あなたのフルハンドルは{handle}です。",
- "onboarding.page_two.compose": "フォームから投稿できます。イメージや、公開範囲の設定や、表示時の警告の設定は下部のアイコンから行なえます。",
- "onboarding.page_three.search": "検索バーで、{illustration}や{introductions}のように特定のハッシュタグの投稿を見たり、ユーザーを探したりできます。",
- "onboarding.page_three.profile": "「プロフィールを編集」から、あなたの自己紹介や表示名を変更できます。またそこでは他の設定ができます。",
+ "onboarding.page_five.public_timelines": "連合タイムラインでは{domain}の人がフォローしているMastodon全体での公開投稿を表示します。同じくローカルタイムラインでは{domain}のみの公開投稿を表示します。",
"onboarding.page_four.home": "「ホーム」タイムラインではあなたがフォローしている人の投稿を表示します。",
"onboarding.page_four.notifications": "「通知」ではあなたへの他の人からの関わりを表示します。",
- "onboarding.page_five.public_timelines": "連合タイムラインでは{domain}の人がフォローしているMastodon全体での公開投稿を表示します。同じくローカルタイムラインでは{domain}のみの公開投稿を表示します。",
- "onboarding.page_six.almost_done": "以上です。",
+ "onboarding.page_one.federation": "Mastodonは誰でも参加できるSNSです。",
+ "onboarding.page_one.handle": "あなたは今数あるMastodonインスタンスの1つである{domain}にいます。あなたのフルハンドルは{handle}です。",
+ "onboarding.page_one.welcome": "Mastodonへようこそ!",
"onboarding.page_six.admin": "あなたのインスタンスの管理者は{admin}です。",
- "onboarding.page_six.read_guidelines": "{guidelines}を読むことを忘れないようにしてください。",
- "onboarding.page_six.guidelines": "コミュニティガイドライン",
- "onboarding.page_six.github": "MastodonはOSSです。バグ報告や機能要望あるいは貢献を{github}から行なえます。",
+ "onboarding.page_six.almost_done": "以上です。",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
"onboarding.page_six.apps_available": "iOS、Androidあるいは他のプラットフォームで使える{apps}があります。",
+ "onboarding.page_six.github": "MastodonはOSSです。バグ報告や機能要望あるいは貢献を{github}から行なえます。",
+ "onboarding.page_six.guidelines": "コミュニティガイドライン",
+ "onboarding.page_six.read_guidelines": "{guidelines}を読むことを忘れないようにしてください。",
"onboarding.page_six.various_app": "様々なモバイルアプリ",
- "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_three.profile": "「プロフィールを編集」から、あなたの自己紹介や表示名を変更できます。またそこでは他の設定ができます。",
+ "onboarding.page_three.search": "検索バーで、{illustration}や{introductions}のように特定のハッシュタグの投稿を見たり、ユーザーを探したりできます。",
+ "onboarding.page_two.compose": "フォームから投稿できます。イメージや、公開範囲の設定や、表示時の警告の設定は下部のアイコンから行なえます。",
"onboarding.skip": "スキップ",
"privacy.change": "投稿のプライバシーを変更",
"privacy.direct.long": "メンションしたユーザーだけに公開",
@@ -131,7 +130,6 @@ const ja = {
"report.submit": "通報する",
"report.target": "問題のユーザー",
"search.placeholder": "検索",
- "search.status_by": "{name}からの投稿",
"search_results.total": "{count, number} 件の結果",
"status.cannot_reblog": "この投稿はブーストできません",
"status.delete": "削除",
@@ -161,7 +159,5 @@ const ja = {
"video_player.expand": "動画の詳細",
"video_player.toggle_sound": "音の切り替え",
"video_player.toggle_visible": "表示切り替え",
- "video_player.video_error": "動画の再生に失敗しました",
-};
-
-export default ja;
+ "video_player.video_error": "動画の再生に失敗しました"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/nl.jsx b/app/javascript/mastodon/locales/nl.json
similarity index 74%
rename from app/assets/javascripts/components/locales/nl.jsx
rename to app/javascript/mastodon/locales/nl.json
index 388169cd53..730ef246d6 100644
--- a/app/assets/javascripts/components/locales/nl.jsx
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,10 +1,11 @@
-const nl = {
+{
"account.block": "Blokkeer @{name}",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
"account.edit_profile": "Profiel bewerken",
+ "account.follow": "Volgen",
"account.followers": "Volgers",
"account.follows": "Volgt",
"account.follows_you": "Volgt jou",
- "account.follow": "Volgen",
"account.mention": "Vermeld @{name}",
"account.mute": "Negeer @{name}",
"account.posts": "Berichten",
@@ -14,24 +15,32 @@ const nl = {
"account.unfollow": "Ontvolgen",
"account.unmute": "Negeer @{name} niet meer",
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
- "column_back_button.label": "terug",
"column.blocks": "Geblokkeerde gebruikers",
"column.community": "Lokale tijdlijn",
"column.favourites": "Favorieten",
+ "column.follow_requests": "Follow requests",
"column.home": "Jouw tijdlijn",
"column.mutes": "Genegeerde gebruikers",
"column.notifications": "Meldingen",
"column.public": "Globale tijdlijn",
+ "column_back_button.label": "terug",
"column_subheading.navigation": "Navigatie",
"column_subheading.settings": "Instellingen",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Wat wil je kwijt?",
"compose_form.privacy_disclaimer": "Jouw privétoot wordt afgeleverd aan de vermelde gebruikers op {domains}. Vertrouw jij {domainsCount, plural, one {die server} other {die servers}}? Het privé plaatsen van toots werkt alleen op Mastodon-servers. Wanneer {domains} {domainsCount, plural, one {geen Mastodon-server is} other {geen Mastodon-servers zijn}}, dan wordt er niet aangegeven dat de toot privé is, waardoor het kan worden geboost of op een andere manier zichtbaar wordt gemaakt voor mensen waarvoor het niet was bedoeld.",
- "compose_form.private": "Als privé markeren",
"compose_form.publish": "Toot",
"compose_form.sensitive": "Media als gevoelig markeren",
- "compose_form.spoiler_placeholder": "Waarschuwingstekst",
"compose_form.spoiler": "Tekst achter waarschuwing verbergen",
- "compose_form.unlisted": "Niet op openbare tijdlijnen tonen",
+ "compose_form.spoiler_placeholder": "Waarschuwingstekst",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
"emoji_button.activity": "Activiteiten",
"emoji_button.flags": "Vlaggen",
"emoji_button.food": "Eten en drinken",
@@ -42,13 +51,27 @@ const nl = {
"emoji_button.search": "Zoeken...",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
- "getting_started.about_addressing": "Je kunt mensen volgen als je hun gebruikersnaam en het domein van hun server kent. Voer hiervoor het e-mailachtige adres in het zoekveld in.",
- "getting_started.about_shortcuts": "Als de gezochte gebruiker op hetzelfde domein zit als jijzelf, is invoeren van de gebruikersnaam genoeg. Dat geldt ook als je mensen in toots wilt vermelden.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
"getting_started.apps": "Er zijn meerdere apps beschikbaar",
"getting_started.heading": "Beginnen",
"getting_started.open_source_notice": "Mastodon is open-sourcesoftware. Je kunt bijdragen of problemen melden op GitHub via {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
"lightbox.close": "Sluiten",
"loading_indicator.label": "Laden…",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
"navigation_bar.blocks": "Geblokkeerde gebruikers",
"navigation_bar.community_timeline": "Lokale tijdlijn",
"navigation_bar.edit_profile": "Profiel bewerken",
@@ -61,10 +84,9 @@ const nl = {
"navigation_bar.public_timeline": "Globale tijdlijn",
"notification.favourite": "{name} markeerde jouw toot als favoriet",
"notification.follow": "{name} volgt jou nu",
- "notification.mention": "{name} vermeldde jou",
"notification.reblog": "{name} boostte jouw toot",
- "notifications.clear_confirmation": "Weet je zeker dat je al jouw meldingen wilt verwijderen?",
"notifications.clear": "Meldingen verwijderen",
+ "notifications.clear_confirmation": "Weet je zeker dat je al jouw meldingen wilt verwijderen?",
"notifications.column_settings.alert": "Desktopmeldingen",
"notifications.column_settings.favourite": "Favorieten:",
"notifications.column_settings.follow": "Nieuwe volgers:",
@@ -73,6 +95,7 @@ const nl = {
"notifications.column_settings.show": "In kolom tonen",
"notifications.column_settings.sound": "Geluid afspelen",
"notifications.settings": "Kolom-instellingen",
+ "onboarding.done": "Done",
"onboarding.next": "Volgende",
"onboarding.page_five.public_timelines": "De lokale tijdlijn toont openbare toots van iedereen op {domain}. De globale tijdlijn toont openbare toots van iedereen die door gebruikers van {domain} worden gevolgd, dus ook mensen van andere Mastodon-servers. Dit zijn de openbare tijdlijnen en vormen een uitstekende manier om nieuwe mensen te ontdekken.",
"onboarding.page_four.home": "Jouw tijdlijn laat toots zien van mensen die jij volgt.",
@@ -102,29 +125,39 @@ const nl = {
"privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
"privacy.unlisted.short": "Minder openbaar",
"reply_indicator.cancel": "Annuleren",
- "search.account": "Account",
- "search.hashtag": "Hashtag",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
"search.placeholder": "Zoeken",
"search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Verwijderen",
"status.favourite": "Favoriet",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
"status.mention": "@{name} vermelden",
+ "status.open": "Expand this status",
"status.reblog": "Boost",
"status.reblogged_by": "{name} boostte",
"status.reply": "Reageren",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
"status.sensitive_toggle": "Klik om te zien",
"status.sensitive_warning": "Gevoelige inhoud",
"status.show_less": "Minder tonen",
"status.show_more": "Meer tonen",
"tabs_bar.compose": "Schrijven",
+ "tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Jouw tijdlijn",
- "tabs_bar.mentions": "Vermeldingen",
+ "tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Meldingen",
- "tabs_bar.public": "Globale tijdlijn",
+ "upload_area.title": "Drag & drop to upload",
"upload_button.label": "Media toevoegen",
"upload_form.undo": "Ongedaan maken",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
"video_player.toggle_sound": "Geluid in-/uitschakelen",
-
-};
-
-export default nl;
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/no.jsx b/app/javascript/mastodon/locales/no.json
similarity index 65%
rename from app/assets/javascripts/components/locales/no.jsx
rename to app/javascript/mastodon/locales/no.json
index 17a0c2099a..25dee25a3b 100644
--- a/app/assets/javascripts/components/locales/no.jsx
+++ b/app/javascript/mastodon/locales/no.json
@@ -1,4 +1,4 @@
-const no = {
+{
"account.block": "Blokkér @{name}",
"account.disclaimer": "Denne brukeren er fra en annen instans. Dette tallet kan være høyere.",
"account.edit_profile": "Rediger profil",
@@ -15,25 +15,46 @@ const no = {
"account.unfollow": "Avfølg",
"account.unmute": "Avdemp @{name}",
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
- "column_back_button.label": "Tilbake",
"column.blocks": "Blokkerte brukere",
"column.community": "Lokal tidslinje",
"column.favourites": "Likt",
"column.follow_requests": "Følgeforespørsler",
"column.home": "Hjem",
+ "column.mutes": "Muted users",
"column.notifications": "Varslinger",
"column.public": "Felles tidslinje",
+ "column_back_button.label": "Tilbake",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Hva har du på hjertet?",
"compose_form.privacy_disclaimer": "Din private status vil leveres til nevnte brukere på {domains}. Stoler du på {domainsCount, plural, one {den serveren} other {de serverne}}? Synlighet fungerer kun på Mastodon-instanser. Hvis {domains} {domainsCount, plural, one {ike er en Mastodon-instans} other {ikke er Mastodon-instanser}}, vil det ikke indikeres at posten din er privat, og den kan kanskje bli fremhevd eller på annen måte bli synlig for uventede mottakere.",
"compose_form.publish": "Tut",
"compose_form.sensitive": "Merk media som følsomt",
- "compose_form.spoiler_placeholder": "Innholdsadvarsel",
"compose_form.spoiler": "Skjul tekst bak advarsel",
+ "compose_form.spoiler_placeholder": "Innholdsadvarsel",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Sett inn emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
"empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.",
- "empty_column.home.public_timeline": "en offentlig tidslinje",
"empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.",
+ "empty_column.home.public_timeline": "en offentlig tidslinje",
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
"follow_request.authorize": "Autorisér",
@@ -58,13 +79,14 @@ const no = {
"navigation_bar.follow_requests": "Følgeforespørsler",
"navigation_bar.info": "Utvidet informasjon",
"navigation_bar.logout": "Logg ut",
+ "navigation_bar.mutes": "Muted users",
"navigation_bar.preferences": "Preferanser",
"navigation_bar.public_timeline": "Felles tidslinje",
"notification.favourite": "{name} likte din status",
"notification.follow": "{name} fulgte deg",
"notification.reblog": "{name} fremhevde din status",
- "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler?",
"notifications.clear": "Fjern varsler",
+ "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler?",
"notifications.column_settings.alert": "Skrivebordsvarslinger",
"notifications.column_settings.favourite": "Likt:",
"notifications.column_settings.follow": "Nye følgere:",
@@ -73,6 +95,26 @@ const no = {
"notifications.column_settings.show": "Vis i kolonne",
"notifications.column_settings.sound": "Spill lyd",
"notifications.settings": "Kolonneinstillinger",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Justér synlighet",
"privacy.direct.long": "Post kun til nevnte brukere",
"privacy.direct.short": "Direkte",
@@ -87,9 +129,9 @@ const no = {
"report.placeholder": "Tilleggskommentarer",
"report.submit": "Send inn",
"report.target": "Rapporterer",
- "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}",
"search.placeholder": "Søk",
- "search.status_by": "Status fra {name}",
+ "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Slett",
"status.favourite": "Lik",
"status.load_more": "Last mer",
@@ -99,6 +141,7 @@ const no = {
"status.reblog": "Fremhev",
"status.reblogged_by": "Fremhevd av {name}",
"status.reply": "Svar",
+ "status.replyAll": "Reply to thread",
"status.report": "Rapporter @{name}",
"status.sensitive_toggle": "Klikk for å vise",
"status.sensitive_warning": "Følsomt innhold",
@@ -113,18 +156,8 @@ const no = {
"upload_button.label": "Legg til media",
"upload_form.undo": "Angre",
"upload_progress.label": "Laster opp...",
+ "video_player.expand": "Utvid video",
"video_player.toggle_sound": "Veksle lyd",
"video_player.toggle_visible": "Veksle synlighet",
- "video_player.expand": "Utvid video",
- "getting_started.about_addressing": "Du kan følge noen hvis du vet brukernavnet deres og domenet de er på ved å skrive en e-postadresse inn i søkeskjemaet.",
- "getting_started.about_shortcuts": "Hvis målbrukeren er på samme domene som deg, vil kun brukernavnet også fungere. Den samme regelen gjelder når man nevner noen i statuser.",
- "tabs_bar.mentions": "Nevninger",
- "tabs_bar.public": "Felles tidslinje",
- "compose_form.private": "Merk som privat",
- "compose_form.unlisted": "Ikke vis på offentlige tidslinjer",
- "search.account": "Konto",
- "search.hashtag": "Hashtag",
- "notification.mention": "{name} nevnte deg"
-};
-
-export default no;
+ "video_player.video_error": "Video could not be played"
+}
diff --git a/app/assets/javascripts/components/locales/oc.jsx b/app/javascript/mastodon/locales/oc.json
similarity index 64%
rename from app/assets/javascripts/components/locales/oc.jsx
rename to app/javascript/mastodon/locales/oc.json
index 14f64e762c..5a23fe9f87 100644
--- a/app/assets/javascripts/components/locales/oc.jsx
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,128 +1,163 @@
-const oc = {
- "column_back_button.label": "Tornar",
- "lightbox.close": "Tampar",
- "loading_indicator.label": "Cargament…",
- "status.mention": "Mencionar",
- "status.delete": "Escafar",
- "status.reply": "Respondre",
- "status.reblog": "Partejar",
- "status.favourite": "Apondre als favorits",
- "status.reblogged_by": "{name} a partejat :",
- "status.sensitive_warning": "Contengut embarrassant",
- "status.sensitive_toggle": "Clicar per mostrar",
- "status.show_more": "Desplegar",
- "status.show_less": "Tornar plegar",
- "status.open": "Desplegar aqueste estatut",
- "status.report": "Senhalar @{name}",
- "status.load_more": "Cargar mai",
- "status.media_hidden": "Mèdia rescondut",
- "video_player.toggle_sound": "Activar/Desactivar lo son",
- "video_player.toggle_visible": "Mostrar/Rescondre la vidèo",
- "account.mention": "Mencionar",
- "account.edit_profile": "Modificar lo perfil",
- "account.unblock": "Desblocar",
- "account.unfollow": "Quitar de sègre",
+{
"account.block": "Blocar",
- "account.mute": "Rescondre",
- "account.unmute": "Quitar de rescondre",
+ "account.disclaimer": "Aqueste compte es sus una autra instància. Los nombres pòdon èsser mai grandes.",
+ "account.edit_profile": "Modificar lo perfil",
"account.follow": "Sègre",
- "account.posts": "Estatuts",
- "account.follows": "Abonaments",
"account.followers": "Abonats",
+ "account.follows": "Abonaments",
"account.follows_you": "Vos sèc",
- "account.requested": "Invitacion mandada",
+ "account.mention": "Mencionar",
+ "account.mute": "Rescondre",
+ "account.posts": "Estatuts",
"account.report": "Senhalar",
- "account.disclaimer": "Aqueste compte es sus una autra instància. Los nombres pòdon èsser mai grandes.",
- "getting_started.heading": "Per començar",
- "getting_started.about_addressing": "Podètz sègre los estatuts de qualqu’un en picant son identificant e lo domeni de l’instància separat amb un @ coma una adreça de corrièl dins lo camp de recèrca.",
- "getting_started.about_shortcuts": "S’aquesta persona emplega la meteissa instància que vos l’identifican basta. Atal foncionan tanben las mencions dins vòstres estatuts.",
- "getting_started.about_developer": "Per sègre lo desvolopaire d’aqueste projècte : Gargron@mastodon.social",
- "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via{github} sus GitHub.",
- "column.home": "Acuèlh",
- "column.community": "Fil public local",
- "column.public": "Fil public global",
- "column.notifications": "Notificacions",
+ "account.requested": "Invitacion mandada",
+ "account.unblock": "Desblocar",
+ "account.unfollow": "Quitar de sègre",
+ "account.unmute": "Quitar de rescondre",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
"column.blocks": "Personas blocadas",
+ "column.community": "Fil public local",
"column.favourites": "Favorits",
"column.follow_requests": "Demandas d’abonament",
- "empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
- "empty_column.public": "I a pas res aquí ! Escribètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo fil public.",
- "empty_column.home": "Pel moment segètz pas segun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
- "empty_column.home.public_timeline": "lo fil public",
- "empty_column.community": "Lo fil public local es void. Escribètz quicòm per lo garnir !",
- "empty_column.hashtag": "I a pas encara de contengut ligat a aqueste hashtag",
- "tabs_bar.compose": "Compausar",
- "tabs_bar.home": "Acuèlh",
- "tabs_bar.mentions": "Mencions",
- "tabs_bar.public": "Fil public global",
- "tabs_bar.notifications": "Notifications",
- "tabs_bar.local_timeline": "Fil public local",
- "tabs_bar.federated_timeline": "Fil public global",
+ "column.home": "Acuèlh",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notificacions",
+ "column.public": "Fil public global",
+ "column_back_button.label": "Tornar",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "A de qué pensatz ?",
+ "compose_form.privacy_disclaimer": "Vòstre estatut privat serà enviat a las personas mencionadas sus {domains}. Vos fisatz d’aqueste{domainsCount, plural, one { servidor} other {s servidors}} per divulgar pas vòstre estatut ? Los estatuts privats foncionan pas que sus las instàncias a Mastodons. Se {domains} {domainsCount, plural, one {es pas una instància a Mastodon} other {son pas d'instàncias a Mastodon}}, i aurà pas d’indicacion disent que vòstre estatut es privat e poirà èsser partejat o èsser visible a de mond pas prevists",
"compose_form.publish": "Tut",
"compose_form.sensitive": "Marcar lo mèdia coma embarrassant",
"compose_form.spoiler": "Rescondre lo tèxte darrièr un avertiment",
"compose_form.spoiler_placeholder": "Avertiment",
- "compose_form.private": "Far venir privat",
- "compose_form.privacy_disclaimer": "Vòstre estatut privat serà enviat a las personas mencionadas sus {domains}. Vos fisatz d’aqueste{domainsCount, plural, one { servidor} other {s servidors}} per divulgar pas vòstre estatut ? Los estatuts privats foncionan pas que sus las instàncias a Mastodons. Se {domains} {domainsCount, plural, one {es pas una instància a Mastodon} other {son pas d'instàncias a Mastodon}}, i aurà pas d’indicacion disent que vòstre estatut es privat e poirà èsser partejat o èsser visible a de mond pas prevists",
- "compose_form.unlisted": "Mostrar pas dins los fils publics",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserir un emoji",
- "navigation_bar.edit_profile": "Modificar lo perfil",
- "navigation_bar.preferences": "Preferéncias",
- "navigation_bar.community_timeline": "Fil public local",
- "navigation_bar.public_timeline": "Fil public global",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "Lo fil public local es void. Escribètz quicòm per lo garnir !",
+ "empty_column.hashtag": "I a pas encara de contengut ligat a aqueste hashtag",
+ "empty_column.home": "Pel moment segètz pas segun. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
+ "empty_column.home.public_timeline": "lo fil public",
+ "empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
+ "empty_column.public": "I a pas res aquí ! Escribètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo fil public.",
+ "follow_request.authorize": "Autorizar",
+ "follow_request.reject": "Regetar",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Per començar",
+ "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via{github} sus GitHub.",
+ "home.column_settings.advanced": "Avançat",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filtrar amb una expression racionala",
+ "home.column_settings.show_reblogs": "Mostrar los partatges",
+ "home.column_settings.show_replies": "Mostrar las responsas",
+ "home.settings": "Paramètres de la colomna",
+ "lightbox.close": "Tampar",
+ "loading_indicator.label": "Cargament…",
+ "media_gallery.toggle_visible": "Modificar la visibilitat",
+ "missing_indicator.label": "Pas trobat",
"navigation_bar.blocks": "Personas blocadas",
+ "navigation_bar.community_timeline": "Fil public local",
+ "navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.favourites": "Favorits",
+ "navigation_bar.follow_requests": "Demandas d'abonament",
"navigation_bar.info": "Mai informacions",
"navigation_bar.logout": "Desconnexion",
- "navigation_bar.follow_requests": "Demandas d'abonament",
- "reply_indicator.cancel": "Anullar",
- "search.placeholder": "Recercar",
- "search.account": "Compte",
- "search.hashtag": "Mot-clau",
- "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
- "search.status_by": "Estatuts de {name}",
- "upload_button.label": "Apondre un mèdia",
- "upload_form.undo": "Anullar",
- "upload_progress.label": "Mandadís…",
- "upload_area.title": "Lisatz e depausatz per mandar",
- "notification.follow": "{name} vos sèc.",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Preferéncias",
+ "navigation_bar.public_timeline": "Fil public global",
"notification.favourite": "{name} a apondut a sos favorits :",
+ "notification.follow": "{name} vos sèc.",
"notification.reblog": "{name} a partejat vòstre estatut :",
- "notification.mention": "{name} vos a mencionat :",
+ "notifications.clear": "Levar",
+ "notifications.clear_confirmation": "Volètz vertadièrament levar totas vòstras las notificacions ?",
"notifications.column_settings.alert": "Notificacions localas",
- "notifications.column_settings.show": "Mostrar dins la colomna",
- "notifications.column_settings.sound": "Emetre un son",
- "notifications.column_settings.follow": "Nòus abonats :",
"notifications.column_settings.favourite": "Favorits :",
+ "notifications.column_settings.follow": "Nòus abonats :",
"notifications.column_settings.mention": "Mencions :",
"notifications.column_settings.reblog": "Partatges :",
- "notifications.clear": "Levar",
- "notifications.clear_confirmation": "Volètz vertadièrament levar totas vòstras las notificacions ?",
+ "notifications.column_settings.show": "Mostrar dins la colomna",
+ "notifications.column_settings.sound": "Emetre un son",
"notifications.settings": "Paramètres de la colomna",
- "privacy.public.short": "Public",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Ajustar la confidencialitat del messatge",
+ "privacy.direct.long": "Mostrar pas qu'a las personas mencionadas",
+ "privacy.direct.short": "Dirècte",
+ "privacy.private.long": "Mostrar pas qu'a vòstres abonats",
+ "privacy.private.short": "Privat",
"privacy.public.long": "Mostrar dins los fils publics",
- "privacy.unlisted.short": "Pas-listat",
+ "privacy.public.short": "Public",
"privacy.unlisted.long": "Mostrar pas dins los fils publics",
- "privacy.private.short": "Privat",
- "privacy.private.long": "Mostrar pas qu'a vòstres abonats",
- "privacy.direct.short": "Dirècte",
- "privacy.direct.long": "Mostrar pas qu'a las personas mencionadas",
- "privacy.change": "Ajustar la confidencialitat del messatge",
- "media_gallery.toggle_visible": "Modificar la visibilitat",
- "missing_indicator.label": "Pas trobat",
- "follow_request.authorize": "Autorizar",
- "follow_request.reject": "Regetar",
- "home.settings": "Paramètres de la colomna",
- "home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Mostrar los partatges",
- "home.column_settings.show_replies": "Mostrar las responsas",
- "home.column_settings.advanced": "Avançat",
- "home.column_settings.filter_regex": "Filtrar amb una expression racionala",
+ "privacy.unlisted.short": "Pas-listat",
+ "reply_indicator.cancel": "Anullar",
"report.heading": "Nòu senhalament",
"report.placeholder": "Comentaris addicionals",
"report.submit": "Mandat",
- "report.target": "Senhalament"
-};
-
-export default oc;
+ "report.target": "Senhalament",
+ "search.placeholder": "Recercar",
+ "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Escafar",
+ "status.favourite": "Apondre als favorits",
+ "status.load_more": "Cargar mai",
+ "status.media_hidden": "Mèdia rescondut",
+ "status.mention": "Mencionar",
+ "status.open": "Desplegar aqueste estatut",
+ "status.reblog": "Partejar",
+ "status.reblogged_by": "{name} a partejat :",
+ "status.reply": "Respondre",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Senhalar @{name}",
+ "status.sensitive_toggle": "Clicar per mostrar",
+ "status.sensitive_warning": "Contengut embarrassant",
+ "status.show_less": "Tornar plegar",
+ "status.show_more": "Desplegar",
+ "tabs_bar.compose": "Compausar",
+ "tabs_bar.federated_timeline": "Fil public global",
+ "tabs_bar.home": "Acuèlh",
+ "tabs_bar.local_timeline": "Fil public local",
+ "tabs_bar.notifications": "Notifications",
+ "upload_area.title": "Lisatz e depausatz per mandar",
+ "upload_button.label": "Apondre un mèdia",
+ "upload_form.undo": "Anullar",
+ "upload_progress.label": "Mandadís…",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Activar/Desactivar lo son",
+ "video_player.toggle_visible": "Mostrar/Rescondre la vidèo",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/pt-br.jsx b/app/javascript/mastodon/locales/pt-BR.json
similarity index 67%
rename from app/assets/javascripts/components/locales/pt-br.jsx
rename to app/javascript/mastodon/locales/pt-BR.json
index 91c74bb195..12e9f6b5f0 100644
--- a/app/assets/javascripts/components/locales/pt-br.jsx
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -1,11 +1,11 @@
-const pt_br = {
+{
"account.block": "Bloquear @{name}",
"account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
- "account.follows_you": "É teu seguidor",
"account.follows": "Segue",
+ "account.follows_you": "É teu seguidor",
"account.mention": "Mencionar @{name}",
"account.mute": "Silenciar @{name}",
"account.posts": "Posts",
@@ -15,7 +15,6 @@ const pt_br = {
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
- "column_back_button.label": "Voltar",
"column.blocks": "Utilizadores Bloqueados",
"column.community": "Local",
"column.favourites": "Favoritos",
@@ -24,17 +23,38 @@ const pt_br = {
"column.mutes": "Utilizadores silenciados",
"column.notifications": "Notificações",
"column.public": "Global",
+ "column_back_button.label": "Voltar",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Em que estás a pensar?",
"compose_form.privacy_disclaimer": "O teu conteúdo privado vai ser partilhado com os utilizadores do {domains}. Confias {domainsCount, plural, one {neste servidor} other {nestes servidores}}? A privacidade só funciona em instâncias do Mastodon. Se {domains} {domainsCount, plural, one {não é uma instância} other {não são instâncias}}, não existem indicadores da privacidade da tua partilha, e podem ser partilhados com outros.",
"compose_form.publish": "Publicar",
"compose_form.sensitive": "Marcar media como conteúdo sensível",
- "compose_form.spoiler_placeholder": "Aviso de conteúdo",
"compose_form.spoiler": "Esconder texto com aviso",
+ "compose_form.spoiler_placeholder": "Aviso de conteúdo",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserir Emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Ainda não existem conteúdo local para mostrar!",
"empty_column.hashtag": "Ainda não existe qualquer conteúdo com essa hashtag",
- "empty_column.home.public_timeline": "global",
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
+ "empty_column.home.public_timeline": "global",
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos.",
"follow_request.authorize": "Autorizar",
@@ -64,10 +84,9 @@ const pt_br = {
"navigation_bar.public_timeline": "Global",
"notification.favourite": "{name} adicionou o teu post aos favoritos",
"notification.follow": "{name} seguiu-te",
- "notification.mention": "{name} mencionou-te",
"notification.reblog": "{name} partilhou o teu post",
- "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.clear": "Limpar notificações",
+ "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.column_settings.alert": "Notificações no computador",
"notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.follow": "Novos seguidores:",
@@ -76,6 +95,26 @@ const pt_br = {
"notifications.column_settings.show": "Mostrar nas colunas",
"notifications.column_settings.sound": "Reproduzir som",
"notifications.settings": "Parâmetros da listagem de Notificações",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Ajustar a privacidade da mensagem",
"privacy.direct.long": "Apenas para utilizadores mencionados",
"privacy.direct.short": "Directo",
@@ -90,9 +129,9 @@ const pt_br = {
"report.placeholder": "Comentários adicionais",
"report.submit": "Enviar",
"report.target": "Denunciar",
- "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"search.placeholder": "Pesquisar",
- "search.status_by": "Post de {name}",
+ "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Eliminar",
"status.favourite": "Adicionar aos favoritos",
"status.load_more": "Carregar mais",
@@ -102,6 +141,7 @@ const pt_br = {
"status.reblog": "Partilhar",
"status.reblogged_by": "{name} partilhou",
"status.reply": "Responder",
+ "status.replyAll": "Reply to thread",
"status.report": "Denúnciar @{name}",
"status.sensitive_toggle": "Clique para ver",
"status.sensitive_warning": "Conteúdo sensível",
@@ -116,10 +156,8 @@ const pt_br = {
"upload_button.label": "Adicionar media",
"upload_form.undo": "Anular",
"upload_progress.label": "A gravar...",
+ "video_player.expand": "Expandir vídeo",
"video_player.toggle_sound": "Ligar/Desligar som",
"video_player.toggle_visible": "Ligar/Desligar vídeo",
- "video_player.expand": "Expandir vídeo",
- "video_player.video_error": "Não é possível ver o vídeo",
-};
-
-export default pt_br;
+ "video_player.video_error": "Não é possível ver o vídeo"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/pt.jsx b/app/javascript/mastodon/locales/pt.json
similarity index 67%
rename from app/assets/javascripts/components/locales/pt.jsx
rename to app/javascript/mastodon/locales/pt.json
index 03095d20dc..12e9f6b5f0 100644
--- a/app/assets/javascripts/components/locales/pt.jsx
+++ b/app/javascript/mastodon/locales/pt.json
@@ -1,11 +1,11 @@
-const pt = {
+{
"account.block": "Bloquear @{name}",
"account.disclaimer": "Essa conta está localizado em outra instância. Os nomes podem ser maiores.",
"account.edit_profile": "Editar perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
- "account.follows_you": "É teu seguidor",
"account.follows": "Segue",
+ "account.follows_you": "É teu seguidor",
"account.mention": "Mencionar @{name}",
"account.mute": "Silenciar @{name}",
"account.posts": "Posts",
@@ -15,7 +15,6 @@ const pt = {
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
- "column_back_button.label": "Voltar",
"column.blocks": "Utilizadores Bloqueados",
"column.community": "Local",
"column.favourites": "Favoritos",
@@ -24,17 +23,38 @@ const pt = {
"column.mutes": "Utilizadores silenciados",
"column.notifications": "Notificações",
"column.public": "Global",
+ "column_back_button.label": "Voltar",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Em que estás a pensar?",
"compose_form.privacy_disclaimer": "O teu conteúdo privado vai ser partilhado com os utilizadores do {domains}. Confias {domainsCount, plural, one {neste servidor} other {nestes servidores}}? A privacidade só funciona em instâncias do Mastodon. Se {domains} {domainsCount, plural, one {não é uma instância} other {não são instâncias}}, não existem indicadores da privacidade da tua partilha, e podem ser partilhados com outros.",
"compose_form.publish": "Publicar",
"compose_form.sensitive": "Marcar media como conteúdo sensível",
- "compose_form.spoiler_placeholder": "Aviso de conteúdo",
"compose_form.spoiler": "Esconder texto com aviso",
+ "compose_form.spoiler_placeholder": "Aviso de conteúdo",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserir Emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "Ainda não existem conteúdo local para mostrar!",
"empty_column.hashtag": "Ainda não existe qualquer conteúdo com essa hashtag",
- "empty_column.home.public_timeline": "global",
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
+ "empty_column.home.public_timeline": "global",
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos.",
"follow_request.authorize": "Autorizar",
@@ -64,10 +84,9 @@ const pt = {
"navigation_bar.public_timeline": "Global",
"notification.favourite": "{name} adicionou o teu post aos favoritos",
"notification.follow": "{name} seguiu-te",
- "notification.mention": "{name} mencionou-te",
"notification.reblog": "{name} partilhou o teu post",
- "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.clear": "Limpar notificações",
+ "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
"notifications.column_settings.alert": "Notificações no computador",
"notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.follow": "Novos seguidores:",
@@ -76,6 +95,26 @@ const pt = {
"notifications.column_settings.show": "Mostrar nas colunas",
"notifications.column_settings.sound": "Reproduzir som",
"notifications.settings": "Parâmetros da listagem de Notificações",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Ajustar a privacidade da mensagem",
"privacy.direct.long": "Apenas para utilizadores mencionados",
"privacy.direct.short": "Directo",
@@ -90,9 +129,9 @@ const pt = {
"report.placeholder": "Comentários adicionais",
"report.submit": "Enviar",
"report.target": "Denunciar",
- "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"search.placeholder": "Pesquisar",
- "search.status_by": "Post de {name}",
+ "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Eliminar",
"status.favourite": "Adicionar aos favoritos",
"status.load_more": "Carregar mais",
@@ -102,6 +141,7 @@ const pt = {
"status.reblog": "Partilhar",
"status.reblogged_by": "{name} partilhou",
"status.reply": "Responder",
+ "status.replyAll": "Reply to thread",
"status.report": "Denúnciar @{name}",
"status.sensitive_toggle": "Clique para ver",
"status.sensitive_warning": "Conteúdo sensível",
@@ -116,10 +156,8 @@ const pt = {
"upload_button.label": "Adicionar media",
"upload_form.undo": "Anular",
"upload_progress.label": "A gravar...",
+ "video_player.expand": "Expandir vídeo",
"video_player.toggle_sound": "Ligar/Desligar som",
"video_player.toggle_visible": "Ligar/Desligar vídeo",
- "video_player.expand": "Expandir vídeo",
- "video_player.video_error": "Não é possível ver o vídeo",
-};
-
-export default pt;
+ "video_player.video_error": "Não é possível ver o vídeo"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/ru.jsx b/app/javascript/mastodon/locales/ru.json
similarity index 78%
rename from app/assets/javascripts/components/locales/ru.jsx
rename to app/javascript/mastodon/locales/ru.json
index a1c9044bf1..c13c959605 100644
--- a/app/assets/javascripts/components/locales/ru.jsx
+++ b/app/javascript/mastodon/locales/ru.json
@@ -1,4 +1,4 @@
-const ru = {
+{
"account.block": "Блокировать",
"account.disclaimer": "Это пользователь с другого узла. Число может быть больше.",
"account.edit_profile": "Изменить профиль",
@@ -26,12 +26,21 @@ const ru = {
"column_back_button.label": "Назад",
"column_subheading.navigation": "Навигация",
"column_subheading.settings": "Настройки",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "О чем Вы думаете?",
"compose_form.privacy_disclaimer": "Ваш приватный статус будет доставлен упомянутым пользователям на доменах {domains}. Доверяете ли вы {domainsCount, plural, one {этому серверу} other {этим серверам}}? Приватность постов работает только на узлах Mastodon. Если {domains} {domainsCount, plural, one {не является узлом Mastodon} other {не являются узлами Mastodon}}, приватность поста не будет указана, и он может оказаться продвинут или иным образом показан не обозначенным Вами пользователям.",
"compose_form.publish": "Трубить",
"compose_form.sensitive": "Отметить как чувствительный контент",
"compose_form.spoiler": "Скрыть текст за предупреждением",
"compose_form.spoiler_placeholder": "Предупреждение о скрытом тексте",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
"emoji_button.activity": "Занятия",
"emoji_button.flags": "Флаги",
"emoji_button.food": "Еда и напитки",
@@ -75,7 +84,6 @@ const ru = {
"navigation_bar.public_timeline": "Глобальная лента",
"notification.favourite": "{name} понравился Ваш статус",
"notification.follow": "{name} подписался(-лась) на Вас",
- "notification.mention": "{name} упомянул(а) Вас",
"notification.reblog": "{name} продвинул(а) Ваш статус",
"notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
@@ -87,6 +95,26 @@ const ru = {
"notifications.column_settings.show": "Показывать в колонке",
"notifications.column_settings.sound": "Проигрывать звук",
"notifications.settings": "Настройки колонки",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "Изменить видимость статуса",
"privacy.direct.long": "Показать только упомянутым",
"privacy.direct.short": "Направленный",
@@ -102,7 +130,6 @@ const ru = {
"report.submit": "Отправить",
"report.target": "Жалуемся на",
"search.placeholder": "Поиск",
- "search.status_by": "Статус от {name}",
"search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}",
"status.cannot_reblog": "Этот статус не может быть продвинут",
"status.delete": "Удалить",
@@ -132,7 +159,5 @@ const ru = {
"video_player.expand": "Развернуть видео",
"video_player.toggle_sound": "Вкл./выкл. звук",
"video_player.toggle_visible": "Показать/скрыть",
- "video_player.video_error": "Видео не может быть проиграно",
-};
-
-export default ru;
+ "video_player.video_error": "Видео не может быть проиграно"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
new file mode 100644
index 0000000000..fde28871df
--- /dev/null
+++ b/app/javascript/mastodon/locales/uk.json
@@ -0,0 +1,163 @@
+{
+ "account.block": "Заблокувати",
+ "account.disclaimer": "This user is from another instance. This number may be larger.",
+ "account.edit_profile": "Налаштування профілю",
+ "account.follow": "Підписатися",
+ "account.followers": "Підписники",
+ "account.follows": "Підписки",
+ "account.follows_you": "Підписаний",
+ "account.mention": "Згадати",
+ "account.mute": "Mute @{name}",
+ "account.posts": "Пости",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval",
+ "account.unblock": "Розблокувати",
+ "account.unfollow": "Відписатися",
+ "account.unmute": "Unmute @{name}",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Головна",
+ "column.mutes": "Muted users",
+ "column.notifications": "Сповіщення",
+ "column.public": "Стіна",
+ "column_back_button.label": "Назад",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "Що у Вас на думці?",
+ "compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
+ "compose_form.publish": "Дмухнути",
+ "compose_form.sensitive": "Непристойний зміст",
+ "compose_form.spoiler": "Hide text behind warning",
+ "compose_form.spoiler_placeholder": "Content warning",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.apps": "Various apps are available",
+ "getting_started.heading": "Ласкаво просимо",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}. {apps}.",
+ "home.column_settings.advanced": "Advanced",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.filter_regex": "Filter out by regular expressions",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "home.settings": "Column settings",
+ "lightbox.close": "Закрити",
+ "loading_indicator.label": "Завантаження...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.edit_profile": "Редагувати профіль",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "Extended information",
+ "navigation_bar.logout": "Вийти",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.preferences": "Налаштування",
+ "navigation_bar.public_timeline": "Публічна стіна",
+ "notification.favourite": "{name} сподобався ваш допис",
+ "notification.follow": "{name} підписався(-лась) на Вас",
+ "notification.reblog": "{name} передмухнув(-ла) Ваш статус",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.settings": "Column settings",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "reply_indicator.cancel": "Відмінити",
+ "report.heading": "New report",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Reporting",
+ "search.placeholder": "Пошук",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Видалити",
+ "status.favourite": "Подобається",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Згадати",
+ "status.open": "Expand this status",
+ "status.reblog": "Передмухнути",
+ "status.reblogged_by": "{name} передмухнув(-ла)",
+ "status.reply": "Відповісти",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Натисніть, щоб подивитися",
+ "status.sensitive_warning": "Непристойний зміст",
+ "status.show_less": "Show less",
+ "status.show_more": "Show more",
+ "tabs_bar.compose": "Написати",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Головна",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Сповіщення",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Додати медіа",
+ "upload_form.undo": "Відмінити",
+ "upload_progress.label": "Uploading...",
+ "video_player.expand": "Expand video",
+ "video_player.toggle_sound": "Увімкнути/вимкнути звук",
+ "video_player.toggle_visible": "Toggle visibility",
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_ar.json b/app/javascript/mastodon/locales/whitelist_ar.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ar.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_bg.json b/app/javascript/mastodon/locales/whitelist_bg.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_bg.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_de.json b/app/javascript/mastodon/locales/whitelist_de.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_de.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_en.json b/app/javascript/mastodon/locales/whitelist_en.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_en.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_eo.json b/app/javascript/mastodon/locales/whitelist_eo.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_eo.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_es.json b/app/javascript/mastodon/locales/whitelist_es.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_es.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_fa.json b/app/javascript/mastodon/locales/whitelist_fa.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_fa.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_fi.json b/app/javascript/mastodon/locales/whitelist_fi.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_fi.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_fr.json b/app/javascript/mastodon/locales/whitelist_fr.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_fr.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_hr.json b/app/javascript/mastodon/locales/whitelist_hr.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_hr.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_hu.json b/app/javascript/mastodon/locales/whitelist_hu.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_hu.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_id.json b/app/javascript/mastodon/locales/whitelist_id.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_id.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_io.json b/app/javascript/mastodon/locales/whitelist_io.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_io.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_it.json b/app/javascript/mastodon/locales/whitelist_it.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_it.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_ja.json b/app/javascript/mastodon/locales/whitelist_ja.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ja.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_nl.json b/app/javascript/mastodon/locales/whitelist_nl.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_nl.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_no.json b/app/javascript/mastodon/locales/whitelist_no.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_no.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_oc.json b/app/javascript/mastodon/locales/whitelist_oc.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_oc.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_pt-BR.json b/app/javascript/mastodon/locales/whitelist_pt-BR.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_pt-BR.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_pt.json b/app/javascript/mastodon/locales/whitelist_pt.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_pt.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_ru.json b/app/javascript/mastodon/locales/whitelist_ru.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ru.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_uk.json b/app/javascript/mastodon/locales/whitelist_uk.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_uk.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_zh-CN.json b/app/javascript/mastodon/locales/whitelist_zh-CN.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_zh-CN.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/javascript/mastodon/locales/whitelist_zh-HK.json b/app/javascript/mastodon/locales/whitelist_zh-HK.json
new file mode 100644
index 0000000000..32960f8ced
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_zh-HK.json
@@ -0,0 +1,2 @@
+[
+]
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/zh-cn.jsx b/app/javascript/mastodon/locales/zh-CN.json
similarity index 66%
rename from app/assets/javascripts/components/locales/zh-cn.jsx
rename to app/javascript/mastodon/locales/zh-CN.json
index ee4eee4270..1e0d1fa586 100644
--- a/app/assets/javascripts/components/locales/zh-cn.jsx
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,30 +1,11 @@
-import zh from 'react-intl/locale-data/zh';
-
-const localeData = zh.reduce(function (acc, localeData) {
- if (localeData.locale === "zh-Hans-CN") {
- // rename the locale "zh-Hans-CN" as "zh-CN"
- // (match the code usually used in Accepted-Language header)
- acc.push(Object.assign({},
- localeData,
- {
- "locale": "zh-CN",
- "parentLocale": "zh-Hans-CN",
- }
- ));
- }
- return acc;
-}, []);
-
-export { localeData as localeData };
-
-const zh_cn = {
+{
"account.block": "屏蔽 @{name}",
"account.disclaimer": "由于这个账户处于另一个服务站,实际数字会比这个更多。",
"account.edit_profile": "修改个人资料",
"account.follow": "关注",
"account.followers": "关注者",
- "account.follows_you": "关注你",
"account.follows": "正关注",
+ "account.follows_you": "关注你",
"account.mention": "提及 @{name}",
"account.mute": "将 @{name} 静音",
"account.posts": "嘟文",
@@ -34,39 +15,50 @@ const zh_cn = {
"account.unfollow": "取消关注",
"account.unmute": "取消 @{name} 的静音",
"boost_modal.combo": "如你想在下次路过时显示,请按{combo},",
- "column_back_button.label": "返回",
"column.blocks": "屏蔽用户",
"column.community": "本站时间轴",
- // intentional departure from existing "推文" translation for posts:
- // "推文" refers to "推特", the official translation for Twitter.
- // Currently using a semi-phonetic translation "嘟", which refers
- // to train horn sounds, for "toot".
"column.favourites": "赞过的嘟文",
"column.follow_requests": "关注请求",
"column.home": "主页",
+ "column.mutes": "Muted users",
"column.notifications": "通知",
"column.public": "跨站公共时间轴",
+ "column_back_button.label": "返回",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "在想啥?",
"compose_form.privacy_disclaimer": "你的私人嘟文,将被发送至你所提及的 {domains} 用户。你是否信任{domainsCount, plural, one {这个网站} other {这些网站}}?请留意,嘟文隐私设置只适用于各 Mastodon 服务站,如果 {domains} {domainsCount, plural, one {不是 Mastodon 服务站} other {之中有些不是 Mastodon 服务站}},对方将无法收到这篇嘟文的隐私设置,然后可能被转嘟给不能预知的用户阅读。",
- "compose_form.private": "标示为“只有关注你的人能看”",
- // Going "toot-toot" here below.
"compose_form.publish": "嘟嘟",
"compose_form.sensitive": "将媒体文件标示为“敏感内容”",
- "compose_form.spoiler_placeholder": "敏感内容的警告消息",
"compose_form.spoiler": "将部分文本藏于警告消息之后",
- "compose_form.unlisted": "请勿在公共时间轴显示",
+ "compose_form.spoiler_placeholder": "敏感内容的警告消息",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "加入表情符号",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "本站时间轴暂时未有内容,快贴文来抢头香啊!",
"empty_column.hashtag": "这个标签暂时未有内容。",
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
"empty_column.home.public_timeline": "公共时间轴",
- "empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
"empty_column.notifications": "你没有任何通知纪录,快向其他用户搭讪吧。",
"empty_column.public": "跨站公共时间轴暂时没有内容!快写一些公共的嘟文,或者关注另一些服务站的用户吧!你和本站、友站的交流,将决定这里出现的内容。",
"follow_request.authorize": "批准",
"follow_request.reject": "拒绝",
- "getting_started.about_addressing": "只要你知道一位用户的用户名称和域名,你可以用“@用户名称@域名”的格式在搜索栏寻找该用户。",
- "getting_started.about_shortcuts": "只要该用户是在你现在的服务站开立,你就可以直接输入用户名搜索。在嘟文中提及别的用户也是如此。",
"getting_started.apps": "手机或桌面应用程序",
"getting_started.heading": "开始使用",
"getting_started.open_source_notice": "Mastodon 是一个开放源码的软件。你可以在官方 GitHub ({github}) 贡献或者回报问题。你亦可通过{apps}阅读 Mastodon 上的消息。",
@@ -87,16 +79,14 @@ const zh_cn = {
"navigation_bar.follow_requests": "关注请求",
"navigation_bar.info": "关于本服务站",
"navigation_bar.logout": "注销",
- // intentional departure from https://github.com/tootsuite/mastodon/blob/f864fee1/config/locales/zh-CN.yml#L126:
- // clashes for settings/preferences
+ "navigation_bar.mutes": "Muted users",
"navigation_bar.preferences": "首选项",
"navigation_bar.public_timeline": "跨站公共时间轴",
"notification.favourite": "{name} 赞你的嘟文",
"notification.follow": "{name} 开始关注你",
- "notification.mention": "{name} 提及你",
"notification.reblog": "{name} 转嘟你的嘟文",
- "notifications.clear_confirmation": "你确定要清空通知纪录吗?",
"notifications.clear": "清空通知纪录",
+ "notifications.clear_confirmation": "你确定要清空通知纪录吗?",
"notifications.column_settings.alert": "显示桌面通知",
"notifications.column_settings.favourite": "赞你的嘟文:",
"notifications.column_settings.follow": "关注你:",
@@ -105,6 +95,26 @@ const zh_cn = {
"notifications.column_settings.show": "在通知栏显示",
"notifications.column_settings.sound": "播放音效",
"notifications.settings": "字段设置",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "调整隐私设置",
"privacy.direct.long": "只有提及的用户能看到",
"privacy.direct.short": "私人消息",
@@ -119,11 +129,9 @@ const zh_cn = {
"report.placeholder": "额外消息",
"report.submit": "提交",
"report.target": "Reporting",
- "search_results.total": "{count, number} 项结果",
- "search.account": "用户",
- "search.hashtag": "标签",
"search.placeholder": "搜索",
- "search.status_by": "按{name}搜索嘟文",
+ "search_results.total": "{count, number} 项结果",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "删除",
"status.favourite": "赞",
"status.load_more": "加载更多",
@@ -133,6 +141,7 @@ const zh_cn = {
"status.reblog": "转嘟",
"status.reblogged_by": "{name} 转嘟",
"status.reply": "回应",
+ "status.replyAll": "Reply to thread",
"status.report": "举报 @{name}",
"status.sensitive_toggle": "点击显示",
"status.sensitive_warning": "敏感内容",
@@ -142,9 +151,7 @@ const zh_cn = {
"tabs_bar.federated_timeline": "跨站",
"tabs_bar.home": "主页",
"tabs_bar.local_timeline": "本站",
- "tabs_bar.mentions": "提及",
"tabs_bar.notifications": "通知",
- "tabs_bar.public": "跨站公共时间轴",
"upload_area.title": "将文件拖放至此上传",
"upload_button.label": "上传媒体文件",
"upload_form.undo": "还原",
@@ -152,6 +159,5 @@ const zh_cn = {
"video_player.expand": "展开影片",
"video_player.toggle_sound": "开关音效",
"video_player.toggle_visible": "打开或关上",
-};
-
-export default zh_cn;
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/locales/zh-hk.jsx b/app/javascript/mastodon/locales/zh-HK.json
similarity index 66%
rename from app/assets/javascripts/components/locales/zh-hk.jsx
rename to app/javascript/mastodon/locales/zh-HK.json
index 3ecb4737b6..772b7f8fb4 100644
--- a/app/assets/javascripts/components/locales/zh-hk.jsx
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -1,30 +1,11 @@
-import zh from 'react-intl/locale-data/zh';
-
-const localeData = zh.reduce(function (acc, localeData) {
- if (localeData.locale === "zh-Hant-HK") {
- // rename the locale "zh-Hant-HK" as "zh-HK"
- // (match the code usually used in Accepted-Language header)
- acc.push(Object.assign({},
- localeData,
- {
- "locale": "zh-HK",
- "parentLocale": "zh-Hant-HK",
- }
- ));
- }
- return acc;
-}, []);
-
-export { localeData as localeData };
-
-const zh_hk = {
+{
"account.block": "封鎖 @{name}",
"account.disclaimer": "由於這個用戶在另一個服務站,實際數字會比這個更多。",
"account.edit_profile": "修改個人資料",
"account.follow": "關注",
"account.followers": "關注的人",
- "account.follows_you": "關注你",
"account.follows": "正在關注",
+ "account.follows_you": "關注你",
"account.mention": "提及 @{name}",
"account.mute": "將 @{name} 靜音",
"account.posts": "文章",
@@ -34,34 +15,50 @@ const zh_hk = {
"account.unfollow": "取消關注",
"account.unmute": "取消 @{name} 的靜音",
"boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
- "column_back_button.label": "返回",
"column.blocks": "封鎖用戶",
"column.community": "本站時間軸",
"column.favourites": "喜歡的文章",
"column.follow_requests": "關注請求",
"column.home": "主頁",
+ "column.mutes": "Muted users",
"column.notifications": "通知",
"column.public": "跨站公共時間軸",
+ "column_back_button.label": "返回",
+ "column_subheading.navigation": "Navigation",
+ "column_subheading.settings": "Settings",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "你在想甚麼?",
"compose_form.privacy_disclaimer": "你的私人文章,將被遞送至你所提及的 {domains} 用戶。你是否信任{domainsCount, plural, one {這個網站} other {這些網站}}?請留意,文章私隱設定只適用於各 Mastodon 服務站,如果 {domains} {domainsCount, plural, one {不是 Mastodon 服務站} other {之中有些不是 Mastodon 服務站}},對方將無法收到這篇文章的私隱設定,然後可能被轉推給不能預知的用戶閱讀。",
- "compose_form.private": "標示為「只有關注你的人能看」",
"compose_form.publish": "發文",
"compose_form.sensitive": "將媒體檔案標示為「敏感內容」",
- "compose_form.spoiler_placeholder": "敏感警告訊息",
"compose_form.spoiler": "將部份文字藏於警告訊息之後",
- "compose_form.unlisted": "請勿在公共時間軸顯示",
+ "compose_form.spoiler_placeholder": "敏感警告訊息",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "emoji_button.activity": "Activity",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
"emoji_button.label": "加入表情符號",
+ "emoji_button.nature": "Nature",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.search": "Search...",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
"empty_column.community": "本站時間軸暫時未有內容,快貼文來搶頭香啊!",
"empty_column.hashtag": "這個標籤暫時未有內容。",
"empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.home.public_timeline": "公共時間軸",
- "empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
"empty_column.public": "跨站公共時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
"follow_request.authorize": "批准",
"follow_request.reject": "拒絕",
- "getting_started.about_addressing": "只要你知道一位用戶的用戶名稱和域名,你可以用「@用戶名稱@域名」的格式在搜尋欄尋找該用戶。",
- "getting_started.about_shortcuts": "只要該用戶是在你現在的服務站開立,你可以直接輸入用戶𠱷搜尋。同樣的規則適用於在文章提及別的用戶。",
"getting_started.apps": "手機或桌面應用程式",
"getting_started.heading": "開始使用",
"getting_started.open_source_notice": "Mastodon 是一個開放源碼的軟件。你可以在官方 GitHub ({github}) 貢獻或者回報問題。你亦可透過{apps}閱讀 Mastodon 上的消息。",
@@ -82,14 +79,14 @@ const zh_hk = {
"navigation_bar.follow_requests": "關注請求",
"navigation_bar.info": "關於本服務站",
"navigation_bar.logout": "登出",
+ "navigation_bar.mutes": "Muted users",
"navigation_bar.preferences": "偏好設定",
"navigation_bar.public_timeline": "跨站公共時間軸",
"notification.favourite": "{name} 喜歡你的文章",
"notification.follow": "{name} 開始關注你",
- "notification.mention": "{name} 提及你",
"notification.reblog": "{name} 轉推你的文章",
- "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?",
"notifications.clear": "清空通知紀錄",
+ "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?",
"notifications.column_settings.alert": "顯示桌面通知",
"notifications.column_settings.favourite": "喜歡你的文章:",
"notifications.column_settings.follow": "關注你:",
@@ -98,6 +95,26 @@ const zh_hk = {
"notifications.column_settings.show": "在通知欄顯示",
"notifications.column_settings.sound": "播放音效",
"notifications.settings": "欄位設定",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
"privacy.change": "調整私隱設定",
"privacy.direct.long": "只有提及的用戶能看到",
"privacy.direct.short": "私人訊息",
@@ -112,11 +129,9 @@ const zh_hk = {
"report.placeholder": "額外訊息",
"report.submit": "提交",
"report.target": "Reporting",
- "search_results.total": "{count, number} 項結果",
- "search.account": "用戶",
- "search.hashtag": "標籤",
"search.placeholder": "搜尋",
- "search.status_by": "按{name}搜尋文章",
+ "search_results.total": "{count, number} 項結果",
+ "status.cannot_reblog": "This post cannot be boosted",
"status.delete": "刪除",
"status.favourite": "喜歡",
"status.load_more": "載入更多",
@@ -126,6 +141,7 @@ const zh_hk = {
"status.reblog": "轉推",
"status.reblogged_by": "{name} 轉推",
"status.reply": "回應",
+ "status.replyAll": "Reply to thread",
"status.report": "舉報 @{name}",
"status.sensitive_toggle": "點擊顯示",
"status.sensitive_warning": "敏感內容",
@@ -135,9 +151,7 @@ const zh_hk = {
"tabs_bar.federated_timeline": "跨站",
"tabs_bar.home": "主頁",
"tabs_bar.local_timeline": "本站",
- "tabs_bar.mentions": "提及",
"tabs_bar.notifications": "通知",
- "tabs_bar.public": "跨站公共時間軸",
"upload_area.title": "將檔案拖放至此上載",
"upload_button.label": "上載媒體檔案",
"upload_form.undo": "還原",
@@ -145,6 +159,5 @@ const zh_hk = {
"video_player.expand": "展開影片",
"video_player.toggle_sound": "開關音效",
"video_player.toggle_visible": "打開或關上",
-};
-
-export default zh_hk;
+ "video_player.video_error": "Video could not be played"
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/components/middleware/errors.jsx b/app/javascript/mastodon/middleware/errors.js
similarity index 100%
rename from app/assets/javascripts/components/middleware/errors.jsx
rename to app/javascript/mastodon/middleware/errors.js
diff --git a/app/assets/javascripts/components/middleware/loading_bar.jsx b/app/javascript/mastodon/middleware/loading_bar.js
similarity index 100%
rename from app/assets/javascripts/components/middleware/loading_bar.jsx
rename to app/javascript/mastodon/middleware/loading_bar.js
diff --git a/app/assets/javascripts/components/middleware/sounds.jsx b/app/javascript/mastodon/middleware/sounds.js
similarity index 100%
rename from app/assets/javascripts/components/middleware/sounds.jsx
rename to app/javascript/mastodon/middleware/sounds.js
diff --git a/app/javascript/mastodon/reducers/accounts.js b/app/javascript/mastodon/reducers/accounts.js
new file mode 100644
index 0000000000..b3c2b6d888
--- /dev/null
+++ b/app/javascript/mastodon/reducers/accounts.js
@@ -0,0 +1,133 @@
+import {
+ ACCOUNT_FETCH_SUCCESS,
+ FOLLOWERS_FETCH_SUCCESS,
+ FOLLOWERS_EXPAND_SUCCESS,
+ FOLLOWING_FETCH_SUCCESS,
+ FOLLOWING_EXPAND_SUCCESS,
+ ACCOUNT_TIMELINE_FETCH_SUCCESS,
+ ACCOUNT_TIMELINE_EXPAND_SUCCESS,
+ FOLLOW_REQUESTS_FETCH_SUCCESS,
+ FOLLOW_REQUESTS_EXPAND_SUCCESS
+} from '../actions/accounts';
+import {
+ BLOCKS_FETCH_SUCCESS,
+ BLOCKS_EXPAND_SUCCESS
+} from '../actions/blocks';
+import {
+ MUTES_FETCH_SUCCESS,
+ MUTES_EXPAND_SUCCESS
+} from '../actions/mutes';
+import { COMPOSE_SUGGESTIONS_READY } from '../actions/compose';
+import {
+ REBLOG_SUCCESS,
+ UNREBLOG_SUCCESS,
+ FAVOURITE_SUCCESS,
+ UNFAVOURITE_SUCCESS,
+ REBLOGS_FETCH_SUCCESS,
+ FAVOURITES_FETCH_SUCCESS
+} from '../actions/interactions';
+import {
+ TIMELINE_REFRESH_SUCCESS,
+ TIMELINE_UPDATE,
+ TIMELINE_EXPAND_SUCCESS
+} from '../actions/timelines';
+import {
+ STATUS_FETCH_SUCCESS,
+ CONTEXT_FETCH_SUCCESS
+} from '../actions/statuses';
+import { SEARCH_FETCH_SUCCESS } from '../actions/search';
+import {
+ NOTIFICATIONS_UPDATE,
+ NOTIFICATIONS_REFRESH_SUCCESS,
+ NOTIFICATIONS_EXPAND_SUCCESS
+} from '../actions/notifications';
+import {
+ FAVOURITED_STATUSES_FETCH_SUCCESS,
+ FAVOURITED_STATUSES_EXPAND_SUCCESS
+} from '../actions/favourites';
+import { STORE_HYDRATE } from '../actions/store';
+import Immutable from 'immutable';
+
+const normalizeAccount = (state, account) => {
+ account = { ...account };
+
+ delete account.followers_count;
+ delete account.following_count;
+ delete account.statuses_count;
+
+ return state.set(account.id, Immutable.fromJS(account))
+};
+
+const normalizeAccounts = (state, accounts) => {
+ accounts.forEach(account => {
+ state = normalizeAccount(state, account);
+ });
+
+ return state;
+};
+
+const normalizeAccountFromStatus = (state, status) => {
+ state = normalizeAccount(state, status.account);
+
+ if (status.reblog && status.reblog.account) {
+ state = normalizeAccount(state, status.reblog.account);
+ }
+
+ return state;
+};
+
+const normalizeAccountsFromStatuses = (state, statuses) => {
+ statuses.forEach(status => {
+ state = normalizeAccountFromStatus(state, status);
+ });
+
+ return state;
+};
+
+const initialState = Immutable.Map();
+
+export default function accounts(state = initialState, action) {
+ switch(action.type) {
+ case STORE_HYDRATE:
+ return state.merge(action.state.get('accounts'));
+ case ACCOUNT_FETCH_SUCCESS:
+ case NOTIFICATIONS_UPDATE:
+ return normalizeAccount(state, action.account);
+ case FOLLOWERS_FETCH_SUCCESS:
+ case FOLLOWERS_EXPAND_SUCCESS:
+ case FOLLOWING_FETCH_SUCCESS:
+ case FOLLOWING_EXPAND_SUCCESS:
+ case REBLOGS_FETCH_SUCCESS:
+ case FAVOURITES_FETCH_SUCCESS:
+ case COMPOSE_SUGGESTIONS_READY:
+ case FOLLOW_REQUESTS_FETCH_SUCCESS:
+ case FOLLOW_REQUESTS_EXPAND_SUCCESS:
+ case BLOCKS_FETCH_SUCCESS:
+ case BLOCKS_EXPAND_SUCCESS:
+ case MUTES_FETCH_SUCCESS:
+ case MUTES_EXPAND_SUCCESS:
+ return normalizeAccounts(state, action.accounts);
+ case NOTIFICATIONS_REFRESH_SUCCESS:
+ case NOTIFICATIONS_EXPAND_SUCCESS:
+ case SEARCH_FETCH_SUCCESS:
+ return normalizeAccountsFromStatuses(normalizeAccounts(state, action.accounts), action.statuses);
+ case TIMELINE_REFRESH_SUCCESS:
+ case TIMELINE_EXPAND_SUCCESS:
+ case ACCOUNT_TIMELINE_FETCH_SUCCESS:
+ case ACCOUNT_TIMELINE_EXPAND_SUCCESS:
+ case CONTEXT_FETCH_SUCCESS:
+ case FAVOURITED_STATUSES_FETCH_SUCCESS:
+ case FAVOURITED_STATUSES_EXPAND_SUCCESS:
+ return normalizeAccountsFromStatuses(state, action.statuses);
+ case REBLOG_SUCCESS:
+ case FAVOURITE_SUCCESS:
+ case UNREBLOG_SUCCESS:
+ case UNFAVOURITE_SUCCESS:
+ return normalizeAccountFromStatus(state, action.response);
+ case TIMELINE_UPDATE:
+ case STATUS_FETCH_SUCCESS:
+ return normalizeAccountFromStatus(state, action.status);
+ default:
+ return state;
+ }
+};
diff --git a/app/assets/javascripts/components/reducers/accounts.jsx b/app/javascript/mastodon/reducers/accounts_counters.js
similarity index 92%
rename from app/assets/javascripts/components/reducers/accounts.jsx
rename to app/javascript/mastodon/reducers/accounts_counters.js
index 60d283b0f5..2afc6c3d92 100644
--- a/app/assets/javascripts/components/reducers/accounts.jsx
+++ b/app/javascript/mastodon/reducers/accounts_counters.js
@@ -50,7 +50,11 @@ import {
import { STORE_HYDRATE } from '../actions/store';
import Immutable from 'immutable';
-const normalizeAccount = (state, account) => state.set(account.id, Immutable.fromJS(account));
+const normalizeAccount = (state, account) => state.set(account.id, Immutable.fromJS({
+ followers_count: account.followers_count,
+ following_count: account.following_count,
+ statuses_count: account.statuses_count,
+}));
const normalizeAccounts = (state, accounts) => {
accounts.forEach(account => {
@@ -80,10 +84,10 @@ const normalizeAccountsFromStatuses = (state, statuses) => {
const initialState = Immutable.Map();
-export default function accounts(state = initialState, action) {
+export default function accountsCounters(state = initialState, action) {
switch(action.type) {
case STORE_HYDRATE:
- return state.merge(action.state.get('accounts'));
+ return state.merge(action.state.get('accounts_counters'));
case ACCOUNT_FETCH_SUCCESS:
case NOTIFICATIONS_UPDATE:
return normalizeAccount(state, action.account);
diff --git a/app/assets/javascripts/components/reducers/alerts.jsx b/app/javascript/mastodon/reducers/alerts.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/alerts.jsx
rename to app/javascript/mastodon/reducers/alerts.js
diff --git a/app/assets/javascripts/components/reducers/cards.jsx b/app/javascript/mastodon/reducers/cards.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/cards.jsx
rename to app/javascript/mastodon/reducers/cards.js
diff --git a/app/assets/javascripts/components/reducers/compose.jsx b/app/javascript/mastodon/reducers/compose.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/compose.jsx
rename to app/javascript/mastodon/reducers/compose.js
diff --git a/app/assets/javascripts/components/reducers/index.jsx b/app/javascript/mastodon/reducers/index.js
similarity index 92%
rename from app/assets/javascripts/components/reducers/index.jsx
rename to app/javascript/mastodon/reducers/index.js
index 147030cca2..f05067c471 100644
--- a/app/assets/javascripts/components/reducers/index.jsx
+++ b/app/javascript/mastodon/reducers/index.js
@@ -7,6 +7,7 @@ import { loadingBarReducer } from 'react-redux-loading-bar';
import modal from './modal';
import user_lists from './user_lists';
import accounts from './accounts';
+import accounts_counters from './accounts_counters';
import statuses from './statuses';
import relationships from './relationships';
import search from './search';
@@ -26,6 +27,7 @@ export default combineReducers({
user_lists,
status_lists,
accounts,
+ accounts_counters,
statuses,
relationships,
search,
diff --git a/app/assets/javascripts/components/reducers/meta.jsx b/app/javascript/mastodon/reducers/meta.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/meta.jsx
rename to app/javascript/mastodon/reducers/meta.js
diff --git a/app/assets/javascripts/components/reducers/modal.jsx b/app/javascript/mastodon/reducers/modal.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/modal.jsx
rename to app/javascript/mastodon/reducers/modal.js
diff --git a/app/assets/javascripts/components/reducers/notifications.jsx b/app/javascript/mastodon/reducers/notifications.js
similarity index 95%
rename from app/assets/javascripts/components/reducers/notifications.jsx
rename to app/javascript/mastodon/reducers/notifications.js
index 1406a388ac..c567a3a59c 100644
--- a/app/assets/javascripts/components/reducers/notifications.jsx
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -49,7 +49,7 @@ const normalizeNotifications = (state, notifications, next) => {
}
return state
- .update('items', list => loaded ? list.unshift(...items) : list.push(...items))
+ .update('items', list => loaded ? items.concat(list) : list.concat(items))
.set('loaded', true)
.set('isLoading', false);
};
@@ -62,7 +62,7 @@ const appendNormalizedNotifications = (state, notifications, next) => {
});
return state
- .update('items', list => list.push(...items))
+ .update('items', list => list.concat(items))
.set('next', next)
.set('isLoading', false);
};
diff --git a/app/assets/javascripts/components/reducers/relationships.jsx b/app/javascript/mastodon/reducers/relationships.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/relationships.jsx
rename to app/javascript/mastodon/reducers/relationships.js
diff --git a/app/assets/javascripts/components/reducers/reports.jsx b/app/javascript/mastodon/reducers/reports.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/reports.jsx
rename to app/javascript/mastodon/reducers/reports.js
diff --git a/app/assets/javascripts/components/reducers/search.jsx b/app/javascript/mastodon/reducers/search.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/search.jsx
rename to app/javascript/mastodon/reducers/search.js
diff --git a/app/assets/javascripts/components/reducers/settings.jsx b/app/javascript/mastodon/reducers/settings.js
similarity index 95%
rename from app/assets/javascripts/components/reducers/settings.jsx
rename to app/javascript/mastodon/reducers/settings.js
index 820af99edb..b255aabc4d 100644
--- a/app/assets/javascripts/components/reducers/settings.jsx
+++ b/app/javascript/mastodon/reducers/settings.js
@@ -9,6 +9,10 @@ const initialState = Immutable.Map({
shows: Immutable.Map({
reblog: true,
reply: true
+ }),
+
+ regex: Immutable.Map({
+ body: ''
})
}),
diff --git a/app/assets/javascripts/components/reducers/status_lists.jsx b/app/javascript/mastodon/reducers/status_lists.js
similarity index 93%
rename from app/assets/javascripts/components/reducers/status_lists.jsx
rename to app/javascript/mastodon/reducers/status_lists.js
index b883b1c580..fd463cd63e 100644
--- a/app/assets/javascripts/components/reducers/status_lists.jsx
+++ b/app/javascript/mastodon/reducers/status_lists.js
@@ -23,7 +23,7 @@ const normalizeList = (state, listType, statuses, next) => {
const appendToList = (state, listType, statuses, next) => {
return state.update(listType, listMap => listMap.withMutations(map => {
map.set('next', next);
- map.set('items', map.get('items').push(...statuses.map(item => item.id)));
+ map.set('items', map.get('items').concat(statuses.map(item => item.id)));
}));
};
diff --git a/app/assets/javascripts/components/reducers/statuses.jsx b/app/javascript/mastodon/reducers/statuses.js
similarity index 100%
rename from app/assets/javascripts/components/reducers/statuses.jsx
rename to app/javascript/mastodon/reducers/statuses.js
diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/javascript/mastodon/reducers/timelines.js
similarity index 98%
rename from app/assets/javascripts/components/reducers/timelines.jsx
rename to app/javascript/mastodon/reducers/timelines.js
index fa98632504..31e79f9f6e 100644
--- a/app/assets/javascripts/components/reducers/timelines.jsx
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -116,7 +116,7 @@ const normalizeTimeline = (state, timeline, statuses, next) => {
state = state.setIn([timeline, 'next'], next);
}
- return state.updateIn([timeline, 'items'], Immutable.List(), list => (loaded ? list.unshift(...ids) : ids));
+ return state.updateIn([timeline, 'items'], Immutable.List(), list => (loaded ? ids.concat(list) : ids));
};
const appendNormalizedTimeline = (state, timeline, statuses, next) => {
@@ -130,7 +130,7 @@ const appendNormalizedTimeline = (state, timeline, statuses, next) => {
state = state.setIn([timeline, 'isLoading'], false);
state = state.setIn([timeline, 'next'], next);
- return state.updateIn([timeline, 'items'], Immutable.List(), list => list.push(...moreIds));
+ return state.updateIn([timeline, 'items'], Immutable.List(), list => list.concat(moreIds));
};
const normalizeAccountTimeline = (state, accountId, statuses, replace = false) => {
@@ -145,7 +145,7 @@ const normalizeAccountTimeline = (state, accountId, statuses, replace = false) =
.set('isLoading', false)
.set('loaded', true)
.set('next', true)
- .update('items', Immutable.List(), list => (replace ? ids : list.unshift(...ids))));
+ .update('items', Immutable.List(), list => (replace ? ids : ids.concat(list))));
};
const appendNormalizedAccountTimeline = (state, accountId, statuses, next) => {
@@ -159,7 +159,7 @@ const appendNormalizedAccountTimeline = (state, accountId, statuses, next) => {
return state.updateIn(['accounts_timelines', accountId], Immutable.Map(), map => map
.set('isLoading', false)
.set('next', next)
- .update('items', list => list.push(...moreIds)));
+ .update('items', list => list.concat(moreIds)));
};
const updateTimeline = (state, timeline, status, references) => {
diff --git a/app/assets/javascripts/components/reducers/user_lists.jsx b/app/javascript/mastodon/reducers/user_lists.js
similarity index 85%
rename from app/assets/javascripts/components/reducers/user_lists.jsx
rename to app/javascript/mastodon/reducers/user_lists.js
index 7f55c3641c..af94921191 100644
--- a/app/assets/javascripts/components/reducers/user_lists.jsx
+++ b/app/javascript/mastodon/reducers/user_lists.js
@@ -41,7 +41,7 @@ const normalizeList = (state, type, id, accounts, next) => {
const appendToList = (state, type, id, accounts, next) => {
return state.updateIn([type, id], map => {
- return map.set('next', next).update('items', list => list.push(...accounts.map(item => item.id)));
+ return map.set('next', next).update('items', list => list.concat(accounts.map(item => item.id)));
});
};
@@ -62,18 +62,18 @@ export default function userLists(state = initialState, action) {
case FOLLOW_REQUESTS_FETCH_SUCCESS:
return state.setIn(['follow_requests', 'items'], Immutable.List(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next);
case FOLLOW_REQUESTS_EXPAND_SUCCESS:
- return state.updateIn(['follow_requests', 'items'], list => list.push(...action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next);
+ return state.updateIn(['follow_requests', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['follow_requests', 'next'], action.next);
case FOLLOW_REQUEST_AUTHORIZE_SUCCESS:
case FOLLOW_REQUEST_REJECT_SUCCESS:
return state.updateIn(['follow_requests', 'items'], list => list.filterNot(item => item === action.id));
case BLOCKS_FETCH_SUCCESS:
return state.setIn(['blocks', 'items'], Immutable.List(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next);
case BLOCKS_EXPAND_SUCCESS:
- return state.updateIn(['blocks', 'items'], list => list.push(...action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next);
+ return state.updateIn(['blocks', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['blocks', 'next'], action.next);
case MUTES_FETCH_SUCCESS:
return state.setIn(['mutes', 'items'], Immutable.List(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next);
case MUTES_EXPAND_SUCCESS:
- return state.updateIn(['mutes', 'items'], list => list.push(...action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next);
+ return state.updateIn(['mutes', 'items'], list => list.concat(action.accounts.map(item => item.id))).setIn(['mutes', 'next'], action.next);
default:
return state;
}
diff --git a/app/assets/javascripts/components/rtl.jsx b/app/javascript/mastodon/rtl.js
similarity index 100%
rename from app/assets/javascripts/components/rtl.jsx
rename to app/javascript/mastodon/rtl.js
diff --git a/app/assets/javascripts/components/selectors/index.jsx b/app/javascript/mastodon/selectors/index.js
similarity index 87%
rename from app/assets/javascripts/components/selectors/index.jsx
rename to app/javascript/mastodon/selectors/index.js
index 01a6cb264f..7a75e2660b 100644
--- a/app/assets/javascripts/components/selectors/index.jsx
+++ b/app/javascript/mastodon/selectors/index.js
@@ -5,15 +5,16 @@ const getStatuses = state => state.get('statuses');
const getAccounts = state => state.get('accounts');
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
+const getAccountCounters = (state, id) => state.getIn(['accounts_counters', id], null);
const getAccountRelationship = (state, id) => state.getIn(['relationships', id], null);
export const makeGetAccount = () => {
- return createSelector([getAccountBase, getAccountRelationship], (base, relationship) => {
+ return createSelector([getAccountBase, getAccountCounters, getAccountRelationship], (base, counters, relationship) => {
if (base === null) {
return null;
}
- return base.set('relationship', relationship);
+ return base.merge(counters).set('relationship', relationship);
});
};
diff --git a/app/assets/javascripts/components/store/configureStore.jsx b/app/javascript/mastodon/store/configureStore.js
similarity index 100%
rename from app/assets/javascripts/components/store/configureStore.jsx
rename to app/javascript/mastodon/store/configureStore.js
diff --git a/app/assets/javascripts/components/stream.jsx b/app/javascript/mastodon/stream.js
similarity index 100%
rename from app/assets/javascripts/components/stream.jsx
rename to app/javascript/mastodon/stream.js
diff --git a/app/assets/javascripts/components/uuid.jsx b/app/javascript/mastodon/uuid.js
similarity index 100%
rename from app/assets/javascripts/components/uuid.jsx
rename to app/javascript/mastodon/uuid.js
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
new file mode 100644
index 0000000000..cfd134a9ba
--- /dev/null
+++ b/app/javascript/packs/application.js
@@ -0,0 +1,29 @@
+import Mastodon from 'mastodon/containers/mastodon';
+import React from 'react';
+import ReactDOM from 'react-dom';
+import 'font-awesome/css/font-awesome.css';
+import '../styles/application.scss';
+
+if (!window.Intl) {
+ require('intl');
+ require('intl/locale-data/jsonp/en.js');
+}
+
+window.jQuery = window.$ = require('jquery');
+window.Perf = require('react-addons-perf');
+
+require('jquery-ujs');
+require.context('../images/', true);
+
+const customContext = require.context('../../assets/stylesheets/', false);
+
+if (customContext.keys().indexOf('./custom.scss') !== -1) {
+ customContext('./custom.scss');
+}
+
+document.addEventListener('DOMContentLoaded', () => {
+ const mountNode = document.getElementById('mastodon');
+ const props = JSON.parse(mountNode.getAttribute('data-props'));
+
+ ReactDOM.render(
, mountNode);
+});
diff --git a/app/assets/javascripts/extras.jsx b/app/javascript/packs/public.js
similarity index 88%
rename from app/assets/javascripts/extras.jsx
rename to app/javascript/packs/public.js
index 7e3b7a2563..24e7d01890 100644
--- a/app/assets/javascripts/extras.jsx
+++ b/app/javascript/packs/public.js
@@ -1,6 +1,10 @@
-import emojify from './components/emoji';
+import emojify from 'mastodon/emoji';
import { length } from 'stringz';
+window.jQuery = window.$ = require('jquery');
+require('jquery-ujs');
+require.context('../images/', true);
+
$(() => {
$.each($('.emojify'), (_, content) => {
const $content = $(content);
@@ -39,10 +43,10 @@ $(() => {
}
});
- // used on /settings/profile
$('.account_display_name').on('input', e => {
$('.name-counter').text(30 - length($(e.target).val()));
});
+
$('.account_note').on('input', e => {
$('.note-counter').text(160 - length($(e.target).val()));
});
diff --git a/app/assets/stylesheets/about.scss b/app/javascript/styles/about.scss
similarity index 100%
rename from app/assets/stylesheets/about.scss
rename to app/javascript/styles/about.scss
diff --git a/app/assets/stylesheets/accounts.scss b/app/javascript/styles/accounts.scss
similarity index 100%
rename from app/assets/stylesheets/accounts.scss
rename to app/javascript/styles/accounts.scss
diff --git a/app/assets/stylesheets/admin.scss b/app/javascript/styles/admin.scss
similarity index 100%
rename from app/assets/stylesheets/admin.scss
rename to app/javascript/styles/admin.scss
diff --git a/app/assets/stylesheets/application.scss b/app/javascript/styles/application.scss
similarity index 94%
rename from app/assets/stylesheets/application.scss
rename to app/javascript/styles/application.scss
index fb17679546..5895dd81ff 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/javascript/styles/application.scss
@@ -2,7 +2,6 @@
@import 'fonts/roboto';
@import 'fonts/roboto-mono';
@import 'fonts/montserrat';
-@import 'font-awesome';
@import 'reset';
@import 'basics';
diff --git a/app/assets/stylesheets/basics.scss b/app/javascript/styles/basics.scss
similarity index 93%
rename from app/assets/stylesheets/basics.scss
rename to app/javascript/styles/basics.scss
index e2485e695a..78c142860c 100644
--- a/app/assets/stylesheets/basics.scss
+++ b/app/javascript/styles/basics.scss
@@ -1,6 +1,6 @@
body {
font-family: 'Roboto', sans-serif;
- background: $color1 image-url('background-photo.jpg');
+ background: $color1 url('../images/background-photo.jpg');
background-size: cover;
background-attachment: fixed;
font-size: 13px;
diff --git a/app/assets/stylesheets/boost.scss b/app/javascript/styles/boost.scss
similarity index 100%
rename from app/assets/stylesheets/boost.scss
rename to app/javascript/styles/boost.scss
diff --git a/app/assets/stylesheets/compact_header.scss b/app/javascript/styles/compact_header.scss
similarity index 100%
rename from app/assets/stylesheets/compact_header.scss
rename to app/javascript/styles/compact_header.scss
diff --git a/app/assets/stylesheets/components.scss b/app/javascript/styles/components.scss
similarity index 99%
rename from app/assets/stylesheets/components.scss
rename to app/javascript/styles/components.scss
index fdff6eb9fc..178ac05de5 100644
--- a/app/assets/stylesheets/components.scss
+++ b/app/javascript/styles/components.scss
@@ -985,7 +985,7 @@ a.status__content__spoiler-link {
}
.transparent-background, .imageloader {
- background: image-url('void.png');
+ background: url('../images/void.png');
}
.imageloader {
@@ -1684,7 +1684,7 @@ a.status__content__spoiler-link {
.getting-started {
box-sizing: border-box;
padding-bottom: 235px;
- background: image-url('mastodon-getting-started.png') no-repeat 0 100%/contain local;
+ background: url('../images/mastodon-getting-started.png') no-repeat 0 100%/contain local;
flex: 1 0 auto;
p {
@@ -1826,9 +1826,18 @@ button.icon-button.active i.fa-retweet {
font-size: 16px;
font-weight: 500;
color: lighten($color1, 16%);
- padding-top: 210px;
- background: image-url('mastodon-not-found.png') no-repeat center -50px;
+ background: $color1;
cursor: default;
+ display: flex;
+ flex: 1 1 auto;
+ align-items: center;
+ justify-content: center;
+
+ & > div {
+ background: url('../images/mastodon-not-found.png') no-repeat center -50px;
+ padding-top: 210px;
+ width: 100%;
+ }
}
.column-header {
@@ -2790,7 +2799,7 @@ button.icon-button.active i.fa-retweet {
}
.onboarding-modal__page-one__elephant-friend {
- background: image-url('elephant-friend.png') no-repeat center center/contain;
+ background: url('../images/elephant-friend.png') no-repeat center center/contain;
width: 147px;
height: 160px;
margin-right: 10px;
diff --git a/app/assets/stylesheets/containers.scss b/app/javascript/styles/containers.scss
similarity index 100%
rename from app/assets/stylesheets/containers.scss
rename to app/javascript/styles/containers.scss
diff --git a/app/javascript/styles/fonts/montserrat.scss b/app/javascript/styles/fonts/montserrat.scss
new file mode 100644
index 0000000000..7496e08003
--- /dev/null
+++ b/app/javascript/styles/fonts/montserrat.scss
@@ -0,0 +1,11 @@
+@font-face {
+ font-family: 'Montserrat';
+ src: local('Montserrat');
+ src: url('../fonts/montserrat/Montserrat-Regular.eot');
+ src: url('../fonts/montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
+ url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'),
+ url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype');
+ font-weight: 400;
+ font-style: normal;
+}
diff --git a/app/javascript/styles/fonts/roboto-mono.scss b/app/javascript/styles/fonts/roboto-mono.scss
new file mode 100644
index 0000000000..846519d9f8
--- /dev/null
+++ b/app/javascript/styles/fonts/roboto-mono.scss
@@ -0,0 +1,12 @@
+@font-face {
+ font-family: 'Roboto Mono';
+ src: local('Roboto Mono');
+ src: url('../fonts/roboto-mono/robotomono-regular-webfont.eot');
+ src: url('../fonts/roboto-mono/robotomono-regular-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'),
+ url('../fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'),
+ url('../fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'),
+ url('../fonts/roboto-mono/robotomono-regular-webfont.svg#roboto_monoregular') format('svg');
+ font-weight: 400;
+ font-style: normal;
+}
diff --git a/app/javascript/styles/fonts/roboto.scss b/app/javascript/styles/fonts/roboto.scss
new file mode 100644
index 0000000000..6198a580f7
--- /dev/null
+++ b/app/javascript/styles/fonts/roboto.scss
@@ -0,0 +1,52 @@
+@font-face {
+ font-family: 'Roboto';
+ src: local('Roboto');
+ src: url('../fonts/roboto/roboto-italic-webfont.eot');
+ src: url('../fonts/roboto/roboto-italic-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'),
+ url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'),
+ url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'),
+ url('../fonts/roboto/roboto-italic-webfont.svg#roboto-italic-webfont') format('svg');
+ font-weight: normal;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Roboto';
+ src: local('Roboto');
+ src: url('../fonts/roboto/roboto-bold-webfont.eot');
+ src: local('Roboto bold'), local('roboto-bold'),
+ url('../fonts/roboto/roboto-bold-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'),
+ url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'),
+ url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'),
+ url('../fonts/roboto/roboto-bold-webfont.svg#roboto-bold-webfont') format('svg');
+ font-weight: bold;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Roboto';
+ src: local('Roboto');
+ src: url('../fonts/roboto/roboto-medium-webfont.eot');
+ src: url('../fonts/roboto/roboto-medium-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'),
+ url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'),
+ url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'),
+ url('../fonts/roboto/roboto-medium-webfont.svg#roboto-medium-webfont') format('svg');
+ font-weight: 500;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Roboto';
+ src: local('Roboto');
+ src: url('../fonts/roboto/roboto-regular-webfont.eot');
+ src: url('../fonts/roboto/roboto-regular-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../fonts/roboto/roboto-regular-webfont.woff2') format('woff2'),
+ url('../fonts/roboto/roboto-regular-webfont.woff') format('woff'),
+ url('../fonts/roboto/roboto-regular-webfont.ttf') format('truetype'),
+ url('../fonts/roboto/roboto-regular-webfont.svg#roboto-regular-webfont') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/app/assets/stylesheets/footer.scss b/app/javascript/styles/footer.scss
similarity index 100%
rename from app/assets/stylesheets/footer.scss
rename to app/javascript/styles/footer.scss
diff --git a/app/assets/stylesheets/forms.scss b/app/javascript/styles/forms.scss
similarity index 100%
rename from app/assets/stylesheets/forms.scss
rename to app/javascript/styles/forms.scss
diff --git a/app/assets/stylesheets/landing_strip.scss b/app/javascript/styles/landing_strip.scss
similarity index 100%
rename from app/assets/stylesheets/landing_strip.scss
rename to app/javascript/styles/landing_strip.scss
diff --git a/app/assets/stylesheets/lists.scss b/app/javascript/styles/lists.scss
similarity index 100%
rename from app/assets/stylesheets/lists.scss
rename to app/javascript/styles/lists.scss
diff --git a/app/assets/stylesheets/reset.scss b/app/javascript/styles/reset.scss
similarity index 100%
rename from app/assets/stylesheets/reset.scss
rename to app/javascript/styles/reset.scss
diff --git a/app/assets/stylesheets/rtl.scss b/app/javascript/styles/rtl.scss
similarity index 100%
rename from app/assets/stylesheets/rtl.scss
rename to app/javascript/styles/rtl.scss
diff --git a/app/assets/stylesheets/stream_entries.scss b/app/javascript/styles/stream_entries.scss
similarity index 100%
rename from app/assets/stylesheets/stream_entries.scss
rename to app/javascript/styles/stream_entries.scss
diff --git a/app/assets/stylesheets/tables.scss b/app/javascript/styles/tables.scss
similarity index 100%
rename from app/assets/stylesheets/tables.scss
rename to app/javascript/styles/tables.scss
diff --git a/app/assets/stylesheets/variables.scss b/app/javascript/styles/variables.scss
similarity index 100%
rename from app/assets/stylesheets/variables.scss
rename to app/javascript/styles/variables.scss
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 4c008a06a1..7bdfb1d2ad 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -1,5 +1,5 @@
- content_for :header_tags do
- = javascript_include_tag 'application_public', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :page_title do
= site_hostname
@@ -10,20 +10,20 @@
%meta{ property: 'og:type', content: 'website' }/
%meta{ property: 'og:title', content: site_hostname }/
%meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon')) }/
- %meta{ property: 'og:image', content: asset_url('mastodon_small.jpg') }/
+ %meta{ property: 'og:image', content: asset_pack_path('mastodon_small.jpg') }/
%meta{ property: 'og:image:width', content: '400' }/
%meta{ property: 'og:image:height', content: '400' }/
%meta{ property: 'twitter:card', content: 'summary' }/
.wrapper
%h1
- = image_tag 'logo.png'
+ = image_tag asset_pack_path('logo.png')
= Setting.site_title
%p= t('about.about_mastodon').html_safe
.screenshot-with-signup
- .mascot= image_tag 'fluffy-elephant-friend.png'
+ .mascot= image_tag asset_pack_path('fluffy-elephant-friend.png')
- if @instance_presenter.open_registrations
= render 'registration'
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index df4223ed2f..55fbfe60e2 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -1,6 +1,6 @@
- content_for :header_tags do
%script#initial-state{:type => 'application/json'}!= json_escape(render(file: 'home/initial_state', formats: :json))
- = javascript_include_tag 'application', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'application', integrity: true, crossorigin: 'anonymous'
-= react_component 'Mastodon', default_props, class: 'app-holder', prerender: false
+.app-holder#mastodon{ data: { props: Oj.dump(default_props) }}
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index d3d97e3a04..f7cea41e2e 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -1,12 +1,12 @@
- content_for :header_tags do
- = javascript_include_tag 'application_public', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
.admin-wrapper
.sidebar-wrapper
.sidebar
= link_to root_path do
- = image_tag 'logo.png', class: 'logo'
+ = image_tag asset_pack_path('logo.png'), class: 'logo'
= render_navigation
.content-wrapper
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 602d502a9e..683d0272f5 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -19,7 +19,9 @@
= ' - '
= title
- = stylesheet_link_tag stylesheet_for_layout, media: 'all'
+ = stylesheet_pack_tag 'vendor', media: 'all'
+ = stylesheet_pack_tag 'application', media: 'all'
+ = javascript_pack_tag 'vendor', integrity: true, crossorigin: 'anonymous'
= csrf_meta_tags
= yield :header_tags
diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml
index b2ceed12a9..2478776abc 100644
--- a/app/views/layouts/auth.html.haml
+++ b/app/views/layouts/auth.html.haml
@@ -1,12 +1,12 @@
- content_for :header_tags do
- = javascript_include_tag 'application_public', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
.container
.logo-container
%h1
= link_to root_path do
- = image_tag 'logo.png'
+ = image_tag asset_pack_path('logo.png')
.form-container
= render 'flashes'
diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml
index 596f3c36ee..fcc474ff60 100644
--- a/app/views/layouts/embedded.html.haml
+++ b/app/views/layouts/embedded.html.haml
@@ -3,6 +3,6 @@
%head
%meta{:charset => 'utf-8'}/
= stylesheet_link_tag 'application', media: 'all'
- = javascript_include_tag 'application_public', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
%body.embed
= yield
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index 7bb0f71ffe..9b94ad9a4b 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -1,5 +1,5 @@
- content_for :header_tags do
- = javascript_include_tag 'application_public', integrity: true, crossorigin: 'anonymous'
+ = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
.container= yield
diff --git a/bin/webpack b/bin/webpack
new file mode 100755
index 0000000000..a871ce77bc
--- /dev/null
+++ b/bin/webpack
@@ -0,0 +1,33 @@
+#!/usr/bin/env ruby
+$stdout.sync = true
+
+require "shellwords"
+require "yaml"
+
+ENV["RAILS_ENV"] ||= "development"
+RAILS_ENV = ENV["RAILS_ENV"]
+
+ENV["NODE_ENV"] ||= RAILS_ENV
+NODE_ENV = ENV["NODE_ENV"]
+
+APP_PATH = File.expand_path("../", __dir__)
+CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml")
+
+begin
+ paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV]
+
+ NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"])
+ WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"])
+rescue Errno::ENOENT, NoMethodError
+ puts "Configuration not found in config/webpack/paths.yml"
+ puts "Please run bundle exec rails webpacker:install to install webpacker"
+ exit!
+end
+
+WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack"
+WEBPACK_CONFIG = "#{WEBPACK_CONFIG_PATH}/#{NODE_ENV}.js"
+
+Dir.chdir(APP_PATH) do
+ exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --config #{WEBPACK_CONFIG}" \
+ " #{ARGV.join(" ")}"
+end
diff --git a/bin/webpack-dev-server b/bin/webpack-dev-server
new file mode 100755
index 0000000000..c2a61ff5e6
--- /dev/null
+++ b/bin/webpack-dev-server
@@ -0,0 +1,33 @@
+#!/usr/bin/env ruby
+$stdout.sync = true
+
+require "shellwords"
+require "yaml"
+
+ENV["RAILS_ENV"] ||= "development"
+RAILS_ENV = ENV["RAILS_ENV"]
+
+ENV["NODE_ENV"] ||= RAILS_ENV
+NODE_ENV = ENV["NODE_ENV"]
+
+APP_PATH = File.expand_path("../", __dir__)
+CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml")
+
+begin
+ paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV]
+
+ NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"])
+ WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"])
+
+ WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack-dev-server"
+ DEV_SERVER_CONFIG = "#{WEBPACK_CONFIG_PATH}/development.server.js"
+rescue Errno::ENOENT, NoMethodError
+ puts "Configuration not found in config/webpacker/paths.yml."
+ puts "Please run bundle exec rails webpacker:install to install webpacker"
+ exit!
+end
+
+Dir.chdir(APP_PATH) do
+ exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --progress --color " \
+ "--config #{DEV_SERVER_CONFIG} #{ARGV.join(" ")}"
+end
diff --git a/bin/yarn b/bin/yarn
new file mode 100755
index 0000000000..c2bacef836
--- /dev/null
+++ b/bin/yarn
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+VENDOR_PATH = File.expand_path('..', __dir__)
+Dir.chdir(VENDOR_PATH) do
+ begin
+ exec "yarnpkg #{ARGV.join(" ")}"
+ rescue Errno::ENOENT
+ $stderr.puts "Yarn executable was not detected in the system."
+ $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
+ exit 1
+ end
+end
diff --git a/config/application.rb b/config/application.rb
index 2e7e5cd49f..1b5820fa30 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -74,10 +74,6 @@ module Mastodon
config.middleware.use Rack::Attack
config.middleware.use Rack::Deflater
- # babel config can be found in .babelrc
- config.browserify_rails.commandline_options = '--transform babelify --extension=".jsx"'
- config.browserify_rails.evaluate_node_modules = true
-
config.to_prepare do
Doorkeeper::AuthorizationsController.layout 'public'
Doorkeeper::AuthorizedApplicationsController.layout 'admin'
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 6157f20d35..4b25ab1a88 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -75,8 +75,6 @@ Rails.application.configure do
Bullet.add_whitelist type: :n_plus_one_query, class_name: 'User', association: :account
end
-
- config.react.variant = :development
end
require 'sidekiq/testing'
diff --git a/config/environments/production.rb b/config/environments/production.rb
index a1cd0fb35b..1f2b5e05db 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -106,8 +106,6 @@ Rails.application.configure do
config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym
- config.react.variant = :production
-
config.to_prepare do
StatsD.backend = StatsD::Instrument::Backends::NullBackend.new if ENV['STATSD_ADDR'].blank?
end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index e6bd8a015b..f2bf17364d 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -8,6 +8,6 @@ Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-Rails.application.config.assets.precompile += %w(application_public.js custom.css)
+# Rails.application.config.assets.precompile += %w(application_public.js custom.css)
Rails.application.config.assets.initialize_on_precompile = true
diff --git a/config/webpack/configuration.js b/config/webpack/configuration.js
new file mode 100644
index 0000000000..61c5b821fa
--- /dev/null
+++ b/config/webpack/configuration.js
@@ -0,0 +1,26 @@
+// Common configuration for webpacker loaded from config/webpack/paths.yml
+
+const { join, resolve } = require('path')
+const { env } = require('process')
+const { safeLoad } = require('js-yaml')
+const { readFileSync } = require('fs')
+
+const configPath = resolve('config', 'webpack')
+const loadersDir = join(__dirname, 'loaders')
+const paths = safeLoad(readFileSync(join(configPath, 'paths.yml'), 'utf8'))[env.NODE_ENV]
+const devServer = safeLoad(readFileSync(join(configPath, 'development.server.yml'), 'utf8'))[env.NODE_ENV]
+
+// Compute public path based on environment and CDN_HOST in production
+const ifHasCDN = env.CDN_HOST !== undefined && env.NODE_ENV === 'production'
+const devServerUrl = `http://${devServer.host}:${devServer.port}/${paths.entry}/`
+const publicUrl = ifHasCDN ? `${env.CDN_HOST}/${paths.entry}/` : `/${paths.entry}/`
+const publicPath = env.NODE_ENV !== 'production' ? devServerUrl : publicUrl
+
+module.exports = {
+ devServer,
+ env,
+ paths,
+ loadersDir,
+ publicUrl,
+ publicPath
+}
diff --git a/config/webpack/development.js b/config/webpack/development.js
new file mode 100644
index 0000000000..7dfa2df11f
--- /dev/null
+++ b/config/webpack/development.js
@@ -0,0 +1,16 @@
+// Note: You must restart bin/webpack-dev-server for changes to take effect
+
+const merge = require('webpack-merge')
+const sharedConfig = require('./shared.js')
+
+module.exports = merge(sharedConfig, {
+ devtool: 'sourcemap',
+
+ stats: {
+ errorDetails: true
+ },
+
+ output: {
+ pathinfo: true
+ }
+})
diff --git a/config/webpack/development.server.js b/config/webpack/development.server.js
new file mode 100644
index 0000000000..5c5631a4ea
--- /dev/null
+++ b/config/webpack/development.server.js
@@ -0,0 +1,18 @@
+// Note: You must restart bin/webpack-dev-server for changes to take effect
+
+const { resolve } = require('path')
+const merge = require('webpack-merge')
+const devConfig = require('./development.js')
+const { devServer, publicPath, paths } = require('./configuration.js')
+
+module.exports = merge(devConfig, {
+ devServer: {
+ host: devServer.host,
+ port: devServer.port,
+ headers: { "Access-Control-Allow-Origin": "*" },
+ compress: true,
+ historyApiFallback: true,
+ contentBase: resolve(paths.output, paths.entry),
+ publicPath
+ }
+})
diff --git a/config/webpack/development.server.yml b/config/webpack/development.server.yml
new file mode 100644
index 0000000000..ee588a8885
--- /dev/null
+++ b/config/webpack/development.server.yml
@@ -0,0 +1,17 @@
+# Note: You must restart bin/webpack-dev-server for changes to take effect
+
+default: &default
+ enabled: true
+ host: localhost
+ port: 8080
+
+development:
+ <<: *default
+
+test:
+ <<: *default
+ enabled: false
+
+production:
+ <<: *default
+ enabled: false
diff --git a/config/webpack/loaders/assets.js b/config/webpack/loaders/assets.js
new file mode 100644
index 0000000000..595f073fc3
--- /dev/null
+++ b/config/webpack/loaders/assets.js
@@ -0,0 +1,12 @@
+const { env, publicPath } = require('../configuration.js')
+
+module.exports = {
+ test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
+ use: [{
+ loader: 'file-loader',
+ options: {
+ publicPath,
+ name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]'
+ }
+ }]
+}
diff --git a/config/webpack/loaders/babel.js b/config/webpack/loaders/babel.js
new file mode 100644
index 0000000000..c608e708f3
--- /dev/null
+++ b/config/webpack/loaders/babel.js
@@ -0,0 +1,5 @@
+module.exports = {
+ test: /\.js(\.erb)?$/,
+ exclude: /node_modules/,
+ loader: 'babel-loader'
+}
diff --git a/config/webpack/loaders/coffee.js b/config/webpack/loaders/coffee.js
new file mode 100644
index 0000000000..dae8742492
--- /dev/null
+++ b/config/webpack/loaders/coffee.js
@@ -0,0 +1,4 @@
+module.exports = {
+ test: /\.coffee(\.erb)?$/,
+ loader: 'coffee-loader'
+}
diff --git a/config/webpack/loaders/erb.js b/config/webpack/loaders/erb.js
new file mode 100644
index 0000000000..4cd7d68495
--- /dev/null
+++ b/config/webpack/loaders/erb.js
@@ -0,0 +1,9 @@
+module.exports = {
+ test: /\.erb$/,
+ enforce: 'pre',
+ exclude: /node_modules/,
+ loader: 'rails-erb-loader',
+ options: {
+ runner: 'bin/rails runner'
+ }
+}
diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js
new file mode 100644
index 0000000000..2cb0e759a6
--- /dev/null
+++ b/config/webpack/loaders/sass.js
@@ -0,0 +1,14 @@
+const ExtractTextPlugin = require('extract-text-webpack-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' } },
+ 'postcss-loader',
+ 'sass-loader'
+ ]
+ })
+}
diff --git a/config/webpack/paths.yml b/config/webpack/paths.yml
new file mode 100644
index 0000000000..26ab8facc5
--- /dev/null
+++ b/config/webpack/paths.yml
@@ -0,0 +1,33 @@
+# Note: You must restart bin/webpack-dev-server for changes to take effect
+
+default: &default
+ config: config/webpack
+ entry: packs
+ output: public
+ manifest: manifest.json
+ node_modules: node_modules
+ source: app/javascript
+ extensions:
+ - .coffee
+ - .js
+ - .jsx
+ - .ts
+ - .vue
+ - .sass
+ - .scss
+ - .css
+ - .png
+ - .svg
+ - .gif
+ - .jpeg
+ - .jpg
+
+development:
+ <<: *default
+
+test:
+ <<: *default
+ manifest: manifest-test.json
+
+production:
+ <<: *default
diff --git a/config/webpack/production.js b/config/webpack/production.js
new file mode 100644
index 0000000000..2e4baa4241
--- /dev/null
+++ b/config/webpack/production.js
@@ -0,0 +1,44 @@
+// Note: You must restart bin/webpack-dev-server for changes to take effect
+
+/* eslint global-require: 0 */
+
+const webpack = require('webpack')
+const merge = require('webpack-merge')
+const CompressionPlugin = require('compression-webpack-plugin')
+const sharedConfig = require('./shared.js')
+
+module.exports = merge(sharedConfig, {
+ output: { filename: '[name]-[chunkhash].js' },
+
+ plugins: [
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ unused: true,
+ evaluate: true,
+ booleans: true,
+ drop_debugger: true,
+ dead_code: true,
+ pure_getters: true,
+ negate_iife: true,
+ conditionals: true,
+ loops: true,
+ cascade: true,
+ keep_fargs: false,
+ warnings: true
+ },
+
+ mangle: false,
+
+ output: {
+ comments: false
+ },
+
+ sourceMap: false
+ }),
+ new CompressionPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: /\.(js|css|svg|eot|ttf|woff|woff2)$/
+ })
+ ]
+})
diff --git a/config/webpack/shared.js b/config/webpack/shared.js
new file mode 100644
index 0000000000..3d1b14e15e
--- /dev/null
+++ b/config/webpack/shared.js
@@ -0,0 +1,59 @@
+// Note: You must restart bin/webpack-dev-server for changes to take effect
+
+/* eslint global-require: 0 */
+/* eslint import/no-dynamic-require: 0 */
+
+const webpack = require('webpack')
+const { basename, dirname, join, relative, resolve } = require('path')
+const { sync } = require('glob')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const ManifestPlugin = require('webpack-manifest-plugin')
+const extname = require('path-complete-extname')
+const { env, paths, publicPath, loadersDir } = require('./configuration.js')
+
+const extensionGlob = `**/*{${paths.extensions.join(',')}}*`
+const packPaths = sync(join(paths.source, paths.entry, extensionGlob))
+
+module.exports = {
+ entry: packPaths.reduce(
+ (map, entry) => {
+ const localMap = map
+ const namespace = relative(join(paths.source, paths.entry), dirname(entry))
+ localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
+ return localMap
+ }, {}
+ ),
+
+ output: {
+ filename: '[name].js',
+ chunkFilename: '[name]-[chunkhash].js',
+ path: resolve(paths.output, paths.entry),
+ publicPath
+ },
+
+ module: {
+ rules: sync(join(loadersDir, '*.js')).map(loader => require(loader))
+ },
+
+ plugins: [
+ new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
+ new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'),
+ new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true }),
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ minChunks: ({ resource }) => /node_modules/.test(resource)
+ })
+ ],
+
+ resolve: {
+ extensions: paths.extensions,
+ modules: [
+ resolve(paths.source),
+ resolve(paths.node_modules)
+ ]
+ },
+
+ resolveLoader: {
+ modules: [paths.node_modules]
+ }
+}
diff --git a/config/webpack/test.js b/config/webpack/test.js
new file mode 100644
index 0000000000..e002d0cdc5
--- /dev/null
+++ b/config/webpack/test.js
@@ -0,0 +1,6 @@
+// Note: You must restart bin/webpack-dev-server for changes to take effect
+
+const merge = require('webpack-merge')
+const sharedConfig = require('./shared.js')
+
+module.exports = merge(sharedConfig, {})
diff --git a/config/webpack/translationRunner.js b/config/webpack/translationRunner.js
new file mode 100644
index 0000000000..c636170b9f
--- /dev/null
+++ b/config/webpack/translationRunner.js
@@ -0,0 +1,34 @@
+const manageTranslations = require('react-intl-translations-manager').default;
+
+manageTranslations({
+ messagesDirectory: 'build/messages',
+ translationsDirectory: 'app/javascript/mastodon/locales/',
+ detectDuplicateIds: false,
+ singleMessagesFile: true,
+ languages: [
+ 'ar',
+ 'en',
+ 'de',
+ 'es',
+ 'fa',
+ 'hr',
+ 'hu',
+ 'io',
+ 'it',
+ 'fr',
+ 'nl',
+ 'no',
+ 'oc',
+ 'pt',
+ 'pt-BR',
+ 'uk',
+ 'fi',
+ 'eo',
+ 'ru',
+ 'ja',
+ 'zh-HK',
+ 'zh-CN',
+ 'bg',
+ 'id',
+ ],
+})
diff --git a/docker-compose.yml b/docker-compose.yml
index 81c6fe981c..1a8debb463 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,10 +15,14 @@ services:
# volumes:
# - ./redis:/data
- web:
- restart: always
+ app:
build: .
image: gargron/mastodon
+
+ web:
+ extends:
+ service: app
+ restart: always
env_file: .env.production
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
@@ -28,12 +32,13 @@ services:
- redis
volumes:
- ./public/assets:/mastodon/public/assets
+ - ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
streaming:
+ extends:
+ service: app
restart: always
- build: .
- image: gargron/mastodon
env_file: .env.production
command: npm run start
ports:
@@ -43,9 +48,9 @@ services:
- redis
sidekiq:
+ extends:
+ service: app
restart: always
- build: .
- image: gargron/mastodon
env_file: .env.production
command: bundle exec sidekiq -q default -q mailers -q pull -q push
depends_on:
diff --git a/package.json b/package.json
index 70304c529c..a19c61ee2c 100644
--- a/package.json
+++ b/package.json
@@ -3,10 +3,11 @@
"license": "AGPL-3.0",
"scripts": {
"postversion": "git push --tags",
+ "manage:translations": "node ./config/webpack/translationRunner.js",
"start": "babel-node ./streaming/index.js --presets es2015,stage-2",
"storybook": "start-storybook -p 9001 -c storybook",
"test": "npm run test:lint && npm run test:mocha",
- "test:lint": "eslint -c .eslintrc.json --ext=js --ext=jsx app/assets/javascripts/",
+ "test:lint": "eslint -c .eslintrc.json --ext=js --ext=jsx app/javascript/",
"test:mocha": "mocha --require ./spec/javascript/setup.js --compilers js:babel-register ./spec/javascript/components/*.test.jsx"
},
"repository": {
@@ -14,39 +15,55 @@
"url": "https://github.com/tootsuite/mastodon.git"
},
"dependencies": {
- "@kadira/storybook": "^2.35.3",
+ "autoprefixer": "^6.7.7",
"axios": "^0.15.3",
"babel-cli": "^6.23.0",
+ "babel-core": "^6.24.1",
+ "babel-loader": "7.x",
+ "babel-plugin-react-intl": "^2.3.1",
"babel-plugin-react-transform": "^2.0.2",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
+ "babel-plugin-transform-react-constant-elements": "^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-pure-class-to-function": "^1.0.1",
+ "babel-plugin-transform-react-remove-prop-types": "^0.4.3",
+ "babel-preset-env": "^1.4.0",
"babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-2": "^6.22.0",
- "babelify": "^7.3.0",
- "browserify": "^14.1.0",
- "browserify-incremental": "^3.1.1",
"bufferutil": "^2.0.1",
- "chai": "^3.5.0",
- "chai-enzyme": "^0.6.1",
- "css-loader": "^0.26.2",
+ "coffee-loader": "^0.7.3",
+ "coffee-script": "^1.12.5",
+ "compression-webpack-plugin": "^0.4.0",
+ "css-loader": "^0.28.0",
"dotenv": "^4.0.0",
"emojione": "^2.2.7",
"emojione-picker": "^2.1.2",
- "enzyme": "^2.8.2",
"es6-promise": "^3.2.1",
"escape-html": "^1.0.3",
"eventsource": "^0.2.1",
"express": "^4.14.1",
+ "extract-text-webpack-plugin": "^2.1.0",
+ "file-loader": "^0.11.1",
+ "font-awesome": "^4.7.0",
+ "glob": "^7.1.1",
"http-link-header": "^0.8.0",
"immutable": "^3.8.1",
"intl": "^1.2.5",
- "jsdom": "^9.11.0",
- "mocha": "^3.2.0",
+ "jquery-ujs": "^1.2.2",
+ "js-yaml": "^3.8.3",
"node-sass": "^4.5.2",
"npmlog": "^4.0.2",
+ "path-complete-extname": "^0.1.0",
"pg": "^6.1.2",
+ "postcss-loader": "^1.3.3",
+ "postcss-smart-import": "^0.6.12",
+ "precss": "^1.4.0",
"prop-types": "^15.5.8",
+ "rails-erb-loader": "^5.0.0",
"react": "^15.5.4",
"react-addons-perf": "^15.4.2",
"react-addons-shallow-compare": "^15.5.2",
@@ -55,6 +72,7 @@
"react-dom": "^15.5.4",
"react-imageloader": "^2.1.0",
"react-immutable-proptypes": "^2.1.0",
+ "react-immutable-pure-component": "^0.0.4",
"react-intl": "^2.1.5",
"react-motion": "^0.4.5",
"react-notification": "^6.6.0",
@@ -72,21 +90,31 @@
"redux-immutable": "^3.1.0",
"redux-thunk": "^2.2.0",
"reselect": "^2.5.4",
- "sass-loader": "^6.0.2",
+ "sass-loader": "^6.0.3",
"sinon": "^1.17.6",
"stringz": "^0.1.2",
- "style-loader": "^0.13.2",
+ "style-loader": "^0.16.1",
"utf-8-validate": "^3.0.1",
"uuid": "^3.0.1",
- "webpack": "^2.2.1",
+ "webpack": "^2.4.1",
+ "webpack-manifest-plugin": "^1.1.0",
+ "webpack-merge": "^4.1.0",
"websocket.js": "^0.1.7",
"ws": "^2.1.0"
},
"devDependencies": {
+ "@kadira/storybook": "^2.35.3",
"babel-eslint": "^7.2.2",
+ "chai": "^3.5.0",
+ "chai-enzyme": "^0.6.1",
+ "enzyme": "^2.8.2",
"eslint": "^3.19.0",
"eslint-plugin-jsx-a11y": "^4.0.0",
- "eslint-plugin-react": "^6.10.3"
+ "eslint-plugin-react": "^6.10.3",
+ "jsdom": "^9.11.0",
+ "mocha": "^3.2.0",
+ "react-intl-translations-manager": "^5.0.0",
+ "webpack-dev-server": "^2.4.5"
},
"optionalDependencies": {
"fsevents": "*"
diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb
index ed49779b49..d69d9c4c2b 100644
--- a/spec/controllers/api/v1/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts_controller_spec.rb
@@ -27,14 +27,11 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
describe 'PATCH #update_credentials' do
describe 'with valid data' do
before do
- avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png'))
- header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png'))
-
patch :update_credentials, params: {
display_name: "Alice Isn't Dead",
note: "Hi!\n\nToot toot!",
- avatar: "data:image/png;base64,#{Base64.encode64(avatar)}",
- header: "data:image/png;base64,#{Base64.encode64(header)}",
+ avatar: fixture_file_upload('files/avatar.gif', 'image/gif'),
+ header: fixture_file_upload('files/attachment.jpg', 'image/jpeg'),
}
end
diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb
index 4a634f6b8b..f9c222b60e 100644
--- a/spec/features/log_in_spec.rb
+++ b/spec/features/log_in_spec.rb
@@ -11,6 +11,6 @@ feature "Log in" do
fill_in "user_password", with: password
click_on "Log in"
- expect(page).to have_css "div.app-holder[data-react-class=Mastodon]"
+ expect(page).to have_css "div.app-holder"
end
end
diff --git a/spec/javascript/components/avatar.test.jsx b/spec/javascript/components/avatar.test.jsx
index 7131bbec7d..f701738802 100644
--- a/spec/javascript/components/avatar.test.jsx
+++ b/spec/javascript/components/avatar.test.jsx
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { render } from 'enzyme';
-import Avatar from '../../../app/assets/javascripts/components/components/avatar'
+import Avatar from '../../../app/javascript/mastodon/components/avatar'
describe('
', () => {
const src = '/path/to/image.jpg';
diff --git a/spec/javascript/components/button.test.jsx b/spec/javascript/components/button.test.jsx
index 13bbe95a24..c32fae32ae 100644
--- a/spec/javascript/components/button.test.jsx
+++ b/spec/javascript/components/button.test.jsx
@@ -2,7 +2,7 @@ import { expect } from 'chai';
import { shallow } from 'enzyme';
import sinon from 'sinon';
-import Button from '../../../app/assets/javascripts/components/components/button';
+import Button from '../../../app/javascript/mastodon/components/button';
describe('
', () => {
it('renders a button element', () => {
diff --git a/spec/javascript/components/display_name.test.jsx b/spec/javascript/components/display_name.test.jsx
index e5a932f4b8..7072e653ef 100644
--- a/spec/javascript/components/display_name.test.jsx
+++ b/spec/javascript/components/display_name.test.jsx
@@ -2,7 +2,7 @@ import { expect } from 'chai';
import { render } from 'enzyme';
import Immutable from 'immutable';
-import DisplayName from '../../../app/assets/javascripts/components/components/display_name'
+import DisplayName from '../../../app/javascript/mastodon/components/display_name'
describe('
', () => {
it('renders display name + account name', () => {
diff --git a/spec/javascript/components/dropdown_menu.test.jsx b/spec/javascript/components/dropdown_menu.test.jsx
index ef3b25a60c..717bd51acb 100644
--- a/spec/javascript/components/dropdown_menu.test.jsx
+++ b/spec/javascript/components/dropdown_menu.test.jsx
@@ -2,7 +2,7 @@ import { expect } from 'chai';
import { shallow, mount } from 'enzyme';
import sinon from 'sinon';
-import DropdownMenu from '../../../app/assets/javascripts/components/components/dropdown_menu';
+import DropdownMenu from '../../../app/javascript/mastodon/components/dropdown_menu';
import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
describe('
', () => {
diff --git a/spec/javascript/components/features/ui/components/column.test.jsx b/spec/javascript/components/features/ui/components/column.test.jsx
index b7e257757a..6359905e65 100644
--- a/spec/javascript/components/features/ui/components/column.test.jsx
+++ b/spec/javascript/components/features/ui/components/column.test.jsx
@@ -2,8 +2,8 @@ import { expect } from 'chai';
import { mount } from 'enzyme';
import sinon from 'sinon';
-import Column from '../../../../../../app/assets/javascripts/components/features/ui/components/column';
-import ColumnHeader from '../../../../../../app/assets/javascripts/components/features/ui/components/column_header';
+import Column from '../../../../../../app/javascript/mastodon/features/ui/components/column';
+import ColumnHeader from '../../../../../../app/javascript/mastodon/features/ui/components/column_header';
describe('
', () => {
describe('
click handler', () => {
diff --git a/spec/javascript/components/loading_indicator.test.jsx b/spec/javascript/components/loading_indicator.test.jsx
index 677ff4aaf0..a372640be7 100644
--- a/spec/javascript/components/loading_indicator.test.jsx
+++ b/spec/javascript/components/loading_indicator.test.jsx
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { shallow } from 'enzyme';
-import LoadingIndicator from '../../../app/assets/javascripts/components/components/loading_indicator'
+import LoadingIndicator from '../../../app/javascript/mastodon/components/loading_indicator'
describe('
', () => {
diff --git a/yarn.lock b/yarn.lock
index 0e100f0bd7..58e373de92 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -99,20 +99,6 @@
webpack-dev-middleware "^1.6.0"
webpack-hot-middleware "^2.13.2"
-JSONStream@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0"
- dependencies:
- jsonparse "0.0.5"
- through ">=2.2.7 <3"
-
-JSONStream@^1.0.3:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.2.1.tgz#32aa5790e799481083b49b4b7fa94e23bae69bf9"
- dependencies:
- jsonparse "^1.2.0"
- through ">=2.2.7 <3"
-
abab@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
@@ -146,14 +132,6 @@ acorn-jsx@^3.0.0:
dependencies:
acorn "^3.0.4"
-acorn@^1.0.3:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
-
-acorn@^2.7.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
-
acorn@^3.0.0, acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
@@ -162,7 +140,7 @@ acorn@^4.0.3, acorn@^4.0.4:
version "4.0.11"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
-acorn@^5.0.1:
+acorn@^5.0.0, acorn@^5.0.1:
version "5.0.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
@@ -183,7 +161,7 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
-ajv@^4.7.0:
+ajv@^4.11.2, ajv@^4.7.0:
version "4.11.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22"
dependencies:
@@ -222,6 +200,10 @@ ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+any-promise@^0.1.0, 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.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
@@ -270,10 +252,6 @@ array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
-array-filter@~0.0.0:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
-
array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -289,14 +267,6 @@ array-includes@^3.0.2:
define-properties "^1.1.2"
es-abstract "^1.5.0"
-array-map@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
-
-array-reduce@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
-
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -346,7 +316,7 @@ assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-assert@^1.1.1, assert@^1.4.0:
+assert@^1.1.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
dependencies:
@@ -364,12 +334,6 @@ ast-types@0.9.5:
version "0.9.5"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.5.tgz#1a660a09945dbceb1f9c9cbb715002617424e04a"
-astw@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astw/-/astw-2.0.0.tgz#08121ac8288d35611c0ceec663f6cd545604897d"
- dependencies:
- acorn "^1.0.3"
-
async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -378,6 +342,10 @@ async-foreach@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+async@0.2.x, async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+
async@^0.9.0:
version "0.9.2"
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
@@ -392,10 +360,6 @@ async@^2.1.2, async@^2.1.5:
dependencies:
lodash "^4.14.0"
-async@~0.2.6:
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -404,15 +368,15 @@ autobind-decorator@1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/autobind-decorator/-/autobind-decorator-1.3.3.tgz#41b1915ee742859c872b5d1743d10745254b83b4"
-autoprefixer@^6.3.1, autoprefixer@^6.3.7:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.5.0.tgz#910de0aa0f22af4c7d50367cbc9d4d412945162f"
+autoprefixer@^6.3.1, autoprefixer@^6.3.7, autoprefixer@^6.7.7:
+ version "6.7.7"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
dependencies:
- browserslist "~1.4.0"
- caniuse-db "^1.0.30000540"
+ browserslist "^1.7.6"
+ caniuse-db "^1.0.30000634"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
- postcss "^5.2.2"
+ postcss "^5.2.16"
postcss-value-parser "^3.2.3"
aws-sign2@~0.6.0:
@@ -450,15 +414,7 @@ babel-cli@^6.23.0:
optionalDependencies:
chokidar "^1.6.1"
-babel-code-frame@^6.11.0:
- version "6.16.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de"
- dependencies:
- chalk "^1.1.0"
- esutils "^2.0.2"
- js-tokens "^2.0.0"
-
-babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
+babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
dependencies:
@@ -466,43 +422,19 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
-babel-core@^6.0.14, babel-core@^6.23.0:
- version "6.23.1"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df"
+babel-core@^6.11.4, babel-core@^6.23.0, babel-core@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83"
dependencies:
babel-code-frame "^6.22.0"
- babel-generator "^6.23.0"
- babel-helpers "^6.23.0"
+ babel-generator "^6.24.1"
+ babel-helpers "^6.24.1"
babel-messages "^6.23.0"
- babel-register "^6.23.0"
+ babel-register "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.23.0"
- babel-traverse "^6.23.1"
- babel-types "^6.23.0"
- babylon "^6.11.0"
- convert-source-map "^1.1.0"
- debug "^2.1.1"
- json5 "^0.5.0"
- lodash "^4.2.0"
- minimatch "^3.0.2"
- path-is-absolute "^1.0.0"
- private "^0.1.6"
- slash "^1.0.0"
- source-map "^0.5.0"
-
-babel-core@^6.11.4:
- version "6.22.1"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-generator "^6.22.0"
- babel-helpers "^6.22.0"
- babel-messages "^6.22.0"
- babel-register "^6.22.0"
- babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.1"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
babylon "^6.11.0"
convert-source-map "^1.1.0"
debug "^2.1.1"
@@ -523,25 +455,13 @@ babel-eslint@^7.2.2:
babel-types "^6.23.0"
babylon "^6.16.1"
-babel-generator@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805"
- dependencies:
- babel-messages "^6.22.0"
- babel-runtime "^6.22.0"
- babel-types "^6.22.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.2.0"
- source-map "^0.5.0"
-
-babel-generator@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5"
+babel-generator@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
dependencies:
babel-messages "^6.23.0"
babel-runtime "^6.22.0"
- babel-types "^6.23.0"
+ babel-types "^6.24.1"
detect-indent "^4.0.0"
jsesc "^1.3.0"
lodash "^4.2.0"
@@ -573,22 +493,22 @@ babel-helper-builder-react-jsx@^6.8.0:
esutils "^2.0.0"
lodash "^4.2.0"
-babel-helper-call-delegate@^6.22.0, babel-helper-call-delegate@^6.8.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef"
+babel-helper-call-delegate@^6.24.1, babel-helper-call-delegate@^6.8.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
dependencies:
- babel-helper-hoist-variables "^6.22.0"
+ babel-helper-hoist-variables "^6.24.1"
babel-runtime "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
-babel-helper-define-map@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.22.0.tgz#9544e9502b2d6dfe7d00ff60e82bd5a7a89e95b7"
+babel-helper-define-map@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
dependencies:
- babel-helper-function-name "^6.22.0"
+ babel-helper-function-name "^6.24.1"
babel-runtime "^6.22.0"
- babel-types "^6.22.0"
+ babel-types "^6.24.1"
lodash "^4.2.0"
babel-helper-explode-assignable-expression@^6.22.0:
@@ -608,36 +528,40 @@ babel-helper-explode-class@^6.22.0:
babel-traverse "^6.22.0"
babel-types "^6.22.0"
-babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.8.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc"
+babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.24.1, babel-helper-function-name@^6.8.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
dependencies:
- babel-helper-get-function-arity "^6.22.0"
+ babel-helper-get-function-arity "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
-babel-helper-get-function-arity@^6.22.0, babel-helper-get-function-arity@^6.8.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce"
+babel-helper-get-function-arity@^6.24.1, babel-helper-get-function-arity@^6.8.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
dependencies:
babel-runtime "^6.22.0"
- babel-types "^6.22.0"
+ babel-types "^6.24.1"
-babel-helper-hoist-variables@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72"
+babel-helper-hoist-variables@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
dependencies:
babel-runtime "^6.22.0"
- babel-types "^6.22.0"
+ babel-types "^6.24.1"
-babel-helper-optimise-call-expression@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.22.0.tgz#f8d5d4b40a6e2605a6a7f9d537b581bea3756d15"
+babel-helper-is-react-class@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-react-class/-/babel-helper-is-react-class-1.0.0.tgz#ef6f3678b05c76dbdeedadead7af98c2724d8431"
+
+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"
dependencies:
babel-runtime "^6.22.0"
- babel-types "^6.22.0"
+ babel-types "^6.24.1"
babel-helper-regex@^6.22.0:
version "6.22.0"
@@ -657,30 +581,31 @@ babel-helper-remap-async-to-generator@^6.22.0:
babel-traverse "^6.22.0"
babel-types "^6.22.0"
-babel-helper-replace-supers@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42"
+babel-helper-replace-supers@^6.22.0, babel-helper-replace-supers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
dependencies:
- babel-helper-optimise-call-expression "^6.22.0"
- babel-messages "^6.22.0"
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-messages "^6.23.0"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
-babel-helpers@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c"
+babel-helpers@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
dependencies:
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
+ babel-template "^6.24.1"
-babel-helpers@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992"
+babel-loader@7.x:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7"
dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.23.0"
+ find-cache-dir "^0.1.1"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
babel-loader@^6.2.4:
version "6.2.5"
@@ -690,12 +615,6 @@ babel-loader@^6.2.4:
mkdirp "^0.5.1"
object-assign "^4.0.1"
-babel-messages@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575"
- dependencies:
- babel-runtime "^6.22.0"
-
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -716,6 +635,14 @@ babel-plugin-react-docgen@^1.4.2:
lodash "4.x.x"
react-docgen "^2.12.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"
+ dependencies:
+ babel-runtime "^6.2.0"
+ intl-messageformat-parser "^1.2.0"
+ mkdirp "^0.5.1"
+
babel-plugin-react-transform@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz#515bbfa996893981142d90b1f9b1635de2995109"
@@ -825,29 +752,29 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-trans
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-block-scoping@^6.22.0, babel-plugin-transform-es2015-block-scoping@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e"
+babel-plugin-transform-es2015-block-scoping@^6.22.0, babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.6.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
dependencies:
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
lodash "^4.2.0"
-babel-plugin-transform-es2015-classes@^6.22.0, babel-plugin-transform-es2015-classes@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14"
+babel-plugin-transform-es2015-classes@^6.22.0, babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.6.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
dependencies:
- babel-helper-define-map "^6.22.0"
- babel-helper-function-name "^6.22.0"
- babel-helper-optimise-call-expression "^6.22.0"
- babel-helper-replace-supers "^6.22.0"
- babel-messages "^6.22.0"
+ babel-helper-define-map "^6.24.1"
+ babel-helper-function-name "^6.24.1"
+ babel-helper-optimise-call-expression "^6.24.1"
+ babel-helper-replace-supers "^6.24.1"
+ babel-messages "^6.23.0"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.3.13:
version "6.22.0"
@@ -862,9 +789,9 @@ babel-plugin-transform-es2015-destructuring@6.16.0:
dependencies:
babel-runtime "^6.9.0"
-babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6"
+babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0, babel-plugin-transform-es2015-destructuring@^6.6.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
dependencies:
babel-runtime "^6.22.0"
@@ -875,9 +802,9 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2
babel-runtime "^6.22.0"
babel-types "^6.22.0"
-babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.22.0.tgz#180467ad63aeea592a1caeee4bf1c8b3e2616265"
+babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0, babel-plugin-transform-es2015-for-of@^6.6.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
dependencies:
babel-runtime "^6.22.0"
@@ -895,7 +822,7 @@ babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-li
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.8.0:
+babel-plugin-transform-es2015-modules-amd@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21"
dependencies:
@@ -903,30 +830,38 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015
babel-runtime "^6.22.0"
babel-template "^6.22.0"
-babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145"
+babel-plugin-transform-es2015-modules-amd@^6.24.1, babel-plugin-transform-es2015-modules-amd@^6.8.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
dependencies:
- babel-plugin-transform-strict-mode "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad"
+babel-plugin-transform-es2015-modules-commonjs@^6.22.0, 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.6.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
dependencies:
- babel-helper-hoist-variables "^6.22.0"
+ babel-plugin-transform-strict-mode "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
+ babel-template "^6.24.1"
+ babel-types "^6.24.1"
-babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.22.0.tgz#60d0ba3bd23258719c64391d9bf492d648dc0fae"
+babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.22.0, babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
dependencies:
- babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-helper-hoist-variables "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
+ babel-template "^6.24.1"
+
+babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.22.0, babel-plugin-transform-es2015-modules-umd@^6.23.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
+ dependencies:
+ babel-plugin-transform-es2015-modules-amd "^6.24.1"
+ babel-runtime "^6.22.0"
+ babel-template "^6.24.1"
babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.3.13:
version "6.22.0"
@@ -946,16 +881,16 @@ babel-plugin-transform-es2015-parameters@6.17.0:
babel-traverse "^6.16.0"
babel-types "^6.16.0"
-babel-plugin-transform-es2015-parameters@^6.22.0, babel-plugin-transform-es2015-parameters@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb"
+babel-plugin-transform-es2015-parameters@^6.22.0, babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.6.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
dependencies:
- babel-helper-call-delegate "^6.22.0"
- babel-helper-get-function-arity "^6.22.0"
+ babel-helper-call-delegate "^6.24.1"
+ babel-helper-get-function-arity "^6.24.1"
babel-runtime "^6.22.0"
- babel-template "^6.22.0"
- babel-traverse "^6.22.0"
- babel-types "^6.22.0"
+ babel-template "^6.24.1"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.3.13:
version "6.22.0"
@@ -984,9 +919,9 @@ babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.22.0.tgz#87faf2336d3b6a97f68c4d906b0cd0edeae676e1"
+babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
dependencies:
babel-runtime "^6.22.0"
@@ -1033,26 +968,52 @@ babel-plugin-transform-react-constant-elements@6.9.1:
dependencies:
babel-runtime "^6.9.1"
+babel-plugin-transform-react-constant-elements@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd"
+ dependencies:
+ babel-runtime "^6.22.0"
+
babel-plugin-transform-react-display-name@^6.3.13:
version "6.8.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.8.0.tgz#f7a084977383d728bdbdc2835bba0159577f660e"
dependencies:
babel-runtime "^6.0.0"
-babel-plugin-transform-react-jsx-self@6.11.0, babel-plugin-transform-react-jsx-self@^6.11.0:
+babel-plugin-transform-react-inline-elements@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-inline-elements/-/babel-plugin-transform-react-inline-elements-6.22.0.tgz#6687211a32b49a52f22c573a2b5504a25ef17c53"
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-self@6.11.0:
version "6.11.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.11.0.tgz#605c9450c1429f97a930f7e1dfe3f0d9d0dbd0f4"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.9.0"
-babel-plugin-transform-react-jsx-source@6.9.0, babel-plugin-transform-react-jsx-source@^6.3.13:
+babel-plugin-transform-react-jsx-self@^6.11.0, babel-plugin-transform-react-jsx-self@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-react-jsx-source@6.9.0:
version "6.9.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.9.0.tgz#af684a05c2067a86e0957d4f343295ccf5dccf00"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.9.0"
+babel-plugin-transform-react-jsx-source@^6.22.0, babel-plugin-transform-react-jsx-source@^6.3.13:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
+ dependencies:
+ babel-plugin-syntax-jsx "^6.8.0"
+ babel-runtime "^6.22.0"
+
babel-plugin-transform-react-jsx@^6.3.13:
version "6.8.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.8.0.tgz#94759942f70af18c617189aa7f3593f1644a71ab"
@@ -1061,6 +1022,16 @@ babel-plugin-transform-react-jsx@^6.3.13:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.0.0"
+babel-plugin-transform-react-pure-class-to-function@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-pure-class-to-function/-/babel-plugin-transform-react-pure-class-to-function-1.0.1.tgz#32a649c97d653250b419cfd1489331b0290d9ee4"
+ dependencies:
+ babel-helper-is-react-class "^1.0.0"
+
+babel-plugin-transform-react-remove-prop-types@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.3.tgz#fdff5c12933efc3ac979817adcdc0f612c5e3563"
+
babel-plugin-transform-regenerator@6.16.1:
version "6.16.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59"
@@ -1081,12 +1052,12 @@ babel-plugin-transform-runtime@6.15.0:
dependencies:
babel-runtime "^6.9.0"
-babel-plugin-transform-strict-mode@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c"
+babel-plugin-transform-strict-mode@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
dependencies:
babel-runtime "^6.22.0"
- babel-types "^6.22.0"
+ babel-types "^6.24.1"
babel-polyfill@^6.23.0:
version "6.23.0"
@@ -1129,6 +1100,40 @@ babel-preset-env@0.0.6:
babel-plugin-transform-regenerator "^6.6.0"
browserslist "^1.4.0"
+babel-preset-env@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a"
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-syntax-trailing-function-commas "^6.22.0"
+ babel-plugin-transform-async-to-generator "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.23.0"
+ babel-plugin-transform-es2015-classes "^6.23.0"
+ babel-plugin-transform-es2015-computed-properties "^6.22.0"
+ babel-plugin-transform-es2015-destructuring "^6.23.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+ babel-plugin-transform-es2015-for-of "^6.23.0"
+ babel-plugin-transform-es2015-function-name "^6.22.0"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-systemjs "^6.23.0"
+ babel-plugin-transform-es2015-modules-umd "^6.23.0"
+ babel-plugin-transform-es2015-object-super "^6.22.0"
+ babel-plugin-transform-es2015-parameters "^6.23.0"
+ babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.23.0"
+ 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 "^1.4.0"
+ invariant "^2.2.2"
+
babel-preset-es2015@^6.16.0, babel-preset-es2015@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835"
@@ -1228,7 +1233,7 @@ babel-preset-stage-3@^6.22.0:
babel-plugin-transform-exponentiation-operator "^6.22.0"
babel-plugin-transform-object-rest-spread "^6.22.0"
-babel-register@^6.22.0, babel-register@^6.23.0:
+babel-register@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3"
dependencies:
@@ -1240,6 +1245,18 @@ babel-register@^6.22.0, babel-register@^6.23.0:
mkdirp "^0.5.1"
source-map-support "^0.4.2"
+babel-register@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
+ dependencies:
+ babel-core "^6.24.1"
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
babel-runtime@6.11.6:
version "6.11.6"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.11.6.tgz#6db707fef2d49c49bfa3cb64efdb436b518b8222"
@@ -1247,53 +1264,53 @@ babel-runtime@6.11.6:
core-js "^2.4.0"
regenerator-runtime "^0.9.5"
-babel-runtime@6.x.x, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.5.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1, babel-runtime@^6.9.2:
+babel-runtime@6.x.x, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.23.0, babel-runtime@^6.5.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1, babel-runtime@^6.9.2:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-runtime@^6.2.0, babel-runtime@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611"
dependencies:
core-js "^2.4.0"
regenerator-runtime "^0.10.0"
-babel-template@^6.16.0, babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.3.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638"
+babel-template@^6.16.0, babel-template@^6.22.0, babel-template@^6.24.1, babel-template@^6.3.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
dependencies:
babel-runtime "^6.22.0"
- babel-traverse "^6.23.0"
- babel-types "^6.23.0"
+ babel-traverse "^6.24.1"
+ babel-types "^6.24.1"
babylon "^6.11.0"
lodash "^4.2.0"
-babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-traverse@^6.22.1, babel-traverse@^6.23.0, babel-traverse@^6.23.1:
- version "6.23.1"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48"
+babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
dependencies:
babel-code-frame "^6.22.0"
babel-messages "^6.23.0"
babel-runtime "^6.22.0"
- babel-types "^6.23.0"
+ babel-types "^6.24.1"
babylon "^6.15.0"
debug "^2.2.0"
globals "^9.0.0"
invariant "^2.2.0"
lodash "^4.2.0"
-babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.9.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
+babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.9.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
dependencies:
babel-runtime "^6.22.0"
esutils "^2.0.2"
lodash "^4.2.0"
to-fast-properties "^1.0.1"
-babelify@^7.3.0:
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5"
- dependencies:
- babel-core "^6.0.14"
- object-assign "^4.0.0"
-
babylon@^6.11.0, babylon@^6.15.0, babylon@^6.16.1:
version "6.16.1"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
@@ -1308,18 +1325,26 @@ backoff@^2.4.1:
dependencies:
precond "0.2"
+balanced-match@0.1.0, 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.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.2.1.tgz#7bc658b4bed61eee424ad74f75f5c3e2c4df3cc7"
+
balanced-match@^0.4.1, balanced-match@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
-balanced-match@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
-
base64-js@^1.0.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+batch@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464"
+
bcrypt-pbkdf@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
@@ -1338,7 +1363,7 @@ bindings@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
-bl@^1.0.0, bl@~1.1.2:
+bl@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
dependencies:
@@ -1383,22 +1408,6 @@ brorand@^1.0.1:
version "1.0.6"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5"
-browser-pack@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.1.tgz#779887c792eaa1f64a46a22c8f1051cdcd96755f"
- dependencies:
- JSONStream "^1.0.3"
- combine-source-map "~0.7.1"
- defined "^1.0.0"
- through2 "^2.0.0"
- umd "^3.0.0"
-
-browser-resolve@^1.11.0, browser-resolve@^1.7.0:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
- dependencies:
- resolve "1.1.7"
-
browser-stdout@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
@@ -1419,14 +1428,6 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
evp_bytestokey "^1.0.0"
inherits "^2.0.1"
-browserify-cache-api@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz#96247e853f068fd6e0d45cc73f0bb2cd9778ef02"
- dependencies:
- async "^1.5.2"
- through2 "^2.0.0"
- xtend "^4.0.0"
-
browserify-cipher@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
@@ -1443,15 +1444,6 @@ browserify-des@^1.0.0:
des.js "^1.0.0"
inherits "^2.0.1"
-browserify-incremental@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/browserify-incremental/-/browserify-incremental-3.1.1.tgz#0713cb7587247a632a9f08cf1bd169b878b62a8a"
- dependencies:
- JSONStream "^0.10.0"
- browserify-cache-api "^3.0.0"
- through2 "^2.0.0"
- xtend "^4.0.0"
-
browserify-rsa@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
@@ -1471,69 +1463,18 @@ browserify-sign@^4.0.0:
inherits "^2.0.1"
parse-asn1 "^5.0.0"
-browserify-zlib@^0.1.4, browserify-zlib@~0.1.2:
+browserify-zlib@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
dependencies:
pako "~0.2.0"
-browserify@^14.1.0:
- version "14.1.0"
- resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.1.0.tgz#0508cc1e7bf4c152312c2fa523e676c0b0b92311"
- dependencies:
- JSONStream "^1.0.3"
- assert "^1.4.0"
- browser-pack "^6.0.1"
- browser-resolve "^1.11.0"
- browserify-zlib "~0.1.2"
- buffer "^5.0.2"
- cached-path-relative "^1.0.0"
- concat-stream "~1.5.1"
- console-browserify "^1.1.0"
- constants-browserify "~1.0.0"
- crypto-browserify "^3.0.0"
- defined "^1.0.0"
- deps-sort "^2.0.0"
- domain-browser "~1.1.0"
- duplexer2 "~0.1.2"
- events "~1.1.0"
- glob "^7.1.0"
- has "^1.0.0"
- htmlescape "^1.1.0"
- https-browserify "~0.0.0"
- inherits "~2.0.1"
- insert-module-globals "^7.0.0"
- labeled-stream-splicer "^2.0.0"
- module-deps "^4.0.8"
- os-browserify "~0.1.1"
- parents "^1.0.1"
- path-browserify "~0.0.0"
- process "~0.11.0"
- punycode "^1.3.2"
- querystring-es3 "~0.2.0"
- read-only-stream "^2.0.0"
- readable-stream "^2.0.2"
- resolve "^1.1.4"
- shasum "^1.0.0"
- shell-quote "^1.6.1"
- stream-browserify "^2.0.0"
- stream-http "^2.0.0"
- string_decoder "~0.10.0"
- subarg "^1.0.0"
- syntax-error "^1.1.1"
- through2 "^2.0.0"
- timers-browserify "^1.0.1"
- tty-browserify "~0.0.0"
- url "~0.11.0"
- util "~0.10.1"
- vm-browserify "~0.0.1"
- xtend "^4.0.0"
-
-browserslist@^1.4.0, browserslist@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049"
+browserslist@^1.4.0, browserslist@^1.7.6:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
dependencies:
- caniuse-db "^1.0.30000539"
+ caniuse-db "^1.0.30000639"
+ electron-to-chromium "^1.2.7"
buffer-shims@^1.0.0:
version "1.0.0"
@@ -1555,13 +1496,6 @@ buffer@^4.3.0, buffer@^4.9.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
-buffer@^5.0.2:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.5.tgz#35c9393244a90aff83581063d16f0882cecc9418"
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
-
bufferutil@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-2.0.1.tgz#8de37f5a300730c305fc3edd9f93348ee8a46288"
@@ -1578,9 +1512,9 @@ builtin-status-codes@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz#6f22003baacf003ccd287afe6872151fddc58579"
-cached-path-relative@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
+bytes@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
caller-path@^0.1.0:
version "0.1.0"
@@ -1611,9 +1545,9 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000540:
- version "1.0.30000554"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000554.tgz#cd1dbe423d00b6203ba93f05973a476428dec919"
+caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+ version "1.0.30000664"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000664.tgz#e16316e5fdabb9c7209b2bf0744ffc8a14201f22"
case-sensitive-paths-webpack-plugin@^1.1.2:
version "1.1.4"
@@ -1676,7 +1610,7 @@ cheerio@^0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"
-chokidar@^1.0.0, chokidar@^1.4.3, chokidar@^1.6.1:
+chokidar@^1.0.0, chokidar@^1.4.3, chokidar@^1.6.0, chokidar@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
dependencies:
@@ -1771,6 +1705,16 @@ code-point-at@^1.0.0:
dependencies:
number-is-nan "^1.0.0"
+coffee-loader@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/coffee-loader/-/coffee-loader-0.7.3.tgz#fadbc6efd6fc7ecc88c5b3046a2c292066bcb54a"
+ dependencies:
+ loader-utils "^1.0.2"
+
+coffee-script@^1.12.5:
+ version "1.12.5"
+ resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.5.tgz#809f4585419112bbfe46a073ad7543af18c27346"
+
collapse-white-space@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d"
@@ -1809,15 +1753,6 @@ colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-combine-source-map@~0.7.1:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
- dependencies:
- convert-source-map "~1.1.0"
- inline-source-map "~0.6.0"
- lodash.memoize "~3.0.3"
- source-map "~0.5.3"
-
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"
@@ -1840,11 +1775,41 @@ commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+complex.js@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.1.tgz#ea90c7a05aeceaf3a376d2c0f6a78421727d6879"
+
+compressible@~2.0.8:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd"
+ dependencies:
+ mime-db ">= 1.27.0 < 2"
+
+compression-webpack-plugin@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-0.4.0.tgz#811de04215f811ea6a12d4d8aed8457d758f13ac"
+ dependencies:
+ async "0.2.x"
+ webpack-sources "^0.1.0"
+ optionalDependencies:
+ node-zopfli "^2.0.0"
+
+compression@^1.5.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3"
+ dependencies:
+ accepts "~1.3.3"
+ bytes "2.3.0"
+ compressible "~2.0.8"
+ debug "~2.2.0"
+ on-headers "~1.0.1"
+ vary "~1.1.0"
+
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.4.7, concat-stream@^1.5.2, concat-stream@~1.5.0, concat-stream@~1.5.1:
+concat-stream@^1.4.7, concat-stream@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
dependencies:
@@ -1866,6 +1831,10 @@ configstore@^2.0.0:
write-file-atomic "^1.1.2"
xdg-basedir "^2.0.0"
+connect-history-api-fallback@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169"
+
console-browserify@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
@@ -1876,7 +1845,7 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-constants-browserify@^1.0.0, constants-browserify@~1.0.0:
+constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
@@ -1896,10 +1865,6 @@ convert-source-map@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
-convert-source-map@~1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
-
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
@@ -1983,7 +1948,7 @@ crypto-browserify@3.3.0:
ripemd160 "0.2.0"
sha.js "2.2.6"
-crypto-browserify@^3.0.0, crypto-browserify@^3.11.0:
+crypto-browserify@^3.11.0:
version "3.11.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
dependencies:
@@ -1998,11 +1963,20 @@ crypto-browserify@^3.0.0, crypto-browserify@^3.11.0:
public-encrypt "^4.0.0"
randombytes "^2.0.0"
+css-color-function@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/css-color-function/-/css-color-function-1.3.0.tgz#72c767baf978f01b8a8a94f42f17ba5d22a776fc"
+ dependencies:
+ balanced-match "0.1.0"
+ color "^0.11.0"
+ debug "~0.7.4"
+ 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"
-css-loader@^0.26.1, css-loader@^0.26.2:
+css-loader@^0.26.1:
version "0.26.2"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d"
dependencies:
@@ -2019,6 +1993,23 @@ css-loader@^0.26.1, css-loader@^0.26.2:
postcss-modules-values "^1.1.0"
source-list-map "^0.1.7"
+css-loader@^0.28.0:
+ version "0.28.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.0.tgz#417cfa9789f8cde59a30ccbf3e4da7a806889bad"
+ dependencies:
+ babel-code-frame "^6.11.0"
+ css-selector-tokenizer "^0.7.0"
+ cssnano ">=2.6.1 <4"
+ loader-utils "^1.0.2"
+ lodash.camelcase "^4.3.0"
+ object-assign "^4.0.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"
+ source-list-map "^0.1.7"
+
css-select@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
@@ -2138,10 +2129,18 @@ debug@2.2.0, debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
dependencies:
ms "0.7.1"
+debug@~0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
+
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.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-7.1.1.tgz#1adcad7d70d7a91c426d756f1eb6566c3be6cbcf"
+
deep-eql@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
@@ -2160,6 +2159,12 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+defaults@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ dependencies:
+ clone "^1.0.2"
+
define-properties@^1.1.1, define-properties@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
@@ -2195,15 +2200,6 @@ depd@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
-deps-sort@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
- dependencies:
- JSONStream "^1.0.3"
- shasum "^1.0.0"
- subarg "^1.0.0"
- through2 "^2.0.0"
-
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -2221,13 +2217,6 @@ detect-indent@^4.0.0:
dependencies:
repeating "^2.0.0"
-detective@^4.0.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.1.tgz#9fb06dd1ee8f0ea4dbcc607cda39d9ce1d4f726f"
- dependencies:
- acorn "^1.0.3"
- defined "^1.0.0"
-
diff@1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
@@ -2265,7 +2254,7 @@ dom-serializer@0, dom-serializer@~0.1.0:
domelementtype "~1.1.1"
entities "~1.1.1"
-domain-browser@^1.1.1, domain-browser@~1.1.0:
+domain-browser@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
@@ -2304,12 +2293,6 @@ double-ended-queue@^2.1.0-0:
version "2.1.0-0"
resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
-duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
- dependencies:
- readable-stream "^2.0.2"
-
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -2324,6 +2307,10 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+electron-to-chromium@^1.2.7:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.8.tgz#b2c8a2c79bb89fbbfd3724d9555e15095b5f5fb6"
+
element-class@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e"
@@ -2604,7 +2591,7 @@ esprima@^2.6.0, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-esprima@~3.1.0:
+esprima@^3.1.1, esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -2648,10 +2635,20 @@ event-emitter@~0.3.5:
d "1"
es5-ext "~0.10.14"
-events@^1.0.0, events@^1.1.1, events@~1.1.0:
+eventemitter3@1.x.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+
+events@^1.0.0, events@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+eventsource@0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+ dependencies:
+ original ">=0.0.5"
+
eventsource@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.2.1.tgz#662bf85f376e73b5c34c2ee17db566b8419a6232"
@@ -2729,6 +2726,15 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
+extract-text-webpack-plugin@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159"
+ dependencies:
+ ajv "^4.11.2"
+ async "^2.1.2"
+ loader-utils "^1.0.2"
+ webpack-sources "^0.1.0"
+
extsprintf@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
@@ -2741,6 +2747,18 @@ fastparse@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+faye-websocket@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+faye-websocket@~0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
fbjs@^0.8.4, fbjs@^0.8.9:
version "0.8.12"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
@@ -2767,6 +2785,12 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
+file-loader@^0.11.1:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.1.tgz#6b328ee1234a729e4e47d36375dd6d35c0e1db84"
+ dependencies:
+ loader-utils "^1.0.2"
+
file-loader@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42"
@@ -2831,6 +2855,10 @@ follow-redirects@1.0.0:
dependencies:
debug "^2.2.0"
+font-awesome@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+
for-in@^0.1.3, for-in@^0.1.5:
version "0.1.6"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
@@ -2849,14 +2877,6 @@ forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-form-data@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.11"
-
form-data@~2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
@@ -2875,10 +2895,39 @@ forwarded@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
+fraction.js@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.0.tgz#73974e2f8b51ef709536d624cc90782e2bb61274"
+
fresh@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f"
+fs-extra@^0.24.0:
+ version "0.24.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs-extra@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs-promise@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-0.3.1.tgz#bf34050368f24d6dc9dfc6688ab5cead8f86842a"
+ dependencies:
+ any-promise "~0.1.0"
+
fs-readdir-recursive@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
@@ -2996,7 +3045,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
-glob@7.0.5, glob@^7.0.0:
+glob@7.0.5:
version "7.0.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95"
dependencies:
@@ -3007,7 +3056,17 @@ glob@7.0.5, glob@^7.0.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@~7.1.1:
+glob@^5.0.3:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
@@ -3022,6 +3081,17 @@ globals@^9.0.0, globals@^9.14.0:
version "9.14.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+globby@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-3.0.1.tgz#2094af8421e19152150d5893eb6416b312d9a22f"
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^5.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^1.0.0"
+
globby@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
@@ -3041,7 +3111,13 @@ globule@^1.0.0:
lodash "~4.16.4"
minimatch "~3.0.2"
-graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+gonzales-pe@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.0.3.tgz#36148e18e267184fbfdc929af28f29ad9fbf9746"
+ dependencies:
+ minimist "1.1.x"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
version "4.1.9"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29"
@@ -3053,6 +3129,10 @@ growl@1.9.2:
version "1.9.2"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
+handle-thing@^1.2.4:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+
har-validator@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
@@ -3076,7 +3156,7 @@ 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.0, has@^1.0.1:
+has@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
dependencies:
@@ -3125,6 +3205,15 @@ hosted-git-info@^2.1.4:
version "2.1.5"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
html-comment-regex@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
@@ -3145,10 +3234,6 @@ html@^1.0.0:
dependencies:
concat-stream "^1.4.7"
-htmlescape@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
-
htmlparser2@^3.9.1:
version "3.9.2"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
@@ -3160,7 +3245,11 @@ htmlparser2@^3.9.1:
inherits "^2.0.1"
readable-stream "^2.0.2"
-http-errors@~1.5.1:
+http-deceiver@^1.2.4:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+
+http-errors@~1.5.0, http-errors@~1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750"
dependencies:
@@ -3172,6 +3261,22 @@ 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-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"
+ dependencies:
+ http-proxy "^1.16.2"
+ is-glob "^3.1.0"
+ lodash "^4.17.2"
+ micromatch "^2.3.11"
+
+http-proxy@^1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+ dependencies:
+ eventemitter3 "1.x.x"
+ requires-port "1.x.x"
+
http-signature@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
@@ -3180,7 +3285,7 @@ http-signature@~1.1.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-https-browserify@0.0.1, https-browserify@~0.0.0:
+https-browserify@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
@@ -3245,12 +3350,6 @@ ini@~1.3.0:
version "1.3.4"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
-inline-source-map@~0.6.0:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
- dependencies:
- source-map "~0.5.3"
-
inquirer@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
@@ -3269,19 +3368,6 @@ inquirer@^0.12.0:
strip-ansi "^3.0.0"
through "^2.3.6"
-insert-module-globals@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
- dependencies:
- JSONStream "^1.0.3"
- combine-source-map "~0.7.1"
- concat-stream "~1.5.1"
- is-buffer "^1.1.0"
- lexical-scope "^1.2.0"
- process "~0.11.0"
- through2 "^2.0.0"
- xtend "^4.0.0"
-
interpret@^0.6.4:
version "0.6.6"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
@@ -3298,7 +3384,7 @@ intl-format-cache@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.0.5.tgz#b484cefcb9353f374f25de389a3ceea1af18d7c9"
-intl-messageformat-parser@1.2.0:
+intl-messageformat-parser@1.2.0, intl-messageformat-parser@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz#5906b7f953ab7470e0dc8549097b648b991892ff"
@@ -3314,7 +3400,7 @@ intl-relativeformat@^1.3.0:
dependencies:
intl-messageformat "1.3.0"
-invariant@2.x.x, invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1:
+invariant@2.x.x, 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"
dependencies:
@@ -3342,7 +3428,7 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
-is-buffer@^1.0.2, is-buffer@^1.1.0:
+is-buffer@^1.0.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
@@ -3382,6 +3468,10 @@ 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:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+
is-finite@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
@@ -3404,6 +3494,12 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
version "2.15.0"
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
@@ -3505,10 +3601,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-isarray@~0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
-
isexe@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
@@ -3540,6 +3632,16 @@ jodid25519@^1.0.0:
dependencies:
jsbn "~0.1.0"
+jquery-ujs@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/jquery-ujs/-/jquery-ujs-1.2.2.tgz#6a8ef1020e6b6dda385b90a4bddc128c21c56397"
+ dependencies:
+ jquery ">=1.8.0"
+
+jquery@>=1.8.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787"
+
js-base64@^2.1.9:
version "2.1.9"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
@@ -3548,15 +3650,18 @@ js-tokens@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.3.tgz#14e56eb68c8f1a92c43d59f5014ec29dc20f2ae1"
-js-tokens@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
-
js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
-js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@~3.6.1:
+js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.8.3:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^3.1.1"
+
+js-yaml@~3.6.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
dependencies:
@@ -3613,17 +3718,11 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
dependencies:
jsonify "~0.0.0"
-json-stable-stringify@~0.0.0:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
- dependencies:
- jsonify "~0.0.0"
-
json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-json3@3.3.2:
+json3@3.3.2, json3@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
@@ -3631,18 +3730,20 @@ json5@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2"
+json5@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-jsonparse@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64"
-
-jsonparse@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd"
-
jsonpointer@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5"
@@ -3677,13 +3778,11 @@ kind-of@^3.0.2:
dependencies:
is-buffer "^1.0.2"
-labeled-stream-splicer@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
- dependencies:
- inherits "^2.0.1"
- isarray "~0.0.1"
- stream-splicer "^2.0.0"
+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"
@@ -3706,12 +3805,6 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-lexical-scope@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
- dependencies:
- astw "^2.0.0"
-
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -3735,7 +3828,15 @@ loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.1, loader-utils@^1.0.2:
+loader-utils@^1.0.1, loader-utils@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+
+loader-utils@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830"
dependencies:
@@ -3818,7 +3919,7 @@ lodash.create@3.1.1:
lodash._basecreate "^3.0.0"
lodash._isiterateecall "^3.0.0"
-lodash.defaults@^4.0.1:
+lodash.defaults@^4.0.1, lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -3858,10 +3959,6 @@ lodash.map@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
-lodash.memoize@~3.0.3:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
-
lodash.merge@^4.4.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
@@ -3898,7 +3995,7 @@ lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
-lodash@4.x.x, lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0:
+lodash@4.x.x, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -3914,18 +4011,18 @@ 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.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
- dependencies:
- js-tokens "^3.0.0"
-
-loose-envify@^1.1.0, loose-envify@^1.2.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.2.0.tgz#69a65aad3de542cf4ee0f4fe74e8e33c709ccb0f"
dependencies:
js-tokens "^1.0.1"
+loose-envify@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ dependencies:
+ js-tokens "^3.0.0"
+
loud-rejection@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
@@ -3962,6 +4059,17 @@ math-expression-evaluator@^1.2.14:
dependencies:
lodash.indexof "^4.0.5"
+mathjs@^3.11.5:
+ version "3.12.1"
+ resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.12.1.tgz#a165abdbc6b55da1ec600b85311e2962850551b5"
+ dependencies:
+ complex.js "2.0.1"
+ decimal.js "7.1.1"
+ fraction.js "4.0.0"
+ seed-random "2.2.0"
+ tiny-emitter "1.0.2"
+ typed-function "0.10.5"
+
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -4007,7 +4115,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.1.5, micromatch@^2.3.11:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
@@ -4032,11 +4140,15 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
+"mime-db@>= 1.27.0 < 2":
+ version "1.27.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
+
mime-db@~1.26.0:
version "1.26.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
-mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:
+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:
version "2.1.14"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
dependencies:
@@ -4054,7 +4166,7 @@ minimalistic-assert@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
-minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@~3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
dependencies:
@@ -4064,7 +4176,11 @@ minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
+minimist@1.1.x:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8"
+
+minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -4075,7 +4191,7 @@ mixin-object@^2.0.1:
for-in "^0.1.3"
is-extendable "^0.1.1"
-mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
@@ -4101,26 +4217,6 @@ mocha@^3.2.0:
mkdirp "0.5.1"
supports-color "3.1.2"
-module-deps@^4.0.8:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd"
- dependencies:
- JSONStream "^1.0.3"
- browser-resolve "^1.7.0"
- cached-path-relative "^1.0.0"
- concat-stream "~1.5.0"
- defined "^1.0.0"
- detective "^4.0.0"
- duplexer2 "^0.1.2"
- inherits "^2.0.1"
- parents "^1.0.0"
- readable-stream "^2.0.2"
- resolve "^1.1.3"
- stream-combiner2 "^1.1.1"
- subarg "^1.0.0"
- through2 "^2.0.0"
- xtend "^4.0.0"
-
ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
@@ -4133,7 +4229,7 @@ mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
-nan@^2.3.0, nan@^2.3.2, nan@~2.5.0:
+nan@^2.0.0, nan@^2.3.0, nan@^2.3.2, nan@~2.5.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
@@ -4236,7 +4332,7 @@ node-libs-browser@^2.0.0:
util "^0.10.3"
vm-browserify "0.0.4"
-node-pre-gyp@^0.6.29:
+node-pre-gyp@^0.6.29, node-pre-gyp@^0.6.4:
version "0.6.30"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.30.tgz#64d3073a6f573003717ccfe30c89023297babba1"
dependencies:
@@ -4273,9 +4369,14 @@ node-sass@^4.5.2:
sass-graph "^2.1.1"
stdout-stream "^1.4.0"
-node-uuid@~1.4.7:
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
+node-zopfli@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-zopfli/-/node-zopfli-2.0.2.tgz#a7a473ae92aaea85d4c68d45bbf2c944c46116b8"
+ dependencies:
+ commander "^2.8.1"
+ defaults "^1.0.2"
+ nan "^2.0.0"
+ node-pre-gyp "^0.6.4"
noop-logger@^0.1.1:
version "0.1.1"
@@ -4344,7 +4445,7 @@ oauth-sign@~0.8.1:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-object-assign@4.1.0, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0:
+object-assign@4.1.0, object-assign@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
@@ -4352,7 +4453,7 @@ object-assign@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
-object-assign@^4.1.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"
@@ -4404,12 +4505,20 @@ object.values@^1.0.3:
function-bind "^1.0.2"
has "^1.0.1"
+obuf@^1.0.0, obuf@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
dependencies:
ee-first "1.1.1"
+on-headers@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
+
once@^1.3.0, once@^1.3.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -4426,6 +4535,13 @@ onetime@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+opn@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95"
+ dependencies:
+ object-assign "^4.0.1"
+ pinkie-promise "^2.0.0"
+
optimist@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
@@ -4444,7 +4560,7 @@ optionator@^0.8.1, optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
-original@^1.0.0:
+original@>=0.0.5, original@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
dependencies:
@@ -4454,10 +4570,6 @@ os-browserify@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
-os-browserify@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
-
os-homedir@^1.0.0, os-homedir@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -4492,14 +4604,8 @@ packet-reader@0.2.0:
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.2.0.tgz#819df4d010b82d5ea5671f8a1a3acf039bcd7700"
pako@~0.2.0:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-
-parents@^1.0.0, parents@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
- dependencies:
- path-platform "~0.11.15"
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
parse-asn1@^5.0.0:
version "5.0.0"
@@ -4534,10 +4640,14 @@ parseurl@~1.3.0, parseurl@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
-path-browserify@0.0.0, path-browserify@~0.0.0:
+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-exists@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
@@ -4552,9 +4662,9 @@ path-is-inside@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-path-platform@~0.11.15:
- version "0.11.15"
- resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+path-parse@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
path-to-regexp@0.1.7:
version "0.1.7"
@@ -4625,12 +4735,22 @@ pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+pinkie-promise@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670"
+ dependencies:
+ pinkie "^1.0.0"
+
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
dependencies:
pinkie "^2.0.0"
+pinkie@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4"
+
pinkie@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
@@ -4652,6 +4772,26 @@ podda@^1.2.1:
babel-runtime "^6.11.6"
immutable "^3.8.1"
+portfinder@^1.0.9:
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
+ dependencies:
+ async "^1.5.2"
+ 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"
+ dependencies:
+ postcss "^5.0.10"
+
+postcss-atroot@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/postcss-atroot/-/postcss-atroot-0.1.3.tgz#6752c0230c745140549345b2b0e30ebeda01a405"
+ dependencies:
+ postcss "^5.0.5"
+
postcss-calc@^5.2.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
@@ -4660,6 +4800,15 @@ postcss-calc@^5.2.0:
postcss-message-helpers "^2.0.0"
reduce-css-calc "^1.2.6"
+postcss-color-function@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-color-function/-/postcss-color-function-2.0.1.tgz#9ad226f550e8a7c7f8b8a77860545b6dd7f55241"
+ dependencies:
+ css-color-function "^1.2.0"
+ postcss "^5.0.4"
+ postcss-message-helpers "^2.0.0"
+ postcss-value-parser "^3.3.0"
+
postcss-colormin@^2.1.8:
version "2.2.1"
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.1.tgz#dc5421b6ae6f779ef6bfd47352b94abe59d0316b"
@@ -4675,6 +4824,27 @@ postcss-convert-values@^2.3.4:
postcss "^5.0.11"
postcss-value-parser "^3.1.2"
+postcss-custom-media@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-5.0.1.tgz#138d25a184bf2eb54de12d55a6c01c30a9d8bd81"
+ dependencies:
+ postcss "^5.0.0"
+
+postcss-custom-properties@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-5.0.2.tgz#9719d78f2da9cf9f53810aebc23d4656130aceb1"
+ dependencies:
+ balanced-match "^0.4.2"
+ postcss "^5.0.0"
+
+postcss-custom-selectors@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-3.0.0.tgz#8f81249f5ed07a8d0917cf6a39fe5b056b7f96ac"
+ dependencies:
+ balanced-match "^0.2.0"
+ postcss "^5.0.0"
+ postcss-selector-matches "^2.0.0"
+
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"
@@ -4707,6 +4877,12 @@ postcss-discard-unused@^2.2.1:
postcss "^5.0.14"
uniqs "^2.0.0"
+postcss-extend@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7"
+ dependencies:
+ postcss "^5.0.4"
+
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"
@@ -4714,7 +4890,7 @@ postcss-filter-plugins@^2.0.0:
postcss "^5.0.4"
uniqid "^4.0.0"
-postcss-load-config@^1.0.0:
+postcss-load-config@^1.0.0, 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"
dependencies:
@@ -4746,6 +4922,21 @@ postcss-loader@1.1.0:
postcss "^5.2.5"
postcss-load-config "^1.0.0"
+postcss-loader@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-1.3.3.tgz#a621ea1fa29062a83972a46f54486771301916eb"
+ dependencies:
+ loader-utils "^1.0.2"
+ object-assign "^4.1.1"
+ postcss "^5.2.15"
+ postcss-load-config "^1.2.0"
+
+postcss-media-minmax@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-2.1.2.tgz#444c5cf8926ab5e4fd8a2509e9297e751649cdf8"
+ dependencies:
+ postcss "^5.0.4"
+
postcss-merge-idents@^2.1.5:
version "2.1.7"
resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
@@ -4803,6 +4994,14 @@ postcss-minify-selectors@^2.0.4:
postcss "^5.0.14"
postcss-selector-parser "^2.0.0"
+postcss-mixins@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-2.1.1.tgz#b141a0803efa8e2d744867f8d91596890cf9241b"
+ dependencies:
+ globby "^3.0.1"
+ postcss "^5.0.10"
+ postcss-simple-vars "^1.0.1"
+
postcss-modules-extract-imports@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341"
@@ -4830,6 +5029,18 @@ postcss-modules-values@^1.1.0:
icss-replace-symbols "^1.0.2"
postcss "^5.0.14"
+postcss-nested@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-1.0.1.tgz#91f28f4e6e23d567241ac154558a0cfab4cc0d8f"
+ dependencies:
+ postcss "^5.2.17"
+
+postcss-nesting@^2.0.6:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-2.3.1.tgz#94a6b6a4ef707fbec20a87fee5c957759b4e01cf"
+ dependencies:
+ postcss "^5.0.19"
+
postcss-normalize-charset@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.0.tgz#2fbd30e12248c442981d31ea2484d46fd0628970"
@@ -4852,6 +5063,24 @@ postcss-ordered-values@^2.1.0:
postcss "^5.0.4"
postcss-value-parser "^3.0.1"
+postcss-partial-import@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-partial-import/-/postcss-partial-import-1.3.0.tgz#2f4b773a76c7b0a69b389dcf475c4d362d0d2576"
+ dependencies:
+ fs-extra "^0.24.0"
+ fs-promise "^0.3.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.5"
+ string-hash "^1.1.0"
+
+postcss-property-lookup@^1.1.3:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-1.2.1.tgz#30450a1361b7aae758bbedd5201fbe057bb8270b"
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ tcomb "^2.5.1"
+
postcss-reduce-idents@^2.2.2:
version "2.3.0"
resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.3.0.tgz#a697b52953ed6825ffea404e26a4f105d8b8d569"
@@ -4872,6 +5101,34 @@ 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"
+ dependencies:
+ gonzales-pe "^4.0.3"
+ mathjs "^3.11.5"
+ postcss "^5.2.6"
+
+postcss-scss@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.1.tgz#ad771b81f0f72f5f4845d08aa60f93557653d54c"
+ dependencies:
+ postcss "^5.2.13"
+
+postcss-selector-matches@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-2.0.5.tgz#fa0f43be57b68e77aa4cd11807023492a131027f"
+ dependencies:
+ balanced-match "^0.4.2"
+ postcss "^5.0.0"
+
+postcss-selector-not@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-2.0.0.tgz#c73ad21a3f75234bee7fee269e154fd6a869798d"
+ dependencies:
+ balanced-match "^0.2.0"
+ postcss "^5.0.0"
+
postcss-selector-parser@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.1.tgz#fdbf696103b12b0a64060e5610507f410491f7c8"
@@ -4880,6 +5137,28 @@ postcss-selector-parser@^2.0.0:
indexes-of "^1.0.1"
uniq "^1.0.1"
+postcss-simple-vars@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-1.2.0.tgz#2e6689921144b74114e765353275a3c32143f150"
+ dependencies:
+ postcss "^5.0.13"
+
+postcss-smart-import@^0.6.12:
+ version "0.6.12"
+ resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.6.12.tgz#6bd50846547383d15332206615265b87b4a6ae89"
+ dependencies:
+ babel-runtime "^6.23.0"
+ lodash "^4.17.4"
+ object-assign "^4.1.1"
+ postcss "^5.2.17"
+ postcss-sass "^0.1.0"
+ postcss-scss "^0.4.1"
+ postcss-value-parser "^3.3.0"
+ promise-each "^2.2.0"
+ read-cache "^1.0.0"
+ resolve "^1.3.3"
+ sugarss "^0.2.0"
+
postcss-svgo@^2.1.1:
version "2.1.5"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.5.tgz#46fc0363f01bab6a36a9abb01c229fcc45363094"
@@ -4897,7 +5176,7 @@ postcss-unique-selectors@^2.0.2:
postcss "^5.0.4"
uniqs "^2.0.0"
-postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.1.3, postcss-value-parser@^3.2.3:
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.1.3, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
@@ -4908,24 +5187,15 @@ 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.8, postcss@^5.2.5:
- version "5.2.15"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30"
+postcss@^5.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.19, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.13, postcss@^5.2.15, postcss@^5.2.16, postcss@^5.2.17, postcss@^5.2.4, postcss@^5.2.5, postcss@^5.2.6:
+ version "5.2.17"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
dependencies:
chalk "^1.1.3"
js-base64 "^2.1.9"
source-map "^0.5.6"
supports-color "^3.2.3"
-postcss@^5.0.6, postcss@^5.2.2:
- version "5.2.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.4.tgz#8eb4bee3e5c4e091585b116df32d8db24a535f21"
- dependencies:
- chalk "^1.1.3"
- js-base64 "^2.1.9"
- source-map "^0.5.6"
- supports-color "^3.1.2"
-
postgres-array@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238"
@@ -4966,6 +5236,27 @@ precond@0.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac"
+precss@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/precss/-/precss-1.4.0.tgz#8d7c3ae70f10a00a3955287f85a66e0f8b31cda3"
+ dependencies:
+ postcss "^5.0.10"
+ postcss-advanced-variables "1.2.2"
+ postcss-atroot "^0.1.2"
+ postcss-color-function "^2.0.0"
+ postcss-custom-media "^5.0.0"
+ postcss-custom-properties "^5.0.0"
+ postcss-custom-selectors "^3.0.0"
+ postcss-extend "^1.0.1"
+ postcss-media-minmax "^2.1.0"
+ postcss-mixins "^2.1.0"
+ postcss-nested "^1.0.0"
+ postcss-nesting "^2.0.6"
+ postcss-partial-import "^1.3.0"
+ postcss-property-lookup "^1.1.3"
+ postcss-selector-matches "^2.0.0"
+ postcss-selector-not "^2.0.0"
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -4986,7 +5277,7 @@ 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@^0.11.0, process@~0.11.0:
+process@^0.11.0:
version "0.11.9"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
@@ -4994,6 +5285,12 @@ progress@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+promise-each@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60"
+ dependencies:
+ any-promise "^0.1.0"
+
promise@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
@@ -5042,7 +5339,7 @@ punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
+punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -5050,11 +5347,11 @@ q@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
-qs@6.2.0, qs@^6.1.0, qs@^6.2.0, qs@~6.2.0:
+qs@6.2.0, qs@^6.1.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
-qs@~6.3.0:
+qs@^6.2.0, qs@~6.3.0:
version "6.3.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d"
@@ -5071,7 +5368,7 @@ query-string@^4.1.0:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
-querystring-es3@^0.2.0, querystring-es3@~0.2.0:
+querystring-es3@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -5089,6 +5386,13 @@ raf@^3.1.0:
dependencies:
performance-now "~0.2.0"
+rails-erb-loader@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/rails-erb-loader/-/rails-erb-loader-5.0.0.tgz#33fcfbae3fd4584801283c4d5bc1195ae7b56723"
+ dependencies:
+ loader-utils "^1.1.0"
+ lodash.defaults "^4.2.0"
+
randomatic@^1.1.3:
version "1.1.5"
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b"
@@ -5172,7 +5476,7 @@ react-docgen@^2.12.1:
node-dir "^0.1.10"
recast "^0.11.5"
-react-dom@^15.5.4:
+react-dom@^15.4.2, react-dom@^15.5.4:
version "15.5.4"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da"
dependencies:
@@ -5208,12 +5512,29 @@ react-immutable-proptypes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4"
+react-immutable-pure-component@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-0.0.4.tgz#a7c438167e5b82b5231e4ec9246827ebe3257629"
+ dependencies:
+ immutable "^3.8.1"
+ react "^15.4.2"
+ react-dom "^15.4.2"
+
react-inspector@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-1.1.0.tgz#8d55bb94ffc9fd3982a222eb257dbe9cdd4f1b87"
dependencies:
is-dom "^1.0.5"
+react-intl-translations-manager@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.0.tgz#3c78d3e3e44c5804d7a15c60e89c3aefd9d06615"
+ dependencies:
+ chalk "^1.1.3"
+ glob "^7.0.3"
+ json-stable-stringify "^1.0.1"
+ mkdirp "^0.5.1"
+
react-intl@^2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.1.5.tgz#f9795ea34b790dcb5d0d8ef7060dddbe85bf8763"
@@ -5364,7 +5685,7 @@ react-virtualized@^8.11.4:
dom-helpers "^2.4.0 || ^3.0.0"
loose-envify "^1.3.0"
-react@^15.5.4:
+react@^15.4.2, react@^15.5.4:
version "15.5.4"
resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047"
dependencies:
@@ -5373,11 +5694,11 @@ react@^15.5.4:
object-assign "^4.1.0"
prop-types "^15.5.7"
-read-only-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
dependencies:
- readable-stream "^2.0.2"
+ pify "^2.3.0"
read-pkg-up@^1.0.1:
version "1.0.1"
@@ -5572,7 +5893,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request@2, request@2.x, request@^2.79.0:
+request@2, request@2.x, request@^2.74.0, request@^2.79.0:
version "2.79.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
dependencies:
@@ -5597,32 +5918,6 @@ request@2, request@2.x, request@^2.79.0:
tunnel-agent "~0.4.1"
uuid "^3.0.0"
-request@^2.74.0:
- version "2.75.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- bl "~1.1.2"
- caseless "~0.11.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.0.0"
- har-validator "~2.0.6"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- node-uuid "~1.4.7"
- oauth-sign "~0.8.1"
- qs "~6.2.0"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "~0.4.1"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -5642,7 +5937,7 @@ require-uncached@^1.0.2:
caller-path "^0.1.0"
resolve-from "^1.0.0"
-requires-port@1.0.x:
+requires-port@1.0.x, requires-port@1.x.x:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
@@ -5654,9 +5949,11 @@ resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
-resolve@1.1.7, resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+resolve@^1.1.6, resolve@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
+ dependencies:
+ path-parse "^1.0.5"
restore-cursor@^1.0.1:
version "1.0.1"
@@ -5665,6 +5962,10 @@ restore-cursor@^1.0.1:
exit-hook "^1.0.0"
onetime "^1.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"
@@ -5707,9 +6008,9 @@ sass-graph@^2.1.1:
lodash "^4.0.0"
yargs "^4.7.1"
-sass-loader@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.2.tgz#96343a9f5c585780149321c7bda9e1da633d2c73"
+sass-loader@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.3.tgz#33983b1f90d27ddab0e57d0dac403dce9bc7ecfd"
dependencies:
async "^2.1.5"
clone-deep "^0.2.4"
@@ -5732,6 +6033,14 @@ section-iterator@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/section-iterator/-/section-iterator-2.0.0.tgz#bf444d7afeeb94ad43c39ad2fb26151627ccba2a"
+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"
+
"semver@2 || 3 || 4 || 5", semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
@@ -5767,6 +6076,18 @@ serve-favicon@^2.3.0:
ms "0.7.1"
parseurl "~1.3.0"
+serve-index@^1.7.2:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b"
+ dependencies:
+ accepts "~1.3.3"
+ batch "0.5.3"
+ debug "~2.2.0"
+ escape-html "~1.0.3"
+ http-errors "~1.5.0"
+ mime-types "~2.1.11"
+ parseurl "~1.3.1"
+
serve-static@~1.11.2:
version "1.11.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
@@ -5796,7 +6117,7 @@ sha.js@2.2.6:
version "2.2.6"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
-sha.js@^2.3.6, sha.js@~2.4.4:
+sha.js@^2.3.6:
version "2.4.5"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.5.tgz#27d171efcc82a118b99639ff581660242b506e7c"
dependencies:
@@ -5821,22 +6142,6 @@ shallowequal@0.2.x, shallowequal@^0.2.2:
dependencies:
lodash.keys "^3.1.2"
-shasum@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
- dependencies:
- json-stable-stringify "~0.0.0"
- sha.js "~2.4.4"
-
-shell-quote@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
- dependencies:
- array-filter "~0.0.0"
- array-map "~0.0.0"
- array-reduce "~0.0.0"
- jsonify "~0.0.0"
-
shelljs@^0.7.4:
version "0.7.4"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.4.tgz#b8f04b3a74ddfafea22acf98e0be45ded53d59c8"
@@ -5892,6 +6197,24 @@ sntp@1.x.x:
dependencies:
hoek "2.x.x"
+sockjs-client@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5"
+ dependencies:
+ debug "^2.2.0"
+ eventsource "0.1.6"
+ faye-websocket "~0.11.0"
+ inherits "^2.0.1"
+ json3 "^3.3.2"
+ url-parse "^1.1.1"
+
+sockjs@0.3.18:
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
+ dependencies:
+ faye-websocket "^0.10.0"
+ uuid "^2.0.2"
+
sort-keys@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
@@ -5908,6 +6231,10 @@ source-list-map@^0.1.7, source-list-map@~0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e"
+source-list-map@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4"
+
source-map-support@^0.4.2:
version "0.4.3"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.3.tgz#693c8383d4389a4569486987c219744dfc601685"
@@ -5944,6 +6271,26 @@ 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"
+spdy-transport@^2.0.15:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6"
+ dependencies:
+ debug "^2.2.0"
+ hpack.js "^2.1.6"
+ obuf "^1.1.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.4.0"
+
+spdy@^3.4.1:
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819"
+ dependencies:
+ debug "^2.2.0"
+ handle-thing "^1.2.4"
+ http-deceiver "^1.2.4"
+ select-hose "^2.0.0"
+ spdy-transport "^2.0.15"
+
split@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae"
@@ -5983,21 +6330,14 @@ store@^1.3.20:
version "1.3.20"
resolved "https://registry.yarnpkg.com/store/-/store-1.3.20.tgz#13ea7e3fb2d6c239868265d686b1d84e99c5be3e"
-stream-browserify@^2.0.0, stream-browserify@^2.0.1:
+stream-browserify@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
dependencies:
inherits "~2.0.1"
readable-stream "^2.0.2"
-stream-combiner2@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
- dependencies:
- duplexer2 "~0.1.0"
- readable-stream "^2.0.2"
-
-stream-http@^2.0.0, stream-http@^2.3.1:
+stream-http@^2.3.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.4.0.tgz#9599aa8e263667ce4190e0dc04a1d065d3595a7e"
dependencies:
@@ -6007,17 +6347,14 @@ stream-http@^2.0.0, stream-http@^2.3.1:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
-stream-splicer@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.2"
-
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"
+string-hash@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -6049,7 +6386,7 @@ string.prototype.padstart@^3.0.0:
es-abstract "^1.4.3"
function-bind "^1.0.2"
-string_decoder@^0.10.25, string_decoder@~0.10.0, string_decoder@~0.10.x:
+string_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
@@ -6104,19 +6441,19 @@ style-loader@0.13.1:
dependencies:
loader-utils "^0.2.7"
-style-loader@^0.13.2:
- version "0.13.2"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb"
+style-loader@^0.16.1:
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.16.1.tgz#50e325258d4e78421dd9680636b41e8661595d10"
dependencies:
loader-utils "^1.0.2"
-subarg@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+sugarss@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e"
dependencies:
- minimist "^1.1.0"
+ postcss "^5.2.4"
-supports-color@3.1.2, supports-color@^3.1.0, supports-color@^3.1.2:
+supports-color@3.1.2, supports-color@^3.1.0, supports-color@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
dependencies:
@@ -6156,12 +6493,6 @@ symbol-tree@^3.2.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
-syntax-error@^1.1.1:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz#b4549706d386cc1c1dc7c2423f18579b6cade710"
- dependencies:
- acorn "^2.7.0"
-
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -6220,33 +6551,28 @@ tar@^2.0.0, tar@~2.2.0, tar@~2.2.1:
fstream "^1.0.2"
inherits "2"
+tcomb@^2.5.1:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0"
+
text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-through2@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9"
- dependencies:
- readable-stream "~2.0.0"
- xtend "~4.0.0"
-
-through@2, "through@>=2.2.7 <3", through@^2.3.6:
+through@2, through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-timers-browserify@^1.0.1:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
- dependencies:
- process "~0.11.0"
-
timers-browserify@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
dependencies:
setimmediate "^1.0.4"
+tiny-emitter@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.0.2.tgz#8e49470d3f55f89e247210368a6bb9fb51aa1601"
+
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@@ -6281,7 +6607,7 @@ tryit@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
-tty-browserify@0.0.0, tty-browserify@~0.0.0:
+tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -6314,6 +6640,10 @@ type-is@~1.6.14:
media-typer "0.3.0"
mime-types "~2.1.13"
+typed-function@0.10.5:
+ version "0.10.5"
+ resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-0.10.5.tgz#2e0f18abd065219fab694a446a65c6d1981832c0"
+
typedarray@~0.0.5:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -6322,7 +6652,16 @@ ua-parser-js@^0.7.9:
version "0.7.10"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.10.tgz#917559ddcce07cbc09ece7d80495e4c268f4ef9f"
-uglify-js@^2.7.5, uglify-js@~2.7.3:
+uglify-js@^2.8.5:
+ version "2.8.22"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
+ dependencies:
+ source-map "~0.5.1"
+ yargs "~3.10.0"
+ optionalDependencies:
+ uglify-to-browserify "~1.0.0"
+
+uglify-js@~2.7.3:
version "2.7.5"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
dependencies:
@@ -6343,10 +6682,6 @@ ultron@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
-umd@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e"
-
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -6383,7 +6718,14 @@ url-parse@1.0.x:
querystringify "0.0.x"
requires-port "1.0.x"
-url@^0.11.0, url@~0.11.0:
+url-parse@^1.1.1:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156"
+ dependencies:
+ querystringify "0.0.x"
+ requires-port "1.0.x"
+
+url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
dependencies:
@@ -6412,7 +6754,7 @@ 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 <1", util@^0.10.3, util@~0.10.1:
+util@0.10.3, "util@>=0.10.3 <1", util@^0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
@@ -6422,7 +6764,7 @@ utils-merge@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
-uuid@^2.0.1, uuid@^2.0.3:
+uuid@^2.0.1, uuid@^2.0.2, uuid@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
@@ -6457,7 +6799,7 @@ verror@1.3.6:
dependencies:
extsprintf "1.0.2"
-vm-browserify@0.0.4, vm-browserify@~0.0.1:
+vm-browserify@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
dependencies:
@@ -6483,7 +6825,7 @@ watchpack@^0.2.1:
chokidar "^1.0.0"
graceful-fs "^4.1.2"
-watchpack@^1.2.0:
+watchpack@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
dependencies:
@@ -6491,6 +6833,12 @@ watchpack@^1.2.0:
chokidar "^1.4.3"
graceful-fs "^4.1.2"
+wbuf@^1.1.0, wbuf@^1.4.0:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -6506,6 +6854,15 @@ webpack-core@~0.6.9:
source-list-map "~0.1.7"
source-map "~0.4.1"
+webpack-dev-middleware@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1"
+ dependencies:
+ memory-fs "~0.4.1"
+ mime "^1.3.4"
+ path-is-absolute "^1.0.0"
+ range-parser "^1.0.3"
+
webpack-dev-middleware@^1.6.0:
version "1.8.4"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.8.4.tgz#e8765c9122887ce9e3abd4cc9c3eb31b61e0948d"
@@ -6515,6 +6872,28 @@ webpack-dev-middleware@^1.6.0:
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
+webpack-dev-server@^2.4.5:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz#31384ce81136be1080b4b4cde0eb9b90e54ee6cf"
+ dependencies:
+ ansi-html "0.0.7"
+ chokidar "^1.6.0"
+ compression "^1.5.2"
+ connect-history-api-fallback "^1.3.0"
+ express "^4.13.3"
+ html-entities "^1.2.0"
+ http-proxy-middleware "~0.17.4"
+ opn "4.0.2"
+ portfinder "^1.0.9"
+ serve-index "^1.7.2"
+ sockjs "0.3.18"
+ sockjs-client "1.1.2"
+ spdy "^3.4.1"
+ strip-ansi "^3.0.0"
+ supports-color "^3.1.1"
+ webpack-dev-middleware "^1.10.2"
+ yargs "^6.0.0"
+
webpack-hot-middleware@^2.13.2:
version "2.17.1"
resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.17.1.tgz#0c8fbf6f93ff29c095d684b07ab6d6c0f2f951d7"
@@ -6524,13 +6903,33 @@ webpack-hot-middleware@^2.13.2:
querystring "^0.2.0"
strip-ansi "^3.0.0"
-webpack-sources@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd"
+webpack-manifest-plugin@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.1.0.tgz#6b6c718aade8a2537995784b46bd2e9836057caa"
+ dependencies:
+ fs-extra "^0.30.0"
+ lodash ">=3.5 <5"
+
+webpack-merge@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.0.tgz#6ad72223b3e0b837e531e4597c199f909361511e"
+ dependencies:
+ lodash "^4.17.4"
+
+webpack-sources@^0.1.0:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750"
dependencies:
source-list-map "~0.1.7"
source-map "~0.5.3"
+webpack-sources@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"
+ dependencies:
+ source-list-map "^1.1.1"
+ source-map "~0.5.3"
+
webpack@^1.13.1:
version "1.14.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.14.0.tgz#54f1ffb92051a328a5b2057d6ae33c289462c823"
@@ -6551,11 +6950,11 @@ webpack@^1.13.1:
watchpack "^0.2.1"
webpack-core "~0.6.9"
-webpack@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475"
+webpack@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a"
dependencies:
- acorn "^4.0.4"
+ acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^4.7.0"
ajv-keywords "^1.1.1"
@@ -6563,6 +6962,7 @@ webpack@^2.2.1:
enhanced-resolve "^3.0.0"
interpret "^1.0.0"
json-loader "^0.5.4"
+ json5 "^0.5.1"
loader-runner "^2.3.0"
loader-utils "^0.2.16"
memory-fs "~0.4.1"
@@ -6571,11 +6971,21 @@ webpack@^2.2.1:
source-map "^0.5.3"
supports-color "^3.1.0"
tapable "~0.2.5"
- uglify-js "^2.7.5"
- watchpack "^1.2.0"
- webpack-sources "^0.1.4"
+ uglify-js "^2.8.5"
+ watchpack "^1.3.1"
+ webpack-sources "^0.2.3"
yargs "^6.0.0"
+websocket-driver@>=0.5.1:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36"
+ dependencies:
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7"
+
websocket.js@^0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/websocket.js/-/websocket.js-0.1.7.tgz#8d24cefb1a080c259e7e4740c02cab8f142df2b0"
@@ -6680,7 +7090,7 @@ 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.1, xtend@^4.0.0, xtend@~4.0.0:
+xtend@4.0.1, xtend@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"