Merge remote-tracking branch 'parent/main' into kbtopic-remove-quote

This commit is contained in:
KMY 2025-05-13 07:37:34 +09:00
commit 04070aa608
50 changed files with 2139 additions and 2333 deletions

View file

@ -43,4 +43,4 @@ jobs:
uses: ./.github/actions/setup-javascript
- name: JavaScript testing
run: yarn jest --reporters github-actions summary
run: yarn test:js

View file

@ -64,7 +64,7 @@ gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'linzer', '~> 0.6.1'
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'mime-types', '~> 3.6.0', require: 'mime/types/columnar'
gem 'mime-types', '~> 3.7.0', require: 'mime/types/columnar'
gem 'mutex_m'
gem 'nokogiri', '~> 1.15'
gem 'oj', '~> 3.14'

View file

@ -423,10 +423,10 @@ GEM
redis (>= 3.0.5)
matrix (0.4.2)
memory_profiler (1.1.0)
mime-types (3.6.2)
mime-types (3.7.0)
logger
mime-types-data (~> 3.2015)
mime-types-data (3.2025.0408)
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2025.0507)
mini_mime (1.1.5)
mini_portile2 (2.8.8)
minitest (5.25.5)
@ -627,7 +627,7 @@ GEM
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.8.1)
rack (2.2.13)
rack (2.2.14)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (2.0.2)
@ -996,7 +996,7 @@ DEPENDENCIES
mail (~> 2.8)
mario-redis-lock (~> 1.2)
memory_profiler
mime-types (~> 3.6.0)
mime-types (~> 3.7.0)
mutex_m
net-http (~> 0.6.0)
net-ldap (~> 0.18)

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V2::InstancesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_before_action :require_authenticated_user!
skip_around_action :set_locale
vary_by ''

View file

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`<AutosuggestEmoji /> renders emoji with custom url 1`] = `
exports[`<AutosuggestEmoji /> > renders emoji with custom url 1`] = `
<div
className="autosuggest-emoji"
>
@ -17,7 +17,7 @@ exports[`<AutosuggestEmoji /> renders emoji with custom url 1`] = `
</div>
`;
exports[`<AutosuggestEmoji /> renders native emoji 1`] = `
exports[`<AutosuggestEmoji /> > renders native emoji 1`] = `
<div
className="autosuggest-emoji"
>

View file

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`<Avatar /> Autoplay renders a animated avatar 1`] = `
exports[`<Avatar /> > Autoplay > renders a animated avatar 1`] = `
<div
className="account__avatar account__avatar--loading"
onMouseEnter={[Function]}
@ -21,7 +21,7 @@ exports[`<Avatar /> Autoplay renders a animated avatar 1`] = `
</div>
`;
exports[`<Avatar /> Still renders a still avatar 1`] = `
exports[`<Avatar /> > Still > renders a still avatar 1`] = `
<div
className="account__avatar account__avatar--loading"
onMouseEnter={[Function]}

View file

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`<AvatarOverlay renders a overlay avatar 1`] = `
exports[`<AvatarOverlay > renders a overlay avatar 1`] = `
<div
className="account__avatar-overlay"
onMouseEnter={[Function]}

View file

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`<Button /> adds class "button-secondary" if props.secondary given 1`] = `
exports[`<Button /> > adds class "button-secondary" if props.secondary given 1`] = `
<button
className="button button-secondary"
onClick={[Function]}
@ -8,7 +8,7 @@ exports[`<Button /> adds class "button-secondary" if props.secondary given 1`] =
/>
`;
exports[`<Button /> renders a button element 1`] = `
exports[`<Button /> > renders a button element 1`] = `
<button
className="button"
onClick={[Function]}
@ -16,7 +16,7 @@ exports[`<Button /> renders a button element 1`] = `
/>
`;
exports[`<Button /> renders a disabled attribute if props.disabled given 1`] = `
exports[`<Button /> > renders a disabled attribute if props.disabled given 1`] = `
<button
className="button"
disabled={true}
@ -25,7 +25,7 @@ exports[`<Button /> renders a disabled attribute if props.disabled given 1`] = `
/>
`;
exports[`<Button /> renders class="button--block" if props.block given 1`] = `
exports[`<Button /> > renders class="button--block" if props.block given 1`] = `
<button
className="button button--block"
onClick={[Function]}
@ -33,7 +33,7 @@ exports[`<Button /> renders class="button--block" if props.block given 1`] = `
/>
`;
exports[`<Button /> renders the children 1`] = `
exports[`<Button /> > renders the children 1`] = `
<button
className="button"
onClick={[Function]}
@ -45,7 +45,7 @@ exports[`<Button /> renders the children 1`] = `
</button>
`;
exports[`<Button /> renders the given text 1`] = `
exports[`<Button /> > renders the given text 1`] = `
<button
className="button"
onClick={[Function]}
@ -55,7 +55,7 @@ exports[`<Button /> renders the given text 1`] = `
</button>
`;
exports[`<Button /> renders the props.text instead of children 1`] = `
exports[`<Button /> > renders the props.text instead of children 1`] = `
<button
className="button"
onClick={[Function]}

View file

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`<DisplayName /> renders display name + account name 1`] = `
exports[`<DisplayName /> > renders display name + account name 1`] = `
<span
className="display-name"
onMouseEnter={[Function]}

View file

@ -21,7 +21,7 @@ describe('<Button />', () => {
});
it('handles click events using the given handler', () => {
const handler = jest.fn();
const handler = vi.fn();
render(<Button onClick={handler}>button</Button>);
fireEvent.click(screen.getByText('button'));
@ -29,7 +29,7 @@ describe('<Button />', () => {
});
it('does not handle click events if props.disabled given', () => {
const handler = jest.fn();
const handler = vi.fn();
render(<Button onClick={handler} disabled>button</Button>);
fireEvent.click(screen.getByText('button'));

View file

@ -7,7 +7,7 @@ const fakeIcon = () => <span />;
describe('<Column />', () => {
describe('<ColumnHeader /> click handler', () => {
it('runs the scroll animation if the column contains scrollable content', () => {
const scrollToMock = jest.fn();
const scrollToMock = vi.fn();
const { container } = render(
<Column heading='notifications' icon='notifications' iconComponent={fakeIcon}>
<div className='scrollable' />

View file

@ -24,10 +24,12 @@
"account.copy": "Копиране на връзка към профила",
"account.direct": "Частно споменаване на @{name}",
"account.disable_notifications": "Спиране на известяване при публикуване от @{name}",
"account.domain_blocking": "Блокиране на домейн",
"account.edit_profile": "Редактиране на профила",
"account.enable_notifications": "Известяване при публикуване от @{name}",
"account.endorse": "Представи в профила",
"account.featured": "Препоръчано",
"account.featured.accounts": "Профили",
"account.featured.hashtags": "Хаштагове",
"account.featured.posts": "Публикации",
"account.featured_tags.last_status_at": "Последна публикация на {date}",
@ -40,6 +42,7 @@
"account.following": "Последвано",
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
"account.follows.empty": "Потребителят още никого не следва.",
"account.follows_you": "Следва ви",
"account.go_to_profile": "Към профила",
"account.hide_reblogs": "Скриване на подсилвания от @{name}",
"account.in_memoriam": "В памет на.",
@ -54,13 +57,17 @@
"account.mute_notifications_short": "Заглушаване на известията",
"account.mute_short": "Заглушаване",
"account.muted": "Заглушено",
"account.muting": "Заглушаване",
"account.mutual": "Взаимно се следвате",
"account.no_bio": "Няма представен опис.",
"account.open_original_page": "Отваряне на първообразната страница",
"account.posts": "Публикации",
"account.posts_with_replies": "Публ. и отговори",
"account.remove_from_followers": "Премахване на {name} от последователи",
"account.report": "Докладване на @{name}",
"account.requested": "Чака се одобрение. Щракнете за отмяна на заявката за последване",
"account.requested_follow": "{name} поиска да ви последва",
"account.requests_to_follow_you": "Заявки да ви последват",
"account.share": "Споделяне на профила на @{name}",
"account.show_reblogs": "Показване на подсилвания от @{name}",
"account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
@ -227,6 +234,9 @@
"confirmations.redraft.confirm": "Изтриване и преработване",
"confirmations.redraft.message": "Наистина ли искате да изтриете тази публикация и да я направите чернова? Означаванията като любими и подсилванията ще се изгубят, а и отговорите към първоначалната публикация ще осиротеят.",
"confirmations.redraft.title": "Изтривате и преработвате ли публикацията?",
"confirmations.remove_from_followers.confirm": "Премахване на последовател",
"confirmations.remove_from_followers.message": "{name} ще спре да ви следва. Наистина ли искате да продължите?",
"confirmations.remove_from_followers.title": "Премахвате ли последовател?",
"confirmations.reply.confirm": "Отговор",
"confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
"confirmations.reply.title": "Презаписвате ли публикацията?",

View file

@ -29,6 +29,7 @@
"account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio",
"account.endorse": "Dangos ar fy mhroffil",
"account.featured": "Nodwedd",
"account.featured.accounts": "Proffilau",
"account.featured.hashtags": "Hashnodau",
"account.featured.posts": "Postiadau",
"account.featured_tags.last_status_at": "Y postiad olaf ar {date}",
@ -405,8 +406,10 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} cyfranogwr} other {{counter} cyfranogwr}}",
"hashtag.counter_by_uses": "{count, plural, one {postiad {counter}} other {postiad {counter}}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} postiad} other {{counter} postiad}} heddiw",
"hashtag.feature": "Nodwedd ar y proffil",
"hashtag.follow": "Dilyn hashnod",
"hashtag.mute": "Tewi #{hashtag}",
"hashtag.unfeature": "Peidio a'i gynnwys ar y proffil",
"hashtag.unfollow": "Dad-ddilyn hashnod",
"hashtags.and_other": "…a {count, plural, other {# arall}}",
"hints.profiles.followers_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.",

View file

@ -24,9 +24,12 @@
"account.copy": "Kopii ligilon al profilo",
"account.direct": "Private mencii @{name}",
"account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas",
"account.domain_blocking": "Blokas domajnon",
"account.edit_profile": "Redakti la profilon",
"account.enable_notifications": "Sciigu min kiam @{name} afiŝos",
"account.endorse": "Montri en profilo",
"account.featured": "Montrita",
"account.featured.accounts": "Profiloj",
"account.featured.hashtags": "Kradvortoj",
"account.featured.posts": "Afiŝoj",
"account.featured_tags.last_status_at": "Lasta afîŝo je {date}",
@ -39,13 +42,14 @@
"account.following": "Sekvatoj",
"account.following_counter": "{count, plural, one {{counter} sekvato} other {{counter} sekvatoj}}",
"account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.",
"account.follows_you": "Sekvas vin",
"account.go_to_profile": "Iri al profilo",
"account.hide_reblogs": "Kaŝi diskonigojn de @{name}",
"account.in_memoriam": "Memore.",
"account.joined_short": "Aliĝis",
"account.languages": "Ŝanĝi la abonitajn lingvojn",
"account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}",
"account.locked_info": "Tiu konto estas privatigita. La posedanto mane akceptas tiun, kiu povas sekvi rin.",
"account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}",
"account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.",
"account.media": "Aŭdovidaĵoj",
"account.mention": "Mencii @{name}",
"account.moved_to": "{name} indikis, ke ria nova konto estas nun:",
@ -53,14 +57,17 @@
"account.mute_notifications_short": "Silentigu sciigojn",
"account.mute_short": "Silentigu",
"account.muted": "Silentigita",
"account.muting": "Silentas",
"account.mutual": "Vi sekvas unu la alian",
"account.no_bio": "Neniu priskribo estas provizita.",
"account.open_original_page": "Malfermi la originalan paĝon",
"account.posts": "Afiŝoj",
"account.posts_with_replies": "Afiŝoj kaj respondoj",
"account.remove_from_followers": "Forigi {name}-n de sekvantoj",
"account.report": "Raporti @{name}",
"account.requested": "Atendo de aprobo. Klaku por nuligi la peton por sekvado",
"account.requested_follow": "{name} petis sekvi vin",
"account.requests_to_follow_you": "Petoj sekvi vin",
"account.share": "Diskonigi la profilon de @{name}",
"account.show_reblogs": "Montri diskonigojn de @{name}",
"account.statuses_counter": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}",
@ -69,24 +76,24 @@
"account.unblock_domain_short": "Malbloki",
"account.unblock_short": "Malbloki",
"account.unendorse": "Ne plu rekomendi ĉe la profilo",
"account.unfollow": "Ĉesi sekvi",
"account.unmute": "Ne plu silentigi @{name}",
"account.unfollow": "Ne plu sekvi",
"account.unmute": "Malsilentigi @{name}",
"account.unmute_notifications_short": "Malsilentigu sciigojn",
"account.unmute_short": "Ne plu silentigi",
"account_note.placeholder": "Alklaku por aldoni noton",
"admin.dashboard.daily_retention": "Uzantoretenprocento lau tag post registro",
"admin.dashboard.monthly_retention": "Uzantoretenprocento lau monato post registro",
"admin.dashboard.retention.average": "Averaĝe",
"admin.dashboard.daily_retention": "Uzantoretenprocento laŭ tag post registro",
"admin.dashboard.monthly_retention": "Uzantoretenprocento laŭ monato post registro",
"admin.dashboard.retention.average": "Averaĝa",
"admin.dashboard.retention.cohort": "Monato de registriĝo",
"admin.dashboard.retention.cohort_size": "Novaj uzantoj",
"admin.impact_report.instance_accounts": "Kontoj kaj profiloj tio forigus",
"admin.impact_report.instance_accounts": "Kontojn kaj profilojn tio forigus",
"admin.impact_report.instance_followers": "Sekvantojn niaj uzantoj perdus",
"admin.impact_report.instance_follows": "Sekvantojn ties uzantoj perdus",
"admin.impact_report.title": "Influa reporto",
"alert.rate_limited.message": "Bonvolu reprovi poste {retry_time, time, medium}.",
"alert.rate_limited.title": "Mesaĝkvante limigita",
"alert.unexpected.message": "Neatendita eraro okazis.",
"alert.unexpected.title": "Aj!",
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alt-teksto",
"alt_text_modal.add_alt_text": "Aldoni alttekston",
"alt_text_modal.add_text_from_image": "Aldoni tekston de bildo",
@ -96,9 +103,9 @@
"alt_text_modal.describe_for_people_with_visual_impairments": "Priskribi ĉi tion por homoj kun vidaj malkapabloj…",
"alt_text_modal.done": "Farita",
"announcement.announcement": "Anonco",
"annual_report.summary.archetype.booster": "La Ĉasanto de Mojoso",
"annual_report.summary.archetype.booster": "La ĉasanto de mojoso",
"annual_report.summary.archetype.lurker": "La vidanto",
"annual_report.summary.archetype.oracle": "La Orakolo",
"annual_report.summary.archetype.oracle": "La orakolo",
"annual_report.summary.archetype.pollster": "La balotenketisto",
"annual_report.summary.archetype.replier": "La plej societema",
"annual_report.summary.followers.followers": "sekvantoj",
@ -108,11 +115,11 @@
"annual_report.summary.highlighted_post.by_reblogs": "plej diskonigita afiŝo",
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
"annual_report.summary.highlighted_post.possessive": "de {name}",
"annual_report.summary.most_used_app.most_used_app": "plej uzita apo",
"annual_report.summary.most_used_app.most_used_app": "plej uzita aplikaĵo",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "plej uzata kradvorto",
"annual_report.summary.most_used_hashtag.none": "Nenio",
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
"annual_report.summary.percentile.text": "<topLabel>Tio metas vin en la plej</topLabel><percentage></percentage><bottomLabel>de {domain} uzantoj.</bottomLabel>",
"annual_report.summary.percentile.text": "<topLabel>Tion metas vin en la plej</topLabel><percentage></percentage><bottomLabel>de {domain} uzantoj.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Ni ne diros al Zamenhof.",
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
"attachments_list.unprocessed": "(neprilaborita)",
@ -144,7 +151,7 @@
"closed_registrations_modal.description": "Krei konton ĉe {domain} aktuale ne eblas, tamen bonvole rimarku, ke vi ne bezonas konton specife ĉe {domain} por uzi Mastodon.",
"closed_registrations_modal.find_another_server": "Trovi alian servilon",
"closed_registrations_modal.preamble": "Mastodon estas malcentraliza, do sendepende de tio, kie vi kreas vian konton, vi povos sekvi kaj komuniki kun ĉiuj ajn el ĉi tiu servilo. Vi eĉ povas mem starigi propran servilon!",
"closed_registrations_modal.title": "Krei konton en Mastodon",
"closed_registrations_modal.title": "Registriĝi en Mastodon",
"column.about": "Pri",
"column.blocks": "Blokitaj uzantoj",
"column.bookmarks": "Legosignoj",
@ -162,18 +169,19 @@
"column.lists": "Listoj",
"column.mutes": "Silentigitaj uzantoj",
"column.notifications": "Sciigoj",
"column.public": "Fratara templinio",
"column.pins": "Montritaj afiŝoj",
"column.public": "Fratara tempolinio",
"column_back_button.label": "Reveni",
"column_header.hide_settings": "Kaŝi la agordojn",
"column_header.hide_settings": "Kaŝi agordojn",
"column_header.moveLeft_settings": "Movi kolumnon maldekstren",
"column_header.moveRight_settings": "Movi kolumnon dekstren",
"column_header.pin": "Fiksi",
"column_header.show_settings": "Montri la agordojn",
"column_header.show_settings": "Montri agordojn",
"column_header.unpin": "Malfiksi",
"column_search.cancel": "Nuligi",
"column_subheading.settings": "Agordoj",
"community.column_settings.local_only": "Nur loka",
"community.column_settings.media_only": "Nur vidaŭdaĵoj",
"community.column_settings.media_only": "Nur dovidaĵoj",
"community.column_settings.remote_only": "Nur fora",
"compose.language.change": "Ŝanĝi lingvon",
"compose.language.search": "Serĉi lingvojn...",
@ -183,18 +191,18 @@
"compose_form.direct_message_warning_learn_more": "Lerni pli",
"compose_form.encryption_warning": "La afiŝoj en Mastodon ne estas tutvoje ĉifritaj. Ne kunhavigu tiklajn informojn ĉe Mastodon.",
"compose_form.hashtag_warning": "Ĉi tiu afiŝo ne estos listigita en neniu kradvorto ĉar ĝi ne estas publika. Nur publikaj afiŝoj povas esti serĉitaj per kradvortoj.",
"compose_form.lock_disclaimer": "Via konto ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn afiŝojn nur al la sekvantoj.",
"compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.",
"compose_form.lock_disclaimer.lock": "ŝlosita",
"compose_form.placeholder": "Kion vi pensas?",
"compose_form.placeholder": "Pri kio vi pensas?",
"compose_form.poll.duration": "Daŭro de la balotenketo",
"compose_form.poll.multiple": "Multobla elekto",
"compose_form.poll.multiple": "Multebla elekto",
"compose_form.poll.option_placeholder": "Opcio {number}",
"compose_form.poll.single": "Ununura elekto",
"compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn",
"compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton",
"compose_form.poll.type": "Stilo",
"compose_form.publish": "Afiŝo",
"compose_form.publish_form": "Nova afiŝo",
"compose_form.publish": "Afiŝi",
"compose_form.publish_form": "Afiŝi",
"compose_form.reply": "Respondi",
"compose_form.save_changes": "Ĝisdatigi",
"compose_form.spoiler.marked": "Forigi la averton de enhavo",
@ -227,6 +235,9 @@
"confirmations.redraft.confirm": "Forigi kaj reskribi",
"confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun afiŝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.",
"confirmations.redraft.title": "Ĉu forigi kaj redakcii afiŝon?",
"confirmations.remove_from_followers.confirm": "Forigi sekvanton",
"confirmations.remove_from_followers.message": "{name} ne plu sekvos vin. Ĉu vi certas ke vi volas daŭri?",
"confirmations.remove_from_followers.title": "Forigi sekvanton?",
"confirmations.reply.confirm": "Respondi",
"confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
"confirmations.reply.title": "Ĉu superskribi afiŝon?",
@ -251,7 +262,7 @@
"disabled_account_banner.text": "Via konto {disabledAccount} estas nune malvalidigita.",
"dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.",
"dismissable_banner.dismiss": "Eksigi",
"dismissable_banner.explore_links": "Ĉi tiuj revuaĵoj plejkunhaviĝas en la fediverso hodiaŭ. Pli novaj revuaĵoj afiŝis de pli da homoj metis pli alte.",
"dismissable_banner.explore_links": "Ĉi tiuj revuaĵoj kunhaviĝas pleje en la fediverso hodiaŭ. Pli novaj revuaĵoj afiŝis de pli da homoj metis pli alte.",
"dismissable_banner.explore_statuses": "Ĉi tiuj afiŝoj populariĝas sur la fediverso hodiaŭ. Pli novaj afiŝoj kun pli da diskonigoj kaj stemuloj estas rangigitaj pli alte.",
"dismissable_banner.explore_tags": "Ĉi tiuj kradvortoj populariĝas sur la fediverso hodiaŭ. Kradvortoj, kiuj estas uzataj de pli malsamaj homoj, estas rangigitaj pli alte.",
"dismissable_banner.public_timeline": "Ĉi tiuj estas la plej ĵusaj publikaj afiŝoj de homoj en la fediverso, kiujn la homoj en {domain} sekvas.",
@ -260,11 +271,11 @@
"domain_block_modal.they_can_interact_with_old_posts": "Homoj de ĉi tiu servilo povas interagi kun viaj malnovaj afiŝoj.",
"domain_block_modal.they_cant_follow": "Neniu el ĉi tiu servilo povas sekvi vin.",
"domain_block_modal.they_wont_know": "Ili ne scios, ke ili estas blokitaj.",
"domain_block_modal.title": "Ĉu bloki la domajnon?",
"domain_block_modal.title": "Ĉu bloki domajnon?",
"domain_block_modal.you_will_lose_num_followers": "Vi perdos {followersCount, plural, one {{followersCountDisplay} sekvanton} other {{followersCountDisplay} sekvantojn}} kaj {followingCount, plural, one {{followingCountDisplay} homon, kiu vi sekvas} other {{followingCountDisplay} homojn, kiuj vi sekvas}}.",
"domain_block_modal.you_will_lose_relationships": "Vi perdos ĉiujn sekvantojn kaj homojn, kiujn vi sekvas de ĉi tiu servilo.",
"domain_block_modal.you_wont_see_posts": "Vi ne vidos afiŝojn aŭ sciigojn de uzantoj sur ĉi tiu servilo.",
"domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj apoj.",
"domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj aplikaĵoj.",
"domain_pill.activitypub_like_language": "ActivityPub estas kiel la lingvo kiun Mastodon parolas kun aliaj sociaj retoj.",
"domain_pill.server": "Servilo",
"domain_pill.their_handle": "Ilia identigo:",
@ -294,6 +305,9 @@
"emoji_button.search_results": "Serĉaj rezultoj",
"emoji_button.symbols": "Simboloj",
"emoji_button.travel": "Vojaĝoj kaj lokoj",
"empty_column.account_featured.me": "Vi ankoraŭ ne prezentis ion ajn. Ĉu vi sciis ke vi povas prezenti viajn afiŝojn, viajn plej uzitajn kradvortojn, kaj eĉ la kontojn de viaj amikoj sur via profilo?",
"empty_column.account_featured.other": "{acct} ne prezentis ion ajn. Ĉu vi sciis ke vi povas prezenti viajn afiŝojn, viajn plej uzitajn kradvortojn, kaj eĉ la kontojn de viaj amikoj sur via profilo?",
"empty_column.account_featured_other.unknown": "Ĉi tiu konto ankoraŭ ne montris ion ajn.",
"empty_column.account_hides_collections": "Ĉi tiu uzanto elektis ne disponebligi ĉi tiu informon",
"empty_column.account_suspended": "Konto suspendita",
"empty_column.account_timeline": "Neniuj afiŝoj ĉi tie!",
@ -378,6 +392,8 @@
"generic.saved": "Konservita",
"getting_started.heading": "Por komenci",
"hashtag.admin_moderation": "Malfermi fasadon de moderigado por #{name}",
"hashtag.browse": "Folii afiŝojn en #{hashtag}",
"hashtag.browse_from_account": "Folii afiŝojn de @{name} en #{hashtag}",
"hashtag.column_header.tag_mode.all": "kaj {additional}",
"hashtag.column_header.tag_mode.any": "aŭ {additional}",
"hashtag.column_header.tag_mode.none": "sen {additional}",
@ -390,7 +406,10 @@
"hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}",
"hashtag.counter_by_uses": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}",
"hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiaŭ",
"hashtag.feature": "Prezenti en profilo",
"hashtag.follow": "Sekvi la kradvorton",
"hashtag.mute": "Silentigi #{hashtag}",
"hashtag.unfeature": "Ne prezenti en profilo",
"hashtag.unfollow": "Ne plu sekvi la kradvorton",
"hashtags.and_other": "…kaj {count, plural,other {# pli}}",
"hints.profiles.followers_may_be_missing": "Sekvantoj por ĉi tiu profilo eble mankas.",
@ -461,6 +480,7 @@
"keyboard_shortcuts.my_profile": "Malfermu vian profilon",
"keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon",
"keyboard_shortcuts.open_media": "Malfermi vidaŭdaĵon",
"keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝliston",
"keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoroprofilo",
"keyboard_shortcuts.reply": "Respondu al afiŝo",
"keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado",
@ -544,6 +564,7 @@
"navigation_bar.mutes": "Silentigitaj uzantoj",
"navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.",
"navigation_bar.personal": "Persone",
"navigation_bar.pins": "Prezentitaj afiŝoj",
"navigation_bar.preferences": "Preferoj",
"navigation_bar.public_timeline": "Fratara templinio",
"navigation_bar.search": "Serĉi",
@ -839,6 +860,7 @@
"status.mute": "Silentigi @{name}",
"status.mute_conversation": "Silentigi konversacion",
"status.open": "Pligrandigu ĉi tiun afiŝon",
"status.pin": "Prezenti en profilo",
"status.read_more": "Legi pli",
"status.reblog": "Diskonigi",
"status.reblog_private": "Diskonigi kun la sama videbleco",
@ -863,6 +885,7 @@
"status.translated_from_with": "Tradukita el {lang} per {provider}",
"status.uncached_media_warning": "Antaŭrigardo ne disponebla",
"status.unmute_conversation": "Malsilentigi la konversacion",
"status.unpin": "Ne prezenti en profilo",
"subscribed_languages.lead": "Nur afiŝoj en elektitaj lingvoj aperos en viaj hejma kaj lista templinioj post la ŝanĝo. Elektu nenion por ricevi afiŝojn en ĉiuj lingvoj.",
"subscribed_languages.save": "Konservi ŝanĝojn",
"subscribed_languages.target": "Ŝanĝu abonitajn lingvojn por {target}",
@ -904,5 +927,9 @@
"video.mute": "Silentigi",
"video.pause": "Paŭzigi",
"video.play": "Ekigi",
"video.unmute": "Ne plu silentigi"
"video.skip_backward": "Preterpasi malantaŭen",
"video.skip_forward": "Preterpasi antaŭen",
"video.unmute": "Ne plu silentigi",
"video.volume_down": "Laŭteco Malpliigi",
"video.volume_up": "Laŭteco pliigi"
}

View file

@ -19,13 +19,19 @@
"account.block_domain": "Bac an àrainn {domain}",
"account.block_short": "Bac",
"account.blocked": "Ga bhacadh",
"account.blocking": "Ga bhacadh",
"account.cancel_follow_request": "Sguir dhen leantainn",
"account.copy": "Dèan lethbhreac dhen cheangal dhan phròifil",
"account.direct": "Thoir iomradh air @{name} gu prìobhaideach",
"account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris",
"account.domain_blocking": "Àrainn ga bacadh",
"account.edit_profile": "Deasaich a phròifil",
"account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris",
"account.endorse": "Brosnaich air a phròifil",
"account.featured": "Ga bhrosnachadh",
"account.featured.accounts": "Pròifilean",
"account.featured.hashtags": "Tagaichean hais",
"account.featured.posts": "Postaichean",
"account.featured_tags.last_status_at": "Am post mu dheireadh {date}",
"account.featured_tags.last_status_never": "Gun phost",
"account.follow": "Lean",
@ -36,6 +42,7 @@
"account.following": "A leantainn",
"account.following_counter": "{count, plural, one {A leantainn {counter}} other {A leantainn {counter}}}",
"account.follows.empty": "Chan eil an cleachdaiche seo a leantainn neach sam bith fhathast.",
"account.follows_you": "Gad leantainn",
"account.go_to_profile": "Tadhail air a phròifil",
"account.hide_reblogs": "Falaich na brosnachaidhean o @{name}",
"account.in_memoriam": "Mar chuimhneachan.",
@ -50,18 +57,23 @@
"account.mute_notifications_short": "Mùch na brathan",
"account.mute_short": "Mùch",
"account.muted": "Ga mhùchadh",
"account.muting": "Ga mhùchadh",
"account.mutual": "A leantainn càch a chèile",
"account.no_bio": "Cha deach tuairisgeul a sholar.",
"account.open_original_page": "Fosgail an duilleag thùsail",
"account.posts": "Postaichean",
"account.posts_with_replies": "Postaichean s freagairtean",
"account.remove_from_followers": "Thoir {name} air falbh on luchd-leantainn",
"account.report": "Dèan gearan mu @{name}",
"account.requested": "A feitheamh air aontachadh. Briog airson sgur dhen iarrtas leantainn",
"account.requested_follow": "Dhiarr {name} gad leantainn",
"account.requests_to_follow_you": "Iarrtasan leantainn",
"account.share": "Co-roinn a phròifil aig @{name}",
"account.show_reblogs": "Seall na brosnachaidhean o @{name}",
"account.statuses_counter": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}",
"account.unblock": "Dì-bhac @{name}",
"account.unblock_domain": "Dì-bhac an àrainn {domain}",
"account.unblock_domain_short": "Dì-bhac",
"account.unblock_short": "Dì-bhac",
"account.unendorse": "Na brosnaich air a phròifil",
"account.unfollow": "Na lean tuilleadh",
@ -83,6 +95,13 @@
"alert.unexpected.message": "Thachair mearachd ris nach robh dùil.",
"alert.unexpected.title": "Oich!",
"alt_text_badge.title": "Roghainn teacsa",
"alt_text_modal.add_alt_text": "Cuir roghainn teacsa ris",
"alt_text_modal.add_text_from_image": "Cuir teacsa on dealbh ris",
"alt_text_modal.cancel": "Sguir dheth",
"alt_text_modal.change_thumbnail": "Atharraich an dealbhag",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Mìnich seo dhan fheadhainn air a bheil ciorram claisneachd…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Mìnich seo dhan fheadhainn air a bheil cion-lèirsinne…",
"alt_text_modal.done": "Deiseil",
"announcement.announcement": "Brath-fios",
"annual_report.summary.archetype.booster": "Brosnaiche",
"annual_report.summary.archetype.lurker": "Eala-bhalbh",
@ -100,6 +119,7 @@
"annual_report.summary.most_used_hashtag.most_used_hashtag": "an taga hais a chaidh a cleachdadh as trice",
"annual_report.summary.most_used_hashtag.none": "Chan eil gin",
"annual_report.summary.new_posts.new_posts": "postaichean ùra",
"annual_report.summary.percentile.text": "<topLabel>Tha thu am measg</topLabel><percentage></percentage><bottomLabel>dhen luchd-cleachdaidh as cliùitiche air {domain}.</bottomLabel>",
"annual_report.summary.percentile.we_wont_tell_bernie": "Ainmeil nad latha s nad linn.",
"annual_report.summary.thanks": "Mòran taing airson conaltradh air Mastodon.",
"attachments_list.unprocessed": "(gun phròiseasadh)",
@ -125,6 +145,7 @@
"bundle_column_error.routing.body": "Cha do lorg sinn an duilleag a dhiarr thu. A bheil thu cinnteach gu bheil an t-URL ann am bàr an t-seòlaidh mar bu chòir?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Dùin",
"bundle_modal_error.message": "Chaidh rudeigin ceàrr le luchdadh na sgrìn seo.",
"bundle_modal_error.retry": "Feuch ris a-rithist",
"closed_registrations.other_server_instructions": "Air sgàth s gu bheil Mastodon sgaoilte, s urrainn dhut cunntas a chruthachadh air frithealaiche eile agus conaltradh ris an fhrithealaiche seo co-dhiù.",
"closed_registrations_modal.description": "Cha ghabh cunntas a chruthachadh air {domain} aig an àm seo ach thoir an aire nach fheum thu cunntas air {domain} gu sònraichte airson Mastodon a chleachdadh.",
@ -135,16 +156,20 @@
"column.blocks": "Cleachdaichean bacte",
"column.bookmarks": "Comharran-lìn",
"column.community": "Loidhne-ama ionadail",
"column.create_list": "Cruthaich liosta",
"column.direct": "Iomraidhean prìobhaideach",
"column.directory": "Rùraich sna pròifilean",
"column.domain_blocks": "Àrainnean bacte",
"column.edit_list": "Deasaich an liosta",
"column.favourites": "Annsachdan",
"column.firehose": "An saoghal poblach",
"column.follow_requests": "Iarrtasan leantainn",
"column.home": "Dachaigh",
"column.list_members": "Stiùir buill na liosta",
"column.lists": "Liostaichean",
"column.mutes": "Cleachdaichean mùchte",
"column.notifications": "Brathan",
"column.pins": "Postaichean brosnaichte",
"column.public": "Loidhne-ama cho-naisgte",
"column_back_button.label": "Air ais",
"column_header.hide_settings": "Falaich na roghainnean",
@ -153,6 +178,7 @@
"column_header.pin": "Prìnich",
"column_header.show_settings": "Seall na roghainnean",
"column_header.unpin": "Dì-phrìnich",
"column_search.cancel": "Sguir dheth",
"column_subheading.settings": "Roghainnean",
"community.column_settings.local_only": "Feadhainn ionadail a-mhàin",
"community.column_settings.media_only": "Meadhanan a-mhàin",
@ -195,13 +221,23 @@
"confirmations.edit.confirm": "Deasaich",
"confirmations.edit.message": "Ma nì thu deasachadh an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
"confirmations.edit.title": "A bheil thu airson sgrìobhadh thairis air a phost?",
"confirmations.follow_to_list.confirm": "Lean s cuir ris an liosta",
"confirmations.follow_to_list.message": "Feumaidh tu {name} a leantainn ron chur ri liosta.",
"confirmations.follow_to_list.title": "A bheil thu airson an cleachdaiche a leantainn?",
"confirmations.logout.confirm": "Clàraich a-mach",
"confirmations.logout.message": "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?",
"confirmations.logout.title": "A bheil thu airson clàradh a-mach?",
"confirmations.missing_alt_text.confirm": "Cuir roghainn teacsa ris",
"confirmations.missing_alt_text.message": "Tha meadhan sa phost seo aig nach eil roghainn teacsa. Ma chuireas tu tuairisgeul ris, s urrainn do bharrachd daoine an t-susbaint agad a ruigsinn.",
"confirmations.missing_alt_text.secondary": "Postaich e co-dhiù",
"confirmations.missing_alt_text.title": "A bheil thu airson roghainn teacsa a chur ris?",
"confirmations.mute.confirm": "Mùch",
"confirmations.redraft.confirm": "Sguab às ⁊ dèan dreachd ùr",
"confirmations.redraft.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às agus dreachd ùr a thòiseachadh? Caillidh tu gach annsachd is brosnachadh air agus thèid freagairtean dhan phost thùsail nan dìlleachdanan.",
"confirmations.redraft.title": "A bheil thu airson am post a sguabadh às ⁊ dreachd ùr a dhèanamh dheth?",
"confirmations.remove_from_followers.confirm": "Thoir an neach-leantainn air falbh",
"confirmations.remove_from_followers.message": "Cha lean {name} thu tuilleadh. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
"confirmations.remove_from_followers.title": "A bheil thu airson an neach-leantainn a thoirt air falbh?",
"confirmations.reply.confirm": "Freagair",
"confirmations.reply.message": "Ma bheir thu freagairt an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
"confirmations.reply.title": "A bheil thu airson sgrìobhadh thairis air a phost?",
@ -226,6 +262,10 @@
"disabled_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas aig an àm seo.",
"dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.",
"dismissable_banner.dismiss": "Leig seachad",
"dismissable_banner.explore_links": "Tha na naidheachdan seo gan co-roinneadh as trice air a cho-shaoghal an-diugh. Gheibh sgeulachdan-naidheachd nas ùire a chaidh a cho-roinneadh le barrachd dhaoine eadar-dhealaichte rangachadh nas àirde.",
"dismissable_banner.explore_statuses": "Tha fèill air na postaichean seo a fàs thar a cho-shaoghail an-diugh. Gheibh postaichean nas ùire le barrachd brosnaichean is annsachdan rangachadh nas àirde.",
"dismissable_banner.explore_tags": "Tha fèill air na tagaichean hais seo a fàs air a cho-shaoghal an-diugh. Gheibh tagaichean hais a tha gan cleachdadh le daoine eadar-dhealaichte rangachadh nas àirde.",
"dismissable_banner.public_timeline": "Seo na postaichean poblach as ùire o dhaoine air a cho-shaoghal tha gan leantainn le daoine air {domain}.",
"domain_block_modal.block": "Bac am frithealaiche",
"domain_block_modal.block_account_instead": "Bac @{name} na àite",
"domain_block_modal.they_can_interact_with_old_posts": "S urrainn do dhaoine a th air an fhrithealaiche seo eadar-ghabhail leis na seann-phostaichean agad.",
@ -265,6 +305,9 @@
"emoji_button.search_results": "Toraidhean an luirg",
"emoji_button.symbols": "Samhlaidhean",
"emoji_button.travel": "Siubhal ⁊ àitichean",
"empty_column.account_featured.me": "Chan eil thu a brosnachadh dad fhathast. An robh fios agad gur urrainn dhut na postaichean agad, na tagaichean hais a chleachdas tu as trice agus fiù s cunntasan do charaidean a bhrosnachadh air a phròifil agad?",
"empty_column.account_featured.other": "Chan eil {acct} a brosnachadh dad fhathast. An robh fios agad gur urrainn dhut na postaichean agad, na tagaichean hais a chleachdas tu as trice agus fiù s cunntasan do charaidean a bhrosnachadh air a phròifil agad?",
"empty_column.account_featured_other.unknown": "Chan eil an cunntas seo a brosnachadh dad fhathast.",
"empty_column.account_hides_collections": "Chuir an cleachdaiche seo roimhe nach eil am fiosrachadh seo ri fhaighinn",
"empty_column.account_suspended": "Chaidh an cunntas a chur à rèim",
"empty_column.account_timeline": "Chan eil post an-seo!",
@ -345,8 +388,12 @@
"footer.privacy_policy": "Poileasaidh prìobhaideachd",
"footer.source_code": "Seall am bun-tùs",
"footer.status": "Staid",
"footer.terms_of_service": "Teirmichean na seirbheise",
"generic.saved": "Chaidh a shàbhaladh",
"getting_started.heading": "Toiseach",
"hashtag.admin_moderation": "Fosgail eadar-aghaidh na maorsainneachd dha #{name}",
"hashtag.browse": "Rùraich na postaichean sa bheil #{hashtag}",
"hashtag.browse_from_account": "Rùraich na postaichean aig @{name} s #{hashtag} annta",
"hashtag.column_header.tag_mode.all": "agus {additional}",
"hashtag.column_header.tag_mode.any": "no {additional}",
"hashtag.column_header.tag_mode.none": "às aonais {additional}",
@ -359,7 +406,10 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} chom-pàirtiche} two {{counter} chom-pàirtiche} few {{counter} com-pàirtiche} other {{counter} com-pàirtiche}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} an-diugh",
"hashtag.feature": "Brosnaich air a phròifil",
"hashtag.follow": "Lean an taga hais",
"hashtag.mute": "Mùch #{hashtag}",
"hashtag.unfeature": "Na brosnaich air a phròifil",
"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.",
@ -388,6 +438,15 @@
"ignore_notifications_modal.not_followers_title": "A bheil thu airson na brathan o dhaoine nach eil gad leantainn a leigeil seachad?",
"ignore_notifications_modal.not_following_title": "A bheil thu airson na brathan o dhaoine nach eil thu a leantainn a leigeil seachad?",
"ignore_notifications_modal.private_mentions_title": "A bheil thu airson na brathan o iomraidhean phrìobhaideach gun iarraidh a leigeil seachad?",
"info_button.label": "Cobhair",
"info_button.what_is_alt_text": "<h1>Dè a th ann an roghainn teacsa?</h1> <p>Bheir roghainn teacsa tuairisgeulan dhealbhan dhan fheadhainn air a bheil cion lèirsinne, aig a bheil ceangal air leud-banna cumhang no a tha a sireadh barrachd co-theacsa.</p> <p>S urrainn dhut piseach a thoirt air an t-so-ruigsinneachd is an tuigse dhan a h-uile duine ma sgrìobhas tu roghainn teacsa a tha soilleir, goirid is cuspaireach.</p> <ul> <li>Gabh a-steach na nithean cudromach</li> <li>Dèan geàrr-chunntas dhen teacsa sna dealbhan</li> <li>Cleachd structar sheantansan àbhaisteach</li><li>\\nSeachainn fiosrachadh anabarrach</li> <li>Cùm an aire air treandaichean is puingean cudromach ann an dealbhan iom-fhillte (mar diagram no mapa)</li> </ul>",
"interaction_modal.action.favourite": "Airson leantainn air adhart, feumaidh tu a chur ris na h-annsachdan on chunntas agad.",
"interaction_modal.action.follow": "Airson leantainn air adhart, feumaidh tu a leantainn on chunntas agad.",
"interaction_modal.action.reblog": "Airson leantainn air adhart, feumaidh tu a bhrosnachadh on chunntas agad.",
"interaction_modal.action.reply": "Airson leantainn air adhart, feumaidh tu fhreagairt on chunntas agad.",
"interaction_modal.action.vote": "Airson leantainn air adhart, feumaidh tu bhòtadh on chunntas agad.",
"interaction_modal.go": "Siuthad",
"interaction_modal.no_account_yet": "Nach eil cunntas agad fhathast?",
"interaction_modal.on_another_server": "Air frithealaiche eile",
"interaction_modal.on_this_server": "Air an frithealaiche seo",
"interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan",
@ -395,6 +454,7 @@
"interaction_modal.title.reblog": "Brosnaich am post aig {name}",
"interaction_modal.title.reply": "Freagair dhan phost aig {name}",
"interaction_modal.title.vote": "Bhòt sa chunntas-bheachd aig {name}",
"interaction_modal.username_prompt": "M.e. {example}",
"intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}",
"intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}",
"intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}",
@ -420,6 +480,7 @@
"keyboard_shortcuts.my_profile": "Fosgail a phròifil agad",
"keyboard_shortcuts.notifications": "Fosgail colbh nam brathan",
"keyboard_shortcuts.open_media": "Fosgail meadhan",
"keyboard_shortcuts.pinned": "Fosgail liosta nam postaichean gam brosnachadh",
"keyboard_shortcuts.profile": "Fosgail pròifil an ùghdair",
"keyboard_shortcuts.reply": "Freagair do phost",
"keyboard_shortcuts.requests": "Fosgail liosta nan iarrtasan leantainn",
@ -429,6 +490,7 @@
"keyboard_shortcuts.toggle_hidden": "Seall/Falaich an teacsa fo rabhadh susbainte",
"keyboard_shortcuts.toggle_sensitivity": "Seall/Falaich na meadhanan",
"keyboard_shortcuts.toot": "Tòisich air post ùr",
"keyboard_shortcuts.translate": "airson post eadar-theangachadh",
"keyboard_shortcuts.unfocus": "Thoir am fòcas far raon teacsa an sgrìobhaidh/an luirg",
"keyboard_shortcuts.up": "Gluais suas air an liosta",
"lightbox.close": "Dùin",
@ -441,11 +503,32 @@
"link_preview.author": "Le {name}",
"link_preview.more_from_author": "Barrachd le {name}",
"link_preview.shares": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}",
"lists.add_member": "Cuir ris",
"lists.add_to_list": "Cuir ris an liosta",
"lists.add_to_lists": "Cuir {name} ri liostaichean",
"lists.create": "Cruthaich",
"lists.create_a_list_to_organize": "Cruthaich liosta ùr airson rian a chur air do dhachaigh",
"lists.create_list": "Cruthaich liosta",
"lists.delete": "Sguab às an liosta",
"lists.done": "Deiseil",
"lists.edit": "Deasaich an liosta",
"lists.exclusive": "Falaich na buill san dachaigh",
"lists.exclusive_hint": "Falaich an fheadhainn a tha air an liosta seo air loidhne-ama na dachaigh ach nach fhaic thu na postaichean aca dà thuras.",
"lists.find_users_to_add": "Lorg cleachdaichean ri chur ris",
"lists.list_members": "Buill na liosta",
"lists.list_members_count": "{count, plural, one {# bhall} two {# bhall} few {# buill} other {# ball}}",
"lists.list_name": "Ainm na liosta",
"lists.new_list_name": "Ainm na liosta ùire",
"lists.no_lists_yet": "Chan eil liosta ann fhathast.",
"lists.no_members_yet": "Chan eil ball ann fhathast.",
"lists.no_results_found": "Cha deach toradh a lorg.",
"lists.remove_member": "Thoir air falbh",
"lists.replies_policy.followed": "Cleachdaiche sam bith a leanas mi",
"lists.replies_policy.list": "Buill na liosta",
"lists.replies_policy.none": "Na seall idir",
"lists.save": "Sàbhail",
"lists.search": "Lorg",
"lists.show_replies_to": "Gabh a-staigh freagairtean o bhuill na liosta gu",
"load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}",
"loading_indicator.label": "Ga luchdadh…",
"media_gallery.hide": "Falaich",
@ -481,6 +564,7 @@
"navigation_bar.mutes": "Cleachdaichean mùchte",
"navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.",
"navigation_bar.personal": "Pearsanta",
"navigation_bar.pins": "Postaichean brosnaichte",
"navigation_bar.preferences": "Roghainnean",
"navigation_bar.public_timeline": "Loidhne-ama cho-naisgte",
"navigation_bar.search": "Lorg",
@ -497,6 +581,8 @@
"notification.annual_report.view": "Seall #Wrapstodon",
"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.favourite_pm": "Is annsa le {name} an t-iomradh prìobhaideach agad",
"notification.favourite_pm.name_and_others_with_link": "Is annsa le {name} s <a>{count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}</a> an t-iomradh prìobhaideach agad",
"notification.follow": "Tha {name} gad leantainn a-nis",
"notification.follow.name_and_others": "Lean {name} s <a>{count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}</a> thu",
"notification.follow_request": "Dhiarr {name} gad leantainn",
@ -601,7 +687,10 @@
"notifications_permission_banner.enable": "Cuir brathan deasga an comas",
"notifications_permission_banner.how_to_control": "Airson brathan fhaighinn nuair nach eil Mastodon fosgailte, cuir na brathan deasga an comas. Tha an smachd agad fhèin air dè na seòrsaichean de chonaltradh a ghineas brathan deasga leis a phutan {icon} gu h-àrd nuair a bhios iad air an cur an comas.",
"notifications_permission_banner.title": "Na caill dad gu bràth tuilleadh",
"onboarding.follows.done": "Deiseil",
"onboarding.follows.empty": "Gu mì-fhortanach, chan urrainn dhuinn toradh a shealltainn an-dràsta. Feuch gleus an luirg no duilleag an rùrachaidh airson daoine ri leantainn a lorg no feuch ris a-rithist an ceann tamaill.",
"onboarding.follows.search": "Lorg",
"onboarding.follows.title": "Lean daoine airson tòiseachadh",
"onboarding.profile.discoverable": "Bu mhath leam gun gabh a phròifil agam a rùrachadh",
"onboarding.profile.discoverable_hint": "Ma chuir thu romhad gun gabh a phròifil agad a rùrachadh air Mastodon, faodaidh na postaichean agad nochdadh ann an toraidhean luirg agus treandaichean agus dhfhaoidte gun dèid a phròifil agad a mholadh dhan fheadhainn aig a bheil ùidhean coltach ri d ùidhean-sa.",
"onboarding.profile.display_name": "Ainm-taisbeanaidh",
@ -627,6 +716,7 @@
"poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd",
"privacy.change": "Cuir gleus air prìobhaideachd a phuist",
"privacy.direct.long": "A h-uile duine air a bheil iomradh sa phost",
"privacy.direct.short": "Iomradh prìobhaideach",
"privacy.private.long": "An luchd-leantainn agad a-mhàin",
"privacy.private.short": "Luchd-leantainn",
"privacy.public.long": "Duine sam bith taobh a-staigh no a-muigh Mhastodon",
@ -638,6 +728,8 @@
"privacy_policy.title": "Poileasaidh prìobhaideachd",
"recommended": "Molta",
"refresh": "Ath-nuadhaich",
"regeneration_indicator.please_stand_by": "Fuirich ort.",
"regeneration_indicator.preparing_your_home_feed": "Ag ullachadh do dhachaighe…",
"relative_time.days": "{number}l",
"relative_time.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais",
"relative_time.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais",
@ -721,8 +813,11 @@
"search_results.accounts": "Pròifilean",
"search_results.all": "Na h-uile",
"search_results.hashtags": "Tagaichean hais",
"search_results.no_results": "Gun toradh.",
"search_results.no_search_yet": "Feuch an lorg thu postaichean, pròifilean no tagaichean hais.",
"search_results.see_all": "Seall na h-uile",
"search_results.statuses": "Postaichean",
"search_results.title": "Lorg “{q}”",
"server_banner.about_active_users": "Daoine a chleachd am frithealaiche seo rè an 30 latha mu dheireadh (Cleachdaichean gnìomhach gach mìos)",
"server_banner.active_users": "cleachdaichean gnìomhach",
"server_banner.administered_by": "Rianachd le:",
@ -764,6 +859,7 @@
"status.mute": "Mùch @{name}",
"status.mute_conversation": "Mùch an còmhradh",
"status.open": "Leudaich am post seo",
"status.pin": "Brosnaich air a phròifil",
"status.read_more": "Leugh an còrr",
"status.reblog": "Brosnaich",
"status.reblog_private": "Brosnaich leis an t-so-fhaicsinneachd tùsail",
@ -772,6 +868,7 @@
"status.reblogs.empty": "Chan deach am post seo a bhrosnachadh le duine sam bith fhathast. Nuair a bhrosnaicheas cuideigin e, nochdaidh iad an-seo.",
"status.redraft": "Sguab às ⁊ dèan dreachd ùr",
"status.remove_bookmark": "Thoir an comharra-lìn air falbh",
"status.remove_favourite": "Thoir air falbh o na h-annsachdan",
"status.replied_in_thread": "Freagairt do shnàithlean",
"status.replied_to": "Air {name} fhreagairt",
"status.reply": "Freagair",
@ -787,11 +884,15 @@
"status.translated_from_with": "Air eadar-theangachadh o {lang} le {provider}",
"status.uncached_media_warning": "Chan eil ro-shealladh ri fhaighinn",
"status.unmute_conversation": "Dì-mhùch an còmhradh",
"status.unpin": "Na brosnaich air a phròifil",
"subscribed_languages.lead": "Cha nochd ach na postaichean sna cànanan a thagh thu air loidhnichean-ama na dachaigh s nan liostaichean às dèidh an atharrachaidh seo. Na tagh gin ma tha thu airson na postaichean uile fhaighinn ge b e dè an cànan.",
"subscribed_languages.save": "Sàbhail na h-atharraichean",
"subscribed_languages.target": "Atharraich fo-sgrìobhadh nan cànan airson {target}",
"tabs_bar.home": "Dachaigh",
"tabs_bar.notifications": "Brathan",
"terms_of_service.effective_as_of": "Èifeachdach on {date}",
"terms_of_service.title": "Teirmichean na seirbheise",
"terms_of_service.upcoming_changes_on": "Tha atharraichean ri thighinn air {date}",
"time_remaining.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air fhàgail",
"time_remaining.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air fhàgail",
"time_remaining.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air fhàgail",
@ -822,6 +923,12 @@
"video.expand": "Leudaich a video",
"video.fullscreen": "Làn-sgrìn",
"video.hide": "Falaich a video",
"video.mute": "Mùch",
"video.pause": "Cuir na stad",
"video.play": "Cluich"
"video.play": "Cluich",
"video.skip_backward": "Geàrr leum air ais",
"video.skip_forward": "Geàrr leum air adhart",
"video.unmute": "Dì-mhùch",
"video.volume_down": "Lùghdaich an fhuaim",
"video.volume_up": "Cuir an fhuaim an àirde"
}

View file

@ -29,6 +29,7 @@
"account.enable_notifications": "Avvisami quando @{name} pubblica un post",
"account.endorse": "In evidenza sul profilo",
"account.featured": "In primo piano",
"account.featured.accounts": "Profili",
"account.featured.hashtags": "Hashtag",
"account.featured.posts": "Post",
"account.featured_tags.last_status_at": "Ultimo post il {date}",
@ -168,6 +169,7 @@
"column.lists": "Liste",
"column.mutes": "Utenti silenziati",
"column.notifications": "Notifiche",
"column.pins": "Post in evidenza",
"column.public": "Timeline federata",
"column_back_button.label": "Indietro",
"column_header.hide_settings": "Nascondi impostazioni",
@ -404,8 +406,10 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} partecipante} other {{counter} partecipanti}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} post}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} post}} oggi",
"hashtag.feature": "In evidenza sul profilo",
"hashtag.follow": "Segui l'hashtag",
"hashtag.mute": "Silenzia #{hashtag}",
"hashtag.unfeature": "Non mettere in evidenza sul profilo",
"hashtag.unfollow": "Smetti di seguire l'hashtag",
"hashtags.and_other": "…e {count, plural, other {# in più}}",
"hints.profiles.followers_may_be_missing": "I seguaci per questo profilo potrebbero essere mancanti.",
@ -476,6 +480,7 @@
"keyboard_shortcuts.my_profile": "Apre il tuo profilo",
"keyboard_shortcuts.notifications": "Apre la colonna delle notifiche",
"keyboard_shortcuts.open_media": "Apre i multimedia",
"keyboard_shortcuts.pinned": "Apri la lista dei post in evidenza",
"keyboard_shortcuts.profile": "Apre il profilo dell'autore",
"keyboard_shortcuts.reply": "Risponde al post",
"keyboard_shortcuts.requests": "Apre l'elenco delle richieste di seguirti",
@ -559,6 +564,7 @@
"navigation_bar.mutes": "Utenti silenziati",
"navigation_bar.opened_in_classic_interface": "Post, account e altre pagine specifiche sono aperti per impostazione predefinita nella classica interfaccia web.",
"navigation_bar.personal": "Personale",
"navigation_bar.pins": "Post in evidenza",
"navigation_bar.preferences": "Preferenze",
"navigation_bar.public_timeline": "Cronologia federata",
"navigation_bar.search": "Cerca",
@ -854,6 +860,7 @@
"status.mute": "Silenzia @{name}",
"status.mute_conversation": "Silenzia conversazione",
"status.open": "Espandi questo post",
"status.pin": "In evidenza sul profilo",
"status.read_more": "Leggi di più",
"status.reblog": "Reblog",
"status.reblog_private": "Reblog con visibilità originale",
@ -878,6 +885,7 @@
"status.translated_from_with": "Tradotto da {lang} utilizzando {provider}",
"status.uncached_media_warning": "Anteprima non disponibile",
"status.unmute_conversation": "Annulla silenziamento conversazione",
"status.unpin": "Non mettere in evidenza sul profilo",
"subscribed_languages.lead": "Solo i post nelle lingue selezionate appariranno sulla tua home e nelle cronologie dopo la modifica. Seleziona nessuno per ricevere i post in tutte le lingue.",
"subscribed_languages.save": "Salva le modifiche",
"subscribed_languages.target": "Modifica le lingue in cui sei iscritto per {target}",

View file

@ -58,7 +58,7 @@
"account.mute_short": "뮤트",
"account.muted": "뮤트됨",
"account.muting": "뮤트함",
"account.mutual": "서로 팔로우",
"account.mutual": "맞팔로우 중입니다",
"account.no_bio": "제공된 설명이 없습니다.",
"account.open_original_page": "원본 페이지 열기",
"account.posts": "게시물",

View file

@ -29,6 +29,7 @@
"account.enable_notifications": "佇 {name} PO文ê時通知我",
"account.endorse": "用個人資料推薦對方",
"account.featured": "精選ê",
"account.featured.accounts": "個人資料",
"account.featured.hashtags": "Hashtag",
"account.featured.posts": "PO文",
"account.featured_tags.last_status_at": "頂kái tī {date} Po文",
@ -405,8 +406,10 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} ê} other {{counter} ê}}參與ê",
"hashtag.counter_by_uses": "{count, plural, one {{counter} 篇} other {{counter} 篇}} PO文",
"hashtag.counter_by_uses_today": "Kin-á日有 {count, plural, one {{counter} 篇} other {{counter} 篇}} PO文",
"hashtag.feature": "Tī個人資料推薦",
"hashtag.follow": "跟tuè hashtag",
"hashtag.mute": "消音 #{hashtag}",
"hashtag.unfeature": "Mài tī個人資料推薦",
"hashtag.unfollow": "取消跟tuè hashtag",
"hashtags.and_other": "……kap 其他 {count, plural, other {# ê}}",
"hints.profiles.followers_may_be_missing": "Tsit ê個人資料ê跟tuè者資訊可能有落勾ê。",
@ -678,6 +681,10 @@
"notifications.policy.filter_not_followers_title": "無跟tuè lí ê lâng",
"notifications.policy.filter_not_following_hint": "直到lí手動允准in",
"notifications.policy.filter_not_following_title": "Lí無跟tuè ê lâng",
"notifications.policy.filter_private_mentions_hint": "通知ē受過濾除非是tī lí ê提起ê回應內底á是lí跟tuè送PO文ê lâng",
"notifications.policy.filter_private_mentions_title": "家kī直接送來ê私人提起",
"notifications.policy.title": "管理通知tuì……",
"notifications_permission_banner.enable": "啟用桌面ê通知",
"notifications_permission_banner.title": "逐ê著看",
"onboarding.follows.back": "轉去",
"onboarding.follows.done": "做好ah",
@ -705,6 +712,10 @@
"privacy.private.short": "跟tuè lí ê",
"privacy.public.long": "逐ê lâng無論佇Mastodon以內á是以外",
"privacy.public.short": "公開ê",
"privacy.unlisted.short": "恬靜ê公開",
"privacy_policy.last_updated": "上尾更新tī{date}",
"privacy_policy.title": "隱私權政策",
"recommended": "推薦",
"refresh": "Koh更新",
"regeneration_indicator.please_stand_by": "請sió等leh。",
"regeneration_indicator.preparing_your_home_feed": "Leh準備lí ê厝ê時間線……",
@ -715,6 +726,28 @@
"relative_time.full.minutes": "{number, plural, other {# 分鐘}}進前",
"relative_time.full.seconds": "{number, plural, other {# 秒}}進前",
"relative_time.hours": "{number}點鐘前",
"relative_time.just_now": "頭tú-á",
"relative_time.minutes": "{number} 分進前",
"relative_time.seconds": "{number} 秒進前",
"relative_time.today": "今á日",
"reply_indicator.attachments": "{count, plural, other {# ê附件}}",
"reply_indicator.cancel": "取消",
"reply_indicator.poll": "投票",
"report.block": "封鎖",
"report.categories.legal": "法律ê問題",
"report.categories.other": "其他",
"report.categories.spam": "Pùn-sò訊息",
"report.categories.violation": "內容違反tsi̍t ê以上服侍器ê規則",
"report.category.subtitle": "揀上合ê選項",
"report.category.title": "Kā guán講tsit ê {type} 有siánn-mih代誌",
"report.category.title_account": "個人資料",
"report.category.title_status": "PO文",
"report.close": "完成",
"report.comment.title": "Lí敢有別ê想beh hōo guán知ê",
"report.forward": "轉送kàu {target}",
"report.forward_hint": "Tsit ê口座是別ê服侍器ê。Kám iā beh送bô落名ê檢舉ê khóo-pih",
"report.mute": "消音",
"report.mute_explanation": "Lí bē koh看著in ê PO文。In iáu是ē當跟tuè lí看lí ê PO文而且m̄知in受消音。",
"report.next": "繼續",
"report.placeholder": "其他ê註釋",
"report.reasons.dislike": "我無kah意",
@ -728,6 +761,13 @@
"report.reasons.violation": "伊違反服侍器ê規定",
"report.reasons.violation_description": "Lí明知伊違反特定ê規定",
"report.rules.subtitle": "請揀所有符合ê選項",
"report.rules.title": "違反siánn-mih規則",
"report.statuses.subtitle": "請揀所有符合ê選項",
"report.statuses.title": "Kám有任何PO文證明tsit ê檢舉?",
"report.submit": "送出",
"search_popout.language_code": "ISO語言代碼",
"search_results.see_all": "看全部",
"search_results.statuses": "PO文",
"search_results.title": "Tshiau-tshuē「{q}」",
"status.translated_from_with": "用 {provider} 翻譯 {lang}"
}

View file

@ -19,13 +19,19 @@
"account.block_domain": "Bloquear domínio {domain}",
"account.block_short": "Bloquear",
"account.blocked": "Bloqueado",
"account.blocking": "A bloquear",
"account.cancel_follow_request": "Retirar pedido para seguir",
"account.copy": "Copiar hiperligação do perfil",
"account.direct": "Mencionar @{name} em privado",
"account.disable_notifications": "Parar de me notificar das publicações de @{name}",
"account.domain_blocking": "A bloquear domínio",
"account.edit_profile": "Editar perfil",
"account.enable_notifications": "Notificar-me das publicações de @{name}",
"account.endorse": "Destacar no perfil",
"account.featured": "Destaques",
"account.featured.accounts": "Perfis",
"account.featured.hashtags": "Etiquetas",
"account.featured.posts": "Publicações",
"account.featured_tags.last_status_at": "Última publicação em {date}",
"account.featured_tags.last_status_never": "Sem publicações",
"account.follow": "Seguir",
@ -36,6 +42,7 @@
"account.following": "A seguir",
"account.following_counter": "{count, plural, one {A seguir {counter}} other {A seguir {counter}}}",
"account.follows.empty": "Este utilizador ainda não segue ninguém.",
"account.follows_you": "Segue-te",
"account.go_to_profile": "Ir para o perfil",
"account.hide_reblogs": "Esconder partilhas impulsionadas de @{name}",
"account.in_memoriam": "Em Memória.",
@ -50,13 +57,17 @@
"account.mute_notifications_short": "Ocultar notificações",
"account.mute_short": "Ocultar",
"account.muted": "Ocultada",
"account.muting": "A silenciar",
"account.mutual": "Seguem-se mutuamente",
"account.no_bio": "Nenhuma descrição fornecida.",
"account.open_original_page": "Abrir a página original",
"account.posts": "Publicações",
"account.posts_with_replies": "Publicações e respostas",
"account.remove_from_followers": "Remover {name} dos seguidores",
"account.report": "Denunciar @{name}",
"account.requested": "A aguardar aprovação. Clica para cancelar o pedido para seguir",
"account.requested_follow": "{name} pediu para seguir-te",
"account.requests_to_follow_you": "Pediu para seguir-te",
"account.share": "Partilhar o perfil @{name}",
"account.show_reblogs": "Mostrar partilhas impulsionadas de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
@ -158,6 +169,7 @@
"column.lists": "Listas",
"column.mutes": "Utilizadores ocultados",
"column.notifications": "Notificações",
"column.pins": "Publicação destacada",
"column.public": "Cronologia federada",
"column_back_button.label": "Voltar",
"column_header.hide_settings": "Ocultar configurações",
@ -223,6 +235,9 @@
"confirmations.redraft.confirm": "Eliminar e reescrever",
"confirmations.redraft.message": "Tens a certeza de que queres eliminar e tornar a escrever esta publicação? Os favoritos e as publicações impulsionadas perder-se-ão e as respostas à publicação original ficarão órfãs.",
"confirmations.redraft.title": "Eliminar e reescrever publicação?",
"confirmations.remove_from_followers.confirm": "Remover seguidor",
"confirmations.remove_from_followers.message": "{name} vai parar de seguir-te. Tens a certeza que prentedes continuar?",
"confirmations.remove_from_followers.title": "Remover seguidor?",
"confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Se responderes agora, a mensagem que estás a escrever será substituída. Tens a certeza que pretendes continuar?",
"confirmations.reply.title": "Substituir publicação?",
@ -290,6 +305,9 @@
"emoji_button.search_results": "Resultados da pesquisa",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens e lugares",
"empty_column.account_featured.me": "Ainda não destacaste nada. Sabias que podes destacar as tuas publicações, as etiquetas que mais utilizas e até as contas dos teus amigos no teu perfil?",
"empty_column.account_featured.other": "{acct} ainda não colocou nada em destaque. Sabias que podes destacar as tuas publicações, as etiquetas que mais utilizas e até as contas dos teus amigos no teu perfil?",
"empty_column.account_featured_other.unknown": "Esta conta ainda não colocou nada em destaque.",
"empty_column.account_hides_collections": "Este utilizador escolheu não disponibilizar esta informação",
"empty_column.account_suspended": "Conta suspensa",
"empty_column.account_timeline": "Sem publicações por aqui!",
@ -374,6 +392,8 @@
"generic.saved": "Guardado",
"getting_started.heading": "Primeiros passos",
"hashtag.admin_moderation": "Abrir interface de moderação para #{name}",
"hashtag.browse": "Ver publicações em #{hashtag}",
"hashtag.browse_from_account": "Ver publicações de @{name} em #{hashtag}",
"hashtag.column_header.tag_mode.all": "e {additional}",
"hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sem {additional}",
@ -388,6 +408,7 @@
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicação} other {{counter} publicações}} hoje",
"hashtag.feature": "Destacar no perfil",
"hashtag.follow": "Seguir #etiqueta",
"hashtag.mute": "Silenciar #{hashtag}",
"hashtag.unfeature": "Não destacar no perfil",
"hashtag.unfollow": "Deixar de seguir #etiqueta",
"hashtags.and_other": "…e {count, plural, other {mais #}}",
@ -459,6 +480,7 @@
"keyboard_shortcuts.my_profile": "abrir o teu perfil",
"keyboard_shortcuts.notifications": "abrir a coluna das notificações",
"keyboard_shortcuts.open_media": "abrir multimédia",
"keyboard_shortcuts.pinned": "Abrir lista de publicações destacadas",
"keyboard_shortcuts.profile": "abrir o perfil do autor",
"keyboard_shortcuts.reply": "responder à publicação",
"keyboard_shortcuts.requests": "abrir a lista dos pedidos de seguidor",
@ -542,6 +564,7 @@
"navigation_bar.mutes": "Utilizadores ocultados",
"navigation_bar.opened_in_classic_interface": "Por norma, publicações, contas e outras páginas específicas são abertas na interface web clássica.",
"navigation_bar.personal": "Pessoal",
"navigation_bar.pins": "Publicações destacadas",
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Cronologia federada",
"navigation_bar.search": "Pesquisar",
@ -837,6 +860,7 @@
"status.mute": "Ocultar @{name}",
"status.mute_conversation": "Ocultar conversa",
"status.open": "Expandir esta publicação",
"status.pin": "Destacar no perfil",
"status.read_more": "Ler mais",
"status.reblog": "Impulsionar",
"status.reblog_private": "Impulsionar com a visibilidade original",
@ -861,6 +885,7 @@
"status.translated_from_with": "Traduzido do {lang} usando {provider}",
"status.uncached_media_warning": "Pré-visualização não disponível",
"status.unmute_conversation": "Desocultar esta conversa",
"status.unpin": "Não destacar no perfil",
"subscribed_languages.lead": "Após a alteração, apenas as publicações nos idiomas selecionados aparecerão na cronologia da tua página inicial e das tuas listas. Não seleciones nenhum idioma para receberes publicações em todos os idiomas.",
"subscribed_languages.save": "Guardar alterações",
"subscribed_languages.target": "Alterar idiomas subscritos para {target}",
@ -899,6 +924,12 @@
"video.expand": "Expandir vídeo",
"video.fullscreen": "Ecrã completo",
"video.hide": "Ocultar vídeo",
"video.mute": "Silenciar",
"video.pause": "Pausar",
"video.play": "Reproduzir"
"video.play": "Reproduzir",
"video.skip_backward": "Saltar para trás",
"video.skip_forward": "Saltar para a frente",
"video.unmute": "Ativar som",
"video.volume_down": "Diminuir volume",
"video.volume_up": "Aumentar volume"
}

View file

@ -639,7 +639,7 @@
"notifications.column_settings.admin.sign_up": "Người mới tham gia:",
"notifications.column_settings.alert": "Báo trên máy tính",
"notifications.column_settings.favourite": "Lượt thích:",
"notifications.column_settings.filter_bar.advanced": "Toàn bộ",
"notifications.column_settings.filter_bar.advanced": "Hiện tất cả loại thông báo",
"notifications.column_settings.filter_bar.category": "Thanh lọc nhanh",
"notifications.column_settings.follow": "Người theo dõi:",
"notifications.column_settings.follow_request": "Yêu cầu theo dõi:",
@ -654,10 +654,10 @@
"notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc",
"notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc",
"notifications.column_settings.update": "Sửa tút:",
"notifications.filter.all": "Toàn bộ",
"notifications.filter.all": "Tất cả",
"notifications.filter.boosts": "Đăng lại",
"notifications.filter.favourites": "Lượt thích",
"notifications.filter.follows": "Đang theo dõi",
"notifications.filter.follows": "Người theo dõi mới",
"notifications.filter.mentions": "Lượt nhắc đến",
"notifications.filter.polls": "Kết quả bình chọn",
"notifications.filter.statuses": "Cập nhật từ những người bạn theo dõi",
@ -667,21 +667,21 @@
"notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.",
"notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó",
"notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.",
"notifications.policy.accept": "Có",
"notifications.policy.accept": "Cho phép",
"notifications.policy.accept_hint": "Hiện trong thông báo",
"notifications.policy.drop": "Không",
"notifications.policy.drop": "Bỏ qua",
"notifications.policy.drop_hint": "Loại bỏ vĩnh viễn",
"notifications.policy.filter": "Lọc",
"notifications.policy.filter_hint": "Cho vào mục thông báo bị lọc",
"notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên",
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản",
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt máy chủ",
"notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}",
"notifications.policy.filter_new_accounts_title": "Tài khoản mới",
"notifications.policy.filter_not_followers_hint": "Bao gồm những người đã theo dõi bạn ít hơn {days, plural, other {# ngày}}",
"notifications.policy.filter_new_accounts_title": "Người mới tạo tài khoản",
"notifications.policy.filter_not_followers_hint": "Gồm những ai theo dõi bạn ít hơn {days, plural, other {# ngày}}",
"notifications.policy.filter_not_followers_title": "Những người không theo dõi bạn",
"notifications.policy.filter_not_following_hint": "Cho tới khi bạn duyệt họ",
"notifications.policy.filter_not_following_title": "Những người bạn không theo dõi",
"notifications.policy.filter_private_mentions_hint": "Trừ khi trả lời lượt nhắc từ bạn hoặc nếu bạn có theo dõi người gửi",
"notifications.policy.filter_private_mentions_hint": "Trừ khi đó là trả lời lượt nhắc từ bạn hoặc nếu bạn có theo dõi người gửi",
"notifications.policy.filter_private_mentions_title": "Lượt nhắn riêng không mong muốn",
"notifications.policy.title": "Quản lý thông báo từ…",
"notifications_permission_banner.enable": "Cho phép thông báo trên màn hình",

View file

@ -29,6 +29,7 @@
"account.enable_notifications": "当 @{name} 发布嘟文时通知我",
"account.endorse": "在个人资料中推荐此用户",
"account.featured": "精选",
"account.featured.accounts": "个人资料",
"account.featured.hashtags": "话题",
"account.featured.posts": "嘟文",
"account.featured_tags.last_status_at": "上次发言于 {date}",
@ -62,6 +63,7 @@
"account.open_original_page": "打开原始页面",
"account.posts": "嘟文",
"account.posts_with_replies": "嘟文和回复",
"account.remove_from_followers": "从关注者中移除 {name}",
"account.report": "举报 @{name}",
"account.requested": "正在等待对方同意。点击取消发送关注请求",
"account.requested_follow": "{name} 向你发送了关注请求",
@ -167,6 +169,7 @@
"column.lists": "列表",
"column.mutes": "已隐藏的用户",
"column.notifications": "通知",
"column.pins": "精选嘟文",
"column.public": "跨站公共时间线",
"column_back_button.label": "返回",
"column_header.hide_settings": "隐藏设置",
@ -233,6 +236,7 @@
"confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。",
"confirmations.redraft.title": "是否删除并重新编辑嘟文?",
"confirmations.remove_from_followers.confirm": "移除关注者",
"confirmations.remove_from_followers.message": "{name} 将停止关注您。您确定要继续吗?",
"confirmations.remove_from_followers.title": "移除关注者?",
"confirmations.reply.confirm": "回复",
"confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?",

View file

@ -3,17 +3,17 @@ import { IntlProvider } from 'react-intl';
import { MemoryRouter } from 'react-router';
import type { RenderOptions } from '@testing-library/react';
// eslint-disable-next-line import/no-extraneous-dependencies
import { render as rtlRender } from '@testing-library/react';
import { IdentityContext } from './identity_context';
beforeEach(() => {
global.requestIdleCallback = jest
.fn()
.mockImplementation((fn: () => void) => {
fn();
});
beforeAll(() => {
global.requestIdleCallback = vi.fn((cb: IdleRequestCallback) => {
// @ts-expect-error IdleRequestCallback expects an argument of type IdleDeadline,
// but that doesn't exist in this environment.
cb();
return 0;
});
});
function render(
@ -46,7 +46,6 @@ function render(
}
// re-export everything
// eslint-disable-next-line import/no-extraneous-dependencies
export * from '@testing-library/react';
// override render method

View file

@ -1 +0,0 @@
import '@testing-library/jest-dom';

View file

@ -99,7 +99,7 @@ module User::Omniauthable
external: true,
account_attributes: {
username: ensure_unique_username(ensure_valid_username(auth.uid)),
display_name: auth.info.full_name || auth.info.name || [auth.info.first_name, auth.info.last_name].join(' '),
display_name: display_name_from_auth(auth),
},
}
end
@ -121,5 +121,10 @@ module User::Omniauthable
temp_username = starting_username.gsub(/[^a-z0-9_]+/i, '')
temp_username.truncate(30, omission: '')
end
def display_name_from_auth(auth)
display_name = auth.info.full_name || auth.info.name || [auth.info.first_name, auth.info.last_name].join(' ')
display_name.truncate(Account::DISPLAY_NAME_LENGTH_LIMIT, omission: '')
end
end
end

View file

@ -117,7 +117,7 @@ class User < ApplicationRecord
validates_with RegistrationFormTimeValidator, on: :create
validates :website, absence: true, on: :create
validates :confirm_password, absence: true, on: :create
validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? }
validates :date_of_birth, presence: true, date_of_birth: true, on: :create, if: -> { Setting.min_age.present? && !bypass_registration_checks? }
validate :validate_role_elevation
scope :account_not_suspended, -> { joins(:account).merge(Account.without_suspended) }
@ -149,7 +149,7 @@ class User < ApplicationRecord
delegate :can?, to: :role
attr_reader :invite_code, :date_of_birth
attr_writer :external, :bypass_invite_request_check, :current_account
attr_writer :external, :bypass_registration_checks, :current_account
def self.those_who_can(*any_of_privileges)
matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id)
@ -524,8 +524,8 @@ class User < ApplicationRecord
!!@external
end
def bypass_invite_request_check?
@bypass_invite_request_check
def bypass_registration_checks?
@bypass_registration_checks
end
def sanitize_role
@ -573,7 +573,7 @@ class User < ApplicationRecord
end
def invite_text_required?
Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_invite_request_check?
Setting.require_invite_text && !open_registrations? && !invited? && !external? && !bypass_registration_checks?
end
def trigger_webhooks

View file

@ -51,7 +51,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
def usage
{
users: {
active_month: object.active_user_count(4),
active_month: limited_federation? ? 0 : object.active_user_count(4),
},
}
end
@ -123,6 +123,8 @@ class REST::InstanceSerializer < ActiveModel::Serializer
search: {
enabled: Chewy.enabled?,
},
limited_federation: limited_federation?,
}
end
@ -152,6 +154,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer
markdown.render(Setting.closed_registrations_message) if Setting.closed_registrations_message.present?
end
def limited_federation?
Rails.configuration.x.limited_federation_mode
end
def markdown
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, no_images: true)
end

View file

@ -22,7 +22,7 @@ class ActivityPub::FetchAllRepliesWorker
@root_status.touch(:fetched_replies_at)
Rails.logger.debug { "FetchAllRepliesWorker - #{@root_status.uri}: Fetching all replies for status: #{@root_status}" }
uris_to_fetch, n_pages = get_replies(@root_status.uri, MAX_PAGES, options)
uris_to_fetch, n_pages = get_root_replies(@root_status.uri, options)
return if uris_to_fetch.nil?
fetched_uris = uris_to_fetch.clone.to_set
@ -49,20 +49,39 @@ class ActivityPub::FetchAllRepliesWorker
private
def get_replies(status_uri, max_pages, options = {})
replies_collection_or_uri = get_replies_uri(status_uri)
# @param status [String, Hash]
# status URI, or the prefetched body of the Note object
def get_replies(status, max_pages, options = {})
replies_collection_or_uri = get_replies_uri(status)
return if replies_collection_or_uri.nil?
ActivityPub::FetchAllRepliesService.new.call(status_uri, replies_collection_or_uri, max_pages: max_pages, **options.deep_symbolize_keys)
ActivityPub::FetchAllRepliesService.new.call(value_or_id(status), replies_collection_or_uri, max_pages: max_pages, **options.deep_symbolize_keys)
end
def get_replies_uri(parent_status_uri)
fetch_resource(parent_status_uri, true)&.fetch('replies', nil)
# Get the URI of the replies collection of a status
#
# @param parent_status [String, Hash]
# status URI, or the prefetched body of the Note object
def get_replies_uri(parent_status)
resource = parent_status.is_a?(Hash) ? parent_status : fetch_resource(parent_status, true)
resource&.fetch('replies', nil)
rescue => e
Rails.logger.info { "FetchAllRepliesWorker - #{@root_status.uri}: Caught exception while resolving replies URI #{parent_status_uri}: #{e} - #{e.message}" }
Rails.logger.info { "FetchAllRepliesWorker - #{@root_status.uri}: Caught exception while resolving replies URI #{parent_status}: #{e} - #{e.message}" }
# Raise if we can't get the collection for top-level status to trigger retry
raise e if parent_status_uri == @root_status.uri
raise e if value_or_id(parent_status) == @root_status.uri
nil
end
# Get the root status, updating the status without fetching it twice
#
# @param root_status_uri [String]
def get_root_replies(root_status_uri, options = {})
root_status_body = fetch_resource(root_status_uri, true)
raise RuntimeError("FetchAllRepliesWorker - #{@root_status.uri}: Root status could not be fetched") if root_status_body.nil?
FetchReplyWorker.perform_async(root_status_uri, { **options, prefetched_body: root_status_body })
get_replies(root_status_body, MAX_PAGES, options)
end
end

View file

@ -7,6 +7,6 @@ class FetchReplyWorker
sidekiq_options queue: 'pull', retry: 3
def perform(child_url, options = {})
FetchRemoteStatusService.new.call(child_url, **options.deep_symbolize_keys)
FetchRemoteStatusService.new.call(child_url, **options.symbolize_keys)
end
end

View file

@ -3,14 +3,16 @@
if ENV['REDIS_NAMESPACE']
es_configured = ENV['ES_ENABLED'] == 'true' || ENV.fetch('ES_HOST', 'localhost') != 'localhost' || ENV.fetch('ES_PORT', '9200') != '9200' || ENV.fetch('ES_PASS', 'password') != 'password'
warn <<~MESSAGE
WARNING: the REDIS_NAMESPACE environment variable is deprecated and will be removed in Mastodon 4.4.0.
message = <<~MESSAGE
ERROR: the REDIS_NAMESPACE environment variable is no longer supported, and a migration is required.
Please see documentation at https://github.com/mastodon/redis_namespace_migration
MESSAGE
warn <<~MESSAGE if es_configured && !ENV['ES_PREFIX']
message += <<~MESSAGE if es_configured && !ENV['ES_PREFIX']
In addition, as REDIS_NAMESPACE is being used as a prefix for Elasticsearch, please do not forget to set ES_PREFIX to "#{ENV.fetch('REDIS_NAMESPACE')}".
MESSAGE
abort message
end

View file

@ -23,6 +23,8 @@ gd:
models:
account:
attributes:
fields:
fields_with_values_missing_labels: " tha luachan ann air a bheil leubail a dhìth"
username:
invalid: " chan fhaod ach litrichean gun sràcan, àireamhan s fo-loidhnichean a bhith na bhroinn"
reserved: " tha e glèidhte"
@ -38,12 +40,23 @@ gd:
attributes:
data:
malformed: " chan eil cruth dligheach air"
list_account:
attributes:
account_id:
taken: " tha seo air an liosta mu thràth"
must_be_following: " feumaidh e a bhith na chunntas ga leantainn"
status:
attributes:
reblog:
taken: " tha seo aig a phost mu thràth"
terms_of_service:
attributes:
effective_date:
too_soon: " tha seo ro aithghearr, feumaidh e a bhith nas anmoiche na %{date}"
user:
attributes:
date_of_birth:
below_limit: " tha seo fo chrìoch na h-aoise"
email:
blocked: " tha seo a chleachdadh solaraiche puist-d nach eil ceadaichte"
unreachable: " tha coltas nach eil seo ann"

View file

@ -319,6 +319,7 @@ eo:
create: Krei anoncon
title: Nova anonco
preview:
disclaimer: Pro uzantoj ne povas elekti ne ricevi ilin, retpoŝtaj sciigoj devus esti uzata nur por gravaj anoncoj kiel memaj breĉoj de datumo aŭ sciigoj pri la fermado de la servilo.
explanation_html: 'La retpoŝto estos sendita al <strong>%{display_count} uzantoj</strong>. La jena teksto estos inkluzivita en la retmesaĝon:'
title: Antaŭrigardu sciigan anoncon
publish: Publikigi
@ -482,13 +483,33 @@ eo:
fasp:
debug:
callbacks:
created_at: Kreita je
delete: Forigi
ip: IP-adreso
request_body: Enhavo de la peto
title: Revokoj de ĝustigado
providers:
active: Aktivaj
base_url: Funda URL
callback: Revoko
delete: Forigi
edit: Donanto de ŝanĝo
finish_registration: Fini registradon
name: Nomo
providers: Donantoj
public_key_fingerprint: Publikoŝloŝila fingrospuro
registration_requested: Registrado postulita
registrations:
confirm: Konfirmi
description: Vi ricevis registradon de FASP. Malakcepti ĝin se vi ne komencis ĉi tiun. Se vi ja, zorge kompari nomon kaj ŝloŝilafingrospuron antaŭ ol konfirmas la registradon.
reject: Malakcepti
title: Konfirmi registradon de FASP
save: Konservi
select_capabilities: Elekti mandatojn
sign_in: Ensaluti
status: Stato
title: Fediversaj helpaj servicaj donantoj
title: FASP
follow_recommendations:
description_html: "<strong>Sekvorekomendoj helpi novajn uzantojn rapide trovi interesa enhavo</strong>. Ili rekalkulitas ĉiutage lau interagoj kaj sekvantokvantoj."
language: Por la lingvo
@ -882,6 +903,8 @@ eo:
system_checks:
database_schema_check:
message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite
elasticsearch_analysis_index_mismatch:
message_html: Agordoj de la indeksa analizilo estas malmodernaj. Bonvolu plenumi <code>tootctl search deploy --only-mapping --only=%{value}</code>
elasticsearch_health_red:
message_html: Elasticsearch peniko estas malsana (ruĝa statuso), trajtoj de serĉo malhaveblas
elasticsearch_health_yellow:

View file

@ -220,6 +220,7 @@ gd:
enable_user: Cuir an cleachdaiche an comas
memorialize_account: Dèan cuimhneachan dhen chunntas
promote_user: Àrdaich an cleachdaiche
publish_terms_of_service: Foillsich teirmichean na seirbheise
reject_appeal: Diùlt an t-ath-thagradh
reject_user: Diùlt an cleachdaiche
remove_avatar_user: Thoir air falbh an t-avatar
@ -284,6 +285,7 @@ gd:
enable_user_html: Chuir %{name} an clàradh a-steach an comas dhan chleachdaiche %{target}
memorialize_account_html: Rinn %{name} duilleag cuimhneachain dhen chunntas aig %{target}
promote_user_html: Dhàrdaich %{name} an cleachdaiche %{target}
publish_terms_of_service_html: Dhfhoillsich %{name} ùrachadh air teirmichean na seirbheise
reject_appeal_html: Dhiùlt %{name} an t-ath-thagradh air co-dhùnadh na maorsainneachd o %{target}
reject_user_html: Dhiùlt %{name} an clàradh o %{target}
remove_avatar_user_html: Thug %{name} avatar aig %{target} air falbh
@ -313,6 +315,7 @@ gd:
title: Sgrùd an loga
unavailable_instance: "(chan eil ainm na h-àrainn ri fhaighinn)"
announcements:
back: Air ais gu na brathan
destroyed_msg: Chaidh am brath-fios a sguabadh às!
edit:
title: Deasaich am brath-fios
@ -321,6 +324,10 @@ gd:
new:
create: Cruthaich brath-fios
title: Brath-fios ùr
preview:
disclaimer: Air sgàth s nach urrainn dhan luchd-cleachdaidh an diùltadh, bu chòir dhut na brathan air a phost-d a chuingeachadh air brathan-fios cudromach mar briseadh a-steach air dàta pearsanta no brath-fios mu dhùnadh an fhrithealaiche.
explanation_html: 'Thèid am post-d seo a chur gu <strong>%{display_count} luchd-cleachdaidh</strong>. Thèid an teacsa seo a ghabhail a-staigh sa phost-d:'
title: Ro-shealladh air a bhrath-fhios
publish: Foillsich
published_msg: Chaidh am brath-fios fhoillseachadh!
scheduled_for: Chaidh a chur air an sgeideal %{time}
@ -489,6 +496,36 @@ gd:
new:
title: Ion-phortaich bacaidhean àrainne
no_file: Cha deach faidhle a thaghadh
fasp:
debug:
callbacks:
created_at: Air a chruthachadh
delete: Sguab às
ip: Seòladh IP
request_body: Bodhaig an iarrtais
title: Gairmean air ais dì-bhugachaidh
providers:
active: Gnìomhach
base_url: URL bunaiteach
callback: Gairm air ais
delete: Sguab às
edit: Deasaich an solaraiche
finish_registration: Crìochnaich an clàradh
name: Ainm
providers: Solaraichean
public_key_fingerprint: Lorg-meòir na h-iuchrach poblaiche
registration_requested: Chaidh clàradh iarraidh
registrations:
confirm: Dearbh
description: Fhuair thu clàradh o FASP. Diùlt e mur an do chuir thu fhèin seo a dol. Mas e tusa a bh ann, dèan coimeas cùramach air ainm agus lorg-meòir na h-iuchraiche mus dearbh thu an clàradh.
reject: Diùlt
title: Dearbh an clàradh FASP
save: Sàbhail
select_capabilities: Tagh comasan
sign_in: Clàraich a-steach
status: Staid
title: Fediverse Auxiliary Service Providers
title: FASP
follow_recommendations:
description_html: "<strong>Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath</strong>. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo nan àite. Thèid an àireamhachadh às ùr gach latha, stèidhichte air na cunntasan air an robh an conaltradh as trice s an luchd-leantainn ionadail as motha sa chànan."
language: Dhan chànan
@ -894,6 +931,8 @@ gd:
system_checks:
database_schema_check:
message_html: Tha imrichean stòir-dhàta ri dhèiligeadh ann. Ruith iad a dhèanamh cinnteach gum bi giùlan na h-aplacaid mar a bhiodhte n dùil
elasticsearch_analysis_index_mismatch:
message_html: Tha roghainnean anailis an inneacs Elasticsearch ro shean. Ruith <code>tootctl search deploy --only-mapping --only=%{value}</code>
elasticsearch_health_red:
message_html: Tha droch-shlàinte air bagaid Elasticsearch (staid dhearg), chan eil gleusan an luirg ri fhaighinn
elasticsearch_health_yellow:
@ -953,6 +992,38 @@ gd:
search: Lorg
title: Tagaichean hais
updated_msg: Chaidh roghainnean an taga hais ùrachadh
terms_of_service:
back: Air ais gu teirmichean na seirbheise
changelog: Na chaidh atharrachadh
create: Cleachd feadhainn agad fhèin
current: Làithreach
draft: Dreachd
generate: Cleachd teamplaid
generates:
action: Gin
chance_to_review_html: "<strong>Cha dèid na teirmichean na seirbheise air an gintinn fhoillseachadh gu fèin-obrachail.</strong> Bidh teans agad gus lèirmheas a dhèanamh air an toradh. Lean am fiosrachadh riatanach airson leantainn air adhart."
explanation_html: Tha an teamplaid airson teirmichean na seirbheise ga sholar a chùm fiosrachaidh a-mhàin agus cha bu chòir a mheas mar chomhairle laghail air cuspair sam bith. Gabh comhairle o neach-lagha agad fhèin air an t-suidheachadh agad s air ceistean sam bith agad mun lagh.
title: Suidheachadh teirmichean na seirbheise
going_live_on_html: Beò, èifeachdach on %{date}
history: Eachdraidh
live: Beò
no_history: Cha deach atharrachadh sam bith air teirmichean na seirbheise a chlàradh fhathast.
no_terms_of_service_html: Cha do rèitich thu teirmichean na seirbheise aig an àm seo. Tha teirmichean seirbheise ag amas nithean a dhèanamh soilleir agus do dhìon o uallaichean ann an connspaidean leis an luchd-cleachdaidh agad a dhèireas ma dhfhaoidte.
notified_on_html: Fhuair an luchd-cleachdaidh brath %{date}
notify_users: Cuir brath dhan luchd-chleachdaidh
preview:
explanation_html: 'Thèid am post-d seo a chur gu <strong>%{display_count} luchd-cleachdaidh</strong> a chlàraich ro %{date}. Thèid an teacsa seo a ghabhail a-staigh sa phost-d:'
send_preview: Cuir ro-shealladh gu %{email}
send_to_all:
few: Cuir %{display_count} puist-d
one: Cuir %{display_count} phost-d
other: Cuir %{display_count} post-d
two: Cuir %{display_count} phost-d
title: Ro-shealladh air brath-fios mu theirmichean na seirbheise
publish: Foillsich
published_on_html: Air fhoillseachadh %{date}
save_draft: Sàbhail dreachd
title: Teirmichean na seirbheise
title: Rianachd
trends:
allow: Ceadaich
@ -1192,6 +1263,7 @@ gd:
set_new_password: Suidhich facal-faire ùr
setup:
email_below_hint_html: Thoir sùil air pasgan an spama agad no iarr fear eile. S urrainn dhut an seòladh puist-d agad a chur ceart ma tha e ceàrr.
email_settings_hint_html: Briog air a cheangal a chuir sinn gu %{email} airson tòiseachadh air Mastodon a chleachdadh. Fuirichidh sinn ort an-seo.
link_not_received: Nach dfhuair thu ceangal?
new_confirmation_instructions_sent: Gheibh thu post-d ùr le ceangal dearbhaidh an ceann corra mionaid!
title: Thoir sùil air a bhogsa a-steach agad
@ -1200,6 +1272,7 @@ gd:
title: Clàraich a-steach gu %{domain}
sign_up:
manual_review: Nì na maoir againn lèirmheas a làimh air clàraidhean air %{domain}. Airson ar cuideachadh le làimhseachadh do chlàraidh, sgrìobh beagan mu do dhèidhinn agus carson a tha thu ag iarraidh cunntas air %{domain}.
preamble: Le cunntas air an fhrithealaiche Mastodon seo, s urrainn dhut neach sam bith a leantainn air a cho-shaoghal, ge b e càit a bheil an cunntas aca-san ga òstadh.
title: Suidhicheamaid %{domain} dhut.
status:
account_status: Staid a chunntais
@ -1211,6 +1284,8 @@ gd:
view_strikes: Seall na rabhaidhean a fhuair an cunntas agad roimhe
too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist.
use_security_key: Cleachd iuchair tèarainteachd
user_agreement_html: Leugh mi agus tha mi ag aontachadh ri <a href="%{terms_of_service_path}" target="_blank">teirmichean na seirbheise</a> agus am <a href="%{privacy_policy_path}" target="_blank">poileasaidh prìobhaideachd</a>
user_privacy_agreement_html: Leugh mi is tha mi ag aontachadh ris a <a href="%{privacy_policy_path}" target="_blank">phoileasaidh prìobhaideachd</a>
author_attribution:
example_title: Ball-sampaill teacsa
hint_html: An sgrìobh thu naidheachdan no bloga taobh a-muigh Mhastodon? Stiùirich mar a thèid iomradh a thoirt ort nuair a bhios na h-artaigilean agad gan co-roinneadh air Mastodon.
@ -1749,6 +1824,7 @@ gd:
scheduled_statuses:
over_daily_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte an-diugh
over_total_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte
too_soon: feumaidh an ceann-latha a bhith san àm ri teachd
self_destruct:
lead_html: Gu mì-fhortanach, thèid <strong>%{domain}</strong> a dhùnadh gu buan. Ma tha cunntas agad ann, chan urrainn dhut cumail a gol ga chleachdadh ach s urrainn dhut lethbhreac-glèidhidh dhen dàta agad iarraidh fhathast.
title: Tha am frithealaiche seo gu bhith dùnadh
@ -1919,6 +1995,8 @@ gd:
too_late: Tha e ro anmoch airson an rabhadh seo ath-thagradh
tags:
does_not_match_previous_name: " chan eil seo a-rèir an ainm roimhe"
terms_of_service:
title: Teirmichean na seirbheise
themes:
contrast: Mastodon (iomsgaradh àrd)
default: Mastodon (dorcha)
@ -1950,6 +2028,10 @@ gd:
recovery_instructions_html: Ma chailleas tu an t-inntrigeadh dhan fhòn agad, s urrainn dhut fear dhe na còdan aisig gu h-ìosal a chleachdadh airson faighinn a-steach dhan chunntas agad a-rithist. <strong>Cùm na còdan aisig sàbhailte</strong>. Mar eisimpleir, s urrainn dhut an clò-bhualadh s a chumail far a bheil thu a cumail na sgrìobhainnean cudromach eile agad.
webauthn: Iuchraichean tèarainteachd
user_mailer:
announcement_published:
description: 'Tha na rianairean aig %{domain} a dèanamh brath-fios:'
subject: Brath-fios na seirbheise
title: Brath-fios na seirbheise %{domain}
appeal_approved:
action: Roghainnean a chunntais
explanation: Chaidh aontachadh ris an ath-thagradh agad air an rabhadh o %{strike_date} a chuir thu a-null %{appeal_date}. Tha an cunntas agad ann an deagh-chor a-rithist.
@ -1979,6 +2061,15 @@ gd:
further_actions_html: Mur e thu fhèin a bh ann, mholamaid gun %{action} sa bhad agus gun cuir thu an dearbhadh dà-cheumnach an comas airson an cunntas agad a chumail tèarainte.
subject: Chaidh an cunntas agad inntrigeadh o sheòladh IP ùr
title: Clàradh a-steach ùr
terms_of_service_changed:
agreement: Ma chumas tu a dol a chleachdadh %{domain}, aontaichidh tu ris na teirmichean seo. Mur aontaich thu ris na teirmichean ùra, s urrainn dhut crìoch a chur air d aonta le %{domain} uair sam bith le sguabadh às a chunntais agad.
changelog: 'Ann am priobadh na sùla, seo na tha an t-ùrachadh seo a ciallachadh dhut:'
description: 'Tha thu a faighinn a phuist-d seo air sgàth s gu bheil sinn ag atharrachadh teirmichean na seirbheise againn airson %{domain}. Bidh na h-ùrachaidhean seo èifeachdach an %{date}. Mholamaid gun dèan thu lèirmheas air na teirmichean ùra slàna an-seo:'
description_html: Tha thu a faighinn a phuist-d seo air sgàth s gu bheil sinn ag atharrachadh teirmichean na seirbheise againn airson %{domain}. Bidh na h-ùrachaidhean seo èifeachdach an <strong>%{date}</strong>. Mholamaid gun dèan thu lèirmheas air <a href="%{path}" target="_blank">na teirmichean ùra slàna an-seo</a>.
sign_off: Sgioba %{domain}
subject: Ùrachaidhean air teirmichean na seirbheise againn
subtitle: Tha teirmichean na seirbheise aig %{domain} gan atharrachadh
title: Naidheachd cudromach
warning:
appeal: Cuir ath-thagradh a-null
appeal_description: Ma tha thu dhen bheachd gur e mearachd a th ann, s urrainn dhut ath-thagradh a chur a-null gun sgioba aig %{instance}.

View file

@ -903,6 +903,8 @@ it:
system_checks:
database_schema_check:
message_html: Ci sono migrazioni del database in attesa. Sei pregato di eseguirle per assicurarti che l'applicazione si comporti come previsto
elasticsearch_analysis_index_mismatch:
message_html: Le impostazioni dell'analizzatore di indice Elasticsearch sono obsolete. Si prega di eseguire <code>tootctl search deploy --only-mapping --only=%{value}</code>
elasticsearch_health_red:
message_html: Il cluster Elasticsearch non è integro (stato rosso), le funzionalità di ricerca non sono disponibili
elasticsearch_health_yellow:

View file

@ -316,6 +316,7 @@ lv:
create: Izveidot paziņojumu
title: Jauns paziņojums
preview:
disclaimer: Tā kā lietotāji nevar atteikties no e-pasta paziņojumiem, tos vajadzētu izmantot tikai svarīgiem paziņojumiem, piemēram, personīgo datu noplūdi vai servera aizvēršanas paziņojumiem.
explanation_html: 'E-pasta ziņojums tiks nosūtīts <strong>%{display_count} lietotājiem</strong>. Šis teksts tiks iekļauts e-pasta ziņojumā:'
title: Priekšskatīt paziņojumu
publish: Publicēt

View file

@ -56,7 +56,7 @@ eo:
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj)
setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive
setting_default_sensitive: Tiklaj vidaŭdaĵoj estas implicite kaŝitaj kaj povas esti montritaj per alklako
setting_default_sensitive: La tiklaj vidaŭdaĵoj estas implicite kaŝitaj kaj povas esti malkaŝitaj per alklako
setting_display_media_default: Kaŝi plurmediojn markitajn kiel tiklaj
setting_display_media_hide_all: Ĉiam kaŝi la vidaŭdaĵojn
setting_display_media_show_all: Ĉiam montri la vidaŭdaĵojn
@ -89,6 +89,7 @@ eo:
favicon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan Mastodon-favikono kun propra bildsimbolo.
mascot: Anstatauigi la ilustraĵon en la altnivela retinterfaco.
media_cache_retention_period: Amaskomunikilaj dosieroj de afiŝoj faritaj de foraj uzantoj estas konservitaj en kaŝmemoro en via servilo. Kiam agordita al pozitiva valoro, amaskomunikilaro estos forigita post la specifita nombro da tagoj. Se la amaskomunikilaro-datumoj estas petitaj post kiam ĝi estas forigita, ĝi estos re-elŝutita, se la fonta enhavo ankoraŭ disponeblas. Pro limigoj pri kiom ofte ligaj antaŭrigardaj kartoj enketas retejojn de ekstera liveranto, oni rekomendas agordi ĉi tiun valoron al almenaŭ 14 tagoj, aŭ ligaj antaŭrigardaj kartoj ne estos ĝisdatigitaj laŭpostule antaŭ tiu tempo.
min_age: Uzantoj demandos konfirmi siajn naskiĝtagon dum registrado
peers_api_enabled: Listo de domajnaj nomoj kiujn ĉi tiu servilo renkontis en la fediverso. Neniuj datumoj estas inkluditaj ĉi tie pri ĉu vi federacias kun donita servilo, nur ke via servilo scias pri ĝi. Ĉi tio estas uzata de servoj kiuj kolektas statistikojn pri federacio en ĝenerala signifo.
profile_directory: La profilujo listigas ĉiujn uzantojn kiu volonte malkovrebli.
require_invite_text: Kiam registroj bezonas permanan aprobon, igi la "Kial vi volas aliĝi?" tekstoenigon deviga anstau nedeviga
@ -137,10 +138,14 @@ eo:
text: Povas esti strukturita per sintakso Markdown-a.
terms_of_service_generator:
admin_email: Legalaj sciigoj povas esti kontraŭsciigoj, postulaĵoj de tribunalo, postulaĵoj pri forigo, kaj postulaĵoj de la policaro.
arbitration_address: Povas esti la sama kiel fizika adreso supre, aŭ "N/A" se oni uzas retpoŝton.
arbitration_website: Povas esti retformularo, aŭ "N/A" se oni uzas retpoŝton.
choice_of_law: Urbo, regiono, teritorio aŭ ŝtato, kies internaj substantivaj leĝoj regos iujn kaj ĉiujn asertojn.
dmca_address: Por tenantoj en Usono, uzu la adreson registritan en la DMCA Designated Agenŭ Directory. Registrolibro de poŝtskatoloj haveblas per direkta postulo, uzu la DMCA Designated Agent Post Office Box Waiver Request por retpoŝti la Ofico de Kopirajto kaj priskribu, ke vi estas hejm-trovigita administranto por enhavo kaj devas uzi Poŝtskatolon por forigi vian hejmadreson de publika vido.
dmca_email: Povas esti la sama retpoŝtadreso uzita en "Retpoŝtadreso por legalaj sciigoj" supre.
domain: Unika identigilo de la retaj servicoj, ke vi provizas.
jurisdiction: Enlistigu la landon, kie loĝas kiu pagas la fakturojn. Se ĝi estas kompanio aŭ alia ento, listigu la landon, kie ĝi estas enkorpigita, kaj la urbon, regionon, teritorion aŭ ŝtaton laŭeble.
min_age: Ne devus esti malsupre la minimuma aĝo postulita de la leĝoj de via jurisdikcio.
user:
chosen_languages: Kun tio markita nur mesaĝoj en elektitaj lingvoj aperos en publikaj tempolinioj
date_of_birth: Ni devas certigi, ke vi estas almenaŭ %{age} por uzi Mastodon. Ni ne konservos ĉi tion.

View file

@ -3,6 +3,7 @@ gd:
simple_form:
hints:
account:
attribution_domains: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta.
discoverable: Dhfhaoidte gun dèid na postaichean poblach s a phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a phròifil agad a mholadh do chàch.
display_name: D ainm slàn no spòrsail.
fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu.
@ -59,6 +60,7 @@ gd:
setting_display_media_default: Falaich meadhanan ris a bheil comharra gu bheil iad frionasach
setting_display_media_hide_all: Falaich na meadhanan an-còmhnaidh
setting_display_media_show_all: Seall na meadhanan an-còmhnaidh
setting_system_scrollbars_ui: Chan obraich seo ach air brabhsairean desktop stèidhichte air Safari s Chrome
setting_use_blurhash: Tha caiseadan stèidhichte air dathan nan nithean lèirsinneach a chaidh fhalach ach chan fhaicear am mion-fhiosrachadh
setting_use_pending_items: Falaich ùrachaidhean na loidhne-ama air cùlaibh briogaidh seach a bhith a sgroladh nam postaichean gu fèin-obrachail
username: Faodaidh tu litrichean, àireamhan is fo-loidhnichean a chleachdadh
@ -73,6 +75,7 @@ gd:
filters:
action: Tagh na thachras nuair a bhios post a maidseadh na criathraige
actions:
blur: Falaich na meadhanan air cùlaibh rabhaidh gun a bhith a falach an teacsa fhèin
hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir
warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dhinnseas tiotal na criathraige
form_admin_settings:
@ -86,6 +89,7 @@ gd:
favicon: WEBP, PNG, GIF no JPG. Tar-àithnidh seo favicon bunaiteach Mhastodon le ìomhaigheag ghnàthaichte.
mascot: Tar-àithnidh seo an sgead-dhealbh san eadar-aghaidh-lìn adhartach.
media_cache_retention_period: Thèid faidhlichean meadhain o phostaichean a chruthaich cleachdaichean cèine a chur ri tasgadan an fhrithealaiche agad. Nuair a shuidhicheas tu seo air luach dearbh, thèid na meadhanan a sguabadh às às dèidh na h-àireimh de làithean a shònraich thu. Ma tha dàta meadhain ga iarraidh às dèidh a sguabaidh às, thèid a luchdadh a-nuas a-rithist ma tha susbaint an tùis ri fhaighinn fhathast. Ri linn cuingeachaidhean air mar a cheasnaicheas cairtean ro-sheallaidh làraichean threas-phàrtaidhean, mholamaid gun suidhich thu an luach seo air 14 làithean ar a char as giorra no cha dèid an ùrachadh nuair a thèid an iarraidh ron àm sin.
min_age: Thèid iarraidh air an luchd-cleachdaidh gun dearbh iad an là-breith rè a chlàraidh
peers_api_enabled: Seo liosta de dhainmean àrainne ris an do thachair am frithealaiche seo sa cho-shaoghal. Chan eil dàta sam bith ga ghabhail a-staigh an-seo mu a bheil thu co-naisgte ri frithealaiche sònraichte gus nach eil ach dìreach gu bheil am frithealaiche agad eòlach air. Thèid seo a chleachdadh le seirbheisean a chruinnicheas stadastaireachd air a cho-nasgadh san fharsaingeachd.
profile_directory: Seallaidh eòlaire nam pròifil liosta dhen luchd-cleachdaidh a dhaontaich gun gabh an rùrachadh.
require_invite_text: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil
@ -128,8 +132,23 @@ gd:
show_application: Gidheadh, chì thu dè an aplacaid a dhfhoillsich am post agad an-còmhnaidh.
tag:
name: Mar eisimpleir, s urrainn dhut measgachadh de litrichean mòra s beaga a chleachdadh ach an gabh a leughadh nas fhasa
terms_of_service:
changelog: "S urrainn dhut structar a chur air le co-chàradh Markdown."
effective_date: Faodaidh ceann-ama reusanta a bhith rud sam bith eadar 10 is 30 latha on cheann-là a chuireas tu brath-fios dhan luchd-cleachdaidh agad.
text: "S urrainn dhut structar a chur air le co-chàradh Markdown."
terms_of_service_generator:
admin_email: Gabhaidh sanasan laghail a-staigh brathan-àichidh, òrduighean cùirte, iarrtasan toirt air falbh agus iarrtasan co-èigneachadh an lagha.
arbitration_address: Faodaidh e a bhith co-ionnan ris an t-seòladh fhiosaigeach gu h-àrd no “N/A” ma tha thu a cleachdadh post-d.
arbitration_website: Faodaidh e a bhith na fhoirm-lìn no “N/A” ma tha thu a cleachdadh post-d.
choice_of_law: Am baile, an sgìre, an ranntair no an stàit a riaghlas na laghan brìoghmhor sònraichte aige tagraidhean sam bith.
dmca_address: Airson gnìomharaichean sna SA, cleachd an seòladh a tha clàraichte san DMCA Designated Agent Directory. Faodaidh tu cleachdadh seòladh P.O. Box iarraidh, cleachd DMCA Designated Agent Post Office Box Waiver Request airson post-d a chur gun Copyright Office agus mìnich gur e “home-based content moderator” a th annad agus eagal ort ro dhìoghaltas no dìoladh-fiach air do ghnìomhan agus gum feum thu P.O. Box a chleachdadh airson seòladh do dhachaigh fhalach o shealladh poblach.
dmca_email: Faodaidh tu an t-aon phost-d a chleachdadh s a chleachd thu airson “Seòladh puist-d airson sanasan laghail” gu h-àrd.
domain: Aithneachadh àraidh dhen t-seirbheis air loidhne a tha thu a solar.
jurisdiction: Innis an dùthaich far a bheil an neach a phàigheas na bilichean a fuireach. Mas e companaidh no eintiteas eile a th ann, innis an dùthaich far a bheil e corpaichte agus am baile, sgìre, ranntair no stàit mar a tha iomchaidh.
min_age: Cha bu chòir seo a bhith fon aois as lugha a dhiarras laghain an t-uachdranais laghail agad.
user:
chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach
date_of_birth: Feumaidh sinn dèanamh cinnteach gu bheil thu %{age} bliadhna(ichean) a dhaois air a char as lugha mus cleachd thu Mastodon. Cha chlàraich sinn seo.
role: Stiùiridh an dreuchd dè na ceadan a bhios aig cleachdaiche.
user_role:
color: An datha a bhios air an dreuchd air feadh na h-eadar-aghaidh, na RGB san fhòrmat sia-dheicheach
@ -143,6 +162,7 @@ gd:
url: Far an dèid na tachartasan a chur
labels:
account:
attribution_domains: Na làraichean-lìn a dhfhaodas iomradh a thoirt ort
discoverable: Brosnaich a phròifil is postaichean agad sna h-algairimean rùrachaidh
fields:
name: Leubail
@ -219,8 +239,10 @@ gd:
setting_display_media_show_all: Seall na h-uile
setting_expand_spoilers: Leudaich postaichean ris a bheil rabhadh susbainte an-còmhnaidh
setting_hide_network: Falaich an graf sòisealta agad
setting_missing_alt_text_modal: Faic còmhradh dearbhaidh mus postaich thu meadhan às aonais roghainn teacsa
setting_reduce_motion: Ìslich an gluasad sna beòthachaidhean
setting_system_font_ui: Cleachd cruth-clò bunaiteach an t-siostaim
setting_system_scrollbars_ui: Seall bàr-sgrolaidh bunaiteach an t-siostaim
setting_theme: Ùrlar na làraich
setting_trends: Seall na treandaichean an-diugh
setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de chuideigin a leantainn
@ -239,6 +261,7 @@ gd:
name: Taga hais
filters:
actions:
blur: Falaich na meadhanan le rabhadh
hide: Falaich uile gu lèir
warn: Falaich le rabhadh
form_admin_settings:
@ -252,6 +275,7 @@ gd:
favicon: Favicon
mascot: Suaichnean gnàthaichte (dìleabach)
media_cache_retention_period: Ùine glèidhidh aig tasgadan nam meadhanan
min_age: Riatanas aoise as lugha
peers_api_enabled: Foillsich liosta nam frithealaichean a chaidh a rùrachadh san API
profile_directory: Cuir eòlaire nam pròifil an comas
registrations_mode: Cò dhfhaodas clàradh
@ -315,7 +339,24 @@ gd:
name: Taga hais
trendable: Faodaidh an taga hais seo nochdadh am measg nan treandaichean
usable: Faodaidh postaichean an taga hais seo a chleachdadh gu h-ionadail
terms_of_service:
changelog: Dè tha air atharrachadh?
effective_date: Ceann-là èifeachd
text: Teirmichean na seirbheise
terms_of_service_generator:
admin_email: Seòladh puist-d airson sanasan laghail
arbitration_address: Seòladh fiosaigeach airson sanasan eadar-bhreith
arbitration_website: Làrach-lìn airson sanasan eadar-bhreith a chur a-null
choice_of_law: Taghadh an lagha
dmca_address: Seòladh fiosaigeach airson sanasan DMCA/còir-lethbhreac
dmca_email: Seòladh puist-d airson sanasan DMCA/còir-lethbhreac
domain: Àrainn
jurisdiction: Uachdranas laghail
min_age: An aois as lugha
user:
date_of_birth_1i: Latha
date_of_birth_2i: Mìos
date_of_birth_3i: Bliadhna
role: Dreuchd
time_zone: Roinn-tìde
user_role:

View file

@ -339,6 +339,7 @@ lv:
terms_of_service_generator:
admin_email: E-pasta adrese juridiskiem paziņojumiem
choice_of_law: Likuma izvēle
dmca_email: E-pasta adrese DMCA/autortiesību pārstāvju sūdzību iesniegšanai
domain: Domēna vārds
min_age: Mazākais pieļaujamais vecums
user:

View file

@ -1165,7 +1165,7 @@ vi:
welcome_title: Chào mừng, %{name}!
wrong_email_hint: Nếu địa chỉ email đó không chính xác, bạn có thể đổi lại trong cài đặt tài khoản.
delete_account: Xóa tài khoản
delete_account_html: Nếu bạn muốn xóa tài khoản của mình, hãy <a href="%{path}">yêu cầu tại đây</a>. Bạn sẽ được yêu cầu xác nhận.
delete_account_html: Thực hiện <a href="%{path}">xóa tài khoản</a> của bạn.
description:
prefix_invited_by_user: "@%{name} mời bạn tham gia máy chủ Mastodon này!"
prefix_sign_up: Tham gia Mastodon ngay hôm nay!
@ -1826,7 +1826,7 @@ vi:
unlisted_long: Không hiện trên bảng tin máy chủ
statuses_cleanup:
enabled: Tự động xóa những tút cũ
enabled_hint: Tự động xóa các tút của bạn khi chúng tới thời điểm nhất định, trừ những trường hợp ngoại lệ bên dưới
enabled_hint: Sau thời điểm nhất định, trừ những trường hợp ngoại lệ bên dưới
exceptions: Ngoại lệ
explanation: Số lượng tút sẽ tăng dần theo năm tháng. Bạn nên xóa những tút cũ khi tới một thời điểm nhất định.
ignore_favs: Bỏ qua số lượt thích

17
config/vite.json Normal file
View file

@ -0,0 +1,17 @@
{
"all": {
"sourceCodeDir": "app/javascript",
"additionalEntrypoints": ["~/{icons,images}/**/*", "~/styles/*.scss"],
"watchAdditionalPaths": []
},
"development": {
"autoBuild": true,
"publicOutputDir": "vite-dev",
"port": 3036
},
"test": {
"autoBuild": true,
"publicOutputDir": "vite-test",
"port": 3037
}
}

View file

@ -1,5 +1,7 @@
// @ts-check
import path from 'node:path';
import js from '@eslint/js';
import { globalIgnores } from 'eslint/config';
import formatjs from 'eslint-plugin-formatjs';
@ -204,7 +206,9 @@ export default tseslint.config([
'import/ignore': ['node_modules', '\\.(css|scss|json)$'],
'import/resolver': {
typescript: {},
typescript: {
project: path.resolve(import.meta.dirname, './tsconfig.json'),
},
},
},
@ -247,6 +251,7 @@ export default tseslint.config([
'config/webpack/**',
'app/javascript/mastodon/performance.js',
'app/javascript/mastodon/test_setup.js',
'app/javascript/mastodon/test_helpers.tsx',
'app/javascript/**/__tests__/**',
],
},
@ -387,9 +392,7 @@ export default tseslint.config([
files: ['**/__tests__/*.js', '**/__tests__/*.jsx'],
languageOptions: {
globals: {
...globals.jest,
},
globals: globals.vitest,
},
},
]);

View file

@ -1,28 +0,0 @@
/** @type {import('jest').Config} */
const config = {
testEnvironment: 'jsdom',
testPathIgnorePatterns: [
'<rootDir>/node_modules/',
'<rootDir>/vendor/',
'<rootDir>/config/',
'<rootDir>/log/',
'<rootDir>/public/',
'<rootDir>/tmp/',
],
setupFilesAfterEnv: ['<rootDir>/app/javascript/mastodon/test_setup.js'],
collectCoverageFrom: [
'app/javascript/mastodon/**/*.{js,jsx,ts,tsx}',
'!app/javascript/mastodon/features/emoji/emoji_compressed.js',
'!app/javascript/mastodon/service_worker/entry.js',
'!app/javascript/mastodon/test_setup.js',
],
// Those packages are ESM, so we need them to be processed by Babel
transformIgnorePatterns: ['/node_modules/(?!(redent|strip-indent)/)'],
coverageDirectory: '<rootDir>/coverage',
moduleDirectories: ['node_modules', '<rootDir>/app/javascript'],
moduleNameMapper: {
'\\.svg\\?react$': '<rootDir>/app/javascript/__mocks__/svg.js',
},
};
module.exports = config;

View file

@ -79,7 +79,14 @@ module Mastodon::CLI
account = Account.new(username: username)
password = SecureRandom.hex
user = User.new(email: options[:email], password: password, agreement: true, role_id: role_id, confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true)
user = User.new(
email: options[:email],
password: password,
agreement: true,
role_id: role_id,
confirmed_at: options[:confirmed] ? Time.now.utc : nil,
bypass_registration_checks: true
)
if options[:reattach]
account = Account.find_local(username) || Account.new(username: username)

View file

@ -552,7 +552,7 @@ namespace :mastodon do
password = SecureRandom.hex(16)
owner_role = UserRole.find_by(name: 'Owner')
user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true, role: owner_role)
user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_registration_checks: true, role: owner_role)
user.save(validate: false)
user.approve!

View file

@ -22,14 +22,14 @@
"format": "prettier --write --log-level warn .",
"format:check": "prettier --check --ignore-unknown .",
"i18n:extract": "formatjs extract 'app/javascript/**/*.{js,jsx,ts,tsx}' --ignore '**/*.d.ts' --out-file app/javascript/mastodon/locales/en.json --format config/formatjs-formatter.js",
"jest": "cross-env NODE_ENV=test jest",
"lint:js": "cd $INIT_CWD && eslint --cache --report-unused-disable-directives",
"lint:css": "stylelint \"**/*.{css,scss}\"",
"lint": "yarn lint:js && yarn lint:css",
"postversion": "git push --tags",
"postinstall": "test -d node_modules/husky && husky || echo \"husky is not installed\"",
"start": "node ./streaming/index.js",
"test": "yarn lint && yarn run typecheck && yarn jest",
"test": "yarn lint && yarn run typecheck && yarn test:js run",
"test:js": "vitest",
"typecheck": "tsc --noEmit"
},
"repository": {
@ -132,6 +132,7 @@
"tiny-queue": "^0.2.1",
"twitter-text": "3.1.0",
"use-debounce": "^10.0.0",
"vite": "^6.3.5",
"webpack": "^4.47.0",
"webpack-assets-manifest": "^4.0.6",
"webpack-bundle-analyzer": "^4.8.0",
@ -149,7 +150,6 @@
"@eslint/js": "^9.23.0",
"@formatjs/cli": "^6.1.1",
"@testing-library/dom": "^10.2.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/babel__core": "^7.20.1",
"@types/emoji-mart": "3.0.14",
@ -158,7 +158,6 @@
"@types/hoist-non-react-statics": "^3.3.1",
"@types/http-link-header": "^1.0.3",
"@types/intl": "^1.2.0",
"@types/jest": "^29.5.2",
"@types/js-yaml": "^4.0.5",
"@types/lodash": "^4.14.195",
"@types/object-assign": "^4.0.30",
@ -179,7 +178,7 @@
"@types/requestidlecallback": "^0.3.5",
"@types/webpack": "^4.41.33",
"@types/webpack-env": "^1.18.4",
"babel-jest": "^29.5.0",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^9.23.0",
"eslint-import-resolver-typescript": "^4.2.5",
"eslint-plugin-formatjs": "^5.3.1",
@ -191,8 +190,6 @@
"eslint-plugin-react-hooks": "^5.2.0",
"globals": "^16.0.0",
"husky": "^9.0.11",
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"lint-staged": "^15.0.0",
"prettier": "^3.3.3",
"react-test-renderer": "^18.2.0",
@ -201,6 +198,9 @@
"stylelint-config-standard-scss": "^14.0.0",
"typescript": "~5.7.3",
"typescript-eslint": "^8.28.0",
"vite-plugin-rails": "^0.5.0",
"vite-plugin-svgr": "^4.2.0",
"vitest": "^3.1.3",
"webpack-dev-server": "^3.11.3"
},
"resolutions": {

View file

@ -70,6 +70,25 @@ RSpec.describe Mastodon::CLI::Accounts do
end
end
context 'with min_age setting' do
let(:options) { { email: 'tootctl@example.com', confirmed: true } }
before do
Setting.min_age = 42
end
it_behaves_like 'a new user with given email address and username'
it 'creates a new user with confirmed status' do
expect { subject }
.to output_results('New password')
user = User.find_by(email: options[:email])
expect(user.confirmed?).to be(true)
end
end
context 'with --confirmed option' do
let(:options) { { email: 'tootctl@example.com', confirmed: true } }

View file

@ -125,6 +125,7 @@ RSpec.describe ActivityPub::FetchAllRepliesWorker do
before do
stub_const('Status::FetchRepliesConcern::FETCH_REPLIES_ENABLED', true)
allow(FetchReplyWorker).to receive(:push_bulk)
allow(FetchReplyWorker).to receive(:perform_async)
all_items.each do |item|
next if [top_note_uri, reply_note_uri].include? item
@ -146,6 +147,12 @@ RSpec.describe ActivityPub::FetchAllRepliesWorker do
got_uris = subject.perform(status.id)
expect(got_uris).to match_array(top_items + top_items_paged)
end
it 'fetches the top status only once' do
_ = subject.perform(status.id, { request_id: 0 })
expect(FetchReplyWorker).to have_received(:perform_async).with(top_note_uri, { prefetched_body: top_object.deep_stringify_keys, request_id: 0 })
expect(a_request(:get, top_note_uri)).to have_been_made.once
end
end
describe 'perform' do

View file

@ -1,5 +1,7 @@
// @ts-check
import path from 'node:path';
import globals from 'globals';
import tseslint from 'typescript-eslint';
@ -20,7 +22,9 @@ export default tseslint.config([
settings: {
'import/ignore': ['node_modules', '\\.(json)$'],
'import/resolver': {
typescript: {},
typescript: {
project: path.resolve(import.meta.dirname, './tsconfig.json'),
},
},
},

View file

@ -11,16 +11,20 @@
"noUncheckedIndexedAccess": true,
"esModuleInterop": true,
"skipLibCheck": true,
"types": ["vitest/globals", "@types/webpack-env"],
"baseUrl": "./",
"incremental": true,
"tsBuildInfoFile": "tmp/cache/tsconfig.tsbuildinfo",
"paths": {
"@/*": ["app/javascript/*"],
"mastodon": ["app/javascript/mastodon"],
"mastodon/*": ["app/javascript/mastodon/*"],
"@/*": ["app/javascript/*"]
"images/*": ["app/javascript/images/*"],
"styles/*": ["app/javascript/styles/*"]
}
},
"include": [
"vite.config.mts",
"app/javascript/mastodon",
"app/javascript/entrypoints",
"app/javascript/types"

58
vite.config.mts Normal file
View file

@ -0,0 +1,58 @@
/// <reference types="vitest" />
import fs from 'fs';
import path from 'path';
import react from '@vitejs/plugin-react';
import RailsPlugin from 'vite-plugin-rails';
import svgr from 'vite-plugin-svgr';
import { defineConfig, configDefaults } from 'vitest/config';
const sourceCodeDir = 'app/javascript';
const items = fs.readdirSync(sourceCodeDir);
const directories = items.filter((item) =>
fs.lstatSync(path.join(sourceCodeDir, item)).isDirectory(),
);
const aliasesFromJavascriptRoot: Record<string, string> = {};
directories.forEach((directory) => {
aliasesFromJavascriptRoot[directory] = path.resolve(
__dirname,
sourceCodeDir,
directory,
);
});
export default defineConfig({
resolve: {
alias: {
...aliasesFromJavascriptRoot,
},
},
plugins: [
RailsPlugin(),
react({
include: ['**/*.jsx', '**/*.tsx'],
babel: {
plugins: ['formatjs', 'preval', 'transform-react-remove-prop-types'],
},
}),
svgr(),
],
test: {
environment: 'jsdom',
include: [
...configDefaults.include,
'**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
],
exclude: [
...configDefaults.exclude,
'**/node_modules/**',
'vendor/**',
'config/**',
'log/**',
'public/**',
'tmp/**',
],
globals: true,
},
});

3660
yarn.lock

File diff suppressed because it is too large Load diff