Compare commits
	
		
			23 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 8e9911962d | ||
|  | 3ebe03b729 | ||
|  | 6bc07d3de3 | ||
|  | fbc6375fde | ||
|  | 0352c40e99 | ||
|  | e5d8166a12 | ||
|  | 07ea625cb2 | ||
|  | 27101f1beb | ||
|  | 1823cf435a | ||
|  | 6a50329a9c | ||
|  | b17e571bc2 | ||
|  | 476e79b8e3 | ||
|  | 19d3317a69 | ||
|  | fe6941e28e | ||
|  | 38600b2792 | ||
|  | b0407ece42 | ||
|  | 9b3d8ee346 | ||
|  | b3d7ad958f | ||
|  | 552d22bec9 | ||
|  | 7c33da45f0 | ||
|  | 9815be2a44 | ||
|  | bebaa6eced | ||
|  | 616f53eea8 | 
| @@ -8,8 +8,17 @@ | |||||||
| # /config/locales/*.fr.yml @żelipapą | # /config/locales/*.fr.yml @żelipapą | ||||||
| # /config/locales/fr.yml @żelipapą | # /config/locales/fr.yml @żelipapą | ||||||
|  |  | ||||||
|  | # Polish | ||||||
| /app/javascript/mastodon/locales/pl.json @m4sk1n | /app/javascript/mastodon/locales/pl.json @m4sk1n | ||||||
| /app/views/user_mailer/*.pl.html.erb @m4sk1n | /app/views/user_mailer/*.pl.html.erb @m4sk1n | ||||||
| /app/views/user_mailer/*.pl.text.erb @m4sk1n | /app/views/user_mailer/*.pl.text.erb @m4sk1n | ||||||
| /config/locales/*.pl.yml @m4sk1n | /config/locales/*.pl.yml @m4sk1n | ||||||
| /config/locales/pl.yml @m4sk1n | /config/locales/pl.yml @m4sk1n | ||||||
|  |  | ||||||
|  | # French | ||||||
|  | /app/javascript/mastodon/locales/fr.json @aldarone | ||||||
|  | /app/javascript/mastodon/locales/whitelist_fr.json @aldarone | ||||||
|  | /app/views/user_mailer/*.fr.html.erb @aldarone | ||||||
|  | /app/views/user_mailer/*.fr.text.erb @aldarone | ||||||
|  | /config/locales/*.fr.yml @aldarone | ||||||
|  | /config/locales/fr.yml @aldarone | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController | |||||||
|   before_action :check_enabled_registrations, only: [:new, :create] |   before_action :check_enabled_registrations, only: [:new, :create] | ||||||
|   before_action :configure_sign_up_params, only: [:create] |   before_action :configure_sign_up_params, only: [:create] | ||||||
|   before_action :set_sessions, only: [:edit, :update] |   before_action :set_sessions, only: [:edit, :update] | ||||||
|  |   before_action :set_instance_presenter, only: [:new, :update] | ||||||
|  |  | ||||||
|   def destroy |   def destroy | ||||||
|     not_found |     not_found | ||||||
| @@ -39,6 +40,10 @@ class Auth::RegistrationsController < Devise::RegistrationsController | |||||||
|  |  | ||||||
|   private |   private | ||||||
|  |  | ||||||
|  |   def set_instance_presenter | ||||||
|  |     @instance_presenter = InstancePresenter.new | ||||||
|  |   end | ||||||
|  |  | ||||||
|   def determine_layout |   def determine_layout | ||||||
|     %w(edit update).include?(action_name) ? 'admin' : 'auth' |     %w(edit update).include?(action_name) ? 'admin' : 'auth' | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ class Auth::SessionsController < Devise::SessionsController | |||||||
|   skip_before_action :require_no_authentication, only: [:create] |   skip_before_action :require_no_authentication, only: [:create] | ||||||
|   skip_before_action :check_suspension, only: [:destroy] |   skip_before_action :check_suspension, only: [:destroy] | ||||||
|   prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create] |   prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create] | ||||||
|  |   before_action :set_instance_presenter, only: [:new] | ||||||
|  |  | ||||||
|   def create |   def create | ||||||
|     super do |resource| |     super do |resource| | ||||||
| @@ -84,6 +85,10 @@ class Auth::SessionsController < Devise::SessionsController | |||||||
|  |  | ||||||
|   private |   private | ||||||
|  |  | ||||||
|  |   def set_instance_presenter | ||||||
|  |     @instance_presenter = InstancePresenter.new | ||||||
|  |   end | ||||||
|  |  | ||||||
|   def home_paths(resource) |   def home_paths(resource) | ||||||
|     paths = [about_path] |     paths = [about_path] | ||||||
|     if single_user_mode? && resource.is_a?(User) |     if single_user_mode? && resource.is_a?(User) | ||||||
|   | |||||||
| @@ -8,15 +8,41 @@ import { useEmoji } from '../../../actions/emojis'; | |||||||
| const perLine = 8; | const perLine = 8; | ||||||
| const lines   = 2; | const lines   = 2; | ||||||
|  |  | ||||||
|  | const DEFAULTS = [ | ||||||
|  |   '+1', | ||||||
|  |   'grinning', | ||||||
|  |   'kissing_heart', | ||||||
|  |   'heart_eyes', | ||||||
|  |   'laughing', | ||||||
|  |   'stuck_out_tongue_winking_eye', | ||||||
|  |   'sweat_smile', | ||||||
|  |   'joy', | ||||||
|  |   'yum', | ||||||
|  |   'disappointed', | ||||||
|  |   'thinking_face', | ||||||
|  |   'weary', | ||||||
|  |   'sob', | ||||||
|  |   'sunglasses', | ||||||
|  |   'heart', | ||||||
|  |   'ok_hand', | ||||||
|  | ]; | ||||||
|  |  | ||||||
| const getFrequentlyUsedEmojis = createSelector([ | const getFrequentlyUsedEmojis = createSelector([ | ||||||
|   state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()), |   state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()), | ||||||
| ], emojiCounters => emojiCounters | ], emojiCounters => { | ||||||
|  |   let emojis = emojiCounters | ||||||
|     .keySeq() |     .keySeq() | ||||||
|     .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b)) |     .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b)) | ||||||
|     .reverse() |     .reverse() | ||||||
|     .slice(0, perLine * lines) |     .slice(0, perLine * lines) | ||||||
|     .toArray() |     .toArray(); | ||||||
| ); |  | ||||||
|  |   if (emojis.length < DEFAULTS.length) { | ||||||
|  |     emojis = emojis.concat(DEFAULTS.slice(0, DEFAULTS.length - emojis.length)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return emojis; | ||||||
|  | }); | ||||||
|  |  | ||||||
| const getCustomEmojis = createSelector([ | const getCustomEmojis = createSelector([ | ||||||
|   state => state.get('custom_emojis'), |   state => state.get('custom_emojis'), | ||||||
|   | |||||||
| @@ -78,6 +78,7 @@ export default class Status extends ImmutablePureComponent { | |||||||
|  |  | ||||||
|   componentWillReceiveProps (nextProps) { |   componentWillReceiveProps (nextProps) { | ||||||
|     if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) { |     if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) { | ||||||
|  |       this._scrolledIntoView = false; | ||||||
|       this.props.dispatch(fetchStatus(nextProps.params.statusId)); |       this.props.dispatch(fetchStatus(nextProps.params.statusId)); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @@ -240,11 +241,17 @@ export default class Status extends ImmutablePureComponent { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   componentDidUpdate () { |   componentDidUpdate () { | ||||||
|     const { ancestorsIds } = this.props; |     if (this._scrolledIntoView) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if (ancestorsIds && ancestorsIds.size > 0) { |     const { status, ancestorsIds } = this.props; | ||||||
|       const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size]; |  | ||||||
|       element.scrollIntoView(); |     if (status && ancestorsIds && ancestorsIds.size > 0) { | ||||||
|  |       const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1]; | ||||||
|  |  | ||||||
|  |       element.scrollIntoView(true); | ||||||
|  |       this._scrolledIntoView = true; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -186,7 +186,7 @@ export default class UI extends React.Component { | |||||||
|  |  | ||||||
|   componentDidMount () { |   componentDidMount () { | ||||||
|     this.hotkeys.__mousetrap__.stopCallback = (e, element) => { |     this.hotkeys.__mousetrap__.stopCallback = (e, element) => { | ||||||
|       return !(e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) && ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); |       return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); | ||||||
|     }; |     }; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,31 +1,31 @@ | |||||||
| { | { | ||||||
|   "account.block": "حظر @{name}", |   "account.block": "حظر @{name}", | ||||||
|   "account.block_domain": "Hide everything from {domain}", |   "account.block_domain": "إخفاء كل شيئ قادم من إسم النطاق {domain}", | ||||||
|   "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", |   "account.disclaimer_full": "قد لا تعكس المعلومات أدناه الملف الشخصي الكامل للمستخدم.", | ||||||
|   "account.edit_profile": "تعديل الملف الشخصي", |   "account.edit_profile": "تعديل الملف الشخصي", | ||||||
|   "account.follow": "تابِع", |   "account.follow": "تابِع", | ||||||
|   "account.followers": "المتابعون", |   "account.followers": "المتابعون", | ||||||
|   "account.follows": "يتبع", |   "account.follows": "يتبع", | ||||||
|   "account.follows_you": "يتابعك", |   "account.follows_you": "يتابعك", | ||||||
|   "account.media": "Media", |   "account.media": "وسائط", | ||||||
|   "account.mention": "أُذكُر @{name}", |   "account.mention": "أُذكُر @{name}", | ||||||
|   "account.mute": "أكتم @{name}", |   "account.mute": "أكتم @{name}", | ||||||
|   "account.posts": "المشاركات", |   "account.posts": "المشاركات", | ||||||
|   "account.report": "أبلغ عن @{name}", |   "account.report": "أبلغ عن @{name}", | ||||||
|   "account.requested": "في انتظار الموافقة", |   "account.requested": "في انتظار الموافقة", | ||||||
|   "account.share": "Share @{name}'s profile", |   "account.share": "مشاركة @{name}'s profile", | ||||||
|   "account.unblock": "إلغاء الحظر عن @{name}", |   "account.unblock": "إلغاء الحظر عن @{name}", | ||||||
|   "account.unblock_domain": "Unhide {domain}", |   "account.unblock_domain": "فك حظر {domain}", | ||||||
|   "account.unfollow": "إلغاء المتابعة", |   "account.unfollow": "إلغاء المتابعة", | ||||||
|   "account.unmute": "إلغاء الكتم عن @{name}", |   "account.unmute": "إلغاء الكتم عن @{name}", | ||||||
|   "account.view_full_profile": "View full profile", |   "account.view_full_profile": "عرض الملف الشخصي كاملا", | ||||||
|   "boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة", |   "boost_modal.combo": "يمكنك ضغط {combo} لتخطّي هذه في المرّة القادمة", | ||||||
|   "bundle_column_error.body": "Something went wrong while loading this component.", |   "bundle_column_error.body": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.", | ||||||
|   "bundle_column_error.retry": "Try again", |   "bundle_column_error.retry": "إعادة المحاولة", | ||||||
|   "bundle_column_error.title": "Network error", |   "bundle_column_error.title": "خطأ في الشبكة", | ||||||
|   "bundle_modal_error.close": "Close", |   "bundle_modal_error.close": "أغلق", | ||||||
|   "bundle_modal_error.message": "Something went wrong while loading this component.", |   "bundle_modal_error.message": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.", | ||||||
|   "bundle_modal_error.retry": "Try again", |   "bundle_modal_error.retry": "إعادة المحاولة", | ||||||
|   "column.blocks": "الحسابات المحجوبة", |   "column.blocks": "الحسابات المحجوبة", | ||||||
|   "column.community": "الخيط العام المحلي", |   "column.community": "الخيط العام المحلي", | ||||||
|   "column.favourites": "المفضلة", |   "column.favourites": "المفضلة", | ||||||
| @@ -33,15 +33,15 @@ | |||||||
|   "column.home": "الرئيسية", |   "column.home": "الرئيسية", | ||||||
|   "column.mutes": "الحسابات المكتومة", |   "column.mutes": "الحسابات المكتومة", | ||||||
|   "column.notifications": "الإشعارات", |   "column.notifications": "الإشعارات", | ||||||
|   "column.pins": "Pinned toot", |   "column.pins": "التبويقات المثبتة", | ||||||
|   "column.public": "الخيط العام الموحد", |   "column.public": "الخيط العام الموحد", | ||||||
|   "column_back_button.label": "العودة", |   "column_back_button.label": "العودة", | ||||||
|   "column_header.hide_settings": "Hide settings", |   "column_header.hide_settings": "إخفاء الإعدادات", | ||||||
|   "column_header.moveLeft_settings": "Move column to the left", |   "column_header.moveLeft_settings": "نقل القائمة إلى اليسار", | ||||||
|   "column_header.moveRight_settings": "Move column to the right", |   "column_header.moveRight_settings": "نقل القائمة إلى اليمين", | ||||||
|   "column_header.pin": "Pin", |   "column_header.pin": "تدبيس", | ||||||
|   "column_header.show_settings": "Show settings", |   "column_header.show_settings": "عرض الإعدادات", | ||||||
|   "column_header.unpin": "Unpin", |   "column_header.unpin": "فك التدبيس", | ||||||
|   "column_subheading.navigation": "التصفح", |   "column_subheading.navigation": "التصفح", | ||||||
|   "column_subheading.settings": "الإعدادات", |   "column_subheading.settings": "الإعدادات", | ||||||
|   "compose_form.lock_disclaimer": "حسابك ليس {locked}. يمكن لأي شخص متابعتك و عرض المنشورات.", |   "compose_form.lock_disclaimer": "حسابك ليس {locked}. يمكن لأي شخص متابعتك و عرض المنشورات.", | ||||||
| @@ -57,16 +57,16 @@ | |||||||
|   "confirmations.block.message": "هل أنت متأكد أنك تريد حجب {name} ؟", |   "confirmations.block.message": "هل أنت متأكد أنك تريد حجب {name} ؟", | ||||||
|   "confirmations.delete.confirm": "حذف", |   "confirmations.delete.confirm": "حذف", | ||||||
|   "confirmations.delete.message": "هل أنت متأكد أنك تريد حذف هذا المنشور ؟", |   "confirmations.delete.message": "هل أنت متأكد أنك تريد حذف هذا المنشور ؟", | ||||||
|   "confirmations.domain_block.confirm": "Hide entire domain", |   "confirmations.domain_block.confirm": "إخفاء إسم النطاق كاملا", | ||||||
|   "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", |   "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", | ||||||
|   "confirmations.mute.confirm": "أكتم", |   "confirmations.mute.confirm": "أكتم", | ||||||
|   "confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟", |   "confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟", | ||||||
|   "confirmations.unfollow.confirm": "Unfollow", |   "confirmations.unfollow.confirm": "إلغاء المتابعة", | ||||||
|   "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", |   "confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟", | ||||||
|   "embed.instructions": "Embed this status on your website by copying the code below.", |   "embed.instructions": "يمكنكم إدماج هذه الحالة على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", | ||||||
|   "embed.preview": "Here is what it will look like:", |   "embed.preview": "هكذا ما سوف يبدو عليه :", | ||||||
|   "emoji_button.activity": "الأنشطة", |   "emoji_button.activity": "الأنشطة", | ||||||
|   "emoji_button.custom": "Custom", |   "emoji_button.custom": "مخصص", | ||||||
|   "emoji_button.flags": "الأعلام", |   "emoji_button.flags": "الأعلام", | ||||||
|   "emoji_button.food": "الطعام والشراب", |   "emoji_button.food": "الطعام والشراب", | ||||||
|   "emoji_button.label": "أدرج إيموجي", |   "emoji_button.label": "أدرج إيموجي", | ||||||
| @@ -74,9 +74,9 @@ | |||||||
|   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", |   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", | ||||||
|   "emoji_button.objects": "أشياء", |   "emoji_button.objects": "أشياء", | ||||||
|   "emoji_button.people": "الناس", |   "emoji_button.people": "الناس", | ||||||
|   "emoji_button.recent": "Frequently used", |   "emoji_button.recent": "الشائعة الإستخدام", | ||||||
|   "emoji_button.search": "ابحث...", |   "emoji_button.search": "ابحث...", | ||||||
|   "emoji_button.search_results": "Search results", |   "emoji_button.search_results": "نتائج البحث", | ||||||
|   "emoji_button.symbols": "رموز", |   "emoji_button.symbols": "رموز", | ||||||
|   "emoji_button.travel": "أماكن و أسفار", |   "emoji_button.travel": "أماكن و أسفار", | ||||||
|   "empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.", |   "empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.", | ||||||
| @@ -100,8 +100,8 @@ | |||||||
|   "home.column_settings.show_replies": "عرض الردود", |   "home.column_settings.show_replies": "عرض الردود", | ||||||
|   "home.settings": "إعدادات العمود", |   "home.settings": "إعدادات العمود", | ||||||
|   "lightbox.close": "إغلاق", |   "lightbox.close": "إغلاق", | ||||||
|   "lightbox.next": "Next", |   "lightbox.next": "التالي", | ||||||
|   "lightbox.previous": "Previous", |   "lightbox.previous": "العودة", | ||||||
|   "loading_indicator.label": "تحميل ...", |   "loading_indicator.label": "تحميل ...", | ||||||
|   "media_gallery.toggle_visible": "عرض / إخفاء", |   "media_gallery.toggle_visible": "عرض / إخفاء", | ||||||
|   "missing_indicator.label": "تعذر العثور عليه", |   "missing_indicator.label": "تعذر العثور عليه", | ||||||
| @@ -113,7 +113,7 @@ | |||||||
|   "navigation_bar.info": "معلومات إضافية", |   "navigation_bar.info": "معلومات إضافية", | ||||||
|   "navigation_bar.logout": "خروج", |   "navigation_bar.logout": "خروج", | ||||||
|   "navigation_bar.mutes": "الحسابات المكتومة", |   "navigation_bar.mutes": "الحسابات المكتومة", | ||||||
|   "navigation_bar.pins": "Pinned toots", |   "navigation_bar.pins": "التبويقات المثبتة", | ||||||
|   "navigation_bar.preferences": "التفضيلات", |   "navigation_bar.preferences": "التفضيلات", | ||||||
|   "navigation_bar.public_timeline": "الخيط العام الموحد", |   "navigation_bar.public_timeline": "الخيط العام الموحد", | ||||||
|   "notification.favourite": "{name} أعجب بمنشورك", |   "notification.favourite": "{name} أعجب بمنشورك", | ||||||
| @@ -126,8 +126,8 @@ | |||||||
|   "notifications.column_settings.favourite": "المُفَضَّلة :", |   "notifications.column_settings.favourite": "المُفَضَّلة :", | ||||||
|   "notifications.column_settings.follow": "متابعُون جُدُد :", |   "notifications.column_settings.follow": "متابعُون جُدُد :", | ||||||
|   "notifications.column_settings.mention": "الإشارات :", |   "notifications.column_settings.mention": "الإشارات :", | ||||||
|   "notifications.column_settings.push": "Push notifications", |   "notifications.column_settings.push": "الإخطارات المدفوعة", | ||||||
|   "notifications.column_settings.push_meta": "This device", |   "notifications.column_settings.push_meta": "هذا الجهاز", | ||||||
|   "notifications.column_settings.reblog": "الترقيّات:", |   "notifications.column_settings.reblog": "الترقيّات:", | ||||||
|   "notifications.column_settings.show": "إعرِضها في عمود", |   "notifications.column_settings.show": "إعرِضها في عمود", | ||||||
|   "notifications.column_settings.sound": "أصدر صوتا", |   "notifications.column_settings.sound": "أصدر صوتا", | ||||||
| @@ -165,23 +165,23 @@ | |||||||
|   "report.submit": "إرسال", |   "report.submit": "إرسال", | ||||||
|   "report.target": "إبلاغ", |   "report.target": "إبلاغ", | ||||||
|   "search.placeholder": "ابحث", |   "search.placeholder": "ابحث", | ||||||
|   "search_popout.search_format": "Advanced search format", |   "search_popout.search_format": "نمط البحث المتقدم", | ||||||
|   "search_popout.tips.hashtag": "hashtag", |   "search_popout.tips.hashtag": "وسم", | ||||||
|   "search_popout.tips.status": "status", |   "search_popout.tips.status": "حالة", | ||||||
|   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", |   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", | ||||||
|   "search_popout.tips.user": "user", |   "search_popout.tips.user": "مستخدِم", | ||||||
|   "search_results.total": "{count, number} {count, plural, one {result} other {results}}", |   "search_results.total": "{count, number} {count, plural, one {result} other {results}}", | ||||||
|   "standalone.public_title": "A look inside...", |   "standalone.public_title": "نظرة على ...", | ||||||
|   "status.cannot_reblog": "تعذرت ترقية هذا المنشور", |   "status.cannot_reblog": "تعذرت ترقية هذا المنشور", | ||||||
|   "status.delete": "إحذف", |   "status.delete": "إحذف", | ||||||
|   "status.embed": "Embed", |   "status.embed": "إدماج", | ||||||
|   "status.favourite": "أضف إلى المفضلة", |   "status.favourite": "أضف إلى المفضلة", | ||||||
|   "status.load_more": "حمّل المزيد", |   "status.load_more": "حمّل المزيد", | ||||||
|   "status.media_hidden": "الصورة مستترة", |   "status.media_hidden": "الصورة مستترة", | ||||||
|   "status.mention": "أذكُر @{name}", |   "status.mention": "أذكُر @{name}", | ||||||
|   "status.mute_conversation": "Mute conversation", |   "status.mute_conversation": "كتم المحادثة", | ||||||
|   "status.open": "وسع هذه المشاركة", |   "status.open": "وسع هذه المشاركة", | ||||||
|   "status.pin": "Pin on profile", |   "status.pin": "تدبيس على الملف الشخصي", | ||||||
|   "status.reblog": "رَقِّي", |   "status.reblog": "رَقِّي", | ||||||
|   "status.reblogged_by": "{name} رقى", |   "status.reblogged_by": "{name} رقى", | ||||||
|   "status.reply": "ردّ", |   "status.reply": "ردّ", | ||||||
| @@ -189,11 +189,11 @@ | |||||||
|   "status.report": "إبلِغ عن @{name}", |   "status.report": "إبلِغ عن @{name}", | ||||||
|   "status.sensitive_toggle": "اضغط للعرض", |   "status.sensitive_toggle": "اضغط للعرض", | ||||||
|   "status.sensitive_warning": "محتوى حساس", |   "status.sensitive_warning": "محتوى حساس", | ||||||
|   "status.share": "Share", |   "status.share": "مشاركة", | ||||||
|   "status.show_less": "إعرض أقلّ", |   "status.show_less": "إعرض أقلّ", | ||||||
|   "status.show_more": "أظهر المزيد", |   "status.show_more": "أظهر المزيد", | ||||||
|   "status.unmute_conversation": "Unmute conversation", |   "status.unmute_conversation": "فك الكتم عن المحادثة", | ||||||
|   "status.unpin": "Unpin from profile", |   "status.unpin": "فك التدبيس من الملف الشخصي", | ||||||
|   "tabs_bar.compose": "تحرير", |   "tabs_bar.compose": "تحرير", | ||||||
|   "tabs_bar.federated_timeline": "الموحَّد", |   "tabs_bar.federated_timeline": "الموحَّد", | ||||||
|   "tabs_bar.home": "الرئيسية", |   "tabs_bar.home": "الرئيسية", | ||||||
| @@ -201,16 +201,16 @@ | |||||||
|   "tabs_bar.notifications": "الإخطارات", |   "tabs_bar.notifications": "الإخطارات", | ||||||
|   "upload_area.title": "إسحب ثم أفلت للرفع", |   "upload_area.title": "إسحب ثم أفلت للرفع", | ||||||
|   "upload_button.label": "إضافة وسائط", |   "upload_button.label": "إضافة وسائط", | ||||||
|   "upload_form.description": "Describe for the visually impaired", |   "upload_form.description": "وصف للمعاقين بصريا", | ||||||
|   "upload_form.undo": "إلغاء", |   "upload_form.undo": "إلغاء", | ||||||
|   "upload_progress.label": "يرفع...", |   "upload_progress.label": "يرفع...", | ||||||
|   "video.close": "Close video", |   "video.close": "إغلاق الفيديو", | ||||||
|   "video.exit_fullscreen": "Exit full screen", |   "video.exit_fullscreen": "الخروج من وضع الشاشة المليئة", | ||||||
|   "video.expand": "Expand video", |   "video.expand": "توسيع الفيديو", | ||||||
|   "video.fullscreen": "Full screen", |   "video.fullscreen": "ملء الشاشة", | ||||||
|   "video.hide": "Hide video", |   "video.hide": "إخفاء الفيديو", | ||||||
|   "video.mute": "Mute sound", |   "video.mute": "كتم الصوت", | ||||||
|   "video.pause": "Pause", |   "video.pause": "إيقاف مؤقت", | ||||||
|   "video.play": "Play", |   "video.play": "تشغيل", | ||||||
|   "video.unmute": "Unmute sound" |   "video.unmute": "تشغيل الصوت" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ | |||||||
|   "embed.instructions": "Intégrez ce statut à votre site en copiant ce code ci-dessous.", |   "embed.instructions": "Intégrez ce statut à votre site en copiant ce code ci-dessous.", | ||||||
|   "embed.preview": "Il apparaîtra comme cela : ", |   "embed.preview": "Il apparaîtra comme cela : ", | ||||||
|   "emoji_button.activity": "Activités", |   "emoji_button.activity": "Activités", | ||||||
|   "emoji_button.custom": "Custom", |   "emoji_button.custom": "Personnalisés", | ||||||
|   "emoji_button.flags": "Drapeaux", |   "emoji_button.flags": "Drapeaux", | ||||||
|   "emoji_button.food": "Boire et manger", |   "emoji_button.food": "Boire et manger", | ||||||
|   "emoji_button.label": "Insérer un emoji", |   "emoji_button.label": "Insérer un emoji", | ||||||
| @@ -74,9 +74,9 @@ | |||||||
|   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", |   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", | ||||||
|   "emoji_button.objects": "Objets", |   "emoji_button.objects": "Objets", | ||||||
|   "emoji_button.people": "Personnages", |   "emoji_button.people": "Personnages", | ||||||
|   "emoji_button.recent": "Frequently used", |   "emoji_button.recent": "Fréquemment utilisés", | ||||||
|   "emoji_button.search": "Recherche…", |   "emoji_button.search": "Recherche…", | ||||||
|   "emoji_button.search_results": "Search results", |   "emoji_button.search_results": "Résultats de la recherche", | ||||||
|   "emoji_button.symbols": "Symboles", |   "emoji_button.symbols": "Symboles", | ||||||
|   "emoji_button.travel": "Lieux et voyages", |   "emoji_button.travel": "Lieux et voyages", | ||||||
|   "empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !", |   "empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !", | ||||||
| @@ -165,11 +165,11 @@ | |||||||
|   "report.submit": "Envoyer", |   "report.submit": "Envoyer", | ||||||
|   "report.target": "Signalement", |   "report.target": "Signalement", | ||||||
|   "search.placeholder": "Rechercher", |   "search.placeholder": "Rechercher", | ||||||
|   "search_popout.search_format": "Advanced search format", |   "search_popout.search_format": "Recherche avancée", | ||||||
|   "search_popout.tips.hashtag": "hashtag", |   "search_popout.tips.hashtag": "hashtag", | ||||||
|   "search_popout.tips.status": "status", |   "search_popout.tips.status": "statuts", | ||||||
|   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", |   "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les noms d’utilisateur⋅ice et les hashtags correspondants", | ||||||
|   "search_popout.tips.user": "user", |   "search_popout.tips.user": "utilisateur⋅ice", | ||||||
|   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", |   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", | ||||||
|   "standalone.public_title": "Jeter un coup d’œil…", |   "standalone.public_title": "Jeter un coup d’œil…", | ||||||
|   "status.cannot_reblog": "Cette publication ne peut être boostée", |   "status.cannot_reblog": "Cette publication ne peut être boostée", | ||||||
| @@ -201,7 +201,7 @@ | |||||||
|   "tabs_bar.notifications": "Notifications", |   "tabs_bar.notifications": "Notifications", | ||||||
|   "upload_area.title": "Glissez et déposez pour envoyer", |   "upload_area.title": "Glissez et déposez pour envoyer", | ||||||
|   "upload_button.label": "Joindre un média", |   "upload_button.label": "Joindre un média", | ||||||
|   "upload_form.description": "Describe for the visually impaired", |   "upload_form.description": "Décrire pour les malvoyants", | ||||||
|   "upload_form.undo": "Annuler", |   "upload_form.undo": "Annuler", | ||||||
|   "upload_progress.label": "Envoi en cours…", |   "upload_progress.label": "Envoi en cours…", | ||||||
|   "video.close": "Fermer la vidéo", |   "video.close": "Fermer la vidéo", | ||||||
|   | |||||||
| @@ -66,17 +66,17 @@ | |||||||
|   "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", |   "embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.", | ||||||
|   "embed.preview": "Zo komt het eruit te zien:", |   "embed.preview": "Zo komt het eruit te zien:", | ||||||
|   "emoji_button.activity": "Activiteiten", |   "emoji_button.activity": "Activiteiten", | ||||||
|   "emoji_button.custom": "Custom", |   "emoji_button.custom": "Lokale emoji’s", | ||||||
|   "emoji_button.flags": "Vlaggen", |   "emoji_button.flags": "Vlaggen", | ||||||
|   "emoji_button.food": "Eten en drinken", |   "emoji_button.food": "Eten en drinken", | ||||||
|   "emoji_button.label": "Emoji toevoegen", |   "emoji_button.label": "Emoji toevoegen", | ||||||
|   "emoji_button.nature": "Natuur", |   "emoji_button.nature": "Natuur", | ||||||
|   "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", |   "emoji_button.not_found": "Geen emoji’s!! (╯°□°)╯︵ ┻━┻", | ||||||
|   "emoji_button.objects": "Voorwerpen", |   "emoji_button.objects": "Voorwerpen", | ||||||
|   "emoji_button.people": "Mensen", |   "emoji_button.people": "Mensen", | ||||||
|   "emoji_button.recent": "Frequently used", |   "emoji_button.recent": "Vaak gebruikt", | ||||||
|   "emoji_button.search": "Zoeken...", |   "emoji_button.search": "Zoeken...", | ||||||
|   "emoji_button.search_results": "Search results", |   "emoji_button.search_results": "Zoekresultaten", | ||||||
|   "emoji_button.symbols": "Symbolen", |   "emoji_button.symbols": "Symbolen", | ||||||
|   "emoji_button.travel": "Reizen en plekken", |   "emoji_button.travel": "Reizen en plekken", | ||||||
|   "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!", |   "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!", | ||||||
| @@ -165,11 +165,11 @@ | |||||||
|   "report.submit": "Verzenden", |   "report.submit": "Verzenden", | ||||||
|   "report.target": "Rapporteren van", |   "report.target": "Rapporteren van", | ||||||
|   "search.placeholder": "Zoeken", |   "search.placeholder": "Zoeken", | ||||||
|   "search_popout.search_format": "Advanced search format", |   "search_popout.search_format": "Geavanceerd zoeken", | ||||||
|   "search_popout.tips.hashtag": "hashtag", |   "search_popout.tips.hashtag": "hashtag", | ||||||
|   "search_popout.tips.status": "status", |   "search_popout.tips.status": "toot", | ||||||
|   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", |   "search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags.", | ||||||
|   "search_popout.tips.user": "user", |   "search_popout.tips.user": "gebruiker", | ||||||
|   "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", |   "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", | ||||||
|   "standalone.public_title": "Een kijkje binnenin...", |   "standalone.public_title": "Een kijkje binnenin...", | ||||||
|   "status.cannot_reblog": "Deze toot kan niet geboost worden", |   "status.cannot_reblog": "Deze toot kan niet geboost worden", | ||||||
| @@ -201,11 +201,11 @@ | |||||||
|   "tabs_bar.notifications": "Meldingen", |   "tabs_bar.notifications": "Meldingen", | ||||||
|   "upload_area.title": "Hierin slepen om te uploaden", |   "upload_area.title": "Hierin slepen om te uploaden", | ||||||
|   "upload_button.label": "Media toevoegen", |   "upload_button.label": "Media toevoegen", | ||||||
|   "upload_form.description": "Describe for the visually impaired", |   "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", | ||||||
|   "upload_form.undo": "Ongedaan maken", |   "upload_form.undo": "Ongedaan maken", | ||||||
|   "upload_progress.label": "Uploaden...", |   "upload_progress.label": "Uploaden...", | ||||||
|   "video.close": "Close video", |   "video.close": "Video sluiten", | ||||||
|   "video.exit_fullscreen": "Exit full screen", |   "video.exit_fullscreen": "Volledig scherm sluiten", | ||||||
|   "video.expand": "Video groter maken", |   "video.expand": "Video groter maken", | ||||||
|   "video.fullscreen": "Volledig scherm", |   "video.fullscreen": "Volledig scherm", | ||||||
|   "video.hide": "Video verbergen", |   "video.hide": "Video verbergen", | ||||||
|   | |||||||
| @@ -29,8 +29,7 @@ body { | |||||||
|     font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif; |     font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", mastodon-font-sans-serif, sans-serif; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   &.app-body, |   &.app-body { | ||||||
|   &.error { |  | ||||||
|     position: fixed; |     position: fixed; | ||||||
|     width: 100%; |     width: 100%; | ||||||
|     height: 100%; |     height: 100%; | ||||||
| @@ -70,14 +69,22 @@ body { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   &.error { |   &.error { | ||||||
|  |     position: absolute; | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     color: $ui-primary-color; |     color: $ui-primary-color; | ||||||
|     padding: 20px; |     background: $ui-base-color; | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |     padding: 0; | ||||||
|     display: flex; |     display: flex; | ||||||
|     justify-content: center; |     justify-content: center; | ||||||
|     align-items: center; |     align-items: center; | ||||||
|  |  | ||||||
|     .dialog img { |     .dialog { | ||||||
|  |       vertical-align: middle; | ||||||
|  |       margin: 20px; | ||||||
|  |  | ||||||
|  |       img { | ||||||
|         display: block; |         display: block; | ||||||
|         max-width: 470px; |         max-width: 470px; | ||||||
|         width: 100%; |         width: 100%; | ||||||
| @@ -85,13 +92,14 @@ body { | |||||||
|         margin-top: -120px; |         margin-top: -120px; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|     .dialog h1 { |       h1 { | ||||||
|         font-size: 20px; |         font-size: 20px; | ||||||
|         line-height: 28px; |         line-height: 28px; | ||||||
|         font-weight: 400; |         font-weight: 400; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| button { | button { | ||||||
|   font-family: inherit; |   font-family: inherit; | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|  |  | ||||||
| - content_for :header_tags do | - content_for :header_tags do | ||||||
|   = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous' |   = javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous' | ||||||
|   = render partial: 'og' |   = render partial: 'shared/og' | ||||||
|  |  | ||||||
| .landing-page | .landing-page | ||||||
|   .header-wrapper.compact |   .header-wrapper.compact | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| - content_for :header_tags do | - content_for :header_tags do | ||||||
|   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) |   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) | ||||||
|   = javascript_pack_tag 'about', integrity: true, crossorigin: 'anonymous' |   = javascript_pack_tag 'about', integrity: true, crossorigin: 'anonymous' | ||||||
|   = render partial: 'og' |   = render partial: 'shared/og' | ||||||
|  |  | ||||||
| .landing-page | .landing-page | ||||||
|   .header-wrapper |   .header-wrapper | ||||||
|   | |||||||
| @@ -1,6 +1,9 @@ | |||||||
| - content_for :page_title do | - content_for :page_title do | ||||||
|   = t('auth.register') |   = t('auth.register') | ||||||
|  |  | ||||||
|  | - content_for :header_tags do | ||||||
|  |   = render partial: 'shared/og' | ||||||
|  |  | ||||||
| = simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| | = simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| | ||||||
|   = render 'shared/error_messages', object: resource |   = render 'shared/error_messages', object: resource | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,9 @@ | |||||||
| - content_for :page_title do | - content_for :page_title do | ||||||
|   = t('auth.login') |   = t('auth.login') | ||||||
|  |  | ||||||
|  | - content_for :header_tags do | ||||||
|  |   = render partial: 'shared/og' | ||||||
|  |  | ||||||
| = simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| | = simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| | ||||||
|   = f.input :email, autofocus: true, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') } |   = f.input :email, autofocus: true, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') } | ||||||
|   = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' } |   = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' } | ||||||
|   | |||||||
| @@ -1,4 +1,10 @@ | |||||||
| - content_for :header_tags do | - content_for :header_tags do | ||||||
|  |   %link{ href: asset_pack_path('features/getting_started.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|  |   %link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ | ||||||
|   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} |   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} | ||||||
|   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) |   %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -21,14 +21,6 @@ | |||||||
|     = stylesheet_pack_tag 'common', media: 'all' |     = stylesheet_pack_tag 'common', media: 'all' | ||||||
|     = stylesheet_pack_tag current_theme, media: 'all' |     = stylesheet_pack_tag current_theme, media: 'all' | ||||||
|     = javascript_pack_tag 'common', integrity: true, crossorigin: 'anonymous' |     = javascript_pack_tag 'common', integrity: true, crossorigin: 'anonymous' | ||||||
|  |  | ||||||
|     %link{ href: asset_pack_path('features/getting_started.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|     %link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/ |  | ||||||
|  |  | ||||||
|     = javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous' |     = javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous' | ||||||
|     = csrf_meta_tags |     = csrf_meta_tags | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| - thumbnail = @instance_presenter.thumbnail | - thumbnail = @instance_presenter.thumbnail | ||||||
| = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) | = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) | ||||||
| = opengraph 'og:url', about_url | = opengraph 'og:url', url_for(only_path: false) | ||||||
| = opengraph 'og:type', 'website' | = opengraph 'og:type', 'website' | ||||||
| = opengraph 'og:title', @instance_presenter.site_title | = opengraph 'og:title', @instance_presenter.site_title | ||||||
| = opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) | = opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) | ||||||
| @@ -2,6 +2,7 @@ | |||||||
| de: | de: | ||||||
|   about: |   about: | ||||||
|     about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!). |     about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!). | ||||||
|  |     about_hashtag_html: Dies sind öffentliche Beiträge, die mit <strong>#%{hashtag}</strong> getaggt wurden. Wenn du ein Konto irgendwo im Fediversum besitzt, kannst du mit ihnen interagieren. | ||||||
|     about_this: Über diese Instanz |     about_this: Über diese Instanz | ||||||
|     closed_registrations: Die Registrierung auf dieser Instanz ist momentan geschlossen. Aber du kannst dein Konto auch auf einer anderen Instanz erstellen! Von dort hast du genauso Zugriff auf das Mastodon-Netzwerk. |     closed_registrations: Die Registrierung auf dieser Instanz ist momentan geschlossen. Aber du kannst dein Konto auch auf einer anderen Instanz erstellen! Von dort hast du genauso Zugriff auf das Mastodon-Netzwerk. | ||||||
|     contact: Kontakt |     contact: Kontakt | ||||||
| @@ -75,6 +76,7 @@ de: | |||||||
|         silenced: Stummgeschaltet |         silenced: Stummgeschaltet | ||||||
|         suspended: Gesperrt |         suspended: Gesperrt | ||||||
|         title: Moderation |         title: Moderation | ||||||
|  |       moderation_notes: Moderationsnotizen | ||||||
|       most_recent_activity: Letzte Aktivität |       most_recent_activity: Letzte Aktivität | ||||||
|       most_recent_ip: Letzte IP-Adresse |       most_recent_ip: Letzte IP-Adresse | ||||||
|       not_subscribed: Nicht abonniert |       not_subscribed: Nicht abonniert | ||||||
| @@ -108,11 +110,25 @@ de: | |||||||
|       unsubscribe: Abbestellen |       unsubscribe: Abbestellen | ||||||
|       username: Profilname |       username: Profilname | ||||||
|       web: Web |       web: Web | ||||||
|  |     account_moderation_notes: | ||||||
|  |       account: Moderator*in | ||||||
|  |       created_at: Datum | ||||||
|  |       create: Erstellen | ||||||
|  |       created_msg: Moderationsnotiz erfolgreich erstellt! | ||||||
|  |       delete: Löschen | ||||||
|  |       destroyed_msg: Moderationsnotiz erfolgreich gelöscht! | ||||||
|     custom_emojis: |     custom_emojis: | ||||||
|  |       copied_msg: Eine lokale Kopie des Emojis wurde erstellt | ||||||
|  |       copy: Kopieren | ||||||
|  |       copy_failed_msg: Es konnte keine lokale Kopie des Emojis erstellt werden | ||||||
|       created_msg: Emoji erstellt! |       created_msg: Emoji erstellt! | ||||||
|       delete: Löschen |       delete: Löschen | ||||||
|       destroyed_msg: Emoji gelöscht! |       destroyed_msg: Emoji gelöscht! | ||||||
|  |       disable: Deaktivieren | ||||||
|  |       disabled_msg: Das Emoji wurde deaktiviert | ||||||
|       emoji: Emoji |       emoji: Emoji | ||||||
|  |       enable: Aktivieren | ||||||
|  |       enabled_msg: Das Emoji wurde aktiviert | ||||||
|       image_hint: PNG bis 50 kB |       image_hint: PNG bis 50 kB | ||||||
|       new: |       new: | ||||||
|         title: Eigenes Emoji hinzufügen |         title: Eigenes Emoji hinzufügen | ||||||
| @@ -423,7 +439,7 @@ de: | |||||||
|     reblog: |     reblog: | ||||||
|       title: "%{name} hat deinen Beitrag geteilt" |       title: "%{name} hat deinen Beitrag geteilt" | ||||||
|   remote_follow: |   remote_follow: | ||||||
|     acct: Dein Profilname@Domain, von dem aus du dieser Person folgen möchtest |     acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest | ||||||
|     missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden |     missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden | ||||||
|     proceed: Weiter |     proceed: Weiter | ||||||
|     prompt: 'Du wirst dieser Person folgen:' |     prompt: 'Du wirst dieser Person folgen:' | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ fr: | |||||||
|         prompt: Autoriser %{client_name} à utiliser votre compte ? |         prompt: Autoriser %{client_name} à utiliser votre compte ? | ||||||
|         title: Autorisation requise |         title: Autorisation requise | ||||||
|       show: |       show: | ||||||
|         title: Copy this authorization code and paste it to the application. |         title: Copiez ce code d'autorisation et collez-le dans l'application. | ||||||
|     authorized_applications: |     authorized_applications: | ||||||
|       buttons: |       buttons: | ||||||
|         revoke: Annuler |         revoke: Annuler | ||||||
| @@ -112,4 +112,4 @@ fr: | |||||||
|     scopes: |     scopes: | ||||||
|       follow: s’abonner, se désabonner, bloquer et débloquer des comptes |       follow: s’abonner, se désabonner, bloquer et débloquer des comptes | ||||||
|       read: lire les données de votre compte |       read: lire les données de votre compte | ||||||
|       write: poster en tant que vous |       write: poster en votre nom | ||||||
|   | |||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -4,6 +4,7 @@ fr: | |||||||
|     hints: |     hints: | ||||||
|       defaults: |       defaults: | ||||||
|         avatar: Au format PNG, GIF ou JPG. 2Mo maximum. Sera réduit à 120x120px |         avatar: Au format PNG, GIF ou JPG. 2Mo maximum. Sera réduit à 120x120px | ||||||
|  |         digest: Envoyé après une longue période d’inactivité et contient un résumé des notifications que vous avez reçues pendant votre absence | ||||||
|         display_name: |         display_name: | ||||||
|           one: <span class="name-counter">1</span> caractère restant |           one: <span class="name-counter">1</span> caractère restant | ||||||
|           other: <span class="name-counter">%{count}</span> caractères restants |           other: <span class="name-counter">%{count}</span> caractères restants | ||||||
| @@ -13,12 +14,13 @@ fr: | |||||||
|           one: <span class="note-counter">1</span> caractère restant |           one: <span class="note-counter">1</span> caractère restant | ||||||
|           other: <span class="note-counter">%{count}</span> caractères restants |           other: <span class="note-counter">%{count}</span> caractères restants | ||||||
|         setting_noindex: Affecte votre profil public ainsi que vos statuts |         setting_noindex: Affecte votre profil public ainsi que vos statuts | ||||||
|  |         setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil. | ||||||
|       imports: |       imports: | ||||||
|         data: Un fichier CSV généré par une autre instance de Mastodon |         data: Un fichier CSV généré par une autre instance de Mastodon | ||||||
|       sessions: |       sessions: | ||||||
|         otp: Entrez le code d’authentification à deux facteurs depuis votre téléphone ou utilisez un de vos codes de récupération. |         otp: Entrez le code d’authentification à deux facteurs depuis votre téléphone ou utilisez un de vos codes de récupération. | ||||||
|       user: |       user: | ||||||
|         filtered_languages: Les langues sélectionnées seront retirées de vos fils publics. |         filtered_languages: Les langues sélectionnées seront filtrées hors de vos fils publics pour vous | ||||||
|     labels: |     labels: | ||||||
|       defaults: |       defaults: | ||||||
|         avatar: Image de profil |         avatar: Image de profil | ||||||
| @@ -43,6 +45,7 @@ fr: | |||||||
|         setting_delete_modal: Afficher un dialogue de confirmation avant de supprimer un pouet |         setting_delete_modal: Afficher un dialogue de confirmation avant de supprimer un pouet | ||||||
|         setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles |         setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles | ||||||
|         setting_system_font_ui: Utiliser la police par défaut du système |         setting_system_font_ui: Utiliser la police par défaut du système | ||||||
|  |         setting_theme: Thème du site | ||||||
|         setting_unfollow_modal: Afficher un dialogue de confirmation avant de vous désabonner d’un compte |         setting_unfollow_modal: Afficher un dialogue de confirmation avant de vous désabonner d’un compte | ||||||
|         severity: Séverité |         severity: Séverité | ||||||
|         type: Type d’import |         type: Type d’import | ||||||
|   | |||||||
| @@ -4,11 +4,7 @@ const env = process.env.NODE_ENV || 'development'; | |||||||
|  |  | ||||||
| module.exports = { | module.exports = { | ||||||
|   test: /\.js$/, |   test: /\.js$/, | ||||||
|   // include react-intl because transform-react-remove-prop-types needs to apply to it |   exclude: /node_modules/, | ||||||
|   exclude: { |  | ||||||
|     test: /node_modules/, |  | ||||||
|     exclude: /react-intl[\/\\](?!locale-data)/, |  | ||||||
|   }, |  | ||||||
|   loader: 'babel-loader', |   loader: 'babel-loader', | ||||||
|   options: { |   options: { | ||||||
|     forceEnv: env, |     forceEnv: env, | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								config/webpack/loaders/babel_external.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								config/webpack/loaders/babel_external.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | const { resolve } = require('path'); | ||||||
|  |  | ||||||
|  | const env = process.env.NODE_ENV || 'development'; | ||||||
|  |  | ||||||
|  | if (env === 'development') { | ||||||
|  |   module.exports = {}; | ||||||
|  | } else { | ||||||
|  |   // babel options to apply only to external libraries, e.g. remove-prop-types | ||||||
|  |   module.exports = { | ||||||
|  |     test: /\.js$/, | ||||||
|  |     include: /node_modules/, | ||||||
|  |     loader: 'babel-loader', | ||||||
|  |     options: { | ||||||
|  |       babelrc: false, | ||||||
|  |       plugins: [ | ||||||
|  |         'transform-react-remove-prop-types', | ||||||
|  |       ], | ||||||
|  |       cacheDirectory: env === 'development' ? false : resolve(__dirname, '..', '..', '..', 'tmp', 'cache', 'babel-loader-external'), | ||||||
|  |     }, | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @@ -335,7 +335,10 @@ module Mastodon | |||||||
|  |  | ||||||
|       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) |       start_arel = table.project(table[:id]).order(table[:id].asc).take(1) | ||||||
|       start_arel = yield table, start_arel if block_given? |       start_arel = yield table, start_arel if block_given? | ||||||
|       start_id = exec_query(start_arel.to_sql).to_hash.first['id'].to_i |       first_row = exec_query(start_arel.to_sql).to_hash.first | ||||||
|  |       # In case there are no rows but we didn't catch it in the estimated size: | ||||||
|  |       return unless first_row | ||||||
|  |       start_id = first_row['id'].to_i | ||||||
|        |        | ||||||
|       say "Migrating #{table_name}.#{column} (~#{total.to_i} rows)" |       say "Migrating #{table_name}.#{column} (~#{total.to_i} rows)" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ module Mastodon | |||||||
|     end |     end | ||||||
|  |  | ||||||
|     def flags |     def flags | ||||||
|       'rc1' |       'rc2' | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     def to_a |     def to_a | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 13 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.0 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.5 KiB | 
| @@ -2192,8 +2192,8 @@ elliptic@^6.0.0: | |||||||
|     minimalistic-crypto-utils "^1.0.0" |     minimalistic-crypto-utils "^1.0.0" | ||||||
|  |  | ||||||
| emoji-mart@Gargron/emoji-mart#build: | emoji-mart@Gargron/emoji-mart#build: | ||||||
|   version "2.1.3" |   version "2.1.4" | ||||||
|   resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/74721c33954e239b0dba7e24bc7be0b4a650063a" |   resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/a5e1afe5ebcf2841e611d20d261b029581cbe051" | ||||||
|  |  | ||||||
| emoji-regex@^6.1.0: | emoji-regex@^6.1.0: | ||||||
|   version "6.4.3" |   version "6.4.3" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user