Merge commit 'e38ce3beb7b83f43ef6e6f144c19b186c393910c' into glitch-soc/merge-upstream

pull/2826/head
Claire 2024-08-26 18:52:33 +02:00
commit 11b8017b45
70 changed files with 564 additions and 309 deletions

View File

@ -42,11 +42,24 @@ jobs:
with:
onlyProduction: 'true'
- name: Cache assets from compilation
uses: actions/cache@v4
with:
path: |
public/assets
public/packs
public/packs-test
tmp/cache/webpacker
key: ${{ matrix.mode }}-assets-${{ github.head_ref || github.ref_name }}-${{ github.sha }}
restore-keys: |
${{ matrix.mode }}-assets-${{ github.head_ref || github.ref_name }}-${{ github.sha }}
${{ matrix.mode }}-assets-${{ github.head_ref || github.ref_name }}
${{ matrix.mode }}-assets-main
${{ matrix.mode }}-assets
- name: Precompile assets
# Previously had set this, but it's not supported
# export NODE_OPTIONS=--openssl-legacy-provider
run: |-
./bin/rails assets:precompile
bin/rails assets:precompile
- name: Archive asset artifacts
run: |

View File

@ -165,7 +165,7 @@ The following changelog entries focus on changes visible to users, administrator
- **Change colors throughout the web UI** (#29522, #29584, #29653, #29779, #29803, #29809, #29808, #29828, #31034, #31168, #31266, #31348, #31349, #31361, and #31510 by @ClearlyClaire, @Gargron, @renchap, and @vmstan)
- **Change onboarding prompt to follow suggestions carousel in web UI** (#28878 and #29272 by @Gargron)
- **Change email templates** (#28416, #28755, #28814, #29064, #28883, #29470, #29607, #29761, #29760, and #29879 by @ClearlyClaire, @Gargron, @hteumeuleu, and @mjankowski)\
All emails to end-users have been completely redesigned with a fresh new look, providing more information while making them easier to reand and keeping maximum compatibility across mail clients.
All emails to end-users have been completely redesigned with a fresh new look, providing more information while making them easier to read and keeping maximum compatibility across mail clients.
- **Change follow recommendations algorithm** (#28314, #28433, #29017, #29108, #29306, #29550, #29619, and #31474 by @ClearlyClaire, @Gargron, @kernal053, @mjankowski, and @wheatear-dev)\
This replaces the “past interactions” recommendation algorithm with a “friends of friends” algorithm that suggests accounts followed by people you follow, and a “similar profiles” algorithm that suggests accounts with a profile similar to your most recent follows.\
In addition, the implementation has been significantly reworked, and all follow recommendations are now dismissable.\

View File

@ -137,14 +137,14 @@ GEM
blurhash (0.1.7)
bootsnap (1.18.4)
msgpack (~> 1.2)
brakeman (6.1.2)
brakeman (6.2.1)
racc
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
redis (>= 1.0, < 6)
builder (3.3.0)
bundler-audit (0.9.1)
bundler-audit (0.9.2)
bundler (>= 1.2.0, < 3)
thor (~> 1.0)
capybara (3.40.0)
@ -432,7 +432,7 @@ GEM
mime-types-data (3.2024.0702)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
minitest (5.24.1)
minitest (5.25.1)
msgpack (1.7.2)
multi_json (1.15.0)
multipart-post (2.4.0)
@ -466,7 +466,7 @@ GEM
addressable (~> 2.8)
nokogiri (~> 1.12)
omniauth (~> 2.1)
omniauth-rails_csrf_protection (1.0.1)
omniauth-rails_csrf_protection (1.0.2)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth-saml (2.1.0)
@ -695,7 +695,7 @@ GEM
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.3.4)
rexml (3.3.6)
strscan
rotp (6.3.0)
rouge (4.2.1)
@ -832,7 +832,7 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (1.0.1)
climate_control
test-prof (1.4.0)
test-prof (1.4.1)
thor (1.3.1)
tilt (2.3.0)
timeout (0.4.1)

View File

@ -86,7 +86,7 @@ module ApplicationHelper
def html_title
safe_join(
[content_for(:page_title).to_s.chomp, title]
.select(&:present?),
.compact_blank,
' - '
)
end

View File

@ -6,5 +6,4 @@ export const submitAccountNote = createDataLoadingThunk(
({ accountId, note }: { accountId: string; note: string }) =>
apiSubmitAccountNote(accountId, note),
(relationship) => ({ relationship }),
{ skipLoading: true },
);

View File

@ -190,6 +190,8 @@
"confirmations.unfollow.confirm": "إلغاء المتابعة",
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
"confirmations.unfollow.title": "إلغاء متابعة المستخدم؟",
"content_warning.hide": "إخفاء المنشور",
"content_warning.show": "إظهار على أي حال",
"conversation.delete": "احذف المحادثة",
"conversation.mark_as_read": "اعتبرها كمقروءة",
"conversation.open": "اعرض المحادثة",
@ -297,6 +299,7 @@
"filter_modal.select_filter.subtitle": "استخدم فئة موجودة أو قم بإنشاء فئة جديدة",
"filter_modal.select_filter.title": "تصفية هذا المنشور",
"filter_modal.title.status": "تصفية منشور",
"filter_warning.matches_filter": "يطابق عامل التصفية \"{title}\"",
"filtered_notifications_banner.title": "الإشعارات المصفاة",
"firehose.all": "الكل",
"firehose.local": "هذا الخادم",
@ -500,11 +503,14 @@
"notification.update": "عدّلَ {name} منشورًا",
"notification_requests.accept": "موافقة",
"notification_requests.dismiss": "تخطي",
"notification_requests.edit_selection": "تعديل",
"notification_requests.exit_selection": "تمّ",
"notification_requests.explainer_for_limited_account": "تم تصفية الإشعارات من هذا الحساب لأن الحساب تم تقييده من قبل مشرف.",
"notification_requests.notifications_from": "إشعارات من {name}",
"notification_requests.title": "الإشعارات المصفاة",
"notifications.clear": "مسح الإشعارات",
"notifications.clear_confirmation": "متأكد من أنك تود مسح جميع الإشعارات الخاصة بك و المتلقاة إلى حد الآن ؟",
"notifications.clear_title": "أترغب في مسح الإشعارات؟",
"notifications.column_settings.admin.report": "التبليغات الجديدة:",
"notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:",
"notifications.column_settings.alert": "إشعارات سطح المكتب",
@ -713,6 +719,7 @@
"server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)",
"server_banner.active_users": "مستخدم نشط",
"server_banner.administered_by": "يُديره:",
"server_banner.is_one_of_many": "{domain} هو واحد من بين العديد من خوادم ماستدون المستقلة التي يمكنك استخدامها للمشاركة في الفديفرس.",
"server_banner.server_stats": "إحصائيات الخادم:",
"sign_in_banner.create_account": "أنشئ حسابًا",
"sign_in_banner.sign_in": "تسجيل الدخول",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Адпісацца",
"confirmations.unfollow.message": "Вы ўпэўненыя, што хочаце адпісацца ад {name}?",
"confirmations.unfollow.title": "Адпісацца ад карыстальніка?",
"content_warning.hide": "Схаваць допіс",
"content_warning.show": "Усё адно паказаць",
"conversation.delete": "Выдаліць размову",
"conversation.mark_as_read": "Адзначыць прачытаным",
"conversation.open": "Прагледзець размову",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую",
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
"filter_modal.title.status": "Фільтраваць допіс",
"filter_warning.matches_filter": "Адпавядае фільтру \"{title}\"",
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
"firehose.all": "Усе",
@ -355,6 +358,7 @@
"home.pending_critical_update.link": "Прагледзець абнаўленні",
"home.pending_critical_update.title": "Даступна крытычнае абнаўленне бяспекі!",
"home.show_announcements": "Паказаць аб'явы",
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей на якіх вы не падпісаны?",
"interaction_modal.description.favourite": "Маючы ўліковы запіс Mastodon, вы можаце ўпадабаць гэты допіс, каб паведаміць аўтару, што ён вам падабаецца, і захаваць яго на будучыню.",
"interaction_modal.description.follow": "Маючы акаўнт у Mastodon, вы можаце падпісацца на {name}, каб бачыць яго/яе допісы ў сваёй хатняй стужцы.",
"interaction_modal.description.reblog": "З уліковым запісам Mastodon, вы можаце пашырыць гэты пост, каб падзяліцца ім са сваімі падпісчыкамі.",
@ -504,7 +508,11 @@
"notification.status": "Новы допіс ад {name}",
"notification.update": "Допіс {name} адрэдагаваны",
"notification_requests.accept": "Прыняць",
"notification_requests.confirm_accept_multiple.title": "Прыняць запыты на апавяшчэнні?",
"notification_requests.confirm_dismiss_multiple.title": "Адхіліць запыты на апавяшчэнні?",
"notification_requests.dismiss": "Адхіліць",
"notification_requests.edit_selection": "Рэдагаваць",
"notification_requests.exit_selection": "Гатова",
"notification_requests.maximize": "Разгарнуць",
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
"notification_requests.notifications_from": "Апавяшчэнні ад {name}",

View File

@ -192,6 +192,7 @@
"confirmations.unfollow.confirm": "Без следване",
"confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?",
"confirmations.unfollow.title": "Спирате ли да следвате потребителя?",
"content_warning.hide": "Скриване на публ.",
"conversation.delete": "Изтриване на разговора",
"conversation.mark_as_read": "Маркиране като прочетено",
"conversation.open": "Преглед на разговора",

View File

@ -1,5 +1,5 @@
{
"about.blocks": "Gweinyddion sy'n cael eu cymedroli",
"about.blocks": "Gweinyddion gyda chymedrolwyr",
"about.contact": "Cysylltwch â:",
"about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael",
@ -103,7 +103,7 @@
"bundle_column_error.network.body": "Bu gwall wrth geisio llwytho'r dudalen hon. Gall hyn fod oherwydd anhawster dros-dro gyda'ch cysylltiad gwe neu'r gweinydd hwn.",
"bundle_column_error.network.title": "Gwall rhwydwaith",
"bundle_column_error.retry": "Ceisiwch eto",
"bundle_column_error.return": "Mynd nôl adref",
"bundle_column_error.return": "Mynd i'r ffrwd gartref",
"bundle_column_error.routing.body": "Nid oedd modd canfod y dudalen honno. Ydych chi'n siŵr fod yr URL yn y bar cyfeiriad yn gywir?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Cau",
@ -124,7 +124,7 @@
"column.favourites": "Ffefrynnau",
"column.firehose": "Ffrydiau byw",
"column.follow_requests": "Ceisiadau dilyn",
"column.home": "Hafan",
"column.home": "Cartref",
"column.lists": "Rhestrau",
"column.mutes": "Defnyddwyr wedi'u tewi",
"column.notifications": "Hysbysiadau",
@ -184,7 +184,7 @@
"confirmations.logout.title": "Allgofnodi?",
"confirmations.mute.confirm": "Tewi",
"confirmations.redraft.confirm": "Dileu ac ailddrafftio",
"confirmations.redraft.message": "Ydych chi'n siŵr eich bod am ddileu'r postiad hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael eu colli, a bydd atebion i'r post gwreiddiol yn mynd yn amddifad.",
"confirmations.redraft.message": "Ydych chi wir eisiau'r dileu'r postiad hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael eu colli, a bydd atebion i'r post gwreiddiol yn mynd yn amddifad.",
"confirmations.redraft.title": "Dileu & ailddraftio post?",
"confirmations.reply.confirm": "Ateb",
"confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n siŵr eich bod am barhau?",
@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Dad-ddilyn",
"confirmations.unfollow.message": "Ydych chi'n siŵr eich bod am ddad-ddilyn {name}?",
"confirmations.unfollow.title": "Dad-ddilyn defnyddiwr?",
"content_warning.hide": "Cuddio'r post",
"content_warning.show": "Dangos beth bynnag",
"conversation.delete": "Dileu sgwrs",
"conversation.mark_as_read": "Nodi fel wedi'i ddarllen",
"conversation.open": "Gweld sgwrs",
@ -208,7 +210,7 @@
"dismissable_banner.community_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl sydd â chyfrifon ar {domain}.",
"dismissable_banner.dismiss": "Cau",
"dismissable_banner.explore_links": "Dyma straeon newyddion syn cael eu rhannu fwyaf ar y we gymdeithasol heddiw. Mae'r straeon newyddion diweddaraf sy'n cael eu postio gan fwy o unigolion gwahanol yn cael eu graddio'n uwch.",
"dismissable_banner.explore_statuses": "Mae'r rhain yn bostiadau o bob rhan o'r we gymdeithasol sydd ar gynnydd heddiw. Mae postiadau mwy diweddar sydd â mwy o hybiau a ffefrynu'n cael eu graddio'n uwch.",
"dismissable_banner.explore_statuses": "Dyma postiadau o bob gwr o'r we gymdeithasol sy'n derbyn sylw heddiw. Mae postiadau mwy diweddar sydd â mwy o hybiau a ffefrynnau'n cael eu graddio'n uwch.",
"dismissable_banner.explore_tags": "Mae'r rhain yn hashnodau sydd ar gynnydd ar y we gymdeithasol heddiw. Mae hashnodau sy'n cael eu defnyddio gan fwy o unigolion gwahanol yn cael eu graddio'n uwch.",
"dismissable_banner.public_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl ar y we gymdeithasol y mae pobl ar {domain} yn eu dilyn.",
"domain_block_modal.block": "Blocio gweinydd",
@ -258,13 +260,13 @@
"empty_column.community": "Mae'r ffrwd lleol yn wag. Beth am ysgrifennu rhywbeth cyhoeddus!",
"empty_column.direct": "Nid oes gennych unrhyw grybwylliadau preifat eto. Pan fyddwch chi'n anfon neu'n derbyn un, bydd yn ymddangos yma.",
"empty_column.domain_blocks": "Nid oes unrhyw barthau wedi'u blocio eto.",
"empty_column.explore_statuses": "Does dim yn trendio ar hyn o bryd. Dewch nôl nes ymlaen!",
"empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff bostiadau eto. Pan byddwch yn hoffi un, bydd yn ymddangos yma.",
"empty_column.favourites": "Nid oes unrhyw un wedi hoffi'r postiad hwn eto. Pan fydd rhywun yn gwneud hynny, byddan nhw'n ymddangos yma.",
"empty_column.explore_statuses": "Does dim pynciau llosg ar hyn o bryd. Dewch nôl nes ymlaen!",
"empty_column.favourited_statuses": "Rydych chi heb ffafrio unrhyw bostiadau eto. Pan byddwch chi'n ffafrio un, bydd yn ymddangos yma.",
"empty_column.favourites": "Nid oes unrhyw un wedi ffafrio'r postiad hwn eto. Pan fydd rhywun yn gwneud hynny, byddan nhw'n ymddangos yma.",
"empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan fyddwch yn derbyn un, byddan nhw'n ymddangos yma.",
"empty_column.followed_tags": "Nid ydych wedi dilyn unrhyw hashnodau eto. Pan fyddwch chi'n gwneud hynny, byddan nhw'n ymddangos yma.",
"empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.",
"empty_column.home": "Mae eich ffrwd gartref yn wag! Ymwelwch â {public} neu defnyddiwch y chwilotwr i ddechrau arni ac i gwrdd â defnyddwyr eraill.",
"empty_column.home": "Mae eich ffrwd gartref yn wag! Dilynwch fwy o bobl i'w llenwi.",
"empty_column.list": "Does dim yn y rhestr yma eto. Pan fydd aelodau'r rhestr yn cyhoeddi postiad newydd, mi fydd yn ymddangos yma.",
"empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan fyddwch yn creu un, mi fydd yn ymddangos yma.",
"empty_column.mutes": "Nid ydych wedi tewi unrhyw ddefnyddwyr eto.",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd",
"filter_modal.select_filter.title": "Hidlo'r postiad hwn",
"filter_modal.title.status": "Hidlo postiad",
"filter_warning.matches_filter": "Yn cydweddu'r hidlydd “{title}”",
"filtered_notifications_banner.pending_requests": "Gan {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod",
"filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo",
"firehose.all": "Popeth",
@ -348,11 +351,15 @@
"hashtag.follow": "Dilyn hashnod",
"hashtag.unfollow": "Dad-ddilyn hashnod",
"hashtags.and_other": "…a {count, plural, other {# more}}",
"hints.profiles.see_more_followers": "Gweld mwy o ddilynwyr ar {domain}",
"hints.profiles.see_more_follows": "Gweld mwy o 'yn dilyn' ar {domain}",
"hints.profiles.see_more_posts": "Gweld mwy o bostiadau ar {domain}",
"hints.threads.see_more": "Gweld mwy o atebion ar {domain}",
"home.column_settings.show_reblogs": "Dangos hybiau",
"home.column_settings.show_replies": "Dangos atebion",
"home.hide_announcements": "Cuddio cyhoeddiadau",
"home.pending_critical_update.body": "Diweddarwch eich gweinydd Mastodon cyn gynted â phosibl!",
"home.pending_critical_update.link": "Gweld y diweddariadau",
"home.pending_critical_update.link": "Gweld diweddariadau",
"home.pending_critical_update.title": "Mae diweddariad diogelwch hanfodol ar gael!",
"home.show_announcements": "Dangos cyhoeddiadau",
"ignore_notifications_modal.disclaimer": "Ni all Mastodon hysbysu defnyddwyr eich bod wedi anwybyddu eu hysbysiadau. Ni fydd anwybyddu hysbysiadau yn atal y negeseuon eu hunain rhag cael eu hanfon.",
@ -366,18 +373,18 @@
"ignore_notifications_modal.not_followers_title": "Anwybyddu hysbysiadau gan bobl nad ydynt yn eich dilyn?",
"ignore_notifications_modal.not_following_title": "Anwybyddu hysbysiadau gan bobl nad ydych yn eu dilyn?",
"ignore_notifications_modal.private_mentions_title": "Anwybyddu hysbysiadau o Grybwylliadau Preifat digymell?",
"interaction_modal.description.favourite": "Gyda chyfrif ar Mastodon, gallwch chi hoffi'r postiad hwn er mwyn roi gwybod i'r awdur eich bod chi'n ei werthfawrogi ac yn ei gadw ar gyfer nes ymlaen.",
"interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich llif cartref.",
"interaction_modal.description.favourite": "Gyda chyfrif ar Mastodon, gallwch chi ffafrio'r postiad hwn er mwyn roi gwybod i'r awdur eich bod chi'n ei werthfawrogi ac yn ei gadw ar gyfer nes ymlaen.",
"interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich ffrwd gartref.",
"interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.",
"interaction_modal.description.reply": "Gyda chyfrif ar Mastodon, gallwch ymateb i'r postiad hwn.",
"interaction_modal.login.action": "Ewch â fi adref",
"interaction_modal.login.action": "Mynd i'm ffrwd gartref",
"interaction_modal.login.prompt": "Parth eich gweinydd cartref, e.e. mastodon.social",
"interaction_modal.no_account_yet": "Dim ar Mastodon?",
"interaction_modal.on_another_server": "Ar weinydd gwahanol",
"interaction_modal.on_this_server": "Ar y gweinydd hwn",
"interaction_modal.sign_in": "Nid ydych wedi mewngofnodi i'r gweinydd hwn. Ble mae eich cyfrif yn cael ei gynnal?",
"interaction_modal.sign_in_hint": "Awgrym: Dyna'r wefan lle gwnaethoch gofrestru. Os nad ydych yn cofio, edrychwch am yr e-bost croeso yn eich blwch derbyn. Gallwch hefyd nodi eich enw defnyddiwr llawn! (e.e. @Mastodon@mastodon.social)",
"interaction_modal.title.favourite": "Hoffi postiad {name}",
"interaction_modal.title.favourite": "Ffafrio postiad {name}",
"interaction_modal.title.follow": "Dilyn {name}",
"interaction_modal.title.reblog": "Hybu postiad {name}",
"interaction_modal.title.reply": "Ymateb i bostiad {name}",
@ -393,11 +400,11 @@
"keyboard_shortcuts.direct": "i agor colofn crybwylliadau preifat",
"keyboard_shortcuts.down": "Symud lawr yn y rhestr",
"keyboard_shortcuts.enter": "Agor post",
"keyboard_shortcuts.favourite": "Hoffi postiad",
"keyboard_shortcuts.favourite": "Ffafrio postiad",
"keyboard_shortcuts.favourites": "Agor rhestr ffefrynnau",
"keyboard_shortcuts.federated": "Agor ffrwd y ffederasiwn",
"keyboard_shortcuts.heading": "Bysellau brys",
"keyboard_shortcuts.home": "Agor ffrwd cartref",
"keyboard_shortcuts.home": "Agor ffrwd gartref",
"keyboard_shortcuts.hotkey": "Bysell boeth",
"keyboard_shortcuts.legend": "Dangos y rhestr hon",
"keyboard_shortcuts.local": "Agor ffrwd lleol",
@ -433,7 +440,7 @@
"lists.delete": "Dileu rhestr",
"lists.edit": "Golygu rhestr",
"lists.edit.submit": "Newid teitl",
"lists.exclusive": "Cuddiwch y postiadau hyn rhag cartref",
"lists.exclusive": "Cuddio'r postiadau hyn o'r ffrwd gartref",
"lists.new.create": "Ychwanegu rhestr",
"lists.new.title_placeholder": "Teitl rhestr newydd",
"lists.replies_policy.followed": "Unrhyw ddefnyddiwr sy'n cael ei ddilyn",
@ -487,7 +494,9 @@
"notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}",
"notification.admin.report_statuses_other": "Adroddodd {name} {target}",
"notification.admin.sign_up": "Cofrestrodd {name}",
"notification.favourite": "Hoffodd {name} eich postiad",
"notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # eraill}}",
"notification.favourite": "Ffafriodd {name} eich postiad",
"notification.favourite.name_and_others_with_link": "Ffafriodd {name} a <a>{count, plural, one {# arall} other {# eraill}}</a> eich postiad",
"notification.follow": "Dilynodd {name} chi",
"notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
"notification.label.mention": "Crybwyll",
@ -515,7 +524,13 @@
"notification.status": "{name} newydd ei bostio",
"notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn",
"notification_requests.confirm_accept_multiple.title": "Derbyn ceisiadau hysbysu?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Diystyru cais} other {Diystyru ceisiadau}}",
"notification_requests.confirm_dismiss_multiple.title": "Diystyru ceisiadau hysbysu?",
"notification_requests.dismiss": "Cau",
"notification_requests.dismiss_multiple": "{count, plural, one {Diystyru # cais…} two {Diystyru # gais…} few {Diystyru # chais…} other {Diystyru # cais…}}",
"notification_requests.edit_selection": "Golygu",
"notification_requests.exit_selection": "Iawn",
"notification_requests.explainer_for_limited_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.explainer_for_limited_remote_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif neu ei weinydd wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.maximize": "Mwyhau",
@ -581,12 +596,12 @@
"notifications_permission_banner.title": "Peidiwch â cholli dim",
"onboarding.action.back": "Ewch â fi nôl",
"onboarding.actions.back": "Ewch â fi nôl",
"onboarding.actions.go_to_explore": "Gweld beth sy'n trendio",
"onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref",
"onboarding.actions.go_to_explore": "Gweld y pynciau llosg",
"onboarding.actions.go_to_home": "Ewch i'm ffrwd gartref",
"onboarding.compose.template": "Helo, #Mastodon!",
"onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.",
"onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:",
"onboarding.follows.title": "Yn boblogaidd ar Mastodon",
"onboarding.follows.title": "Personolwch eich ffrwd gartref",
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a threndiau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
"onboarding.profile.display_name": "Enw dangos",
@ -606,7 +621,7 @@
"onboarding.start.skip": "Eisiau mynd syth yn eich blaen?",
"onboarding.start.title": "Rydych chi wedi cyrraedd!",
"onboarding.steps.follow_people.body": "Rydych chi'n curadu eich ffrwd eich hun. Gadewch i ni ei lenwi â phobl ddiddorol.",
"onboarding.steps.follow_people.title": "Dilynwch {count, plural, one {one person} other {# people}}",
"onboarding.steps.follow_people.title": "Personolwch eich ffrwd gartref",
"onboarding.steps.publish_status.body": "Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn {emoji}",
"onboarding.steps.publish_status.title": "Gwnewch eich postiad cyntaf",
"onboarding.steps.setup_profile.body": "Mae eraill yn fwy tebygol o ryngweithio â chi gyda phroffil wedi'i lenwi.",
@ -645,7 +660,7 @@
"recommended": "Argymhellwyd",
"refresh": "Adnewyddu",
"regeneration_indicator.label": "Yn llwytho…",
"regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
"regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei pharatoi!",
"relative_time.days": "{number}d",
"relative_time.full.days": "{number, plural, one {# diwrnod} other {# diwrnod}} yn ôl",
"relative_time.full.hours": "{number, plural, one {# awr} other {# awr}} yn ôl",
@ -699,7 +714,7 @@
"report.thanks.title": "Ddim eisiau gweld hwn?",
"report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.",
"report.unfollow": "Dad-ddilyn @{name}",
"report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.",
"report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich ffrwd gartref mwyach, dad-ddilynwch nhw.",
"report_notification.attached_statuses": "{count, plural, one {{count} postiad} arall {{count} postiad}} atodwyd",
"report_notification.categories.legal": "Cyfreithiol",
"report_notification.categories.legal_sentence": "cynnwys anghyfreithlon",
@ -759,7 +774,7 @@
"status.edited": "Golygwyd ddiwethaf {date}",
"status.edited_x_times": "Golygwyd {count, plural, one {count} two {count} other {{count} gwaith}}",
"status.embed": "Mewnblannu",
"status.favourite": "Hoffi",
"status.favourite": "Ffafrio",
"status.favourites": "{count, plural, one {ffefryn} other {ffefryn}}",
"status.filter": "Hidlo'r postiad hwn",
"status.history.created": "Crëwyd gan {name} {date}",
@ -798,7 +813,7 @@
"status.uncached_media_warning": "Dim rhagolwg ar gael",
"status.unmute_conversation": "Dad-dewi sgwrs",
"status.unpin": "Dadbinio o'r proffil",
"subscribed_languages.lead": "Dim ond postiadau mewn ieithoedd penodol fydd yn ymddangos yn eich ffrydiau ar ôl y newid. Dewiswch ddim byd i dderbyn postiadau ym mhob iaith.",
"subscribed_languages.lead": "Dim ond postiadau mewn ieithoedd penodol fydd yn ymddangos yn eich ffrydiau cartref a rhestr ar ôl y newid. Dewiswch ddim byd i dderbyn postiadau ym mhob iaith.",
"subscribed_languages.save": "Cadw'r newidiadau",
"subscribed_languages.target": "Newid ieithoedd tanysgrifio {target}",
"tabs_bar.home": "Cartref",
@ -809,7 +824,7 @@
"time_remaining.moments": "Munudau yn weddill",
"time_remaining.seconds": "{number, plural, one {# eiliad} other {# eiliad}} ar ôl",
"trends.counter_by_accounts": "{count, plural, zero {neb} one {{counter} person} two {{counter} berson} few {{counter} pherson} other {{counter} o bobl}} yn y {days, plural, one {diwrnod diwethaf} two {ddeuddydd diwethaf} other {{days} diwrnod diwethaf}}",
"trends.trending_now": "Yn trendio nawr",
"trends.trending_now": "Pynciau llosg",
"ui.beforeunload": "Byddwch yn colli eich drafft os byddwch yn gadael Mastodon.",
"units.short.billion": "{count}biliwn",
"units.short.million": "{count}miliwn",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Dejar de seguir",
"confirmations.unfollow.message": "¿Estás seguro que querés dejar de seguir a {name}?",
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar mensaje",
"content_warning.show": "Mostrar de todos modos",
"conversation.delete": "Eliminar conversación",
"conversation.mark_as_read": "Marcar como leída",
"conversation.open": "Ver conversación",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar este mensaje",
"filter_modal.title.status": "Filtrar un mensaje",
"filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que podrías conocer",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todos",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Dejar de seguir",
"confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?",
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar publicación",
"content_warning.show": "Mostrar de todos modos",
"conversation.delete": "Borrar conversación",
"conversation.mark_as_read": "Marcar como leído",
"conversation.open": "Ver conversación",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar esta publicación",
"filter_modal.title.status": "Filtrar una publicación",
"filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que puede que conozcas",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todas",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Dejar de seguir",
"confirmations.unfollow.message": "¿Seguro que quieres dejar de seguir a {name}?",
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar publicación",
"content_warning.show": "Mostrar de todos modos",
"conversation.delete": "Borrar conversación",
"conversation.mark_as_read": "Marcar como leído",
"conversation.open": "Ver conversación",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar esta publicación",
"filter_modal.title.status": "Filtrar una publicación",
"filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que puede que conozcas",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todas",

View File

@ -191,6 +191,8 @@
"confirmations.unfollow.confirm": "Ne plus suivre",
"confirmations.unfollow.message": "Voulez-vous vraiment arrêter de suivre {name}?",
"confirmations.unfollow.title": "Se désabonner de l'utilisateur ?",
"content_warning.hide": "Masquer le message",
"content_warning.show": "Afficher quand même",
"conversation.delete": "Supprimer cette conversation",
"conversation.mark_as_read": "Marquer comme lu",
"conversation.open": "Afficher cette conversation",
@ -298,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle",
"filter_modal.select_filter.title": "Filtrer cette publication",
"filter_modal.title.status": "Filtrer une publication",
"filter_warning.matches_filter": "Correspond au filtre « {title} »",
"filtered_notifications_banner.title": "Notifications filtrées",
"firehose.all": "Tout",
"firehose.local": "Ce serveur",
@ -307,6 +310,7 @@
"follow_requests.unlocked_explanation": "Même si votre compte nest pas privé, léquipe de {domain} a pensé que vous pourriez vouloir peut-être consulter manuellement les demandes d'abonnement de ces comptes.",
"follow_suggestions.curated_suggestion": "Choix du staff",
"follow_suggestions.dismiss": "Ne plus afficher",
"follow_suggestions.friends_of_friends_longer": "Populaire dans le cercle des personnes que vous suivez",
"follow_suggestions.hints.featured": "Ce profil a été sélectionné par l'équipe de {domain}.",
"follow_suggestions.hints.friends_of_friends": "Ce profil est populaire parmi les personnes que vous suivez.",
"follow_suggestions.hints.most_followed": "Ce profil est l'un des plus suivis sur {domain}.",
@ -315,6 +319,7 @@
"follow_suggestions.personalized_suggestion": "Suggestion personnalisée",
"follow_suggestions.popular_suggestion": "Suggestion populaire",
"follow_suggestions.popular_suggestion_longer": "Populaire sur {domain}",
"follow_suggestions.similar_to_recently_followed_longer": "Similaire aux profils que vous avez dernièrement suivis",
"follow_suggestions.view_all": "Tout afficher",
"follow_suggestions.who_to_follow": "Qui suivre",
"followed_tags": "Hashtags suivis",
@ -343,8 +348,9 @@
"hashtag.follow": "Suivre ce hashtag",
"hashtag.unfollow": "Ne plus suivre ce hashtag",
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
"hints.threads.see_more": "Voir plus de réponses sur {domain}",
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
"home.column_settings.show_reblogs": "Afficher boosts",
"home.column_settings.show_replies": "Afficher réponses",
"home.hide_announcements": "Masquer les annonces",
@ -412,6 +418,7 @@
"limited_account_hint.action": "Afficher le profil quand même",
"limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.",
"link_preview.author": "Par {name}",
"link_preview.more_from_author": "Plus via {name}",
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
"lists.account.add": "Ajouter à une liste",
"lists.account.remove": "Retirer d'une liste",
@ -506,6 +513,8 @@
"notifications.column_settings.admin.report": "Nouveaux signalements:",
"notifications.column_settings.admin.sign_up": "Nouvelles inscriptions:",
"notifications.column_settings.alert": "Notifications navigateur",
"notifications.column_settings.beta.category": "Fonctionnalités expérimentales",
"notifications.column_settings.beta.grouping": "Grouper les notifications",
"notifications.column_settings.favourite": "Favoris:",
"notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories",
"notifications.column_settings.filter_bar.category": "Barre de filtre rapide",
@ -534,7 +543,10 @@
"notifications.permission_denied": "Les notifications de bureau ne sont pas disponibles en raison d'une demande de permission de navigateur précédemment refusée",
"notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car lautorisation du navigateur a précedemment été refusée",
"notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car lautorisation requise na pas été accordée.",
"notifications.policy.accept": "Accepter",
"notifications.policy.accept_hint": "Afficher dans les notifications",
"notifications.policy.drop": "Ignorer",
"notifications.policy.drop_hint": "Expulser vers le vide, pour ne plus jamais les revoir",
"notifications.policy.filter": "Filtrer",
"notifications.policy.filter_limited_accounts_hint": "Limité par les modérateur·rice·s du serveur",
"notifications.policy.filter_limited_accounts_title": "Comptes modérés",

View File

@ -191,6 +191,8 @@
"confirmations.unfollow.confirm": "Ne plus suivre",
"confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name}?",
"confirmations.unfollow.title": "Se désabonner de l'utilisateur ?",
"content_warning.hide": "Masquer le message",
"content_warning.show": "Afficher quand même",
"conversation.delete": "Supprimer la conversation",
"conversation.mark_as_read": "Marquer comme lu",
"conversation.open": "Afficher la conversation",
@ -209,7 +211,7 @@
"dismissable_banner.explore_links": "On parle actuellement de ces nouvelles sur ce serveur, ainsi que sur d'autres serveurs du réseau décentralisé.",
"dismissable_banner.explore_statuses": "Ces messages venant de tout le web social gagnent en popularité aujourdhui. Les nouveaux messages avec plus de boosts et de favoris sont classés plus haut.",
"dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.",
"dismissable_banner.public_timeline": "Ce sont les posts publics les plus récents de personnes sur le web social que les gens sur {domain} suivent.",
"dismissable_banner.public_timeline": "Il s'agit des messages publics les plus récents publiés par des gens sur le web social et que les utilisateurs de {domain} suivent.",
"domain_block_modal.block": "Bloquer le serveur",
"domain_block_modal.block_account_instead": "Bloquer @{name} à la place",
"domain_block_modal.they_can_interact_with_old_posts": "Les personnes de ce serveur peuvent interagir avec vos anciennes publications.",
@ -298,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle",
"filter_modal.select_filter.title": "Filtrer ce message",
"filter_modal.title.status": "Filtrer un message",
"filter_warning.matches_filter": "Correspond au filtre « {title} »",
"filtered_notifications_banner.title": "Notifications filtrées",
"firehose.all": "Tout",
"firehose.local": "Ce serveur",
@ -307,6 +310,7 @@
"follow_requests.unlocked_explanation": "Même si votre compte nest pas privé, léquipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.",
"follow_suggestions.curated_suggestion": "Choix du staff",
"follow_suggestions.dismiss": "Ne plus afficher",
"follow_suggestions.friends_of_friends_longer": "Populaire dans le cercle des personnes que vous suivez",
"follow_suggestions.hints.featured": "Ce profil a été sélectionné par l'équipe de {domain}.",
"follow_suggestions.hints.friends_of_friends": "Ce profil est populaire parmi les personnes que vous suivez.",
"follow_suggestions.hints.most_followed": "Ce profil est l'un des plus suivis sur {domain}.",
@ -315,6 +319,7 @@
"follow_suggestions.personalized_suggestion": "Suggestion personnalisée",
"follow_suggestions.popular_suggestion": "Suggestion populaire",
"follow_suggestions.popular_suggestion_longer": "Populaire sur {domain}",
"follow_suggestions.similar_to_recently_followed_longer": "Similaire aux profils que vous avez dernièrement suivis",
"follow_suggestions.view_all": "Tout afficher",
"follow_suggestions.who_to_follow": "Qui suivre",
"followed_tags": "Hashtags suivis",
@ -343,8 +348,9 @@
"hashtag.follow": "Suivre le hashtag",
"hashtag.unfollow": "Ne plus suivre le hashtag",
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
"hints.threads.see_more": "Voir plus de réponses sur {domain}",
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
"home.column_settings.show_reblogs": "Afficher les partages",
"home.column_settings.show_replies": "Afficher les réponses",
"home.hide_announcements": "Masquer les annonces",
@ -412,6 +418,7 @@
"limited_account_hint.action": "Afficher le profil quand même",
"limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.",
"link_preview.author": "Par {name}",
"link_preview.more_from_author": "Plus via {name}",
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
"lists.account.add": "Ajouter à la liste",
"lists.account.remove": "Supprimer de la liste",
@ -506,6 +513,8 @@
"notifications.column_settings.admin.report": "Nouveaux signalements :",
"notifications.column_settings.admin.sign_up": "Nouvelles inscriptions :",
"notifications.column_settings.alert": "Notifications du navigateur",
"notifications.column_settings.beta.category": "Fonctionnalités expérimentales",
"notifications.column_settings.beta.grouping": "Grouper les notifications",
"notifications.column_settings.favourite": "Favoris :",
"notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories",
"notifications.column_settings.filter_bar.category": "Barre de filtre rapide",
@ -534,7 +543,10 @@
"notifications.permission_denied": "Impossible dactiver les notifications de bureau car lautorisation a été refusée.",
"notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car lautorisation du navigateur a été refusée avant",
"notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car lautorisation requise na pas été accordée.",
"notifications.policy.accept": "Accepter",
"notifications.policy.accept_hint": "Afficher dans les notifications",
"notifications.policy.drop": "Ignorer",
"notifications.policy.drop_hint": "Expulser vers le vide, pour ne plus jamais les revoir",
"notifications.policy.filter": "Filtrer",
"notifications.policy.filter_limited_accounts_hint": "Limité par les modérateur·rice·s du serveur",
"notifications.policy.filter_limited_accounts_title": "Comptes modérés",
@ -669,7 +681,7 @@
"report.thanks.title": "Vous ne voulez pas voir cela ?",
"report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.",
"report.unfollow": "Ne plus suivre @{name}",
"report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.",
"report.unfollow_explanation": "Vous êtes abonné à ce compte. Pour ne plus voir ses publications dans votre flux principal, retirez-le de votre liste d'abonnements.",
"report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}",
"report_notification.categories.legal": "Légal",
"report_notification.categories.legal_sentence": "contenu illégal",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Ná lean",
"confirmations.unfollow.message": "An bhfuil tú cinnte gur mhaith leat {name} a dhíleanúint?",
"confirmations.unfollow.title": "Dílean an t-úsáideoir?",
"content_warning.hide": "Folaigh postáil",
"content_warning.show": "Taispeáin ar aon nós",
"conversation.delete": "Scrios comhrá",
"conversation.mark_as_read": "Marcáil mar léite",
"conversation.open": "Féach ar comhrá",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Bain úsáid as catagóir reatha nó cruthaigh ceann nua",
"filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo",
"filter_modal.title.status": "Déan scagadh ar phostáil",
"filter_warning.matches_filter": "Meaitseálann an scagaire “{title}”",
"filtered_notifications_banner.pending_requests": "Ó {count, plural, =0 {duine ar bith} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} bfhéidir go bhfuil aithne agat orthu",
"filtered_notifications_banner.title": "Fógraí scagtha",
"firehose.all": "Gach",
@ -348,6 +351,14 @@
"hashtag.follow": "Lean haischlib",
"hashtag.unfollow": "Ná lean haischlib",
"hashtags.and_other": "agus {count, plural, one {} two {# níos} few {# níos} many {# níos} other {# níos}}",
"hints.profiles.followers_may_be_missing": "Seans go bhfuil leantóirí don phróifíl seo in easnamh.",
"hints.profiles.follows_may_be_missing": "Seans go bhfuil na nithe seo a leanas in easnamh ar an bpróifíl seo.",
"hints.profiles.posts_may_be_missing": "Seans go bhfuil roinnt postálacha ón bpróifíl seo in easnamh.",
"hints.profiles.see_more_followers": "Féach ar a thuilleadh leantóirí ar {domain}",
"hints.profiles.see_more_follows": "Féach tuilleadh seo a leanas ar {domain}",
"hints.profiles.see_more_posts": "Féach ar a thuilleadh postálacha ar {domain}",
"hints.threads.replies_may_be_missing": "Seans go bhfuil freagraí ó fhreastalaithe eile in easnamh.",
"hints.threads.see_more": "Féach ar a thuilleadh freagraí ar {domain}",
"home.column_settings.show_reblogs": "Taispeáin moltaí",
"home.column_settings.show_replies": "Taispeán freagraí",
"home.hide_announcements": "Cuir fógraí i bhfolach",
@ -487,9 +498,13 @@
"notification.admin.report_statuses": "Thuairiscigh {name} {target} le haghaidh {category}",
"notification.admin.report_statuses_other": "{name} tuairiscithe {target}",
"notification.admin.sign_up": "Chláraigh {name}",
"notification.admin.sign_up.name_and_others": "{name} agus {count, plural, one {# duine eile} two {# daoine eile} few {# daoine eile} many {# daoine eile} other {# daoine eile}} a chláraigh",
"notification.favourite": "Is fearr le {name} do phostáil",
"notification.favourite.name_and_others_with_link": "{name} agus <a>{count, plural, one {# duine eile} other {# daoine eile}}</a> thaitin le do phost",
"notification.follow": "Lean {name} thú",
"notification.follow.name_and_others": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} a lean tú",
"notification.follow_request": "D'iarr {name} ort do chuntas a leanúint",
"notification.follow_request.name_and_others": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} iarratas a dhéanamh chun tú a leanúint",
"notification.label.mention": "Luaigh",
"notification.label.private_mention": "Lua príobháideach",
"notification.label.private_reply": "Freagra príobháideach",
@ -507,6 +522,7 @@
"notification.own_poll": "Tá do suirbhé críochnaithe",
"notification.poll": "Tá deireadh le vótaíocht inar vótáil tú",
"notification.reblog": "Mhol {name} do phostáil",
"notification.reblog.name_and_others_with_link": "{name} agus <a>{count, plural, one {# duine eile} other {# daoine eile}}</a> a chuir borradh faoi do phost",
"notification.relationships_severance_event": "Cailleadh naisc le {name}",
"notification.relationships_severance_event.account_suspension": "Chuir riarthóir ó {from} {target} ar fionraí, rud a chiallaíonn nach féidir leat nuashonruithe a fháil uathu a thuilleadh ná idirghníomhú leo.",
"notification.relationships_severance_event.domain_block": "Chuir riarthóir ó {from} bac ar {target}, lena n-áirítear {followersCount} de do leantóirí agus {followingCount, plural, one {#cuntas} other {#cuntas}} leanann tú.",
@ -515,7 +531,17 @@
"notification.status": "Phostáil {name} díreach",
"notification.update": "Chuir {name} postáil in eagar",
"notification_requests.accept": "Glac",
"notification_requests.accept_multiple": "{count, plural, one {Glac le # iarratas…} other {Glac le # iarratais…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Glac le hIarratas} other {Glac le hIarratais}}",
"notification_requests.confirm_accept_multiple.message": "Tá tú ar tí glacadh le {count, plural, one {iarratas fógra amháin} other {# iarratas fógra}}. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?",
"notification_requests.confirm_accept_multiple.title": "Glac le hiarratais ar fhógra?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Dún iarratas} other {Dún iarratais}}",
"notification_requests.confirm_dismiss_multiple.message": "Tá tú ar tí iarratas fógra {count, plural, one {a hAon} other {#}} a dhúnadh. Ní bheidh tú in ann {count, plural, one {é} other {iad}} a fháil go héasca arís. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?",
"notification_requests.confirm_dismiss_multiple.title": "An bhfuil fonn ort iarratais ar fhógra a dhíbhe?",
"notification_requests.dismiss": "Díbhe",
"notification_requests.dismiss_multiple": "{count, plural, one {Dún # iarratas…} other {Dún # iarratais…}}",
"notification_requests.edit_selection": "Cuir in eagar",
"notification_requests.exit_selection": "Déanta",
"notification_requests.explainer_for_limited_account": "Scagadh fógraí ón gcuntas seo toisc go bhfuil an cuntas teoranta ag modhnóir.",
"notification_requests.explainer_for_limited_remote_account": "Scagadh fógraí ón gcuntas seo toisc go bhfuil an cuntas nó a fhreastalaí teoranta ag modhnóir.",
"notification_requests.maximize": "Uasmhéadaigh",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Na lean tuilleadh",
"confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson {name} a leantainn tuilleadh?",
"confirmations.unfollow.title": "A bheil thu airson sgur de leantainn a chleachdaiche?",
"content_warning.hide": "Falaich am post",
"content_warning.show": "Seall e co-dhiù",
"conversation.delete": "Sguab às an còmhradh",
"conversation.mark_as_read": "Cuir comharra gun deach a leughadh",
"conversation.open": "Seall an còmhradh",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr",
"filter_modal.select_filter.title": "Criathraich am post seo",
"filter_modal.title.status": "Criathraich post",
"filter_warning.matches_filter": "A maidseadh na criathraige “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Chan eil gin ann} one {O # neach} two {O # neach} few {O # daoine} other {O # duine}} air a bheil thu eòlach s dòcha",
"filtered_notifications_banner.title": "Brathan criathraichte",
"firehose.all": "Na h-uile",
@ -348,6 +351,14 @@
"hashtag.follow": "Lean an taga hais",
"hashtag.unfollow": "Na lean an taga hais tuilleadh",
"hashtags.and_other": "…agus {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}",
"hints.profiles.followers_may_be_missing": "Dhfhaoidte gu bheil cuid dhen luchd-leantainn na pròifil seo a dhìth.",
"hints.profiles.follows_may_be_missing": "Dhfhaoidte gu bheil cuid a tha a phròifil seo a leantainn a dhìth.",
"hints.profiles.posts_may_be_missing": "Dhfhaoide gu bheil cuid dhe na postaichean aig a phròifil seo a dhìth.",
"hints.profiles.see_more_followers": "Faic barrachd luchd-leantainn air {domain}",
"hints.profiles.see_more_follows": "Faic barrachd a tha 'gan leantainn air {domain}",
"hints.profiles.see_more_posts": "Faic barrachd phostaichean air {domain}",
"hints.threads.replies_may_be_missing": "Dhfhaoidte gu bheil freagairtean o fhrithealaichean eile a dhìth.",
"hints.threads.see_more": "Faic barrachd fhreagairtean air {domain}",
"home.column_settings.show_reblogs": "Seall na brosnachaidhean",
"home.column_settings.show_replies": "Seall na freagairtean",
"home.hide_announcements": "Falaich na brathan-fios",
@ -487,9 +498,13 @@
"notification.admin.report_statuses": "Rinn {name} gearan mu {target} air adhbhar {category}",
"notification.admin.report_statuses_other": "Rinn {name} gearan mu {target}",
"notification.admin.sign_up": "Chlàraich {name}",
"notification.admin.sign_up.name_and_others": "Chlàraich {name} s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}",
"notification.favourite": "Is annsa le {name} am post agad",
"notification.favourite.name_and_others_with_link": "Is annsa le {name} s <a>{count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}</a> am post agad",
"notification.follow": "Tha {name} gad leantainn a-nis",
"notification.follow.name_and_others": "Lean {name} s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} thu",
"notification.follow_request": "Dhiarr {name} gad leantainn",
"notification.follow_request.name_and_others": "Dhiarr {name} s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} gad leantainn",
"notification.label.mention": "Iomradh",
"notification.label.private_mention": "Iomradh prìobhaideach",
"notification.label.private_reply": "Freagairt phrìobhaideach",
@ -507,6 +522,7 @@
"notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch",
"notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch",
"notification.reblog": "Bhrosnaich {name} am post agad",
"notification.reblog.name_and_others_with_link": "Bhrosnaich {name} s <a>{count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}</a> am post agad",
"notification.relationships_severance_event": "Chaill thu dàimhean le {name}",
"notification.relationships_severance_event.account_suspension": "Chuir rianaire aig {from} {target} à rèim agus is ciall dha sin nach fhaigh thu naidheachdan uapa s nach urrainn dhut conaltradh leotha.",
"notification.relationships_severance_event.domain_block": "Bhac rianaire aig {from} {target}, a gabhail a-staigh {followersCount} dhen luchd-leantainn agad agus {followingCount, plural, one {# chunntas} two {# chunntas} few {# cunntasan} other {# cunntas}} a tha thu fhèin a leantainn.",
@ -515,7 +531,17 @@
"notification.status": "Phostaich {name} rud",
"notification.update": "Dheasaich {name} post",
"notification_requests.accept": "Gabh ris",
"notification_requests.accept_multiple": "{count, plural, one {Gabh ri # iarrtas…} two {Gabh ri # iarrtas…} few {Gabh ri # iarrtasan…} other {Gabh ri # iarrtas…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Gabh ris an t-iarrtas} two {Gabh ris na h-iarrtasan} few {Gabh ris na h-iarrtasan} other {Gabh ris na h-iarrtasan}}",
"notification_requests.confirm_accept_multiple.message": "Tha thu gu bhith gabhail ri {count, plural, one {# iarrtas bratha} two {# iarrtas bratha} few {# iarrtasan bratha} other {# iarrtas bratha}} a leigeil seachad. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
"notification_requests.confirm_accept_multiple.title": "A bheil thu airson gabhail ri iarrtasan bratha?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Leig seachad an t-iarrtas} two {Leig seachad na h-iarrtasan} few {Leig seachad na h-iarrtasan} other {Leig seachad na h-iarrtasan}}",
"notification_requests.confirm_dismiss_multiple.message": "Tha thu gu bhith {count, plural, one {# iarrtas bratha} two {# iarrtas bratha} few {# iarrtasan bratha} other {# iarrtas bratha}} a leigeil seachad. Chan fhaigh thu grèim {count, plural, one {air} two {orra} few {orra} other {orra}} a-rithist gun duilgheadas. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
"notification_requests.confirm_dismiss_multiple.title": "A bheil thu airson iarrtasan bratha a leigeil seachad?",
"notification_requests.dismiss": "Leig seachad",
"notification_requests.dismiss_multiple": "{count, plural, one {Leig seachad # iarrtas…} two {Leig seachad # iarrtas…} few {Leig seachad # iarrtasan…} other {Leig seachad # iarrtas…}}",
"notification_requests.edit_selection": "Deasaich",
"notification_requests.exit_selection": "Deiseil",
"notification_requests.explainer_for_limited_account": "Chaidh na brathan on chunntas seo a chriathradh on a chaidh an cunntas a chuingeachadh le maor.",
"notification_requests.explainer_for_limited_remote_account": "Chaidh na brathan on chunntas seo a chriathradh on a chaidh an cunntas no am frithealaiche aige a chuingeachadh le maor.",
"notification_requests.maximize": "Làn-mheudaich",
@ -569,7 +595,7 @@
"notifications.policy.filter_limited_accounts_title": "Cunntasan fo mhaorsainneachd",
"notifications.policy.filter_new_accounts.hint": "A chaidh a chruthachadh o chionn {days, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}",
"notifications.policy.filter_new_accounts_title": "Cunntasan ùra",
"notifications.policy.filter_not_followers_hint": "A gabhail a-staigh an fheadhainn a lean ort nas lugha na {days, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} seo chaidh",
"notifications.policy.filter_not_followers_hint": "A gabhail a-staigh an fheadhainn a lean thu nas lugha na {days, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} seo chaidh",
"notifications.policy.filter_not_followers_title": "Daoine nach eil gad leantainn",
"notifications.policy.filter_not_following_hint": "Gus an aontaich thu riutha a làimh",
"notifications.policy.filter_not_following_title": "Daoine nach eil thu a leantainn",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "הפסקת מעקב",
"confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
"confirmations.unfollow.title": "לבטל מעקב אחר המשתמש.ת?",
"content_warning.hide": "הסתרת חיצרוץ",
"content_warning.show": "להציג בכל זאת",
"conversation.delete": "מחיקת שיחה",
"conversation.mark_as_read": "סמן כנקרא",
"conversation.open": "צפו בשיחה",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה",
"filter_modal.select_filter.title": "סינון ההודעה הזו",
"filter_modal.title.status": "סנן הודעה",
"filter_warning.matches_filter": "תואם לסנן “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural,=0 {אין בקשות ממשתמשים }one {בקשה אחת ממישהו/מישהי }two {יש בקשותיים ממשתמשים }other {יש # בקשות ממשתמשים }}שאולי מוכרים לך",
"filtered_notifications_banner.title": "התראות מסוננות",
"firehose.all": "הכל",

View File

@ -1,7 +1,7 @@
{
"about.blocks": "Server yang dimoderasi",
"about.contact": "Hubungi:",
"about.disclaimer": "Mastodon adalah perangkat lunak bebas dan sumber terbuka, dan adalah merek dagang dari Mastodon gGmbH.",
"about.contact": "Kontak:",
"about.disclaimer": "perangkat lunak sumber terbuperangkat lunak sumber terbukaka184124.",
"about.domain_blocks.no_reason_available": "Alasan tidak tersedia",
"about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.",
"about.domain_blocks.silenced.explanation": "Anda secara umum tidak melihat profil dan konten dari server ini, kecuali jika Anda mencarinya atau memilihnya dengan mengikuti secara eksplisit.",
@ -11,6 +11,7 @@
"about.not_available": "Informasi ini belum tersedia di server ini.",
"about.powered_by": "Media sosial terdesentralisasi diberdayakan oleh {mastodon}",
"about.rules": "Aturan server",
"account.account_note_header": "Personal note",
"account.add_or_remove_from_list": "Tambah atau Hapus dari daftar",
"account.badges.bot": "Bot",
"account.badges.group": "Grup",
@ -33,7 +34,9 @@
"account.follow_back": "Ikuti balik",
"account.followers": "Pengikut",
"account.followers.empty": "Pengguna ini belum ada pengikut.",
"account.followers_counter": "{count, plural, other {{counter} followers}}",
"account.following": "Mengikuti",
"account.following_counter": "{count, plural, other {{counter} following}}",
"account.follows.empty": "Pengguna ini belum mengikuti siapa pun.",
"account.go_to_profile": "Buka profil",
"account.hide_reblogs": "Sembunyikan boosts dari @{name}",
@ -59,6 +62,7 @@
"account.requested_follow": "{name} ingin mengikuti Anda",
"account.share": "Bagikan profil @{name}",
"account.show_reblogs": "Tampilkan boost dari @{name}",
"account.statuses_counter": "{count, plural, other {{counter} posts}}",
"account.unblock": "Buka blokir @{name}",
"account.unblock_domain": "Buka blokir domain {domain}",
"account.unblock_short": "Buka blokir",
@ -166,21 +170,30 @@
"confirmations.block.confirm": "Blokir",
"confirmations.delete.confirm": "Hapus",
"confirmations.delete.message": "Apakah Anda yakin untuk menghapus kiriman ini?",
"confirmations.delete.title": "Delete post?",
"confirmations.delete_list.confirm": "Hapus",
"confirmations.delete_list.message": "Apakah Anda yakin untuk menghapus daftar ini secara permanen?",
"confirmations.delete_list.title": "Delete list?",
"confirmations.discard_edit_media.confirm": "Buang",
"confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?",
"confirmations.edit.confirm": "Ubah",
"confirmations.edit.message": "Mengubah akan menimpa pesan yang sedang anda tulis. Apakah anda yakin ingin melanjutkan?",
"confirmations.edit.title": "Overwrite post?",
"confirmations.logout.confirm": "Keluar",
"confirmations.logout.message": "Apakah Anda yakin ingin keluar?",
"confirmations.logout.title": "Log out?",
"confirmations.mute.confirm": "Bisukan",
"confirmations.redraft.confirm": "Hapus dan susun ulang",
"confirmations.redraft.message": "Apakah anda yakin ingin menghapus postingan ini dan menyusun ulang postingan ini? Favorit dan peningkatan akan hilang, dan balasan ke postingan asli tidak akan terhubung ke postingan manapun.",
"confirmations.redraft.title": "Delete & redraft post?",
"confirmations.reply.confirm": "Balas",
"confirmations.reply.message": "Membalas sekarang akan menimpa pesan yang sedang Anda buat. Anda yakin ingin melanjutkan?",
"confirmations.reply.title": "Delete & redraft post?",
"confirmations.unfollow.confirm": "Berhenti mengikuti",
"confirmations.unfollow.message": "Apakah Anda ingin berhenti mengikuti {name}?",
"confirmations.unfollow.title": "Unfollow user?",
"content_warning.hide": "Hide post",
"content_warning.show": "Show anyway",
"conversation.delete": "Hapus percakapan",
"conversation.mark_as_read": "Tandai sudah dibaca",
"conversation.open": "Lihat percakapan",
@ -217,7 +230,9 @@
"domain_pill.username": "Nama pengguna",
"domain_pill.whats_in_a_handle": "Apa itu nama pengguna?",
"domain_pill.who_they_are": "Karena nama pengguna menunjukkan siapa seseorang dan di mana server mereka berada, anda dapat berinteraksi dengan orang-orang di seluruh web sosial <button>ActivityPub-powered platforms</button>.",
"domain_pill.who_you_are": "<button>ActivityPub-powered platforms</button>.",
"domain_pill.your_handle": "Nama pengguna anda:",
"domain_pill.your_server": "Your digital home, where all of your posts live. Dont like this one? Transfer servers at any time and bring your followers, too.",
"embed.instructions": "Sematkan kiriman ini di situs web Anda dengan menyalin kode di bawah ini.",
"embed.preview": "Tampilan akan seperti ini nantinya:",
"emoji_button.activity": "Aktivitas",

View File

@ -436,7 +436,7 @@
"lightbox.previous": "Fyrra",
"limited_account_hint.action": "Birta notandasniðið samt",
"limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum {domain}.",
"link_preview.author": "Eftir {name}",
"link_preview.author": "Frá {name}",
"link_preview.more_from_author": "Meira frá {name}",
"link_preview.shares": "{count, plural, one {{counter} færsla} other {{counter} færslur}}",
"lists.account.add": "Bæta á lista",

View File

@ -170,21 +170,30 @@
"confirmations.block.confirm": "ブロック",
"confirmations.delete.confirm": "削除",
"confirmations.delete.message": "本当に削除しますか?",
"confirmations.delete.title": "投稿を削除しようとしています",
"confirmations.delete_list.confirm": "削除",
"confirmations.delete_list.message": "本当にこのリストを完全に削除しますか?",
"confirmations.delete_list.title": "リストを削除しようとしています",
"confirmations.discard_edit_media.confirm": "破棄",
"confirmations.discard_edit_media.message": "メディアの説明またはプレビューに保存されていない変更があります。それでも破棄しますか?",
"confirmations.edit.confirm": "編集",
"confirmations.edit.message": "今編集すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
"confirmations.edit.title": "作成中の内容を上書きしようとしています",
"confirmations.logout.confirm": "ログアウト",
"confirmations.logout.message": "本当にログアウトしますか?",
"confirmations.logout.title": "ログアウトしようとしています",
"confirmations.mute.confirm": "ミュート",
"confirmations.redraft.confirm": "削除して下書きに戻す",
"confirmations.redraft.message": "投稿を削除して下書きに戻します。この投稿へのお気に入り登録やブーストは失われ、返信は孤立することになります。よろしいですか?",
"confirmations.redraft.title": "投稿の削除と下書きの再作成",
"confirmations.reply.confirm": "返信",
"confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
"confirmations.reply.title": "作成中の内容を上書きしようとしています",
"confirmations.unfollow.confirm": "フォロー解除",
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
"confirmations.unfollow.title": "フォローを解除しようとしています",
"content_warning.hide": "投稿を隠す",
"content_warning.show": "承知の上で表示",
"conversation.delete": "会話を削除",
"conversation.mark_as_read": "既読にする",
"conversation.open": "会話を表示",
@ -292,6 +301,7 @@
"filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します",
"filter_modal.select_filter.title": "この投稿をフィルターする",
"filter_modal.title.status": "投稿をフィルターする",
"filter_warning.matches_filter": "フィルター「{title}」に一致する投稿です",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {すべて完了しました} other {#人の通知がブロックされています}}",
"filtered_notifications_banner.title": "保留中の通知",
"firehose.all": "すべて",
@ -493,11 +503,14 @@
"notification.update": "{name}さんが投稿を編集しました",
"notification_requests.accept": "受け入れる",
"notification_requests.dismiss": "無視",
"notification_requests.explainer_for_limited_account": "このアカウントはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
"notification_requests.explainer_for_limited_remote_account": "このアカウントが所属するサーバーはモデレーターにより制限が課されているため、このアカウントによる通知は保留されています",
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
"notification_requests.notifications_from": "{name}からの通知",
"notification_requests.title": "保留中の通知",
"notifications.clear": "通知を消去",
"notifications.clear_confirmation": "本当に通知を消去しますか?",
"notifications.clear_title": "通知を消去しようとしています",
"notifications.column_settings.admin.report": "新しい通報:",
"notifications.column_settings.admin.sign_up": "新規登録:",
"notifications.column_settings.alert": "デスクトップ通知",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "팔로우 해제",
"confirmations.unfollow.message": "정말로 {name} 님을 팔로우 해제하시겠습니까?",
"confirmations.unfollow.title": "사용자를 언팔로우 할까요?",
"content_warning.hide": "게시물 숨기기",
"content_warning.show": "무시하고 보기",
"conversation.delete": "대화 삭제",
"conversation.mark_as_read": "읽은 상태로 표시",
"conversation.open": "대화 보기",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "기존의 카테고리를 사용하거나 새로 하나를 만듧니다",
"filter_modal.select_filter.title": "이 게시물을 필터",
"filter_modal.title.status": "게시물 필터",
"filter_warning.matches_filter": "\"{title}\" 필터에 걸림",
"filtered_notifications_banner.pending_requests": "알 수도 있는 {count, plural, =0 {0 명} one {한 명} other {# 명}}의 사람들로부터",
"filtered_notifications_banner.title": "걸러진 알림",
"firehose.all": "모두",

View File

@ -193,6 +193,7 @@
"confirmations.unfollow.message": "Er du sikker på at du vil slutta å fylgja {name}?",
"confirmations.unfollow.title": "Slutt å fylgja brukaren?",
"content_warning.hide": "Gøym innlegg",
"content_warning.show": "Vis likevel",
"conversation.delete": "Slett samtale",
"conversation.mark_as_read": "Marker som lesen",
"conversation.open": "Sjå samtale",
@ -300,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny",
"filter_modal.select_filter.title": "Filtrer dette innlegget",
"filter_modal.title.status": "Filtrer eit innlegg",
"filter_warning.matches_filter": "Passar med filteret «{title}»",
"filtered_notifications_banner.pending_requests": "Frå {count, plural, =0 {ingen} one {éin person} other {# personar}} du kanskje kjenner",
"filtered_notifications_banner.title": "Filtrerte varslingar",
"firehose.all": "Alle",
@ -349,6 +351,14 @@
"hashtag.follow": "Fylg emneknagg",
"hashtag.unfollow": "Slutt å fylgje emneknaggen",
"hashtags.and_other": "…og {count, plural, one {}other {# fleire}}",
"hints.profiles.followers_may_be_missing": "Kven som fylgjer denne profilen manglar kanskje.",
"hints.profiles.follows_may_be_missing": "Kven denne profilen fylgjer manglar kanskje.",
"hints.profiles.posts_may_be_missing": "Nokre innlegg frå denne profilen manglar kanskje.",
"hints.profiles.see_more_followers": "Sjå fleire fylgjarar på {domain}",
"hints.profiles.see_more_follows": "Sjå fleire fylgjer på {domain}",
"hints.profiles.see_more_posts": "Sjå fleire innlegg på {domain}",
"hints.threads.replies_may_be_missing": "Svar frå andre tenarar manglar kanskje.",
"hints.threads.see_more": "Sjå fleire svar på {domain}",
"home.column_settings.show_reblogs": "Vis framhevingar",
"home.column_settings.show_replies": "Vis svar",
"home.hide_announcements": "Skjul kunngjeringar",
@ -488,9 +498,13 @@
"notification.admin.report_statuses": "{name} rapporterte {target} for {category}",
"notification.admin.report_statuses_other": "{name} rapporterte {target}",
"notification.admin.sign_up": "{name} er registrert",
"notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} vart med",
"notification.favourite": "{name} markerte innlegget ditt som favoritt",
"notification.favourite.name_and_others_with_link": "{name} og <a>{count, plural, one {# annan} other {# andre}}</a> favorittmerka innlegget ditt",
"notification.follow": "{name} fylgde deg",
"notification.follow.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} fylgde deg",
"notification.follow_request": "{name} har bedt om å fylgja deg",
"notification.follow_request.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} har spurt om å fylgja deg",
"notification.label.mention": "Omtale",
"notification.label.private_mention": "Privat omtale",
"notification.label.private_reply": "Privat svar",
@ -508,6 +522,7 @@
"notification.own_poll": "Rundspørjinga di er ferdig",
"notification.poll": "Ei rundspørjing du røysta i er ferdig",
"notification.reblog": "{name} framheva innlegget ditt",
"notification.reblog.name_and_others_with_link": "{name} og <a>{count, plural, one {# annan} other {# andre}}</a> framheva innlegget ditt",
"notification.relationships_severance_event": "Tapte samband med {name}",
"notification.relationships_severance_event.account_suspension": "Ein administrator på {from} har utvist {target}, som tyder at du ikkje lenger får oppdateringar frå dei eller kan samhandla med dei.",
"notification.relationships_severance_event.domain_block": "Ein administrator på {from} har blokkert {target}, inkludert {followersCount} av fylgjarane dine og {followingCount, plural, one {# konto} other {# kontoar}} du fylgjer.",
@ -516,7 +531,17 @@
"notification.status": "{name} la nettopp ut",
"notification.update": "{name} redigerte eit innlegg",
"notification_requests.accept": "Godkjenn",
"notification_requests.accept_multiple": "{count, plural, one {Godta # førespurnad…} other {Godta # førespurnader…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Godta førespurnad} other {Godta førespurnader}}",
"notification_requests.confirm_accept_multiple.message": "Du er i ferd med å godta {count, plural, one {ein førespurnad om varsling} other {# førespurnader om varsling}}. Er du sikker på at du vil halda fram?",
"notification_requests.confirm_accept_multiple.title": "Godta førespurnader om varsling?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Avvis førespurnad} other {Avvis førespurnader}}",
"notification_requests.confirm_dismiss_multiple.message": "Du er i ferd med å avvisa {count, plural, one {ein førespurnad om varsel} other {# førespurnader om varsel}}. Det blir ikkje lett å få tilgang til {count, plural, one {han} other {dei}} att. Er du sikker på at du vil halda fram?",
"notification_requests.confirm_dismiss_multiple.title": "Avvis førespurnader om varsel?",
"notification_requests.dismiss": "Avvis",
"notification_requests.dismiss_multiple": "{count, plural, one {Avvis # førespurnad…} other {Avvis # førespurnader…}}",
"notification_requests.edit_selection": "Rediger",
"notification_requests.exit_selection": "Ferdig",
"notification_requests.explainer_for_limited_account": "Varsla frå denne kontoen er filtrerte ut fordi ein moderator har avgrensa kontoen.",
"notification_requests.explainer_for_limited_remote_account": "Varla frå denne kontoen er filtrerte ut fordi ein moderator har avgrensa kontoen eller tenaren.",
"notification_requests.maximize": "Maksimer",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Resht së ndjekuri",
"confirmations.unfollow.message": "Jeni i sigurt se doni të mos ndiqet më {name}?",
"confirmations.unfollow.title": "Të ndalet ndjekja e përdoruesit?",
"content_warning.hide": "Fshihe postimin",
"content_warning.show": "Shfaqe, sido qoftë",
"conversation.delete": "Fshije bisedën",
"conversation.mark_as_read": "Vëri shenjë si të lexuar",
"conversation.open": "Shfaq bisedën",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re",
"filter_modal.select_filter.title": "Filtroje këtë postim",
"filter_modal.title.status": "Filtroni një postim",
"filter_warning.matches_filter": "Ka përkim me filtrin “{title}”",
"filtered_notifications_banner.pending_requests": "Nga {count, plural, =0 {askush} one {një person} other {# vetë}} që mund të njihni",
"filtered_notifications_banner.title": "Njoftime të filtruar",
"firehose.all": "Krejt",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Avfölj",
"confirmations.unfollow.message": "Är du säker på att du vill avfölja {name}?",
"confirmations.unfollow.title": "Avfölj %s?",
"content_warning.hide": "Dölj inlägg",
"content_warning.show": "Visa ändå",
"conversation.delete": "Radera konversation",
"conversation.mark_as_read": "Markera som läst",
"conversation.open": "Visa konversation",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "เลิกติดตาม",
"confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?",
"confirmations.unfollow.title": "เลิกติดตามผู้ใช้?",
"content_warning.hide": "ซ่อนโพสต์",
"content_warning.show": "แสดงต่อไป",
"conversation.delete": "ลบการสนทนา",
"conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว",
"conversation.open": "ดูการสนทนา",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "ใช้หมวดหมู่ที่มีอยู่หรือสร้างหมวดหมู่ใหม่",
"filter_modal.select_filter.title": "กรองโพสต์นี้",
"filter_modal.title.status": "กรองโพสต์",
"filter_warning.matches_filter": "ตรงกับตัวกรอง “{title}”",
"filtered_notifications_banner.pending_requests": "จาก {count, plural, =0 {ไม่มีใคร} other {# คน}} ที่คุณอาจรู้จัก",
"filtered_notifications_banner.title": "การแจ้งเตือนที่กรองอยู่",
"firehose.all": "ทั้งหมด",
@ -348,6 +351,14 @@
"hashtag.follow": "ติดตามแฮชแท็ก",
"hashtag.unfollow": "เลิกติดตามแฮชแท็ก",
"hashtags.and_other": "…และอีก {count, plural, other {# เพิ่มเติม}}",
"hints.profiles.followers_may_be_missing": "ผู้ติดตามสำหรับโปรไฟล์นี้อาจขาดหายไป",
"hints.profiles.follows_may_be_missing": "การติดตามสำหรับโปรไฟล์นี้อาจขาดหายไป",
"hints.profiles.posts_may_be_missing": "โพสต์บางส่วนจากโปรไฟล์นี้อาจขาดหายไป",
"hints.profiles.see_more_followers": "ดูผู้ติดตามเพิ่มเติมใน {domain}",
"hints.profiles.see_more_follows": "ดูการติดตามเพิ่มเติมใน {domain}",
"hints.profiles.see_more_posts": "ดูโพสต์เพิ่มเติมใน {domain}",
"hints.threads.replies_may_be_missing": "การตอบกลับจากเซิร์ฟเวอร์อื่น ๆ อาจขาดหายไป",
"hints.threads.see_more": "ดูการตอบกลับเพิ่มเติมใน {domain}",
"home.column_settings.show_reblogs": "แสดงการดัน",
"home.column_settings.show_replies": "แสดงการตอบกลับ",
"home.hide_announcements": "ซ่อนประกาศ",
@ -355,8 +366,11 @@
"home.pending_critical_update.link": "ดูการอัปเดต",
"home.pending_critical_update.title": "มีการอัปเดตความปลอดภัยสำคัญพร้อมใช้งาน!",
"home.show_announcements": "แสดงประกาศ",
"ignore_notifications_modal.disclaimer": "Mastodon ไม่สามารถแจ้งผู้ใช้ว่าคุณได้เพิกเฉยการแจ้งเตือนของเขา การเพิกเฉยการแจ้งเตือนจะไม่หยุดการส่งข้อความนั้นเอง",
"ignore_notifications_modal.filter_instead": "กรองแทน",
"ignore_notifications_modal.filter_to_act_users": "คุณจะยังสามารถยอมรับ ปฏิเสธ หรือรายงานผู้ใช้",
"ignore_notifications_modal.filter_to_avoid_confusion": "การกรองช่วยหลีกเลี่ยงความสับสนที่อาจเกิดขึ้น",
"ignore_notifications_modal.filter_to_review_separately": "คุณสามารถตรวจทานการแจ้งเตือนที่กรองอยู่แยกต่างหาก",
"ignore_notifications_modal.ignore": "เพิกเฉยการแจ้งเตือน",
"ignore_notifications_modal.limited_accounts_title": "เพิกเฉยการแจ้งเตือนจากบัญชีที่ได้รับการกลั่นกรอง?",
"ignore_notifications_modal.new_accounts_title": "เพิกเฉยการแจ้งเตือนจากบัญชีใหม่?",
@ -484,9 +498,13 @@
"notification.admin.report_statuses": "{name} ได้รายงาน {target} สำหรับ {category}",
"notification.admin.report_statuses_other": "{name} ได้รายงาน {target}",
"notification.admin.sign_up": "{name} ได้ลงทะเบียน",
"notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน",
"notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
"notification.favourite.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ชื่นชอบโพสต์ของคุณ",
"notification.follow": "{name} ได้ติดตามคุณ",
"notification.follow.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ติดตามคุณ",
"notification.follow_request": "{name} ได้ขอติดตามคุณ",
"notification.follow_request.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ขอติดตามคุณ",
"notification.label.mention": "การกล่าวถึง",
"notification.label.private_mention": "การกล่าวถึงแบบส่วนตัว",
"notification.label.private_reply": "การตอบกลับแบบส่วนตัว",
@ -504,6 +522,7 @@
"notification.own_poll": "การสำรวจความคิดเห็นของคุณได้สิ้นสุดแล้ว",
"notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว",
"notification.reblog": "{name} ได้ดันโพสต์ของคุณ",
"notification.reblog.name_and_others_with_link": "{name} และ <a>{count, plural, other {# อื่น ๆ}}</a> ได้ดันโพสต์ของคุณ",
"notification.relationships_severance_event": "สูญเสียการเชื่อมต่อกับ {name}",
"notification.relationships_severance_event.account_suspension": "ผู้ดูแลจาก {from} ได้ระงับ {target} ซึ่งหมายความว่าคุณจะไม่สามารถรับการอัปเดตจากเขาหรือโต้ตอบกับเขาได้อีกต่อไป",
"notification.relationships_severance_event.domain_block": "ผู้ดูแลจาก {from} ได้ปิดกั้น {target} รวมถึง {followersCount} ผู้ติดตามของคุณและ {followingCount, plural, other {# บัญชี}}ที่คุณติดตาม",
@ -512,7 +531,21 @@
"notification.status": "{name} เพิ่งโพสต์",
"notification.update": "{name} ได้แก้ไขโพสต์",
"notification_requests.accept": "ยอมรับ",
"notification_requests.accept_multiple": "{count, plural, other {ยอมรับ # คำขอ…}}",
"notification_requests.confirm_accept_multiple.button": "{count, plural, other {ยอมรับคำขอ}}",
"notification_requests.confirm_accept_multiple.message": "คุณกำลังจะยอมรับ {count, plural, other {# คำขอการแจ้งเตือน}} คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
"notification_requests.confirm_accept_multiple.title": "ยอมรับคำขอการแจ้งเตือน?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {ปิดคำขอ}}",
"notification_requests.confirm_dismiss_multiple.message": "คุณกำลังจะปิด {count, plural, other {# คำขอการแจ้งเตือน}} คุณจะไม่สามารถเข้าถึง{count, plural, other {การแจ้งเตือน}}ได้อย่างง่ายดายอีกครั้ง คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
"notification_requests.confirm_dismiss_multiple.title": "ปิดคำขอการแจ้งเตือน?",
"notification_requests.dismiss": "ปิด",
"notification_requests.dismiss_multiple": "{count, plural, other {ปิด # คำขอ…}}",
"notification_requests.edit_selection": "แก้ไข",
"notification_requests.exit_selection": "เสร็จสิ้น",
"notification_requests.explainer_for_limited_account": "มีการกรองการแจ้งเตือนจากบัญชีนี้เนื่องจากมีการจำกัดบัญชีโดยผู้กลั่นกรอง",
"notification_requests.explainer_for_limited_remote_account": "มีการกรองการแจ้งเตือนจากบัญชีนี้เนื่องจากมีการจำกัดบัญชีหรือเซิร์ฟเวอร์ของบัญชีโดยผู้กลั่นกรอง",
"notification_requests.maximize": "ขยายใหญ่สุด",
"notification_requests.minimize_banner": "ย่อแบนเนอร์การแจ้งเตือนที่กรองอยู่ให้เล็กสุด",
"notification_requests.notifications_from": "การแจ้งเตือนจาก {name}",
"notification_requests.title": "การแจ้งเตือนที่กรองอยู่",
"notification_requests.view": "ดูการแจ้งเตือน",
@ -555,8 +588,10 @@
"notifications.policy.accept": "ยอมรับ",
"notifications.policy.accept_hint": "แสดงในการแจ้งเตือน",
"notifications.policy.drop": "เพิกเฉย",
"notifications.policy.drop_hint": "ละทิ้งอย่างถาวร ไม่ให้เห็นอีกเลย",
"notifications.policy.filter": "กรอง",
"notifications.policy.filter_hint": "ส่งไปยังกล่องขาเข้าการแจ้งเตือนที่กรองอยู่",
"notifications.policy.filter_limited_accounts_hint": "จำกัดโดยผู้กลั่นกรองเซิร์ฟเวอร์",
"notifications.policy.filter_limited_accounts_title": "บัญชีที่ได้รับการกลั่นกรอง",
"notifications.policy.filter_new_accounts.hint": "สร้างขึ้นภายใน {days, plural, other {# วัน}}ที่ผ่านมา",
"notifications.policy.filter_new_accounts_title": "บัญชีใหม่",
@ -606,7 +641,7 @@
"onboarding.steps.share_profile.title": "แชร์โปรไฟล์ Mastodon ของคุณ",
"onboarding.tips.2fa": "<strong>คุณทราบหรือไม่?</strong> คุณสามารถรักษาความปลอดภัยบัญชีของคุณได้โดยตั้งค่าการรับรองความถูกต้องด้วยสองปัจจัยในการตั้งค่าบัญชีของคุณ การรับรองความถูกต้องด้วยสองปัจจัยทำงานร่วมกับแอป TOTP ใด ๆ ที่คุณเลือก ไม่จำเป็นต้องมีหมายเลขโทรศัพท์!",
"onboarding.tips.accounts_from_other_servers": "<strong>คุณทราบหรือไม่?</strong> เนื่องจาก Mastodon เป็นแบบกระจายศูนย์ โปรไฟล์บางส่วนที่คุณเจอจะได้รับการโฮสต์ในเซิร์ฟเวอร์อื่น ๆ ที่ไม่ใช่ของคุณ และคุณยังสามารถโต้ตอบกับเขาได้อย่างไร้รอยต่อ! เซิร์ฟเวอร์ของเขาอยู่ในครึ่งหลังของชื่อผู้ใช้ของเขา!",
"onboarding.tips.migration": "<strong>คุณทราบหรือไม่?</strong> หากคุณรู้สึกว่า {domain} ไม่ใช่ตัวเลือกเซิร์ฟเวอร์ที่ยอดเยี่ยมสำหรับคุณในอนาคต คุณสามารถย้ายไปยังเซิร์ฟเวอร์ Mastodon อื่นได้โดยไม่สูญเสียผู้ติดตามของคุณ คุณยังสามารถโฮสต์เซิร์ฟเวอร์ของคุณเอง!",
"onboarding.tips.migration": "<strong>คุณทราบหรือไม่?</strong> หากคุณรู้สึกว่า {domain} ไม่ใช่ตัวเลือกเซิร์ฟเวอร์ที่ยอดเยี่ยมสำหรับคุณในอนาคต คุณสามารถย้ายไปยังเซิร์ฟเวอร์ Mastodon อื่นได้โดยไม่สูญเสียผู้ติดตามของคุณ คุณยังสามารถโฮสต์เซิร์ฟเวอร์ของคุณเองได้อีกด้วย!",
"onboarding.tips.verification": "<strong>คุณทราบหรือไม่?</strong> คุณสามารถยืนยันบัญชีของคุณได้โดยใส่ลิงก์ไปยังโปรไฟล์ Mastodon ของคุณในเว็บไซต์ของคุณเองและเพิ่มเว็บไซต์ไปยังโปรไฟล์ของคุณ ไม่จำเป็นต้องมีค่าธรรมเนียมหรือเอกสาร!",
"password_confirmation.exceeds_maxlength": "การยืนยันรหัสผ่านเกินความยาวรหัสผ่านสูงสุดแล้ว",
"password_confirmation.mismatching": "การยืนยันรหัสผ่านไม่ตรงกัน",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Takibi bırak",
"confirmations.unfollow.message": "{name} adlı kullanıcıyı takibi bırakmak istediğinden emin misin?",
"confirmations.unfollow.title": "Kullanıcıyı takipten çık?",
"content_warning.hide": "Gönderiyi gizle",
"content_warning.show": "Yine de göster",
"conversation.delete": "Sohbeti sil",
"conversation.mark_as_read": "Okundu olarak işaretle",
"conversation.open": "Sohbeti görüntüle",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur",
"filter_modal.select_filter.title": "Bu gönderiyi süzgeçle",
"filter_modal.title.status": "Bir gönderi süzgeçle",
"filter_warning.matches_filter": "“{title}” filtresiyle eşleşiyor",
"filtered_notifications_banner.pending_requests": "Bildiğiniz {count, plural, =0 {hiç kimseden} one {bir kişiden} other {# kişiden}}",
"filtered_notifications_banner.title": "Filtrelenmiş bildirimler",
"firehose.all": "Tümü",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Відписатися",
"confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?",
"confirmations.unfollow.title": "Відписатися від користувача?",
"content_warning.hide": "Сховати допис",
"content_warning.show": "Усе одно показати",
"conversation.delete": "Видалити бесіду",
"conversation.mark_as_read": "Позначити як прочитане",
"conversation.open": "Переглянути бесіду",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову",
"filter_modal.select_filter.title": "Фільтрувати цей допис",
"filter_modal.title.status": "Фільтрувати допис",
"filter_warning.matches_filter": "Збігається з фільтром “{title}”",
"filtered_notifications_banner.pending_requests": "Від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати",
"filtered_notifications_banner.title": "Відфільтровані сповіщення",
"firehose.all": "Всі",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "Bỏ theo dõi",
"confirmations.unfollow.message": "Bạn thật sự muốn bỏ theo dõi {name}?",
"confirmations.unfollow.title": "Bỏ theo dõi?",
"content_warning.hide": "Ẩn tút",
"content_warning.show": "Nhấn để xem",
"conversation.delete": "Xóa tin nhắn này",
"conversation.mark_as_read": "Đánh dấu là đã đọc",
"conversation.open": "Xem toàn bộ tin nhắn",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "Sử dụng một danh mục hiện có hoặc tạo một danh mục mới",
"filter_modal.select_filter.title": "Lọc tút này",
"filter_modal.title.status": "Lọc một tút",
"filter_warning.matches_filter": "Khớp bộ lọc “{title}”",
"filtered_notifications_banner.pending_requests": "Từ {count, plural, =0 {không ai} other {# người}} bạn có thể biết",
"filtered_notifications_banner.title": "Thông báo đã lọc",
"firehose.all": "Toàn bộ",

View File

@ -192,6 +192,8 @@
"confirmations.unfollow.confirm": "取消关注",
"confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
"confirmations.unfollow.title": "是否取消关注用户?",
"content_warning.hide": "隐藏嘟文",
"content_warning.show": "仍然显示",
"conversation.delete": "删除对话",
"conversation.mark_as_read": "标记为已读",
"conversation.open": "查看对话",
@ -299,6 +301,7 @@
"filter_modal.select_filter.subtitle": "使用一个已存在类别,或创建一个新类别",
"filter_modal.select_filter.title": "过滤此嘟文",
"filter_modal.title.status": "过滤一条嘟文",
"filter_warning.matches_filter": "命中过滤规则 “{title}”",
"filtered_notifications_banner.pending_requests": "来自你可能认识的 {count, plural, =0 {0 个人} other {# 个人}}",
"filtered_notifications_banner.title": "通知(已过滤)",
"firehose.all": "全部",

View File

@ -48,8 +48,9 @@ export const loadingBarMiddleware = (
let isRejected = false;
if (
isAsyncThunkAction(action)
// TODO: once we get the first use-case for it, add a check for skipLoading
isAsyncThunkAction(action) &&
'useLoadingBar' in action.meta &&
action.meta.useLoadingBar
) {
if (isThunkActionPending(action)) isPending = true;
else if (isThunkActionFulfilled(action)) isFulfilled = true;

View File

@ -15,7 +15,7 @@ export interface AsyncThunkRejectValue {
}
interface AppMeta {
skipLoading?: boolean;
useLoadingBar?: boolean;
}
export const createAppAsyncThunk = createAsyncThunk.withTypes<{
@ -34,7 +34,7 @@ interface AppThunkConfig {
type AppThunkApi = Pick<GetThunkAPI<AppThunkConfig>, 'getState' | 'dispatch'>;
interface AppThunkOptions {
skipLoading?: boolean;
useLoadingBar?: boolean;
}
const createBaseAsyncThunk = createAsyncThunk.withTypes<AppThunkConfig>();
@ -54,15 +54,20 @@ export function createThunk<Arg = void, Returned = void>(
const result = await creator(arg, { dispatch, getState });
return fulfillWithValue(result, {
skipLoading: options.skipLoading,
useLoadingBar: options.useLoadingBar,
});
} catch (error) {
return rejectWithValue({ error }, { skipLoading: true });
return rejectWithValue(
{ error },
{
useLoadingBar: options.useLoadingBar,
},
);
}
},
{
getPendingMeta() {
if (options.skipLoading) return { skipLoading: true };
if (options.useLoadingBar) return { useLoadingBar: true };
return {};
},
},
@ -148,7 +153,7 @@ export function createDataLoadingThunk<
* You can also omit this parameter and pass `thunkOptions` directly
* @param maybeThunkOptions
* Additional Mastodon specific options for the thunk. Currently supports:
* - `skipLoading` to avoid showing the loading bar when the request is in progress
* - `useLoadingBar` to display a loading bar while this action is pending. Defaults to true.
* @returns The created thunk
*/
export function createDataLoadingThunk<
@ -198,6 +203,6 @@ export function createDataLoadingThunk<
return undefined as Returned;
else return result;
},
thunkOptions,
{ useLoadingBar: thunkOptions?.useLoadingBar ?? true },
);
}

View File

@ -286,6 +286,7 @@ ar:
filter_by_action: تصفية بحسب الإجراء
filter_by_user: تصفية حسب المستخدم
title: سِجلّ التفتيش و المعاينة
unavailable_instance: "(اسم النطاق غير متوفر)"
announcements:
destroyed_msg: تم حذف الإعلان بنجاح!
edit:
@ -990,6 +991,7 @@ ar:
delete: حذف
edit_preset: تعديل نموذج التحذير
empty: لم تحدد أي إعدادات تحذير مسبقة بعد.
title: نماذج التحذير
webhooks:
add_new: إضافة نقطة نهاية
delete: حذف

View File

@ -954,6 +954,7 @@ cy:
name: Enw
newest: Mwyaf newydd
oldest: Hynaf
open: Gweld yn gyhoeddus
reset: Ailosod
review: Adolygu statws
search: Chwilio

View File

@ -9,9 +9,10 @@ ro:
already_authenticated: Ești deja conectat.
inactive: Contul tău nu este încă activat.
invalid: "%{authentication_keys} sau parolă greșită."
last_attempt: Mai ai încă o încercare înainte de a bloca contul.
last_attempt: Mai ai încă o încercare înainte ca contul tău să fie blocat.
locked: Contul tău este blocat.
not_found_in_database: "%{authentication_keys} sau parolă greșită."
omniauth_user_creation_failure: Eroare la crearea unui cont pentru această identitate.
pending: Contul tău este încă în curs de revizuire.
timeout: Sesiunea ta a expirat. Te rugăm să te conectezi din nou pentru a continua.
unauthenticated: Trebuie să te conectezi sau să te înregistrezi înainte de a continua.
@ -20,7 +21,7 @@ ro:
confirmation_instructions:
action: Verifică adresa de e-mail
action_with_app: Confirmați și reveniți la %{app}
explanation: Ai creat un cont pe %{host} cu această adresă de e-mail. Ești la un click distanță de a o activa. Dacă nu ai fost tu, ignoră acest e-mail.
explanation: Ai creat un cont pe %{host} cu această adresă de e-mail. Ești la un clic distanță de a-l activa. Dacă nu ai fost tu, ignoră acest e-mail.
explanation_when_pending: Ai solicitat o invitație către %{host} cu această adresă de e-mail. Odată ce îți confirmi adresa de e-mail, îți vom revizui cererea. Te poți autentifica pentru a-ți schimba detaliile sau pentru a-ți șterge contul, dar nu poți accesa majoritatea funcțiilor până când contul tău nu este aprobat. Dacă cererea ta este respinsă, datele tale vor fi șterse, astfel încât nu va fi necesară nicio altă acțiune din partea ta. Dacă nu ai fost tu, ignoră acest e-mail.
extra_html: Te rugăm să verifici și <a href="%{terms_path}">regulile serverului</a> și <a href="%{policy_path}">termenii noștri de serviciu</a>.
subject: 'Mastodon: Instrucțiuni de confirmare pentru %{instance}'
@ -28,12 +29,12 @@ ro:
email_changed:
explanation: 'Adresa de e-mail pentru contul tău este schimbată la:'
extra: Dacă nu v-ați schimbat adresa de e-mail, probabil că cineva a obținut acces la contul dvs. Te rugăm să îți schimbi parola imediat sau să contactezi administratorul serverului dacă nu ai acces la contul tău.
subject: E-mail schimbat
subject: 'Mastodon: E-mail schimbat'
title: Noua adresa de e-mail
password_change:
explanation: Parola contului tău a fost schimbată.
extra: Dacă nu v-ați schimbat parola, este posibil ca cineva să fi obținut acces la contul dvs. Te rugăm să îți schimbi parola imediat sau să contactezi administratorul serverului dacă nu ai acces la contul tău.
subject: Parolă schimbată
subject: 'Mastodon: Parolă schimbată'
title: Parolă schimbată
reconfirmation_instructions:
explanation: Confirmă noua adresă pentru a schimba adresa de e-mail.
@ -44,25 +45,25 @@ ro:
action: Schimbă parola
explanation: Ați solicitat o nouă parolă pentru contul dvs.
extra: Dacă nu ați solicitat acest lucru, ignorați acest e-mail. Parola dvs. nu se va schimba până când nu veți accesa link-ul de mai sus și nu veți crea unul nou.
subject: Instrucțiuni pentru resetarea parolei
subject: 'Mastodon: Instrucțiuni pentru resetarea parolei'
title: Resetare parolă
two_factor_disabled:
explanation: Conectarea este acum posibilă folosind doar adresa de e-mail și parola.
subject: Autentificare cu doi factori dezactivată
subject: 'Mastodon: Autentificare cu doi factori dezactivată'
subtitle: Autentificarea cu doi factori pentru contul dvs. a fost dezactivată.
title: 2FA dezactivat
title: A2F dezactivată
two_factor_enabled:
explanation: Pentru autentificare va fi necesar un token generat de aplicația TOTP asociată.
subject: Autentificare în doi pași activată
subject: 'Mastodon: Autentificare în doi pași activată'
subtitle: Autentificarea cu doi factori a fost activată pentru contul dvs.
title: 2FA activat
title: A2F activată
two_factor_recovery_codes_changed:
explanation: Codurile anterioare de recuperare au fost invalidate și unele noi generate.
subject: Recuperare în doi factori
explanation: Codurile de recuperare anterioare au fost invalidate și s-au generat altele noi.
subject: 'Mastodon: Coduri de recuperare în doi pași regenerate'
subtitle: Codurile de recuperare anterioare au fost invalidate și s-au generat altele noi.
title: Coduri de recuperare 2FA modificate
title: Codurile de recuperare în doi pași au fost modificate
unlock_instructions:
subject: Instrucțiuni de deblocare
subject: 'Mastodon: Instrucțiuni de deblocare'
webauthn_credential:
added:
explanation: Următoarea cheie de securitate a fost adăugată în contul tău
@ -80,7 +81,7 @@ ro:
webauthn_enabled:
explanation: Autentificarea cu cheie de securitate a fost activată pentru contul dvs.
extra: Cheia ta de securitate poate fi acum folosită pentru conectare.
subject: 'Mastodon: Autentificarea cheii de securitate activată'
subject: 'Mastodon: Autentificarea prin chei de securitate activată'
title: Chei de securitate activate
omniauth_callbacks:
failure: Nu te-am putut autentifica de la %{kind} deoarece "%{reason}".
@ -97,7 +98,7 @@ ro:
signed_up_but_inactive: V-ați înregistrat cu succes. Cu toate acestea, nu vă putem conecta deoarece contul dvs. nu este încă activat.
signed_up_but_locked: V-ați înregistrat cu succes. Cu toate acestea, nu vă putem conecta deoarece contul dvs. este blocat.
signed_up_but_pending: Un mesaj cu un link de confirmare a fost trimis la adresa ta de e-mail. După ce faceți clic pe link, vă vom revizui cererea. Veți fi notificat dacă este aprobat.
signed_up_but_unconfirmed: Un mesaj cu un link de confirmare a fost trimis la adresa ta de e-mail. Vă rugăm să urmaţi link-ul pentru a vă activa contul. Vă rugăm să verificaţi folderul spam dacă nu aţi primit acest e-mail.
signed_up_but_unconfirmed: Un mesaj cu un link de confirmare a fost trimis la adresa ta de e-mail. Vă rugăm să urmați link-ul pentru a vă activa contul. Vă rugăm să verificați folderul spam dacă nu ați primit acest e-mail.
update_needs_confirmation: Ți-ai actualizat contul cu succes, dar trebuie să verificăm noua ta adresă de e-mail. Vă rugăm să verificați adresa de e-mail și să urmați link-ul de confirmare pentru a confirma noua dvs. adresă de e-mail. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail.
updated: Contul dvs. a fost actualizat cu succes.
sessions:
@ -105,7 +106,7 @@ ro:
signed_in: Conectat cu succes.
signed_out: Deconectat cu succes.
unlocks:
send_instructions: Veţi primi un e-mail cu instrucţiuni despre cum să vă deblocaţi contul în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail.
send_instructions: Veți primi un e-mail cu instrucțiuni despre cum să vă deblocați contul în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail.
send_paranoid_instructions: Dacă contul tău există, vei primi un e-mail cu instrucțiuni pentru cum să-l deblochezi în câteva minute. Te rugăm să verifici dosarul spam dacă nu ai primit acest e-mail.
unlocked: Contul tău a fost deblocat cu succes. Te rugăm să te autentifici pentru a continua.
errors:
@ -118,4 +119,4 @@ ro:
not_saved:
few: "%{count} erori au împiedicat salvarea acestui %{resource}:"
one: 'O eroare a împiedicat salvarea acestui %{resource}:'
other: "%{count} de erori au împiedicat salvarea acestui %{resource}:"
other: "%{count} erori au împiedicat salvarea acestui %{resource}:"

View File

@ -35,24 +35,24 @@ lt:
redirect_uri: Naudok po vieną eilutę kiekvienam URI.
scopes: Atskirk aprėptis tarpais. Palik tuščią, jei nori naudoti numatytąsias aprėtis.
index:
application: Programėlė
application: Programa
callback_url: Atgalinis URL
delete: Ištrinti
empty: Neturi jokių programėlių.
empty: Neturi jokių programų.
name: Pavadinimas
new: Nauja programėlė
new: Nauja programa
scopes: Aprėptys
show: Rodyti
title: Tavo programėlės
title: Tavo programos
new:
title: Nauja programėlė
title: Nauja programa
show:
actions: Veiksmai
application_id: Kliento raktas
callback_urls: Atgalinių URL adresų
application_id: Kliento programos raktas
callback_urls: Atgalinių URL
scopes: Aprėptys
secret: Kliento paslaptis
title: 'Programėlė: %{name}'
secret: Kliento programos paslaptis
title: 'Programa: %{name}'
authorizations:
buttons:
authorize: Leisti
@ -60,48 +60,48 @@ lt:
error:
title: Įvyko klaida.
new:
prompt_html: "%{client_name} norėtų gauti leidimą prieigos prie tavo paskyros. Tai trečiosios šalies programėlė. <strong>Jei ja nepasitiki, neturėtum leisti.</strong>"
prompt_html: "%{client_name} norėtų gauti leidimą pasiekti tavo paskyrą. Tai trečiosios šalies programa. <strong>Jei ja nepasitiki, tada neturėtum leisti.</strong>"
review_permissions: Peržiūrėti leidimus
title: Reikalingas leidimas
title: Privalomas leidimas
show:
title: Nukopijuok šį tapatybės patvirtinimo kodą ir įklijuok jį į programėlę.
title: Nukopijuok šį leidimo kodą ir įklijuok jį į programą.
authorized_applications:
buttons:
revoke: Naikinti
confirmations:
revoke: Ar esi įsitikinęs (-usi)?
index:
authorized_at: Įgaliota %{date}
description_html: Tai programėlės, kurios gali pasiekti tavo paskyrą naudojant API. Jei čia yra programėlių, kurių neatpažįsti, arba jei programėlė elgiasi netinkamai, gali panaikinti jos prieigą.
authorized_at: Leidžiama %{date}
description_html: Tai programos, kurios gali pasiekti tavo paskyrą naudojant API. Jei čia yra programų, kurių neatpažįsti, arba jei programa elgiasi netinkamai, gali panaikinti jos prieigą.
last_used_at: Paskutinį kartą naudota %{date}
never_used: Niekada nenaudotas
never_used: Niekada nenaudota
scopes: Leidimai
superapp: Vidinis
title: Tavo leidžiamos programėlės
title: Tavo leidžiamos programos
errors:
messages:
access_denied: Išteklių savininkas (-ė) arba įgaliojimų serveris atmetė užklausą.
access_denied: Išteklių savininkas (-ė) arba leidžiamų serveris atmetė užklausą.
credential_flow_not_configured: Išteklių savininko slaptažodžio kredencialų srautas nepavyko, nes Doorkeeper.configure.resource_owner_from_credentials nėra nesukonfigūruotas.
invalid_client: Kliento tapatybės nustatymas nepavyko dėl nežinomo kliento, neįtraukto kliento tapatybės nustatymo arba nepalaikomo tapatybės nustatymo metodo.
invalid_code_challenge_method: Kodo iššūkio das turi būti S256. Paprastas nepalaikomas.
invalid_grant: Pateiktas įgaliojimas yra netinkamas, pasibaigęs, panaikintas, neatitinka įgaliojimo užklausoje naudoto nukreipimo URI arba buvo išduotas kitam klientui.
invalid_redirect_uri: Nukreipimo uri įtrauktas yra netinkamas.
invalid_client: Kliento programos tapatybės nustatymas nepavyko dėl nežinomo kliento programos, neįtraukto kliento programos tapatybės nustatymo arba nepalaikomo tapatybės nustatymo metodo.
invalid_code_challenge_method: Kodo iššūkio metodas turi būti S256. Paprastas nepalaikomas.
invalid_grant: Pateiktas leidimo suteikimas yra netinkamas, nebegaliojantis, panaikintas, neatitinka leidimo užklausoje naudoto nukreipimo URI arba buvo išduotas kitam kliento programui.
invalid_redirect_uri: Įtrauktas nukreipimo URI netinkamas.
invalid_request:
missing_param: 'Trūksta privalomo parametro: %{value}.'
request_not_authorized: Užklausą reikia įgalioti. Reikalingo parametro užklausai įgalioti trūksta arba jis netinkamas.
unknown: Užklausoje trūksta privalomo parametro, turi nepalaikomą parametro reikšmę arba yra kitaip netinkamai suformuota.
invalid_resource_owner: Pateikti išteklių savininko įgaliojimai yra netinkami arba išteklių savininko negalima surasti.
request_not_authorized: Užklausą reikia leisti. Trūksta privalomo parametro užklausai leisti arba jis netinkamas.
unknown: Užklausai trūksta privalomo parametro, įtraukta nepalaikoma parametro reikšmė arba ji yra kitaip netaisyklingas.
invalid_resource_owner: Pateikti išteklių savininko kredencialai yra netinkami arba išteklių savininko negalima surasti.
invalid_scope: Užklausos aprėptis yra netinkama, nežinoma arba netaisyklingas.
invalid_token:
expired: Baigėsi prieigos rakto galiojimas.
expired: Prieigos raktas nebegalioja.
revoked: Prieigos raktas buvo panaikintas.
unknown: Prieigos raktas yra netinkamas.
resource_owner_authenticator_not_configured: Išteklių savininko suradimas nepavyko dėl to, kad Doorkeeper.configure.resource_owner_authenticator nėra sukonfigūruotas.
server_error: Įgaliojimų serveris susidūrė su netikėta sąlyga, dėl kurios negalėjo užpildyti užklausos.
unknown: Prieigos raktas netinkamas.
resource_owner_authenticator_not_configured: Išteklių savininko suradimas nepavyko, nes Doorkeeper.configure.resource_owner_authenticator nėra sukonfigūruotas.
server_error: Leidimo serveris susidūrė su netikėta sąlyga, dėl kurios negalėjo užpildyti užklausos.
temporarily_unavailable: Įgaliojimų serveris šiuo metu negali apdoroti užklausos dėl laikinos serverio perkrovos arba techninės priežiūros.
unauthorized_client: Klientas nėra įgaliotas atlikti šią užklausą šiuo metodu.
unsupported_grant_type: Įgaliojimų suteikimo tipas nepalaikomas įgaliojimų serveryje.
unsupported_response_type: Įgaliojimų serveris nepalaiko šio atsako tipo.
unauthorized_client: Klientas nėra leidžiamas atlikti šią užklausą šiuo metodu.
unsupported_grant_type: Leidimo suteikimo tipas nepalaikomas leidimo serveryje.
unsupported_response_type: Leidimo serveris nepalaiko šio atsakymo tipo.
flash:
applications:
create:
@ -123,7 +123,7 @@ lt:
admin/accounts: Paskyrų administravimas
admin/all: Visi administraciniai funkcijos
admin/reports: Ataskaitų administravimas
all: Pilna prieiga prie tavo Mastodon paskyros
all: Pilna prieiga prie tavo Mastodon paskyros
blocks: Blokavimai
bookmarks: Žymės
conversations: Pokalbiai
@ -136,7 +136,7 @@ lt:
media: Medijos priedai
mutes: Nutildymai
notifications: Pranešimai
profile: Tavo Mastodon profilis
profile: Tavo Mastodon profilis
push: Tiesioginiai pranešimai
reports: Ataskaitos
search: Paieška
@ -151,25 +151,25 @@ lt:
scopes:
admin:read: skaityti visus duomenis serveryje
admin:read:accounts: skaityti slaptą visų paskyrų informaciją
admin:read:canonical_email_blocks: skaityti slaptą visų kanoninių el. laiško blokavimų informaciją
admin:read:domain_allows: skaityti slaptą visų domeno leidimus informaciją
admin:read:domain_blocks: skaityti slaptą visų domeno blokavimų informaciją
admin:read:email_domain_blocks: skaityti slaptą visų el. laiško domeno blokavimų informaciją
admin:read:canonical_email_blocks: skaityti slaptą visų kanoninių el. laiškų blokavimų informaciją
admin:read:domain_allows: skaityti slaptą visų serverių leidžiamų informaciją
admin:read:domain_blocks: skaityti slaptą visų serverių blokavimų informaciją
admin:read:email_domain_blocks: skaityti slaptą visų el. laiškų serverių blokavimų informaciją
admin:read:ip_blocks: skaityti slaptą visų IP blokavimų informaciją
admin:read:reports: skaityti slaptą visų ataskaitų ir praneštų paskyrų informaciją
admin:write: modifikuoti visus duomenis serveryje
admin:write:accounts: atlikti paskyrų prižiūrėjimo veiksmus
admin:write:canonical_email_blocks: atlikti kanoninių el. laiško blokavimų prižiūrėjimo veiksmus
admin:write:domain_allows: atlikti domeno leidimų prižiūrėjimo veiksmus
admin:write:domain_blocks: atlikti domeno blokavimų prižiūrėjimo veiksmus
admin:write:email_domain_blocks: atlikti el. laiško domenų blokavimų prižiūrėjimo veiksmus
admin:write:canonical_email_blocks: atlikti kanoninių el. laiškų blokavimų prižiūrėjimo veiksmus
admin:write:domain_allows: atlikti serverio leidžiamų prižiūrėjimo veiksmus
admin:write:domain_blocks: atlikti serverio blokavimų prižiūrėjimo veiksmus
admin:write:email_domain_blocks: atlikti el. laiškų serverių blokavimų prižiūrėjimo veiksmus
admin:write:ip_blocks: atlikti IP blokavimų prižiūrėjimo veiksmus
admin:write:reports: atlikti ataskaitų prižiūrėjimo veiksmus
crypto: naudoti visapusį šifravimą
follow: modifikuoti paskyros sąryšius
profile: skaityti tik tavo paskyros profilio informaciją
push: gauti tiesioginius pranešimus
read: skaityti visus paskyros duomenis
read: skaityti visus tavo paskyros duomenis
read:accounts: matyti paskyrų informaciją
read:blocks: matyti tavo blokavimus
read:bookmarks: matyti tavo žymes

View File

@ -898,6 +898,7 @@ es-AR:
name: Nombre
newest: Lo más reciente
oldest: Lo más antiguo
open: Ver públicamente
reset: Restablecer
review: Estado de revisión
search: Buscar

View File

@ -898,6 +898,7 @@ es-MX:
name: Nombre
newest: Más reciente
oldest: Menos reciente
open: Ver públicamente
reset: Reiniciar
review: Estado de revisión
search: Buscar

View File

@ -898,6 +898,7 @@ es:
name: Nombre
newest: Más reciente
oldest: Menos reciente
open: Ver públicamente
reset: Reiniciar
review: Estado de revisión
search: Buscar

View File

@ -1203,7 +1203,7 @@ fr:
add_new: Ajouter un nouveau hashtag
errors:
limit: Vous avez déjà mis en avant le nombre maximum de hashtags
hint_html: "<strong>Que sont les hashtags mis en avant ?</strong> Ils sont affichés en évidence sur votre profil public et permettent aux gens de parcourir vos messages publics qui utilisent ces hashtags. Ils sont un excellent outil pour garder la trace dactivités créatrices ou de projets de long terme."
hint_html: "<strong>Mettez en évidence vos hashtags les plus importants sur votre profil.</strong> Un outil idéal pour suivre vos travaux créatifs et vos projets à long terme, les hashtags mis en avant sont affichés bien en évidence sur votre profil et permettent un accès rapide à vos propres publications."
filters:
contexts:
account: Profils

View File

@ -940,6 +940,7 @@ ga:
name: Ainm
newest: Is nuaí
oldest: Is sine
open: Amharc go Poiblí
reset: Athshocraigh
review: Stádas athbhreithnithe
search: Cuardach

View File

@ -926,6 +926,7 @@ gd:
name: Ainm
newest: As ùire
oldest: As sine
open: Seall gu poblach
reset: Ath-shuidhich
review: Dèan lèirmheas air an staid
search: Lorg

View File

@ -898,6 +898,7 @@ nn:
name: Namn
newest: Nyaste
oldest: Eldste
open: Vis offentleg
reset: Nullstill
review: Sjå gjennom status
search: Søk

View File

@ -872,16 +872,19 @@ th:
message_html: "<strong>ที่เก็บข้อมูลวัตถุของคุณกำหนดค่าไม่ถูกต้อง ความเป็นส่วนตัวของผู้ใช้ของคุณตกอยู่ในความเสี่ยง</strong>"
tags:
moderation:
not_trendable: ไม่สามารถขึ้นแนวโน้มได้
not_usable: ไม่สามารถใช้งานได้
pending_review: การตรวจทานที่รอดำเนินการ
review_requested: ต้องการการตรวจทาน
reviewed: ตรวจทานแล้ว
title: สถานะ
trendable: ขึ้นแนวโน้มได้
unreviewed: ไม่ได้รับการตรวจทาน
usable: ใช้งานได้
name: ชื่อ
newest: ใหม่ที่สุด
oldest: เก่าที่สุด
open: ดูแบบสาธารณะ
reset: รีเซ็ต
review: สถานะการตรวจทาน
search: ค้นหา
@ -1904,7 +1907,7 @@ th:
seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นการตั้งค่ารหัสผ่านและอีเมลจึงไม่พร้อมใช้งาน
signed_in_as: 'ลงชื่อเข้าเป็น:'
verification:
extra_instructions_html: <strong>เคล็ดลับ:</strong> ลิงก์ในเว็บไซต์ของคุณสามารถเป็นแบบมองไม่เห็น ส่วนที่สำคัญคือ <code>rel="me"</code> ซึ่งป้องกันการแอบอ้างในเว็บไซต์ที่มีเนื้อหาที่ผู้ใช้สร้างขึ้น คุณยังสามารถใช้แท็ก <code>link</code> ในส่วนหัวของหน้าแทนที่จะเป็น <code>a</code> แต่ HTML ต้องเข้าถึงได้โดยไม่มีการประมวลผล JavaScript
extra_instructions_html: <strong>เคล็ดลับ:</strong> ลิงก์ในเว็บไซต์ของคุณสามารถเป็นแบบมองไม่เห็น ส่วนที่สำคัญคือ <code>rel="me"</code> ซึ่งป้องกันการแอบอ้างในเว็บไซต์ที่มีเนื้อหาที่ผู้ใช้สร้างขึ้น คุณยังสามารถใช้แท็ก <code>link</code> ในส่วนหัวของหน้าแทนที่จะเป็น <code>a</code> ได้อีกด้วย แต่ HTML ต้องเข้าถึงได้โดยไม่มีการประมวลผล JavaScript
here_is_how: นี่คือวิธี
hint_html: "<strong>การยืนยันตัวตนของคุณใน Mastodon มีไว้สำหรับทุกคน</strong> โดยอิงตามมาตรฐานเว็บแบบเปิด ฟรีตอนนี้และตลอดไป ทั้งหมดที่คุณจำเป็นต้องมีคือเว็บไซต์ส่วนบุคคลที่ผู้คนรู้จักคุณ เมื่อคุณเชื่อมโยงไปยังเว็บไซต์นี้จากโปรไฟล์ของคุณ เราจะตรวจสอบว่าเว็บไซต์เชื่อมโยงกลับไปยังโปรไฟล์ของคุณและแสดงตัวบ่งชี้ที่มองเห็นได้ในโปรไฟล์"
instructions_html: คัดลอกแล้ววางโค้ดด้านล่างลงใน HTML ของเว็บไซต์ของคุณ จากนั้นเพิ่มที่อยู่ของเว็บไซต์ของคุณลงในหนึ่งในช่องพิเศษในโปรไฟล์ของคุณจากแท็บ "แก้ไขโปรไฟล์" และบันทึกการเปลี่ยนแปลง

View File

@ -884,6 +884,7 @@ vi:
name: Tên
newest: Mới nhất
oldest: Cũ nhất
open: Xem công khai
reset: Đặt lại
review: Phê duyệt
search: Tìm kiếm

View File

@ -884,6 +884,7 @@ zh-CN:
name: 名称
newest: 最新
oldest: 最早
open: 以公开身份查看
reset: 重置
review: 审核状态
search: 搜索

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
Chewy.strategy(:mastodon) do
Dir[Rails.root.join('db', 'seeds', '*.rb')].each do |seed|
Rails.root.glob('db/seeds/*.rb').each do |seed|
load seed
end
end

View File

@ -15,7 +15,7 @@ namespace :branding do
output_dest = Rails.root.join('app', 'javascript', 'images', 'mailer')
# Displayed size is 64px, at 3x it's 192px
Dir[Rails.root.join('app', 'javascript', 'images', 'icons', '*.svg')].each do |path|
Rails.root.glob('app/javascript/images/icons/*.svg').each do |path|
rsvg_convert.run(input: path, size: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png"))
end

View File

@ -20,7 +20,7 @@ end
def find_used_icons
icons_by_weight_and_size = {}
Dir[Rails.root.join('app', 'javascript', '**', '*.*s*')].map do |path|
Rails.root.glob('app/javascript/**/*.*s*').map do |path|
File.open(path, 'r') do |file|
pattern = %r{\Aimport .* from '@/material-icons/(?<weight>[0-9]+)-(?<size>[0-9]+)px/(?<icon>[^-]*)(?<fill>-fill)?.svg\?react';}
file.each_line do |line|

View File

@ -98,7 +98,7 @@ namespace :repo do
missing_yaml_files = I18n.available_locales.reject { |locale| Rails.root.join('config', 'locales', "#{locale}.yml").exist? }
missing_json_files = I18n.available_locales.reject { |locale| Rails.root.join('app', 'javascript', 'mastodon', 'locales', "#{locale}.json").exist? }
locales_in_files = Dir[Rails.root.join('config', 'locales', '*.yml')].map do |path|
locales_in_files = Rails.root.glob('config/locales/*.yml').map do |path|
file_name = File.basename(path, '.yml')
file_name.gsub(/\A(doorkeeper|devise|activerecord|simple_form)\./, '').to_sym
end.uniq.compact

View File

@ -1,7 +1,7 @@
{
"name": "@mastodon/mastodon",
"license": "AGPL-3.0-or-later",
"packageManager": "yarn@4.4.0",
"packageManager": "yarn@4.4.1",
"engines": {
"node": ">=18"
},

View File

@ -1,17 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe AboutController do
render_views
describe 'GET #show' do
before do
get :show
end
it 'returns http success' do
expect(response).to have_http_status(200)
end
end
end

View File

@ -1,19 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe CustomCssController do
render_views
describe 'GET #show' do
before do
get :show
end
it 'returns http success' do
expect(response).to have_http_status(200)
end
it_behaves_like 'cacheable response'
end
end

View File

@ -1,18 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe EmojisController do
render_views
let(:emoji) { Fabricate(:custom_emoji, shortcode: 'coolcat') }
describe 'GET #show' do
let(:response) { get :show, params: { id: emoji.id, format: :json } }
it 'returns the right response' do
expect(response).to have_http_status 200
expect(body_as_json[:name]).to eq ':coolcat:'
end
end
end

View File

@ -1,14 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe HealthController do
render_views
describe 'GET #show' do
it 'returns http success' do
get :show
expect(response).to have_http_status(200)
end
end
end

View File

@ -1,30 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe HomeController do
render_views
describe 'GET #index' do
subject { get :index }
context 'when not signed in' do
it 'returns http success' do
request.path = '/'
expect(subject).to have_http_status(:success)
end
end
context 'when signed in' do
let(:user) { Fabricate(:user) }
before do
sign_in(user)
end
it 'returns http success' do
expect(subject).to have_http_status(:success)
end
end
end
end

View File

@ -1,19 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe ManifestsController do
render_views
describe 'GET #show' do
before do
get :show
end
it 'returns http success' do
expect(response).to have_http_status(200)
end
it_behaves_like 'cacheable response'
end
end

View File

@ -1,14 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe PrivacyController do
render_views
describe 'GET #show' do
it 'returns http success' do
get :show
expect(response).to have_http_status(200)
end
end
end

View File

@ -44,7 +44,7 @@ require 'chewy/rspec'
require 'email_spec/rspec'
require 'test_prof/recipes/rspec/before_all'
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
Rails.root.glob('spec/support/**/*.rb').each { |f| require f }
ActiveRecord::Migration.maintain_test_schema!
WebMock.disable_net_connect!(

View File

@ -0,0 +1,19 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Custom stylesheets' do
describe 'GET /custom.css' do
before { get '/custom.css' }
it 'returns http success' do
expect(response)
.to have_http_status(200)
.and have_attributes(
content_type: match('text/css')
)
end
it_behaves_like 'cacheable response'
end
end

View File

@ -0,0 +1,21 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Emojis' do
describe 'GET /emojis/:id' do
let(:emoji) { Fabricate(:custom_emoji, shortcode: 'coolcat') }
it 'returns http success with correct json' do
get "/emojis/#{emoji.id}"
expect(response)
.to have_http_status(200)
expect(body_as_json)
.to include(
name: ':coolcat:',
type: 'Emoji'
)
end
end
end

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Health check endpoint' do
describe 'GET /health' do
it 'returns http success when server is functioning' do
get '/health'
expect(response)
.to have_http_status(200)
expect(response.body)
.to include('OK')
end
end
end

View File

@ -0,0 +1,24 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Manifest' do
describe 'GET /manifest' do
before { get '/manifest' }
it 'returns http success' do
expect(response)
.to have_http_status(200)
.and have_attributes(
content_type: match('application/json')
)
expect(body_as_json)
.to include(
id: '/home',
name: 'Mastodon'
)
end
it_behaves_like 'cacheable response'
end
end

View File

@ -28,7 +28,7 @@ RSpec.configure do |config|
end
config.after :suite do
FileUtils.rm_rf(Dir[Rails.root.join('spec', 'test_files')])
FileUtils.rm_rf(Rails.root.glob('spec/test_files'))
end
# Use the GitHub Annotations formatter for CI

12
spec/system/about_spec.rb Normal file
View File

@ -0,0 +1,12 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'About page' do
it 'visits the about page and renders the web app' do
visit about_path
expect(page)
.to have_css('noscript', text: /Mastodon/)
end
end

25
spec/system/home_spec.rb Normal file
View File

@ -0,0 +1,25 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Home page' do
context 'when signed in' do
before { sign_in Fabricate(:user) }
it 'visits the homepage and renders the web app' do
visit root_path
expect(page)
.to have_css('noscript', text: /Mastodon/)
end
end
context 'when not signed in' do
it 'visits the homepage and renders the web app' do
visit root_path
expect(page)
.to have_css('noscript', text: /Mastodon/)
end
end
end

View File

@ -0,0 +1,12 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Privacy policy page' do
it 'visits the privacy policy page and renders the web app' do
visit privacy_policy_path
expect(page)
.to have_css('noscript', text: /Mastodon/)
end
end

View File

@ -292,6 +292,9 @@ const CHANNEL_NAMES = [
const startServer = async () => {
const pgPool = new pg.Pool(pgConfigFromEnv(process.env));
const metrics = setupMetrics(CHANNEL_NAMES, pgPool);
const server = http.createServer();
const wss = new WebSocketServer({ noServer: true });
@ -388,16 +391,6 @@ const startServer = async () => {
const redisClient = await createRedisClient(redisConfig);
const { redisPrefix } = redisConfig;
const metrics = setupMetrics(CHANNEL_NAMES, pgPool);
// TODO: migrate all metrics to metrics.X.method() instead of just X.method()
const {
connectedClients,
connectedChannels,
redisSubscriptions,
redisMessagesReceived,
messagesSent,
} = metrics;
// When checking metrics in the browser, the favicon is requested this
// prevents the request from falling through to the API Router, which would
// error for this endpoint:
@ -408,15 +401,7 @@ const startServer = async () => {
res.end('OK');
});
app.get('/metrics', async (req, res) => {
try {
res.set('Content-Type', metrics.register.contentType);
res.end(await metrics.register.metrics());
} catch (ex) {
req.log.error(ex);
res.status(500).end();
}
});
app.get('/metrics', metrics.requestHandler);
/**
* @param {string[]} channels
@ -443,7 +428,7 @@ const startServer = async () => {
* @param {string} message
*/
const onRedisMessage = (channel, message) => {
redisMessagesReceived.inc();
metrics.redisMessagesReceived.inc();
const callbacks = subs[channel];
@ -481,7 +466,7 @@ const startServer = async () => {
if (err) {
logger.error(`Error subscribing to ${channel}`);
} else if (typeof count === 'number') {
redisSubscriptions.set(count);
metrics.redisSubscriptions.set(count);
}
});
}
@ -508,7 +493,7 @@ const startServer = async () => {
if (err) {
logger.error(`Error unsubscribing to ${channel}`);
} else if (typeof count === 'number') {
redisSubscriptions.set(count);
metrics.redisSubscriptions.set(count);
}
});
delete subs[channel];
@ -688,13 +673,13 @@ const startServer = async () => {
unsubscribe(`${redisPrefix}${accessTokenChannelId}`, listener);
unsubscribe(`${redisPrefix}${systemChannelId}`, listener);
connectedChannels.labels({ type: 'eventsource', channel: 'system' }).dec(2);
metrics.connectedChannels.labels({ type: 'eventsource', channel: 'system' }).dec(2);
});
subscribe(`${redisPrefix}${accessTokenChannelId}`, listener);
subscribe(`${redisPrefix}${systemChannelId}`, listener);
connectedChannels.labels({ type: 'eventsource', channel: 'system' }).inc(2);
metrics.connectedChannels.labels({ type: 'eventsource', channel: 'system' }).inc(2);
};
/**
@ -791,7 +776,7 @@ const startServer = async () => {
// TODO: Replace "string"-based delete payloads with object payloads:
const encodedPayload = typeof payload === 'object' ? JSON.stringify(payload) : payload;
messagesSent.labels({ type: destinationType }).inc(1);
metrics.messagesSent.labels({ type: destinationType }).inc(1);
log.debug({ event, payload }, `Transmitting ${event} to ${req.accountId}`);
@ -1034,11 +1019,11 @@ const startServer = async () => {
const streamToHttp = (req, res) => {
const channelName = channelNameFromPath(req);
connectedClients.labels({ type: 'eventsource' }).inc();
metrics.connectedClients.labels({ type: 'eventsource' }).inc();
// In theory we'll always have a channel name, but channelNameFromPath can return undefined:
if (typeof channelName === 'string') {
connectedChannels.labels({ type: 'eventsource', channel: channelName }).inc();
metrics.connectedChannels.labels({ type: 'eventsource', channel: channelName }).inc();
}
res.setHeader('Content-Type', 'text/event-stream');
@ -1054,10 +1039,10 @@ const startServer = async () => {
// We decrement these counters here instead of in streamHttpEnd as in that
// method we don't have knowledge of the channel names
connectedClients.labels({ type: 'eventsource' }).dec();
metrics.connectedClients.labels({ type: 'eventsource' }).dec();
// In theory we'll always have a channel name, but channelNameFromPath can return undefined:
if (typeof channelName === 'string') {
connectedChannels.labels({ type: 'eventsource', channel: channelName }).dec();
metrics.connectedChannels.labels({ type: 'eventsource', channel: channelName }).dec();
}
clearInterval(heartbeat);
@ -1345,7 +1330,7 @@ const startServer = async () => {
const stopHeartbeat = subscriptionHeartbeat(channelIds);
const listener = streamFrom(channelIds, request, logger, onSend, undefined, 'websocket', options.needsFiltering, options.allowLocalOnly);
connectedChannels.labels({ type: 'websocket', channel: channelName }).inc();
metrics.connectedChannels.labels({ type: 'websocket', channel: channelName }).inc();
subscriptions[channelIds.join(';')] = {
channelName,
@ -1384,7 +1369,7 @@ const startServer = async () => {
unsubscribe(`${redisPrefix}${channelId}`, subscription.listener);
});
connectedChannels.labels({ type: 'websocket', channel: subscription.channelName }).dec();
metrics.connectedChannels.labels({ type: 'websocket', channel: subscription.channelName }).dec();
subscription.stopHeartbeat();
delete subscriptions[channelIds.join(';')];
@ -1442,7 +1427,7 @@ const startServer = async () => {
},
};
connectedChannels.labels({ type: 'websocket', channel: 'system' }).inc(2);
metrics.connectedChannels.labels({ type: 'websocket', channel: 'system' }).inc(2);
};
/**
@ -1454,7 +1439,7 @@ const startServer = async () => {
// Note: url.parse could throw, which would terminate the connection, so we
// increment the connected clients metric straight away when we establish
// the connection, without waiting:
connectedClients.labels({ type: 'websocket' }).inc();
metrics.connectedClients.labels({ type: 'websocket' }).inc();
// Setup connection keep-alive state:
ws.isAlive = true;
@ -1480,7 +1465,7 @@ const startServer = async () => {
});
// Decrement the metrics for connected clients:
connectedClients.labels({ type: 'websocket' }).dec();
metrics.connectedClients.labels({ type: 'websocket' }).dec();
// We need to unassign the session object as to ensure it correctly gets
// garbage collected, without doing this we could accidentally hold on to

View File

@ -4,12 +4,12 @@ import metrics from 'prom-client';
/**
* @typedef StreamingMetrics
* @property {metrics.Registry} register
* @property {metrics.Gauge<"type">} connectedClients
* @property {metrics.Gauge<"type" | "channel">} connectedChannels
* @property {metrics.Gauge} redisSubscriptions
* @property {metrics.Counter} redisMessagesReceived
* @property {metrics.Counter<"type">} messagesSent
* @property {import('express').RequestHandler<{}>} requestHandler
*/
/**
@ -92,8 +92,21 @@ export function setupMetrics(channels, pgPool) {
messagesSent.inc({ type: 'websocket' }, 0);
messagesSent.inc({ type: 'eventsource' }, 0);
/**
* @type {import('express').RequestHandler<{}>}
*/
const requestHandler = (req, res) => {
metrics.register.metrics().then((output) => {
res.set('Content-Type', metrics.register.contentType);
res.end(output);
}).catch((err) => {
req.log.error(err, "Error collecting metrics");
res.status(500).end();
});
};
return {
register: metrics.register,
requestHandler,
connectedClients,
connectedChannels,
redisSubscriptions,

View File

@ -1,7 +1,7 @@
{
"name": "@mastodon/streaming",
"license": "AGPL-3.0-or-later",
"packageManager": "yarn@4.4.0",
"packageManager": "yarn@4.4.1",
"engines": {
"node": ">=18"
},

View File

@ -3368,18 +3368,17 @@ __metadata:
linkType: hard
"@testing-library/jest-dom@npm:^6.0.0":
version: 6.4.8
resolution: "@testing-library/jest-dom@npm:6.4.8"
version: 6.5.0
resolution: "@testing-library/jest-dom@npm:6.5.0"
dependencies:
"@adobe/css-tools": "npm:^4.4.0"
"@babel/runtime": "npm:^7.9.2"
aria-query: "npm:^5.0.0"
chalk: "npm:^3.0.0"
css.escape: "npm:^1.5.1"
dom-accessibility-api: "npm:^0.6.3"
lodash: "npm:^4.17.21"
redent: "npm:^3.0.0"
checksum: 10c0/8eececcac1ec7728c038b9d9eabfc8b8dcf4dc1e997c959450bff16d946e3344275862b84bfe0e1d1beb3817368e782464816aca47ab5c94f0ebf66db71df55d
checksum: 10c0/fd5936a547f04608d8de15a7de3ae26516f21023f8f45169b10c8c8847015fd20ec259b7309f08aa1031bcbc37c6e5e6f532d1bb85ef8f91bad654193ec66a4c
languageName: node
linkType: hard
@ -3921,12 +3920,12 @@ __metadata:
linkType: hard
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
version: 18.3.3
resolution: "@types/react@npm:18.3.3"
version: 18.3.4
resolution: "@types/react@npm:18.3.4"
dependencies:
"@types/prop-types": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/fe455f805c5da13b89964c3d68060cebd43e73ec15001a68b34634604a78140e6fc202f3f61679b9d809dde6d7a7c2cb3ed51e0fd1462557911db09879b55114
checksum: 10c0/5c52e1e6f540cff21e3c2a5212066d02e005f6fb21e4a536a29097fae878db9f407cd7a4b43778f51359349c5f692e08bc77ddb5f5cecbfca9ca4d4e3c91a48e
languageName: node
linkType: hard
@ -5132,13 +5131,13 @@ __metadata:
linkType: hard
"axios@npm:^1.4.0":
version: 1.7.4
resolution: "axios@npm:1.7.4"
version: 1.7.5
resolution: "axios@npm:1.7.5"
dependencies:
follow-redirects: "npm:^1.15.6"
form-data: "npm:^4.0.0"
proxy-from-env: "npm:^1.1.0"
checksum: 10c0/5ea1a93140ca1d49db25ef8e1bd8cfc59da6f9220159a944168860ad15a2743ea21c5df2967795acb15cbe81362f5b157fdebbea39d53117ca27658bab9f7f17
checksum: 10c0/1d5daeb28b3d1bb2a7b9f0743433c4bfbeaddc15461e50ebde487eec6c009af2515749d5261096dd430c90cd891bd310bcba5ec3967bae2033c4a307f58a6ad3
languageName: node
linkType: hard
@ -9534,11 +9533,11 @@ __metadata:
linkType: hard
"husky@npm:^9.0.11":
version: 9.1.4
resolution: "husky@npm:9.1.4"
version: 9.1.5
resolution: "husky@npm:9.1.5"
bin:
husky: bin.js
checksum: 10c0/f5185003bef9ad9ec3f40e821963e4c12409b993fdcab89e3d660bed7d8c9d8bfd399f05222e27e0ead6589601fb1bb08d1a589c51751a4ab0547ead3429b8de
checksum: 10c0/f42efb95a026303eb880898760f802d88409780dd72f17781d2dfc302177d4f80b641cf1f1694f53f6d97c536c7397684133d8c8fe4a4426f7460186a7d1c6b8
languageName: node
linkType: hard
@ -11086,8 +11085,8 @@ __metadata:
linkType: hard
"jsdom@npm:^24.0.0":
version: 24.1.1
resolution: "jsdom@npm:24.1.1"
version: 24.1.3
resolution: "jsdom@npm:24.1.3"
dependencies:
cssstyle: "npm:^4.0.1"
data-urls: "npm:^5.0.0"
@ -11115,7 +11114,7 @@ __metadata:
peerDependenciesMeta:
canvas:
optional: true
checksum: 10c0/02d6bfe32f09f26329c0e53ad9f9883a3c671fc1f75725167d2089ca412f5b7ca85ff8aa62327d1cc6fc70ffbb3b18dfc7642c4b2096c2c8b19aaf9a48473eb3
checksum: 10c0/e48b342afacd7418a23dac204a62deea729c50f4d072a7c04c09fd32355fdb4335f8779fa79fd0277a2dbeb2d356250a950955719d00047324b251233b11277f
languageName: node
linkType: hard