{(detailed || fullscreen) &&
@@ -368,6 +429,7 @@ class Video extends React.PureComponent {
+ {!onCloseVideo && }
{(!fullscreen && onOpenVideo) && }
{onCloseVideo && }
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 8cd9ba773a..2d73f84e09 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -93,7 +93,7 @@
"confirmations.redraft.confirm": "إزالة و إعادة الصياغة",
"confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته ؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.",
"confirmations.reply.confirm": "رد",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟",
"confirmations.unfollow.confirm": "إلغاء المتابعة",
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
"embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "نتائج البحث",
"emoji_button.symbols": "رموز",
"emoji_button.travel": "أماكن و أسفار",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
"empty_column.community": "الخط الزمني المحلي فارغ. أكتب شيئا ما للعامة كبداية !",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.",
"getting_started.security": "الأمان",
"getting_started.terms": "شروط الخدمة",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "أساسية",
"home.column_settings.show_reblogs": "عرض الترقيات",
"home.column_settings.show_replies": "عرض الردود",
@@ -313,10 +321,11 @@
"status.show_less_all": "طي الكل",
"status.show_more": "أظهر المزيد",
"status.show_more_all": "توسيع الكل",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "فك الكتم عن المحادثة",
"status.unpin": "فك التدبيس من الملف الشخصي",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "إلغاء الإقتراح",
+ "suggestions.header": "يمكن أن يهمك…",
"tabs_bar.federated_timeline": "الموحَّد",
"tabs_bar.home": "الرئيسية",
"tabs_bar.local_timeline": "المحلي",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index ab0f5b8926..e22c46e9ed 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -2,19 +2,19 @@
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Robó",
"account.block": "Bloquiar a @{name}",
- "account.block_domain": "Hide everything from {domain}",
+ "account.block_domain": "Anubrir tolo de {domain}",
"account.blocked": "Blocked",
"account.direct": "Unviar un mensaxe direutu a @{name}",
- "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
- "account.domain_blocked": "Domain hidden",
- "account.edit_profile": "Editar perfil",
- "account.endorse": "Feature on profile",
+ "account.disclaimer_full": "La información d'embaxo podría reflexar de mou incompletu'l perfil del usuariu.",
+ "account.domain_blocked": "Dominiu anubríu",
+ "account.edit_profile": "Editar el perfil",
+ "account.endorse": "Destacar nel perfil",
"account.follow": "Follow",
"account.followers": "Siguidores",
- "account.followers.empty": "No one follows this user yet.",
- "account.follows": "Follows",
+ "account.followers.empty": "Naide sigue a esti usuariu entá.",
+ "account.follows": "Sigue a",
"account.follows.empty": "Esti usuariu entá nun sigue a naide.",
- "account.follows_you": "Follows you",
+ "account.follows_you": "Síguete",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.media": "Media",
@@ -30,12 +30,12 @@
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.unblock": "Desbloquiar a @{name}",
- "account.unblock_domain": "Unhide {domain}",
+ "account.unblock_domain": "Amosar {domain}",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
- "account.view_full_profile": "View full profile",
+ "account.view_full_profile": "Ver el perfil completu",
"alert.unexpected.message": "Asocedió un fallu inesperáu.",
"alert.unexpected.title": "¡Ups!",
"boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada",
@@ -46,7 +46,7 @@
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"column.blocks": "Usuarios bloquiaos",
- "column.community": "Local timeline",
+ "column.community": "Llinia temporal llocal",
"column.direct": "Mensaxes direutos",
"column.domain_blocks": "Dominios anubríos",
"column.favourites": "Favoritos",
@@ -61,7 +61,7 @@
"column_header.hide_settings": "Hide settings",
"column_header.moveLeft_settings": "Mover la columna a la esquierda",
"column_header.moveRight_settings": "Mover la columna a la drecha",
- "column_header.pin": "Pin",
+ "column_header.pin": "Fixar",
"column_header.show_settings": "Show settings",
"column_header.unpin": "Desfixar",
"column_subheading.settings": "Axustes",
@@ -84,47 +84,48 @@
"confirmations.block.message": "¿De xuru que quies bloquiar a {name}?",
"confirmations.delete.confirm": "Delete",
"confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?",
- "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.confirm": "Desaniciar",
"confirmations.delete_list.message": "¿De xuru que quies desaniciar dafechu esta llista?",
- "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.confirm": "Anubrir tol dominiu",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.mute.confirm": "Mute",
"confirmations.mute.message": "¿De xuru que quies silenciar a {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.confirm": "Desaniciar y reeditar",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
"confirmations.reply.confirm": "Reply",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Here is what it will look like:",
- "emoji_button.activity": "Actividá",
+ "confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
+ "embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.",
+ "embed.preview": "Asina ye como va vese:",
+ "emoji_button.activity": "Actividaes",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Banderes",
- "emoji_button.food": "Comída y bébora",
+ "emoji_button.food": "Comida y bébora",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "¡Nun hai fustaxes! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Oxetos",
"emoji_button.people": "Xente",
- "emoji_button.recent": "Frequently used",
- "emoji_button.search": "Search...",
+ "emoji_button.recent": "Úsase davezu",
+ "emoji_button.search": "Guetar...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes y llugares",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Entá nun bloquiesti a dengún usuariu.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
- "empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí",
+ "empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
"empty_column.domain_blocks": "Entá nun hai dominios anubríos.",
"empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
"empty_column.follow_requests": "Entá nun tienes denguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
- "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home": "¡Tienes la llinia temporal balera! Visita {public} o usa la gueta pa entamar y conocer a otros usuarios.",
"empty_column.home.public_timeline": "la llinia temporal pública",
- "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen estaos nuevos, van apaecer equí.",
"empty_column.lists": "Entá nun tienes denguna llista. Cuando crees una, va amosase equí.",
- "empty_column.mutes": "Enta nun silenciesti a dengún usuariu.",
+ "empty_column.mutes": "Entá nun silenciesti a dengún usuariu.",
"empty_column.notifications": "Entá nun tienes dengún avisu. Interactua con otros p'aniciar la conversación.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Autorizar",
@@ -132,17 +133,24 @@
"getting_started.developers": "Desendolcadores",
"getting_started.documentation": "Documentación",
"getting_started.find_friends": "Alcontrar collacios de Twitter",
- "getting_started.heading": "Getting started",
+ "getting_started.heading": "Entamu",
"getting_started.invite": "Convidar xente",
"getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en {github} (GitHub).",
"getting_started.security": "Seguranza",
"getting_started.terms": "Términos del serviciu",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basic",
- "home.column_settings.show_reblogs": "Show boosts",
- "home.column_settings.show_replies": "Show replies",
+ "home.column_settings.show_reblogs": "Amosar toots compartíos",
+ "home.column_settings.show_replies": "Amosar rempuestes",
"keyboard_shortcuts.back": "pa dir p'atrás",
"keyboard_shortcuts.blocked": "p'abrir la llista d'usuarios bloquiaos",
- "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.boost": "pa compartir un toot",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Descripción",
@@ -174,29 +182,29 @@
"lightbox.close": "Close",
"lightbox.next": "Siguiente",
"lightbox.previous": "Previous",
- "lists.account.add": "Add to list",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Delete list",
- "lists.edit": "Edit list",
+ "lists.account.add": "Amestar a la llista",
+ "lists.account.remove": "Desaniciar de la llista",
+ "lists.delete": "Desaniciar la llista",
+ "lists.edit": "Editar la llista",
"lists.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
- "loading_indicator.label": "Loading...",
+ "lists.new.title_placeholder": "Títulu nuevu de la llista",
+ "lists.search": "Guetar ente la xente que sigues",
+ "lists.subheading": "Les tos llistes",
+ "loading_indicator.label": "Cargando...",
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Nun s'alcontró",
"missing_indicator.sublabel": "Esti recursu nun pudo alcontrase",
"mute_modal.hide_notifications": "Hide notifications from this user?",
- "navigation_bar.apps": "Aplicaciones móviles",
+ "navigation_bar.apps": "Aplicaciones pa móviles",
"navigation_bar.blocks": "Usuarios bloquiaos",
- "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.community_timeline": "Llinia temporal llocal",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Mensaxes direutos",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Dominios anubríos",
- "navigation_bar.edit_profile": "Editar perfil",
+ "navigation_bar.edit_profile": "Editar el perfil",
"navigation_bar.favourites": "Favoritos",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Pallabres silenciaes",
"navigation_bar.follow_requests": "Solicitúes de siguimientu",
"navigation_bar.info": "Tocante a esta instancia",
"navigation_bar.keyboard_shortcuts": "Atayos",
@@ -211,15 +219,15 @@
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} siguióte",
"notification.mention": "{name} mentóte",
- "notification.reblog": "{name} boosted your status",
+ "notification.reblog": "{name} compartió'l to estáu",
"notifications.clear": "Llimpiar avisos",
"notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?",
"notifications.column_settings.alert": "Avisos d'escritoriu",
- "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.follow": "Siguidores nuevos:",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.reblog": "Toots compartíos:",
"notifications.column_settings.show": "Amosar en columna",
"notifications.column_settings.sound": "Reproducir soníu",
"notifications.group": "{count} avisos",
@@ -239,7 +247,7 @@
"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": "aplicaciones móviles",
+ "onboarding.page_six.various_app": "aplicaciones pa móviles",
"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.",
@@ -253,7 +261,7 @@
"privacy.public.short": "Public",
"privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "Unlisted",
- "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.label": "Cargando…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
@@ -268,20 +276,20 @@
"report.submit": "Submit",
"report.target": "Report {target}",
"search.placeholder": "Search",
- "search_popout.search_format": "Advanced search format",
+ "search_popout.search_format": "Formatu de gueta avanzada",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "etiqueta",
"search_popout.tips.status": "estáu",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "usuariu",
"search_results.accounts": "Xente",
- "search_results.hashtags": "Hashtags",
+ "search_results.hashtags": "Etiquetes",
"search_results.statuses": "Toots",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"standalone.public_title": "A look inside...",
"status.block": "Bloquiar a @{name}",
- "status.cancel_reblog_private": "Unboost",
- "status.cannot_reblog": "This post cannot be boosted",
+ "status.cancel_reblog_private": "Dexar de compartir",
+ "status.cannot_reblog": "Esti artículu nun pue compartise",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Unviar un mensaxe direutu a @{name}",
@@ -289,54 +297,55 @@
"status.favourite": "Favourite",
"status.filtered": "Filtered",
"status.load_more": "Cargar más",
- "status.media_hidden": "Media hidden",
+ "status.media_hidden": "Mediu anubríu",
"status.mention": "Mentar a @{name}",
"status.more": "Más",
"status.mute": "Silenciar a @{name}",
- "status.mute_conversation": "Mute conversation",
+ "status.mute_conversation": "Silenciar la conversación",
"status.open": "Espander esti estáu",
- "status.pin": "Pin on profile",
- "status.pinned": "Pinned toot",
+ "status.pin": "Fixar nel perfil",
+ "status.pinned": "Toot fixáu",
"status.read_more": "Read more",
- "status.reblog": "Boost",
- "status.reblog_private": "Boost to original audience",
- "status.reblogged_by": "{name} boosted",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.reblog": "Compartir",
+ "status.reblog_private": "Compartir cola audiencia orixinal",
+ "status.reblogged_by": "{name} compartió",
+ "status.reblogs.empty": "Naide nun compartió esti toot entá. Cuando daquién lo faiga, va amosase equí.",
+ "status.redraft": "Desaniciar y reeditar",
"status.reply": "Responder",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
- "status.sensitive_toggle": "Click to view",
- "status.sensitive_warning": "Sensitive content",
+ "status.sensitive_toggle": "Fai clic pa velu",
+ "status.sensitive_warning": "Conteníu sensible",
"status.share": "Share",
"status.show_less": "Amosar menos",
"status.show_less_all": "Show less for all",
"status.show_more": "Amosar más",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
- "status.unpin": "Unpin from profile",
+ "status.unpin": "Desfixar del perfil",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Aniciu",
- "tabs_bar.local_timeline": "Local",
+ "tabs_bar.local_timeline": "Llocal",
"tabs_bar.notifications": "Avisos",
"tabs_bar.search": "Search",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "El borrador va perdese si coles de Mastodon.",
"upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add media",
- "upload_form.description": "Describe for the visually impaired",
+ "upload_form.description": "Descripción pa discapacitaos visuales",
"upload_form.focus": "Crop",
- "upload_form.undo": "Delete",
- "upload_progress.label": "Uploading...",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Play",
+ "upload_form.undo": "Desaniciar",
+ "upload_progress.label": "Xubiendo...",
+ "video.close": "Zarrar el videu",
+ "video.exit_fullscreen": "Colar de la pantalla completa",
+ "video.expand": "Espander el videu",
+ "video.fullscreen": "Pantalla completa",
+ "video.hide": "Anubrir el videu",
+ "video.mute": "Silenciar el soníu",
+ "video.pause": "Posar",
+ "video.play": "Reproducir",
"video.unmute": "Unmute sound"
}
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 853361b804..1a5a705935 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index f4c5f97bef..bc1fd89504 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultats de la cerca",
"emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Encara no has bloquejat cap usuari.",
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per fer rodar la pilota!",
"empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir o informar de problemes a GitHub a {github}.",
"getting_started.security": "Seguretat",
"getting_started.terms": "Termes del servei",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Bàsic",
"home.column_settings.show_reblogs": "Mostrar impulsos",
"home.column_settings.show_replies": "Mostrar respostes",
@@ -313,10 +321,11 @@
"status.show_less_all": "Mostra menys per a tot",
"status.show_more": "Mostra més",
"status.show_more_all": "Mostra més per a tot",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Activar conversació",
"status.unpin": "Deslliga del perfil",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Descartar suggeriment",
+ "suggestions.header": "És possible que t’interessi…",
"tabs_bar.federated_timeline": "Federada",
"tabs_bar.home": "Inici",
"tabs_bar.local_timeline": "Local",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index f322ce53d8..45bf0dc435 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Risultati di a cerca",
"emoji_button.symbols": "Simbuli",
"emoji_button.travel": "Lochi è Viaghju",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.",
"empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!",
"empty_column.direct": "Ùn avete ancu nisun missaghju direttu. S'è voi mandate o ricevete unu, u vidarete quì.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.",
"getting_started.security": "Sicurità",
"getting_started.terms": "Cundizione di u serviziu",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Bàsichi",
"home.column_settings.show_reblogs": "Vede e spartere",
"home.column_settings.show_replies": "Vede e risposte",
@@ -278,7 +286,7 @@
"search_results.hashtags": "Hashtag",
"search_results.statuses": "Statuti",
"search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}",
- "standalone.public_title": "Una vista di...",
+ "standalone.public_title": "Una vista à l'internu...",
"status.block": "Bluccà @{name}",
"status.cancel_reblog_private": "Ùn sparte più",
"status.cannot_reblog": "Stu statutu ùn pò micca esse spartutu",
@@ -313,10 +321,11 @@
"status.show_less_all": "Ripiegà tuttu",
"status.show_more": "Slibrà",
"status.show_more_all": "Slibrà tuttu",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Ùn piattà più a cunversazione",
"status.unpin": "Spuntarulà da u prufile",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Righjittà a pruposta",
+ "suggestions.header": "Site forse interessatu·a da…",
"tabs_bar.federated_timeline": "Glubale",
"tabs_bar.home": "Accolta",
"tabs_bar.local_timeline": "Lucale",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index e809eb1366..80fab00c35 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -39,7 +39,7 @@
"alert.unexpected.message": "Objevila se neočekávaná chyba.",
"alert.unexpected.title": "Jejda!",
"boost_modal.combo": "Příště můžete pro přeskočení kliknout na {combo}",
- "bundle_column_error.body": "Při načtení tohoto prvku se něco pokazilo.",
+ "bundle_column_error.body": "Při načítání tohoto komponentu se něco pokazilo.",
"bundle_column_error.retry": "Zkuste to znovu",
"bundle_column_error.title": "Chyba sítě",
"bundle_modal_error.close": "Zavřít",
@@ -50,7 +50,7 @@
"column.direct": "Přímé zprávy",
"column.domain_blocks": "Skryté domény",
"column.favourites": "Oblíbené",
- "column.follow_requests": "Žádosti o sledování",
+ "column.follow_requests": "Požadavky o sledování",
"column.home": "Domů",
"column.lists": "Seznamy",
"column.mutes": "Ignorovaní uživatelé",
@@ -66,7 +66,7 @@
"column_header.unpin": "Odepnout",
"column_subheading.settings": "Nastavení",
"community.column_settings.media_only": "Pouze média",
- "compose_form.direct_message_warning": "Tento toot bude vidielný pouze zmíněným uživatelům.",
+ "compose_form.direct_message_warning": "Tento toot bude odeslán pouze zmíněným uživatelům.",
"compose_form.direct_message_warning_learn_more": "Zjistit více",
"compose_form.hashtag_warning": "Tento toot nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné tooty mohou být vyhledány podle hashtagu.",
"compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky pouze pro sledovatele.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Výsledky hledání",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestování a místa",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Ještě jste nezablokoval/a žádného uživatele.",
"empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!",
"empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon je otevřený software. Na GitHubu k němu můžete přispět nebo nahlásit chyby: {github}.",
"getting_started.security": "Zabezpečení",
"getting_started.terms": "Podmínky používání",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Základní",
"home.column_settings.show_reblogs": "Zobrazit boosty",
"home.column_settings.show_replies": "Zobrazit odpovědi",
@@ -147,7 +155,7 @@
"keyboard_shortcuts.compose": "k zaměření na psací prostor",
"keyboard_shortcuts.description": "Popis",
"keyboard_shortcuts.direct": "k otevření sloupce s přímými zprávami",
- "keyboard_shortcuts.down": "k přesunutí dolů v seznamu",
+ "keyboard_shortcuts.down": "k posunutí dolů v seznamu",
"keyboard_shortcuts.enter": "k otevření příspěvku",
"keyboard_shortcuts.favourite": "k oblíbení",
"keyboard_shortcuts.favourites": "k otevření seznamu oblíbených",
@@ -197,7 +205,7 @@
"navigation_bar.edit_profile": "Upravit profil",
"navigation_bar.favourites": "Oblíbené",
"navigation_bar.filters": "Skrytá slova",
- "navigation_bar.follow_requests": "Žádosti o sledování",
+ "navigation_bar.follow_requests": "Požadavky o sledování",
"navigation_bar.info": "O této instanci",
"navigation_bar.keyboard_shortcuts": "Klávesové zkratky",
"navigation_bar.lists": "Seznamy",
@@ -269,15 +277,15 @@
"report.target": "Nahlásit {target}",
"search.placeholder": "Hledat",
"search_popout.search_format": "Pokročilé vyhledávání",
- "search_popout.tips.full_text": "Jednoduchý textový výpis příspěvků, které jste napsal/a, oblíbil/a si, boostnul/a, nebo v nich byl/a zmíněn/a, včetně odpovídajících přezdívek, jmen a hashtagů.",
+ "search_popout.tips.full_text": "Jednoduchý textový výpis příspěvků, které jste napsal/a, oblíbil/a si, boostnul/a, nebo v nich byl/a zmíněn/a, včetně odpovídajících přezdívek, zobrazovaných jmen a hashtagů.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "příspěvek",
- "search_popout.tips.text": "Jednoduchý textový výpis odpovídajících jmen, přezdívek a hashtagů",
+ "search_popout.tips.text": "Jednoduchý textový výpis odpovídajících zobrazovaných jmen, přezdívek a hashtagů",
"search_popout.tips.user": "uživatel",
"search_results.accounts": "Lidé",
"search_results.hashtags": "Hashtagy",
"search_results.statuses": "Tooty",
- "search_results.total": "{count, number} {count, plural, one {výsledek} other {výsledků}}",
+ "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledku} other {výsledků}}",
"standalone.public_title": "Nahlédněte dovnitř...",
"status.block": "Zablokovat uživatele @{name}",
"status.cancel_reblog_private": "Zrušit boost",
@@ -313,16 +321,17 @@
"status.show_less_all": "Zobrazit méně pro všechny",
"status.show_more": "Zobrazit více",
"status.show_more_all": "Zobrazit více pro všechny",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Přestat ignorovat konverzaci",
"status.unpin": "Odepnout z profilu",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Odmítnout návrh",
+ "suggestions.header": "Mohlo by vás zajímat…",
"tabs_bar.federated_timeline": "Federovaná",
"tabs_bar.home": "Domů",
"tabs_bar.local_timeline": "Místní",
"tabs_bar.notifications": "Oznámení",
"tabs_bar.search": "Hledat",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} other {lidí}} diskutuje",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} few {lidé} many {lidí} other {lidí}} hovoří",
"ui.beforeunload": "Váš koncept se ztratí, pokud Mastodon opustíte.",
"upload_area.title": "Přetažením nahrajete",
"upload_button.label": "Přidat média (JPEG, PNG, GIF, WebM, MP4, MOV)",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 71a34272e6..4047b54d60 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Canlyniadau chwilio",
"emoji_button.symbols": "Symbolau",
"emoji_button.travel": "Teithio & Llefydd",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
"empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!",
"empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.",
"getting_started.security": "Diogelwch",
"getting_started.terms": "Telerau Gwasanaeth",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Syml",
"home.column_settings.show_reblogs": "Dangos bŵstiau",
"home.column_settings.show_replies": "Dangos ymatebion",
@@ -313,6 +321,7 @@
"status.show_less_all": "Dangos llai i bawb",
"status.show_more": "Dangos mwy",
"status.show_more_all": "Dangos mwy i bawb",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Dad-dawelu sgwrs",
"status.unpin": "Dadbinio o'r proffil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 54cae027f3..133f9e696a 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -92,8 +92,8 @@
"confirmations.mute.message": "Er du sikker på, du vil dæmpe {name}?",
"confirmations.redraft.confirm": "Slet & omskriv",
"confirmations.redraft.message": "Er du sikker på, du vil slette denne status og omskrive den? Favoritter og fremhævelser vil gå tabt og svar til det oprindelige opslag vil blive forældreløse.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Svar",
+ "confirmations.reply.message": "Hvis du svarer nu vil du overskrive den besked du er ved at skrive. Er du sikker på, du vil fortsætte?",
"confirmations.unfollow.confirm": "Følg ikke længere",
"confirmations.unfollow.message": "Er du sikker på, du ikke længere vil følge {name}?",
"embed.instructions": "Indlejre denne status på din side ved at kopiere nedenstående kode.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Søgeresultater",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Rejser & steder",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Du har ikke blokeret nogen endnu.",
"empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at starte lavinen!",
"empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager en, vil den vises her.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon er et open source software. Du kan bidrage eller rapporterer fejl på GitHub {github}.",
"getting_started.security": "Sikkerhed",
"getting_started.terms": "Vilkår",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Grundlæggende",
"home.column_settings.show_reblogs": "Vis fremhævelser",
"home.column_settings.show_replies": "Vis svar",
@@ -297,7 +305,7 @@
"status.open": "Udvid denne status",
"status.pin": "Fastgør til profil",
"status.pinned": "Fastgjort trut",
- "status.read_more": "Read more",
+ "status.read_more": "Læs mere",
"status.reblog": "Fremhæv",
"status.reblog_private": "Fremhæv til oprindeligt publikum",
"status.reblogged_by": "{name} fremhævede",
@@ -313,6 +321,7 @@
"status.show_less_all": "Vis mindre for alle",
"status.show_more": "Vis mere",
"status.show_more_all": "Vis mere for alle",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Fjern dæmpningen fra samtale",
"status.unpin": "Fjern som fastgjort fra profil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index a81a52d516..6bba6114e5 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Suchergebnisse",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reisen und Orte",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Du hast keine Profile blockiert.",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!",
"empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.",
"getting_started.security": "Sicherheit",
"getting_started.terms": "Nutzungsbedingungen",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Einfach",
"home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
"home.column_settings.show_replies": "Antworten anzeigen",
@@ -313,6 +321,7 @@
"status.show_less_all": "Zeige weniger für alles",
"status.show_more": "Mehr anzeigen",
"status.show_more_all": "Zeige mehr für alles",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Stummschaltung von Thread aufheben",
"status.unpin": "Vom Profil lösen",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 06356f8e6a..ba332be3f6 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Αποτελέσματα αναζήτησης",
"emoji_button.symbols": "Σύμβολα",
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!",
"empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Το Mastodon είναι ελεύθερο λογισμικό. Μπορείς να συνεισφέρεις ή να αναφέρεις ζητήματα στο GitHub στο {github}.",
"getting_started.security": "Ασφάλεια",
"getting_started.terms": "Όροι χρήσης",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Βασικά",
"home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
"home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
@@ -313,6 +321,7 @@
"status.show_less_all": "Δείξε λιγότερα για όλα",
"status.show_more": "Δείξε περισσότερα",
"status.show_more_all": "Δείξε περισσότερα για όλα",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης",
"status.unpin": "Ξεκαρφίτσωσε από το προφίλ",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index ef9f99abb2..f7a303cdd5 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Serĉaj rezultoj",
"emoji_button.symbols": "Simboloj",
"emoji_button.travel": "Vojaĝoj kaj lokoj",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "La loka tempolinio estas malplena. Skribu ion por plenigi ĝin!",
"empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.",
"getting_started.security": "Sekureco",
"getting_started.terms": "Uzkondiĉoj",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Bazaj agordoj",
"home.column_settings.show_reblogs": "Montri diskonigojn",
"home.column_settings.show_replies": "Montri respondojn",
@@ -313,6 +321,7 @@
"status.show_less_all": "Malgrandigi ĉiujn",
"status.show_more": "Grandigi",
"status.show_more_all": "Grandigi ĉiujn",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Malsilentigi konversacion",
"status.unpin": "Depingli de profilo",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 5112098095..7b8cfe3f3e 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultados de búsqueda",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
"empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.",
"getting_started.security": "Seguridad",
"getting_started.terms": "Términos de servicio",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar retoots",
"home.column_settings.show_replies": "Mostrar respuestas",
@@ -313,6 +321,7 @@
"status.show_less_all": "Mostrar menos para todo",
"status.show_more": "Mostrar más",
"status.show_more_all": "Mostrar más para todo",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Dejar de silenciar conversación",
"status.unpin": "Dejar de fijar",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index fb129967e3..8ce3b9ba3b 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -14,16 +14,16 @@
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
"account.follows": "Jarraitzen",
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
- "account.follows_you": "Jarraitzen zaitu",
+ "account.follows_you": "Jarraitzen dizu",
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}",
"account.media": "Media",
"account.mention": "Aipatu @{name}",
"account.moved_to": "{name} hona lekualdatu da:",
"account.mute": "Mututu @{name}",
"account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
"account.muted": "Mutututa",
- "account.posts": "Toot-ak",
+ "account.posts": "Tootak",
"account.posts_with_replies": "Toot eta erantzunak",
"account.report": "Salatu @{name}",
"account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
@@ -92,8 +92,8 @@
"confirmations.mute.message": "Ziur {name} mututu nahi duzula?",
"confirmations.redraft.confirm": "Ezabatu eta berridatzi",
"confirmations.redraft.message": "Ziur mezu hau ezabatu eta berridatzi nahi duzula? Gogokoak eta bultzadak galduko dira eta jaso dituen erantzunak umezurtz geratuko dira.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Erantzun",
+ "confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?",
"confirmations.unfollow.confirm": "Utzi jarraitzeari",
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
"embed.instructions": "Txertatu mezu hau zure webgunean beheko kodea kopatuz.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Bilaketaren emaitzak",
"emoji_button.symbols": "Sinboloak",
"emoji_button.travel": "Bidaiak eta tokiak",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
"empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
"empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.",
"getting_started.security": "Segurtasuna",
"getting_started.terms": "Erabilera baldintzak",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Oinarrizkoa",
"home.column_settings.show_reblogs": "Erakutsi bultzadak",
"home.column_settings.show_replies": "Erakutsi erantzunak",
@@ -255,8 +263,8 @@
"privacy.unlisted.short": "Zerrendatu gabea",
"regeneration_indicator.label": "Kargatzen…",
"regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
+ "relative_time.days": "{number}e",
+ "relative_time.hours": "{number}o",
"relative_time.just_now": "orain",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
@@ -297,7 +305,7 @@
"status.open": "Hedatu mezu hau",
"status.pin": "Finkatu profilean",
"status.pinned": "Finkatutako toot-a",
- "status.read_more": "Read more",
+ "status.read_more": "Irakurri gehiago",
"status.reblog": "Bultzada",
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
"status.reblogged_by": "{name}(r)en bultzada",
@@ -313,10 +321,11 @@
"status.show_less_all": "Erakutsi denetarik gutxiago",
"status.show_more": "Erakutsi gehiago",
"status.show_more_all": "Erakutsi denetarik gehiago",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Desmututu elkarrizketa",
"status.unpin": "Desfinkatu profiletik",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Errefusatu proposamena",
+ "suggestions.header": "Hau interesatu dakizuke…",
"tabs_bar.federated_timeline": "Federatua",
"tabs_bar.home": "Hasiera",
"tabs_bar.local_timeline": "Lokala",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index e1d7d9628e..befdb38049 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "نتایج جستجو",
"emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "شما هنوز هیچ کسی را مسدود نکردهاید.",
"empty_column.community": "فهرست نوشتههای محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
"empty_column.direct": "شما هیچ پیغام مستقیمی ندارید. اگر چنین پیغامی بگیرید یا بفرستید اینجا نمایش خواهد یافت.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "ماستدون یک نرمافزار آزاد است. میتوانید در ساخت آن مشارکت کنید یا مشکلاتش را در {github} گزارش دهید.",
"getting_started.security": "امنیت",
"getting_started.terms": "شرایط استفاده",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "اصلی",
"home.column_settings.show_reblogs": "نمایش بازبوقها",
"home.column_settings.show_replies": "نمایش پاسخها",
@@ -313,6 +321,7 @@
"status.show_less_all": "نمایش کمتر همه",
"status.show_more": "نمایش",
"status.show_more_all": "نمایش بیشتر همه",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "باصداکردن گفتگو",
"status.unpin": "برداشتن نوشتهٔ ثابت نمایه",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index abbcded90a..bb17255339 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -8,15 +8,15 @@
"account.disclaimer_full": "Alla olevat käyttäjän profiilitiedot saattavat olla epätäydellisiä.",
"account.domain_blocked": "Verkko-osoite piilotettu",
"account.edit_profile": "Muokkaa",
- "account.endorse": "Feature on profile",
+ "account.endorse": "Suosittele profiilissasi",
"account.follow": "Seuraa",
"account.followers": "Seuraajia",
- "account.followers.empty": "No one follows this user yet.",
+ "account.followers.empty": "Tällä käyttäjällä ei ole vielä seuraajia.",
"account.follows": "Seuraa",
- "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
"account.follows_you": "Seuraa sinua",
"account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}",
"account.media": "Media",
"account.mention": "Mainitse @{name}",
"account.moved_to": "{name} on muuttanut instanssiin:",
@@ -31,7 +31,7 @@
"account.show_reblogs": "Näytä buustaukset käyttäjältä @{name}",
"account.unblock": "Salli @{name}",
"account.unblock_domain": "Näytä {domain}",
- "account.unendorse": "Don't feature on profile",
+ "account.unendorse": "Poista suosittelu profiilistasi",
"account.unfollow": "Lakkaa seuraamasta",
"account.unmute": "Poista käyttäjän @{name} mykistys",
"account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta",
@@ -65,7 +65,7 @@
"column_header.show_settings": "Näytä asetukset",
"column_header.unpin": "Poista kiinnitys",
"column_subheading.settings": "Asetukset",
- "community.column_settings.media_only": "Media Only",
+ "community.column_settings.media_only": "Vain media",
"compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.",
"compose_form.direct_message_warning_learn_more": "Lisätietoja",
"compose_form.hashtag_warning": "Tämä tuuttaus ei näy hashtag-hauissa, koska se on listaamaton. Hashtagien avulla voi hakea vain julkisia tuuttauksia.",
@@ -90,10 +90,10 @@
"confirmations.domain_block.message": "Haluatko aivan varmasti estää koko verkko-osoitteen {domain}? Useimmiten jokunen kohdistettu esto ja mykistys riittää, ja se on suositeltavampi tapa toimia.",
"confirmations.mute.confirm": "Mykistä",
"confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.confirm": "Poista & palauta muokattavaksi",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Vastaa",
+ "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa tällä hetkellä työstämäsi viestin. Oletko varma, että haluat jatkaa?",
"confirmations.unfollow.confirm": "Lakkaa seuraamasta",
"confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta käyttäjää {name}?",
"embed.instructions": "Upota statuspäivitys sivullesi kopioimalla alla oleva koodi.",
@@ -112,61 +112,69 @@
"emoji_button.search_results": "Hakutulokset",
"emoji_button.symbols": "Symbolit",
"emoji_button.travel": "Matkailu",
- "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.",
"empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!",
"empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.",
- "empty_column.domain_blocks": "There are no hidden domains yet.",
- "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
- "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
- "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä piilotettu.",
+ "empty_column.favourited_statuses": "Et ole vielä lisännyt tuuttauksia suosikkeihisi. Kun teet niin, tuuttaus näkyy tässä.",
+ "empty_column.favourites": "Kukaan ei ole vielä lisännyt tätä tuuttausta suosikkeihinsa. Kun joku tekee niin, näkyy kyseinen henkilö tässä.",
+ "empty_column.follow_requests": "Sinulla ei ole vielä seurauspyyntöjä. Kun saat sellaisen, näkyy se tässä.",
"empty_column.hashtag": "Tällä hashtagilla ei ole vielä mitään.",
"empty_column.home": "Kotiaikajanasi on tyhjä! {public} ja hakutoiminto auttavat alkuun ja kohtaamaan muita käyttäjiä.",
"empty_column.home.public_timeline": "yleinen aikajana",
"empty_column.list": "Lista on vielä tyhjä. Listan jäsenten julkaisemat tilapäivitykset tulevat tähän näkyviin.",
- "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
- "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.lists": "Sinulla ei ole vielä yhtään listaa. Kun luot sellaisen, näkyy se tässä.",
+ "empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.",
"empty_column.notifications": "Sinulle ei ole vielä ilmoituksia. Aloita keskustelu juttelemalla muille.",
"empty_column.public": "Täällä ei ole mitään! Saat sisältöä, kun kirjoitat jotain julkisesti tai käyt manuaalisesti seuraamassa muiden instanssien käyttäjiä",
"follow_request.authorize": "Valtuuta",
"follow_request.reject": "Hylkää",
- "getting_started.developers": "Developers",
+ "getting_started.developers": "Kehittäjille",
"getting_started.documentation": "Documentation",
- "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.find_friends": "Löydä ystäväsi Twitteristä",
"getting_started.heading": "Aloitus",
- "getting_started.invite": "Invite people",
+ "getting_started.invite": "Kutsu ihmisiä",
"getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
+ "getting_started.security": "Tunnukset",
+ "getting_started.terms": "Käyttöehdot",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Perusasetukset",
"home.column_settings.show_reblogs": "Näytä buustaukset",
"home.column_settings.show_replies": "Näytä vastaukset",
"keyboard_shortcuts.back": "liiku taaksepäin",
- "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.blocked": "avaa lista estetyistä käyttäjistä",
"keyboard_shortcuts.boost": "buustaa",
"keyboard_shortcuts.column": "siirrä fokus tietyn sarakkeen tilapäivitykseen",
"keyboard_shortcuts.compose": "siirry tekstinsyöttöön",
"keyboard_shortcuts.description": "Kuvaus",
- "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.direct": "avaa pikaviestisarake",
"keyboard_shortcuts.down": "siirry listassa alaspäin",
"keyboard_shortcuts.enter": "avaa tilapäivitys",
"keyboard_shortcuts.favourite": "tykkää",
- "keyboard_shortcuts.favourites": "to open favourites list",
- "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.favourites": "avaa lista suosikeista",
+ "keyboard_shortcuts.federated": "avaa yleinen aikajana",
"keyboard_shortcuts.heading": "Näppäinkomennot",
- "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.home": "avaa kotiaikajana",
"keyboard_shortcuts.hotkey": "Pikanäppäin",
"keyboard_shortcuts.legend": "näytä tämä selite",
- "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.local": "avaa paikallinen aikajana",
"keyboard_shortcuts.mention": "mainitse julkaisija",
- "keyboard_shortcuts.muted": "to open muted users list",
- "keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
- "keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.muted": "avaa lista mykistetyistä käyttäjistä",
+ "keyboard_shortcuts.my_profile": "avaa profiilisi",
+ "keyboard_shortcuts.notifications": "avaa ilmoitukset-sarake",
+ "keyboard_shortcuts.pinned": "avaa lista kiinnitetyistä tuuttauksista",
+ "keyboard_shortcuts.profile": "avaa kirjoittajan profiili",
"keyboard_shortcuts.reply": "vastaa",
- "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.requests": "avaa lista seurauspyynnöistä",
"keyboard_shortcuts.search": "siirry hakukenttään",
- "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.start": "avaa \"Aloitus\" -sarake",
"keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toot": "ala kirjoittaa uutta tuuttausta",
"keyboard_shortcuts.unfocus": "siirry pois tekstikentästä tai hakukentästä",
@@ -187,16 +195,16 @@
"missing_indicator.label": "Ei löytynyt",
"missing_indicator.sublabel": "Tätä resurssia ei löytynyt",
"mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
- "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.apps": "Mobiiliapplikaatiot",
"navigation_bar.blocks": "Estetyt käyttäjät",
"navigation_bar.community_timeline": "Paikallinen aikajana",
- "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.compose": "Kirjoita uusi tuuttaus",
"navigation_bar.direct": "Viestit",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Piilotetut verkkotunnukset",
"navigation_bar.edit_profile": "Muokkaa profiilia",
"navigation_bar.favourites": "Suosikit",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Mykistetyt sanat",
"navigation_bar.follow_requests": "Seuraamispyynnöt",
"navigation_bar.info": "Tietoa tästä instanssista",
"navigation_bar.keyboard_shortcuts": "Näppäinkomennot",
@@ -207,7 +215,7 @@
"navigation_bar.pins": "Kiinnitetyt tuuttaukset",
"navigation_bar.preferences": "Asetukset",
"navigation_bar.public_timeline": "Yleinen aikajana",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Tunnukset",
"notification.favourite": "{name} tykkäsi tilastasi",
"notification.follow": "{name} seurasi sinua",
"notification.mention": "{name} mainitsi sinut",
@@ -287,7 +295,7 @@
"status.direct": "Viesti käyttäjälle @{name}",
"status.embed": "Upota",
"status.favourite": "Tykkää",
- "status.filtered": "Filtered",
+ "status.filtered": "Suodatettu",
"status.load_more": "Lataa lisää",
"status.media_hidden": "Media piilotettu",
"status.mention": "Mainitse @{name}",
@@ -297,12 +305,12 @@
"status.open": "Laajenna tilapäivitys",
"status.pin": "Kiinnitä profiiliin",
"status.pinned": "Kiinnitetty tuuttaus",
- "status.read_more": "Read more",
+ "status.read_more": "Näytä enemmän",
"status.reblog": "Buustaa",
"status.reblog_private": "Buustaa alkuperäiselle yleisölle",
"status.reblogged_by": "{name} buustasi",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
- "status.redraft": "Delete & re-draft",
+ "status.redraft": "Poista & palauta muokattavaksi",
"status.reply": "Vastaa",
"status.replyAll": "Vastaa ketjuun",
"status.report": "Raportoi @{name}",
@@ -313,6 +321,7 @@
"status.show_less_all": "Näytä vähemmän kaikista",
"status.show_more": "Näytä lisää",
"status.show_more_all": "Näytä lisää kaikista",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Poista keskustelun mykistys",
"status.unpin": "Irrota profiilista",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index c6cb3cba8c..85cafb18c0 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Résultats de la recherche",
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux & Voyages",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Vous n’avez bloqué aucun utilisateur pour le moment.",
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !",
"empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.",
@@ -137,6 +138,13 @@
"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.",
"getting_started.security": "Sécurité",
"getting_started.terms": "Conditions d’utilisation",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basique",
"home.column_settings.show_reblogs": "Afficher les partages",
"home.column_settings.show_replies": "Afficher les réponses",
@@ -313,10 +321,11 @@
"status.show_less_all": "Tout replier",
"status.show_more": "Déplier",
"status.show_more_all": "Tout déplier",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Ne plus masquer la conversation",
"status.unpin": "Retirer du profil",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Rejeter la suggestion",
+ "suggestions.header": "Vous pourriez être intéressé par.…",
"tabs_bar.federated_timeline": "Fil public global",
"tabs_bar.home": "Accueil",
"tabs_bar.local_timeline": "Fil public local",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 98011dac7a..f2a8aec3a0 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultados da busca",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes e Lugares",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Non bloqueou ningunha usuaria polo de agora.",
"empty_column.community": "A liña temporal local está baldeira. Escriba algo de xeito público para que rule!",
"empty_column.direct": "Aínda non ten mensaxes directas. Cando envíe ou reciba unha, aparecerá aquí.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.",
"getting_started.security": "Seguridade",
"getting_started.terms": "Termos do servizo",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar repeticións",
"home.column_settings.show_replies": "Mostrar respostas",
@@ -313,10 +321,11 @@
"status.show_less_all": "Mostrar menos para todas",
"status.show_more": "Mostrar máis",
"status.show_more_all": "Mostrar máis para todas",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Non acalar a conversa",
"status.unpin": "Despegar do perfil",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Rexeitar suxestión",
+ "suggestions.header": "Podería estar interesada en…",
"tabs_bar.federated_timeline": "Federado",
"tabs_bar.home": "Inicio",
"tabs_bar.local_timeline": "Local",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index d0c96917e3..3bcd825ae9 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "תוצאות חיפוש",
"emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "למתחילים",
"home.column_settings.show_reblogs": "הצגת הדהודים",
"home.column_settings.show_replies": "הצגת תגובות",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "הראה יותר",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "הסרת השתקת שיחה",
"status.unpin": "לשחרר מקיבוע באודות",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index c50138e23f..33d2b3e373 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & Mjesta",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon je softver otvorenog koda. Možeš pridonijeti ili prijaviti probleme na GitHubu {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Pokaži boostove",
"home.column_settings.show_replies": "Pokaži odgovore",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Pokaži više",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Poništi utišavanje razgovora",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 90d186d577..51d65f98ca 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Keresési találatok",
"emoji_button.symbols": "Szimbólumok",
"emoji_button.travel": "Utazás és Helyek",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "A helyi idővonal üres. Írj egy publikus stástuszt, hogy elindítsd a labdát!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon egy nyílt forráskódú szoftver. Hozzájárulás vagy problémák jelentése a GitHub-on {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Alap",
"home.column_settings.show_reblogs": "Ismétlések mutatása",
"home.column_settings.show_replies": "Válaszok mutatása",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Többet",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Beszélgetés némításának elvonása",
"status.unpin": "Kitűzés eltávolítása a profilról",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 388cc43811..76c96ff038 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Որոնման արդյունքներ",
"emoji_button.symbols": "Նշաններ",
"emoji_button.travel": "Ուղեւորություն եւ տեղանքներ",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Տեղական հոսքը դատա՛րկ է։ Հրապարակային մի բան գրիր շարժիչը խոդ տալու համար։",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրեպներ զեկուցել ԳիթՀաբում՝ {github}։",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Հիմնական",
"home.column_settings.show_reblogs": "Ցուցադրել տարածածները",
"home.column_settings.show_replies": "Ցուցադրել պատասխանները",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Ավելին",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Ապալռեցնել խոսակցությունը",
"status.unpin": "Հանել անձնական էջից",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 4f3b654abc..5280d96c26 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Hasil pencarian",
"emoji_button.symbols": "Simbol",
"emoji_button.travel": "Tempat Wisata",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Dasar",
"home.column_settings.show_reblogs": "Tampilkan boost",
"home.column_settings.show_replies": "Tampilkan balasan",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Tampilkan semua",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 55a5ba748b..a8a162d826 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Simpla",
"home.column_settings.show_reblogs": "Montrar repeti",
"home.column_settings.show_replies": "Montrar respondi",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Montrar plue",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index d6f6ff3e23..7907909c51 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Risultati della ricerca",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Viaggi e luoghi",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Non hai ancora bloccato nessun utente.",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
"empty_column.direct": "Non hai ancora nessun messaggio diretto. Quando ne manderai o riceverai qualcuno, apparirà qui.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.",
"getting_started.security": "Sicurezza",
"getting_started.terms": "Condizioni del servizio",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Semplice",
"home.column_settings.show_reblogs": "Mostra post condivisi",
"home.column_settings.show_replies": "Mostra risposte",
@@ -313,10 +321,11 @@
"status.show_less_all": "Mostra meno per tutti",
"status.show_more": "Mostra di più",
"status.show_more_all": "Mostra di più per tutti",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Annulla silenzia conversazione",
"status.unpin": "Non fissare in cima al profilo",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Elimina suggerimento",
+ "suggestions.header": "Ti potrebbe interessare…",
"tabs_bar.federated_timeline": "Federazione",
"tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Locale",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index a79f9db868..e774bb70b8 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -326,7 +326,7 @@
"status.show_less_all": "全て隠す",
"status.show_more": "もっと見る",
"status.show_more_all": "全て見る",
- "status.show_thread": "続きを読む",
+ "status.show_thread": "スレッドを表示",
"status.unmute_conversation": "会話のミュートを解除",
"status.unpin": "プロフィールの固定表示を解除",
"suggestions.dismiss": "隠す",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 5d6537b906..cbb6391367 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "ძებნის შედეგები",
"emoji_button.symbols": "სიმბოლოები",
"emoji_button.travel": "მოგზაურობა და ადგილები",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!",
"empty_column.direct": "ჯერ პირდაპირი წერილები არ გაქვთ. როდესაც მიიღებთ ან გააგზავნით, გამოჩნდება აქ.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "მასტოდონი ღია პროგრამაა. შეგიძლიათ შეუწყოთ ხელი ან შექმნათ პრობემის რეპორტი {github}-ზე.",
"getting_started.security": "უსაფრთხოება",
"getting_started.terms": "მომსახურების პირობები",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "ძირითადი",
"home.column_settings.show_reblogs": "ბუსტების ჩვენება",
"home.column_settings.show_replies": "პასუხების ჩვენება",
@@ -313,6 +321,7 @@
"status.show_less_all": "აჩვენე ნაკლები ყველაზე",
"status.show_more": "აჩვენე მეტი",
"status.show_more_all": "აჩვენე მეტი ყველაზე",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "საუბარზე გაჩუმების მოშორება",
"status.unpin": "პროფილიდან პინის მოშორება",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index a7228d4d55..cd481b9e5c 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "검색 결과",
"emoji_button.symbols": "기호",
"emoji_button.travel": "여행과 장소",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "아직 아무도 차단하지 않았습니다.",
"empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",
"empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon은 오픈 소스 소프트웨어입니다. 누구나 GitHub({github})에서 개발에 참여하거나, 문제를 보고할 수 있습니다.",
"getting_started.security": "보안",
"getting_started.terms": "이용 약관",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "기본 설정",
"home.column_settings.show_reblogs": "부스트 표시",
"home.column_settings.show_replies": "답글 표시",
@@ -313,10 +321,11 @@
"status.show_less_all": "모두 접기",
"status.show_more": "더 보기",
"status.show_more_all": "모두 펼치기",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "이 대화의 뮤트 해제하기",
"status.unpin": "고정 해제",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "추천 지우기",
+ "suggestions.header": "이것에 관심이 있을 것 같습니다…",
"tabs_bar.federated_timeline": "연합",
"tabs_bar.home": "홈",
"tabs_bar.local_timeline": "로컬",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
new file mode 100644
index 0000000000..3e243b743a
--- /dev/null
+++ b/app/javascript/mastodon/locales/ms.json
@@ -0,0 +1,351 @@
+{
+ "account.add_or_remove_from_list": "Add or Remove from lists",
+ "account.badges.bot": "Bot",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Hide everything from {domain}",
+ "account.blocked": "Blocked",
+ "account.direct": "Direct message @{name}",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
+ "account.domain_blocked": "Domain hidden",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval. Click to cancel follow request",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account.view_full_profile": "View full profile",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.retry": "Try again",
+ "bundle_column_error.title": "Network error",
+ "bundle_modal_error.close": "Close",
+ "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.retry": "Try again",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.domain_blocks": "Hidden domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.media_only": "Media Only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.reply.confirm": "Reply",
+ "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.developers": "Developers",
+ "getting_started.documentation": "Documentation",
+ "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "About this instance",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.mention": "{name} mentioned you",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.group": "{count} notifications",
+ "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.full_handle": "Your full handle",
+ "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
+ "onboarding.page_one.welcome": "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",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "standalone.public_title": "A look inside...",
+ "status.block": "Block @{name}",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.read_more": "Read more",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Click to view",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "suggestions.dismiss": "Dismiss suggestion",
+ "suggestions.header": "You might be interested in…",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.focus": "Crop",
+ "upload_form.undo": "Delete",
+ "upload_progress.label": "Uploading...",
+ "video.close": "Close video",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index ec53a66b4c..d8dea93d6d 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Zoekresultaten",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
"empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.",
"getting_started.security": "Beveiliging",
"getting_started.terms": "Voorwaarden",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Algemeen",
"home.column_settings.show_reblogs": "Boosts tonen",
"home.column_settings.show_replies": "Reacties tonen",
@@ -313,10 +321,11 @@
"status.show_less_all": "Alles minder tonen",
"status.show_more": "Meer tonen",
"status.show_more_all": "Alles meer tonen",
- "status.unmute_conversation": "Conversatie niet langer negeren",
+ "status.show_thread": "Show thread",
+ "status.unmute_conversation": "Gesprek niet langer negeren",
"status.unpin": "Van profielpagina losmaken",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Suggestie verwerpen",
+ "suggestions.header": "Je bent waarschijnlijk ook geïnteresseerd in…",
"tabs_bar.federated_timeline": "Globaal",
"tabs_bar.home": "Start",
"tabs_bar.local_timeline": "Lokaal",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index d827a9816d..ea4e76de40 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Søkeresultat",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Enkel",
"home.column_settings.show_reblogs": "Vis fremhevinger",
"home.column_settings.show_replies": "Vis svar",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Vis mer",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Ikke demp samtale",
"status.unpin": "Angre festing på profilen",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 49da27568f..ec0507e158 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultats de recèrca",
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Avètz pas blocat degun pel moment.",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
"empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
@@ -137,6 +138,13 @@
"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.",
"getting_started.security": "Seguretat",
"getting_started.terms": "Condicions d’utilizacion",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Mostrar los partatges",
"home.column_settings.show_replies": "Mostrar las responsas",
@@ -313,6 +321,7 @@
"status.show_less_all": "Los tornar plegar totes",
"status.show_more": "Desplegar",
"status.show_more_all": "Los desplegar totes",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Tornar mostrar la conversacion",
"status.unpin": "Tirar del perfil",
"suggestions.dismiss": "Regetar la suggestion",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index ed9956d2d0..1fb8df0ada 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -116,6 +116,7 @@
"emoji_button.search_results": "Wyniki wyszukiwania",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
"empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
@@ -141,6 +142,13 @@
"getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.",
"getting_started.security": "Bezpieczeństwo",
"getting_started.terms": "Zasady użytkowania",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Podstawowe",
"home.column_settings.show_reblogs": "Pokazuj podbicia",
"home.column_settings.show_replies": "Pokazuj odpowiedzi",
@@ -318,6 +326,7 @@
"status.show_less_all": "Zwiń wszystkie",
"status.show_more": "Rozwiń",
"status.show_more_all": "Rozwiń wszystkie",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Cofnij wyciszenie konwersacji",
"status.unpin": "Odepnij z profilu",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 440a39c00c..61811c53de 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultados da busca",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Você ainda não bloqueou nenhum usuário.",
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
"empty_column.direct": "Você não tem nenhuma mensagem direta ainda. Quando você enviar ou receber uma, as mensagens aparecerão por aqui.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do GitHub do projeto: {github}.",
"getting_started.security": "Segurança",
"getting_started.terms": "Termos de serviço",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar compartilhamentos",
"home.column_settings.show_replies": "Mostrar as respostas",
@@ -203,7 +211,7 @@
"navigation_bar.lists": "Listas",
"navigation_bar.logout": "Sair",
"navigation_bar.mutes": "Usuários silenciados",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "Pessoal",
"navigation_bar.pins": "Postagens fixadas",
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global",
@@ -313,6 +321,7 @@
"status.show_less_all": "Mostrar menos para todas as mensagens",
"status.show_more": "Mostrar mais",
"status.show_more_all": "Mostrar mais para todas as mensagens",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Desativar silêncio desta conversa",
"status.unpin": "Desafixar do perfil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index 94d01f2a46..c03001080a 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Resultados da pesquisa",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Ainda não existe conteúdo local para mostrar!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon é software de fonte aberta. Podes contribuir ou repostar problemas no GitHub do projecto: {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar as partilhas",
"home.column_settings.show_replies": "Mostrar as respostas",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Mostrar mais",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Deixar de silenciar esta conversa",
"status.unpin": "Não fixar no perfil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index ed6f2c7b1a..fc196e8203 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Rezultatele căutării",
"emoji_button.symbols": "Simboluri",
"emoji_button.travel": "Călătorii si Locuri",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Nu ai blocat nici un utilizator incă.",
"empty_column.community": "Fluxul local este gol. Scrie ceva public pentru a împinge bila la vale!",
"empty_column.direct": "Nu ai nici un mesaj direct incă. Când trimiți sau primești unul, vor fi afișate aici.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon este o rețea de socializare de tip open source. Puteți contribuii la dezvoltarea ei sau să semnalați erorile pe GitHub la {github}.",
"getting_started.security": "Securitate",
"getting_started.terms": "Termenii de Utilizare",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "De bază",
"home.column_settings.show_reblogs": "Arată redistribuirile",
"home.column_settings.show_replies": "Arată răspunsurile",
@@ -313,6 +321,7 @@
"status.show_less_all": "Arată mai puțin pentru toți",
"status.show_more": "Arată mai mult",
"status.show_more_all": "Arată mai mult pentru toți",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Repornește conversația",
"status.unpin": "Eliberează din profil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index d41cbd09d6..3e2979c1b3 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Результаты поиска",
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Вы ещё никого не заблокировали.",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
"empty_column.direct": "У Вас пока нет личных сообщений. Когда Вы начнёте их отправлять или получать, они появятся здесь.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon - сервис с открытым исходным кодом. Вы можете помочь проекту или сообщить о проблемах на GitHub по адресу {github}.",
"getting_started.security": "Безопасность",
"getting_started.terms": "Условия использования",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Основные",
"home.column_settings.show_reblogs": "Показывать продвижения",
"home.column_settings.show_replies": "Показывать ответы",
@@ -313,6 +321,7 @@
"status.show_less_all": "Свернуть для всех",
"status.show_more": "Развернуть",
"status.show_more_all": "Развернуть для всех",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Снять глушение с треда",
"status.unpin": "Открепить от профиля",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 8d1547d664..e03cdef897 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -16,7 +16,7 @@
"account.follows.empty": "Tento užívateľ ešte nikoho nenásleduje.",
"account.follows_you": "Následuje ťa",
"account.hide_reblogs": "Skryť povýšenia od @{name}",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
"account.media": "Médiá",
"account.mention": "Spomeň @{name}",
"account.moved_to": "{name} sa presunul/a na:",
@@ -92,8 +92,8 @@
"confirmations.mute.message": "Naozaj chcete ignorovať {name}?",
"confirmations.redraft.confirm": "Vyčistiť a prepísať",
"confirmations.redraft.message": "Si si istý/á, že chceš premazať a prepísať tento príspevok? Jeho nadobudnuté odpovede, povýšenia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "Odpovedať",
+ "confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?",
"confirmations.unfollow.confirm": "Nesledovať",
"confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?",
"embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Nájdené",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestovanie a miesta",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
"empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!",
"empty_column.direct": "Ešte nemáš žiadne súkromné správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon je softvér s otvoreným kódom. Nahlásiť chyby, alebo prispievať môžeš na GitHube v {github}.",
"getting_started.security": "Zabezpečenie",
"getting_started.terms": "Podmienky prevozu",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Základné",
"home.column_settings.show_reblogs": "Zobraziť povýšené",
"home.column_settings.show_replies": "Ukázať odpovede",
@@ -297,7 +305,7 @@
"status.open": "Otvoriť tento status",
"status.pin": "Pripni na profil",
"status.pinned": "Pripnutý príspevok",
- "status.read_more": "Read more",
+ "status.read_more": "Čítaj ďalej",
"status.reblog": "Povýšiť",
"status.reblog_private": "Povýš k pôvodnému publiku",
"status.reblogged_by": "{name} povýšil/a",
@@ -313,10 +321,11 @@
"status.show_less_all": "Všetkým ukáž menej",
"status.show_more": "Ukáž viac",
"status.show_more_all": "Všetkým ukáž viac",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Prestať ignorovať konverzáciu",
"status.unpin": "Odopnúť z profilu",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "Zavrhni návrh",
+ "suggestions.header": "Mohlo by ťa zaujímať…",
"tabs_bar.federated_timeline": "Federovaná",
"tabs_bar.home": "Domov",
"tabs_bar.local_timeline": "Lokálna",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 01f2ccbf98..080ab8ffcc 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -11,11 +11,11 @@
"account.endorse": "Zmožnost profila",
"account.follow": "Sledi",
"account.followers": "Sledilci",
- "account.followers.empty": "Nihče ne sledi tega uporabnika.",
+ "account.followers.empty": "Nihče ne sledi temu uporabniku.",
"account.follows": "Sledi",
"account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
"account.follows_you": "Ti sledi",
- "account.hide_reblogs": "Skrij napuhke od @{name}",
+ "account.hide_reblogs": "Skrij sunke od @{name}",
"account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}",
"account.media": "Mediji",
"account.mention": "Omeni @{name}",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Rezultati iskanja",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Potovanja in Kraji",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Niste še blokirali nobenega uporabnika.",
"empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
"empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga pošljete ali prejmete, se prikaže tukaj.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. V GitHubu na {github} lahko prispevate ali poročate o napakah.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Pokaži sunke",
"home.column_settings.show_replies": "Pokaži odgovore",
@@ -313,6 +321,7 @@
"status.show_less_all": "Prikaži manj za vse",
"status.show_more": "Prikaži več",
"status.show_more_all": "Prikaži več za vse",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Odtišaj pogovor",
"status.unpin": "Odpni iz profila",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index b3075d2f1c..feaeb95c1b 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Rezultati pretrage",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & mesta",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Osnovno",
"home.column_settings.show_reblogs": "Prikaži i podržavanja",
"home.column_settings.show_replies": "Prikaži odgovore",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Prikaži više",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Uključi prepisku",
"status.unpin": "Otkači sa profila",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 4ed720c9f2..7e3c3f213c 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Резултати претраге",
"emoji_button.symbols": "Симболи",
"emoji_button.travel": "Путовања и места",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "Још увек немате блокираних корисника.",
"empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!",
"empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.",
"getting_started.security": "Безбедност",
"getting_started.terms": "Услови коришћења",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Основно",
"home.column_settings.show_reblogs": "Прикажи и подржавања",
"home.column_settings.show_replies": "Прикажи одговоре",
@@ -313,6 +321,7 @@
"status.show_less_all": "Прикажи мање за све",
"status.show_more": "Прикажи више",
"status.show_more_all": "Прикажи више за све",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Укључи преписку",
"status.unpin": "Откачи са профила",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 7beee3cdc7..6910b181d6 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Sökresultat",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Resor & Platser",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att få bollen att rulla!",
"empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot kommer den att dyka upp här.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.",
"getting_started.security": "Säkerhet",
"getting_started.terms": "Användarvillkor",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Grundläggande",
"home.column_settings.show_reblogs": "Visa knuffar",
"home.column_settings.show_replies": "Visa svar",
@@ -313,6 +321,7 @@
"status.show_less_all": "Visa mindre för alla",
"status.show_more": "Visa mer",
"status.show_more_all": "Visa mer för alla",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Öppna konversation",
"status.unpin": "Ångra fäst i profil",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 0c712e84c0..3e243b743a 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index c602362bf7..e5cfe4240f 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -16,7 +16,7 @@
"account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.",
"account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు",
"account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు",
- "account.link_verified_on": "Ownership of this link was checked on {date}",
+ "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది",
"account.media": "మీడియా",
"account.mention": "@{name}ను ప్రస్తావించు",
"account.moved_to": "{name} ఇక్కడికి మారారు:",
@@ -92,8 +92,8 @@
"confirmations.mute.message": "{name}ను మీరు ఖచ్చితంగా మ్యూట్ చేయాలనుకుంటున్నారా?",
"confirmations.redraft.confirm": "తొలగించు & తిరగరాయు",
"confirmations.redraft.message": "మీరు ఖచ్చితంగా ఈ స్టేటస్ ని తొలగించి తిరగరాయాలనుకుంటున్నారా? ఈ స్టేటస్ యొక్క బూస్ట్ లు మరియు ఇష్టాలు పోతాయి,మరియు ప్రత్యుత్తరాలు అనాధలు అయిపోతాయి.",
- "confirmations.reply.confirm": "Reply",
- "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+ "confirmations.reply.confirm": "ప్రత్యుత్తరమివ్వు",
+ "confirmations.reply.message": "ఇప్పుడే ప్రత్యుత్తరం ఇస్తే మీరు ప్రస్తుతం వ్రాస్తున్న సందేశం తిరగరాయబడుతుంది. మీరు ఖచ్చితంగా కొనసాగించాలనుకుంటున్నారా?",
"confirmations.unfollow.confirm": "అనుసరించవద్దు",
"confirmations.unfollow.message": "{name}ను మీరు ఖచ్చితంగా అనుసరించవద్దనుకుంటున్నారా?",
"embed.instructions": "దిగువ కోడ్ను కాపీ చేయడం ద్వారా మీ వెబ్సైట్లో ఈ స్టేటస్ ని పొందుపరచండి.",
@@ -112,6 +112,7 @@
"emoji_button.search_results": "శోధన ఫలితాలు",
"emoji_button.symbols": "చిహ్నాలు",
"emoji_button.travel": "ప్రయాణం & ప్రదేశాలు",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.",
"empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!",
"empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "మాస్టొడొన్ ఓపెన్ సోర్స్ సాఫ్ట్వేర్. మీరు {github} వద్ద GitHub పై సమస్యలను నివేదించవచ్చు లేదా తోడ్పడచ్చు.",
"getting_started.security": "భద్రత",
"getting_started.terms": "సేవా నిబంధనలు",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "ప్రాథమిక",
"home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు",
"home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు",
@@ -297,7 +305,7 @@
"status.open": "ఈ స్టేటస్ ను విస్తరించు",
"status.pin": "ప్రొఫైల్లో అతికించు",
"status.pinned": "అతికించిన టూట్",
- "status.read_more": "Read more",
+ "status.read_more": "ఇంకా చదవండి",
"status.reblog": "బూస్ట్",
"status.reblog_private": "అసలు ప్రేక్షకులకు బూస్ట్ చేయి",
"status.reblogged_by": "{name} బూస్ట్ చేసారు",
@@ -313,10 +321,11 @@
"status.show_less_all": "అన్నిటికీ తక్కువ చూపించు",
"status.show_more": "ఇంకా చూపించు",
"status.show_more_all": "అన్నిటికీ ఇంకా చూపించు",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి",
"status.unpin": "ప్రొఫైల్ నుండి పీకివేయు",
- "suggestions.dismiss": "Dismiss suggestion",
- "suggestions.header": "You might be interested in…",
+ "suggestions.dismiss": "సూచనను రద్దు చేయి",
+ "suggestions.header": "మీకు వీటి మీద ఆసక్తి ఉండవచ్చు…",
"tabs_bar.federated_timeline": "సమాఖ్య",
"tabs_bar.home": "హోమ్",
"tabs_bar.local_timeline": "స్థానిక",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 86d8c9b2b5..a85cc63dce 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 98ae1185d4..e1d0f33c4f 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Yerel zaman tüneliniz boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın.",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. Github {github}. {apps} üzerinden katkıda bulunabilir, hata raporlayabilirsiniz.",
"getting_started.security": "Security",
"getting_started.terms": "Terms of service",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Temel",
"home.column_settings.show_reblogs": "Boost edilenleri göster",
"home.column_settings.show_replies": "Cevapları göster",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Daha fazlası",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 95a947f78b..08c30833b3 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "Результати пошуку",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",
"empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon - програма з відкритим вихідним кодом. Ви можете допомогти проекту, або повідомити про проблеми на GitHub за адресою {github}.",
"getting_started.security": "Безпека",
"getting_started.terms": "Умови використання",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Основні",
"home.column_settings.show_reblogs": "Показувати передмухи",
"home.column_settings.show_replies": "Показувати відповіді",
@@ -313,6 +321,7 @@
"status.show_less_all": "Show less for all",
"status.show_more": "Розгорнути",
"status.show_more_all": "Show more for all",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "Зняти глушення з діалогу",
"status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 3d837001ae..e24910153b 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "搜索结果",
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站时间轴暂时没有内容,快嘟几个来抢头香啊!",
"empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon 是一个开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。",
"getting_started.security": "帐户安全",
"getting_started.terms": "使用条款",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "基本设置",
"home.column_settings.show_reblogs": "显示转嘟",
"home.column_settings.show_replies": "显示回复",
@@ -313,6 +321,7 @@
"status.show_less_all": "隐藏所有内容",
"status.show_more": "显示内容",
"status.show_more_all": "显示所有内容",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "不再隐藏此对话",
"status.unpin": "在个人资料页面取消置顶",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 035a645b84..7e1d4c73b1 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
"empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub ({github}) 貢獻或者回報問題。",
"getting_started.security": "帳戶安全",
"getting_started.terms": "服務條款",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "基本",
"home.column_settings.show_reblogs": "顯示被轉推的文章",
"home.column_settings.show_replies": "顯示回應文章",
@@ -313,6 +321,7 @@
"status.show_less_all": "減少顯示這類文章",
"status.show_more": "顯示更多",
"status.show_more_all": "顯示更多這類文章",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "解禁對話",
"status.unpin": "解除置頂",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index acacc571d1..4261c9345c 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -112,6 +112,7 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
+ "empty_column.account_timeline": "No toots here!",
"empty_column.blocks": "你還沒有封鎖任何使用者。",
"empty_column.community": "本地時間軸是空的。公開寫點什麼吧!",
"empty_column.direct": "你還沒有使用過私訊。當你發出或著收到私訊時,它會在這裡顯示。",
@@ -137,6 +138,13 @@
"getting_started.open_source_notice": "Mastodon 是開源軟體。你可以在 GitHub {github} 上做出貢獻或是回報問題。",
"getting_started.security": "登入資訊",
"getting_started.terms": "使用條款",
+ "hashtag.column_header.tag_mode.all": "and {additional}",
+ "hashtag.column_header.tag_mode.any": "or {additional}",
+ "hashtag.column_header.tag_mode.none": "without {additional}",
+ "hashtag.column_settings.tag_mode.all": "All of these",
+ "hashtag.column_settings.tag_mode.any": "Any of these",
+ "hashtag.column_settings.tag_mode.none": "None of these",
+ "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "基本",
"home.column_settings.show_reblogs": "顯示轉推",
"home.column_settings.show_replies": "顯示回應",
@@ -313,6 +321,7 @@
"status.show_less_all": "減少顯示這類嘟文",
"status.show_more": "顯示更多",
"status.show_more_all": "顯示更多這類嘟文",
+ "status.show_thread": "Show thread",
"status.unmute_conversation": "解除此對話的靜音",
"status.unpin": "解除置頂",
"suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index 9cf783c843..47c4bf75ce 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -47,7 +47,7 @@ function main() {
content.textContent = timeAgoString({
formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
- }, datetime, now, datetime.getFullYear());
+ }, datetime, now, now.getFullYear());
});
const reactComponents = document.querySelectorAll('[data-component]');
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 0ee0b002fc..fc55163bc2 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -4658,6 +4658,19 @@ a.status-card.compact:hover {
z-index: 5;
}
+.detailed,
+.fullscreen {
+ .video-player__volume__current,
+ .video-player__volume::before {
+ bottom: 27px;
+ }
+
+ .video-player__volume__handle {
+ bottom: 23px;
+ }
+
+}
+
.video-player {
overflow: hidden;
position: relative;
@@ -4806,7 +4819,7 @@ a.status-card.compact:hover {
&__time-current {
color: $white;
- margin-left: 10px;
+ margin-left: 60px;
}
&__time-sep {
@@ -4819,6 +4832,48 @@ a.status-card.compact:hover {
color: $white;
}
+ &__volume {
+ cursor: pointer;
+ height: 24px;
+ display: inline;
+
+ &::before {
+ content: "";
+ width: 50px;
+ background: rgba($white, 0.35);
+ border-radius: 4px;
+ display: block;
+ position: absolute;
+ height: 4px;
+ left: 70px;
+ bottom: 20px;
+ }
+
+ &__current {
+ display: block;
+ position: absolute;
+ height: 4px;
+ border-radius: 4px;
+ left: 70px;
+ bottom: 20px;
+ background: lighten($ui-highlight-color, 8%);
+ }
+
+ &__handle {
+ position: absolute;
+ z-index: 3;
+ border-radius: 50%;
+ width: 12px;
+ height: 12px;
+ bottom: 16px;
+ left: 70px;
+ transition: opacity .1s ease;
+ background: lighten($ui-highlight-color, 8%);
+ box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
+ pointer-events: none;
+ }
+ }
+
&__seek {
cursor: pointer;
height: 24px;
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 46ef857749..4f96204f28 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -266,7 +266,7 @@ code {
font-family: inherit;
font-size: 14px;
color: $primary-text-color;
- display: block;
+ display: inline-block;
width: auto;
position: relative;
padding-top: 5px;
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 999954cb5b..0a729011f2 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -129,4 +129,10 @@ class ActivityPub::Activity
::FetchRemoteStatusService.new.call(@object['url'])
end
end
+
+ def lock_or_return(key, expire_after = 7.days.seconds)
+ yield if redis.set(key, true, nx: true, ex: expire_after)
+ ensure
+ redis.del(key)
+ end
end
diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb
index 457047ac06..8270fed1b2 100644
--- a/app/lib/activitypub/activity/delete.rb
+++ b/app/lib/activitypub/activity/delete.rb
@@ -12,8 +12,10 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
private
def delete_person
- SuspendAccountService.new.call(@account)
- @account.destroy!
+ lock_or_return("delete_in_progress:#{@account.id}") do
+ SuspendAccountService.new.call(@account)
+ @account.destroy!
+ end
end
def delete_note
diff --git a/app/lib/entity_cache.rb b/app/lib/entity_cache.rb
index 2aa37389ca..8fff544a05 100644
--- a/app/lib/entity_cache.rb
+++ b/app/lib/entity_cache.rb
@@ -21,7 +21,7 @@ class EntityCache
end
unless uncached_ids.empty?
- uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).map { |item| [item.shortcode, item] }.to_h
+ uncached = CustomEmoji.where(shortcode: shortcodes, domain: domain, disabled: false).each_with_object({}) { |item, h| h[item.shortcode] = item }
uncached.each_value { |item| Rails.cache.write(to_key(:emoji, item.shortcode, domain), item, expires_in: MAX_EXPIRATION) }
end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 3d7db27211..31ff53860b 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -40,7 +40,11 @@ class FeedManager
end
def push_to_list(list, status)
- return false if status.reply? && status.in_reply_to_account_id != status.account_id
+ if status.reply? && status.in_reply_to_account_id != status.account_id
+ should_filter = status.in_reply_to_account_id != list.account_id
+ should_filter &&= !ListAccount.where(list_id: list.id, account_id: status.in_reply_to_account_id).exists?
+ return false if should_filter
+ end
return false unless add_to_feed(:list, list.id, status)
trim(:list, list.id)
PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}") if push_update_required?("timeline:list:#{list.id}")
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index d13884ec81..05fd9eeb12 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -128,9 +128,9 @@ class Formatter
return html if emojis.empty?
emoji_map = if animate
- emojis.map { |e| [e.shortcode, full_asset_url(e.image.url)] }.to_h
+ emojis.each_with_object({}) { |e, h| h[e.shortcode] = full_asset_url(e.image.url) }
else
- emojis.map { |e| [e.shortcode, full_asset_url(e.image.url(:static))] }.to_h
+ emojis.each_with_object({}) { |e, h| h[e.shortcode] = full_asset_url(e.image.url(:static)) }
end
i = -1
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 73b495ce19..bb6ef4661a 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -2,6 +2,7 @@
require 'ipaddr'
require 'socket'
+require 'resolv'
class Request
REQUEST_TARGET = '(request-target)'
@@ -45,7 +46,7 @@ class Request
end
begin
- yield response.extend(ClientLimit)
+ yield response.extend(ClientLimit) if block_given?
ensure
http_client.close
end
@@ -94,7 +95,7 @@ class Request
end
def timeout
- { connect: 1, read: 10, write: 10 }
+ { connect: nil, read: 10, write: 10 }
end
def http_client
@@ -139,16 +140,29 @@ class Request
class Socket < TCPSocket
class << self
def open(host, *args)
- return super host, *args if thru_hidden_service? host
+ return super(host, *args) if thru_hidden_service?(host)
+
outer_e = nil
- Addrinfo.foreach(host, nil, nil, :SOCK_STREAM) do |address|
- begin
- raise Mastodon::HostValidationError if PrivateAddressCheck.private_address? IPAddr.new(address.ip_address)
- return super address.ip_address, *args
- rescue => e
- outer_e = e
+
+ Resolv::DNS.open do |dns|
+ dns.timeouts = 1
+
+ addresses = dns.getaddresses(host).take(2)
+ time_slot = 10.0 / addresses.size
+
+ addresses.each do |address|
+ begin
+ raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(IPAddr.new(address.to_s))
+
+ ::Timeout.timeout(time_slot, HTTP::TimeoutError) do
+ return super(address.to_s, *args)
+ end
+ rescue => e
+ outer_e = e
+ end
end
end
+
raise outer_e if outer_e
end
diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb
index 70de7b7929..343996e8a2 100644
--- a/app/lib/settings/scoped_settings.rb
+++ b/app/lib/settings/scoped_settings.rb
@@ -32,7 +32,7 @@ module Settings
def all_as_records
vars = thing_scoped
- records = vars.map { |r| [r.var, r] }.to_h
+ records = vars.each_with_object({}) { |r, h| h[r.var] = r }
Setting.default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)
@@ -66,7 +66,7 @@ module Settings
class << self
def default_settings
- defaulting = DEFAULTING_TO_UNSCOPED.map { |k| [k, Setting[k]] }.to_h
+ defaulting = DEFAULTING_TO_UNSCOPED.each_with_object({}) { |k, h| h[k] = Setting[k] }
Setting.default_settings.merge!(defaulting)
end
end
diff --git a/app/models/account.rb b/app/models/account.rb
index bd3dc9c968..645a303c32 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -32,9 +32,6 @@
# suspended :boolean default(FALSE), not null
# locked :boolean default(FALSE), not null
# header_remote_url :string default(""), not null
-# statuses_count :integer default(0), not null
-# followers_count :integer default(0), not null
-# following_count :integer default(0), not null
# last_webfingered_at :datetime
# inbox_url :string default(""), not null
# outbox_url :string default(""), not null
@@ -49,7 +46,7 @@
#
class Account < ApplicationRecord
- USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.]+[a-z0-9_]+)?/i
+ USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i
include AccountAvatar
@@ -58,6 +55,7 @@ class Account < ApplicationRecord
include AccountInteractions
include Attachmentable
include Paginable
+ include AccountCounters
MAX_DISPLAY_NAME_LENGTH = (ENV['MAX_DISPLAY_NAME_CHARS'] || 30).to_i
MAX_NOTE_LENGTH = (ENV['MAX_BIO_CHARS'] || 500).to_i
@@ -124,14 +122,13 @@ class Account < ApplicationRecord
scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
- scope :without_followers, -> { where(followers_count: 0) }
- scope :with_followers, -> { where('followers_count > 0') }
scope :expiring, ->(time) { remote.where.not(subscription_expires_at: nil).where('subscription_expires_at < ?', time) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
scope :silenced, -> { where(silenced: true) }
scope :suspended, -> { where(suspended: true) }
scope :without_suspended, -> { where(suspended: false) }
scope :recent, -> { reorder(id: :desc) }
+ scope :bots, -> { where(actor_type: %w(Application Service)) }
scope :alphabetic, -> { order(domain: :asc, username: :asc) }
scope :by_domain_accounts, -> { group(:domain).select(:domain, 'COUNT(*) AS accounts_count').order('accounts_count desc') }
scope :matches_username, ->(value) { where(arel_table[:username].matches("#{value}%")) }
@@ -388,7 +385,9 @@ class Account < ApplicationRecord
LIMIT ?
SQL
- find_by_sql([sql, limit])
+ records = find_by_sql([sql, limit])
+ ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)
+ records
end
def advanced_search_for(terms, account, limit = 10, following = false)
@@ -415,7 +414,7 @@ class Account < ApplicationRecord
LIMIT ?
SQL
- find_by_sql([sql, account.id, account.id, account.id, limit])
+ records = find_by_sql([sql, account.id, account.id, account.id, limit])
else
sql = <<-SQL.squish
SELECT
@@ -431,8 +430,11 @@ class Account < ApplicationRecord
LIMIT ?
SQL
- find_by_sql([sql, account.id, account.id, limit])
+ records = find_by_sql([sql, account.id, account.id, limit])
end
+
+ ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)
+ records
end
private
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index 84364bf1b7..b10f50db77 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -5,13 +5,14 @@ class AccountFilter
def initialize(params)
@params = params
+ set_defaults!
end
def results
- scope = Account.recent
+ scope = Account.recent.includes(:user)
params.each do |key, value|
- scope.merge!(scope_for(key, value)) if value.present?
+ scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
end
scope
@@ -19,6 +20,11 @@ class AccountFilter
private
+ def set_defaults!
+ params['local'] = '1' if params['remote'].blank?
+ params['active'] = '1' if params['suspended'].blank? && params['silenced'].blank?
+ end
+
def scope_for(key, value)
case key.to_s
when 'local'
@@ -27,10 +33,10 @@ class AccountFilter
Account.remote
when 'by_domain'
Account.where(domain: value)
+ when 'active'
+ Account.without_suspended
when 'silenced'
Account.silenced
- when 'alphabetic'
- Account.reorder(nil).alphabetic
when 'suspended'
Account.suspended
when 'username'
@@ -40,11 +46,7 @@ class AccountFilter
when 'email'
accounts_with_users.merge User.matches_email(value)
when 'ip'
- if valid_ip?(value)
- accounts_with_users.merge User.with_recent_ip_address(value)
- else
- Account.default_scoped
- end
+ valid_ip?(value) ? accounts_with_users.where('users.current_sign_in_ip <<= ?', value) : Account.none
when 'staff'
accounts_with_users.merge User.staff
else
@@ -57,8 +59,7 @@ class AccountFilter
end
def valid_ip?(value)
- IPAddr.new(value)
- true
+ IPAddr.new(value) && true
rescue IPAddr::InvalidAddressError
false
end
diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb
new file mode 100644
index 0000000000..d5715268eb
--- /dev/null
+++ b/app/models/account_stat.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: account_stats
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8) not null
+# statuses_count :bigint(8) default(0), not null
+# following_count :bigint(8) default(0), not null
+# followers_count :bigint(8) default(0), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class AccountStat < ApplicationRecord
+ belongs_to :account, inverse_of: :account_stat
+
+ def increment_count!(key)
+ update(key => public_send(key) + 1)
+ end
+
+ def decrement_count!(key)
+ update(key => [public_send(key) - 1, 0].max)
+ end
+end
diff --git a/app/models/concerns/account_counters.rb b/app/models/concerns/account_counters.rb
new file mode 100644
index 0000000000..fa3ec9a3da
--- /dev/null
+++ b/app/models/concerns/account_counters.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module AccountCounters
+ extend ActiveSupport::Concern
+
+ included do
+ has_one :account_stat, inverse_of: :account
+ after_save :save_account_stat
+ end
+
+ delegate :statuses_count,
+ :statuses_count=,
+ :following_count,
+ :following_count=,
+ :followers_count,
+ :followers_count=,
+ :increment_count!,
+ :decrement_count!,
+ to: :account_stat
+
+ def account_stat
+ super || build_account_stat
+ end
+
+ private
+
+ def save_account_stat
+ return unless account_stat&.changed?
+ account_stat.save
+ end
+end
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index ff57a884b8..f27d39483a 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -45,9 +45,9 @@ module AccountInteractions
end
def domain_blocking_map(target_account_ids, account_id)
- accounts_map = Account.where(id: target_account_ids).select('id, domain').map { |a| [a.id, a.domain] }.to_h
+ accounts_map = Account.where(id: target_account_ids).select('id, domain').each_with_object({}) { |a, h| h[a.id] = a.domain }
blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id)
- accounts_map.map { |id, domain| [id, blocked_domains[domain]] }.to_h
+ accounts_map.reduce({}) { |h, (id, domain)| h.merge(id => blocked_domains[domain]) }
end
def domain_blocking_map_by_domain(target_domains, account_id)
diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status_threading_concern.rb
index fa441469c1..b9c800c2aa 100644
--- a/app/models/concerns/status_threading_concern.rb
+++ b/app/models/concerns/status_threading_concern.rb
@@ -8,7 +8,7 @@ module StatusThreadingConcern
end
def descendants(limit, account = nil, max_child_id = nil, since_child_id = nil, depth = nil)
- find_statuses_from_tree_path(descendant_ids(limit, max_child_id, since_child_id, depth), account)
+ find_statuses_from_tree_path(descendant_ids(limit, max_child_id, since_child_id, depth), account, promote: true)
end
private
@@ -76,7 +76,7 @@ module StatusThreadingConcern
descendants_with_self - [self]
end
- def find_statuses_from_tree_path(ids, account)
+ def find_statuses_from_tree_path(ids, account, promote: false)
statuses = statuses_with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.map(&:account_domain).compact.uniq
@@ -86,6 +86,28 @@ module StatusThreadingConcern
# Order ancestors/descendants by tree path
statuses.sort_by! { |status| ids.index(status.id) }
+
+ # Bring self-replies to the top
+ if promote
+ promote_by!(statuses) { |status| status.in_reply_to_account_id == status.account_id }
+ else
+ statuses
+ end
+ end
+
+ def promote_by!(arr)
+ insert_at = arr.find_index { |item| !yield(item) }
+
+ return arr if insert_at.nil?
+
+ arr.each_with_index do |item, index|
+ next if index <= insert_at || !yield(item)
+
+ arr.insert(insert_at, arr.delete_at(index))
+ insert_at += 1
+ end
+
+ arr
end
def relations_map_for_account(account, account_ids, domains)
diff --git a/app/models/follow.rb b/app/models/follow.rb
index 7ad56eb78d..87fa114253 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -16,11 +16,8 @@ class Follow < ApplicationRecord
include Paginable
include RelationshipCacheable
- belongs_to :account, counter_cache: :following_count
-
- belongs_to :target_account,
- class_name: 'Account',
- counter_cache: :followers_count
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
has_one :notification, as: :activity, dependent: :destroy
@@ -39,7 +36,9 @@ class Follow < ApplicationRecord
end
before_validation :set_uri, only: :create
+ after_create :increment_cache_counters
after_destroy :remove_endorsements
+ after_destroy :decrement_cache_counters
private
@@ -50,4 +49,14 @@ class Follow < ApplicationRecord
def remove_endorsements
AccountPin.where(target_account_id: target_account_id, account_id: account_id).delete_all
end
+
+ def increment_cache_counters
+ account&.increment_count!(:following_count)
+ target_account&.increment_count!(:followers_count)
+ end
+
+ def decrement_cache_counters
+ account&.decrement_count!(:following_count)
+ target_account&.decrement_count!(:followers_count)
+ end
end
diff --git a/app/models/identity.rb b/app/models/identity.rb
index a5e0c09ec1..8cc65aef41 100644
--- a/app/models/identity.rb
+++ b/app/models/identity.rb
@@ -3,12 +3,12 @@
#
# Table name: identities
#
-# id :integer not null, primary key
-# user_id :integer
# provider :string default(""), not null
# uid :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
+# id :bigint(8) not null, primary key
+# user_id :bigint(8)
#
class Identity < ApplicationRecord
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index 0f787ebc44..a034b55fdc 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -77,6 +77,7 @@ class MediaAttachment < ApplicationRecord
format: 'mp4',
convert_options: {
output: {
+ 'loglevel' => 'fatal',
'movflags' => 'faststart',
'pix_fmt' => 'yuv420p',
'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 78b180301a..2f0a9b78c7 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -75,7 +75,7 @@ class Notification < ApplicationRecord
return if account_ids.empty?
- accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h
+ accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
cached_items.each do |item|
item.from_account = accounts[item.from_account_id]
diff --git a/app/models/setting.rb b/app/models/setting.rb
index 033d09fd58..a5878e96a2 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -40,7 +40,7 @@ class Setting < RailsSettings::Base
def all_as_records
vars = thing_scoped
- records = vars.map { |r| [r.var, r] }.to_h
+ records = vars.each_with_object({}) { |r, h| h[r.var] = r }
default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)
diff --git a/app/models/status.rb b/app/models/status.rb
index e73f11503e..65cd97c516 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -99,17 +99,16 @@ class Status < ApplicationRecord
scope :not_local_only, -> { where(local_only: [false, nil]) }
- cache_associated :account,
- :application,
+ cache_associated :application,
:media_attachments,
:conversation,
:status_stat,
:tags,
:preview_cards,
:stream_entry,
- active_mentions: :account,
+ account: :account_stat,
+ active_mentions: { account: :account_stat },
reblog: [
- :account,
:application,
:stream_entry,
:tags,
@@ -117,9 +116,10 @@ class Status < ApplicationRecord
:media_attachments,
:conversation,
:status_stat,
- active_mentions: :account,
+ account: :account_stat,
+ active_mentions: { account: :account_stat },
],
- thread: :account
+ thread: { account: :account_stat }
delegate :domain, to: :account, prefix: true
@@ -328,7 +328,7 @@ class Status < ApplicationRecord
end
def favourites_map(status_ids, account_id)
- Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h
+ Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true }
end
def bookmarks_map(status_ids, account_id)
@@ -336,15 +336,15 @@ class Status < ApplicationRecord
end
def reblogs_map(status_ids, account_id)
- select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).reorder(nil).map { |s| [s.reblog_of_id, true] }.to_h
+ select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).reorder(nil).each_with_object({}) { |s, h| h[s.reblog_of_id] = true }
end
def mutes_map(conversation_ids, account_id)
- ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).map { |m| [m.conversation_id, true] }.to_h
+ ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).each_with_object({}) { |m, h| h[m.conversation_id] = true }
end
def pins_map(status_ids, account_id)
- StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |p| [p.status_id, true] }.to_h
+ StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |p, h| h[p.status_id] = true }
end
def reload_stale_associations!(cached_items)
@@ -359,7 +359,7 @@ class Status < ApplicationRecord
return if account_ids.empty?
- accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h
+ accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
cached_items.each do |item|
item.account = accounts[item.account_id]
@@ -471,6 +471,8 @@ class Status < ApplicationRecord
end
def set_conversation
+ self.thread = thread.reblog if thread&.reblog?
+
self.reply = !(in_reply_to_id.nil? && thread.nil?) unless reply
if reply? && !thread.nil?
@@ -501,12 +503,7 @@ class Status < ApplicationRecord
def increment_counter_caches
return if direct_visibility?
- if association(:account).loaded?
- account.update_attribute(:statuses_count, account.statuses_count + 1)
- else
- Account.where(id: account_id).update_all('statuses_count = COALESCE(statuses_count, 0) + 1')
- end
-
+ account&.increment_count!(:statuses_count)
reblog&.increment_count!(:reblogs_count) if reblog?
thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
@@ -514,12 +511,7 @@ class Status < ApplicationRecord
def decrement_counter_caches
return if direct_visibility? || marked_for_mass_destruction?
- if association(:account).loaded?
- account.update_attribute(:statuses_count, [account.statuses_count - 1, 0].max)
- else
- Account.where(id: account_id).update_all('statuses_count = GREATEST(COALESCE(statuses_count, 0) - 1, 0)')
- end
-
+ account&.decrement_count!(:statuses_count)
reblog&.decrement_count!(:reblogs_count) if reblog?
thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb
index c559651c66..3a8be21649 100644
--- a/app/models/trending_tags.rb
+++ b/app/models/trending_tags.rb
@@ -18,7 +18,7 @@ class TrendingTags
def get(limit)
key = "#{KEY}:#{Time.now.utc.beginning_of_day.to_i}"
tag_ids = redis.zrevrange(key, 0, limit - 1).map(&:to_i)
- tags = Tag.where(id: tag_ids).to_a.map { |tag| [tag.id, tag] }.to_h
+ tags = Tag.where(id: tag_ids).to_a.each_with_object({}) { |tag, h| h[tag.id] = tag }
tag_ids.map { |tag_id| tags[tag_id] }.compact
end
diff --git a/app/models/user.rb b/app/models/user.rb
index b9e18eecd1..704523d341 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -83,7 +83,6 @@ class User < ApplicationRecord
scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) }
scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended: false }) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
- scope :with_recent_ip_address, ->(value) { where(arel_table[:current_sign_in_ip].eq(value).or(arel_table[:last_sign_in_ip].eq(value))) }
before_validation :sanitize_languages
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index 5d22962cf1..b0756d1f44 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -22,7 +22,7 @@ class InstancePresenter
end
def status_count
- Rails.cache.fetch('local_status_count') { Account.local.sum(:statuses_count) }
+ Rails.cache.fetch('local_status_count') { Account.local.joins(:account_stat).sum('account_stats.statuses_count') }.to_i
end
def domain_count
diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb
index 3134be371b..57205630bb 100644
--- a/app/serializers/rest/filter_serializer.rb
+++ b/app/serializers/rest/filter_serializer.rb
@@ -3,4 +3,8 @@
class REST::FilterSerializer < ActiveModel::Serializer
attributes :id, :phrase, :context, :whole_word, :expires_at,
:irreversible
+
+ def id
+ object.id.to_s
+ end
end
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index b7296cf7ca..fc412c7d4f 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -12,12 +12,12 @@ class BatchedRemoveStatusService < BaseService
def call(statuses)
statuses = Status.where(id: statuses.map(&:id)).includes(:account, :stream_entry).flat_map { |status| [status] + status.reblogs.includes(:account, :stream_entry).to_a }
- @mentions = statuses.map { |s| [s.id, s.active_mentions.includes(:account).to_a] }.to_h
- @tags = statuses.map { |s| [s.id, s.tags.pluck(:name)] }.to_h
+ @mentions = statuses.each_with_object({}) { |s, h| h[s.id] = s.active_mentions.includes(:account).to_a }
+ @tags = statuses.each_with_object({}) { |s, h| h[s.id] = s.tags.pluck(:name) }
@stream_entry_batches = []
@salmon_batches = []
- @json_payloads = statuses.map { |s| [s.id, Oj.dump(event: :delete, payload: s.id.to_s)] }.to_h
+ @json_payloads = statuses.each_with_object({}) { |s, h| h[s.id] = Oj.dump(event: :delete, payload: s.id.to_s) }
@activity_xml = {}
# Ensure that rendered XML reflects destroyed state
diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb
index 550e75f334..d6508a9888 100644
--- a/app/services/fetch_atom_service.rb
+++ b/app/services/fetch_atom_service.rb
@@ -29,7 +29,7 @@ class FetchAtomService < BaseService
def perform_request(&block)
accept = 'text/html'
- accept = 'application/activity+json, application/ld+json, application/atom+xml, ' + accept unless @unsupported_activity
+ accept = 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams", application/atom+xml, ' + accept unless @unsupported_activity
Request.new(:get, @url).add_headers('Accept' => accept).perform(&block)
end
@@ -39,7 +39,7 @@ class FetchAtomService < BaseService
if response.mime_type == 'application/atom+xml'
[@url, { prefetched_body: response.body_with_limit }, :ostatus]
- elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response.mime_type)
+ elsif ['application/activity+json', 'application/ld+json'].include?(response.mime_type)
body = response.body_with_limit
json = body_to_json(body)
if supported_context?(json) && equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && json['inbox'].present?
diff --git a/app/services/hashtag_query_service.rb b/app/services/hashtag_query_service.rb
index 86558a4462..5773d78c6e 100644
--- a/app/services/hashtag_query_service.rb
+++ b/app/services/hashtag_query_service.rb
@@ -2,15 +2,14 @@
class HashtagQueryService < BaseService
def call(tag, params, account = nil, local = false)
- any = tags_for(params[:any])
+ tags = tags_for(Array(tag.name) | Array(params[:any])).pluck(:id)
all = tags_for(params[:all])
none = tags_for(params[:none])
- @query = Status.as_tag_timeline(tag, account, local)
- .tagged_with_all(all)
- .tagged_with_none(none)
- @query = @query.distinct.or(self.class.new.call(any, params.except(:any), account, local).distinct) if any
- @query
+ Status.distinct
+ .as_tag_timeline(tags, account, local)
+ .tagged_with_all(all)
+ .tagged_with_none(none)
end
private
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index b825b82cb1..0ee9dd7ded 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -8,8 +8,8 @@
%meta{ name: 'robots', content: 'noindex' }/
%link{ rel: 'salmon', href: api_salmon_url(@account.id) }/
- %link{ rel: 'alternate', type: 'application/rss+xml', href: account_url(@account, format: 'rss') }/
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/
+ %link{ rel: 'alternate', type: 'application/rss+xml', href: account_url(@account, format: 'rss') }/
%link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/
- if @older_url
diff --git a/app/views/admin/accounts/_account.html.haml b/app/views/admin/accounts/_account.html.haml
index c6e63152d5..0fadaae1e7 100644
--- a/app/views/admin/accounts/_account.html.haml
+++ b/app/views/admin/accounts/_account.html.haml
@@ -1,18 +1,15 @@
%tr
- %td.username
- = account.username
%td
- - unless account.local?
- = link_to account.domain, admin_accounts_path(by_domain: account.domain)
+ = admin_account_link_to(account)
%td
- - if account.local?
- - if account.user.nil?
- = t("admin.accounts.moderation.suspended")
- - else
- = t("admin.accounts.roles.#{account.user.role}")
+ %div{ style: 'margin: -2px 0' }= account_badge(account, all: true)
+ %td
+ - if account.user_current_sign_in_ip
+ %samp= account.user_current_sign_in_ip
- else
- = account.protocol.humanize
+ \-
%td
- = table_link_to 'circle', t('admin.accounts.web'), web_path("accounts/#{account.id}")
- = table_link_to 'globe', t('admin.accounts.public'), TagManager.instance.url_for(account)
- = table_link_to 'pencil', t('admin.accounts.edit'), admin_account_path(account.id)
+ - if account.user_current_sign_in_at
+ %time.time-ago{ datetime: account.user_current_sign_in_at.iso8601, title: l(account.user_current_sign_in_at) }= l account.user_current_sign_in_at
+ - else
+ \-
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index 4bee73adca..0d31eee367 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -5,41 +5,19 @@
.filter-subset
%strong= t('admin.accounts.location.title')
%ul
- %li= filter_link_to t('admin.accounts.location.all'), local: nil, remote: nil
- %li
- - if selected? local: '1', remote: nil
- = filter_link_to t('admin.accounts.location.local'), {local: nil, remote: nil}, {local: '1', remote: nil}
- - else
- = filter_link_to t('admin.accounts.location.local'), local: '1', remote: nil
- %li
- - if selected? remote: '1', local: nil
- = filter_link_to t('admin.accounts.location.remote'), {remote: nil, local: nil}, {remote: '1', local: nil}
- - else
- = filter_link_to t('admin.accounts.location.remote'), remote: '1', local: nil
+ %li= filter_link_to t('admin.accounts.location.local'), remote: nil
+ %li= filter_link_to t('admin.accounts.location.remote'), remote: '1'
.filter-subset
%strong= t('admin.accounts.moderation.title')
%ul
- %li= filter_link_to t('admin.accounts.moderation.all'), silenced: nil, suspended: nil
- %li
- - if selected? silenced: '1'
- = filter_link_to t('admin.accounts.moderation.silenced'), {silenced: nil}, {silenced: '1'}
- - else
- = filter_link_to t('admin.accounts.moderation.silenced'), silenced: '1'
- %li
- - if selected? suspended: '1'
- = filter_link_to t('admin.accounts.moderation.suspended'), {suspended: nil}, {suspended: '1'}
- - else
- = filter_link_to t('admin.accounts.moderation.suspended'), suspended: '1'
+ %li= filter_link_to t('admin.accounts.moderation.active'), silenced: nil, suspended: nil
+ %li= filter_link_to t('admin.accounts.moderation.silenced'), silenced: '1', suspended: nil
+ %li= filter_link_to t('admin.accounts.moderation.suspended'), suspended: '1', silenced: nil
.filter-subset
%strong= t('admin.accounts.role')
%ul
%li= filter_link_to t('admin.accounts.moderation.all'), staff: nil
%li= filter_link_to t('admin.accounts.roles.staff'), staff: '1'
- .filter-subset
- %strong= t('admin.accounts.order.title')
- %ul
- %li= filter_link_to t('admin.accounts.order.most_recent'), alphabetic: nil
- %li= filter_link_to t('admin.accounts.order.alphabetic'), alphabetic: '1'
= form_tag admin_accounts_url, method: 'GET', class: 'simple_form' do
.fields-group
@@ -60,9 +38,9 @@
%thead
%tr
%th= t('admin.accounts.username')
- %th= t('admin.accounts.domain')
- %th
- %th
+ %th= t('admin.accounts.role')
+ %th= t('admin.accounts.most_recent_ip')
+ %th= t('admin.accounts.most_recent_activity')
%tbody
= render @accounts
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index 17f1f224d4..c1a5fc1bd3 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -68,7 +68,7 @@
%time.formatted{ datetime: @account.user_current_sign_in_at.iso8601, title: l(@account.user_current_sign_in_at) }
= l @account.user_current_sign_in_at
- else
- Never
+ \-
- else
%tr
%th= t('admin.accounts.profile_url')
diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml
index 7fc08a23b8..694461fdf2 100644
--- a/app/views/auth/registrations/edit.html.haml
+++ b/app/views/auth/registrations/edit.html.haml
@@ -9,13 +9,14 @@
= f.input :email, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, required: true, hint: false
.fields-group
- = f.input :password, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'off' }, hint: false
+ = f.input :current_password, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.current_password'), :autocomplete => 'off' }, required: true
+
+ .fields-group
+ = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'off' }, hint: false
.fields-group
= f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_new_password'), :autocomplete => 'off' }
- .fields-group
- = f.input :current_password, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.current_password'), :autocomplete => 'off' }, required: true
.actions
= f.button :button, t('generic.save_changes'), type: :submit
diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml
index 6e32cbc2f0..de95817c1f 100644
--- a/config/locales/activerecord.ast.yml
+++ b/config/locales/activerecord.ast.yml
@@ -1,2 +1,9 @@
---
-ast: {}
+ast:
+ activerecord:
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: namái lletres, númberos y guiones baxos
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 095b1f584b..dd0cfd1f2a 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -30,16 +30,34 @@ ar:
other_instances: خوادم أخرى
privacy_policy: سياسة الخصوصية
source_code: الشفرة المصدرية
- status_count_after: منشورات
+ status_count_after:
+ few: منشورات
+ many: منشورات
+ one: منشور
+ other: منشورات
+ two: منشورات
+ zero: منشورات
status_count_before: نشروا
terms: شروط الخدمة
- user_count_after: مستخدِمين
+ user_count_after:
+ few: مستخدمين
+ many: مستخدمين
+ one: مستخدم
+ other: مستخدمين
+ two: مستخدمين
+ zero: مستخدمين
user_count_before: يستضيف
what_is_mastodon: ما هو ماستدون ؟
accounts:
choices_html: 'توصيات %{name} :'
follow: إتبع
- followers: مُتابِعون
+ followers:
+ few: متابِعون
+ many: متابِعون
+ one: متابِع
+ other: متابِعون
+ two: متابِعون
+ zero: متابِعون
following: مُتابَع
joined: انضم·ت في %{date}
link_verified_on: تم التحقق مِن مالك هذا الرابط بتاريخ %{date}
@@ -51,7 +69,13 @@ ar:
people_who_follow: الأشخاص الذين يتبعون %{name}
pin_errors:
following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه
- posts: تبويقات
+ posts:
+ few: تبويقات
+ many: تبويقات
+ one: تبويق
+ other: تبويقات
+ two: تبويقات
+ zero: تبويقات
posts_tab_heading: تبويقات
posts_with_replies: التبويقات و الردود
reserved_username: إسم المستخدم محجوز
@@ -115,10 +139,6 @@ ar:
most_recent_ip: أحدث عنوان إيبي
no_limits_imposed: مِن دون حدود مشروطة
not_subscribed: غير مشترك
- order:
- alphabetic: أبجديًا
- most_recent: الأحدث
- title: الترتيب
outbox_url: رابط صندوق الصادر
perform_full_suspension: تعطيل
profile_url: رابط الملف الشخصي
@@ -262,7 +282,13 @@ ar:
suspend: تعليق
severity: الشدة
show:
- affected_accounts: "%{count} حسابات معنية في قاعدة البيانات"
+ affected_accounts:
+ few: "%{count} حسابات معنية في قاعدة البيانات"
+ many: "%{count} حسابات معنية في قاعدة البيانات"
+ one: حساب واحد معني في قاعدة البيانات
+ other: "%{count} حسابات معنية في قاعدة البيانات"
+ two: حسابات معنية في قاعدة البيانات
+ zero: حسابات معنية في قاعدة البيانات
retroactive:
silence: إلغاء الكتم عن كافة الحسابات المتواجدة على هذا النطاق
suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق
@@ -586,7 +612,13 @@ ar:
expires_in_prompt: أبدا
generate: توليد
invited_by: 'تمت دعوتك من طرف :'
- max_uses: "%{count} استخدامات"
+ max_uses:
+ few: "%{count} استخدامات"
+ many: "%{count} استخدامات"
+ one: استخدام واحد
+ other: "%{count} استخدامات"
+ two: استخدامات
+ zero: استخدامات
max_uses_prompt: بلا حدود
prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادوم هذا
table:
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index f787e98f8a..795fac5ad4 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -22,8 +22,10 @@ ast:
learn_more: Deprendi más
source_code: Códigu fonte
status_count_after: estaos
+ status_count_before: Que crearon
terms: Términos del serviciu
user_count_after: usuarios
+ user_count_before: Ye'l llar de
what_is_mastodon: "¿Qué ye Mastodon?"
accounts:
followers:
@@ -35,6 +37,7 @@ ast:
nothing_here: "¡Equí nun hai nada!"
people_followed_by: Persones a les que sigue %{name}
people_who_follow: Persones que siguen a %{name}
+ posts: Toots
reserved_username: El nome d'usuariu ta acutáu
roles:
bot: Robó
@@ -95,6 +98,8 @@ ast:
available: Disponible
expired: Caducó
title: Invitaciones
+ relays:
+ save_and_enable: Guardar y activar
reports:
are_you_sure: "¿De xuru?"
status: Estáu
@@ -122,11 +127,14 @@ ast:
invalid_url: La URL apurrida nun ye válida
warning: Ten curiáu con estos datos, ¡enxamás nun los compartas con naide!
auth:
- agreement_html: Aniciando sesión aceutes siguir les regles de la instancia y los nuesos términos del serviciu.
+ agreement_html: Faciendo clic en «Aniciar sesión» aceutes siguir les regles de la instancia y los nuesos términos del serviciu.
change_password: Contraseña
+ delete_account: Desaniciu de la cuenta
delete_account_html: Si deseyes desaniciar la to cuenta, pues siguir equí. Va pidísete la confirmación.
forgot_password: "¿Escaeciesti la contraseña?"
login: Aniciar sesión
+ migrate_account: Mudase a otra cuenta
+ migrate_account_html: Si deseyes redirixir esta cuenta a otra, pues configuralo equí.
providers:
cas: CAS
saml: SAML
@@ -163,12 +171,30 @@ ast:
csv: CSV
filters:
contexts:
+ notifications: Avisos
public: Llinies temporales públiques
thread: Conversaciones
+ index:
+ title: Peñeres
+ new:
+ title: Amestar una peñera nueva
followers:
domain: Dominiu
followers_count: Númberu de siguidores
+ purge: Desaniciar de los siguidores
+ generic:
+ changes_saved_msg: "¡Los cambeos guardáronse con ésitu!"
+ save_changes: Guardar cambeos
+ imports:
+ preface: Pues importar los datos qu'esportares dende otra instancia, como por exemplu la llista de persones que bloquiares o tubieres siguiendo.
+ types:
+ blocking: Llista de xente bloquiao
+ following: Llista de siguidores
+ muting: Llista de xente silenciao
+ upload: Xubir
invites:
+ delete: Desactivar
+ expired: Caducó
expires_in:
'1800': 30 minutos
'21600': 6 hores
@@ -182,6 +208,7 @@ ast:
one: 1 usu
other: "%{count} usos"
table:
+ expires_at: Data de caducidá
uses: Usos
lists:
errors:
@@ -192,6 +219,7 @@ ast:
too_many: Nun puen axuntase más de 4 ficheros
migrations:
acct: nome_usuariu@dominiu de la cuenta nueva
+ proceed: Guardar
notification_mailer:
digest:
body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since}
@@ -208,6 +236,10 @@ ast:
body: "%{name} mentóte en:"
subject: "%{name} mentóte"
title: Mención nueva
+ reblog:
+ body: "%{name} compartió'l to estáu:"
+ subject: "%{name} compartió'l to estáu"
+ title: Compartición nueva de toot
number:
human:
decimal_units:
@@ -216,6 +248,7 @@ ast:
next: Siguiente
preferences:
languages: Llingües
+ publishing: Espublización
web: Web
remote_follow:
acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer
@@ -267,6 +300,9 @@ ast:
authorized_apps: Aplicaciones autorizaes
back: Volver a Mastodon
edit_profile: Edición del perfil
+ export: Esportación de datos
+ followers: Siguidores autorizaos
+ import: Importación
notifications: Avisos
preferences: Preferencies
settings: Axustes
@@ -279,13 +315,19 @@ ast:
video:
one: "%{count} videu"
other: "%{count} vídeos"
+ boosted_from_html: Compartióse'l toot dende %{acct_link}
+ language_detection: Deteutala automáticamente
pin_errors:
limit: Yá fixesti'l númberu máxiumu de toots
+ ownership: Nun pue fixase'l toot d'otra persona
+ private: Nun puen fixase los toots que nun seyan públicos
+ reblog: Nun pue fixase un toot compartíu
show_more: Amosar más
title: "%{name}: «%{quote}»"
visibilities:
private: Namái siguidores
stream_entries:
+ reblogged: compartióse
sensitive_content: Conteníu sensible
themes:
default: Mastodon
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 91c6dfb61d..4de5b1e22a 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -75,7 +75,7 @@ bg:
too_many: Не мога да прикача повече от 4 файла
notification_mailer:
digest:
- body: 'Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since}:'
+ body: Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since}
mention: "%{name} те спомена в:"
new_followers_summary:
one: Имаш един нов последовател! Ура!
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index b65257f241..54ca4a4bf6 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -123,10 +123,6 @@ ca:
most_recent_ip: IP més recent
no_limits_imposed: Sense límits imposats
not_subscribed: No subscrit
- order:
- alphabetic: Alfabètic
- most_recent: Més recent
- title: Ordre
outbox_url: URL de la bústia de sortida
perform_full_suspension: Suspèn
profile_url: URL del perfil
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 9306c6c33f..b4458f602e 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -123,10 +123,6 @@ co:
most_recent_ip: IP più ricente
no_limits_imposed: Nisuna limita imposta
not_subscribed: Micca abbunatu
- order:
- alphabetic: Alfabeticu
- most_recent: Più ricente
- title: Urdine
outbox_url: URL di l’outbox
perform_full_suspension: Suspende
profile_url: URL di u prufile
@@ -256,7 +252,7 @@ co:
create: Creà un blucchime
hint: U blucchime di duminiu ùn impedirà micca a creazione di conti indè a database, mà metudi di muderazione specifiche saranu applicati.
severity:
- desc_html: CùSilenzà, solu l’abbunati di u contu viderenu i so missaghji. Suspende sguassarà tutti i cuntenuti è dati di u contu. Utilizate Nisuna s’è voi vulete solu righjittà fugliali media.
+ desc_html: Cù Silenzà, solu l’abbunati di u contu viderenu i so missaghji. Suspende sguassarà tutti i cuntenuti è dati di u contu. Utilizate Nisuna s’è voi vulete solu righjittà fugliali media.
noop: Nisuna
silence: Silenzà
suspend: Suspende
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 05f65653b9..74e1b0e459 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -30,17 +30,26 @@ cs:
other_instances: Seznam instancí
privacy_policy: Zásady soukromí
source_code: Zdrojový kód
- status_count_after: příspěvků
+ status_count_after:
+ few: příspěvků
+ one: příspěvek
+ other: příspěvků
status_count_before: Kteří napsali
terms: Podmínky používání
- user_count_after: uživatelů
+ user_count_after:
+ few: uživatelů
+ one: uživatele
+ other: uživatelů
user_count_before: Domov
what_is_mastodon: Co je Mastodon?
accounts:
choices_html: 'Volby uživatele %{name}:'
follow: Sledovat
- followers: Sledovatelé
- following: Sledovaní
+ followers:
+ few: Sledovatelé
+ one: Sledovatel
+ other: Sledovatelé
+ following: Sledovaných
joined: Připojil/a se v %{date}
link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date}
media: Média
@@ -51,7 +60,10 @@ cs:
people_who_follow: Lidé, kteří sledují uživatele %{name}
pin_errors:
following: Musíte již sledovat osobu, kterou chcete podpořit
- posts: Tooty
+ posts:
+ few: Tooty
+ one: Toot
+ other: Tooty
posts_tab_heading: Tooty
posts_with_replies: Tooty a odpovědi
reserved_username: Toto uživatelské jméno je rezervováno
@@ -115,10 +127,6 @@ cs:
most_recent_ip: Nejnovější IP
no_limits_imposed: Nejsou nastavena žádná omezení
not_subscribed: Neodebírá
- order:
- alphabetic: Abecedně
- most_recent: Nejnovější
- title: Pořadí
outbox_url: URL odchozích zpráv
perform_full_suspension: Suspendovat
profile_url: URL profilu
@@ -263,7 +271,10 @@ cs:
suspend: Suspendovat
severity: Přísnost
show:
- affected_accounts: "%{count} účtů v databázi byl ovlivněn"
+ affected_accounts:
+ few: "%{count} účtů v databázi bylo ovlivněno"
+ one: Jeden účet v databázi byl ovlivněn
+ other: "%{count} účtů v databázi bylo ovlivněno"
retroactive:
silence: Odtišit všechny existující účty z této domény
suspend: Zrušit suspenzaci všech existujících účtů z této domény
@@ -482,7 +493,7 @@ cs:
already_following: Tento účet již sledujete
error: Při hledání vzdáleného účtu bohužel nastala chyba
follow: Sledovat
- follow_request: 'Poslal/a jste žádost o sledování uživateli:'
+ follow_request: 'Poslal/a jste požadavek o sledování uživateli:'
following: 'Podařilo se! Nyní sledujete uživatele:'
post_follow:
close: Nebo můžete toto okno klidně zavřít.
@@ -506,7 +517,7 @@ cs:
deletes:
bad_password_msg: Dobrý pokus, hackeři! Nesprávné heslo
confirm_password: Zadejte svoje současné heslo pro ověření vaší identity
- description_html: Tímto trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivuje ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
+ description_html: Tímto trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivujete ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
proceed: Odstranit účet
success_msg: Váš účet byl úspěšně odstraněn
warning_html: Pouze vymazání obsahu z této konkrétní instance je zaručeno. Obsah, který byl široce sdílen, po sobě pravděpodobně zanechá stopy. U offline serverů a serverů, které vaše aktualizace již neodebírají, nebudou databáze aktualizovány.
@@ -535,7 +546,7 @@ cs:
csv: CSV
follows: Sledujete
mutes: Ignorujete
- storage: Úložisko médií
+ storage: Paměť médií
filters:
contexts:
home: Domovská časová osa
@@ -558,7 +569,10 @@ cs:
followers_count: Počet sledovatelů
lock_link: Zamkněte svůj účet
purge: Odstranit ze sledovatelů
- success: V průběhu utišování sledovatelů z %{count} domén...
+ success:
+ few: V průběhu blokování sledovatelů z %{count} domény...
+ one: V průběhu blokování sledovatelů z jedné domény...
+ other: V průběhu blokování sledovatelů z %{count} domény...
true_privacy_html: Berte prosím na vědomí, že skutečného soukromí se dá dosáhnout pouze za pomoci end-to-end šifrování.
unlocked_warning_html: Kdokoliv vás může sledovat a okamžitě vidět vaše soukromé příspěvky. %{lock_link}, abyste mohl/a zkontrolovat a odmítnout sledovatele.
unlocked_warning_title: Váš účet není zamknutý
@@ -570,7 +584,10 @@ cs:
changes_saved_msg: Změny byly úspěšně uloženy!
copy: Kopírovat
save_changes: Uložit změny
- validation_errors: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
+ validation_errors:
+ few: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
+ one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže
+ other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
imports:
preface: Můžete importovat data, která jste exportoval/a z jiné instance, jako například seznam lidí, které sledujete či blokujete.
success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas
@@ -593,7 +610,10 @@ cs:
expires_in_prompt: Nikdy
generate: Vygenerovat
invited_by: 'Byl/a jste pozván/a uživatelem:'
- max_uses: "%{count} použití"
+ max_uses:
+ few: "%{count} použití"
+ one: 1 použití
+ other: "%{count} použití"
max_uses_prompt: Bez limitu
prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tuto instanci
table:
@@ -619,8 +639,14 @@ cs:
action: Zobrazit všechna oznámení
body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since}
mention: "%{name} vás zmínil/a v:"
- new_followers_summary: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
- subject: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+ new_followers_summary:
+ few: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
+ one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá!
+ other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
+ subject:
+ few: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+ one: "1 nové oznámení od vaší poslední návštěvy \U0001F418"
+ other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
title: Ve vaší nepřítomnosti...
favourite:
body: 'Váš příspěvek si oblíbil/a %{name}:'
@@ -631,10 +657,10 @@ cs:
subject: "%{name} vás nyní sleduje"
title: Nový sledovatel
follow_request:
- action: Spravovat žádosti o sledování
- body: "%{name} žádá o povolení vás následovat"
+ action: Spravovat požadavky o sledování
+ body: "%{name} požádal/a o povolení vás sledovat"
subject: 'Čekající sledovatel: %{name}'
- title: Nová žádost o sledování
+ title: Nový požadavek o sledování
mention:
action: Odpovědět
body: 'Byl/a jste zmíněn/a uživatelem %{name} v:'
@@ -656,7 +682,7 @@ cs:
trillion: bil
pagination:
newer: Novější
- next: Starší
+ next: Další
older: Starší
prev: Před
truncate: "…"
@@ -737,11 +763,20 @@ cs:
statuses:
attached:
description: 'Přiloženo: %{attached}'
- image: "%{count} obrázků"
- video: "%{count} videí"
+ image:
+ few: "%{count} obrázků"
+ one: "%{count} obrázek"
+ other: "%{count} obrázků"
+ video:
+ few: "%{count} videí"
+ one: "%{count} video"
+ other: "%{count} videí"
boosted_from_html: Boostnuto z %{acct_link}
content_warning: 'Varování o obsahu: %{warning}'
- disallowed_hashtags: 'obsahuje nepovolené hashtagy: %{tags}'
+ disallowed_hashtags:
+ few: 'obsahoval nepovolené hashtagy: %{tags}'
+ one: 'obsahoval nepovolený hashtag: %{tags}'
+ other: 'obsahoval nepovolené hashtagy: %{tags}'
language_detection: Zjistit jazyk automaticky
open_in_web: Otevřít na webu
over_character_limit: limit %{max} znaků byl překročen
@@ -865,7 +900,7 @@ cs:
generate_recovery_codes: Vygenerovat záložní kódy
instructions_html: "Naskenujte tento QR kód Google Authenticatorem nebo jinou TOTP aplikací na vašem telefonu. Od teď bude tato aplikace generovat tokeny, které budete muset zadat při přihlášení."
lost_recovery_codes: Záložní kódy vám dovolí dostat se k vašemu účtu, pokud ztratíte telefon. Ztratíte-li záložní kódy, můžete je zde znovu vygenerovat. Vaše staré záložní kódy budou zneplatněny.
- manual_instructions: 'Nemůžete-li oskenovat QR kód a je potřebovat ho zadat ručně, zde je tajemství v prostém textu:'
+ manual_instructions: 'Nemůžete-li oskenovat QR kód a je potřeba ho zadat ručně, zde je tajemství v prostém textu:'
recovery_codes: Záložní kódy pro obnovu
recovery_codes_regenerated: Záložní kódy byly úspěšně znovu vygenerované
recovery_instructions_html: Ztratíte-li někdy přístup k vašemu telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů. Uchovávejte tyto kódy v bezpečí. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty.
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index a4df28b619..24ae6fa10d 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -115,10 +115,6 @@ cy:
most_recent_ip: IP diweddaraf
no_limits_imposed: Dim terfynau wedi'i gosod
not_subscribed: Heb danysgrifio
- order:
- alphabetic: Allfabetig
- most_recent: Diweddaraf
- title: Trefnu
outbox_url: Allflwch URL
perform_full_suspension: Atal
profile_url: URL proffil
@@ -762,7 +758,7 @@ cy:
unlisted_long: Gall pawb weld, ond heb ei restru ar ffrydiau cyhoeddus
stream_entries:
pinned: Tŵt wedi'i binio
- reblogged: bŵstiwyd
+ reblogged: hybwyd
sensitive_content: Cynnwys sensitif
terms:
body_html: |
diff --git a/config/locales/da.yml b/config/locales/da.yml
index d9ce9d55d0..c6bdc753af 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -122,10 +122,6 @@ da:
most_recent_activity: Seneste aktivitet
most_recent_ip: Senest IP
not_subscribed: Ikke abonneret
- order:
- alphabetic: Alfabetisk
- most_recent: Seneste
- title: Rækkefølge
outbox_url: Link til udgående
perform_full_suspension: Udeluk
profile_url: Link til profil
@@ -304,8 +300,13 @@ da:
title: Invitationer
relays:
add_new: Tilføj nyt relay
+ delete: Slet
description_html: Et federation relay er en mellemleds server der udveksler store mængder af offentlige trut mellem servere der abonnerer på og offentliggør til det. Det kan hjælpe små og mellemstore servere opdage indhold fra fediverset, hvilket der ellers ville kræve at lokale brugere manuelt følger andre folk på fjerne servere.
+ disable: Deaktiver
+ disabled: Deaktiveret
+ enable: Aktiver
enable_hint: Når dette er aktiveret, vil serveren abonnere på alle offentlige trut fra dette relay, og vil begynde at sende offentlige trut fra denne server dertil.
+ enabled: Aktiveret
inbox_url: Link til relay
pending: Venter på godkendelse fra relæet
save_and_enable: Gem og aktiver
@@ -569,6 +570,7 @@ da:
resources: Ressourcer
generic:
changes_saved_msg: Ændringerne blev gemt!
+ copy: Kopier
save_changes: Gem ændringer
validation_errors:
one: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende fejl forneden
diff --git a/config/locales/de.yml b/config/locales/de.yml
index d3b571f66a..03358f5a07 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -16,12 +16,12 @@ de:
Ein guter Platz für Regeln
Die erweiterte Beschreibung wurde noch nicht aufgesetzt.
features:
- humane_approach_body: Mastodon hat von den Fehlern anderer Netzwerke gelernt und wurde mit dem Augenmerk darauf entwickelt, den Missbrauch sozialer Medien zu bekämpfen.
+ humane_approach_body: Aus den Fehlern anderer Netzwerke lernend, zielt Mastodon darauf ab, mit ethischen Design-Entscheidungen den Missbrauch sozialer Medien zu verhindern.
humane_approach_title: Ein menschlicherer Ansatz
not_a_product_body: Mastodon ist kein kommerzielles Netzwerk. Keine Werbung, kein Abgraben deiner Daten, keine geschlossene Plattform. Es gibt keine Zentrale.
not_a_product_title: Du bist ein Mensch und keine Ware
- real_conversation_body: Mit 500 Zeichen pro Beitrag und der Ermöglichung präziser Inhalts- und Bilderwarnungen kannst du dich so ausdrücken, wie du es möchtest.
- real_conversation_title: Für das echte Gespräch gemacht
+ real_conversation_body: Mit 500 Zeichen pro Beitrag und Features wie Inhalts- und Bilderwarnungen kannst du dich so ausdrücken, wie du es möchtest.
+ real_conversation_title: Geschaffen für echte Gespräche
within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben dir, dank unseres blühenden API-Ökosystems, dich von überall auf dem Laufenden zu halten.
within_reach_title: Immer für dich da
generic_description: "%{domain} ist ein Server im Netzwerk"
@@ -123,10 +123,6 @@ de:
most_recent_ip: Letzte IP-Adresse
no_limits_imposed: Keine Limits eingesetzt
not_subscribed: Nicht abonniert
- order:
- alphabetic: Alphabetisch
- most_recent: Neueste
- title: Sortierung
outbox_url: Postausgangs-URL
perform_full_suspension: Sperren
profile_url: Profil-URL
diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml
index 4d80176c6b..e004bc9636 100644
--- a/config/locales/devise.ar.yml
+++ b/config/locales/devise.ar.yml
@@ -77,4 +77,10 @@ ar:
expired: إنتهت مدة صلاحيته، الرجاء طلب واحد جديد
not_found: لا يوجد
not_locked: ليس مقفلاً
- not_saved: "%{count} أخطاء منعت %{resource} مِن القيام بالإحتفاظ :"
+ not_saved:
+ few: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ many: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ one: 'خطأ واحد منع هذا %{resource} من الحفظ:'
+ other: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ two: 'أخطاء منعت هذا %{resource} من الحفظ:'
+ zero: 'أخطاء منعت هذا %{resource} من الحفظ:'
diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml
index 6e32cbc2f0..49b0c8daf4 100644
--- a/config/locales/devise.ast.yml
+++ b/config/locales/devise.ast.yml
@@ -1,2 +1,30 @@
---
-ast: {}
+ast:
+ devise:
+ failure:
+ already_authenticated: Yá aniciesti sesión.
+ inactive: Entá nun s'activó la cuenta.
+ last_attempt: Tienes un intentu más enantes de bloquiar la cuenta.
+ locked: La cuenta ta bloquiada.
+ timeout: La sesión caducó. Volvi aniciar sesión pa siguir, por favor.
+ unauthenticated: Precises aniciar sesión o rexistrate enantes de siguir.
+ mailer:
+ confirmation_instructions:
+ explanation: Creesti una cuenta en %{host} con esta direición de corréu. Tas a un clic d'activala. Si nun fuisti tu, inora esti corréu.
+ email_changed:
+ title: Direición de corréu nueva
+ reset_password_instructions:
+ explanation: Solicitesti una contraseña nueva pa la cuenta.
+ extra: Si nun solicitesti esto, inora esti corréu. La contraseña nun va camudar hasta que nun accedas al enllaz d'enriba y crees una nueva.
+ registrations:
+ signed_up: "¡Afáyate! Rexistréstite con ésitu."
+ signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu, por favor.
+ updated: La cuenta anovóse con ésitu.
+ unlocks:
+ send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti.
+ send_paranoid_instructions: Si esiste la cuenta, nun momentu vas recibir un corréu coles instrucciones pa cómo desbloquiala. Comprueba la carpeta Puxarra si nun recibiesti esti corréu.
+ unlocked: La cuenta desbloquióse con ésitu. Anicia sesión pa siguir, por favor.
+ errors:
+ messages:
+ already_confirmed: yá se confirmó, volvi aniciar sesión
+ not_found: nun s'alcontró
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index 4268dc0ad8..de23b5847a 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -46,7 +46,7 @@ cs:
unlock_instructions:
subject: 'Mastodon: Instrukce pro odemčení účtu'
omniauth_callbacks:
- failure: Nelze vás ověřit z %{kind}, protože "%{reason}".
+ failure: Nelze vás ověřit z %{kind}, protože „%{reason}“.
success: Úspěšně ověřeno z účtu %{kind}.
passwords:
no_token: Tuto stránku nemůžete navštívit, pokud nepřicházíte z e-mailu pro obnovu hesla. Pokud jste z něj přišel/la, ujistěte se, že jste použil/a celé URL z e-mailu.
@@ -77,4 +77,7 @@ cs:
expired: vypršel, prosím vyžádejte si nový
not_found: nenalezen
not_locked: nebyl uzamčen
- not_saved: "%{count} chyb zabránila uložení tohoto %{resource}:"
+ not_saved:
+ few: "%{count} chyb zabránilo uložení tohoto %{resource}:"
+ one: '1 chyba zabránila uložení tohoto %{resource}:'
+ other: "%{count} chyb zabránilo uložení tohoto %{resource}:"
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index 637b1e7314..1d597d53d3 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -8,11 +8,11 @@ nl:
failure:
already_authenticated: Je bent al ingelogd.
inactive: Jouw account is nog niet geactiveerd.
- invalid: Ongeldig %{authentication_keys}.
+ invalid: "%{authentication_keys} of wachtwoord ongeldig."
invalid_token: Ongeldige bevestigingscode.
last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
locked: Jouw account is opgeschort.
- not_found_in_database: Ongeldig %{authentication_keys}.
+ not_found_in_database: "%{authentication_keys} of wachtwoord ongeldig."
timeout: Jouw sessie is verlopen, log opnieuw in.
unauthenticated: Je dient in te loggen of te registreren.
unconfirmed: Je dient eerst jouw account te bevestigen.
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index 6dec562e14..abbe459423 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -77,4 +77,6 @@ zh-TW:
expired: 已經過期,請重新申請
not_found: 找不到
not_locked: 並未被鎖定
- not_saved: "%{count} 個錯誤使 %{resource} 無法被儲存︰"
+ not_saved:
+ one: 有 1 個錯誤讓此 %{resource} 無法儲存:
+ other: 有 %{count} 個錯誤讓此 %{resource} 無法儲存:
diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml
index 6e32cbc2f0..ce88af7970 100644
--- a/config/locales/doorkeeper.ast.yml
+++ b/config/locales/doorkeeper.ast.yml
@@ -1,2 +1,72 @@
---
-ast: {}
+ast:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Nome de l'aplicación
+ website: Sitiu web de l'aplicación
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ invalid_uri: ha ser una URI válida.
+ relative_uri: ha ser una URI absoluta.
+ doorkeeper:
+ applications:
+ buttons:
+ cancel: Encaboxar
+ destroy: Destruyir
+ edit: Editar
+ submit: Unviar
+ index:
+ name: Nome
+ show:
+ actions: Aiciones
+ title: 'Aplicación: %{name}'
+ authorizations:
+ error:
+ title: Asocedió un fallu
+ new:
+ able_to: Va ser a
+ prompt: L'aplicación %{client_name} solicitó l'accesu a la to cuenta
+ show:
+ title: Copia esti códigu d'autorización y apégalu na aplicación.
+ authorized_applications:
+ buttons:
+ revoke: Revocar
+ index:
+ date_format: "%H:%M:%S %d-%m-%Y"
+ title: Les aplicaciones qu'autoricesti
+ errors:
+ messages:
+ invalid_token:
+ expired: Caducó'l pase d'accesu
+ revoked: Revocóse'l pase d'accesu
+ unknown: El pase d'accesu nun ye válidu
+ unauthorized_client: El veceru nun ta autorizáu pa facer esta solicitú usando esti métodu.
+ unsupported_response_type: El sirvidor d'autorización nun sofita esta triba de rempuesta.
+ layouts:
+ admin:
+ nav:
+ applications: Aplicaciones
+ oauth2_provider: Fornidor d'OAuth2
+ scopes:
+ read:accounts: ver información de cuentes
+ read:blocks: ver quién bloquies
+ read:filters: ver les tos peñeres
+ read:follows: ver quién sigues
+ read:lists: ver les tos llistes
+ read:mutes: ver quién silencies
+ read:notifications: ver los tos avisos
+ read:statuses: ver tolos estaos
+ write: modificar los datos de la to cuenta
+ write:accounts: modificar el to perfil
+ write:blocks: bloquiar cuentes y dominios
+ write:filters: crear peñeres
+ write:follows: siguir a xente
+ write:lists: crear llistes
+ write:media: xubir ficheros de medios
+ write:mutes: silenciar xente y conversaciones
+ write:notifications: llimpiar los tos avisos
+ write:statuses: espublizar estaos
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 8f718a849c..3ed577230b 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -123,10 +123,6 @@ el:
most_recent_ip: Πιο πρόσφατη IP
no_limits_imposed: Χωρίς όρια
not_subscribed: Άνευ συνδρομής
- order:
- alphabetic: Αλφαβητικά
- most_recent: Πιο πρόσφατα
- title: Ταξινόμηση
outbox_url: URL εξερχομένων
perform_full_suspension: Κάνε πλήρη αναστολή
profile_url: URL προφίλ
@@ -928,5 +924,5 @@ el:
seamless_external_login: Επειδή έχεις συνδεθεί μέσω τρίτης υπηρεσίας, οι ρυθμίσεις συνθηματικού και email δεν είναι διαθέσιμες.
signed_in_as: 'Έχεις συνδεθεί ως:'
verification:
- explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me". Το κείμενο κειμένου δεν έχει σημασία. Για παράδειγμα:'
+ explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me". Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:'
verification: Πιστοποίηση
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 2c679061ea..58cf2a1010 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -123,10 +123,6 @@ en:
most_recent_ip: Most recent IP
no_limits_imposed: No limits imposed
not_subscribed: Not subscribed
- order:
- alphabetic: Alphabetic
- most_recent: Most recent
- title: Order
outbox_url: Outbox URL
perform_full_suspension: Suspend
profile_url: Profile URL
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 72628a9440..eddefab059 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -112,10 +112,6 @@ eo:
most_recent_activity: Lasta ago
most_recent_ip: Lasta IP
not_subscribed: Ne abonita
- order:
- alphabetic: Laŭalfabete
- most_recent: Plej lastatempa
- title: Ordo
outbox_url: Elira URL
perform_full_suspension: Tute haltigi
profile_url: Profila URL
diff --git a/config/locales/es.yml b/config/locales/es.yml
index b11ff8761e..9d6dc64c37 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -123,10 +123,6 @@ es:
most_recent_ip: IP más reciente
no_limits_imposed: Sin límites impuestos
not_subscribed: No se está suscrito
- order:
- alphabetic: Alfabético
- most_recent: Más reciente
- title: Orden
outbox_url: URL de bandeja de salida
perform_full_suspension: Suspender
profile_url: URL del perfil
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 206b439b0f..122b074eb6 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -123,10 +123,6 @@ eu:
most_recent_ip: Azken IP-a
no_limits_imposed: Ez da mugarik ezarri
not_subscribed: Harpidetu gabe
- order:
- alphabetic: Alfabetikoa
- most_recent: Azkena
- title: Ordena
outbox_url: Irteera ontziaren URL-a
perform_full_suspension: Kanporatu
profile_url: Profilaren URL-a
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 4209a2c007..7802ca98d9 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -123,10 +123,6 @@ fa:
most_recent_ip: آخرین IP ها
no_limits_imposed: بدون محدودیت
not_subscribed: عضو نیست
- order:
- alphabetic: الفبایی
- most_recent: تازهترینها
- title: ترتیب
outbox_url: نشانی صندوق خروجی
perform_full_suspension: تعلیق
profile_url: نشانی نمایه
@@ -848,5 +844,5 @@ fa:
seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شدهاید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست.
signed_in_as: 'واردشده به نام:'
verification:
- explanation_html: 'شما میتوانید خود را به عنوان مالک صفحهای که در نمایهتان به آن پیوند دادهاید تأیید کنید. برای این کار، صفحهای که به آن پیوند دادهاید، خودش باید پیوندی به نمایهٔ ماستدون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me" را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
+ explanation_html: 'شما میتوانید خود را به عنوان مالک صفحهای که در نمایهتان به آن پیوند دادهاید تأیید کنید. برای این کار، صفحهای که به آن پیوند دادهاید، خودش باید پیوندی به نمایهٔ ماستدون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me" را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
verification: تأیید
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index c904902122..77fca8decb 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -102,10 +102,6 @@ fi:
most_recent_activity: Viimeisin toiminta
most_recent_ip: Viimeisin IP
not_subscribed: Ei tilaaja
- order:
- alphabetic: Aakkosjärjestys
- most_recent: Uusin
- title: Järjestys
outbox_url: Lähtevän postilaatikon osoite
perform_full_suspension: Siirrä kokonaan jäähylle
profile_url: Profiilin osoite
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index e3128b569b..51b4fb1f84 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -123,10 +123,6 @@ fr:
most_recent_ip: Adresse IP la plus récente
no_limits_imposed: Aucune limite imposée
not_subscribed: Non abonné
- order:
- alphabetic: Alphabétique
- most_recent: Plus récent
- title: Tri
outbox_url: URL de sortie
perform_full_suspension: Suspendre
profile_url: URL du profil
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 9c5144d979..86c07ad89a 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -123,10 +123,6 @@ gl:
most_recent_ip: IP máis recente
no_limits_imposed: Sen límites impostos
not_subscribed: Non suscrita
- order:
- alphabetic: Alfabética
- most_recent: Máis recente
- title: Orde
outbox_url: URL caixa de saída
perform_full_suspension: Suspender
profile_url: URL do perfil
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 79b1ed8225..8f651052aa 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -95,10 +95,6 @@ he:
most_recent_activity: פעילות עדכנית
most_recent_ip: כתובות אחרונות
not_subscribed: לא רשום
- order:
- alphabetic: אלפביתי
- most_recent: עדכני
- title: סידור
outbox_url: כתובת תיבת דואר יוצא
perform_full_suspension: ביצוע השעייה מלאה
profile_url: כתובת פרופיל
@@ -297,7 +293,7 @@ he:
too_many: לא ניתן להוסיף יותר מארבעה קבצים
notification_mailer:
digest:
- body: 'להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since}:'
+ body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since}
mention: "%{name} פנה אליך ב:"
new_followers_summary:
one: נוסף לך עוקב! סחתיין!
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 729206a987..38971833c1 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -72,7 +72,7 @@ hr:
upload: Upload
notification_mailer:
digest:
- body: 'Ovo je kratak sažetak propuštenog od tvog prošlog posjeta %{since}:'
+ body: Ovo je kratak sažetak propuštenog od tvog prošlog posjeta %{since}
mention: "%{name} te je spomenuo:"
new_followers_summary: Imaš %{count} novih sljedbenika! Prekrašno!
subject: "%{count} novih notifikacija od tvog prošlog posjeta \U0001F418"
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index faa52fabc7..cf2c5f1e49 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -92,10 +92,6 @@ hu:
most_recent_activity: Legutóbbi tevékenységek
most_recent_ip: Legutóbbi IP-cím
not_subscribed: Nincs feliratkozás
- order:
- alphabetic: Alfabetikus
- most_recent: Legutóbbi
- title: Rendezés
outbox_url: Kimenő üzenetek URL
perform_full_suspension: Teljes felfüggesztés
profile_url: Profil URL
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 38b08a257e..e18207e242 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -50,10 +50,6 @@ id:
most_recent_activity: Aktivitas terbaru
most_recent_ip: IP terbaru
not_subscribed: Tidak berlangganan
- order:
- alphabetic: Alfabetik
- most_recent: Terbaru
- title: Urutan
perform_full_suspension: Lakukan suspen penuh
profile_url: URL profil
public: Publik
@@ -221,7 +217,7 @@ id:
too_many: Tidak dapat melampirkan lebih dari 4 file
notification_mailer:
digest:
- body: 'Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}:'
+ body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}
mention: "%{name} menyebut anda di:"
new_followers_summary:
one: Anda mendapatkan satu pengikut baru! Hore!
diff --git a/config/locales/io.yml b/config/locales/io.yml
index 0c1e6520b8..f52f2bc801 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -44,10 +44,6 @@ io:
most_recent_activity: Most recent activity
most_recent_ip: Most recent IP
not_subscribed: Not subscribed
- order:
- alphabetic: Alphabetic
- most_recent: Most recent
- title: Order
perform_full_suspension: Perform full suspension
profile_url: Profile URL
public: Public
@@ -201,7 +197,7 @@ io:
too_many: Cannot attach more than 4 files
notification_mailer:
digest:
- body: 'Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}:'
+ body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}
mention: "%{name} mencionis tu en:"
new_followers_summary:
one: Tu obtenis nova sequanto! Yey!
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 4fffded5fd..dc62b1beaa 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -123,10 +123,6 @@ it:
most_recent_ip: IP più recenti
no_limits_imposed: Nessun limite imposto
not_subscribed: Non sottoscritto
- order:
- alphabetic: Alfabetico
- most_recent: Più recente
- title: Ordine
outbox_url: URL outbox
perform_full_suspension: Sospendi
profile_url: URL profilo
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 9121094b71..dc2e015b59 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -123,12 +123,8 @@ ja:
most_recent_ip: 直近のIP
no_limits_imposed: 制限なし
not_subscribed: 購読していない
- order:
- alphabetic: アルファベット順
- most_recent: 直近の活動順
- title: 順序
outbox_url: Outbox URL
- perform_full_suspension: 完全に活動停止させる
+ perform_full_suspension: 活動を完全に停止させる
profile_url: プロフィールURL
promote: 昇格
protocol: プロトコル
@@ -264,7 +260,7 @@ ja:
reject_media: メディアファイルを拒否
reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です
reject_reports: レポートを拒否
- reject_reports_hint: このドメインからのすべてのレポートを無視します。停止とは無関係です
+ reject_reports_hint: このドメインからのレポートをすべて無視します。停止とは無関係です
severities:
noop: なし
silence: サイレンス
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 1b74405d27..b0d1087c3d 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -112,10 +112,6 @@ ka:
most_recent_activity: უახლესი აქტივობა
most_recent_ip: უახლესი აი-პი
not_subscribed: გამოუწერელი
- order:
- alphabetic: ანბანური
- most_recent: უახლესი
- title: წესრიგი
outbox_url: აუთბოქსის ურლ
perform_full_suspension: მოახდინეთ სრული შეჩერება
profile_url: პროფილის ურლ
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index e1cb350d1a..7c948e8bab 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -123,10 +123,6 @@ ko:
most_recent_ip: 최근 IP
no_limits_imposed: 제한 없음
not_subscribed: 구독하지 않음
- order:
- alphabetic: 알파벳 순
- most_recent: 최근 순
- title: 순서
outbox_url: 발신함 URL
perform_full_suspension: 정지시키기
profile_url: 프로필 URL
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index 2eff09e1b3..c361371fe3 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -1,6 +1,350 @@
---
ms:
about:
- about_this: Mengenai
+ about_hashtag_html: Terdapat toot awam yang ditanda dengan #%{hashtag}. Anda boleh berinteraksi dengan mereka jika anda mempunyai akaun di mana-mana dunia persekutuan Mastodon.
+ about_mastodon_html: Mastodon ialah rangkaian sosial berasaskan protokol web terbuka dan perisian percuma bersumber terbuka. Ianya tak terpusat seperti emel.
+ about_this: Mengenai Kami
administered_by: 'Ditadbir oleh:'
- contact: Hubungi
+ api: API
+ apps: Aplikasi mudah alih
+ closed_registrations: Pendaftaran ditutup di tika ini. Tetapi! Anda boleh mencari tika lain untuk mencipta akaun dan capai ke rangkaian yang sama daripada sana.
+ contact: Hubungi kami
+ contact_missing: Tidak ditetapkan
+ contact_unavailable: Tidak tersedia
+ documentation: Pendokumenan
+ extended_description_html: |
+
Tempat sesuai untuk peraturan
+
Kenyataan penuh masih belum ditetapkan.
+ features:
+ humane_approach_body: Belajar daripada kegagalan rangkaian lain, Mastodon berazam untuk membuat pilihan reka cipta beretika untuk mengatasi penyalahgunaan media sosial.
+ humane_approach_title: Pendekatan yang lebih berperikemanusiaan
+ not_a_product_body: Mastodon bukannya rangkaian komersial. Tiada iklan, tiada perlombongan data, tiada kurungan atau tapisan. Tiada pihak berkuasa pusat.
+ not_a_product_title: Anda seorang manusia, bukannya sebuah produk
+ real_conversation_body: Dengan had 500 aksara dan sokongan kandungan berbutir serta pemberi amaran media, anda boleh meluahkan diri anda dengan cara yang anda inginkan.
+ real_conversation_title: Dibina untuk perbualan sebenar
+ within_reach_body: Pelbagai aplikasi untuk iOS, Android, dan platform lain telah dibangunkan dengan ekosistem API mesra-pembangun membolehkan anda terus berhubung dengan rakan anda di mana-mana sahaja.
+ within_reach_title: Sentiasa dalam jangkauan
+ generic_description: "%{domain} ialah salah sebuah pelayan dalam rangkaian Mastodon"
+ hosted_on: Mastodon dihoskan di %{domain}
+ learn_more: Ketahui lebih lanjut
+ other_instances: Senarai tika
+ privacy_policy: Polisi privasi
+ source_code: Kod sumber
+ status_count_after:
+ one: status
+ other: status
+ status_count_before: Telah menulis
+ terms: Terma perkhidmatan
+ user_count_after:
+ one: pengguna
+ other: pengguna
+ user_count_before: Rumah kepada
+ what_is_mastodon: Apakah itu Mastodon?
+ accounts:
+ choices_html: 'Pilihan %{name}:'
+ follow: Ikut
+ followers:
+ one: Pengikut
+ other: Pengikut
+ following: Mengikuti
+ joined: Sertai pada %{date}
+ link_verified_on: Pemilikan pautan ini diperiksa pada %{date}
+ media: Media
+ moved_html: "%{name} telah berpindah ke %{new_profile_link}:"
+ network_hidden: Maklumat ini tidak tersedia
+ nothing_here: Tiada apa-apa di sini!
+ people_followed_by: Orang yang %{name} ikuti
+ people_who_follow: Orang yang mengikut %{name}
+ pin_errors:
+ following: Anda mestilah sudah mengikuti orang yang anda ingin syorkan
+ posts:
+ one: Toot
+ other: Toot
+ posts_tab_heading: Toot
+ posts_with_replies: Toot dan maklum balas
+ reserved_username: Nama pengguna ini terpelihara
+ roles:
+ admin: Admin
+ bot: Bot
+ moderator: Pengawal
+ unfollow: Nyahikut
+ admin:
+ account_moderation_notes:
+ create: Tinggalkan nota
+ created_msg: Nota kawalan telah berjaya dicipta!
+ delete: Padam
+ destroyed_msg: Nota kawalan telah berjaya dipadam!
+ accounts:
+ are_you_sure: Anda pasti?
+ avatar: Avatar
+ by_domain: Domain
+ change_email:
+ changed_msg: Emel akaun telah berjaya ditukar!
+ current_email: Emel Semasa
+ label: Tukar Emel
+ new_email: Emel Baru
+ submit: Tukar Emel
+ title: Tukar Emel untuk %{username}
+ confirm: Sahkan
+ confirmed: Disahkan
+ confirming: Mengesahkan
+ demote: Turunkan pangkat
+ disable: Lumpuhkan
+ disable_two_factor_authentication: Lumpuhkan 2FA
+ disabled: Dilumpuhkan
+ display_name: Nama paparan
+ domain: Domain
+ edit: Tukar
+ email: Emel
+ email_status: Status Emel
+ enable: Bolehkan
+ enabled: Dibolehkan
+ feed_url: Suapan URL
+ followers: Pengikut
+ followers_url: URL Pengikut
+ follows: Mengikuti
+ inbox_url: URL mesej masuk
+ ip: Alamat IP
+ location:
+ all: Semua
+ local: Tempatan
+ remote: Jarak Jauh
+ title: Kedudukan
+ login_status: Status log masuk
+ media_attachments: Lampiran media
+ memorialize: Tukarkan menjadi akaun peringatan
+ moderation:
+ all: Semua
+ silenced: Disenyapkan
+ suspended: Digantungkan
+ title: Kawalan
+ moderation_notes: Nota kawalan
+ most_recent_activity: Aktiviti terbaru
+ most_recent_ip: IP terbaru
+ no_limits_imposed: Tiada had dikuatkuasakan
+ not_subscribed: Tiada langganan
+ outbox_url: URL mesej keluar
+ perform_full_suspension: Gantung
+ profile_url: URL profil
+ promote: Naikkan pangkat
+ protocol: Protokol
+ public: Awam
+ push_subscription_expires: Langganan PuSH tamat tempoh
+ redownload: Segarkan semula avatar
+ remove_avatar: Buang avatar
+ resend_confirmation:
+ already_confirmed: Pengguna ini telah disahkan
+ send: Hantar semula emel pengesahan
+ success: Emel pengesahan telah berjaya dihantar!
+ reset: Set semula
+ reset_password: Set semula kata laluan
+ resubscribe: Langgan semula
+ role: Kebenaran
+ roles:
+ admin: Pentadbir
+ moderator: Pengawal
+ staff: Kakitangan
+ user: Pengguna
+ salmon_url: URL Salmon
+ search: Cari
+ shared_inbox_url: URL Peti Masuk Berkongsi
+ show:
+ created_reports: Laporan yang dicipta oleh akaun ini
+ report: laporan
+ targeted_reports: Laporan yang dicipta berkaitan akaun ini
+ silence: Senyap
+ silenced: Disenyapkan
+ statuses: Status
+ subscribe: Langgan
+ suspended: Digantung
+ title: Akaun
+ unconfirmed_email: Emel Belum Disahkan
+ undo_silenced: Buang senyap
+ undo_suspension: Buang penggantungan
+ unsubscribe: Buang langganan
+ username: Nama pengguna
+ web: Web
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name} memberikan laporan %{target} kepada diri mereka sendiri"
+ change_email_user: "%{name} menukar alamat emel pengguna %{target}"
+ confirm_user: "%{name} mengesahkan alamat emel pengguna %{target}"
+ create_custom_emoji: "%{name} memuat naik emoji baru %{target}"
+ create_domain_block: "%{name} menyekat domain %{target}"
+ create_email_domain_block: "%{name} menyenaraihitamkan domain emel %{target}"
+ demote_user: "%{name} menurunkan pangkat pengguna %{target}"
+ destroy_custom_emoji: "%{name} membuang emoji %{target}"
+ destroy_domain_block: "%{name} membuang sekatan domain %{target}"
+ destroy_email_domain_block: "%{name} menyenaraiputihkan domain emel %{target}"
+ destroy_status: "%{name} membuang status oleh %{target}"
+ disable_2fa_user: "%{name} melumpuhkan keperluan dua faktor untuk pengguna %{target}"
+ disable_custom_emoji: "%{name} melumpuhkan emoji %{target}"
+ disable_user: "%{name} melumpuhkan log masuk untuk pengguna %{target}"
+ enable_custom_emoji: "%{name} membolehkan emoji %{target}"
+ enable_user: "%{name} membolehkan log masuk untuk pengguna %{target}"
+ memorialize_account: "%{name} menukarkan akaun %{target} menjadi halaman peringatan"
+ promote_user: "%{name} menaikkan pangkat pengguna %{target}"
+ remove_avatar_user: "%{name} membuang avatar pengguna %{target}"
+ reopen_report: "%{name} membuka semula laporan %{target}"
+ reset_password_user: "%{name} set semula kata laluan pengguna %{target}"
+ resolve_report: "%{name} menyelesaikan laporan %{target}"
+ silence_account: "%{name} menyenyapkan akaun %{target}"
+ suspend_account: "%{name} menggantung akaun %{target}"
+ unassigned_report: "%{name} menyahtugaskan laporan %{target}"
+ unsilence_account: "%{name} menyahsenyapkan akaun %{target}"
+ unsuspend_account: "%{name} menyahgantungkan akaun %{target}"
+ update_custom_emoji: "%{name} mengemaskini emoji %{target}"
+ update_status: "%{name} mengemaskini status oleh %{target}"
+ deleted_status: "(status telah dipadam)"
+ title: Log audit
+ custom_emojis:
+ by_domain: Domain
+ copied_msg: Telah berjaya mencipta salinan tempatan emoji
+ copy: Salin
+ copy_failed_msg: Tidak dapat membuat salinan tempatan emoji tersebut
+ created_msg: Emoji berjaya dicipta!
+ delete: Padam
+ destroyed_msg: Emoji berjaya dipadam!
+ disable: Lumpuhkan
+ disabled_msg: Emoji tersebut berjaya dilumpuhkan
+ emoji: Emoji
+ enable: Bolehkan
+ enabled_msg: Emoji tersebut berjaya dibolehkan
+ image_hint: PNG, maksimum 50KB
+ listed: Disenaraikan
+ new:
+ title: Tambah emoji sendiri baru
+ overwrite: Tulis ganti
+ shortcode: Kod pendek
+ shortcode_hint: Sekurang-kurangnya 2 aksara, hanya aksara angka abjad dan garis bawah
+ title: Emoji sendiri
+ unlisted: Tidak disenaraikan
+ update_failed_msg: Tidak boleh mengemaskini emoji tersebut
+ updated_msg: Emoji berjaya dikemaskini!
+ upload: Muat naik
+ dashboard:
+ backlog: tugasan tunggakan
+ config: Tatarajah
+ feature_deletions: Pemadaman akaun
+ feature_invites: Pautan undangan
+ feature_registrations: Pendaftaran
+ feature_relay: Geganti persekutuan
+ features: Ciri-ciri
+ hidden_service: Persekutuan dengan perkhidmatan tersembunyi
+ open_reports: laporan belum selesai
+ recent_users: Pengguna terbaru
+ search: Carian teks penuh
+ single_user_mode: Mod pengguna tunggal
+ software: Perisian
+ space: Kegunaan ruang
+ title: Papan pemuka
+ total_users: pengguna keseluruhannya
+ trends: Trend
+ week_interactions: interaksi minggu ini
+ week_users_active: aktif minggu ini
+ week_users_new: pengguna minggu ini
+ domain_blocks:
+ add_new: Tambah
+ created_msg: Sekatan domain sedang diproses
+ destroyed_msg: Sekatan domain telah dibatalkan
+ domain: Domain
+ new:
+ create: Cipta sekatan
+ hint: Sekatan domain tidak akan menghindarkan penciptaan entri akaun dalam pangkalan data, tetapi akan diberikan kaedah kawalan khusus tertentu pada akaun-akaun tersebut secara retroaktif dan automatik.
+ severity:
+ desc_html: "Senyapkan akan membuatkan hantaran akaun tidak kelihatan kepada sesiapa yang tidak mengikut mereka. Gantungkan akan membuang semua kandungan, media, dan data profil akaun tersebut. Gunakan Tiada jika anda hanya ingin menolak fail media."
+ noop: Tiada
+ silence: Senyapkan
+ suspend: Gantungkan
+ title: Sekatan domain baru
+ reject_media: Tolak fail media
+ reject_media_hint: Buang fail media yang disimpan di sini dan menolak sebarang muat turun pada masa depan. Tidak berkaitan dengan penggantungan
+ reject_reports: Tolak laporan
+ reject_reports_hint: Abaikan semua laporan daripada domain ini. Tidak dikira untuk penggantungan
+ severities:
+ noop: Tiada
+ silence: Senyapkan
+ suspend: Gantungkan
+ severity: Tahap teruk
+ show:
+ affected_accounts:
+ one: Satu akaun dalam pangkalan data menerima kesan
+ other: "%{count} akaun dalam pangkalan data menerima kesan"
+ retroactive:
+ silence: Buang penyenyapan semua akaun sedia ada daripada domain ini
+ suspend: Buang penggantungan semua akaun sedia ada daripada domain ini
+ title: Buang sekatan domain %{domain}
+ undo: Buang
+ title: Sekatan domain
+ undo: Buang
+ email_domain_blocks:
+ add_new: Tambah
+ created_msg: Berjaya menambah domain emel ke dalam senarai hitam
+ delete: Padam
+ destroyed_msg: Berjaya memadam domain emel daripada senarai hitam
+ domain: Domain
+ new:
+ create: Tambah domain
+ title: Entri senarai hitam emel baru
+ title: Senarai hitam emel
+ instances:
+ account_count: Akaun diketahui
+ domain_name: Domain
+ reset: Set semula
+ search: Cari
+ title: Tika diketahui
+ invites:
+ deactivate_all: Nyahaktifkan semua
+ filter:
+ all: Semua
+ available: Tersedia
+ expired: Tamat tempoh
+ title: Tapis
+ title: Undangan
+ relays:
+ add_new: Tambah geganti baru
+ delete: Padam
+ description_html: "Geganti persekutuan ialah pelayan perantara yang saling menukar toot awam dalam jumlah yang banyak di antara pelayan yang melanggan ia dan menerbitkan kepada ia. Ia boleh bantu pelayan kecil dan sederhana untuk menemui kandungan daripada dunia persekutuan Mastodon, yang mana jika tidak digunakan akan memerlukan pengguna tempatan mengikut orang lain di pelayan jarak jauh secara manual."
+ disable: Lumpuhkan
+ disabled: Dilumpuhkan
+ enable: Bolehkan
+ enable_hint: Apabila dibolehkan, pelayan anda akan melanggan kesemua toot awam daripada geganti ini, dan akan mula menghantar toot awam pelayan ini kepada ia.
+ enabled: Dibolehkan
+ inbox_url: URL geganti
+ pending: Menunggu persetujuan geganti
+ save_and_enable: Simpan dan bolehkan
+ setup: Tetapkan sambungan geganti
+ status: Status
+ title: Geganti
+ report_notes:
+ created_msg: Nota laporan berjaya dicipta!
+ destroyed_msg: Nota laporan berjaya dipadam!
+ reports:
+ account:
+ note: nota
+ report: laporan
+ action_taken_by: Tindakan oleh
+ are_you_sure: Anda pasti?
+ assign_to_self: Berikan pada saya
+ assigned: Pengawal yang menerima
+ comment:
+ none: Tiada
+ created_at: Dilaporkan
+ mark_as_resolved: Tanda sebagai sudah selesai
+ mark_as_unresolved: Tanda sebagai belum selesai
+ notes:
+ create: Tambah nota
+ create_and_resolve: Selesaikan dengan nota
+ placeholder: Terangkan tindakan apa yang telah diambil, atau sebarang kemas kini lain yang berkaitan...
+ exports:
+ archive_takeout:
+ in_progress: Mengkompil arkib anda...
+ followers:
+ success:
+ one: Dalam proses menyekat-lembut pengikut daripada satu domain...
+ other: Dalam proses menyekat-lembut pengikut daripada %{count} domain...
+ notification_mailer:
+ digest:
+ title: Ketika anda tiada di sini...
+ users:
+ follow_limit_reached: Anda tidak boleh mengikut lebih daripada %{limit} orang
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index df65cfa2c2..a396a41da5 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -123,10 +123,6 @@ nl:
most_recent_ip: Laatst gebruikt IP-adres
no_limits_imposed: Geen limieten ingesteld
not_subscribed: Niet geabonneerd
- order:
- alphabetic: Alfabetisch
- most_recent: Meest recent
- title: Sorteren
outbox_url: Outbox-URL
perform_full_suspension: Opschorten
profile_url: Profiel-URL
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 61466fa20e..5e06564ac5 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -92,10 +92,6 @@
most_recent_activity: Nyligste aktivitet
most_recent_ip: Nyligste IP
not_subscribed: Ikke abonnért
- order:
- alphabetic: Alfabetisk
- most_recent: Nyligst
- title: Rekkefølge
outbox_url: Utboks URL
perform_full_suspension: Utfør full utvisning
profile_url: Profil-URL
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index d968567ddb..f9cf623f03 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -123,10 +123,6 @@ oc:
most_recent_ip: IP mai recenta
no_limits_imposed: Cap de limit impausat
not_subscribed: Pas seguidor
- order:
- alphabetic: Alfabetic
- most_recent: Mai recent
- title: Ordre
outbox_url: URL Outbox
perform_full_suspension: Suspendre
profile_url: URL del perfil
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 18b295da64..f6958b4e1b 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -131,10 +131,6 @@ pl:
most_recent_ip: Ostatnie IP
no_limits_imposed: Nie nałożono ograniczeń
not_subscribed: Nie zasubskrybowano
- order:
- alphabetic: Alfabetycznie
- most_recent: Najnowsze
- title: Kolejność
outbox_url: Adres skrzynki nadawczej
perform_full_suspension: Zawieś
profile_url: Adres profilu
@@ -376,7 +372,7 @@ pl:
desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura instancji
title: Obraz bohatera
mascot:
- desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna.
+ desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna
title: Obraz maskotki
peers_api_enabled:
desc_html: Nazwy domen, z którymi ta instancja wchodziła w interakcje
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 1c9964daf8..aa6c81e3cc 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -10,7 +10,7 @@ pt-BR:
closed_registrations: Os cadastros estão atualmente fechados nesta instância. No entanto, você pode procurar uma instância diferente na qual possa criar uma conta e acessar a mesma rede por lá.
contact: Contato
contact_missing: Não definido
- contact_unavailable: N/A
+ contact_unavailable: Não disponível
documentation: Documentação
extended_description_html: |
Um bom lugar para regras
@@ -123,10 +123,6 @@ pt-BR:
most_recent_ip: IP mais recente
no_limits_imposed: Nenhum limite imposto
not_subscribed: Não está inscrito
- order:
- alphabetic: Alfabética
- most_recent: Mais recente
- title: Ordem
outbox_url: URL da caixa de saída
perform_full_suspension: Suspender
profile_url: URL do perfil
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index b68ffbd7f3..4c23c9cf41 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -92,10 +92,6 @@ pt:
most_recent_activity: Actividade mais recente
most_recent_ip: IP mais recente
not_subscribed: Não inscrito
- order:
- alphabetic: Alfabética
- most_recent: Mais recente
- title: Ordem
outbox_url: URL da caixa de saída
perform_full_suspension: Fazer suspensão completa
profile_url: URL do perfil
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index a3ac754f2f..9fa85b7c2f 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -128,10 +128,6 @@ ru:
most_recent_activity: Последняя активность
most_recent_ip: Последний IP
not_subscribed: Не подписаны
- order:
- alphabetic: По алфавиту
- most_recent: По дате
- title: Порядок
outbox_url: URL исходящих
perform_full_suspension: Полная блокировка
profile_url: URL профиля
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index 0d78f419fd..b91d5780a9 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -6,9 +6,14 @@ ast:
autofollow: La xente que se rexistre pente la invitación va siguite automáticamente
bot: Esta cuenta fai principalmente aiciones automatizaes y podría nun supervisase
digest: Namái s'unvia tres un periodu llargu d'inactividá y namái si recibiesti cualesquier mensaxe personal na to ausencia
+ email: Vamos unviate un corréu de confirmación
irreversible: Los toots peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués
+ password: Usa 8 caráuteres polo menos
setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil
setting_theme: Afeuta al aspeutu de Mastodon cuando anicies sesión dende cualesquier preséu.
+ username: El nome d'usuariu va ser únicu en %{domain}
+ imports:
+ data: El ficheru CSV esportáu dende otra instancia de Mastodon
labels:
account:
fields:
@@ -22,18 +27,27 @@ ast:
current_password: Contraseña actual
data: Datos
display_name: Nome a amosar
+ email: Direición de corréu
+ expires_in: Caduca tres
fields: Datos meta del perfil
header: Testera
+ irreversible: Escartar en cuentes d'anubrir
locale: Llingua de la interfaz
locked: Bloquiar cuenta
+ max_uses: Númberu máximu d'usos
new_password: Contraseña nueva
note: Bio
otp_attempt: Códigu de verificación en dos pasos
password: Contraseña
+ phrase: Pallabra clave o fras
setting_auto_play_gif: Reproducir GIFs automáticamente
- setting_default_language: Llingua d'espublización
+ setting_default_language: Llingua de les espublizaciones
setting_default_privacy: Privacidá d'espublizaciones
+ setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un toot
+ setting_system_font_ui: Usar la fonte predeterminada del sistema
+ setting_unfollow_modal: Amosar el diálogu de confirmación enantes de dexar de siguir a daquién
severity: Severidá
+ type: Triba de la importación
username: Nome d'usuariu
username_or_email: Nome d'usuariu o corréu
interactions:
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index c2fd93ee17..b4f2e04c02 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -4,13 +4,13 @@ cs:
hints:
defaults:
autofollow: Lidé, kteří se zaregistrují přes pozvání, vás budou automaticky sledovat
- avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován
context: Jedno či více kontextů, ve kterých má být filtr uplatněn
digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdržel/a osobní zprávy
email: Bude vám poslán potvrzovací e-mail
fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka
- header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít
irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn
locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 1063466caf..8dfb1ddec4 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -65,6 +65,7 @@ da:
setting_default_privacy: Privatliv
setting_default_sensitive: Marker altid medier som værende følsomt
setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
+ setting_display_media_default: Standard
setting_hide_network: Skjul dit netværk
setting_noindex: Frameld dig søgemaskiners indeksering
setting_reduce_motion: Reducer animationers bevægelse
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index b510370a3c..e9ab97c870 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -3,7 +3,7 @@ eu:
simple_form:
hints:
defaults:
- autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko zaituzte
+ autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute
avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da
bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen
context: Iragazkia aplikatzeko testuinguru bat edo batzuk
@@ -12,18 +12,18 @@ eu:
fields: 4 elementu bistaratu ditzakezu taula batean zure profilean
header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da
inbox_url: Kopiatu erabili nahi duzun errelearen hasiera orriaren URLa
- irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
+ irreversible: Iragazitako Toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza
locked: Jarraitzaileak eskuz onartu behar dituzu
password: Erabili 8 karaktere gutxienez
phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
- setting_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
+ setting_default_language: Zure Toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia
setting_display_media_hide_all: Ezkutatu multimedia guztia beti
setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia
setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
- setting_noindex: Zure profil publiko eta toot orrietan eragina du
+ setting_noindex: Zure profil publiko eta Toot-en orrietan eragina du
setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
username: Zure erabiltzaile-izena bakana izango da %{domain} domeinuan
whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 2f9c80dbe0..2eeacade62 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -82,7 +82,7 @@ fa:
setting_unfollow_modal: نمایش پیغام تأیید پیش از لغو پیگیری دیگران
severity: شدت
type: نوع درونریزی
- username: نام کاربری (تنها حروف انگلیسی)
+ username: نام کاربری (لاتین)
username_or_email: نام کاربری یا ایمیل
whole_word: تطابق واژهٔ کامل
interactions:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 53ccb069ef..01d12b14b6 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -75,9 +75,9 @@ it:
setting_display_media_show_all: Mostra tutti
setting_expand_spoilers: Espandi sempre toot con content warning
setting_hide_network: Nascondi la tua rete
- setting_noindex: Non indicizzare dai motori di ricerca
+ setting_noindex: Non farti indicizzare dai motori di ricerca
setting_reduce_motion: Riduci movimento nelle animazioni
- setting_system_font_ui: Usa il carattere di default del sistema
+ setting_system_font_ui: Usa il carattere predefinito del sistema
setting_theme: Tema sito
setting_unfollow_modal: Mostra dialogo di conferma prima di smettere di seguire qualcuno
severity: Severità
@@ -86,7 +86,7 @@ it:
username_or_email: Nome utente o email
whole_word: Parola intera
interactions:
- must_be_follower: Blocca notifiche dai non follower
+ must_be_follower: Blocca notifiche da chi non ti segue
must_be_following: Blocca notifiche dalle persone che non segui
must_be_following_dm: Blocca i messaggi diretti dalle persone che non segui
notification_emails:
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 3ff75c2f2b..9916ce13ed 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -8,18 +8,24 @@ sk:
bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný
context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené
digest: Odoslané iba v prípade dlhodobej neprítomnosti, a len ak si obdŕžal/a nejaké osobné správy kým si bol/a preč
- fields: Môžeš mať 4 položky na svojom profile zobrazené vo forme tabuľky
- header: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
+ email: Bude ti odoslaný potvrdzujúci email
+ fields: Až štyri položky môžeš mať na svojom profile zobrazené vo forme tabuľky
+ header: PNG, GIF, alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať
irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení
locked: Vyžaduje manuálne schvalovať sledujúcich
+ password: Zadaj aspoň osem znakov
phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke
scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
+ setting_display_media_default: Skryť médiá označené ako citlivé
+ setting_display_media_hide_all: Vždy ukryť všetky médiá
+ setting_display_media_show_all: Stále ukazuj médiá označené ako citlivé
setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
setting_noindex: Ovplyvňuje verejný profil a stránky s príspevkami
setting_theme: Ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ username: Tvoja prezývka bude unikátna pre server %{domain}
whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
imports:
data: CSV súbor vyexportovaný z inej Mastodon inštancie
@@ -63,6 +69,11 @@ sk:
setting_default_privacy: Súkromie príspevkov
setting_default_sensitive: Označ všetky mediálne súbory ako chúlostivé
setting_delete_modal: Zobrazuj potvrdzovacie okno pred vymazaním toot-u
+ setting_display_media: Zobrazovanie médií
+ setting_display_media_default: Štandard
+ setting_display_media_hide_all: Skryť všetky
+ setting_display_media_show_all: Ukáž všetky
+ setting_expand_spoilers: Stále rozbaľ príspevky označené varovaním o obsahu
setting_hide_network: Ukri svoju sieť kontaktov
setting_noindex: Nezaraďuj príspevky do indexu pre vyhľadávče
setting_reduce_motion: Redukovať pohyb v animáciách
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 618446db1e..890cbac418 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -13,5 +13,92 @@ sl:
header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
inbox_url: Kopirajte URL naslov s prve strani releja, ki ga želite uporabiti
irreversible: Filtrirani trobi bodo nepovratno izginili, tudi če je filter kasneje odstranjen
+ locale: Jezik uporabniškega vmesnika, e-poštnih sporočil in potisnih obvestil
+ locked: Zahteva, da ročno odobrite sledilce
+ password: Uporabite najmanj 8 znakov
+ phrase: Se bo ujemal, ne glede na začetnice v tekstu ali opozorilo o vsebini troba
+ scopes: Do katerih API-jev bo imel program dostop. Če izberete obseg najvišje ravni, vam ni treba izbrati posameznih.
+ setting_default_language: Jezik vaših trobov je lahko samodejno zaznan, vendar ni vedno pravilen
+ setting_display_media_default: Skrij medij, ki je označen kot občutljiv
+ setting_display_media_hide_all: Vedno skrij vse medije
+ setting_display_media_show_all: Vedno pokaži medij, ki je označen kot občutljiv
+ setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu
+ setting_noindex: Vpliva na vaš javni profil in na strani s stanjem
+ setting_theme: Vpliva na to, kako izgleda Mastodon, ko ste prijavljeni s katero koli napravo.
+ username: Vaše uporabniško ime bo edinstveno na %{domain}
+ whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo
imports:
data: Izvožena CSV datoteka iz drugega Mastodon vozlišča
+ sessions:
+ otp: 'Vnesite dvomestno kodo, ki je ustvarjena z aplikacijo na telefonu, ali uporabite eno od vaših obnovitvenih kod:'
+ user:
+ chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazani samo trobi v izbranih jezikih
+ labels:
+ account:
+ fields:
+ name: Oznaka
+ value: Vsebina
+ defaults:
+ autofollow: Povabite, da sledi vašemu računu
+ avatar: Podoba
+ bot: To je račun robota
+ chosen_languages: Filtriraj jezike
+ confirm_new_password: Potrdite novo geslo
+ confirm_password: Potrdite geslo
+ context: Filtriraj vsebino
+ current_password: Trenutno geslo
+ data: Podatki
+ display_name: Prikazno ime
+ email: E-poštni naslov
+ expires_in: Preteče po
+ fields: Metapodatki profila
+ header: Glava
+ inbox_url: URL mape "Prejeto"
+ irreversible: Opusti namesto skrij
+ locale: Jezik vmesnika
+ locked: Zaklenjen račun
+ max_uses: Največje število uporabnikov
+ new_password: Novo geslo
+ note: Bio
+ otp_attempt: Dvofaktorska koda
+ password: Geslo
+ phrase: Ključna beseda ali fraza
+ setting_auto_play_gif: Samodejno predvajanje animiranih GIF-ov
+ setting_boost_modal: Pred sunkom pokaži potrditveno okno
+ setting_default_language: Jezik objavljanja
+ setting_default_privacy: Zasebnost objave
+ setting_default_sensitive: Vedno označi medije kot občutljive
+ setting_delete_modal: Pred brisanjem troba prikaži okno za pritrditev
+ setting_display_media: Prikaz medijev
+ setting_display_media_default: Privzeto
+ setting_display_media_hide_all: Skrij vse
+ setting_display_media_show_all: Prikaži vse
+ setting_expand_spoilers: Vedno razširi trobe, označene z opozorili o vsebini
+ setting_hide_network: Skrij svoje omrežje
+ setting_noindex: Odsotnost indeksiranja iskalnikov
+ setting_reduce_motion: Zmanjšanje premikanja v animacijah
+ setting_system_font_ui: Uporabi privzeto pisavo sistema
+ setting_theme: Tema strani
+ setting_unfollow_modal: Pokaži potrditveno okno, preden nekoga prenehamo slediti
+ severity: Strogost
+ type: Vrsta uvoza
+ username: Uporabniško ime
+ username_or_email: Uporabniško ime ali E-pošta
+ whole_word: Celotna beseda
+ interactions:
+ must_be_follower: Blokiraj obvestila nesledilcev
+ must_be_following: Blokiraj obvestila oseb, ki jim ne sledite
+ must_be_following_dm: Blokiraj neposredna sporočila oseb, ki jim ne sledite
+ notification_emails:
+ digest: Pošlji izvlečke e-pošt
+ favourite: Pošlji e-pošto, ko nekdo doda vaše stanje med priljubljene
+ follow: Pošlji e-pošto, ko vas nekdo sledi
+ follow_request: Pošlji e-pošto, ko vam nekdo želi slediti
+ mention: Pošlji e-pošto, ko vas nekdo omeni
+ reblog: Pošlji e-pošto, ko nekdo sune vaše stanje
+ report: Pošlji e-pošto, ko je oddano novo poročilo
+ 'no': Ne
+ required:
+ mark: "*"
+ text: zahtevano
+ 'yes': Da
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index bf56ef465d..32bfcb8e17 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -30,18 +30,28 @@ sk:
other_instances: Zoznam ďalších inštancií
privacy_policy: Ustanovenia o súkromí
source_code: Zdrojový kód
- status_count_after: statusy
+ status_count_after:
+ few: príspevkov
+ one: príspevok
+ other: príspevkov
status_count_before: Ktorí napísali
terms: Podmienky užívania
- user_count_after: užívateľov
+ user_count_after:
+ few: užívatelia
+ one: užívateľ
+ other: užívatelia
user_count_before: Domov pre
what_is_mastodon: Čo je Mastodon?
accounts:
choices_html: "%{name}vé voľby:"
- follow: Sledovať
- followers: Sledovatelia
- following: Sledovaní
+ follow: Sleduj
+ followers:
+ few: Sledovatelia
+ one: Sledujúci
+ other: Sledovatelia
+ following: Sledovaných
joined: Pridal/a sa %{date}
+ link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date}
media: Médiá
moved_html: "%{name} účet bol presunutý na %{new_profile_link}:"
network_hidden: Táto informácia nieje k dispozícii
@@ -50,7 +60,10 @@ sk:
people_who_follow: Ľudia sledujúci %{name}
pin_errors:
following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť
- posts: Príspevky
+ posts:
+ few: Príspevkov
+ one: Príspevok
+ other: Príspevkov
posts_tab_heading: Príspevky
posts_with_replies: Príspevky s odpoveďami
reserved_username: Prihlasovacie meno je rezervované
@@ -58,7 +71,7 @@ sk:
admin: Administrátor
bot: Automat
moderator: Moderátor
- unfollow: Prestať sledovať
+ unfollow: Prestaň sledovať
admin:
account_moderation_notes:
create: Zanechaj poznámku
@@ -112,13 +125,10 @@ sk:
moderation_notes: Moderátorské poznámky
most_recent_activity: Posledná aktivita
most_recent_ip: Posledná IP
+ no_limits_imposed: Niesú stanovené žiadné obmedzenia
not_subscribed: Nezaregistrované
- order:
- alphabetic: Abecedne
- most_recent: Podľa času
- title: Zoradiť
outbox_url: URL poslaných
- perform_full_suspension: Suspendovať
+ perform_full_suspension: Zablokovať
profile_url: URL profilu
promote: Povýšiť
protocol: Protokol
@@ -127,18 +137,18 @@ sk:
redownload: Obnoviť avatar
remove_avatar: Odstrániť avatár
resend_confirmation:
- already_confirmed: Tento používateľ už bol potvrdený
- send: Znova odoslať potvrdzovací e-mail
- success: Potvrdený e-mail bol úspešne odoslaný!
- reset: Reset
- reset_password: Obnoviť heslo
+ already_confirmed: Tento užívateľ už je potvrdený
+ send: Znovu odoslať potvrdzovací email
+ success: Potvrdzujúci email bol úspešne odoslaný!
+ reset: Resetuj
+ reset_password: Obnov heslo
resubscribe: Znovu odoberať
role: Oprávnenia
roles:
admin: Administrátor
moderator: Moderátor
staff: Člen
- user: Používateľ
+ user: Užívateľ
salmon_url: Salmon adresa
search: Hľadať
shared_inbox_url: URL zdieľanej schránky
@@ -147,14 +157,16 @@ sk:
report: report
targeted_reports: Nahlásenia pre tento účet
silence: Stíšiť
+ silenced: Utíšení
statuses: Príspevky
subscribe: Odoberať
+ suspended: Zablokovaní
title: Účty
unconfirmed_email: Nepotvrdený email
undo_silenced: Zrušiť stíšenie
undo_suspension: Zrušiť suspendáciu
- unsubscribe: Prestať odoberať
- username: Používateľske meno
+ unsubscribe: Prestaň odoberať
+ username: Prezývka
web: Web
action_logs:
actions:
@@ -165,6 +177,7 @@ sk:
create_domain_block: "%{name} zablokoval doménu %{target}"
create_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam zakázaných"
demote_user: "%{name} degradoval používateľa %{target}"
+ destroy_custom_emoji: "%{name} zničil/a %{target} emoji"
destroy_domain_block: "%{name} povolil doménu %{target}"
destroy_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam povolených"
destroy_status: "%{name} zmazal status %{target}"
@@ -250,6 +263,8 @@ sk:
title: Nové blokovanie domény
reject_media: Odmietať súbory s obrázkami alebo videami
reject_media_hint: Zmaže lokálne uložené súbory médií a odmietne ich sťahovanie v budúcnosti. Irelevantné pre suspendáciu
+ reject_reports: Zamietni hlásenia
+ reject_reports_hint: Ignoruj všetky hlásenia prichádzajúce z tejto domény. Nevplýva na blokovania
severities:
noop: Žiadne
silence: Stíšiť
@@ -293,8 +308,13 @@ sk:
title: Pozvánky
relays:
add_new: Pridaj novú priechodnú oporu
+ delete: Vymaž
description_html: "Federovací mostík je prechodný server ktorý obmieňa veľké množstvá verejných príspevkov medzi tými servermi ktoré na od neho odoberajú, aj doňho prispievajú. Môže to pomôcť malým a stredným instanciám objavovať federovaný obsah, čo inak vyžaduje aby miestni užívatelia ručne následovali iných ľudí zo vzdialených instancií."
+ disable: Pozastav
+ disabled: Zastavené
+ enable: Povoľ
enable_hint: Ak povolíš, tvoj server bude odoberať všetky verejné príspevky z tohto mostu, a začne posielať verejné príspevky tvojho servera na tento most.
+ enabled: Povolené
inbox_url: URL mostu
pending: Čakám na povolenie od prechodného mostu
save_and_enable: Uložiť a povoliť
@@ -350,6 +370,9 @@ sk:
hero:
desc_html: Zobrazuje sa na hlavnej stránke. Doporučuje sa rozlišenie aspoň 600x100px Pokiaľ tu nieje nič dodané, bude nastavený základný orázok tohoto serveru
title: Obrázok hrdinu
+ mascot:
+ desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot
+ title: Obrázok maskota
peers_api_enabled:
desc_html: Domény na ktoré táto instancia už vo fediverse natrafila
title: Zverejniť zoznam objavených instancií
@@ -370,8 +393,8 @@ sk:
desc_html: Povoliť každému aby si mohli vytvoriť účet
title: Verejná registrácia
show_known_fediverse_at_about_page:
- desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť toot statusy z celého známeho fediversa. V opačnom prípade tam budú ukázané iba statusy z lokálnej osi.
- title: Ukázať celé známe fediversum ako ukážku osi
+ desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba statusy z lokálnej osi.
+ title: Ukázať celé známe fediversum na ukážke osi
show_staff_badge:
desc_html: Zobraziť moderátorsku značku na užívateľovej stránke
title: Zobraziť značku moderátora
@@ -406,7 +429,7 @@ sk:
title: Médiá
no_media: Žiadné médiá
no_status_selected: Žiadne príspevky neboli zmenené, keďže si žiadne nemal/a zvolené
- title: Statusy na účte
+ title: Príspevky na účte
with_media: S médiami
subscriptions:
callback_url: Zdrojová adresa URL
@@ -500,7 +523,7 @@ sk:
warning_html: Iba vymazanie obsahu z tejto konkrétnej instancie je garantované. Obsah ktorý bol zdieľaný široko-ďaleko pravdepodobne zanechá nejaké stopy. Servery ktoré sú offline a tie ktoré ignorujú tvoje zmeny teda nezaktualizujú svoje databázy.
warning_title: O dostupnosti distribuovaného obsahu
errors:
- '403': Nemáte dostatočné povolenie na zobrazenie tejto stránky.
+ '403': Nemáš povolenie na zobrazenie tejto stránky.
'404': Stránka ktorú si hľadal/a sa tu nenachádza.
'410': Stránka ktorú si tu hľadal/a už viac neexistuje.
'422':
@@ -559,10 +582,11 @@ sk:
resources: Podklady
generic:
changes_saved_msg: Zmeny boli úspešne uložené!
- save_changes: Uložiť zmeny
+ copy: Kopírovať
+ save_changes: Ulož zmeny
validation_errors:
few: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} chyby
- one: Niečo nieje úplne v poriadku! Prosím skontroluj chybu
+ one: Niečo nieje úplne v poriadku! Prosím skontroluj danú chybu
other: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetkých %{count} chýb
imports:
preface: Môžeš importovať dáta ktoré si exportoval/a z iného Mastodon serveru, ako sú napríklad zoznamy ľudí ktorých sleduješ, alebo blokuješ.
@@ -738,8 +762,11 @@ sk:
other: "%{count} videí"
boosted_from_html: Povýšené od %{acct_link}
content_warning: 'Varovanie o obsahu: %{warning}'
- disallowed_hashtags: 'obsahuje nepovolené haštagy: %{tags}'
- language_detection: Zisti jazyk automaticky
+ disallowed_hashtags:
+ few: 'obsahoval nepovolené hashtagy: %{tags}'
+ one: 'obsahoval nepovolený hashtag: %{tags}'
+ other: 'obsahoval nepovolené hashtagy: %{tags}'
+ language_detection: Jazyk zisti automaticky
open_in_web: Otvor v okne prehliadača
over_character_limit: limit počtu %{max} znakov bol presiahnutý
pin_errors:
@@ -808,8 +835,12 @@ sk:
tips: Tipy
title: Vitaj na palube, %{name}!
users:
+ follow_limit_reached: Nemôžeš následovať viac ako %{limit} ľudí
invalid_email: Emailová adresa je neplatná
invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu
otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné.
signed_in_as: 'Prihlásený ako:'
+ verification:
+ explanation_html: 'Môžeš sa overiť ako majiteľ odkazov v metadátach tvojho profilu. Na to musí ale odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz musí mať prívlastok rel="me". Na texte odkazu nezáleží. Tu je príklad:'
+ verification: Overenie
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 0e9d7d3aa7..f35d5f09e2 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -16,35 +16,59 @@ sl:
Dober prostor za pravila
Razširjen opis še ni bil nastavljen.
features:
+ humane_approach_body: Na podlagi učenja od neuspehov drugih omrežij, želi Mastodon oblikovati etične načrte za boj proti zlorabi socialnih medijev.
humane_approach_title: Bolj human pristop
+ not_a_product_body: Mastodon ni komercialno omrežje. Brez oglaševanja, brez podatkovnega rudarjenja, brez obzidanih vrtov. Ni osrednjega organa.
not_a_product_title: Ti si oseba, ne izdelek
+ real_conversation_body: S 500 znaki, ki so vam na voljo, in podporo za zrnate vsebine ter opozorila pred mediji, se lahko izrazite tako, kot želite.
real_conversation_title: Zgrajen za pravi pogovor
+ within_reach_body: Zahvaljujoč razvijalcem prijaznemu API ekosistemu, obstaja več aplikacija za iOS, Arduino in druge platforme, ki vam omogočajo, da sledite svojim prijateljem kjerkoli.
within_reach_title: Vedno na dosegu roke
generic_description: "%{domain} je en strežnik v omrežju"
hosted_on: Mastodon gostuje na %{domain}
learn_more: Spoznaj več
other_instances: Seznam vozlišč
+ privacy_policy: Politika zasebnosti
source_code: Izvorna koda
- status_count_after: statusi
+ status_count_after:
+ few: stanja
+ one: stanje
+ other: stanja
+ two: stanja
status_count_before: Kdo je avtor
- user_count_after: uporabniki
+ terms: Pogoji storitve
+ user_count_after:
+ few: uporabniki
+ one: uporabnik
+ other: uporabniki
+ two: uporabniki
user_count_before: Dom za
what_is_mastodon: Kaj je Mastodon?
accounts:
+ choices_html: "%{name} izbire:"
follow: Sledi
- followers: Sledilci
+ followers:
+ few: Sledilci
+ one: Sledilec
+ other: Sledilci
+ two: Sledilci
following: Sledim
+ joined: Se je pridružil na %{date}
+ link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date}
media: Medij
moved_html: "%{name} se je prestavil na %{new_profile_link}:"
network_hidden: Te informacije niso na voljo
nothing_here: Nič ni tukaj!
people_followed_by: Ljudje, ki jim sledi %{name}
people_who_follow: Ljudje, ki sledijo %{name}
+ pin_errors:
+ following: Verjetno že sledite osebi, ki jo želite potrditi
posts:
few: Trob
one: Trob
other: Trob
two: Trob
+ posts_tab_heading: Trobi
posts_with_replies: Tuti in odgovori
reserved_username: Uporabniško ime je zasedeno
roles:
@@ -57,6 +81,7 @@ sl:
create: Pusti sporočilo
created_msg: Uspešno ustvarjena opomba moderiranja!
delete: Izbriši
+ destroyed_msg: Moderirana opomba je uspešno uničena!
accounts:
are_you_sure: Ali si prepričan?
avatar: Avatar
@@ -71,9 +96,11 @@ sl:
confirm: Potrdi
confirmed: Potrjeno
confirming: Potrjujem
+ demote: Ponižaj
disable: Onemogoči
disable_two_factor_authentication: Onemogoči 2FA
disabled: Onemogočeno
+ display_name: Prikazno ime
domain: Domena
edit: Uredi
email: E-pošta
@@ -102,10 +129,6 @@ sl:
moderation_notes: Opombe moderiranja
most_recent_activity: Zadnja aktivnost
most_recent_ip: Zadnji IP
- order:
- alphabetic: Po abecedi
- most_recent: Najnovejše
- title: Red
promote: Spodbujanje
remote_interaction:
prompt: 'Želite interakcijo s tem trobom:'
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 1e32190ccf..93ba091cb6 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -92,10 +92,6 @@ sr-Latn:
most_recent_activity: Najskorija aktivnost
most_recent_ip: Najskorija IP adresa
not_subscribed: Nije pretplaćen
- order:
- alphabetic: Abecedni
- most_recent: Najskoriji
- title: Redosled
outbox_url: Odlazno sanduče
perform_full_suspension: Izvrši kompletno isključenje
profile_url: Adresa profila
@@ -465,7 +461,7 @@ sr-Latn:
title: Moderacija
notification_mailer:
digest:
- body: 'Evo kratak pregled šta ste propustili od poslednje posete od %{since}:'
+ body: Evo kratak pregled šta ste propustili od poslednje posete od %{since}
mention: "%{name} Vas je pomenuo u:"
new_followers_summary:
few: Dobili ste %{count} nova pratioca! Sjajno!
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 1ade87f9e9..14354f8a68 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -113,10 +113,6 @@ sr:
most_recent_activity: Најскорија активност
most_recent_ip: Најскорија IP адреса
not_subscribed: Није претплаћен
- order:
- alphabetic: Абецедни
- most_recent: Најскорији
- title: Редослед
outbox_url: Одлазно сандуче
perform_full_suspension: Изврши комплетно искључење
profile_url: Адреса профила
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 465a9b1277..55ab9b2ba5 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -103,10 +103,6 @@ sv:
most_recent_activity: Senaste aktivitet
most_recent_ip: Senaste IP
not_subscribed: Inte prenumererat
- order:
- alphabetic: Alfabetiskt
- most_recent: Senaste
- title: Ordning
outbox_url: Utkorg URL
perform_full_suspension: Utför full avstängning
profile_url: Profil URL
diff --git a/config/locales/te.yml b/config/locales/te.yml
index f28b560523..bde34980a3 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -2,4 +2,6 @@
te:
about:
about_this: గురించి
+ administered_by: 'నిర్వహణలో:'
contact: సంప్రదించండి
+ contact_unavailable: వర్తించదు
diff --git a/config/locales/th.yml b/config/locales/th.yml
index b0b8e9ba06..42d52af261 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -49,10 +49,6 @@ th:
most_recent_activity: กิจกรรมล่าสุด
most_recent_ip: IP ล่าสุด
not_subscribed: Not subscribed
- order:
- alphabetic: ตามตัวอักษร
- most_recent: ล่าสุด
- title: จัดเรียง
perform_full_suspension: Perform full suspension
profile_url: Profile URL
public: สาธารณะ
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index bc0a558e14..486210af6d 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -48,10 +48,6 @@ tr:
most_recent_activity: Son aktivite
most_recent_ip: Son IP
not_subscribed: Abone edilmedi
- order:
- alphabetic: Alfabetik
- most_recent: En son
- title: Sıralama
perform_full_suspension: Tamamen uzaklaştır
profile_url: Profil linki
public: Herkese açık
@@ -222,7 +218,7 @@ tr:
too_many: 4'ten fazla dosya ekleyemezsiniz
notification_mailer:
digest:
- body: 'Son ziyaretiniz olan %{since}''den beri''da kaçırdığınız şeylerin özeti:'
+ body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti
mention: "%{name} senden bahsetti:"
new_followers_summary:
one: Yeni bir takipçiniz var!
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index e4ea774ecc..28dd7f5790 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -108,10 +108,6 @@ uk:
most_recent_activity: Остання активність
most_recent_ip: Останній IP
not_subscribed: Не підписані
- order:
- alphabetic: За алфавітом
- most_recent: За датою
- title: Порядок
outbox_url: Вихідний URL
perform_full_suspension: Повне блокування
profile_url: URL профілю
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index a32f36e32b..744648921b 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -114,10 +114,6 @@ zh-CN:
most_recent_activity: 最后一次活跃的时间
most_recent_ip: 最后一次活跃的 IP 地址
not_subscribed: 未订阅
- order:
- alphabetic: 按字母
- most_recent: 按时间
- title: 排序
outbox_url: 发件箱(Outbox)URL
perform_full_suspension: 永久封禁
profile_url: 个人资料页面 URL
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 7296587a38..abbaa77d60 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -103,10 +103,6 @@ zh-HK:
most_recent_activity: 最新活動
most_recent_ip: 最新 IP 位域
not_subscribed: 未訂閱
- order:
- alphabetic: 按字母
- most_recent: 按時間
- title: 排序
outbox_url: 寄件箱(Outbox)URL
perform_full_suspension: 完全停權
profile_url: 個人檔案 URL
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 9a7c2b293d..b4c15f6f1b 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -108,10 +108,6 @@ zh-TW:
most_recent_activity: 最近活動
most_recent_ip: 最近 IP 位址
not_subscribed: 未訂閱
- order:
- alphabetic: 按字母
- most_recent: 按時間
- title: 排序
outbox_url: 寄件箱 (Outbox) URL
perform_full_suspension: 進行停權
profile_url: 個人檔案 URL
diff --git a/db/migrate/20181116165755_create_account_stats.rb b/db/migrate/20181116165755_create_account_stats.rb
new file mode 100644
index 0000000000..a798e8166e
--- /dev/null
+++ b/db/migrate/20181116165755_create_account_stats.rb
@@ -0,0 +1,12 @@
+class CreateAccountStats < ActiveRecord::Migration[5.2]
+ def change
+ create_table :account_stats do |t|
+ t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true }
+ t.bigint :statuses_count, null: false, default: 0
+ t.bigint :following_count, null: false, default: 0
+ t.bigint :followers_count, null: false, default: 0
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20181116173541_copy_account_stats.rb b/db/migrate/20181116173541_copy_account_stats.rb
new file mode 100644
index 0000000000..bb523fbbd3
--- /dev/null
+++ b/db/migrate/20181116173541_copy_account_stats.rb
@@ -0,0 +1,54 @@
+class CopyAccountStats < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ safety_assured do
+ if supports_upsert?
+ up_fast
+ else
+ up_slow
+ end
+ end
+ end
+
+ def down
+ # Nothing
+ end
+
+ private
+
+ def supports_upsert?
+ version = select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i
+ version >= 90500
+ end
+
+ def up_fast
+ say 'Upsert is available, importing counters using the fast method'
+
+ Account.unscoped.select('id').find_in_batches(batch_size: 5_000) do |accounts|
+ execute <<-SQL.squish
+ INSERT INTO account_stats (account_id, statuses_count, following_count, followers_count, created_at, updated_at)
+ SELECT id, statuses_count, following_count, followers_count, created_at, updated_at
+ FROM accounts
+ WHERE id IN (#{accounts.map(&:id).join(', ')})
+ ON CONFLICT (account_id) DO UPDATE
+ SET statuses_count = EXCLUDED.statuses_count, following_count = EXCLUDED.following_count, followers_count = EXCLUDED.followers_count
+ SQL
+ end
+ end
+
+ def up_slow
+ say 'Upsert is not available in PostgreSQL below 9.5, falling back to slow import of counters'
+
+ # We cannot use bulk INSERT or overarching transactions here because of possible
+ # uniqueness violations that we need to skip over
+ Account.unscoped.select('id, statuses_count, following_count, followers_count, created_at, updated_at').find_each do |account|
+ begin
+ params = [[nil, account.id], [nil, account.statuses_count], [nil, account.following_count], [nil, account.followers_count], [nil, account.created_at], [nil, account.updated_at]]
+ exec_insert('INSERT INTO account_stats (account_id, statuses_count, following_count, followers_count, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6)', nil, params)
+ rescue ActiveRecord::RecordNotUnique
+ next
+ end
+ end
+ end
+end
diff --git a/db/migrate/20181127130500_identity_id_to_bigint.rb b/db/migrate/20181127130500_identity_id_to_bigint.rb
new file mode 100644
index 0000000000..5f388aca7c
--- /dev/null
+++ b/db/migrate/20181127130500_identity_id_to_bigint.rb
@@ -0,0 +1,27 @@
+require Rails.root.join('lib', 'mastodon', 'migration_helpers')
+
+class IdentityIdToBigint < ActiveRecord::Migration[5.2]
+ include Mastodon::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ safety_assured do
+ change_column_type_concurrently :identities, :id, :bigint
+ cleanup_concurrent_column_type_change :identities, :id
+
+ change_column_type_concurrently :identities, :user_id, :bigint
+ cleanup_concurrent_column_type_change :identities, :user_id
+ end
+ end
+
+ def down
+ safety_assured do
+ change_column_type_concurrently :identities, :id, :integer
+ cleanup_concurrent_column_type_change :identities, :id
+
+ change_column_type_concurrently :identities, :user_id, :integer
+ cleanup_concurrent_column_type_change :identities, :user_id
+ end
+ end
+end
diff --git a/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb b/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb
new file mode 100644
index 0000000000..9267e9b2c6
--- /dev/null
+++ b/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class CopyAccountStatsCleanup < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ safety_assured do
+ remove_column :accounts, :statuses_count, :integer, default: 0, null: false
+ remove_column :accounts, :following_count, :integer, default: 0, null: false
+ remove_column :accounts, :followers_count, :integer, default: 0, null: false
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 9e718615f9..cd70b7ed2f 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2018_10_26_034033) do
+ActiveRecord::Schema.define(version: 2018_11_27_130500) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -56,6 +56,16 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do
t.index ["target_account_id"], name: "index_account_pins_on_target_account_id"
end
+ create_table "account_stats", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "statuses_count", default: 0, null: false
+ t.bigint "following_count", default: 0, null: false
+ t.bigint "followers_count", default: 0, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["account_id"], name: "index_account_stats_on_account_id", unique: true
+ end
+
create_table "accounts", force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
@@ -85,9 +95,6 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do
t.boolean "suspended", default: false, null: false
t.boolean "locked", default: false, null: false
t.string "header_remote_url", default: "", null: false
- t.integer "statuses_count", default: 0, null: false
- t.integer "followers_count", default: 0, null: false
- t.integer "following_count", default: 0, null: false
t.datetime "last_webfingered_at"
t.string "inbox_url", default: "", null: false
t.string "outbox_url", default: "", null: false
@@ -238,12 +245,12 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do
t.index ["target_account_id"], name: "index_follows_on_target_account_id"
end
- create_table "identities", id: :serial, force: :cascade do |t|
- t.integer "user_id"
+ create_table "identities", force: :cascade do |t|
t.string "provider", default: "", null: false
t.string "uid", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.bigint "user_id"
t.index ["user_id"], name: "index_identities_on_user_id"
end
@@ -640,6 +647,7 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do
add_foreign_key "account_moderation_notes", "accounts", column: "target_account_id"
add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade
add_foreign_key "account_pins", "accounts", on_delete: :cascade
+ add_foreign_key "account_stats", "accounts", on_delete: :cascade
add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify
add_foreign_key "admin_action_logs", "accounts", on_delete: :cascade
add_foreign_key "backups", "users", on_delete: :nullify
@@ -656,7 +664,7 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do
add_foreign_key "follow_requests", "accounts", name: "fk_76d644b0e7", on_delete: :cascade
add_foreign_key "follows", "accounts", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade
add_foreign_key "follows", "accounts", name: "fk_32ed1b5560", on_delete: :cascade
- add_foreign_key "identities", "users", on_delete: :cascade
+ add_foreign_key "identities", "users", name: "fk_bea040f377", on_delete: :cascade
add_foreign_key "imports", "accounts", name: "fk_6db1b6e408", on_delete: :cascade
add_foreign_key "invites", "users", on_delete: :cascade
add_foreign_key "list_accounts", "accounts", on_delete: :cascade
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index 142436c19a..9f7870bcd3 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -242,8 +242,9 @@ module Mastodon
end
culled += 1
- say('.', :green, false)
+ say('+', :green, false)
else
+ account.touch # Touch account even during dry run to avoid getting the account into the window again
say('.', nil, false)
end
end
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 99660dd1d9..6152d5a095 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -50,10 +50,10 @@ module Mastodon
else
MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).reorder(nil).find_in_batches do |media_attachments|
media_attachments.each do |m|
+ size += m.file_file_size || 0
Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run]
options[:verbose] ? say(m.id) : say('.', :green, false)
processed += 1
- size += m.file_file_size || 0
end
end
end
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 60c4ffaa64..bc4712d9ad 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -13,7 +13,7 @@ module Mastodon
end
def patch
- 1
+ 2
end
def pre
diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf
index f56339cac9..c0e883603d 100644
--- a/nanobox/nginx-local.conf
+++ b/nanobox/nginx-local.conf
@@ -38,7 +38,7 @@ http {
root /app/public;
- client_max_body_size 8M;
+ client_max_body_size 80M;
location / {
try_files $uri @rails;
diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb
index 2a047dd9f6..12bcc8ca53 100644
--- a/nanobox/nginx-stream.conf.erb
+++ b/nanobox/nginx-stream.conf.erb
@@ -32,7 +32,7 @@ http {
listen 8080;
add_header Strict-Transport-Security "max-age=31536000";
- add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
+ # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
root /app/public;
diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb
index 797201eabf..d96f1bfc7a 100644
--- a/nanobox/nginx-web.conf.erb
+++ b/nanobox/nginx-web.conf.erb
@@ -32,11 +32,11 @@ http {
listen 8080;
add_header Strict-Transport-Security "max-age=31536000";
- add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
+ # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
root /app/public;
- client_max_body_size 8M;
+ client_max_body_size 80M;
location / {
try_files $uri @rails;
diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index ae9e058c86..dbcad3c2d2 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -24,8 +24,8 @@ RSpec.describe Admin::AccountsController, type: :controller do
expect(h[:local]).to eq '1'
expect(h[:remote]).to eq '1'
expect(h[:by_domain]).to eq 'domain'
+ expect(h[:active]).to eq '1'
expect(h[:silenced]).to eq '1'
- expect(h[:alphabetic]).to eq '1'
expect(h[:suspended]).to eq '1'
expect(h[:username]).to eq 'username'
expect(h[:display_name]).to eq 'display name'
@@ -39,8 +39,8 @@ RSpec.describe Admin::AccountsController, type: :controller do
local: '1',
remote: '1',
by_domain: 'domain',
+ active: '1',
silenced: '1',
- alphabetic: '1',
suspended: '1',
username: 'username',
display_name: 'display name',
diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb
new file mode 100644
index 0000000000..2b06b47909
--- /dev/null
+++ b/spec/fabricators/account_stat_fabricator.rb
@@ -0,0 +1,6 @@
+Fabricator(:account_stat) do
+ account nil
+ statuses_count ""
+ following_count ""
+ followers_count ""
+end
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index 8cc5d90ce3..2d300f18d6 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -48,9 +48,11 @@ describe Request do
end
it 'executes a HTTP request when the first address is private' do
- allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM)
- .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM))
- .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:4860:4860::8844"], :PF_INET6, :SOCK_STREAM))
+ resolver = double
+
+ allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:4860:4860::8844))
+ allow(resolver).to receive(:timeouts=).and_return(nil)
+ allow(Resolv::DNS).to receive(:open).and_yield(resolver)
expect { |block| subject.perform &block }.to yield_control
expect(a_request(:get, 'http://example.com')).to have_been_made.once
@@ -81,9 +83,12 @@ describe Request do
end
it 'raises Mastodon::ValidationError' do
- allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM)
- .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM))
- .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:db8::face"], :PF_INET6, :SOCK_STREAM))
+ resolver = double
+
+ allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:db8::face))
+ allow(resolver).to receive(:timeouts=).and_return(nil)
+ allow(Resolv::DNS).to receive(:open).and_yield(resolver)
+
expect { subject.perform }.to raise_error Mastodon::ValidationError
end
end
diff --git a/spec/models/account_filter_spec.rb b/spec/models/account_filter_spec.rb
index 0a02526421..176a0eeacd 100644
--- a/spec/models/account_filter_spec.rb
+++ b/spec/models/account_filter_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
describe AccountFilter do
describe 'with empty params' do
- it 'defaults to recent account list' do
+ it 'defaults to recent local not-suspended account list' do
filter = described_class.new({})
- expect(filter.results).to eq Account.recent
+ expect(filter.results).to eq Account.local.recent.without_suspended
end
end
@@ -17,23 +17,6 @@ describe AccountFilter do
end
end
- describe 'when an IP address is provided' do
- it 'filters with IP when valid' do
- filter = described_class.new(ip: '127.0.0.1')
- allow(User).to receive(:with_recent_ip_address).and_return(User.none)
-
- filter.results
- expect(User).to have_received(:with_recent_ip_address).with('127.0.0.1')
- end
-
- it 'skips IP when invalid' do
- filter = described_class.new(ip: '345.678.901.234')
- expect(User).not_to receive(:with_recent_ip_address)
-
- filter.results
- end
- end
-
describe 'with valid params' do
it 'combines filters on Account' do
filter = described_class.new(
@@ -60,13 +43,13 @@ describe AccountFilter do
end
describe 'that call account methods' do
- %i(local remote silenced alphabetic suspended).each do |option|
+ %i(local remote silenced suspended).each do |option|
it "delegates the #{option} option" do
allow(Account).to receive(option).and_return(Account.none)
filter = described_class.new({ option => true })
filter.results
- expect(Account).to have_received(option)
+ expect(Account).to have_received(option).at_least(1)
end
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 5baf70ef93..a43421b769 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do
expect(account).not_to model_have_error_on_field(:username)
end
- it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
+ it 'is valid even if the username contains hyphens' do
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
account.valid?
+ expect(account).to_not model_have_error_on_field(:username)
+ end
+
+ it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do
+ account = Fabricate.build(:account, domain: 'domain', username: 'the doctor')
+ account.valid?
expect(account).to model_have_error_on_field(:username)
end
@@ -754,24 +760,6 @@ RSpec.describe Account, type: :model do
expect(Account.suspended).to match_array([account_1])
end
end
-
- describe 'without_followers' do
- it 'returns a relation of accounts without followers' do
- account_1 = Fabricate(:account)
- account_2 = Fabricate(:account)
- Fabricate(:follow, account: account_1, target_account: account_2)
- expect(Account.without_followers).to match_array([account_1])
- end
- end
-
- describe 'with_followers' do
- it 'returns a relation of accounts with followers' do
- account_1 = Fabricate(:account)
- account_2 = Fabricate(:account)
- Fabricate(:follow, account: account_1, target_account: account_2)
- expect(Account.with_followers).to match_array([account_2])
- end
- end
end
context 'when is local' do
diff --git a/spec/models/account_stat_spec.rb b/spec/models/account_stat_spec.rb
new file mode 100644
index 0000000000..a94185109c
--- /dev/null
+++ b/spec/models/account_stat_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe AccountStat, type: :model do
+end
diff --git a/spec/models/concerns/status_threading_concern_spec.rb b/spec/models/concerns/status_threading_concern_spec.rb
index e5736a3079..94c2d5fc2e 100644
--- a/spec/models/concerns/status_threading_concern_spec.rb
+++ b/spec/models/concerns/status_threading_concern_spec.rb
@@ -118,5 +118,15 @@ describe StatusThreadingConcern do
viewer.block_domain!('example.com')
expect(status.descendants(4, viewer)).to_not include(reply2)
end
+
+ it 'promotes self-replies to the top while leaving the rest in order' do
+ a = Fabricate(:status, account: alice)
+ d = Fabricate(:status, account: jeff, thread: a)
+ e = Fabricate(:status, account: bob, thread: d)
+ c = Fabricate(:status, account: alice, thread: a)
+ f = Fabricate(:status, account: bob, thread: c)
+
+ expect(a.descendants(20)).to eq [c, d, e, f]
+ end
end
end
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
index c781f2a294..403eb8c336 100644
--- a/spec/models/notification_spec.rb
+++ b/spec/models/notification_spec.rb
@@ -101,7 +101,7 @@ RSpec.describe Notification, type: :model do
before do
allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1)
allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2)
- allow(Account).to receive_message_chain(:where, :map, :to_h).and_return(accounts_with_ids)
+ allow(Account).to receive_message_chain(:where, :includes, :each_with_object).and_return(accounts_with_ids)
end
let(:cached_items) do
diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb
index 5e9351aff4..af1a6f288b 100644
--- a/spec/models/status_stat_spec.rb
+++ b/spec/models/status_stat_spec.rb
@@ -1,5 +1,4 @@
require 'rails_helper'
RSpec.describe StatusStat, type: :model do
- pending "add some examples to (or delete) #{__FILE__}"
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 8c6778edc1..c829195972 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -89,18 +89,6 @@ RSpec.describe User, type: :model do
expect(User.matches_email('specified')).to match_array([specified])
end
end
-
- describe 'with_recent_ip_address' do
- it 'returns a relation of users who is, or was at last time, online with the given IP address' do
- specifieds = [
- Fabricate(:user, current_sign_in_ip: '0.0.0.42', last_sign_in_ip: '0.0.0.0'),
- Fabricate(:user, current_sign_in_ip: nil, last_sign_in_ip: '0.0.0.42')
- ]
- Fabricate(:user, current_sign_in_ip: '0.0.0.0', last_sign_in_ip: '0.0.0.0')
-
- expect(User.with_recent_ip_address('0.0.0.42')).to match_array(specifieds)
- end
- end
end
let(:account) { Fabricate(:account, username: 'alice') }
diff --git a/spec/services/fetch_atom_service_spec.rb b/spec/services/fetch_atom_service_spec.rb
index 30e5b0935a..495540004e 100644
--- a/spec/services/fetch_atom_service_spec.rb
+++ b/spec/services/fetch_atom_service_spec.rb
@@ -60,8 +60,15 @@ RSpec.describe FetchAtomService, type: :service do
it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] }
end
- context 'content_type is json' do
- let(:content_type) { 'application/activity+json' }
+ context 'content_type is activity+json' do
+ let(:content_type) { 'application/activity+json; charset=utf-8' }
+ let(:body) { json }
+
+ it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
+ end
+
+ context 'content_type is ld+json with profile' do
+ let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' }
let(:body) { json }
it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 40fa8fbefa..349ad861b9 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -25,6 +25,19 @@ RSpec.describe PostStatusService, type: :service do
expect(status.thread).to eq in_reply_to_status
end
+ it 'creates response to the original status of boost' do
+ boosted_status = Fabricate(:status)
+ in_reply_to_status = Fabricate(:status, reblog: boosted_status)
+ account = Fabricate(:account)
+ text = "test status update"
+
+ status = subject.call(account, text, in_reply_to_status)
+
+ expect(status).to be_persisted
+ expect(status.text).to eq text
+ expect(status.thread).to eq boosted_status
+ end
+
it 'creates a sensitive status' do
status = create_status_with_options(sensitive: true)