From f1c18e0b09646e7095daf3f8f5391ab7a69adb98 Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Sat, 15 Jul 2023 02:10:42 +0200 Subject: [PATCH 001/239] Allow relevancy sorting of Meilisearch --- .../src/server/api/endpoints/notes/search.ts | 80 ++++++++++++++----- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index b4d83aa0bc..c0e1c0345c 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -1,4 +1,4 @@ -import { In } from "typeorm"; +import {FindManyOptions, In} from "typeorm"; import { Notes } from "@/models/index.js"; import { Note } from "@/models/entities/note.js"; import config from "@/config/index.js"; @@ -58,6 +58,11 @@ export const paramDef = { nullable: true, default: null, }, + order: { + type: "string", + default: "chronological", + nullable: true, + }, }, required: ["query"], } as const; @@ -156,9 +161,6 @@ export default define(meta, paramDef, async (ps, me) => { where: { id: In(chunk), }, - order: { - id: "DESC", - }, }); // The notes are checked for visibility and muted/blocked users when packed @@ -175,19 +177,32 @@ export default define(meta, paramDef, async (ps, me) => { } else if (meilisearch) { let start = 0; const chunkSize = 100; + const sortByDate = ps.order !== "relevancy"; + + type NoteResult = { + id: string, + createdAt: number + } + const extractedNotes: NoteResult[] = []; - // Use meilisearch to fetch and step through all search results that could match the requirements - const ids = []; while (true) { - const results = await meilisearch.search(ps.query, chunkSize, start, me); + const searchRes = await meilisearch.search( + ps.query, + chunkSize, + start, + me, + ); + const results: MeilisearchNote[] = searchRes.hits as MeilisearchNote[]; + + console.log(JSON.stringify(results)); start += chunkSize; - if (results.hits.length === 0) { + if (results.length === 0) { break; } - const res = results.hits + const res = results .filter((key: MeilisearchNote) => { if (ps.userId && key.userId !== ps.userId) { return false; @@ -203,34 +218,61 @@ export default define(meta, paramDef, async (ps, me) => { } return true; }) - .map((key) => key.id); + .map((key) => { + return { + id: key.id, + createdAt: key.createdAt + } + }); - ids.push(...res); + extractedNotes.push(...res); + console.log(extractedNotes); } - // Sort all the results by note id DESC (newest first) - ids.sort((a, b) => b - a); + // Depending on the ordering requested, return the notes sorted by relevancy as + // returned by Meilisearch or order chronologically + if (sortByDate) { + extractedNotes.sort((a, b) => b.createdAt - a.createdAt); + } // Fetch the notes from the database until we have enough to satisfy the limit start = 0; const found = []; - while (found.length < ps.limit && start < ids.length) { - const chunk = ids.slice(start, start + chunkSize); - const notes: Note[] = await Notes.find({ + const noteIDs = extractedNotes.map(note => note.id); + + // Index the ID => index number into a map, so we can sort efficiently later + const idIndexMap = new Map(noteIDs.map((id, index) => [id, index])); + + while (found.length < ps.limit && start < noteIDs.length) { + const chunk = noteIDs.slice(start, start + chunkSize); + + let query : FindManyOptions = sortByDate ? { where: { id: In(chunk), }, order: { - id: "DESC", + id: "DESC" + } + } : { + where: { + id: In(chunk), }, - }); + } + + console.log(JSON.stringify(query)) + + const notes: Note[] = await Notes.find(query); + + // Re-order the note result according to the noteIDs array (cannot be undefined, we map this earlier) + // @ts-ignore + notes.sort((a, b) => idIndexMap.get(a.id) - idIndexMap.get(b.id)); // The notes are checked for visibility and muted/blocked users when packed found.push(...(await Notes.packMany(notes, me))); start += chunkSize; } - // If we have more results than the limit, trim them + // If we have more results than the limit, trim the results down if (found.length > ps.limit) { found.length = ps.limit; } From c9c183fec0eadf808191e964f833090e78a31489 Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Sat, 15 Jul 2023 02:15:10 +0200 Subject: [PATCH 002/239] formattin~ --- .../src/server/api/endpoints/notes/search.ts | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index c0e1c0345c..664dd3d5f9 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -1,4 +1,4 @@ -import {FindManyOptions, In} from "typeorm"; +import { FindManyOptions, In } from "typeorm"; import { Notes } from "@/models/index.js"; import { Note } from "@/models/entities/note.js"; import config from "@/config/index.js"; @@ -180,9 +180,9 @@ export default define(meta, paramDef, async (ps, me) => { const sortByDate = ps.order !== "relevancy"; type NoteResult = { - id: string, - createdAt: number - } + id: string; + createdAt: number; + }; const extractedNotes: NoteResult[] = []; while (true) { @@ -221,8 +221,8 @@ export default define(meta, paramDef, async (ps, me) => { .map((key) => { return { id: key.id, - createdAt: key.createdAt - } + createdAt: key.createdAt, + }; }); extractedNotes.push(...res); @@ -238,7 +238,7 @@ export default define(meta, paramDef, async (ps, me) => { // Fetch the notes from the database until we have enough to satisfy the limit start = 0; const found = []; - const noteIDs = extractedNotes.map(note => note.id); + const noteIDs = extractedNotes.map((note) => note.id); // Index the ID => index number into a map, so we can sort efficiently later const idIndexMap = new Map(noteIDs.map((id, index) => [id, index])); @@ -246,20 +246,22 @@ export default define(meta, paramDef, async (ps, me) => { while (found.length < ps.limit && start < noteIDs.length) { const chunk = noteIDs.slice(start, start + chunkSize); - let query : FindManyOptions = sortByDate ? { - where: { - id: In(chunk), - }, - order: { - id: "DESC" - } - } : { - where: { - id: In(chunk), - }, - } + let query: FindManyOptions = sortByDate + ? { + where: { + id: In(chunk), + }, + order: { + id: "DESC", + }, + } + : { + where: { + id: In(chunk), + }, + }; - console.log(JSON.stringify(query)) + console.log(JSON.stringify(query)); const notes: Note[] = await Notes.find(query); From e5360536f391b35019c9f2880448b93ccd96eab7 Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Sun, 16 Jul 2023 20:13:24 +0900 Subject: [PATCH 003/239] feat: Add bind address option --- .config/example.yml | 4 ++++ chart/templates/_helpers.tpl | 4 ++++ packages/backend/src/config/load.ts | 1 + packages/backend/src/config/types.ts | 1 + packages/backend/src/server/index.ts | 4 ++-- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.config/example.yml b/.config/example.yml index f73f4f1d79..6c4030eeac 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -29,6 +29,10 @@ url: https://example.com/ # The port that your Calckey server should listen on. port: 3000 +# The bind host your Calckey server should listen on. +# If unspecified, the wildcard address will be using. +#bind: 127.0.0.1 + # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 81009ed017..d3d8561b7e 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -113,6 +113,10 @@ url: "https://{{ .Values.calckey.domain }}/" # The port that your Misskey server should listen on. port: 3000 +# The bind host your Calckey server should listen on. +# If unspecified, the wildcard address will be using. +#bind: 127.0.0.1 + # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── diff --git a/packages/backend/src/config/load.ts b/packages/backend/src/config/load.ts index fa98789554..f6dfba9275 100644 --- a/packages/backend/src/config/load.ts +++ b/packages/backend/src/config/load.ts @@ -41,6 +41,7 @@ export default function load() { config.url = url.origin; config.port = config.port || parseInt(process.env.PORT || "", 10); + config.bind = config.bind || process.env.BIND; mixin.version = meta.version; mixin.host = url.host; diff --git a/packages/backend/src/config/types.ts b/packages/backend/src/config/types.ts index 7789c26e07..7ead804a6f 100644 --- a/packages/backend/src/config/types.ts +++ b/packages/backend/src/config/types.ts @@ -6,6 +6,7 @@ export type Source = { feedback_url?: string; url: string; port: number; + bind?: string; disableHsts?: boolean; db: { host: string; diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index efff6dd236..3e2aa87b0b 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -221,7 +221,7 @@ export const startServer = () => { initializeStreamingServer(server); - server.listen(config.port); + server.listen(config.port, config.bind); return server; }; @@ -258,5 +258,5 @@ export default () => }); // @ts-ignore - server.listen(config.port, resolve); + server.listen(config.port, config.bind, resolve); }); From b9db50de081234964bd2fddc88d6f2801ca3c58f Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Sun, 16 Jul 2023 20:13:49 +0900 Subject: [PATCH 004/239] fix: Add error message on initialization failed --- packages/backend/src/boot/master.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index bee8c8b0cd..9322e819a1 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -77,7 +77,11 @@ export async function masterMain() { config = loadConfigBoot(); await connectDb(); } catch (e) { - bootLogger.error("Fatal error occurred during initialization", null, true); + bootLogger.error( + `Fatal error occurred during initialization: ${e}`, + null, + true, + ); process.exit(1); } From d5db0360a7ab7a4a7d8a1a386a37f3eb9157a3e5 Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Mon, 17 Jul 2023 09:17:47 +0900 Subject: [PATCH 005/239] fix: fix typo --- .config/example.yml | 2 +- chart/templates/_helpers.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/example.yml b/.config/example.yml index 6c4030eeac..96e05ea51d 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -30,7 +30,7 @@ url: https://example.com/ port: 3000 # The bind host your Calckey server should listen on. -# If unspecified, the wildcard address will be using. +# If unspecified, the wildcard address will be used. #bind: 127.0.0.1 # ┌──────────────────────────┐ diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index d3d8561b7e..b5ebcb68bc 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -114,7 +114,7 @@ url: "https://{{ .Values.calckey.domain }}/" port: 3000 # The bind host your Calckey server should listen on. -# If unspecified, the wildcard address will be using. +# If unspecified, the wildcard address will be used. #bind: 127.0.0.1 # ┌──────────────────────────┐ From b7c72b902dc6f1dbe11e174e1ba01a7872427de4 Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Mon, 17 Jul 2023 09:44:48 +0900 Subject: [PATCH 006/239] fix: Branch by bind address --- packages/backend/src/server/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index 3e2aa87b0b..6c205933d7 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -221,7 +221,10 @@ export const startServer = () => { initializeStreamingServer(server); - server.listen(config.port, config.bind); + server.listen({ + port: config.port, + host: config.bind + }); return server; }; @@ -257,6 +260,8 @@ export default () => } }); - // @ts-ignore - server.listen(config.port, config.bind, resolve); + server.listen({ + port: config.port, + host: config.bind + }, () => resolve(undefined)); }); From f079e8b9edff512d759931e7f7dc2d0e9af7e2ec Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Mon, 17 Jul 2023 10:55:24 +0900 Subject: [PATCH 007/239] fix: Revert k8s template updates --- chart/templates/_helpers.tpl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index b5ebcb68bc..81009ed017 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -113,10 +113,6 @@ url: "https://{{ .Values.calckey.domain }}/" # The port that your Misskey server should listen on. port: 3000 -# The bind host your Calckey server should listen on. -# If unspecified, the wildcard address will be used. -#bind: 127.0.0.1 - # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── From 933a4d2aa2b31d5d4e129b5b6932b34495a42e2d Mon Sep 17 00:00:00 2001 From: PrivateGER Date: Tue, 18 Jul 2023 02:12:33 +0200 Subject: [PATCH 008/239] Use MS sorting rather than manual JS --- packages/backend/src/db/meilisearch.ts | 43 +++++++++++++++++-- .../src/server/api/endpoints/notes/search.ts | 33 +++----------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/packages/backend/src/db/meilisearch.ts b/packages/backend/src/db/meilisearch.ts index 4a8985d080..8a31566cc0 100644 --- a/packages/backend/src/db/meilisearch.ts +++ b/packages/backend/src/db/meilisearch.ts @@ -121,6 +121,19 @@ if (hasConfig) { ), ); + posts + .updateRankingRules([ + "sort", + "words", + "typo", + "proximity", + "attribute", + "exactness", + ]) + .catch((e) => { + logger.error("Failed to set ranking rules, sorting won't work properly."); + }); + logger.info("Connected to MeiliSearch"); } @@ -160,6 +173,7 @@ export default hasConfig limit: number, offset: number, userCtx: ILocalUser | null, + overrideSort: string | null, ) => { /// Advanced search syntax /// from:user => filter by user + optional domain @@ -170,8 +184,10 @@ export default hasConfig /// "text" => get posts with exact text between quotes /// filter:following => show results only from users you follow /// filter:followers => show results only from followers + /// order:desc/asc => order results ascending or descending const constructedFilters: string[] = []; + let sortRules: string[] = []; const splitSearch = query.split(" "); @@ -278,6 +294,14 @@ export default hasConfig ); } + return null; + } else if (term.startsWith("order:desc")) { + sortRules.push("createdAt:desc"); + + return null; + } else if (term.startsWith("order:asc")) { + sortRules.push("createdAt:asc"); + return null; } @@ -286,14 +310,27 @@ export default hasConfig ) ).filter((term) => term !== null); - const sortRules = []; - // An empty search term with defined filters means we have a placeholder search => https://www.meilisearch.com/docs/reference/api/search#placeholder-search // These have to be ordered manually, otherwise the *oldest* posts are returned first, which we don't want - if (filteredSearchTerms.length === 0 && constructedFilters.length > 0) { + // If the user has defined a sort rule, don't mess with it + if ( + filteredSearchTerms.length === 0 && + constructedFilters.length > 0 && + sortRules.length === 0 + ) { sortRules.push("createdAt:desc"); } + // More than one sorting rule doesn't make sense. We only keep the first one, otherwise weird stuff may happen. + if (sortRules.length > 1) { + sortRules = [sortRules[0]]; + } + + // An override sort takes precedence, user sorting is ignored here + if (overrideSort) { + sortRules = [overrideSort]; + } + logger.info(`Searching for ${filteredSearchTerms.join(" ")}`); logger.info(`Limit: ${limit}`); logger.info(`Offset: ${offset}`); diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index 664dd3d5f9..21ee7f48eb 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -191,11 +191,10 @@ export default define(meta, paramDef, async (ps, me) => { chunkSize, start, me, + sortByDate ? "createdAt:desc" : null, ); const results: MeilisearchNote[] = searchRes.hits as MeilisearchNote[]; - console.log(JSON.stringify(results)); - start += chunkSize; if (results.length === 0) { @@ -226,13 +225,6 @@ export default define(meta, paramDef, async (ps, me) => { }); extractedNotes.push(...res); - console.log(extractedNotes); - } - - // Depending on the ordering requested, return the notes sorted by relevancy as - // returned by Meilisearch or order chronologically - if (sortByDate) { - extractedNotes.sort((a, b) => b.createdAt - a.createdAt); } // Fetch the notes from the database until we have enough to satisfy the limit @@ -240,28 +232,17 @@ export default define(meta, paramDef, async (ps, me) => { const found = []; const noteIDs = extractedNotes.map((note) => note.id); - // Index the ID => index number into a map, so we can sort efficiently later + // Index the ID => index number into a map, so we can restore the array ordering efficiently later const idIndexMap = new Map(noteIDs.map((id, index) => [id, index])); while (found.length < ps.limit && start < noteIDs.length) { const chunk = noteIDs.slice(start, start + chunkSize); - let query: FindManyOptions = sortByDate - ? { - where: { - id: In(chunk), - }, - order: { - id: "DESC", - }, - } - : { - where: { - id: In(chunk), - }, - }; - - console.log(JSON.stringify(query)); + let query: FindManyOptions = { + where: { + id: In(chunk), + }, + }; const notes: Note[] = await Notes.find(query); From 49cc0c9162db5d4506199bb586b138c5076782f0 Mon Sep 17 00:00:00 2001 From: Ramdziana F Y Date: Tue, 18 Jul 2023 15:38:33 +0000 Subject: [PATCH 009/239] chore: Translated using Weblate (Indonesian) Currently translated at 83.6% (1536 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/id/ --- locales/id-ID.yml | 614 +++++++++++++++++++++++++--------------------- 1 file changed, 337 insertions(+), 277 deletions(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 6aaa726dba..87c3132853 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1,9 +1,9 @@ _lang_: "Bahasa Indonesia" headlineMisskey: "Jaringan terhubung melalui catatan" -introMisskey: "Selamat datang! Calckey adalah perangkat mikroblog tercatu bersifat\ - \ sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta\ - \ ceritakan segala tentangmu.\U0001F4E1\nTunjukkan juga reaksimu pada catatan pengguna\ - \ lain.\U0001F44D\nMari jelajahi dunia baru\U0001F680" +introMisskey: "Selamat datang! Calckey adalah perangkat mikroblog tercatu bersifat + sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta ceritakan + segala tentangmu.📡\nTunjukkan juga reaksimu pada catatan pengguna lain.👍\nMari jelajahi + dunia baru🚀" monthAndDay: "{day} {month}" search: "Penelusuran" notifications: "Pemberitahuan" @@ -15,10 +15,10 @@ ok: "OK" gotIt: "Saya mengerti" cancel: "Batalkan" enterUsername: "Masukkan nama pengguna" -renotedBy: "direnote oleh {user}" -noNotes: "Tidak ada catatan" +renotedBy: "Diposting ulang oleh {user}" +noNotes: "Tidak ada postingan" noNotifications: "Tidak ada pemberitahuan" -instance: "Instansi" +instance: "Server" settings: "Pengaturan" basicSettings: "Pengaturan umum" otherSettings: "Pengaturan lainnya" @@ -46,8 +46,8 @@ copyContent: "Salin konten" copyLink: "Salin tautan" delete: "Hapus" deleteAndEdit: "Hapus dan sunting" -deleteAndEditConfirm: "Apakah kamu yakin ingin menghapus note ini dan menyuntingnya?\ - \ Kamu akan kehilangan semua reaksi, renote dan balasan di note ini." +deleteAndEditConfirm: "Kamu yakin ingin menghapus postingan lalu menyuntingnya? Kamu + akan kehilangan semua reaksi, postingan ulang, dan balasan." addToList: "Tambahkan ke daftar" sendMessage: "Kirim pesan" copyUsername: "Salin nama pengguna" @@ -61,21 +61,22 @@ receiveFollowRequest: "Ingin mengikuti kamu" followRequestAccepted: "Permintaan mengikuti telah disetujui" mention: "Sebut" mentions: "Sebutan" -directNotes: "Catatan langsung" +directNotes: "Pesan langsung" importAndExport: "Impor & Ekspor" import: "Impor" export: "Ekspor" files: "Berkas" download: "Unduh" -driveFileDeleteConfirm: "Hapus {name}? Catatan dengan berkas terkait juga akan terhapus." +driveFileDeleteConfirm: "Kamu yakin ingin menghapus berkas \"{name}\"? Ini akan menghapus + semua postingan yang berisi lampiran tersebut." unfollowConfirm: "Berhenti mengikuti {name}?" -exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah\ - \ ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive" +exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah + ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive" importRequested: "Kamu telah meminta impor. Ini akan memakan waktu sesaat." lists: "Daftar" noLists: "Kamu tidak memiliki daftar apapun" -note: "Catat" -notes: "Catatan" +note: "Postingan" +notes: "Postingan" following: "Ikuti" followers: "Pengikut" followsYou: "Mengikuti kamu" @@ -85,29 +86,29 @@ error: "Galat" somethingHappened: "Terjadi kesalahan" retry: "Coba lagi" pageLoadError: "Gagal memuat halaman." -pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah\ - \ bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." -serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat\ - \ lagi." -youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan\ - \ klienmu." +pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah + bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." +serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat + lagi." +youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan + klienmu." enterListName: "Masukkan nama daftar" privacy: "Privasi" makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan" defaultNoteVisibility: "Privasi bawaan catatan" follow: "Ikuti" -followRequest: "Permintaan mengikuti" +followRequest: "Permintaan Mengikuti" followRequests: "Permintaan mengikuti" unfollow: "Berhenti mengikuti" followRequestPending: "Permintaan mengikuti yang menunggu" enterEmoji: "Masukkan emoji" -renote: "Renote" -unrenote: "Hapus renote" -renoted: "Telah direnote" -cantRenote: "Postingan ini tidak dapat direnote" -cantReRenote: "Renote tidak dapat direnote" +renote: "Posting ulang" +unrenote: "Batalkan posting ulang" +renoted: "Diposting ulang." +cantRenote: "Postingan ini tidak dapat diposting ulang." +cantReRenote: "Postingan ulang tidak dapat diposting ulang." quote: "Kutip" -pinnedNote: "Catatan yang disematkan" +pinnedNote: "Postingan tersemat" pinned: "Sematkan ke profil" you: "Kamu" clickToShow: "Klik untuk melihat" @@ -115,9 +116,9 @@ sensitive: "Konten sensitif" add: "Tambahkan" reaction: "Reaksi" reactionSetting: "Reaksi untuk dimunculkan di bilah reaksi" -reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus,\ - \ tekan \"+\" untuk menambahkan" -rememberNoteVisibility: "Ingat pengaturan visibilitas catatan" +reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus, + tekan \"+\" untuk menambahkan" +rememberNoteVisibility: "Ingat pengaturan visibilitas postingan" attachCancel: "Hapus lampiran" markAsSensitive: "Tandai sebagai konten sensitif" unmarkAsSensitive: "Hapus tanda konten sensitif" @@ -145,25 +146,24 @@ emojiUrl: "URL Emoji" addEmoji: "Tambahkan emoji" settingGuide: "Pengaturan rekomendasi" cacheRemoteFiles: "Tembolokkan berkas remote" -cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan\ - \ dimuat langsung dari instansi luar. Menonaktifkan ini akan mengurangi penggunaan\ - \ penyimpanan, namun dapat menyebabkan meningkatkan lalu lintas bandwidth, karena\ - \ thumbnail tidak dihasilkan." +cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan + dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan, + tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan." flagAsBot: "Atur akun ini sebagai Bot" -flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini.\ - \ Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah\ - \ interaksi berantai dengan bot lain dan menyesuaikan sistem internal Calckey untuk\ - \ memperlakukan akun ini sebagai bot." +flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini. + Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah + interaksi berantai dengan bot lain dan menyesuaikan sistem internal Calckey untuk + memperlakukan akun ini sebagai bot." flagAsCat: "Atur akun ini sebagai kucing" flagAsCatDescription: "Nyalakan tanda ini untuk menandai akun ini sebagai kucing." flagShowTimelineReplies: "Tampilkan balasan di linimasa" -flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna dari note pengguna\ - \ lain di linimasa apabila dinyalakan." -autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu\ - \ ikuti" +flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna pada postingan pengguna + lain di linimasa jika diaktifkan." +autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu + ikuti" addAccount: "Tambahkan akun" loginFailed: "Gagal untuk masuk" -showOnRemote: "Lihat profil asli" +showOnRemote: "Buka halaman asli" general: "Umum" wallpaper: "Wallpaper" setWallpaper: "Atur wallpaper" @@ -171,18 +171,18 @@ removeWallpaper: "Hapus wallpaper" searchWith: "Cari: {q}" youHaveNoLists: "Kamu tidak memiliki daftar apapun" followConfirm: "Apakah kamu yakin ingin mengikuti {name}?" -proxyAccount: "Akun proksi" -proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai\ - \ pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna\ - \ menambahkan seorang pengguna luar ke dalam daftar, aktivitas dari pengguna luar\ - \ tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti\ - \ pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya." +proxyAccount: "Akun Proksi" +proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai + pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna + menambahkan pengguna luar ke dalam daftar, aktivitas dari pengguna luar tidak akan + dikirim ke server apabila tidak ada pengguna lokal yang mengikuti pengguna tersebut, + dengan begitu akun proksilah yang akan mengikutinya." host: "Host" selectUser: "Pilih pengguna" recipient: "Penerima" annotation: "Keterangan konten" federation: "Federasi" -instances: "Instansi" +instances: "Server" registeredAt: "Terdaftar" latestRequestSentAt: "Permintaan terakhir dikirim pada" latestRequestReceivedAt: "Permintaan terakhir diterima pada" @@ -192,7 +192,7 @@ charts: "Grafik" perHour: "per Jam" perDay: "per Hari" stopActivityDelivery: "Berhenti mengirim aktivitas" -blockThisInstance: "Blokir instansi ini" +blockThisInstance: "Blokir server ini" operations: "Tindakan" software: "Perangkat lunak" version: "Versi" @@ -202,26 +202,25 @@ jobQueue: "Antrian kerja" cpuAndMemory: "CPU dan Memori" network: "Jaringan" disk: "Diska" -instanceInfo: "Informasi Instansi" +instanceInfo: "Informasi Server" statistics: "Statistik" clearQueue: "Bersihkan antrian" clearQueueConfirmTitle: "Apakah kamu yakin ingin membersihkan antrian?" -clearQueueConfirmText: "Seluruh sisa catatan yang tidak tersampaikan di dalam antrian\ - \ tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." +clearQueueConfirmText: "Seluruh sisa postingan yang tidak tersampaikan di dalam antrian + tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." clearCachedFiles: "Hapus tembolok" -clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas\ - \ remote?" -blockedInstances: "Instansi terblokir" -blockedInstancesDescription: "Daftar nama host dari instansi yang diperlukan untuk\ - \ diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi\ - \ ini." +clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas + remote?" +blockedInstances: "Server yang Diblokir" +blockedInstancesDescription: "Daftar nama host dari server yang diperlukan untuk diblokir. + Server yang didaftarkan tidak akan dapat berkomunikasi dengan server ini." muteAndBlock: "Bisukan / Blokir" mutedUsers: "Pengguna yang dibisukan" blockedUsers: "Pengguna yang diblokir" noUsers: "Tidak ada pengguna" editProfile: "Sunting profil" -noteDeleteConfirm: "Apakah kamu yakin ingin menghapus catatan ini?" -pinLimitExceeded: "Kamu tidak dapat menyematkan catatan lagi" +noteDeleteConfirm: "Kamu yakin ingin menghapus postingan ini?" +pinLimitExceeded: "Kamu tidak dapat menyematkan postingan lagi" intro: "Instalasi Calckey telah selesai! Mohon untuk membuat pengguna admin." done: "Selesai" processing: "Memproses" @@ -236,9 +235,9 @@ all: "Semua" subscribing: "Berlangganan" publishing: "Sedang menyiarkan langsung" notResponding: "Tidak ada respon" -instanceFollowing: "Mengikuti instance" -instanceFollowers: "Pengikut instance" -instanceUsers: "Pengguna pada instance ini" +instanceFollowing: "Mengikuti di server" +instanceFollowers: "Pengikut server" +instanceUsers: "Pengguna di server ini" changePassword: "Ubah kata sandi" security: "Keamanan" retypedNotMatch: "Input tidak sama" @@ -262,8 +261,8 @@ saved: "Telah disimpan" messaging: "Pesan" upload: "Unggah" keepOriginalUploading: "Simpan gambar asli" -keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar\ - \ aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." +keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar + aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." fromDrive: "Dari Drive" fromUrl: "Dari URL" uploadFromUrl: "Unggah dari URL" @@ -279,8 +278,8 @@ agreeTo: "Saya setuju kepada {0}" tos: "Syarat dan ketentuan" start: "Mulai" home: "Beranda" -remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal\ - \ dari instansi luar." +remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal + dari instansi luar." activity: "Aktivitas" images: "Gambar" birthday: "Tanggal lahir" @@ -313,8 +312,8 @@ unableToDelete: "Tidak dapat menghapus" inputNewFileName: "Masukkan nama berkas yang baru" inputNewDescription: "Masukkan keterangan disini" inputNewFolderName: "Masukkan nama folder yang baru" -circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu\ - \ pindahkan." +circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu + pindahkan." hasChildFilesOrFolders: "Karena folder ini tidak kosong, maka tidak dapat dihapus." copyUrl: "Salin tautan" rename: "Ubah nama" @@ -331,8 +330,8 @@ unwatch: "Batal tonton" accept: "Terima" reject: "Tolak" normal: "Normal" -instanceName: "Nama instance" -instanceDescription: "Tentang instance" +instanceName: "Nama server" +instanceDescription: "Deskripsi server" maintainerName: "Pengelola" maintainerEmail: "Surel pengelola" tosUrl: "URL Syarat dan Ketentuan" @@ -348,8 +347,8 @@ connectService: "Sambungkan" disconnectService: "Putuskan" enableLocalTimeline: "Nyalakan linimasa lokal" enableGlobalTimeline: "Nyalakan linimasa global" -disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa\ - \ meskipun linimasa tersebut tidak diaktifkan." +disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa + meskipun linimasa tersebut tidak diaktifkan." registration: "Pendaftaran" enableRegistration: "Nyalakan pendaftaran pengguna baru" invite: "Undang" @@ -361,13 +360,13 @@ bannerUrl: "URL Banner" backgroundImageUrl: "URL Gambar latar" basicInfo: "Informasi Umum" pinnedUsers: "Pengguna yang disematkan" -pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang\ - \ dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." +pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang + dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." pinnedPages: "Halaman yang disematkan" -pinnedPagesDescription: "Masukkan tautan dari halaman yang kamu ingin sematkan ke\ - \ halaman utama dari instansi ini, dipisah dengan membuat baris baru." +pinnedPagesDescription: "Masukkan jalur dari halaman yang kamu ingin sematkan ke halaman + utama dari server ini, dipisah dengan membuat baris baru." pinnedClipId: "ID dari klip yang disematkan" -pinnedNotes: "Catatan yang disematkan" +pinnedNotes: "Postingan tersemat" hcaptcha: "hCaptcha" enableHcaptcha: "Nyalakan hCaptcha" hcaptchaSiteKey: "Site Key" @@ -376,25 +375,25 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Nyalakan reCAPTCHA" recaptchaSiteKey: "Site key" recaptchaSecretKey: "Secret Key" -avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan.\ - \ Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan\ - \ fitur ini tetap aktif dengan menekan tombol batal." +avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan. + Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan fitur + ini tetap aktif dengan menekan tombol batal." antennas: "Antena" manageAntennas: "Pengelola Antena" name: "Nama" antennaSource: "Sumber Antenna" antennaKeywords: "Kata kunci yang diterima" antennaExcludeKeywords: "Kata kunci yang dikecualikan" -antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ - \ baris baru untuk kondisi OR." -notifyAntenna: "Beritahu untuk catatan baru" -withFileAntenna: "Hanya tampilkan catatan dengan berkas yang dilampirkan" +antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan + baris baru untuk kondisi OR." +notifyAntenna: "Beri tahu tentang postingan baru" +withFileAntenna: "Hanya postingan dengan berkas" enableServiceworker: "Aktifkan ServiceWorker" antennaUsersDescription: "Tuliskan satu nama pengguna per baris" caseSensitive: "Peka huruf besar dan huruf kecil" withReplies: "Termasuk balasan" connectedTo: "Akun yang mengikuti telah terhubung" -notesAndReplies: "Catatan dan balasan" +notesAndReplies: "Postingan dan balasan" withFiles: "Media" silence: "Bungkam" silenceConfirm: "Apakah kamu yakin ingin membungkam pengguna ini?" @@ -430,7 +429,7 @@ notFoundDescription: "Tidak ada halaman sesuai dengan URL yang ditentukan." uploadFolder: "Lokasi unggah folder bawaan" cacheClear: "Bersihkan tembolok" markAsReadAllNotifications: "Tandai semua pemberitahuan telah dibaca" -markAsReadAllUnreadNotes: "Tandai semua catatan telah dibaca" +markAsReadAllUnreadNotes: "Tandai semua postingan sudah dibaca" markAsReadAllTalkMessages: "Tandai semua pesan telah dibaca" help: "Bantuan" inputMessageHere: "Ketik pesan disini" @@ -451,7 +450,7 @@ text: "Teks" enable: "Aktifkan" next: "Selanjutnya" retype: "Masukkan ulang" -noteOf: "Catatan milik {user}" +noteOf: "Diposting oleh {user}" inviteToGroup: "Undang ke grup" quoteAttached: "Dikutip" quoteQuestion: "Apakah kamu ingin menambahkan kutipan?" @@ -473,8 +472,8 @@ strongPassword: "Kata sandi kuat" passwordMatched: "Kata sandi sama" passwordNotMatched: "Kata sandi tidak sama" signinWith: "Masuk dengan {x}" -signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan\ - \ salah." +signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan + salah." tapSecurityKey: "Ketuk kunci keamanan kamu" or: "atau" language: "Bahasa" @@ -510,39 +509,39 @@ accountSettings: "Pengaturan Akun" promotion: "Promosi" promote: "Promosikan" numberOfDays: "Jumlah hari" -hideThisNote: "Sembunyikan catatan ini" -showFeaturedNotesInTimeline: "Tampilkan catatan yang diunggulkan di linimasa" +hideThisNote: "Sembunyikan postingan ini" +showFeaturedNotesInTimeline: "Tampilkan postingan yang diunggulkan di linimasa" objectStorage: "Object Storage" useObjectStorage: "Gunakan object storage" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "Prefix URL digunakan untuk mengkonstruksi URL ke object\ - \ (media) referencing. Tentukan URL jika kamu menggunakan CDN atau Proxy, jika tidak\ - \ tentukan alamat yang dapat diakses secara publik sesuai dengan panduan dari layanan\ - \ yang akan kamu gunakan, contohnya. 'https://.s3.amazonaws.com' untuk AWS\ - \ S3, dan 'https://storage.googleapis.com/' untuk GCS." +objectStorageBaseUrlDesc: "Prefix URL digunakan untuk mengkonstruksi URL ke object + (media) referencing. Tentukan URL jika kamu menggunakan CDN atau Proxy, jika tidak + tentukan alamat yang dapat diakses secara publik sesuai dengan panduan dari layanan + yang akan kamu gunakan, contohnya. 'https://.s3.amazonaws.com' untuk AWS + S3, dan 'https://storage.googleapis.com/' untuk GCS." objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang\ - \ telah dikonfigurasi." +objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang + telah dikonfigurasi." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Berkas tidak akan disimpan dalam direktori dari prefix ini." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika\ - \ tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan\ - \ dari layanan yang akan kamu gunakan." +objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika + tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan + dari layanan yang akan kamu gunakan." objectStorageRegion: "Region" -objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak\ - \ memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." +objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak + memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." objectStorageUseSSL: "Gunakan SSL" -objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk\ - \ koneksi API" +objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk + koneksi API" objectStorageUseProxy: "Hubungkan melalui Proxy" -objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk\ - \ koneksi ObjectStorage" +objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk + koneksi ObjectStorage" objectStorageSetPublicRead: "Setel \"public-read\" disaat mengunggah" serverLogs: "Log Peladen" deleteAll: "Hapus semua" showFixedPostForm: "Tampilkan form posting di atas linimasa." -newNoteRecived: "Kamu mendapat catatan baru" +newNoteRecived: "Ada postingan baru" sounds: "Bunyi" listen: "Dengarkan" none: "Tidak ada" @@ -565,9 +564,8 @@ sort: "Urutkan" ascendingOrder: "Urutkan naik" descendingOrder: "Urutkan menurun" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript.\ - \ Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan\ - \ Calckey." +scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript. + Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan Calckey." output: "Keluaran" script: "Script" disablePagesScript: "Nonaktifkan script pada halaman" @@ -575,14 +573,14 @@ updateRemoteUser: "Perbaharui informasi pengguna luar" deleteAllFiles: "Hapus semua berkas" deleteAllFilesConfirm: "Apakah kamu yakin ingin menghapus semua berkas?" removeAllFollowing: "Tahan semua mengikuti" -removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan\ - \ ini ketika instansi sudah tidak ada lagi." +removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan + ini ketika server sudah tidak ada lagi." userSuspended: "Pengguna ini telah dibekukan." userSilenced: "Pengguna ini telah dibungkam." yourAccountSuspendedTitle: "Akun ini dibekukan" -yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan\ - \ layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih\ - \ lanjut. Mohon untuk tidak membuat akun baru." +yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan + layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. + Mohon untuk tidak membuat akun baru." menu: "Menu" divider: "Pembagi" addItem: "Tambahkan item" @@ -591,8 +589,8 @@ addRelay: "Tambahkan relay" inboxUrl: "URL Kotak masuk" addedRelays: "Relay yang ditambahkan" serviceworkerInfo: "Harus diaktifkan untuk pemberitahuan push." -deletedNote: "Catatan yang dihapus" -invisibleNote: "Catatan yang disembunyikan" +deletedNote: "Postingan yang dihapus" +invisibleNote: "Postingan tidak terlihat" enableInfiniteScroll: "Aktifkan gulir tak terbatas" visibility: "Visibilitas" poll: "Angket" @@ -627,8 +625,8 @@ notificationType: "Jenis pemberitahuan" edit: "Sunting" emailServer: "Peladen surel" enableEmail: "Nyalakan distribusi surel" -emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa\ - \ kata sandi" +emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa + kata sandi" email: "Surel" emailAddress: "Alamat surel" smtpConfig: "Konfigurasi peladen SMTP" @@ -636,16 +634,16 @@ smtpHost: "Host" smtpPort: "Port" smtpUser: "Nama Pengguna" smtpPass: "Kata sandi" -emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan\ - \ verifikasi SMTP" +emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan + verifikasi SMTP" smtpSecure: "Gunakan SSL/TLS implisit untuk koneksi SMTP" smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS" testEmail: "Tes pengiriman surel" wordMute: "Bisukan kata" regexpError: "Kesalahan ekspresi reguler" -regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab}\ - \ kata yang dibisukan:" -instanceMute: "Bisuka instansi" +regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab} + kata yang dibisukan:" +instanceMute: "Server Dibisukan" userSaysSomething: "{name} mengatakan sesuatu" makeActive: "Aktifkan" display: "Tampilkan" @@ -660,60 +658,60 @@ create: "Buat" notificationSetting: "Pengaturan Pemberitahuan" notificationSettingDesc: "Pilih tipe pemberitahuan untuk ditampilkan" useGlobalSetting: "Gunakan setelan global" -useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan.\ - \ Jika dimatikan, konfigurasi secara individu dapat dibuat." +useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan. + Jika dimatikan, konfigurasi secara individu dapat dibuat." other: "Lainnya" regenerateLoginToken: "Perbarui token login" -regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat\ - \ login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan\ - \ dilogout." -setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya\ - \ menggunakan spasi." +regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat + login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan + dilogout." +setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya + menggunakan spasi." fileIdOrUrl: "File-ID atau URL" behavior: "Perilaku" sample: "Contoh" abuseReports: "Laporkan" reportAbuse: "Laporkan" reportAbuseOf: "Laporkan {name}" -fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai\ - \ catatan yang spesifik, mohon lampirkan serta URL catatan tersebut." +fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai + postingan yang spesifik, mohon lampirkan serta URL postingan tersebut." abuseReported: "Laporan kamu telah dikirimkan. Terima kasih." reporter: "Pelapor" reporteeOrigin: "Yang dilaporkan" reporterOrigin: "Pelapor" -forwardReport: "Teruskan laporan ke instansi luar" -forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem\ - \ akan digunakan sebagai pelapor pada instansi luar." +forwardReport: "Teruskan laporan ke server luar" +forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem + akan digunakan sebagai pelapor pada server luar." send: "Kirim" abuseMarkAsResolved: "Tandai laporan sebagai selesai" openInNewTab: "Buka di tab baru" openInSideView: "Buka di tampilan samping" defaultNavigationBehaviour: "Navigasi bawaan" -editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan\ - \ untuk merusak akun kamu." -instanceTicker: "Informasi pengguna pada instansi" +editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan + untuk merusak akun kamu." +instanceTicker: "Informasi server postingan" waitingFor: "Menunggu untuk {x}" random: "Acak" system: "Sistem" -switchUi: "Ubah UI" +switchUi: "Tata letak" desktop: "Desktop" clip: "Klip" createNew: "Buat baru" optional: "Opsional" createNewClip: "Buat klip baru" unclip: "Batalkan klip" -confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\"\ - . Yakin ingin membatalkan catatan dari klip ini?" +confirmToUnclipAlreadyClippedNote: "Postingan ini sudah disertakan di klip \"{name}\"\ + . Yakin ingin menghapus postingan dari klip ini?" public: "Publik" -i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat\ - \ ikut membantu di {link}." +i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat + ikut membantu di {link}." manageAccessTokens: "Kelola access token" accountInfo: "Informasi akun" -notesCount: "Jumlah catatan" +notesCount: "Jumlah postingan" repliesCount: "Jumlah balasan terkirim" -renotesCount: "Jumlah renote terkirim" +renotesCount: "Jumlah postingan ulang terkirim" repliedCount: "Jumlah balasan diterima" -renotedCount: "Jumlah renote diterima" +renotedCount: "Jumlah postingan ulang diterima" followingCount: "Jumlah akun yang diikuti" followersCount: "Jumlah pengikut" sentReactionsCount: "Jumlah reaksi yang terkirim" @@ -725,19 +723,19 @@ no: "Tidak" driveFilesCount: "Jumlah berkas drive" driveUsage: "Penggunaan ruang penyimpanan drive" noCrawle: "Tolak pengindeksan crawler" -noCrawleDescription: "Meminta mesin pencari untuk tidak mengindeks halaman profil\ - \ kamu, catatan, Halaman, dll." -lockedAccountInfo: "Kecuali kamu menyetel visibilitas catatan milikmu ke \"Hanya pengikut\"\ - , catatan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu memerlukan\ - \ pengikut untuk disetujui secara manual." +noCrawleDescription: "Minta mesin pencari untuk tidak mengindeks halaman profil, postingan, + Halaman kamu, dll." +lockedAccountInfo: "Kecuali kamu mengatur visibilitas postingan milikmu ke \"Hanya + pengikut\", postingan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu + memerlukan pengikut untuk disetujui secara manual." alwaysMarkSensitive: "Tandai media dalam catatan sebagai media sensitif" loadRawImages: "Tampilkan lampiran gambar secara penuh daripada thumbnail" disableShowingAnimatedImages: "Jangan mainkan gambar bergerak" -verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang\ - \ telah disertakan untuk menyelesaikan verifikasi." +verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang + telah disertakan untuk menyelesaikan verifikasi." notSet: "Tidak disetel" emailVerified: "Surel telah diverifikasi" -noteFavoritesCount: "Jumlah catatan yang difavoritkan" +noteFavoritesCount: "Jumlah postingan yang dimarkah" pageLikesCount: "Jumlah suka yang diterima Halaman" pageLikedCount: "Jumlah Halaman yang disukai" contact: "Kontak" @@ -746,27 +744,27 @@ clips: "Klip" experimentalFeatures: "Fitur eksperimental" developer: "Pengembang" makeExplorable: "Buat akun tampil di \"Jelajahi\"" -makeExplorableDescription: "Jika kamu mematikan ini, akun kamu tidak akan muncul di\ - \ bagian \"Jelajahi:" +makeExplorableDescription: "Jika kamu mematikan ini, akun kamu tidak akan muncul di + bagian \"Jelajahi:" showGapBetweenNotesInTimeline: "Tampilkan jarak diantara catatan pada linimasa" duplicate: "Duplikat" left: "Kiri" center: "Tengah" wide: "Lebar" narrow: "Sempit" -reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali.\ - \ Apakah kamu ingin memuat halaman kembali sekarang?" +reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali. + Apakah kamu ingin memuat halaman kembali sekarang?" needReloadToApply: "Pengaturan ini hanya akan diterapkan setelah memuat ulang halaman." showTitlebar: "Tampilkan bilah judul" clearCache: "Hapus tembolok" onlineUsersCount: "{n} orang sedang daring" nUsers: "{n} Pengguna" -nNotes: "{n} Catatan" +nNotes: "{n} Postingan" sendErrorReports: "Kirim laporan kesalahan" -sendErrorReportsDescription: "Ketika dinyalakan, informasi kesalahan rinci akan dibagikan\ - \ dengan Calckey ketika masalah terjadi, hal ini untuk membantu kualitas Calckey.\ - \ Fitur ini memungkinkan memuat informasi seperti sistem operasi yang kamu gunakan\ - \ dan versinya, aplikasi peramban yang kamu gunakan, riwayat aktivitas kamu, dll." +sendErrorReportsDescription: "Ketika diaktifkan, informasi kesalahan rinci akan dibagikan + dengan Calckey ketika masalah terjadi, hal ini untuk membantu kualitas Calckey.\n + Ini akan memuat informasi antara lain versi sistem operasi yang kamu gunakan, peramban + yang dipakai, riwayat aktivitas kamu di Calckey, dll." myTheme: "Tema saya" backgroundColor: "Latar Belakang" accentColor: "Aksen" @@ -790,7 +788,7 @@ capacity: "Kapasitas" inUse: "Digunakan" editCode: "Sunting kode" apply: "Terapkan" -receiveAnnouncementFromInstance: "Terima pemberitahuan surel dari instansi ini" +receiveAnnouncementFromInstance: "Terima pemberitahuan dari server ini" emailNotification: "Pemberitahuan surel" publish: "Terbitkan" inChannelSearch: "Cari di kanal" @@ -805,23 +803,23 @@ unlikeConfirm: "Yakin ingin hapus sukamu?" fullView: "Tampilan penuh" quitFullView: "Keluar tampilan penuh" addDescription: "Tambahkan deskripsi" -userPagePinTip: "Kamu dapat membuat catatan untuk ditampilkan disini dengan memilih\ - \ \"Sematkan ke profil\" dari menu pada catatan individu." -notSpecifiedMentionWarning: "Catatan ini mengandung sebutan dari pengguna yang tidak\ - \ dimuat sebagai penerima" +userPagePinTip: "Kamu dapat menampilkan postingan di sini dengan memilih \"Sematkan + ke profil\" dari menu pada sebuah postingan." +notSpecifiedMentionWarning: "Postingan ini mengandung sebutan dari pengguna yang tidak + disertakan sebagai penerima" info: "Informasi" userInfo: "Informasi pengguna" unknown: "Tidak diketahui" onlineStatus: "Status daring" hideOnlineStatus: "Sembunyikan status daring" -hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan\ - \ untuk beberapa fungsi seperti contohnya pencarian." +hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan + untuk beberapa fungsi seperti contohnya pencarian." online: "Daring" active: "Aktif" offline: "Luring" notRecommended: "Tidak disarankan" botProtection: "Perlindungan Bot" -instanceBlocking: "Instansi yang diblokir" +instanceBlocking: "Pengelolaan Federasi" selectAccount: "Pilih akun" switchAccount: "Ganti akun" enabled: "Aktif" @@ -838,7 +836,7 @@ postToGallery: "Posting ke galeri" gallery: "Galeri" recentPosts: "Postingan terbaru" popularPosts: "Postingan populer" -shareWithNote: "Bagikan dengan catatan" +shareWithNote: "Bagikan dengan postingan" ads: "Iklan" expiration: "Batas akhir" memo: "Memo" @@ -850,8 +848,8 @@ emailNotConfiguredWarning: "Alamat surel tidak disetel." ratio: "Rasio" previewNoteText: "Tampilkan pratinjau" customCss: "Custom CSS" -customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya.\ - \ Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." +customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya. + Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." global: "Global" squareAvatars: "Tampilkan avatar sebagai persegi" sent: "Kirim" @@ -866,9 +864,9 @@ whatIsNew: "Lihat perubahan pemutakhiran" translate: "Terjemahkan" translatedFrom: "Terjemahkan dari {x}" accountDeletionInProgress: "Penghapusan akun sedang dalam proses" -usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen\ - \ ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_).\ - \ Username tidak dapat diubah setelahnya." +usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen + ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). + Username tidak dapat diubah setelahnya." aiChanMode: "Mode Ai" keepCw: "Biarkan Peringatan Konten" pubSub: "Akun Pub/Sub" @@ -884,14 +882,14 @@ filter: "Saring" controlPanel: "Panel kendali" manageAccounts: "Kelola Akun" makeReactionsPublic: "Tampilkan riwayat reaksi ke publik" -makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi\ - \ masa lalu kamu ditampilkan secara publik." +makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi + masa lalu kamu ditampilkan secara publik." classic: "Klasik" muteThread: "Bisukan thread" unmuteThread: "Suarakan thread" ffVisibility: "Visibilitas Mengikuti/Pengikut" -ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu\ - \ ikuti." +ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu + ikuti." continueThread: "Lihat lanjutan thread" deleteAccountConfirm: "Akun akan dihapus. Apakah kamu yakin?" incorrectPassword: "Kata sandi salah." @@ -901,8 +899,8 @@ leaveGroup: "Keluar grup" leaveGroupConfirm: "Apakah kamu yakin untuk keluar dari \"{name}\"?" useDrawerReactionPickerForMobile: "Tampilkan bilah reaksi sebagai laci di ponsel" welcomeBackWithName: "Selamat datang kembali, {name}." -clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi\ - \ email." +clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi + email." overridedDeviceKind: "Tipe perangkat" smartphone: "Ponsel" tablet: "Tablet" @@ -944,16 +942,15 @@ _ffVisibility: _signup: almostThere: "Hampir selesai" emailAddressInfo: "Mohon masukkan alamat surel kamu." - emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon\ - \ klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." + emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon + klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." _accountDelete: accountDelete: "Hapus akun" - mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif,\ - \ kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada\ - \ berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu\ - \ unggah." - sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat\ - \ surel yang terdaftarkan pada akun ini." + mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, + kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa + banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah." + sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat + surel yang terdaftarkan pada akun ini." requestAccountDelete: "Minta penghapusan akun" started: "Penghapusan telah dimulai" inProgress: "Penghapusan sedang dalam proses" @@ -961,13 +958,12 @@ _ad: back: "Kembali" reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit" _forgotPassword: - enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah\ - \ tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel\ - \ tersebut." - ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi\ - \ admin segera." - contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak\ - \ admin untuk mengatur ulang password kamu." + enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah + tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut." + ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi + admin segera." + contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak + admin untuk mengatur ulang password kamu." _gallery: my: "Postingan saya" liked: "Postingan yang disukai" @@ -989,15 +985,15 @@ _registry: domain: "Domain" createKey: "Buat kunci" _aboutMisskey: - about: "Calckey adalah perangkat lunak sumber terbuka yang sedang dikembangkan oleh\ - \ syuilo sejak 2014." + about: "Calckey adalah perangkat lunak sumber terbuka yang sedang dikembangkan oleh + syuilo sejak 2014." contributors: "Kontributor utama" allContributors: "Seluruh kontributor" source: "Sumber kode" translation: "Terjemahkan Calckey" donate: "Donasi ke Calckey" - morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang\ - \ tidak tercantum disini. Terima kasih! \U0001F970" + morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang + tidak tercantum disini. Terima kasih! 🥰" patrons: "Pendukung" _nsfw: respect: "Sembunyikan media NSFW" @@ -1005,12 +1001,12 @@ _nsfw: force: "Sembunyikan semua media" _mfm: cheatSheet: "Contekan MFM" - intro: "MFM adalah Calckey-exclusive Markup Language yang dapat digunakan di banyak\ - \ tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." + intro: "MFM adalah Calckey-exclusive Markup Language yang dapat digunakan di banyak + tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." dummy: "Calckey membentangkan dunia Fediverse" mention: "Sebut" - mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan\ - \ simbol-At dan nama engguna mereka." + mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan + simbol-At dan nama engguna mereka." hashtag: "Tagar" hashtagDescription: "Kamu dapat menentukan tagar dengan menggunakan angka dan teks." url: "URL" @@ -1026,18 +1022,18 @@ _mfm: inlineCode: "Kode (Dalam baris)" inlineCodeDescription: "Menampilkan sorotan sintaks dalam baris untuk kode(program-)." blockCode: "Kode (Blok)" - blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris\ - \ dalam sebuah blok." + blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris + dalam sebuah blok." inlineMath: "Matematika (Dalam baris)" inlineMathDescription: "Menampilkan formula matematika (KaTeX) dalam baris." blockMath: "Matematika (Blok)" - blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah\ - \ blok." + blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah + blok." quote: "Kutip" quoteDescription: "Menampilkan konten sebagai kutipan." emoji: "Emoji kustom" - emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom\ - \ menggunakan tanda titik dua." + emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom + menggunakan tanda titik dua." search: "Penelusuran" searchDescription: "Menampilkan kotak pencarian dengan teks yang sudah dimasukkan." flip: "Balik" @@ -1063,8 +1059,8 @@ _mfm: x4: "Sangat besar" x4Description: "Tampilka konten menjadi sangat besar." blur: "Buram" - blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan\ - \ dengan jelas dengan melayangkan kursor tetikus di atasnya." + blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan + dengan jelas dengan melayangkan kursor tetikus di atasnya." font: "Font" fontDescription: "Setel font yang ditampilkan untuk konten." rainbow: "Pelangi" @@ -1098,21 +1094,21 @@ _menuDisplay: hide: "Sembunyikan" _wordMute: muteWords: "Kata yang dibisukan" - muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ - \ baris baru untuk kondisi OR." - muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan\ - \ regular expressions." + muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan + baris baru untuk kondisi OR." + muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan + regular expressions." softDescription: "Sembunyikan catatan yang memenuhi aturan kondisi dari linimasa." - hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa.\ - \ Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun\ - \ jika kondisi tersebut diubah." + hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa. + Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun jika + kondisi tersebut diubah." soft: "Lembut" hard: "Keras" mutedNotes: "Catatan yang dibisukan" _instanceMute: - instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari\ - \ instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam\ - \ instansi yang dibisukan." + instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari + instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam instansi + yang dibisukan." instanceMuteDescription2: "Pisah dengan baris baru" title: "Sembunyikan note dari instansi terdaftar." heading: "Daftar instansi yang akan dibisukan" @@ -1144,8 +1140,8 @@ _theme: darken: "Mengelamkan" lighten: "Menerangkan" inputConstantName: "Masukkan nama untuk konstanta" - importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting\ - \ tema" + importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting + tema" deleteConstantConfirm: "apakah kamu ingin menghapus konstanta {const}?" keys: accent: "Aksen" @@ -1217,56 +1213,56 @@ _time: _tutorial: title: "Cara menggunakan Calckey" step1_1: "Selamat datang!" - step1_2: "Halaman ini disebut \"linimasa\". Halaman ini menampilkan \"catatan\"\ - \ yang diurutkan secara kronologis dari orang-orang yang kamu \"ikuti\"." - step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti\ - \ siapapun." - step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti\ - \ seseorang." - step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain\ - \ mudah untuk mengikutimu kembali." + step1_2: "Halaman ini disebut \"linimasa\". Halaman ini menampilkan \"catatan\" + yang diurutkan secara kronologis dari orang-orang yang kamu \"ikuti\"." + step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti + siapapun." + step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti + seseorang." + step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain + mudah untuk mengikutimu kembali." step3_1: "Sekarang saatnya mengikuti beberapa orang!" - step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan\ - \ mengklik ikon pensil pada layar kamu." - step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat\ - \ catatan kamu." - step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja\ - \ ikutan bikin akun misskey punyaku\"!" + step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan + mengklik ikon pensil pada layar kamu." + step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat + catatan kamu." + step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja + ikutan bikin akun misskey punyaku\"!" step4_1: "Selesai mencatat catatan pertamamu?" step4_2: "Horee! Sekarang catatan pertamamu sudah ditampilkan di linimasa milikmu." - step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti\ - \ orang lain." - step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk\ - \ kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga\ - \ saat ini. Coba ikuti seseorang yang kamu suka!" - step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol\ - \ follow pada profil mereka." - step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna\ - \ rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." + step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti + orang lain." + step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk + kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga saat + ini. Coba ikuti seseorang yang kamu suka!" + step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol + follow pada profil mereka." + step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna + rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." step6_1: "Sekarang kamu dapat melihat catatan pengguna lain pada linimasamu." - step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon\ - \ dengan cepat." - step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain\ - \ dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." + step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon + dengan cepat." + step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain + dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Calckey." - step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung\ - \ ke bagian {help}." - step7_3: "Semoga berhasil dan bersenang-senanglah! \U0001F680" + step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung + ke bagian {help}." + step7_3: "Semoga berhasil dan bersenang-senanglah! 🚀" _2fa: alreadyRegistered: "Kamu telah mendaftarkan perangkat otentikasi dua faktor." registerTOTP: "Daftarkan perangkat baru" registerSecurityKey: "Daftarkan kunci keamanan baru" - step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat\ - \ kamu." + step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat + kamu." step2: "Lalu, pindai kode QR yang ada di layar." step2Url: "Di aplikasi desktop, masukkan URL berikut:" - step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan\ - \ pemasangan." - step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi\ - \ otentikasi kamu." - securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses\ - \ login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung\ - \ FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." + step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan + pemasangan." + step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi + otentikasi kamu." + securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses + login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung + FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." _permissions: "read:account": "Lihat informasi akun" "write:account": "Sunting informasi akun" @@ -1302,8 +1298,8 @@ _permissions: "write:gallery-likes": "Sunting daftar postingan galeri yang disukai" _auth: shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?" - shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun\ - \ kamu?" + shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun + kamu?" permissionAsk: "Aplikasi ini membutuhkan beberapa ijin, yaitu:" pleaseGoBack: "Mohon kembali ke aplikasi kamu" callback: "Mengembalikan kamu ke aplikasi" @@ -1398,8 +1394,9 @@ _profile: youCanIncludeHashtags: "Kamu juga dapat menambahkan tagar ke dalam bio." metadata: "Informasi tambahan" metadataEdit: "Sunting informasi tambahan" - metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan\ - \ ke dalam profilmu. Anda dapat menambahkan tag {a} atau tag {l} dengan {rel} untuk memverifikasi tautan di profil Anda!" + metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan + ke dalam profilmu. Anda dapat menambahkan tag {a} atau tag {l} dengan {rel} untuk + memverifikasi tautan di profil Anda!" metadataLabel: "Label" metadataContent: "Isi" changeAvatar: "Ubah avatar" @@ -1720,8 +1717,8 @@ _pages: _for: arg1: "Jumlah angka untuk diulangi" arg2: "Aksi" - typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan\ - \ adalah \"{actual}\"!" + typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan + adalah \"{actual}\"!" thereIsEmptySlot: "Slot {slot} kosong!" types: string: "Teks" @@ -1790,3 +1787,66 @@ _deck: list: "Daftar" mentions: "Sebutan" direct: "Langsung" +instanceSecurity: Keamanan Server +removeReaction: Hapus reaksimu +accountMoved: 'Pengguna pindah ke akun baru:' +silencedInstances: Server yang Dibisukan +silencedInstancesDescription: Daftar nama host server yang ingin kamu bisukan. Akun + pada server yang didaftar dianggap sebagai "Dibisukan", dan hanya dapat membuat + permintaan mengikuti, dan tidak dapat menyebut akun lokal jika tidak diikuti. Ini + tidak akan mepengaruhi server yang diblokir. +noInstances: Tidak ada server +expandOnNoteClick: Buka postingan dengan klik +defaultValueIs: 'Bawaan: {value}' +enableRecommendedTimeline: Aktifkan linimasa rekomendasi +searchPlaceholder: Telusuri Calckey +addInstance: Tambah server +older: lebih lama +listsDesc: Daftar mengizinkanmu membuat linimasa berisi pengguna spesifik. Itu dapat + diakses dari halaman linimasa. +enableEmojiReactions: Aktifkan reaksi emoji +showEmojisInReactionNotifications: Tampilkan emoji dalam notifikasi reaksi +renoteMute: Bisukan postingan ulang +renoteUnmute: Bunyikan postingan ulang +antennasDesc: "Antena menampilkan postingan baru yang cocok dengan kriteriamu!\n Itu + dapat diakses dari halaman linimasa." +antennaInstancesDescription: Daftarkan satu host server per baris +expandOnNoteClickDesc: Jika nonaktif, kamu masih dapat membuka postingan dengan klik-kanan + menu atau mengklik tanggal waktu. +channelFederationWarn: Kanal belum terfederasi dengan server lain +clipsDesc: Klip seperti markah yang dikategorikan dan bisa dibagikan. Kamu dapat membuat + klip dari menu pada sebuah postingan. +recommended: Direkomendasikan +silenceThisInstance: Bisukan server ini +hiddenTags: Tagar Tersembunyi +preferencesBackups: Preferensi cadangan +editNote: Sunting catatan +deleted: Dihapus +edited: Disunting pada {date} {time} +selectInstance: Pilih server +hiddenTagsDescription: 'Daftar tagar (tanpa #) dari tagar yang ingin kamu sembunyikan + dari tren dan eksplorasi. Tagar tersembunyi tetap dapat ditemukan dari tempat lainnya.' +silenced: Dibisukan +selectChannel: Pilih kanal +accessibility: Aksesibilitas +manageGroups: Kelola grup +moderation: Moderasi +userSaysSomethingReason: '{name} mengatakan {reason}' +secureMode: Mode Aman (Pengambilan Terotorisasi) +secureModeInfo: Saat meminta dari server lain, jangan kirim kembali tanpa bukti. +privateModeInfo: Saat aktif, hanya server yang masuk daftar putih dapat terfederasi + dengan servermu. Semua postingan akan disembunyikan dari publik. +allowedInstances: Server Masuk Daftar Putih +newer: lebih baru +userSaysSomethingReasonReply: '{name} membalas postingan berisi {reason}' +userSaysSomethingReasonRenote: '{name} memposting ulang postingan berisi {reason}' +userSaysSomethingReasonQuote: '{name} mengutip postingan berisi {reason}' +noThankYou: Tidak terima kasih +jumpToPrevious: Lompat ke sebelumnya +flagSpeakAsCatDescription: Postinganmu akan nyampak dalam mode kucing +cw: Peringatan konten +flagSpeakAsCat: Bicara sebagai kucing +allowedInstancesDescription: Host server akan masuk daftar putih untuk federasi, mereka + dipisahkan dengan baris baru (hanya diterapkan pada mode pribadi). +xl: XL +privateMode: Mode Pribadi From 050307b568772c2c52cf43a4c12e32fd87c4722b Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Tue, 18 Jul 2023 13:47:41 +0000 Subject: [PATCH 010/239] chore: Translated using Weblate (Russian) Currently translated at 99.1% (1820 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ru/ --- locales/ru-RU.yml | 179 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 141 insertions(+), 38 deletions(-) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 04155f64f6..1f320e99ca 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -911,9 +911,9 @@ label: "Метка" localOnly: "Локально" beta: "Бета" enableAutoSensitive: "Автоматическое определение NSFW" -enableAutoSensitiveDescription: "Если доступно, используйте машинное обучение для - автоматической установки флага NSFW на носителе. Даже если эта функция отключена, - она может быть установлена автоматически в зависимости от инстанта." +enableAutoSensitiveDescription: "Позволяет автоматически обнаруживать и маркировать + медиафайлы NSFW с помощью машинного обучения, где это возможно. Даже если эта опция + отключена, она может быть включена на всем сервере." account: "Учётные записи" _sensitiveMediaDetection: description: "Машинное обучение может быть использовано для автоматического обнаружения @@ -959,7 +959,7 @@ _forgotPassword: enterEmail: "Введите адрес электронной почты, который ввели при регистрации. На неё будет выслана ссылка для смены пароля." ifNoEmail: "Если вы не ввели свой адрес электронной почты, свяжитесь с администратором - ресурса, чтобы сменить пароль." + сервера, чтобы сменить пароль." contactAdmin: "Здесь не используются адреса электронной почты, так что свяжитесь с администратором, чтобы поменять пароль." _gallery: @@ -993,6 +993,11 @@ _aboutMisskey: morePatrons: "Большое спасибо и многим другим, кто принял участие в этом проекте! 🥰" patrons: "Материальная поддержка" + patronsList: Перечислены в хронологическом порядке, а не по размеру пожертвования. + Сделайте взнос по ссылке выше, чтобы ваше имя было здесь! + sponsors: Спонсоры Calckey + donateTitle: Понравился Calckey? + pleaseDonateToCalckey: Пожалуйста, поддержите разработку Calckey. _nsfw: respect: "Скрывать содержимое не для всех" ignore: "Показывать содержимое не для всех" @@ -1027,7 +1032,7 @@ _mfm: inlineMathDescription: "Позволяет вставлять математические выражения внутрь текста при помощи языка KaTeX" blockMath: "Математическое выражение (блок)" - blockMathDescription: "Оформляет математическое выражение (KaTeX) на отдельной строке" + blockMathDescription: "Отображать математические формулы (KaTeX) блоками" quote: "Цитата" quoteDescription: "Так можно процитировать чей-то текст." emoji: "Собственные эмодзи" @@ -1069,6 +1074,18 @@ _mfm: rotateDescription: "Поворачивает на заданный угол." plain: Обычный текст plainDescription: Деактивирует эффекты всех MFM, содержащихся в этом эффекте MFM. + play: Воспроизвести MFM + warn: '' + advanced: Расширенные MFM + advancedDescription: Если выключено, позволяет только базовую разметку, если не + воспроизводится анимированный MFM + background: Цвет фона + backgroundDescription: Изменить цвет фона текста. + crop: Обрезать + cropDescription: Обрезать содержимое. + stop: Остановить MFM + scale: Масштабировать + fade: Затухание _instanceTicker: none: "Не показывать" remote: "Только для других сайтов" @@ -1088,6 +1105,8 @@ _channel: following: "Подписки" usersCount: "Участников: {n}" notesCount: "Постов: {n}" + nameOnly: Только название + nameAndDescription: Название и описание _menuDisplay: sideFull: "Сторона" sideIcon: "Сторона (иконки)" @@ -1107,11 +1126,11 @@ _wordMute: hard: "Жёсткий" mutedNotes: "Скрытые посты" _instanceMute: - heading: "Список заглушенных инстансов" + heading: "Список заглушенных серверов" instanceMuteDescription2: Разделить переносом строки - instanceMuteDescription: Это будет скрывать все посты/репосты с указанных инстансов, - включая ответы пользователю с заглушенного инстанса. - title: Скрывает посты с указанных инстансов. + instanceMuteDescription: Это будет скрывать все посты/репосты с указанных серверов, + включая ответы пользователю с заглушенного сервера. + title: Скрывает посты с указанных серверов. _theme: explore: "Обзор" install: "Установить тему" @@ -1217,7 +1236,7 @@ _tutorial: step2_1: "Сначала, пожалуйста, заполните свой профиль." step2_2: "Предоставив некоторую информацию о себе, другим людям будет легче понять, хотят ли они видеть ваши записи или следить за вами." - step3_1: "Теперь пора следить за некоторыми людьми!" + step3_1: "Теперь пришло время на кого-то подписаться!" step3_2: "Ваша домашняя и социальная ленты основаны на том, за кем вы следите, поэтому для начала попробуйте следить за парой аккаунтов.\nНажмите на кружок с плюсом в правом верхнем углу профиля, чтобы следить за ним." @@ -1225,22 +1244,19 @@ _tutorial: step4_2: "Для своего первого сообщения некоторые люди любят делать {introduction} сообщение или простое \"Hello world!\"" step5_1: "Временные рамки, везде временные рамки!" - step5_2: "В вашем экземпляре включены {timelines} различных временных линий." - step5_3: "Главная {icon} лента - это лента, где вы можете видеть сообщения ваших - подписок и других на этом инстансе. Если вы хотите чтобы главная лента показывала - только посты ваших подписок вы можете легко это изменить в настройках!" + step5_2: "В вашем сервере включены {timelines} разные ленты." + step5_3: "Домашняя {icon} лента - это лента, где вы можете видеть посты тех, на + кого вы подписались." step5_4: "Местная {icon} лента - это лента где вы можете видеть сообщения всех остальных - пользователей данного инстанса." - step5_5: "Лента Социальная {icon} - это лента, где вы можете видеть посты только - от аккаунтов, на которые вы подписаны." - step5_6: "Лента Рекомендованная {icon} это лента, где вы можете видеть посты с инстансов, - рекомендованных администраторами." + пользователей данного сервера." + step5_5: "Социальная лента {icon} - это комбинация домашней и местной лент." + step5_6: "На ленте Рекомендованных {icon} вы можете видеть посты с серверов, которые + рекомендуют администраторы." step5_7: "Глобальная {icon} лента - это место, где вы можете видеть сообщения от - всех других подключенных экземпляров." + всех других подключенных серверов." step6_1: "Итак, что это за место?" - step6_2: "Ну, вы не просто присоединились к Кальки. Вы присоединились к порталу - в Fediverse, взаимосвязанной сети из тысяч серверов, называемых \"инстансами\"\ - ." + step6_2: "Ну, вы не просто присоединились к Calckey. Вы вошли в Fediverse, взаимосвязанную + сеть из тысяч серверов." step6_3: "Каждый сервер работает по-своему, и не на всех серверах работает Calckey. Но этот работает! Это немного сложно, но вы быстро разберетесь." step6_4: "Теперь идите, изучайте и развлекайтесь!" @@ -1257,6 +1273,26 @@ _2fa: securityKeyInfo: "Вы можете настроить вход с помощью аппаратного ключа безопасности, поддерживающего FIDO2, или отпечатка пальца или PIN-кода на устройстве." step2Url: 'Вы также можете ввести этот URL если используете программу на компьютере:' + securityKeyName: Введите название ключа + removeKeyConfirm: Действительно удалить ключ {name}? + removeKey: Удалить ключ безопасности + step2Click: Нажав на этот QR-код, вы сможете зарегистрировать 2FA в вашем ключе + безопасности или приложении-аутентификаторе для телефона. + registerTOTPBeforeKey: Пожалуйста, настройте приложение-аутентификатор, чтобы зарегистрировать + ключ безопасности или пароль. + chromePasskeyNotSupported: Пароли Chrome пока не поддерживаются. + renewTOTP: Перенастроить приложение-аутентификатор + renewTOTPConfirm: Это приведет к тому, что коды подтверждения из предыдущего приложения + перестанут работать + renewTOTPOk: Перенастроить + renewTOTPCancel: Отменить + token: 2FA Токен + whyTOTPOnlyRenew: Приложение аутентификатора нельзя удалить, пока зарегистрирован + ключ безопасности. + tapSecurityKey: Пожалуйста, следуйте инструкциям вашего браузера, чтобы зарегистрировать + ключ безопасности или ключ-пароль + step3Title: Введите код аутентификации + securityKeyNotSupported: Ваш браузер не поддерживает ключи безопасности. _permissions: "read:account": "Просматривать данные учётной записи" "write:account": "Изменять данные учётной записи" @@ -1293,18 +1329,19 @@ _permissions: _auth: shareAccess: "Дать доступ для «{name}» к вашей учётной записи?" shareAccessAsk: "Уверены, что хотите дать приложению доступ к своей учётной записи?" - permissionAsk: "Приложение запрашивает следующие разрешения" + permissionAsk: "Приложение запрашивает следующие разрешения:" pleaseGoBack: "Вернитесь, пожалуйста, в приложение" callback: "Возврат в приложение" denied: "Доступ закрыт" - copyAsk: Пожалуйста, вставьте следующий код авторизации в приложение + copyAsk: 'Пожалуйста, вставьте следующий код авторизации в приложение:' + allPermissions: Полный доступ к аккаунту _antennaSources: all: "Все посты" homeTimeline: "Посты тех на которых вы подписаны" users: "Посты выбранных пользователей" userList: "Посты пользователей из выбранных списков" userGroup: "Посты от пользователей из заданной группы" - instances: Посты от всех пользователей на инстансе + instances: Посты от всех пользователей на сервере _weekday: sunday: "Воскресенье" monday: "Понедельник" @@ -1320,25 +1357,29 @@ _widgets: calendar: "Календарь" trends: "Актуальное" clock: "Часы" - rss: "Просмотр RSS" + rss: "RSS-читалка" activity: "Активность" photos: "Фото" digitalClock: "Цифровые часы" federation: "Федерация" - postForm: "Форма отправки" + postForm: "Создание поста" slideshow: "Показ слайдов" button: "Кнопка" - onlineUsers: "Пользователи сейчас с сети" + onlineUsers: "Пользователи онлайн" jobQueue: "Очередь заданий" serverMetric: "Показатели сервера" aiscript: "Консоль AiScript" aichan: "Ай" rssTicker: RSS-тикер unixClock: UNIX часы - instanceCloud: Облачко инстансов + instanceCloud: Облачко серверов userList: Список пользователей _userList: chooseList: Выберите список + meiliStatus: Состояние сервера + meiliSize: Размер индекса + meiliIndexCount: Индексированные посты + serverInfo: Информация о сервере _cw: hide: "Спрятать" show: "Показать еще" @@ -1368,11 +1409,12 @@ _poll: remainingSeconds: "Осталось {s} с" _visibility: public: "Общедоступно" - publicDescription: "Открыто для всех" + publicDescription: "Ваш пост будет виден во всех публичных лентах" home: "Скрытый" homeDescription: "Не для общих лент" followers: "Для подписчиков" - followersDescription: "Только вашим подписчикам" + followersDescription: "Сделать видимым только для ваших подписчиков и упомянутых + пользователей" specified: "Личное" specifiedDescription: "Тем, кого укажете" localOnly: "Локально" @@ -1770,6 +1812,9 @@ _notification: followBack: Подписался на вас обратно emptyPushNotificationMessage: Пуш уведомления были обновлены pollEnded: Результаты опроса стали доступны + reacted: отреагировал на ваш пост + renoted: распространил ваш пост + voted: проголосовал в вашем опросе _deck: alwaysShowMainColumn: "Всегда показывать главную колонку" columnAlign: "Выравнивание колонок" @@ -1787,10 +1832,11 @@ _deck: widgets: "Виджеты" notifications: "Уведомления" tl: "Лента" - antenna: "Антенны" + antenna: "Антенна" list: "Списки" mentions: "Упоминания" direct: "Личное" + channel: Канал deleteProfile: Удалить воркспейс introduction: Создайте идеальный интерфейс для себя, свободно расположив столбцы! introduction2: Нажмите на + в правой части экрана, чтобы добавлять новые столбцы @@ -1891,7 +1937,7 @@ socialTimeline: Социальная лента driveCapOverrideCaption: Сбросить до настроек по умолчанию введя значение 0 или меньше. deleteAccount: Удалить аккаунт numberOfPageCache: Число кэшируемых страниц -pushNotificationNotSupported: Ваш браузер или инстанс не поддерживает пуш уведомления +pushNotificationNotSupported: Ваш браузер или сервер не поддерживает пуш уведомления sendPushNotificationReadMessageCaption: Уведомление содержащее текст "{emptyPushNotificationMessage}" будет показано на короткое время. Это может увеличить расход батареи вашего устройства, если это применимо. @@ -1903,7 +1949,7 @@ adminCustomCssWarn: Этот параметр следует использов клиенты перестанут нормально функционировать. Пожалуйста, убедитесь, что ваш CSS работает должным образом, протестировав его в настройках вашего пользователя. showUpdates: Показывать всплывающее окно при обновлении Calckey -recommendedInstances: Рекомендованные инстансы +recommendedInstances: Рекомендованные серверы defaultReaction: Эмодзи реакция по умолчанию для выходящих и исходящих постов license: Лицензия indexPosts: Индексировать посты @@ -1949,7 +1995,7 @@ shuffle: Перемешать moveFrom: Переместится на этот аккаунт с старого аккаунта moveFromLabel: 'Аккаунт с которого перемещаетесь:' moveAccountDescription: Этот процесс необратим. Убедитесь что вы сделали псевдоним - для этого аккаунта до перемещения. Пожалуйста введите аккаунт в формате @person@instance.com + для этого аккаунта до перемещения. Пожалуйста введите аккаунт в формате @person@server.com moveTo: Переместить текущий аккаунт на новый аккаунт _messaging: groups: Группы @@ -1971,10 +2017,10 @@ hiddenTagsDescription: 'Список хештегов (без #), которые и "обзор". Скрытые хэштеги по-прежнему можно обнаружить в других местах.' moveFromDescription: Это установит псевдоним для старого аккаунта, так что вы сможете переместить тот аккаунт на текущий. Делайте это ДО перемещения со старого аккаунта. - Пожалуйста введите аккаунт в формате @person@instance.com + Пожалуйста введите аккаунт в формате @person@server.com customKaTeXMacroDescription: 'Настройте макросы чтобы легко писать математические выражения! Обозначение соответствует определениям команд LaTeX и записывается как - \newcommand{\название}{содержание} или \newcommand{\название}[количество аргументов]{содержание}. + \newcommand{\ название}{содержание} или \newcommand{\название}[количество аргументов]{содержание}. Для примера, \add{3}[2]{#1 + #2} будет раскрывать \add{3}{foo} до 3 + foo. Фигурные скобки, окружающие имя макроса, можно заменить на круглые или квадратные скобки. Это влияет на квадратные скобки, используемые для аргументов. Для каждой строки @@ -2016,3 +2062,60 @@ channelFederationWarn: Каналы пока не федерируются с д image: Изображение cw: Предупреждение о содержании xl: Очень крупно +_experiments: + enablePostImports: Включить импорт постов + postImportsCaption: Позволяет пользователям импортировать свои посты из прошлых + учетных записей Calckey, Misskey, Mastodon, Akkoma и Pleroma. Это может вызвать + снижение скорости при загрузке, если ваша очередь перегружена. + title: Эксперименты +_skinTones: + yellow: Жёлтый + dark: Тёмный + mediumLight: Средне-светлый + mediumDark: Средне-тёмный + medium: Средний + light: Светлый +_filters: + fromUser: От пользователя + withFile: С файлом + followingOnly: Только подписки + followersOnly: Только подписчики + fromDomain: С домена + notesBefore: Посты до + notesAfter: Посты после +_dialog: + charactersExceeded: 'Превышено максимальное количество символов! Ограничение: {current}/{max}' + charactersBelow: 'Недостаточно символов! Ограничение: {current}/{min}' +_feeds: + copyFeed: Скопировать ленту + rss: RSS + jsonFeed: JSON-лента + atom: Atom +enableServerMachineStats: Включить статистику серверного оборудования +enableIdenticonGeneration: Включить генерацию Identicon +reactionPickerSkinTone: Предпочитаемый цвет кожи эмодзи +sendModMail: Отправить сообщение о модерации +findOtherInstance: Найти другой сервер +signupsDisabled: Регистрация на этом сервере сейчас отключена, но вы всегда можете + зарегистрироваться на другом сервере! Если у вас есть код приглашения на этот сервер, + пожалуйста, введите его ниже. +preventAiLearningDescription: Попросить сторонние языковые модели ИИ не изучать загружаемый + вами контент, например, посты и изображения. +verifiedLink: Проверенная ссылка +swipeOnMobile: Разрешить перелистывание между страницами +preventAiLearning: Защита от скрепинга ИИ-ботов +userSaysSomethingReasonReply: '{name} ответил на пост с {reason}' +userSaysSomethingReasonRenote: '{name} распространил пост с {reason}' +userSaysSomethingReasonQuote: '{name} процитировал пост с {reason}' +isBot: Этот аккаунт является ботом +isAdmin: Администратор +isPatron: Патрон Calckey +showPopup: Оповещать пользователей всплывающим окном +neverShow: Не показывать снова +remindMeLater: Возможно позже +removeQuote: Удалить цитату +silencedWarning: Эта страница отображается потому, что эти пользователи с серверов, + которые ваш администратор заглушил, поэтому они потенциально могут быть спамом. +isModerator: Модератор +noGraze: Пожалуйста, отключите расширение браузера "Graze для Mastodon", поскольку + оно мешает работе Calckey. From f6ed695aecb08ad50d998ebe9566ccc58b672b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Tue, 18 Jul 2023 13:02:44 +0000 Subject: [PATCH 011/239] chore: Translated using Weblate (Russian) Currently translated at 99.1% (1820 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ru/ --- locales/ru-RU.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 1f320e99ca..0487493ad0 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -2119,3 +2119,5 @@ silencedWarning: Эта страница отображается потому, isModerator: Модератор noGraze: Пожалуйста, отключите расширение браузера "Graze для Mastodon", поскольку оно мешает работе Calckey. +newer: новее +older: старее From 24773f071cedfa1a4e9fa04cdd08de019ef141df Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Tue, 18 Jul 2023 12:49:59 +0000 Subject: [PATCH 012/239] chore: Translated using Weblate (Ukrainian) Currently translated at 100.0% (1836 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ --- locales/uk-UA.yml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 6bd72b75be..e645ef0ac0 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -400,7 +400,7 @@ recentlyUpdatedUsers: "Нещодавно активні користувачі" recentlyRegisteredUsers: "Нещодавно зареєстровані користувачі" recentlyDiscoveredUsers: "Нещодавно знайдені користувачі" exploreUsersCount: "{count} користувачів" -exploreFediverse: "Огляд федіверсу" +exploreFediverse: "Досліджуйте Fediverse" popularTags: "Популярні теги" userList: "Списки" about: "Інформація" @@ -579,7 +579,7 @@ divider: "Розділювач" addItem: "Додати елемент" relays: "Ретранслятори" addRelay: "Додати ретранслятор" -inboxUrl: "Inbox URL" +inboxUrl: "URL скриньки вхідних повідомлень" addedRelays: "Додані ретранслятори" serviceworkerInfo: "Повинен бути ввімкнений для push-сповіщень." deletedNote: "Видалений запис" @@ -808,7 +808,7 @@ _ad: back: "Назад" reduceFrequencyOfThisAd: Менше показувати цю рекламу _gallery: - unlike: "Не вподобати" + unlike: "Видалити вподобайку" liked: Вподобані записи like: Подобається my: Моя галерея @@ -918,7 +918,7 @@ _mfm: scale: Масштабувати positionDescription: Перемістити вміст на вказане значення. scaleDescription: Масштабувати вміст на вказану величину. - background: Фоновий колір + background: Колір фону foreground: Колір переднього плану foregroundDescription: Змінити колір тексту на передньому плані. bounceDescription: Надає контенту пружної анімації. @@ -1086,7 +1086,7 @@ _tutorial: повідомлення або просте \"Hello world!\"" step5_1: "Стрічки, скрізь одні стрічки!" step5_2: "У вашому сервері включені {timelines} різні стрічки." - step5_3: "Головна {icon} стрічка - це стрічка, де ви можете бачити записи тих, на + step5_3: "Домашня {icon} стрічка - це стрічка, де ви можете бачити записи тих, на кого ви підписалися." step5_4: "Місцева {icon} стрічка - це стрічка, де ви можете бачити записи всіх інших користувачів даного серверу." @@ -1340,7 +1340,7 @@ _pages: viewSource: "Переглянути вихідний код" viewPage: "Переглянути свої сторінки" like: "Вподобати" - unlike: "Не вподобати" + unlike: "Видалити вподобайку" my: "Мої сторінки" liked: "Вподобані сторінки" featured: "Популярні" @@ -1870,9 +1870,9 @@ _instanceMute: _experiments: enablePostImports: Ввімкнути імпорт записів title: Експерименти - postImportsCaption: Дозволяє користувачам імпортувати свої публікації з минулих - облікових записів Calckey, Misskey, Mastodon, Akkoma і Pleroma. Це може спричинити - зниження швидкості під час завантаження, якщо ваша черга перевантажена. + postImportsCaption: Дозволяє користувачам імпортувати свої записи з минулих облікових + записів Calckey, Misskey, Mastodon, Akkoma і Pleroma. Це може спричинити зниження + швидкості під час завантаження, якщо ваша черга перевантажена. _dialog: charactersExceeded: 'Перевищено максимальну кількість символів! Обмеження: {current}/{max}' charactersBelow: 'Недостатньо символів! Обмеження: {current}/{min}' @@ -2022,9 +2022,9 @@ _plugin: installWarn: Будь ласка, не встановлюйте ненадійні плагіни. _skinTones: yellow: Жовтий - mediumLight: Помірно-світлий - medium: Помірний - mediumDark: Помірно-темний + mediumLight: Середньо-світлий + medium: Середній + mediumDark: Середньо-темний dark: Темний light: Світлий tenMinutes: 10 хвилин @@ -2133,3 +2133,8 @@ customSplashIconsDescription: URL-адреси іконок для застав сторінку. Будь ласка, переконайтеся, що зображення знаходяться на статичній URL-адресі, бажано, щоб вони були змінені до розміру 192x192. verifiedLink: Перевірене посилання +_feeds: + copyFeed: Скопіювати стрічку + rss: RSS + jsonFeed: JSON-стрічка + atom: Atom From 989f6e9663995328744990d30024e55d8bec3923 Mon Sep 17 00:00:00 2001 From: Poesty Li Date: Tue, 18 Jul 2023 09:46:29 +0000 Subject: [PATCH 013/239] chore: Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1836 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ --- locales/zh-CN.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index ccbb16f16b..f9484289cb 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -521,7 +521,7 @@ recentUsed: "最近使用" install: "安装" uninstall: "卸载" installedApps: "已授权的应用" -nothing: "没有" +nothing: "暂无更多内容" installedDate: "授权日期" lastUsedDate: "最近使用时间" state: "状态" @@ -1231,10 +1231,10 @@ _tutorial: step5_1: "时间线,无处不在的时间线!" step5_2: "您的服务器已启用 {timelines} 种不同的时间线。" step5_3: "主页 {icon} 时间线是您可以看到您关注账号的帖子的时间线。" - step5_4: "本地 {icon} 时间线是您可以看到此服务器上其它用户的帖子的时间线。" - step5_5: "社交 {icon} 时间线是主页和本地时间线的结合。" - step5_6: "推荐 {icon} 时间线是您可以看到管理员推荐服务器的帖子的时间线。" - step5_7: "全球 {icon} 时间线是您可以看到来自其它所有互联服务器的帖子的时间线。" + step5_4: "本地{icon}时间线是您可以看到此服务器上其它用户的帖子的时间线。" + step5_5: "社交{icon}时间线是主页和本地时间线的结合。" + step5_6: "推荐{icon}时间线是您可以看到管理员推荐服务器的帖子的时间线。" + step5_7: "全球{icon}时间线是您可以看到来自其它所有互联服务器的帖子的时间线。" step6_1: "那么,这里是什么地方?" step6_2: "好吧,您不只是加入 Calckey。您已经加入了 Fediverse 的一个门户,这是一个由成千上万台服务器组成的互联网络。" step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行 Calckey。但这个服务器是的! 这有点复杂,但您很快就会明白的。" From 470f745cd56806dc03424d8be333fd0e90ca4f8f Mon Sep 17 00:00:00 2001 From: Salif Mehmed Date: Tue, 18 Jul 2023 18:21:50 +0000 Subject: [PATCH 014/239] chore: Translated using Weblate (Bulgarian (bul_BG)) Currently translated at 20.2% (371 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/calckey/locales/bul_BG/ --- locales/bul_BG.yml | 422 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 421 insertions(+), 1 deletion(-) diff --git a/locales/bul_BG.yml b/locales/bul_BG.yml index 0967ef424b..fb3f55fc5b 100644 --- a/locales/bul_BG.yml +++ b/locales/bul_BG.yml @@ -1 +1,421 @@ -{} +cancel: Отмяна +noNotes: Няма публикации +settings: Настройки +headlineMisskey: Децентрализирана социална медийна платформа с отворен код, която + е безплатна завинаги! 🚀 +notifications: Известия +forgotPassword: Забравена парола +uploading: Качване... +addInstance: Добави сървър +favorite: Добави в отметки +delete: Изтрий +unpin: Откачи от профила +copyLink: Копирай връзката +pin: Закачи в профила +deleted: Изтрито +deleteAndEditConfirm: Сигурни ли сте, че искате да изтриете тази публикация и да я + редактирате? Ще загубите всички реакции, подсилвания и отговори към нея. +copyUsername: Копирай потребителското име +searchUser: Търсене на потребител +reply: Отговори +showMore: Покажи още +loadMore: Зареди още +followRequestAccepted: Заявка за последване приета +importAndExport: Импорт/Експорт на Данни +import: Импортиране +download: Свали +export: Експортиране +files: Файлове +unblock: Отблокирай +_sensitiveMediaDetection: + setSensitiveFlagAutomatically: Маркиране като деликатно +searchWith: 'Търсене: {q}' +smtpUser: Потребителско име +notificationType: Тип известие +searchResult: Резултати от търсенето +searchByGoogle: Търсене +markAsReadAllNotifications: Маркирай всички известия като прочетени +settingGuide: Препоръчителни настройки +smtpPass: Парола +newPasswordIs: Новата парола е "{password}" +members: Членове +help: Помощ +hide: Скрий +group: Група +groups: Групи +incorrectPassword: Грешна парола. +leaveGroup: Напусни групата +numberOfColumn: Брой колони +passwordLessLogin: Вписване без парола +newPasswordRetype: Въведи отново парола +saveAs: Запази като... +resetPassword: Нулиране на парола +saveConfirm: Запазване на промените? +inputNewFolderName: Въведи ново име на папка +upload: Качване +retypedNotMatch: Въвежданията не съвпадат. +_ago: + weeksAgo: преди {n}с + secondsAgo: преди {n}сек + hoursAgo: преди {n}ч + minutesAgo: преди {n}мин + daysAgo: преди {n}д + monthsAgo: преди {n}м + yearsAgo: преди {n}г + future: Бъдеще + justNow: Точно сега +folderName: Име на папка +renameFile: Преименувай файл +_widgets: + activity: Дейност + notifications: Известия + timeline: Инфопоток +instanceSecurity: Сигурност на сървъра +uploadFolder: Папка по подразбиране за качвания +instanceInfo: Информация за сървъра +statistics: Статистика +fileName: Име на файл +selectFile: Избери файл +editProfile: Редактирай профил +instances: Сървъри +selectUser: Избери потребител +createNew: Създай ново +blockThisInstance: Блокирай този сървър +_profile: + metadata: Допълнителна информация + username: Потребителско име + name: Име + description: Биография + metadataContent: Съдържание +addAccount: Добави акаунт +followRequestPending: Заявка за последване в изчакване +signinHistory: История на вписванията +or: Или +noUsers: Няма потребители +notes: Публикации +newNoteRecived: Има нови публикации +note: Публикация +instanceFollowing: Последвани на сървъра +_filters: + followersOnly: Само последователи + notesAfter: Публикации след + fromDomain: От домейн +_notification: + _types: + follow: Нови последователи + mention: Споменавания + reaction: Реакции +_channel: + notesCount: '{n} Публикации' +unfollow: Отследване +noLists: Нямаш никакви списъци +markAsReadAllUnreadNotes: Маркирай всички публикации като прочетени +markAsReadAllTalkMessages: Маркирай всички съобщения като прочетени +_time: + second: Секунд(а/и) + hour: Час(а) + day: Дни + minute: Минут(а/и) +create: Създай +lists: Списъци +reportAbuseOf: Докладвай {name} +reporter: Докладчик +abuseReports: Доклади +logoImageUrl: URL на лого изображение +reportAbuse: Доклад +latestRequestReceivedAt: Последно получена заявка +location: Местонахождение +keepOriginalUploading: Запази оригиналното изображение +renotesCount: Брой изпратени подсилвания +license: Лиценз +lastUsedDate: Последно използвано на +rename: Преименувай +customEmojis: Персонализирани емоджита +emoji: Емоджи +_aboutMisskey: + translation: Преведи Calckey +translatedFrom: Преведено от {x} +i18nInfo: Calckey се превежда на различни езици от доброволци. Можете да помогнете + на адрес {link}. +image: Изображение +recipient: Получател(и) +notesAndReplies: Публикации и отговори +noSuchUser: Потребителят не е намерен +pinnedPages: Закачени страници +pinLimitExceeded: Не може да закачаш повече публикации +flagShowTimelineReplies: Показване на отговори в инфопотока +followersCount: Брой последователи +receivedReactionsCount: Брой получени реакции +federation: Федерация +today: Днес +yearX: '{year}' +registeredAt: Регистриран на +monthX: '{month}' +dayX: '{day}' +registration: Регистрация +popularUsers: Популярни потребители +details: Детайли +tenMinutes: 10 минути +oneDay: Един ден +file: Файл +oneHour: Един час +video: Видео +createNewClip: Създай нова подборка +clips: Подборки +active: Активен +menu: Меню +itsOff: Изключено +remindMeLater: Може би по-късно +removed: Успешно изтриване +deleteAllFiles: Изтрий всички файлове +deletedNote: Изтрита публикация +deleteConfirm: Потвърждавате ли изтриването? +hasChildFilesOrFolders: Тъй като тази папка не е празна, тя не може да бъде изтрита. +nsfw: Деликатно съдържание +default: По подразбиране +_theme: + defaultValue: Стойност по подразбиране + keys: + mention: Споменаване + renote: Подсили + color: Цвят +_pages: + script: + blocks: + _dailyRannum: + arg1: Минимална стойност + arg2: Максимална стойност + _join: + arg1: Списъци + add: Добави + _rannum: + arg1: Минимална стойност + arg2: Максимална стойност + _seedRannum: + arg3: Максимална стойност + arg2: Минимална стойност + categories: + value: Стойности + list: Списъци + blocks: + _textInput: + default: Стойност по подразбиране + _switch: + default: Стойност по подразбиране + _textareaInput: + default: Стойност по подразбиране + _numberInput: + default: Стойност по подразбиране + _radioButton: + default: Стойност по подразбиране +_deck: + _columns: + notifications: Известия + mentions: Споменавания + tl: Инфопоток + direct: Директни съобщения +_mfm: + mention: Споменаване + search: Търсене +_messaging: + groups: Групи +apps: Приложения +_lang_: Български +introMisskey: Добре дошли! Calckey е децентрализирана социална медийна платформа с + отворен код, която е безплатна завинаги! 🚀 +monthAndDay: '{day}/{month}' +search: Търсене +searchPlaceholder: Търсене в Calckey +username: Потребителско име +password: Парола +fetchingAsApObject: Извличане от федивърса +ok: Добре +gotIt: Разбрах! +noThankYou: Не, благодаря +enterUsername: Въведи потребителско име +renotedBy: Подсилено от {user} +noNotifications: Няма известия +instance: Сървър +basicSettings: Основни Настройки +otherSettings: Други Настройки +openInWindow: Отвори в прозорец +profile: Профил +timeline: Инфопоток +noAccountDescription: Този потребител все още не е написал своята биография. +login: Впиши се +loggingIn: Вписване +logout: Отпиши се +signup: Регистрирай се +save: Запазване +users: Потребители +addUser: Добави потребител +favorites: Отметки +unfavorite: Премахни от отметки +favorited: Добавено в отметки. +alreadyFavorited: Вече е добавено в отметки. +cantFavorite: Неуспешно добавяне в отметки. +copyContent: Копирай съдържанието +deleteAndEdit: Изтрий и редактирай +editNote: Редактирай бележка +edited: Редактирано на {date} {time} +addToList: Добави в списък +sendMessage: Изпрати съобщение +jumpToPrevious: Премини към предишно +newer: по-ново +older: по-старо +showLess: Затвори +youGotNewFollower: те последва +receiveFollowRequest: Заявка за последване получена +mention: Споменаване +mentions: Споменавания +directNotes: Директни съобщения +cw: Предупреждение за съдържание +followers: Последователи +following: Последвани +followsYou: Следва те +createList: Създай списък +error: Грешка +manageLists: Управление на списъци +retry: Повторен опит +follow: Следване +followRequest: Заявка за последване +followRequests: Заявки за последване +defaultNoteVisibility: Видимост по подразбиране +unrenote: Върни обратно подсилване +renoted: Подсилено. +cantRenote: Тази публикация не може да бъде подсилена. +renote: Подсили +enterEmoji: Въведи емоджи +sensitive: Деликатно съдържание +add: Добави +pinned: Закачено в профила +quote: Цитирай +pinnedNote: Закачена публикация +cantReRenote: Подсилване не може да бъде подсилено. +clickToShow: Кликни за показване +you: Ти +reaction: Реакции +removeReaction: Премахни реакцията си +enterFileName: Въведи име на файл +unmarkAsSensitive: Отмаркирай като деликатно +markAsSensitive: Маркирай като деликатно +block: Блокирай +emojis: Емоджита +addEmoji: Добави +emojiName: Име на емоджи +emojiUrl: URL на емоджи +loginFailed: Неуспешно вписване +flagAsCat: Котка ли си? 😺 +flagSpeakAsCat: Говори като котка +youHaveNoLists: Нямаш никакви списъци +selectInstance: Избери сървър +annotation: Коментари +latestRequestSentAt: Последно изпратена заявка +stopActivityDelivery: Спри изпращането на дейности +version: Версия +clearCachedFiles: Изтрий кеш +noInstances: Няма сървъри +federating: Федериране +defaultValueIs: 'По подразбиране: {value}' +noCustomEmojis: Няма емоджи +changePassword: Промени парола +currentPassword: Настояща парола +instanceUsers: Потребители на този сървър +security: Сигурност +instanceFollowers: Последователи на сървъра +newPassword: Нова парола +more: Още! +remove: Изтрий +saved: Запазено +messaging: Чат +birthday: Рожден ден +images: Изображения +activity: Дейност +createFolder: Създай папка +renameFolder: Преименувай тази папка +selectFolders: Избери папки +selectFolder: Избери папка +selectFiles: Избери файлове +addFile: Добави на файл +inputNewFileName: Въведи ново име на файл +deleteFolder: Изтрий тази папка +emptyFolder: Тази папка е празна +copyUrl: Копирай URL +pages: Страници +thisYear: Година +thisMonth: Месец +pinnedNotes: Закачени публикации +pinnedUsers: Закачени потребители +hcaptcha: hCaptcha +recaptcha: reCAPTCHA +name: Име +enableRecaptcha: Включване на reCAPTCHA +enableHcaptcha: Включване на hCaptcha +exploreUsersCount: Има {count} потребители +userList: Списъци +moderator: Модератор +moderation: Модерация +administrator: Администратор +lastUsed: Последно използвано +unregister: Отрегистрация +share: Сподели +notFound: Не е намерено +inputMessageHere: Въведи съобщение тук +createGroup: Създай група +close: Затвори +next: Следващо +title: Заглавие +messagingWithGroup: Групов чат +enable: Включи +retype: Въведи отново +noteOf: Публикация от {user} +quoteAttached: Цитат +newMessageExists: Има нови съобщения +noMessagesYet: Все още няма съобщения +language: Език +createAccount: Създай акаунт +existingAccount: Съществуващ акаунт +deleteAll: Изтрий всички +enableAll: Включване на всички +disableAll: Изключване на всички +copy: Копирай +reporteeOrigin: Произход на докладвания +reporterOrigin: Произход на докладчика +clip: Подборка +unclip: Премахни от подборка +followingCount: Брой последвани акаунти +renotedCount: Брой получени подсилвания +notesCount: Брой публикации +repliesCount: Брой изпратени отговори +repliedCount: Брой получени отговори +sentReactionsCount: Брой изпратени реакции +yes: Да +no: Не +alwaysMarkSensitive: Маркирай като деликатно по подразбиране +noteFavoritesCount: Брой публикации с отметки +left: Ляво +nNotes: '{n} Публикации' +value: Стойност +createdAt: Създадено на +invalidValue: Невалидна стойност. +currentVersion: Настояща версия +latestVersion: Най-нова версия +typingUsers: '{users} пише' +user: Потребител +enabled: Включено +disabled: Изключено +whatIsNew: Покажи промените +translate: Преведи +itsOn: Включено +oneWeek: Една седмица +audio: Звук +removeQuote: Премахни цитат +_sfx: + notification: Известия +_2fa: + renewTOTPCancel: Отмяна +_permissions: + "read:favorites": Виж списъка си с отметки + "write:favorites": Редактирай списъка си с отметки +_visibility: + followers: Последователи From 3e133c5e6aeba8853ea6192d107833c24f5fbdf5 Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Wed, 19 Jul 2023 19:20:45 +0000 Subject: [PATCH 015/239] chore: Translated using Weblate (Russian) Currently translated at 99.4% (1826 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ --- locales/ru-RU.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 0487493ad0..573d9bea03 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -2121,3 +2121,9 @@ noGraze: Пожалуйста, отключите расширение брау оно мешает работе Calckey. newer: новее older: старее +showWithSparkles: Показать с блеском +youHaveUnreadAnnouncements: У вас есть непрочитанные объявления +donationLink: Ссылка на страницу для взносов +isLocked: Этот аккаунт имеет одобрение запросов на подписку +removeRecipient: Удалить получателя +removeMember: Удалить члена From 081ea97663a1fe633695404d5e46ba51003f50ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Wed, 19 Jul 2023 19:23:09 +0000 Subject: [PATCH 016/239] chore: Translated using Weblate (Russian) Currently translated at 99.4% (1826 of 1836 strings) Translation: Calckey/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ --- locales/ru-RU.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 573d9bea03..7e52070746 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -2126,4 +2126,4 @@ youHaveUnreadAnnouncements: У вас есть непрочитанные объ donationLink: Ссылка на страницу для взносов isLocked: Этот аккаунт имеет одобрение запросов на подписку removeRecipient: Удалить получателя -removeMember: Удалить члена +removeMember: Удалить участника From 6c17caab4cdef47b4f05f91d3bace0a06204afc9 Mon Sep 17 00:00:00 2001 From: naskya Date: Thu, 20 Jul 2023 00:13:19 +0000 Subject: [PATCH 017/239] chore: Translated using Weblate (Japanese) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ --- locales/ja-JP.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 755afa8d3a..da7afaca28 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -156,7 +156,7 @@ flagShowTimelineRepliesDescription: "オンにすると、タイムラインに autoAcceptFollowed: "フォローしているユーザーからのフォロー申請を自動承認" addAccount: "アカウントを追加" loginFailed: "ログインに失敗しました" -showOnRemote: "リモートで表示" +showOnRemote: "オリジナルのページを開く" general: "全般" accountMoved: "このユーザーは新しいアカウントに移行しました" wallpaper: "壁紙" @@ -1074,6 +1074,7 @@ _aboutMisskey: pleaseDonateToHost: また、このサーバー {host} の運営者への寄付もご検討ください。 donateHost: '{host} に寄付する' donateTitle: Calckeyを気に入りましたか? + sponsors: Firefish の支援者 _nsfw: respect: "閲覧注意のメディアは隠す" ignore: "閲覧注意のメディアを隠さない" @@ -1959,3 +1960,9 @@ donationLink: 寄付ページへのリンク removeMember: メンバーを削除 removeQuote: 引用を削除 removeRecipient: 宛先を削除 +verifiedLink: 認証済みリンク +_feeds: + atom: Atom + rss: RSS + jsonFeed: JSONフィード + copyFeed: フィードのURLをコピー From 009655a18d468249683d6d0eb256aad19875344d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Wed, 19 Jul 2023 19:38:53 +0000 Subject: [PATCH 018/239] chore: Translated using Weblate (Russian) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ --- locales/ru-RU.yml | 69 ++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 7e52070746..4a82c2a40a 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1,6 +1,6 @@ _lang_: "Русский" headlineMisskey: "Сеть, сплетённая из заметок" -introMisskey: "Calckey - это децентрализованная платформа социальных сетей с открытым +introMisskey: "Firefish - это децентрализованная платформа социальных сетей с открытым исходным кодом, которая свободна навсегда! 🚀" monthAndDay: "{day}.{month}" search: "Поиск" @@ -27,7 +27,7 @@ noAccountDescription: "Пользователь ничего не написал login: "Войти" loggingIn: "Выполняется вход" logout: "Выйти" -signup: "Регистрация" +signup: "Зарегистрироваться" uploading: "Загрузка..." save: "Сохранить" users: "Пользователи" @@ -51,7 +51,7 @@ sendMessage: "Отправить сообщение" copyUsername: "Скопировать имя пользователя" searchUser: "Поиск людей" reply: "Ответить" -loadMore: "Показать еще" +loadMore: "Загрузить ещё" showMore: "Показать еще" showLess: "Закрыть" youGotNewFollower: "Новый подписчик" @@ -148,7 +148,7 @@ cacheRemoteFilesDescription: "Когда эта настройка отключ так как не будут создаваться эскизы." flagAsBot: "Аккаунт бота" flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит - системе Calckey учитывать это, а также поможет разработчикам других ботов предотвратить + системе Firefish учитывать это, а также поможет разработчикам других ботов предотвратить бесконечные циклы взаимодействия." flagAsCat: "Аккаунт кота" flagAsCatDescription: "Вы получите кошачьи ушки и будете говорить как кот!" @@ -214,7 +214,7 @@ noUsers: "Нет ни одного пользователя" editProfile: "Редактировать профиль" noteDeleteConfirm: "Вы хотите удалить этот пост?" pinLimitExceeded: "Нельзя закрепить ещё больше постов" -intro: "Установка Calckey завершена! А теперь создайте учетную запись администратора." +intro: "Установка Firefish завершена! А теперь создайте учетную запись администратора." done: "Готово" processing: "Обработка" preview: "Предпросмотр" @@ -401,7 +401,7 @@ exploreFediverse: "Исследуйте Fediverse" popularTags: "Популярные теги" userList: "Списки" about: "Описание" -aboutMisskey: "О Calckey" +aboutMisskey: "О Firefish" administrator: "Администратор" token: "Токен" twoStepAuthentication: "Двухфакторная аутентификация" @@ -560,7 +560,7 @@ ascendingOrder: "по возрастанию" descendingOrder: "По убыванию" scratchpad: "Когтеточка" scratchpadDescription: "«Когтеточка» — это место для опытов с AiScript. Здесь можно - писать программы, взаимодействующие с Calckey, запускать и смотреть что из этого + писать программы, взаимодействующие с Firefish, запускать и смотреть что из этого получается." output: "Выходы" script: "Скрипт" @@ -694,7 +694,7 @@ createNew: "Новый документ" optional: "Необязательно" createNewClip: "Новая подборка" public: "Общедоступно" -i18nInfo: "Calckey переводят на разные языки добровольцы со всего света. Ваша помощь +i18nInfo: "Firefish переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}." manageAccessTokens: "Управление токенами доступа" accountInfo: "Сведения об учётной записи" @@ -752,8 +752,8 @@ nUsers: "Пользователей: {n}" nNotes: "Постов: {n}" sendErrorReports: "Посылать отчёты о сбоях" sendErrorReportsDescription: "Если включено, когда возникнет какая-нибудь техническая - проблема, подробные сведения об этом будут отправлены разработчикам Calckey.\n Это - очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера, + проблема, подробные сведения об этом будут отправлены разработчикам Firefish.\n + Это очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера, журнал действий (что привело к сбою) и тому подобное." myTheme: "Личная тема" backgroundColor: "Фон" @@ -844,11 +844,11 @@ squareAvatars: "Квадратные аватарки" sent: "Отправить" received: "Получено" searchResult: "Результаты поиска" -hashtags: "Хэштег" +hashtags: "Хэштеги" troubleshooting: "Разрешение проблем" useBlurEffect: "Размытие в интерфейсе" learnMore: "Подробнее" -misskeyUpdated: "Calckey обновился!" +misskeyUpdated: "Firefish обновился!" whatIsNew: "Показать изменения" translate: "Перевод" translatedFrom: "Перевод. Язык оригинала — {x}" @@ -983,31 +983,31 @@ _registry: domain: "Домен" createKey: "Новый ключ" _aboutMisskey: - about: "Calckey это форк Calckey, сделанный ThatOneCalculator, разработка которого + about: "Firefish это форк Firefish, сделанный ThatOneCalculator, разработка которого началась с 2022." contributors: "Основные соавторы" allContributors: "Все соавторы" source: "Исходный код" - translation: "Перевод Calckey" - donate: "Пожертвование на Calckey" + translation: "Перевод Firefish" + donate: "Пожертвование на Firefish" morePatrons: "Большое спасибо и многим другим, кто принял участие в этом проекте! 🥰" patrons: "Материальная поддержка" patronsList: Перечислены в хронологическом порядке, а не по размеру пожертвования. Сделайте взнос по ссылке выше, чтобы ваше имя было здесь! - sponsors: Спонсоры Calckey - donateTitle: Понравился Calckey? - pleaseDonateToCalckey: Пожалуйста, поддержите разработку Calckey. + sponsors: Спонсоры Firefish + donateTitle: Понравился Firefish? + pleaseDonateToCalckey: Пожалуйста, поддержите разработку Firefish. _nsfw: respect: "Скрывать содержимое не для всех" ignore: "Показывать содержимое не для всех" force: "Скрывать вообще все файлы" _mfm: cheatSheet: "Подсказка по разметке MFM" - intro: "MFM — язык оформления текста,используемый в Calckey, Calckey, Akkoma и готов - для применения во многих местах. На этой странице собраны и кратко изложены способы - его использовать." - dummy: "Calckey расширяет границы Федиверса" + intro: "MFM — язык оформления текста, используемый в Misskey, Firefish, Akkoma, + который можно использовать во многих местах. На этой странице собраны и кратко + изложены способы его использовать." + dummy: "Firefish расширяет границы Федиверса" mention: "Упоминание" mentionDescription: "При помощи знака «собака» перед именем можно упомянуть какого-нибудь пользователя." @@ -1086,6 +1086,7 @@ _mfm: stop: Остановить MFM scale: Масштабировать fade: Затухание + position: Расположение _instanceTicker: none: "Не показывать" remote: "Только для других сайтов" @@ -1230,7 +1231,7 @@ _time: hour: "ч" day: "сут" _tutorial: - title: "Как использовать Calckey" + title: "Как использовать Firefish" step1_1: "Добро пожаловать!" step1_2: "Давайте настроим вас. Вы будете работать в кратчайшие сроки!" step2_1: "Сначала, пожалуйста, заполните свой профиль." @@ -1255,9 +1256,9 @@ _tutorial: step5_7: "Глобальная {icon} лента - это место, где вы можете видеть сообщения от всех других подключенных серверов." step6_1: "Итак, что это за место?" - step6_2: "Ну, вы не просто присоединились к Calckey. Вы вошли в Fediverse, взаимосвязанную + step6_2: "Ну, вы не просто присоединились к Firefish. Вы вошли в Fediverse, взаимосвязанную сеть из тысяч серверов." - step6_3: "Каждый сервер работает по-своему, и не на всех серверах работает Calckey. + step6_3: "Каждый сервер работает по-своему, и не на всех серверах работает Firefish. Но этот работает! Это немного сложно, но вы быстро разберетесь." step6_4: "Теперь идите, изучайте и развлекайтесь!" _2fa: @@ -1382,7 +1383,7 @@ _widgets: serverInfo: Информация о сервере _cw: hide: "Спрятать" - show: "Показать еще" + show: "Показать содержимое" chars: "знаков: {count}" files: "файлов: {count}" _poll: @@ -1738,7 +1739,7 @@ _pages: pick: "Выбор из списка" _pick: arg1: "Списки" - arg2: "Индекс" + arg2: "Позиция" listLen: "Количество элементов в списке" _listLen: arg1: "Списки" @@ -1801,7 +1802,7 @@ _notification: quote: "Цитаты" reaction: "Реакции" pollVote: "Голосования" - receiveFollowRequest: "Получен запрос на подписку" + receiveFollowRequest: "Полученные запросы на подписку" followRequestAccepted: "Запрос на подписку одобрен" groupInvited: "Приглашение в группы" app: "Уведомления из приложений" @@ -1928,7 +1929,7 @@ customSplashIconsDescription: URL-адреса для пользовательс загружает / перезагружает страницу. Пожалуйста, убедитесь, что изображения находятся на статическом URL-адресе, предпочтительно все с размером 192x192. logoImageUrl: URL изображения логотипа -showAdminUpdates: Указать, что доступна новая версия Calckey (только для администратора) +showAdminUpdates: Указать, что доступна новая версия Firefish (только для администратора) replayTutorial: Перезапустить туториал migration: Миграция showLocalPosts: 'Показать локальные посты в:' @@ -1948,7 +1949,7 @@ adminCustomCssWarn: Этот параметр следует использов знаете, что он делает. Ввод неправильных значений может привести к тому, что ВСЕ клиенты перестанут нормально функционировать. Пожалуйста, убедитесь, что ваш CSS работает должным образом, протестировав его в настройках вашего пользователя. -showUpdates: Показывать всплывающее окно при обновлении Calckey +showUpdates: Показывать всплывающее окно при обновлении Firefish recommendedInstances: Рекомендованные серверы defaultReaction: Эмодзи реакция по умолчанию для выходящих и исходящих постов license: Лицензия @@ -2037,7 +2038,7 @@ editNote: Редактировать заметку edited: 'Редактировано в {date} {time}' deleted: Удалённое removeReaction: Удалить вашу реакцию -searchPlaceholder: Искать в Calckey +searchPlaceholder: Искать в Firefish jumpToPrevious: Перейти к предыдущему listsDesc: Списки позволяют вам создавать ленты с постами указанных пользователей. Их можно найти на странице «Лента». @@ -2065,7 +2066,7 @@ xl: Очень крупно _experiments: enablePostImports: Включить импорт постов postImportsCaption: Позволяет пользователям импортировать свои посты из прошлых - учетных записей Calckey, Misskey, Mastodon, Akkoma и Pleroma. Это может вызвать + учетных записей Firefish, Misskey, Mastodon, Akkoma и Pleroma. Это может вызвать снижение скорости при загрузке, если ваша очередь перегружена. title: Эксперименты _skinTones: @@ -2109,7 +2110,7 @@ userSaysSomethingReasonRenote: '{name} распространил пост с {r userSaysSomethingReasonQuote: '{name} процитировал пост с {reason}' isBot: Этот аккаунт является ботом isAdmin: Администратор -isPatron: Патрон Calckey +isPatron: Патрон Firefish showPopup: Оповещать пользователей всплывающим окном neverShow: Не показывать снова remindMeLater: Возможно позже @@ -2118,7 +2119,7 @@ silencedWarning: Эта страница отображается потому, которые ваш администратор заглушил, поэтому они потенциально могут быть спамом. isModerator: Модератор noGraze: Пожалуйста, отключите расширение браузера "Graze для Mastodon", поскольку - оно мешает работе Calckey. + оно мешает работе Firefish. newer: новее older: старее showWithSparkles: Показать с блеском From 13d69524cae73d47d6ff61f421a9ec1281f6654b Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Wed, 19 Jul 2023 19:23:40 +0000 Subject: [PATCH 019/239] chore: Translated using Weblate (Russian) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ --- locales/ru-RU.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 4a82c2a40a..e8fd8a2054 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -998,6 +998,9 @@ _aboutMisskey: sponsors: Спонсоры Firefish donateTitle: Понравился Firefish? pleaseDonateToCalckey: Пожалуйста, поддержите разработку Firefish. + pleaseDonateToHost: Также не забудьте поддержать ваш домашний сервер {host}, чтобы + помочь с его операционными расходами. + donateHost: Пожертвовать на {host} _nsfw: respect: "Скрывать содержимое не для всех" ignore: "Показывать содержимое не для всех" @@ -1075,7 +1078,7 @@ _mfm: plain: Обычный текст plainDescription: Деактивирует эффекты всех MFM, содержащихся в этом эффекте MFM. play: Воспроизвести MFM - warn: '' + warn: 'MFM может содержать быстро-движущуюся или яркую анимацию' advanced: Расширенные MFM advancedDescription: Если выключено, позволяет только базовую разметку, если не воспроизводится анимированный MFM @@ -1087,6 +1090,12 @@ _mfm: scale: Масштабировать fade: Затухание position: Расположение + alwaysPlay: Всегда автозапускать все анимированные MFM + fadeDescription: Уменьшает и увеличивает видимость контента. + foreground: Цвет переднего плана + foregroundDescription: Изменить цвет текста на переднем плане. + positionDescription: Переместить содержимое на указанное значение. + scaleDescription: Масштабировать содержимое на указанную величину. _instanceTicker: none: "Не показывать" remote: "Только для других сайтов" From 385b23674a1da62dc83a85cc4c3874f494178910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AA=A0=E8=AA=A0-ChengCheng?= Date: Thu, 20 Jul 2023 03:13:01 +0000 Subject: [PATCH 020/239] chore: Translated using Weblate (Chinese (Traditional)) Currently translated at 97.1% (1783 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hant/ --- locales/zh-TW.yml | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 8b59b63a74..de24ea873e 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1236,6 +1236,18 @@ _2fa: step3: "輸入您的App提供的權杖以完成設定。" step4: "從現在開始,任何登入操作都將要求您提供權杖。" securityKeyInfo: "您可以設定使用支援FIDO2的硬體安全鎖、終端設備的指纹認證或者PIN碼來登入。" + renewTOTPCancel: 取消 + removeKey: 移除安全金鑰 + removeKeyConfirm: 真的要刪掉 {name} 嗎? + renewTOTP: 重新配置身份驗證器應用程式 + chromePasskeyNotSupported: 目前不支持 Chrome 密鑰。 + whyTOTPOnlyRenew: 只要註冊了安全金鑰,就無法刪除身份驗證器應用程式。 + renewTOTPConfirm: 這將導致您之前的身分驗證器應用程式停止工作 + securityKeyName: 取一個金鑰的名字 + tapSecurityKey: 請按照您的瀏覽器註冊安全金鑰或密碼 + token: 兩步驟驗證金鑰 + registerTOTPBeforeKey: 請設置身份驗證器應用程式以註冊安全金鑰或密碼。 + renewTOTPOk: 重新配置 _permissions: "read:account": "查看我的帳戶資訊" "write:account": "更改我的帳戶資訊" @@ -1272,16 +1284,19 @@ _permissions: _auth: shareAccess: "要授權「“{name}”」存取您的帳戶嗎?" shareAccessAsk: "您確定要授權這個應用程式使用您的帳戶嗎?" - permissionAsk: "此應用程式需要以下權限" + permissionAsk: "此應用程式需要以下權限:" pleaseGoBack: "請返回至應用程式" callback: "回到應用程式" denied: "拒絕訪問" + copyAsk: 請將以下授權代碼貼上到應用程式中: + allPermissions: 完全帳戶訪問許可權 _antennaSources: all: "全部貼文" homeTimeline: "來自已追隨使用者的貼文" users: "來自特定使用者的貼文" userList: "來自特定清單中的貼文" userGroup: "來自特定群組的貼文" + instances: 伺服器上所有使用者的貼文 _weekday: sunday: "週日" monday: "週一" @@ -1297,22 +1312,29 @@ _widgets: calendar: "行事曆" trends: "發燒貼文" clock: "時鐘" - rss: "RSS閱讀器" - rssTicker: "RSS跑馬燈" + rss: "RSS 閱讀器" + rssTicker: "RSS 跑馬燈" activity: "動態" photos: "照片" digitalClock: "電子時鐘" unixClock: "UNIX時間" federation: "聯邦宇宙" - instanceCloud: "伺服器雲端" + instanceCloud: "伺服器雲" postForm: "發佈窗口" slideshow: "幻燈片" button: "按鈕" onlineUsers: "線上的用戶" jobQueue: "佇列" serverMetric: "伺服器指標" - aiscript: "AiScript控制台" + aiscript: "AiScript 控制台" aichan: "小藍" + serverInfo: 伺服器資訊 + userList: 使用者列表 + _userList: + chooseList: 選擇一個清單 + meiliIndexCount: 編入索引的帖子 + meiliStatus: 伺服器狀態 + meiliSize: 索引大小 _cw: hide: "隱藏" show: "瀏覽更多" @@ -1342,11 +1364,11 @@ _poll: remainingSeconds: "{s}秒後截止" _visibility: public: "公開" - publicDescription: "發布給所有用戶" + publicDescription: "發佈至公開時間線" home: "不在主頁顯示" homeDescription: "僅發送至首頁的時間線" followers: "追隨者" - followersDescription: "僅發送至關注者" + followersDescription: "僅發佈至關注者" specified: "指定使用者" specifiedDescription: "僅發送至指定使用者" localOnly: "僅限本地" @@ -1741,6 +1763,7 @@ _notification: followBack: "回關" reply: "回覆" renote: "轉發" + reacted: 對您的貼文做出了反應 _deck: alwaysShowMainColumn: "總是顯示主欄" columnAlign: "對齊欄位" From 158b6cbdd20cee60e10868fbdde7d6d0d4942f11 Mon Sep 17 00:00:00 2001 From: ltlapy Date: Thu, 20 Jul 2023 10:03:29 +0000 Subject: [PATCH 021/239] chore: Translated using Weblate (Korean) Currently translated at 88.2% (1621 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ --- locales/ko-KR.yml | 234 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 208 insertions(+), 26 deletions(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 459274166c..746f22ade5 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1,7 +1,8 @@ ---- _lang_: "한국어" headlineMisskey: "노트로 연결되는 네트워크" -introMisskey: "환영합니다! Calckey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀" +introMisskey: "환영합니다! Calckey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 + 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n + 새로운 세계를 탐험해 보세요🚀" monthAndDay: "{month}월 {day}일" search: "검색" notifications: "알림" @@ -81,7 +82,8 @@ error: "오류" somethingHappened: "오류가 발생했습니다" retry: "다시 시도" pageLoadError: "페이지를 불러오지 못했습니다." -pageLoadErrorDescription: "네트워크 연결 또는 브라우저 캐시로 인해 발생했을 가능성이 높습니다. 캐시를 삭제하거나, 잠시 후 다시 시도해 주세요." +pageLoadErrorDescription: "네트워크 연결 또는 브라우저 캐시로 인해 발생했을 가능성이 높습니다. 캐시를 삭제하거나, 잠시 후 + 다시 시도해 주세요." serverIsDead: "서버로부터 응답이 없습니다. 잠시 후 다시 시도해주세요." youShouldUpgradeClient: "이 페이지를 표시하려면 새로고침하여 새로운 버전의 클라이언트를 이용해 주십시오." enterListName: "리스트 이름을 입력" @@ -137,9 +139,11 @@ emojiUrl: "이모지 URL" addEmoji: "이모지 추가" settingGuide: "추천 설정" cacheRemoteFiles: "리모트 파일을 캐시" -cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다." +cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 + 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다." flagAsBot: "나는 봇입니다" -flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우에 활성화해 주세요. 이 플래그를 활성화하면, 다른 봇이 이를 참고하여 봇 끼리의 무한 연쇄 반응을 회피하거나, 이 계정의 시스템 상에서의 취급이 Bot 운영에 최적화되는 등의 변화가 생깁니다." +flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우에 활성화해 주세요. 이 플래그를 활성화하면, 다른 봇이 이를 참고하여 + 봇 끼리의 무한 연쇄 반응을 회피하거나, 이 계정의 시스템 상에서의 취급이 Bot 운영에 최적화되는 등의 변화가 생깁니다." flagAsCat: "나는 고양이다냥" flagAsCatDescription: "이 계정이 고양이라면 활성화 해주세요." flagShowTimelineReplies: "타임라인에 노트의 답글을 표시하기" @@ -156,7 +160,9 @@ searchWith: "검색: {q}" youHaveNoLists: "리스트가 없습니다" followConfirm: "{name}님을 팔로우 하시겠습니까?" proxyAccount: "프록시 계정" -proxyAccountDescription: "프록시 계정은 특정 조건 하에서 유저의 리모트 팔로우를 대행하는 계정입니다. 예를 들면, 유저가 리모트 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 인스턴스로 배달되지 않기 때문에, 대신 프록시 계정이 해당 유저를 팔로우하도록 합니다." +proxyAccountDescription: "프록시 계정은 특정 조건 하에서 유저의 리모트 팔로우를 대행하는 계정입니다. 예를 들면, 유저가 리모트 + 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 인스턴스로 배달되지 않기 때문에, 대신 프록시 계정이 + 해당 유저를 팔로우하도록 합니다." host: "호스트" selectUser: "유저 선택" recipient: "수신인" @@ -190,7 +196,8 @@ clearQueueConfirmText: "대기열에 남아 있는 노트는 더이상 연합되 clearCachedFiles: "캐시 비우기" clearCachedFilesConfirm: "캐시된 리모트 파일을 모두 삭제하시겠습니까?" blockedInstances: "차단된 인스턴스" -blockedInstancesDescription: "차단하려는 인스턴스의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 인스턴스는 이 인스턴스와 통신할 수 없게 됩니다." +blockedInstancesDescription: "차단하려는 인스턴스의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 인스턴스는 이 인스턴스와 + 통신할 수 없게 됩니다." muteAndBlock: "뮤트 및 차단" mutedUsers: "뮤트한 유저" blockedUsers: "차단한 유저" @@ -239,7 +246,8 @@ saved: "저장하였습니다" messaging: "대화" upload: "업로드" keepOriginalUploading: "원본 이미지를 유지" -keepOriginalUploadingDescription: "이미지를 업로드할 때에 원본을 그대로 유지합니다. 비활성화하면 업로드할 때 브라우저에서 웹 공개용 이미지를 생성합니다." +keepOriginalUploadingDescription: "이미지를 업로드할 때에 원본을 그대로 유지합니다. 비활성화하면 업로드할 때 브라우저에서 + 웹 공개용 이미지를 생성합니다." fromDrive: "드라이브에서" fromUrl: "URL로부터" uploadFromUrl: "URL 업로드" @@ -347,7 +355,8 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "reCAPTCHA 활성화" recaptchaSiteKey: "사이트 키" recaptchaSecretKey: "시크릿 키" -avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다." +avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? + 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다." antennas: "안테나" manageAntennas: "안테나 관리" name: "이름" @@ -483,15 +492,20 @@ showFeaturedNotesInTimeline: "타임라인에 추천 노트를 표시" objectStorage: "오브젝트 스토리지" useObjectStorage: "오브젝트 스토리지를 사용" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "오브젝트 (미디어) 참조 URL 을 만들 때 사용되는 URL입니다. CDN 또는 프록시를 사용하는 경우 그 URL을 지정하고, 그 외의 경우 사용할 서비스의 가이드에 따라 공개적으로 액세스 할 수 있는 주소를 지정해 주세요. 예를 들어, AWS S3의 경우 'https://.s3.amazonaws.com', GCS등의 경우 'https://storage.googleapis.com/' 와 같이 지정합니다." +objectStorageBaseUrlDesc: "오브젝트 (미디어) 참조 URL 을 만들 때 사용되는 URL입니다. CDN 또는 프록시를 사용하는 + 경우 그 URL을 지정하고, 그 외의 경우 사용할 서비스의 가이드에 따라 공개적으로 액세스 할 수 있는 주소를 지정해 주세요. 예를 들어, AWS + S3의 경우 'https://.s3.amazonaws.com', GCS등의 경우 'https://storage.googleapis.com/' + 와 같이 지정합니다." objectStorageBucket: "Bucket" objectStorageBucketDesc: "사용 서비스의 bucket명을 지정해주세요." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "이 Prefix 의 디렉토리 아래에 파일이 저장됩니다." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "AWS S3의 경우 공란, 다른 서비스의 경우 각 서비스의 가이드에 맞게 endpoint를 설정해주세요. '' 혹은 ':' 와 같이 지정합니다." +objectStorageEndpointDesc: "AWS S3의 경우 공란, 다른 서비스의 경우 각 서비스의 가이드에 맞게 endpoint를 설정해주세요. + '' 혹은 ':' 와 같이 지정합니다." objectStorageRegion: "Region" -objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 경우, 비워 두거나 'us-east-1'으로 설정해 주세요." +objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 + 경우, 비워 두거나 'us-east-1'으로 설정해 주세요." objectStorageUseSSL: "SSL 사용" objectStorageUseSSLDesc: "API 호출시 HTTPS 를 사용하지 않는 경우 OFF 로 설정해 주세요" objectStorageUseProxy: "연결에 프록시를 사용" @@ -523,7 +537,8 @@ sort: "정렬" ascendingOrder: "오름차순" descendingOrder: "내림차순" scratchpad: "스크래치 패드" -scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Calckey 와 상호 작용하는 코드를 작성, 실행 및 결과를 확인할 수 있습니다." +scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Calckey 와 상호 작용하는 코드를 작성, + 실행 및 결과를 확인할 수 있습니다." output: "출력" script: "스크립트" disablePagesScript: "Pages 에서 AiScript 를 사용하지 않음" @@ -531,11 +546,13 @@ updateRemoteUser: "리모트 유저 정보 갱신" deleteAllFiles: "모든 파일 삭제" deleteAllFilesConfirm: "모든 파일을 삭제하시겠습니까?" removeAllFollowing: "모든 팔로잉 해제" -removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요." +removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 + 된 경우 등에 실행해 주세요." userSuspended: "이 계정은 정지된 상태입니다." userSilenced: "이 계정은 사일런스된 상태입니다." yourAccountSuspendedTitle: "계정이 정지되었습니다" -yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오." +yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 + 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오." menu: "메뉴" divider: "구분선" addItem: "항목 추가" @@ -614,7 +631,8 @@ useGlobalSetting: "글로벌 설정을 사용하기" useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용됩니다. 비활성화하면 개별적으로 설정할 수 있게 됩니다." other: "기타" regenerateLoginToken: "로그인 토큰을 재생성" -regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다." +regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. + 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다." setMultipleBySeparatingWithSpace: "공백으로 구분하여 여러 개 설정할 수 있습니다." fileIdOrUrl: "파일 ID 또는 URL" behavior: "동작" @@ -699,7 +717,8 @@ onlineUsersCount: "{n}명이 접속 중" nUsers: "{n} 유저" nNotes: "{n} 노트" sendErrorReports: "오류 보고서 보내기" -sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Misskey에 보내어 더 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다." +sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Misskey에 보내어 더 + 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다." myTheme: "내 테마" backgroundColor: "배경 색" accentColor: "강조 색상" @@ -780,7 +799,8 @@ emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다." ratio: "비율" previewNoteText: "본문 미리보기" customCss: "CSS 사용자화" -customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 있습니다." +customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 + 있습니다." global: "글로벌" squareAvatars: "프로필 아이콘을 사각형으로 표시" sent: "전송" @@ -795,7 +815,8 @@ whatIsNew: "패치 정보 보기" translate: "번역" translatedFrom: "{x}에서 번역" accountDeletionInProgress: "계정 삭제 작업을 진행하고 있습니다" -usernameInfo: "서버상에서 계정을 식별하기 위한 이름. 알파벳(a~z, A~Z), 숫자(0~9) 및 언더바(_)를 사용할 수 있습니다. 사용자명은 나중에 변경할 수 없습니다." +usernameInfo: "서버상에서 계정을 식별하기 위한 이름. 알파벳(a~z, A~Z), 숫자(0~9) 및 언더바(_)를 사용할 수 있습니다. + 사용자명은 나중에 변경할 수 없습니다." aiChanMode: "아이 모드" keepCw: "CW 유지하기" pubSub: "Pub/Sub 계정" @@ -884,8 +905,10 @@ cannotUploadBecauseInappropriate: "이 파일은 부적절한 내용을 포함 cannotUploadBecauseNoFreeSpace: "드라이브 용량이 부족하여 업로드할 수 없습니다." beta: "베타" enableAutoSensitive: "자동 NSFW 탐지" -enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, 인스턴스 정책에 따라 자동으로 설정될 수 있습니다." -activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. 해제할 경우 이메일 형식에 대해서만 검사합니다." +enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, + 인스턴스 정책에 따라 자동으로 설정될 수 있습니다." +activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. + 해제할 경우 이메일 형식에 대해서만 검사합니다." navbar: "네비게이션 바" shuffle: "셔플" account: "계정" @@ -893,7 +916,8 @@ move: "이동" _sensitiveMediaDetection: description: "기계학습을 통해 자동으로 민감한 미디어를 탐지하여, 모더레이션에 참고할 수 있도록 합니다. 서버의 부하를 약간 증가시킵니다." sensitivity: "탐지 민감도" - sensitivityDescription: "민감도가 낮을수록 안전한 미디어가 잘못 탐지될 확률이 줄어들며, 높을수록 민감한 미디어가 탐지되지 않을 확률이 줄어듭니다." + sensitivityDescription: "민감도가 낮을수록 안전한 미디어가 잘못 탐지될 확률이 줄어들며, 높을수록 민감한 미디어가 탐지되지 + 않을 확률이 줄어듭니다." setSensitiveFlagAutomatically: "자동으로 NSFW로 설정하기" setSensitiveFlagAutomaticallyDescription: "이 설정을 해제해도 탐지 결과는 유지됩니다." analyzeVideos: "동영상도 같이 확인하기" @@ -911,7 +935,8 @@ _ffVisibility: _signup: almostThere: "거의 다 끝났습니다" emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다." - emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요." + emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 + 주세요." _accountDelete: accountDelete: "계정 삭제" mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다." @@ -973,13 +998,20 @@ _aboutMisskey: donate: "Misskey에 기부하기" morePatrons: "이 외에도 다른 많은 분들이 도움을 주시고 계십니다. 감사합니다🥰" patrons: "후원자" + patronsList: 기부 금액이 아닌 시간 순서로 정렬합니다. 위 링크를 통해 후원하여 당신의 이름을 새겨 보세요! + sponsors: Firefish 스폰서 + pleaseDonateToHost: 또한, 이 서버 {host} 의 운영자에게 기부하는 것도 검토하여 주십시오. + pleaseDonateToCalckey: Firefish의 개발에 후원하는 것을 검토하여 주십시오. + donateHost: '{host} 에게 기부하기' + donateTitle: Firefish가 마음에 드시나요? _nsfw: respect: "열람주의로 설정된 미디어 숨기기" ignore: "열람 주의 미디어 항상 표시" force: "미디어 항상 숨기기" _mfm: cheatSheet: "MFM 도움말" - intro: "MFM는 Misskey의 다양한 곳에서 사용할 수 있는 전용 마크업 언어입니다. 여기에서는 MFM에서 사용할 수 있는 구문을 확인할 수 있습니다." + intro: "MFM는 Misskey의 다양한 곳에서 사용할 수 있는 전용 마크업 언어입니다. 여기에서는 MFM에서 사용할 수 있는 구문을 확인할 + 수 있습니다." dummy: "Misskey로 연합우주의 세계가 펼쳐집니다" mention: "멘션" mentionDescription: "골뱅이표(@) 뒤에 사용자명을 넣어 특정 유저를 나타낼 수 있습니다." @@ -1043,6 +1075,13 @@ _mfm: rotateDescription: "지정한 각도로 회전시킵니다." plain: "평문" plainDescription: "안에 있는 MFM 구문을 모두 무시하고 평문으로 표시합니다." + stop: MFM 멈춤 + play: MFM 재생 + advancedDescription: 비활성화하면 MFM 재생 중을 제외하고 기본적인 MFM만 표시합니다 + fade: '' + advanced: 고급 MFM + warn: 빠르게 움직이거나 반짝이는 애니메이션을 포함할 가능성이 있습니다 + alwaysPlay: MFM 애니메이션을 자동 재생하기 _instanceTicker: none: "보이지 않음" remote: "리모트 유저에게만 보이기" @@ -1186,7 +1225,8 @@ _2fa: step2Url: "데스크톱 앱에서는 다음 URL을 입력하세요:" step3: "앱에 표시된 토큰을 입력하시면 완료됩니다." step4: "다음 로그인부터는 토큰을 입력해야 합니다." - securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 수 있습니다." + securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 + 수 있습니다." _permissions: "read:account": "계정의 정보를 봅니다" "write:account": "계정의 정보를 변경합니다" @@ -1319,7 +1359,8 @@ _profile: youCanIncludeHashtags: "해시 태그를 포함할 수 있습니다." metadata: "추가 정보" metadataEdit: "추가 정보 편집" - metadataDescription: "프로필에 추가 정보를 표시할 수 있어요. {rel}과 함께 {a} 태그 또는 {l} 태그를 추가하여 프로필의 링크를 확인할 수 있습니다!" + metadataDescription: "프로필에 추가 정보를 표시할 수 있어요. {rel}과 함께 {a} 태그 또는 {l} 태그를 추가하여 프로필의 + 링크를 확인할 수 있습니다!" metadataLabel: "라벨" metadataContent: "내용" changeAvatar: "아바타 이미지 변경" @@ -1715,3 +1756,144 @@ _deck: list: "리스트" mentions: "받은 멘션" direct: "다이렉트" +removeReaction: 리액션 취소 +flagSpeakAsCat: 고양이체로 말하기 +silenceThisInstance: 이 서버를 사일런스 +silencedInstancesDescription: 사일런스할 서버의 호스트를 한 줄에 하나씩 입력합니다. 사일런스된 서버의 유저는 모두 사일런스인 + 것처럼 취급되며, 이 서버에서의 팔로우가 모두 팔로우 요청으로 바뀌고, 팔로워가 아닌 로컬 계정은 멘션할 수 없습니다. 차단한 서버에는 적용되지 + 않습니다. +noInstances: 서버가 없습니다 +silenced: 사일런스됨 +manageGroups: 그룹 관리 +clipsDesc: 클립은 분류 및 공유가 가능한 북마크입니다. 각 게시물의 메뉴에서 클립을 작성할 수 있습니다. +privateMode: 비공개 모드 +audio: 오디오 +customKaTeXMacro: 커스텀 KaTeX 매크로 +replayTutorial: 튜토리얼 다시 보기 +renoteMute: 부스트 뮤트 +antennaInstancesDescription: 서버 호스트를 한 줄에 하나씩 입력하세요 +userSaysSomethingReason: '{name} 님이 {reason}에 대해 말했습니다' +userSaysSomethingReasonQuote: '{name} 님이 {reason} 을 포함하는 노트를 인용했습니다' +pushNotification: 푸시 알림 +channelFederationWarn: 현재 채널은 다른 서버로 연합되지 않습니다 +enableServerMachineStats: 서버의 머신 정보를 공개 +sendModMail: 모더레이션 알림을 보내기 +instanceSecurity: 서버 보안 +privateModeInfo: 활성화하면 허가된 서버에서의 요청에만 응답합니다. +seperateRenoteQuote: 부스트와 인용 버튼을 나누기 +cannotUploadBecauseExceedsFileSizeLimit: 파일 크기 제한을 초과하여 업로드할 수 없습니다. +pushNotificationNotSupported: 브라우저 및 서버가 푸시 알림을 지원하지 않습니다 +enableRecommendedTimeline: 추천 타임라인을 활성화 +pushNotificationAlreadySubscribed: 푸시 알림이 활성화되었습니다 +caption: 자동 캡션 +findOtherInstance: 다른 서버 둘러보기 +enableIdenticonGeneration: 유저 별 Identicon의 생성을 활성화 +secureModeInfo: 인증 정보가 없는 리모트 서버로부터의 요청에 응답하지 않습니다. +allowedInstances: 허가된 서버 +flagSpeakAsCatDescription: 고양이체를 활성화하면 게시물이 '나'가 '냐'로 바뀌는 등의 변화가 생깁니다 +showUpdates: Firefish 업데이트가 있을 때 알리기 +noGraze: '"Graze for Mastodon" 확장 기능은 Firefish의 정상적인 동작을 방해므로, 비활성화해 주시기 바랍니다.' +adminCustomCssWarn: 이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 모든 유저의 클라이언트가 정상적으로 + 작동하지 않을 수 있습니다. 개인 클라이언트 설정에서 적용하여 정상적으로 동작하는 지 확인하십시오. +customSplashIconsDescription: 유저가 페이지를 로딩/새로고침할 때 마다 무작위로 표시할 아이콘을 한 줄에 하나씩 입력합니다. + 이미지는 되도록 정적 URL으로 구성하고, 192x192 해상도로 조정하여 주십시오. +moveFromDescription: '이전 계정에 대한 별칭을 작성하여, 이 계정으로 옮길 수 있도록 합니다. 반드시 계정을 이전하기 전에 수행해야 + 합니다. 이전 계정을 다음과 같은 형식으로 입력하여 주십시오: @person@server.com' +indexFromDescription: 빈 칸으로 두면 모든 게시물을 인덱싱합니다 +customKaTeXMacroDescription: 'KaTeX 매크로를 지정하여 수식을 더욱 편리하게 입력하세요! LaTeX의 커맨드 정의와 동일하게 + \newcommand{\ 이름}{내용} 또는 \newcommand{\이름}[인수 갯수]{내용} 와 같이 입력하십시오. 예를 들어 \newcommand{\add}[2]{#1 + + #2} 와 같이 정의한 경우 \add{3}{foo} 를 입력하면 3 + foo 으로 치환됩니다.매크로의 이름을 감싸는 중괄호를 소괄호() 또는 + 대괄호[]로 변경할 경우, 매크로 인수에 사용하는 괄호도 같이 변경됩니다. 매크로는 한 줄에 하나씩 입력해야 하며, 반대로 매크로 정의에서 줄바꿈은 + 사용할 수 없습니다. 올바르지 않은 정의는 무시됩니다. 문자열을 치환하는 수준에서만 지원하며, 조건 분기와 같은 고도의 구문은 사용할 수 없습니다.' +reactionPickerSkinTone: 선호하는 이모지 피부 톤 +selectInstance: 서버 선택 +showAds: 광고 보이기 +searchPlaceholder: Firefish를 검색 +addInstance: 서버 추가 +listsDesc: 리스트를 사용하여 특정 유저로 이루어진 타임라인을 구성할 수 있습니다. 리스트는 '타임라인' 페이지에서 접근할 수 있습니다. +enableEmojiReactions: 이모지 리액션을 활성화 +showEmojisInReactionNotifications: 리액션 알림에 이모지 보이기 +hiddenTagsDescription: 트렌드와 '발견하기'에서 제외할 해시태그를 ('#'을 제외하고) 한 줄에 하나씩 입력하여 주십시오. 이 설정은 + 트렌드와 '발견하기' 외에는 영향을 주지 않습니다. +antennasDesc: "안테나에서는 조건에 맞는 게시물이 표시됩니다.\n'타임라인' 페이지에서 접근할 수 있습니다." +expandOnNoteClick: 노트를 클릭하여 자세히 표시 +expandOnNoteClickDesc: 비활성화한 경우에도 우클릭 메뉴 또는 타임스탬프를 클릭하여 열 수 있습니다. +customMOTDDescription: 유저가 페이지를 로딩/새로고침할 때 마다 무작위로 표시할 메시지를 한 줄에 하나씩 입력합니다. +moveFrom: 다른 계정에서 이 계정으로 이사하기 +moveAccount: 이사하기! +enterSendsMessage: 메시지에서 Return 키를 눌러 전송합니다. (기본값은 Ctrl + Return) +verifiedLink: 인증된 링크 +alt: 설명 +statusbar: 스테이터스 바 +subscribePushNotification: 푸시 알림을 활성화 +sendPushNotificationReadMessage: 알림이나 메시지를 읽은 뒤에 푸시 알림을 삭제 +sendPushNotificationReadMessageCaption: '"{emptyPushNotificationMessage}" 라는 알림을 짧은 + 기간 동안 표시합니다. 기기의 배터리 소모가 늘어날 수 있습니다.' +recommendedInstancesDescription: 추천 타임라인에 표시할 서버를 한 줄에 하나씩 입력하여 주십시오. +enableCustomKaTeXMacro: 커스텀 KaTeX 매크로를 사용 +swipeOnMobile: 페이지 간 스와이프를 활성화 +swipeOnDesktop: 데스크톱에서도 모바일과 같은 스와이프를 사용 +migration: 계정 이사 +moveTo: 이 계정에서 새로운 계정으로 이사 +deleted: 삭제됨 +editNote: 노트 편집 +edited: '편짐됨: {date} {time}' +customMOTD: 사용자 지정 MOTD (스플래시 화면 메시지) +selectChannel: 채널 선택 +allowedInstancesDescription: 연합을 허가하려는 서버를 한 줄에 하나씩 입력합니다. 비공개 모드에서만 유효합니다. +splash: 스플래시 화면 +preventAiLearningDescription: 업로드한 게시물이나 미디어를 AI 모델이 학습하지 말기를 요구합니다. +isBot: 이 계정은 봇입니다 +isAdmin: 관리자 +newer: 새로운 노트 +older: 이전 노트 +renoteUnmute: 부스트 뮤트 해제 +accountMoved: '이 유저는 다른 계정으로 이사했습니다:' +silencedInstances: 사일런스한 서버 +accessibility: 접근성 +userSaysSomethingReasonReply: '{name} 님이 {reason} 을 포함하는 노트에 답글했습니다' +userSaysSomethingReasonRenote: '{name} 님이 {reason} 을 포함하는 노트를 부스트했습니다' +breakFollowConfirm: 팔로워를 해제하시겠습니까? +indexFrom: 이 게시물 ID부터 인덱싱하기 +noThankYou: 괜찮습니다 +hiddenTags: 숨길 해시태그 +image: 이미지 +video: 동영상 +jumpToPrevious: 이전으로 +cw: 열람주의 +secureMode: 보안 모드 (Authorized Fetch) +xl: 매우 크게 +unsubscribePushNotification: 푸시 알림을 끄기 +customSplashIcons: 사용자 지정 스플래시 화면 아이콘 (URL) +recommendedInstances: 추천 서버 +updateAvailable: 업데이트가 있습니다! +logoImageUrl: 로고 이미지 URL +showAdminUpdates: 새로운 Firefish 버전이 있을 때 알리기 (관리자 전용) +moveToLabel: '이사 갈 계정:' +moveAccountDescription: '이 작업은 되돌릴 수 없습니다. 계정을 옮기기 전에, 새로운 계정에서 이 계정에 대한 별칭을 지정하여 + 주십시오. 별칭을 지정하였다면, 이사 갈 계정을 다음과 같은 형식으로 입력하여 주십시오: @person@server.com' +defaultReaction: 리모트와 로컬 게시물에 대한 기본 이모지 리액션 +showPopup: 유저에게 팝업으로 알리기 +showWithSparkles: 제목에 스파클 효과 넣기 +youHaveUnreadAnnouncements: 읽지 않은 공지사항이 있습니다 +donationLink: 기부 페이지 링크 +moveFromLabel: '이사하기 전의 계정:' +neverShow: 앞으로 표시하지 않기 +remindMeLater: 나중에 +removeQuote: 인용을 삭제 +removeRecipient: 수신인을 삭제 +removeMember: 멤버를 삭제 +license: 라이선스 +migrationConfirm: "정말로 이 계정을 {account}로 이사하시겠습니까? 한 번 이사하면, 현재 이 계정은 두 번 다시 사용할 수 + 없게 됩니다.\n또한, 이사 갈 계정에 현재 사용 중인 계정의 별칭을 올바르게 작성하였는지 다시 한 번 확인하십시오." +indexPosts: 게시물을 인덱싱 +indexNotice: 인덱싱을 시작했습니다. 이 작업은 시간이 많이 소요되므로, 최소 1시간 이내에 서버를 재시작하지 마십시오. +noteId: 게시물 ID +signupsDisabled: 현재 이 서버에서는 신규 등록을 받고 있지 않습니다. 초대 코드를 가지고 계신 경우 아래 칸에 입력해 주십시오. 초대 + 코드를 가지고 있지 않더라도, 신규 등록이 열려 있는 다른 서버에 등록하실 수 있습니다! +apps: 앱 +preventAiLearning: AI에 의한 학습을 막기 +isLocked: 이 계정은 팔로우를 수동으로 승인합니다 +silencedWarning: 관리자가 사일런스한 서버에 속한 유저이며, 스팸이거나 원치 않는 내용을 포함할 가능성이 있습니다. +isModerator: 모더레이터 +isPatron: Firefish 후원자 From 5e1436da8c647194dcdd8ce00aed4521583ff63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Thu, 20 Jul 2023 08:52:31 +0000 Subject: [PATCH 022/239] chore: Translated using Weblate (Galician) Currently translated at 13.9% (257 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/gl/ --- locales/gl.yml | 267 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) diff --git a/locales/gl.yml b/locales/gl.yml index 891a81927f..02406c2b00 100644 --- a/locales/gl.yml +++ b/locales/gl.yml @@ -15,3 +15,270 @@ searchPlaceholder: Buscar en Calckey username: Identificador fetchingAsApObject: Descargando desde o Fediverso ok: OK +youShouldUpgradeClient: Actualiza esta páxina para recibir os últimos contidos no + teu cliente. +privacy: Privacidade +makeFollowManuallyApprove: As solicitudes de seguimento requiren aprobación +defaultNoteVisibility: Visibilidade por defecto +follow: Seguir +followRequests: Solicitudes de seguimento +followRequestPending: Solicitude de seguimento pendente +renote: Promover +unrenote: Retirar promoción +renoted: Promovida. +cantReRenote: Unha promoción non pode ser promovida. +quote: Citar +pinnedNote: Publicación fixada +pinned: Fixar no perfil +you: Ti +clickToShow: Preme para mostrar +sensitive: NSFW +add: Engadir +reaction: Reaccións +removeReaction: Quitar a túa reacción +enableEmojiReactions: Activar as reaccións con emojis +showEmojisInReactionNotifications: Mostrar emojis nas notificacións das reaccións +reactionSetting: Reaccións mostradas no selector de reaccións +reactionSettingDescription2: Arrastra para reordenar, preme para eliminar, preme "+" + para engadir. +rememberNoteVisibility: Lembrar os axustes da visibilidade da publicación +attachCancel: Quitar o anexo +markAsSensitive: Marcar como NSFW +unmarkAsSensitive: Retirar marca NSFW +enterFileName: Escribe nome do ficheiro +mute: Acalar +unmute: Reactivar +renoteMute: Acalar promocións +renoteUnmute: Reactivar promocións +block: Bloquear +unblock: Desbloquear +suspend: Suspender +unsuspend: Retirar suspensión +timeline: Cronoloxía +noAccountDescription: Esta usuaria aínda non escribiu a súa bio. +login: Acceder +loggingIn: Accedendo +logout: Pechar sesión +signup: Crear conta +uploading: Subindo... +save: Gardar +users: Usuarias +addUser: Engadir unha usuaria +addInstance: Engadir un servidor +favorite: Engadir aos marcadores +favorites: Marcadores +unfavorite: Quitar dos marcadores +favorited: Engadido aos marcadores. +alreadyFavorited: Xa está nos marcadores. +cantFavorite: Non se puido engadir aos marcadores. +pin: Fixar no perfil +unpin: Soltar do perfil +copyContent: Copiar contidos +copyLink: Copiar ligazón +delete: Eliminar +deleted: Eliminado +deleteAndEdit: Eliminar e editar +blockConfirm: Tes a certeza de querer bloquear esta conta? +deleteAndEditConfirm: Tes a certeza de querer eliminar esta publicación e editala? + Perderás todas as súas reaccións, promocións e respostas. +editNote: Editar nota +edited: Editado o {date} {time} +sendMessage: Enviar unha mensaxe +copyUsername: Copiar identificador +searchUser: Buscar unha usuaria +reply: Responder +jumpToPrevious: Ir á anterior +loadMore: Cargar máis +showMore: Mostrar máis +newer: máis novo +older: máis antigo +showLess: Pechar +youGotNewFollower: seguíute +receiveFollowRequest: Recibida solicitude de seguimento +followRequestAccepted: Solicitude de seguimento aceptada +mention: Mención +mentions: Mencións +directNotes: Mensaxes directas +cw: Aviso sobre o contido +importAndExport: Importar/Exportar datos +import: Importar +export: Exportar +files: Ficheiros +download: Descargar +unblockConfirm: Tes a certeza de querer retirarlle o bloqueo a esta conta? +suspendConfirm: Tes a certeza de querer suspender esta conta? +unsuspendConfirm: Tes a certeza de querer retirarlle a suspensión a esta conta? +selectList: Elixe unha lista +selectAntenna: Elixe unha antena +selectWidget: Elixe un widget +selectChannel: Elixe unha canle +editWidgets: Editar widgets +editWidgetsExit: Feito +customEmojis: Emoji personalizado +emoji: Emoji +emojis: Emoji +emojiName: Nome do emoji +emojiUrl: URL do emoji +addEmoji: Engadir +settingGuide: Axustes recomendados +cacheRemoteFiles: Gardar na caché ficheiros remotos +cacheRemoteFilesDescription: Se desactivas este axuste, os ficheiros remotos cárganse + directamente desde o servidor remoto. Ao desactivalo diminuirá a almacenaxe usada, + pero incrementarás o tráfico, xa que non se crearán miniaturas. +flagAsBotDescription: Activa esta opción se esta conta está controlada por un programa. + Se está activada, será unha marca para que outras desenvolvedoras eviten interaccións + en bucle con outros bots e axustará os sistemas internos de Firefish para tratar + esta conta como un bot. +flagAsCat: Es un gato? 😺 +flagAsCatDescription: Vas ter orellas de gato e falar como un gato! +flagSpeakAsCat: Fala como un gato +flagSpeakAsCatDescription: As túas publicacións serán gatificadas ao estar no modo + gato +flagShowTimelineReplies: Mostrar respostas na cronoloxía +flagShowTimelineRepliesDescription: Se está activado mostra as respostas das usuarias + a publicacións de outras usuarias na cronoloxía. +autoAcceptFollowed: Aprobar automáticamente as solicitudes de seguimento das persoas + que ti xa segues +addAccount: Engadir conta +loginFailed: Fallou o inicio de sesión +showOnRemote: Abrir páxina orixinal +general: Xeral +accountMoved: 'A usuaria está nunha nova conta:' +wallpaper: Fondo de pantalla +setWallpaper: Establecer fondo +removeWallpaper: Eliminar fondo +searchWith: 'Buscar: {q}' +youHaveNoLists: Non tes ningunha lista +stopActivityDelivery: Deixar de enviar actividades +perDay: Por día +blockThisInstance: Bloquear este servidor +silenceThisInstance: Acalar este servidor +operations: Operacións +software: Software +version: Versión +metadata: Metadatos +monitor: Monitor +cantRenote: Non se pode promover esta publicación. +clearCachedFiles: Limpar caché +jobQueue: Cola de tarefas +cpuAndMemory: CPU e Memoria +network: Rede +disk: Disco +instanceInfo: Información do servidor +statistics: Estatísticas +clearQueue: Limpar cola +clearQueueConfirmTitle: Tes a certeza de querer limpara a cola? +clearQueueConfirmText: Todas as publicacións que aínda non fosen entregadas non estarán + federadas. Esta operación, normalmente, non é necesaria. +clearCachedFilesConfirm: Tes a certeza de que queres eliminar todos os ficheiros remotos + da caché? +blockedInstances: Servidores bloqueados +blockedInstancesDescription: Lista dos nomes dos servidores que queres bloquear. Os + servidores da lista non poderán comunicarse con este servidor. +silencedInstances: Servidores acalados +silencedInstancesDescription: Lista cos nomes de servidores que queres acalar. As + contas dos servidores acalados serán tratadas como "Silenciadas", só poden facer + solicitudes de seguimento e non poden mencionar contas locais se non a están a seguir. + Isto non afecta aos servidores bloqueados. +hiddenTags: Cancelos agochados +hiddenTagsDescription: 'Lista cos cancelos (sen o #) que queres ocultar das seccións + descubrir e en voga. Os cancelos agochados seguirán sendo accesibles por outros + medios.' +muteAndBlock: Bloquear e Silenciar +mutedUsers: Usuarias acaladas +blockedUsers: Usuarias bloqueadas +noUsers: Sen usuarias +noInstances: Sen servidores +editProfile: Editar perfil +noteDeleteConfirm: Tes a certeza de querer eliminar esta publicación? +pinLimitExceeded: Xa non podes fixar máis publicacións +intro: Rematou a instalación de Fishfox! Por favor crea a usuaria administradora. +done: Feito +processing: Procesando +preview: Vista previa +default: Por defecto +defaultValueIs: 'Por defecto: {value}' +noCustomEmojis: Non hai emojis +noJobs: Non hai tarefas +blocked: Bloqueado +federating: Federación +silenced: Acalado +suspended: Suspendido +all: Todo +subscribing: Subscrición +publishing: Publicar +notResponding: Non responde +instanceFollowing: Seguindo no servidor +instanceFollowers: Seguidoras desde o servidor +instanceUsers: Usuarias neste servidor +security: Seguridade +retypedNotMatch: Os valores escritos non concordan. +changePassword: Cambiar contrasinal +currentPassword: Contrasinal actual +newPassword: Novo contrasinal +newPasswordRetype: Volve escribir o contrasinal +attachFile: Adxunta ficheiros +more: Máis! +featured: Destacado +usernameOrUserId: Identificador ou id de usuaria +noSuchUser: Non se atopa a usuaria +remove: Eliminar +removed: Eliminada correctamente +removeAreYouSure: Tes a certeza de querer eliminar "{x}"? +announcements: Anuncios +imageUrl: URL da imaxe +enterUsername: Escribir identificador +renotedBy: Promovido por {user} +noNotes: Sen publicacións +noNotifications: Sen notificacións +instance: Servidor +settings: Axustes +basicSettings: Axustes básicos +otherSettings: Outros axustes +openInWindow: Abrir na ventá +profile: Perfil +addToList: Engadir á lista +lists: Listas +listsDesc: As listas permítenche crear cronoloxías coas usuarias escollidas. Podes + acceder a elas desde a páxina de cronoloxías. +noLists: Non tes ningunha lista +note: Publicación +notes: Publicacións +following: Seguindo +followers: Seguidoras +followsYou: Séguete +createList: Crear lista +manageLists: Xestionar listas +error: Erro +somethingHappened: Houbo un fallo +retry: Volver a intentar +pageLoadError: Algo fallou ao cargar a páxina. +pageLoadErrorDescription: Normalmente isto débese a problemas na rede ou na caché + do navegador. Intenta limpar a caché e volve a intentalo dentro dun anaco. +serverIsDead: Este servidor non responde. Agarda un anaco e volve intentalo. +enterListName: Dalle un nome á lista +unfollow: Deixar de seguir +enterEmoji: Escribe un emoji +flagAsBot: Marcar a conta como bot +followConfirm: Tes a certeza de querer seguir a {name}? +proxyAccount: Conta proxy +proxyAccountDescription: Unha conta proxy é unha conta que en determinadas situacións + actúa como unha seguidora remota para as usuarias. Por exemplo, cando unha usuaria + engade unha usuaria remota a unha lista, a actividade da usuaria remota non se entrega + ao servidor se a usuaria local non segue a esa outra usuaria, así a conta proxy + fará o seguimento no seu lugar. +host: Hóspede +selectUser: Escolle unha usuaria +selectInstance: Escolle un servidor +recipient: Correpondente(s) +annotation: Comentarios +federation: Federación +instances: Servidores +registeredAt: Data do rexistro +latestRequestSentAt: Última solicitude enviada +latestRequestReceivedAt: Última solicitude recibida +latestStatus: Último estado +storageUsage: Uso da almacenaxe +charts: Gráficas +perHour: Por hora +followRequest: Solicitar seguimento From fec5b9aa04ab0b7a68a49dd374cf309d575db9d3 Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Thu, 20 Jul 2023 11:10:25 +0000 Subject: [PATCH 023/239] chore: Translated using Weblate (Polish) Currently translated at 93.0% (1708 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pl/ --- locales/pl-PL.yml | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 58624303c7..3c64fed8f4 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1,7 +1,7 @@ _lang_: "Polski" headlineMisskey: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" -introMisskey: "Hej! Calckey to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, +introMisskey: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" monthAndDay: "{month}-{day}" search: "Szukaj" @@ -150,7 +150,7 @@ flagAsBot: "To konto jest botem" flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne - systemy Calckey, traktując konto jako bota." + systemy Firefish, traktując konto jako bota." flagAsCat: "Czy jesteś kotem? 😺" flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!" flagShowTimelineReplies: "Pokazuj odpowiedzi na osi czasu" @@ -211,7 +211,7 @@ noUsers: "Brak użytkowników" editProfile: "Edytuj profil" noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?" pinLimitExceeded: "Nie możesz przypiąć więcej wpisów" -intro: "Zakończono instalację Calckey! Utwórz konto administratora." +intro: "Zakończono instalację Firefish! Utwórz konto administratora." done: "Gotowe" processing: "Przetwarzanie" preview: "Podgląd" @@ -396,7 +396,7 @@ exploreFediverse: "Eksploruj Fediwersum" popularTags: "Tagi na czasie" userList: "Listy" about: "Informacje" -aboutMisskey: "O Calckey" +aboutMisskey: "O Firefish" administrator: "Admin" token: "Token" twoStepAuthentication: "Uwierzytelnianie dwuskładnikowe" @@ -547,7 +547,7 @@ ascendingOrder: "Rosnąco" descendingOrder: "Malejąco" scratchpad: "Brudnopis" scratchpadDescription: "Brudnopis to środowisko dla eksperymentów z AiScript. Możesz - pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Calckey." + pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Firefish." output: "Wyjście" script: "Skrypt" disablePagesScript: "Wyłącz AiScript na Stronach" @@ -674,7 +674,7 @@ unclip: "Odczep" confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?" public: "Publiczny" -i18nInfo: "Calckey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc +i18nInfo: "Firefish jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}." manageAccessTokens: "Zarządzaj tokenami dostępu" accountInfo: "Informacje o koncie" @@ -988,13 +988,13 @@ _registry: domain: "Domena" createKey: "Utwórz klucz" _aboutMisskey: - about: "Calckey jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym + about: "Firefish jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym od 2022." contributors: "Główni twórcy" allContributors: "Wszyscy twórcy" source: "Kod źródłowy" - translation: "Tłumacz Calckey" - donate: "Przekaż darowiznę na Calckey" + translation: "Tłumacz Firefish" + donate: "Przekaż darowiznę na Firefish" morePatrons: "Naprawdę doceniam wsparcie ze strony wielu niewymienionych tu osób. Dziękuję! 🥰" patrons: "Wspierający" @@ -1007,7 +1007,7 @@ _mfm: intro: "MFM jest językiem składniowym używanym przez m.in. Calckey, forki *key (w tym Calckey), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz listę wszystkich możliwych elementów składni MFM." - dummy: "Calckey rozszerza świat Fediwersum" + dummy: "Firefish rozszerza świat Fediwersum" mention: "Wspomnij" mentionDescription: "Używając znaku @ i nazwy użytkownika, możesz określić danego użytkownika." @@ -1224,7 +1224,7 @@ _time: hour: "godz." day: "dzień" _tutorial: - title: "Jak korzystać z Calckey" + title: "Jak korzystać z Firefish" step1_1: "Witamy!" step1_2: "Pozwól, że Cię skonfigurujemy. Będziesz działać w mgnieniu oka!" step2_1: "Najpierw, proszę wypełnij swój profil." @@ -1254,7 +1254,7 @@ _tutorial: step6_1: "Więc, czym to jest to miejsce?" step6_2: "Cóż, nie dołączył*ś po prostu do Calckey. Dołączył*ś do portalu do Fediverse, połączonej sieci tysięcy serwerów, zwanych instancjami." - step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Calckey. + step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish. Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz o co chodzi." step6_4: "A teraz idź, odkrywaj i baw się dobrze!" @@ -1404,7 +1404,8 @@ _profile: metadata: "Dodatkowe informacje" metadataEdit: "Edytuj dodatkowe informacje" metadataDescription: "Możesz wyświetlać do czterech sekcji dodatkowych informacji - na swoim profilu. Możesz dodać tag {a} lub tag {l} z {rel}, aby zweryfikować link w swoim profilu!" + na swoim profilu. Możesz dodać tag {a} lub tag {l} z {rel}, aby zweryfikować link + w swoim profilu!" metadataLabel: "Etykieta" metadataContent: "Treść" changeAvatar: "Zmień awatar" @@ -1848,7 +1849,7 @@ moveAccountDescription: Ten proces jest nieodwracalny. Upewnij się, że utworzy w formacie @osoba@serwer.com moveFrom: Przejdź ze starego konta na obecne moveFromLabel: 'Konto które przenosisz:' -showUpdates: Pokaż pop-up po aktualizacji Calckey +showUpdates: Pokaż pop-up po aktualizacji Firefish swipeOnDesktop: Zezwól na przeciąganie w stylu mobilnym na desktopie moveFromDescription: To utworzy alias twojego starego konta, w celu umożliwienia migracji z tamtego konta na to. Zrób to ZANIM rozpoczniesz przenoszenie się z tamtego konta. @@ -1915,9 +1916,9 @@ objectStorageBaseUrlDesc: "URL stosowany jako odniesienie. Podaj URL twojego CDN albo proxy, jeśli używasz któregokolwiek.\nDla S3 użyj 'https://.s3.amazonaws.com', a dla GCS i jego odpowiedników użyj 'https://storage.googleapis.com/', itd." sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe informacje o - błędach będą udostępnianie z Calckey gdy wystąpi problem, pomagając w ulepszaniu - Calckey.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, - Twoja aktywność na Calckey itd." + błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu + Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, + Twoja aktywność na Firefish itd." privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować się z twoim serwerem. Wszystkie posty będą ukryte publicznie. oneHour: Godzina @@ -1970,7 +1971,7 @@ caption: Auto opis splash: Splash screen updateAvailable: Może być dostępna aktualizacja! logoImageUrl: URL grafiki loga -showAdminUpdates: Wskaż, że jest dostępna nowa wersja Calckey (tylko dla adminów) +showAdminUpdates: Wskaż, że jest dostępna nowa wersja Firefish (tylko dla adminów) hiddenTags: Ukryte hashtagi userSaysSomethingReason: '{name} powiedział* {reason}' customKaTeXMacroDescription: 'Skonfiguruj makra, aby łatwo pisać wyrażenia matematyczne! @@ -2014,7 +2015,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ jego wielkość przekracza dozwolony limit. sendModMail: Wyślij Powiadomienie Moderacyjne -searchPlaceholder: Szukaj Calckey +searchPlaceholder: Szukaj Firefish jumpToPrevious: Przejdź do poprzedniej sekcji listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp do nich można uzyskać na stronie osi czasu. From f52fc32ddf3e6a534bcc264fe00a3d279ad1179d Mon Sep 17 00:00:00 2001 From: Xalis Ratt Date: Thu, 20 Jul 2023 10:52:44 +0000 Subject: [PATCH 024/239] chore: Translated using Weblate (Ukrainian) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ --- locales/uk-UA.yml | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index e645ef0ac0..1733b7ed29 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -1,6 +1,6 @@ _lang_: "Українська" headlineMisskey: "Мережа об'єднана записами" -introMisskey: "Ласкаво просимо! Calckey - децентралізована служба мікроблогів з відкритим +introMisskey: "Ласкаво просимо! Firefish - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"нотатки\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо нотаток інших 👍\nДосліджуймо новий світ! 🚀" @@ -151,7 +151,7 @@ cacheRemoteFilesDescription: "Якщо кешування вимкнено, ві flagAsBot: "Акаунт бота" flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну - інтеракцію між ботами а також відповідного підлаштування Calckey." + інтеракцію між ботами а також відповідного підлаштування Firefish." flagAsCat: "Акаунт кота" flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком, та отримати котячі вуха!" @@ -219,7 +219,7 @@ noUsers: "Немає користувачів" editProfile: "Редагувати обліковий запис" noteDeleteConfirm: "Ви дійсно хочете видалити цей запис?" pinLimitExceeded: "Ви не можете закріпити більше записів" -intro: "Встановлення Calckey завершено! Будь ласка, створіть обліковий запис адміністратора." +intro: "Встановлення Firefish завершено! Будь ласка, створіть обліковий запис адміністратора." done: "Готово" processing: "Обробка" preview: "Попередній перегляд" @@ -404,7 +404,7 @@ exploreFediverse: "Досліджуйте Fediverse" popularTags: "Популярні теги" userList: "Списки" about: "Інформація" -aboutMisskey: "Про Calckey" +aboutMisskey: "Про Firefish" administrator: "Адмін" token: "Токен" twoStepAuthentication: "Двохфакторна аутентифікація" @@ -558,7 +558,7 @@ ascendingOrder: "За зростанням" descendingOrder: "За спаданням" scratchpad: "Чернетка" scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. - Ви можете писати, виконувати його і тестувати взаємодію з Calckey." + Ви можете писати, виконувати його і тестувати взаємодію з Firefish." output: "Вихід" script: "Скрипт" disablePagesScript: "Вимкнути AiScript на Сторінках" @@ -693,8 +693,8 @@ createNew: "Створити новий" optional: "Необов'язково" createNewClip: "Створити підбірку" public: "Публічний" -i18nInfo: "Calckey перекладається на різні мови волонтерами. Ви можете допомогти за - посиланням: {link}." +i18nInfo: "Firefish перекладається на різні мови волонтерами. Ви можете допомогти + за посиланням: {link}." manageAccessTokens: "Керування токенами доступу" accountInfo: "Інформація про акаунт" notesCount: "Кількість записів" @@ -751,9 +751,9 @@ nUsers: "{n} Користувачів" nNotes: "{n} Записів" sendErrorReports: "Надіслати звіт про помилки" sendErrorReportsDescription: "Якщо увімкнено, детальна інформація про помилки буде - передаватися до Calckey, коли виникає проблема, це допоможе покращити якість роботи - Calckey.\nЦе буде включати інформацію таку як: версія вашої ОС, який браузер ви - використовуєте, ваша активність в Calckey тощо." + передаватися до Firefish, коли виникає проблема, це допоможе покращити якість роботи + Firefish.\nЦе буде включати інформацію таку як: версія вашої ОС, який браузер ви + використовуєте, ваша активність в Firefish тощо." myTheme: "Моя тема" backgroundColor: "Фон" accentColor: "Акцент" @@ -824,33 +824,33 @@ _registry: createKey: "Створити ключ" scope: Область _aboutMisskey: - about: "Misskey - це програмне забезпечення з відкритим кодом, яке розробляє syuilo - з 2014 року." + about: "Firefish - це форк Misskey з відкритим кодом, яке розробляє ThatOneCalculator + з 2022 року." contributors: "Головні помічники" allContributors: "Всі помічники" source: "Вихідний код" - translation: "Перекладати Calckey" - donate: "Пожертвувати Calckey" + translation: "Перекладати Firefish" + donate: "Пожертвувати Firefish" morePatrons: "Ми дуже цінуємо підтримку багатьох інших помічників, не перелічених тут. Дякуємо! 🥰" patrons: "Підтримали" patronsList: Перераховані в хронологічному порядку, а не за розміром пожертви. Зробіть внесок за посиланням вище, щоб ваше ім'я було тут! - donateTitle: Сподобався Calckey? - pleaseDonateToCalckey: Будь ласка, підтримайте розробку Calckey. + donateTitle: Сподобався Firefish? + pleaseDonateToCalckey: Будь ласка, підтримайте розробку Firefish. pleaseDonateToHost: Також не забудьте підтримати ваш домашній сервер {host}, щоб допомогти з його операційними витратами. donateHost: Зробити внесок на рахунок {host} - sponsors: Спонсори Calckey + sponsors: Спонсори Firefish _nsfw: respect: "Приховувати NSFW медіа" ignore: "Не приховувати NSFW медіа" force: "Приховувати всі медіа файли" _mfm: cheatSheet: "Довідка MFM" - intro: "MFM це ексклюзивна мова розмітки тексту в Calckey, яку можна використовувати + intro: "MFM це ексклюзивна мова розмітки тексту в Firefish, яку можна використовувати в багатьох місцях. Тут ви можете переглянути приклади її синтаксису." - dummy: "Calckey розширює світ Федіверсу" + dummy: "Firefish розширює світ Федіверсу" mention: "Згадка" mentionDescription: "За допомогою знака \"@\" перед ім'ям можна згадати конкретного користувача." @@ -1071,7 +1071,7 @@ _time: hour: "г" day: "д" _tutorial: - title: "Як використовувати Calckey" + title: "Як користуватися Firefish" step1_1: "Ласкаво просимо!" step1_2: "Давайте налаштуємо вас. Ви будете працювати в найкоротші терміни!" step2_1: "Спочатку, будь ласка, заповніть свій профіль." @@ -1096,10 +1096,10 @@ _tutorial: step5_7: "Глобальна {icon} стрічка - це місце, де ви можете бачити записи від усіх інших приєднаних серверів." step6_1: "Отже, що це за місце?" - step6_2: "Ну, ви не просто приєдналися до Calckey. Ви увійшли в Fediverse, взаємопов'язану + step6_2: "Ну, ви не просто приєдналися до Firefish. Ви увійшли до Fediverse, взаємопов'язану мережу з тисяч серверів." - step6_3: "Кожен сервер працює по-своєму, і не на всіх серверах працює Calckey. Але - цей працює! Це трохи складно, але ви швидко розберетеся." + step6_3: "Кожен сервер працює по-своєму, і не на всіх серверах працює Firefish. + Але цей працює! Це трохи складно, але ви швидко розберетеся." step6_4: "Тепер ідіть, вивчайте і розважайтеся!" _2fa: registerSecurityKey: "Зареєструвати новий ключ безпеки" @@ -1705,7 +1705,7 @@ emailRequiredForSignup: Вимагати адресу електронної п moderation: Модерація selectInstance: Оберіть сервер instanceSecurity: Безпека сервера -searchPlaceholder: Шукати в Calckey +searchPlaceholder: Шукати у Firefish editNote: Відредагувати запис enableEmojiReactions: Ввімкнути реакції емодзі low: Низький @@ -1767,7 +1767,7 @@ ads: Реклама cw: Попередження про вміст hiddenTags: Приховані хештеги noInstances: Немає серверів -misskeyUpdated: Calckey оновлено! +misskeyUpdated: Firefish оновлено! received: Отримане xl: Надвеликий searchResult: Результати пошуку @@ -1871,7 +1871,7 @@ _experiments: enablePostImports: Ввімкнути імпорт записів title: Експерименти postImportsCaption: Дозволяє користувачам імпортувати свої записи з минулих облікових - записів Calckey, Misskey, Mastodon, Akkoma і Pleroma. Це може спричинити зниження + записів Firefish, Misskey, Mastodon, Akkoma і Pleroma. Це може спричинити зниження швидкості під час завантаження, якщо ваша черга перевантажена. _dialog: charactersExceeded: 'Перевищено максимальну кількість символів! Обмеження: {current}/{max}' @@ -1982,12 +1982,12 @@ sendPushNotificationReadMessageCaption: На короткий час буде п текстом "{emptyPushNotificationMessage}". Це може призвести до збільшення споживання заряду акумулятора вашого пристрою, якщо це можливо. pushNotificationNotSupported: Ваш браузер або сервер не підтримує push-сповіщення -showUpdates: Показувати спливаюче вікно при оновленні Calckey +showUpdates: Показувати спливаюче вікно при оновленні Firefish updateAvailable: Можливо, є доступне оновлення! recommendedInstancesDescription: Рекомендовані сервери відокремлюються переведенням рядка, щоб з'явитися на стрічці рекомендацій. caption: Автоматичний підпис -showAdminUpdates: Вказати, що доступна нова версія Calckey (тільки для адміністратора) +showAdminUpdates: Вказати, що доступна нова версія Firefish (тільки для адміністратора) defaultReaction: Емодзі реакція за замовчуванням для вихідних і вхідних записів license: Ліцензія indexPosts: Індексувати пости @@ -2004,7 +2004,7 @@ enableCustomKaTeXMacro: Увімкнути користувацькі макро apps: Додатки isModerator: Модератор isAdmin: Адміністратор -isPatron: Патрон Calckey +isPatron: Патрон Firefish swipeOnMobile: Дозволити гортання між сторінками migration: Міграція swipeOnDesktop: Дозволити свайп у мобільному стилі на десктопі @@ -2064,7 +2064,7 @@ cropImage: Обрізати зображення recentNDays: Останні {n} днів navbar: Панель навігації noGraze: Будь ласка, вимкніть розширення браузера "Graze для Mastodon", оскільки воно - заважає роботі Calckey. + заважає роботі Firefish. preventAiLearningDescription: Попросити сторонні мовні моделі ШІ не вивчати вміст, який ви завантажуєте, наприклад, записи та зображення. userSaysSomethingReasonReply: '{name} відповів на пост з {reason}' From ce9fa4cc26dc40bb442359aecbc19916a7a8aa7c Mon Sep 17 00:00:00 2001 From: ltlapy Date: Thu, 20 Jul 2023 11:14:01 +0000 Subject: [PATCH 025/239] chore: Translated using Weblate (Korean) Currently translated at 93.3% (1713 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ --- locales/ko-KR.yml | 105 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 746f22ade5..25b62c0f70 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1078,10 +1078,21 @@ _mfm: stop: MFM 멈춤 play: MFM 재생 advancedDescription: 비활성화하면 MFM 재생 중을 제외하고 기본적인 MFM만 표시합니다 - fade: '' + fade: '페이드' advanced: 고급 MFM warn: 빠르게 움직이거나 반짝이는 애니메이션을 포함할 가능성이 있습니다 alwaysPlay: MFM 애니메이션을 자동 재생하기 + cropDescription: 내용을 잘라냅니다. + scale: 확대/축소 + positionDescription: 내용을 지정한 값 만큼 이동합니다. + position: 위치 + crop: 크롭 + fadeDescription: 서서히 보인 뒤 서서히 사라집니다. + scaleDescription: 크기를 지정한 값 만큼 확대/축소합니다. + foregroundDescription: 문자 색상을 변경합니다. + backgroundDescription: 배경 색상을 변경합니다. + foreground: 문자색 + background: 배경색 _instanceTicker: none: "보이지 않음" remote: "리모트 유저에게만 보이기" @@ -1090,6 +1101,7 @@ _serverDisconnectedBehavior: reload: "자동으로 새로고침" dialog: "경고창 표시" quiet: "조용히 경고" + nothing: 아무것도 하지 않음 _channel: create: "채널 생성" edit: "채널 편집" @@ -1100,6 +1112,8 @@ _channel: following: "팔로잉" usersCount: "{n}명 참여 중" notesCount: "{n}노트" + nameAndDescription: 이름과 설명 + nameOnly: 이름만 _menuDisplay: sideFull: "가로" sideIcon: "가로(아이콘)" @@ -1227,6 +1241,21 @@ _2fa: step4: "다음 로그인부터는 토큰을 입력해야 합니다." securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 수 있습니다." + step2Click: QR 코드를 클릭하여 사용 중인 보안 키 또는 인증 앱을 등록할 수 있습니다. + step3Title: 확인 코드를 입력 + registerTOTPBeforeKey: 보안 키/패스 키를 등록하시려면 우선 인증 앱 설정을 마치십시오. + securityKeyNotSupported: 이 브라우저는 보안 키를 지원하지 않습니다. + chromePasskeyNotSupported: 현재 Chrome의 패스키는 지원하지 않습니다. + token: 2차 인증 토큰 + removeKey: 보안 키를 삭제 + removeKeyConfirm: '{name}을 삭제하시겠습니까?' + renewTOTPCancel: 취소 + renewTOTPConfirm: 지금 사용 중인 인증 앱의 확인 코드는 사용할 수 없게 됩니다 + securityKeyName: 키 이름 입력 + renewTOTPOk: 재설정 + whyTOTPOnlyRenew: 보안 키가 등록되어 있는 상태에서 인증 앱 설정을 해제할 수 없습니다. + renewTOTP: 인증 앱을 재설정 + tapSecurityKey: 브라우저의 지시에 따라 보안 키나 패스 키를 등록하십시오 _permissions: "read:account": "계정의 정보를 봅니다" "write:account": "계정의 정보를 변경합니다" @@ -1267,12 +1296,15 @@ _auth: pleaseGoBack: "앱으로 돌아가서 시도해 주세요" callback: "앱으로 돌아갑니다" denied: "접근이 거부되었습니다" + allPermissions: 모든 접근 권한 + copyAsk: '아래 인증 코드를 어플리케이션에 붙여넣으십시오:' _antennaSources: all: "모든 노트" homeTimeline: "팔로우중인 유저의 노트" users: "지정한 한 명 혹은 여러 명의 유저의 노트" userList: "지정한 리스트에 속한 유저의 노트" userGroup: "지정한 그룹에 속한 유저의 노트" + instances: 지정한 서버의 모든 유저의 게시물 _weekday: sunday: "일요일" monday: "월요일" @@ -1303,6 +1335,14 @@ _widgets: serverMetric: "서버 통계" aiscript: "AiScript 콘솔" aichan: "아이" + serverInfo: 서버 정보 + _userList: + chooseList: 리스트 선택 + meiliStatus: 서버 정보 + userList: 유저 목록 + meiliSize: 인덱스 크기 + meiliIndexCount: 인덱싱 완료된 게시물 + rssTicker: RSS Ticker _cw: hide: "숨기기" show: "더 보기" @@ -1365,6 +1405,7 @@ _profile: metadataContent: "내용" changeAvatar: "아바타 이미지 변경" changeBanner: "배너 이미지 변경" + locationDescription: 영문 도시명을 입력하면, 현재 시간대의 시각이 유저 페이지에 표시됩니다. _exportOrImport: allNotes: "모든 노트" followingList: "팔로잉" @@ -1404,6 +1445,7 @@ _timelines: local: "로컬" social: "소셜" global: "글로벌" + recommended: 추천 _pages: newPage: "페이지 만들기" editPage: "페이지 수정" @@ -1730,6 +1772,9 @@ _notification: followBack: "팔로우" reply: "답글" renote: "Renote" + reacted: 의 리액션 + renoted: 이 부스트 + voted: 이 투표함 _deck: alwaysShowMainColumn: "메인 칼럼 항상 표시" columnAlign: "칼럼 정렬" @@ -1756,6 +1801,9 @@ _deck: list: "리스트" mentions: "받은 멘션" direct: "다이렉트" + channel: 채널 + renameProfile: 워크스페이스명을 변경 + nameAlreadyExists: 같은 이름의 워크스페이스가 이미 존재합니다. removeReaction: 리액션 취소 flagSpeakAsCat: 고양이체로 말하기 silenceThisInstance: 이 서버를 사일런스 @@ -1897,3 +1945,58 @@ isLocked: 이 계정은 팔로우를 수동으로 승인합니다 silencedWarning: 관리자가 사일런스한 서버에 속한 유저이며, 스팸이거나 원치 않는 내용을 포함할 가능성이 있습니다. isModerator: 모더레이터 isPatron: Firefish 후원자 +_experiments: + postImportsCaption: 유저가 과거에 작성한 게시물을 Firefish(Calckey), Misskey, Mastodon, Akkoma, + Pleroma 등에서 가져올 수 있게 합니다. 작업 대기열의 처리 속도가 느릴 경우 서비스에 영향이 갈 수 있습니다. + enablePostImports: 게시물 가져오기를 활성화 + title: 실험실 +_messaging: + groups: 그룹 + dms: 개인 메시지 +_tutorial: + title: Firefly의 사용 방법 + step5_5: '{icon} 소셜 타임라인은 홈 타임라인과 소셜 타임라인을 합친 것과 같습니다.' + step4_1: 첫 노트를 올려 봅시다. + step5_3: '{icon} 홈 타임라인은 내가 팔로우하고 있는 계정의 게시물을 볼 수 있는 타임라인입니다.' + step6_2: 이 서버에 가입을 마친 당신은 단순히 Firefish 서버의 유저가 아닌, 수많은 서버가 서로 상호작용하는 연합우주에 참가하시게 + 된 것입니다. + step5_4: '{icon} 로컬 타임라인은 이 서버의 모든 유저가 올린 게시물을 볼 수 있는 타임라인입니다.' + step5_2: 이 서버에는 {timelines} 개의 타임라인이 존재합니다. + step2_2: 나에 대한 정보를 미리 실어 놓으면, 다른 사람이 나의 게시물을 보거나 팔로우할 때에 도움이 됩니다. + step3_2: "홈 타임라인과 소셜 타임라인은 내가 팔로우하는 유저로 구성됩니다. 우선 몇 명을 팔로우해 볼까요?\n각 프로필 우측 상단의 둥근 + + 버튼을 눌러 팔로우할 수 있습니다." + step2_1: 우선 프로필을 작성합니다. + step3_1: 이제 누군가를 팔로우해 봅시다! + step5_1: 여기도 타임라인, 저기도 타임라인 + step5_6: '{icon} 추천 타임라인은 이 서버의 관리자가 추천하는 서버의 게시물을 볼 수 있는 타임라인입니다.' + step5_7: '{icon} 글로벌 타임라인에서는 이 서버와 연결된 모든 서버의 게시물을 볼 수 있습니다.' + step1_1: 환영합니다! + step1_2: Firefly를 시작하기 전에, 몇 가지 설정을 해 보아요. 금방 끝날 거에요! + step6_1: 그래서… 여기는 어떤 곳이죠? + step4_2: 처음엔 {introduction}를 올리거나, 가볍게 '안녕하세요!' 라고 올리는 것도 좋아요! + step6_4: 튜토리얼은 여기까지입니다. 즐거운 시간 되세요! + step6_3: 각각의 서버는 서로 다른 규칙과 환경을 가지고 있으며, Firefish가 아닌 서버 또한 존재한답니다. 이 서버도 다른 서버에서 + 보면 마찬가지이고요. 갑자기 어려워 보일 지 몰라도 걱정하지 마세요, 금방 익숙해 질 거니까요. +_skinTones: + medium: 중간 + mediumLight: 약간 밝음 + yellow: 노랑 + mediumDark: 약간 어두움 + dark: 어두움 + light: 밝음 +_filters: + withFile: 첨부 파일 있음 + fromUser: 유저를 선택 + fromDomain: 도메인 지정 + notesBefore: '... 이전의 게시물' + notesAfter: '... 이후의 게시물' + followingOnly: 팔로우 중인 유저만 + followersOnly: 팔로워만 +_feeds: + jsonFeed: JSON 피드 + rss: RSS + atom: Atom + copyFeed: 피드 URL 복사 +_dialog: + charactersExceeded: 글자 수 제한을 초과했습니다! 현재 {current}자 / 최대 {max}자 + charactersBelow: 최소 글자 수 보다 작습니다! 현재 {current}자 / 최소 {max}자 From 3f1f4d3832a1260dec4d3392f266e62d93865c02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Thu, 20 Jul 2023 14:25:23 +0000 Subject: [PATCH 026/239] chore: Translated using Weblate (Czech) Currently translated at 46.5% (854 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/cs/ --- locales/cs-CZ.yml | 65 +++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index e6394f3ee6..766aaffe83 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -1,9 +1,9 @@ _lang_: "Čeština" headlineMisskey: "Síť propojená poznámkami" introMisskey: "Vítejte! Calckey je otevřený a decentralizovaný microblogový servis.\n\ - \"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. \U0001F4E1\ - \nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. \U0001F44D\ - \nPojďte objevovat nový svět! \U0001F680" + \"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. 📡\nPomocí + \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. 👍\nPojďte objevovat + nový svět! 🚀" monthAndDay: "{day}. {month}." search: "Vyhledávání" notifications: "Oznámení" @@ -18,7 +18,7 @@ enterUsername: "Zadej uživatelské jméno" renotedBy: "{user} přeposla/a" noNotes: "Žádné poznámky" noNotifications: "Žádná oznámení" -instance: "Instance" +instance: "Server" settings: "Nastavení" basicSettings: "Obecná nastavení" otherSettings: "Rozšířená nastavení" @@ -46,8 +46,8 @@ copyContent: "Zkopírovat obsah" copyLink: "Kopírovat odkaz" delete: "Smazat" deleteAndEdit: "Smazat a upravit" -deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji?\ - \ Ztratíte tím všechny reakce, sdílení a odpovědi na ni." +deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji? + Ztratíte tím všechny reakce, sdílení a odpovědi na ni." addToList: "Přidat do seznamu" sendMessage: "Odeslat zprávu" copyUsername: "Kopírovat uživatelské jméno" @@ -66,11 +66,11 @@ import: "Importovat" export: "Exportovat" files: "Soubor(ů)" download: "Stáhnout" -driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Soubor bude odstraněn\ - \ ze všech příspěvků, které ji obsahují jako přílohu." +driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Soubor bude odstraněn + ze všech příspěvků, které ji obsahují jako přílohu." unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?" -exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš\ - \ Disk až bude dokončen." +exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš + Disk až bude dokončen." importRequested: "Požádali jste o export. To může chvilku trvat." lists: "Seznamy" noLists: "Nemáte žádné seznamy" @@ -86,8 +86,8 @@ somethingHappened: "Jejda. Něco se nepovedlo." retry: "Opakovat" pageLoadError: "Nepodařilo se načíst stránku" serverIsDead: "Server neodpovídá. Počkejte chvíli a zkuste to znovu." -youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci\ - \ klienta." +youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci + klienta." enterListName: "Jméno seznamu" privacy: "Soukromí" makeFollowManuallyApprove: "Žádosti o sledování vyžadují potvrzení" @@ -111,8 +111,8 @@ clickToShow: "Klikněte pro zobrazení" sensitive: "NSFW" add: "Přidat" reaction: "Reakce" -reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte\ - \ \"+\" k přidání" +reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte + \"+\" k přidání" rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky" attachCancel: "Odstranit přílohu" markAsSensitive: "Označit jako NSFW" @@ -141,18 +141,18 @@ emojiUrl: "URL obrázku" addEmoji: "Přidat emoji" settingGuide: "Doporučené nastavení" cacheRemoteFiles: "Ukládání vzdálených souborů do mezipaměti" -cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory\ - \ budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště\ - \ na serveru, ale zvýší se provoz, protože se negenerují miniatury." +cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory + budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště + na serveru, ale zvýší se provoz, protože se negenerují miniatury." flagAsBot: "Tento účet je bot" -flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost.\ - \ To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím\ - \ s ostatními boty a upraví Calckey systém aby se choval k tomuhle účtu jako bot." +flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. + To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím + s ostatními boty a upraví Calckey systém aby se choval k tomuhle účtu jako bot." flagAsCat: "Tenhle účet je kočka" flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka." flagShowTimelineReplies: "Zobrazovat odpovědi na časové ose" -flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na\ - \ poznámky jiných uživatelů na vaší časové ose." +flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na + poznámky jiných uživatelů na vaší časové ose." autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete" addAccount: "Přidat účet" loginFailed: "Přihlášení se nezdařilo." @@ -165,10 +165,10 @@ searchWith: "Hledat: {q}" youHaveNoLists: "Nemáte žádné seznamy" followConfirm: "Jste si jisti, že chcete sledovat {name}?" proxyAccount: "Proxy účet" -proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele\ - \ na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do\ - \ seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena\ - \ instanci, takže místo toho bude uživatele sledovat účet proxy." +proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele + na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, + pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže + místo toho bude uživatele sledovat účet proxy." host: "Hostitel" selectUser: "Vyberte uživatele" recipient: "Pro" @@ -253,8 +253,8 @@ agreeTo: "Souhlasím s {0}" tos: "Podmínky užívání" start: "Začít" home: "Domů" -remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené\ - \ instance." +remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené + instance." activity: "Aktivita" images: "Obrázky" birthday: "Datum narození" @@ -563,8 +563,8 @@ info: "Informace" unknown: "Neznámý" onlineStatus: "Online status" hideOnlineStatus: "Skrýt Váš online status" -hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu\ - \ některých funkcí, například vyhledávání." +hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu + některých funkcí, například vyhledávání." online: "Online" active: "Aktivní" offline: "Offline" @@ -983,7 +983,7 @@ emptyDrive: Váš disk je prázdný inputNewDescription: Zadejte nový popisek hasChildFilesOrFolders: Složka nemůže být smazána, protože není prázdná. noThankYou: Ne, děkuji -addInstance: Přidat instance +addInstance: Přidat server selectInstance: Vybrat si instance blockedUsers: Zablokovaní uživatelé muteAndBlock: Ztlumení a blokace @@ -1007,3 +1007,6 @@ renoteMute: Ztlumit přeposílání renoteUnmute: Zrušit ztlumení přeposílání flagSpeakAsCat: Mluvit jako kočka flagSpeakAsCatDescription: Vaše příspěvky budou v kočičím režimu nyanifikovány. +newer: novější +older: starší +jumpToPrevious: Skočit na předchozí From c9f6ccc5a8c2bf3892234ba5b92c3b477a48fa9e Mon Sep 17 00:00:00 2001 From: Ramdziana F Y Date: Thu, 20 Jul 2023 16:21:09 +0000 Subject: [PATCH 027/239] chore: Translated using Weblate (Indonesian) Currently translated at 86.3% (1586 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 65 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 87c3132853..717d71592e 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -884,13 +884,13 @@ manageAccounts: "Kelola Akun" makeReactionsPublic: "Tampilkan riwayat reaksi ke publik" makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi masa lalu kamu ditampilkan secara publik." -classic: "Klasik" +classic: "Tengah" muteThread: "Bisukan thread" unmuteThread: "Suarakan thread" ffVisibility: "Visibilitas Mengikuti/Pengikut" ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu ikuti." -continueThread: "Lihat lanjutan thread" +continueThread: "Lihat lanjutan utas" deleteAccountConfirm: "Akun akan dihapus. Apakah kamu yakin?" incorrectPassword: "Kata sandi salah." voteConfirm: "Konfirmasi suara kamu untuk ({choice})?" @@ -905,12 +905,12 @@ overridedDeviceKind: "Tipe perangkat" smartphone: "Ponsel" tablet: "Tablet" auto: "Otomatis" -themeColor: "Warna Tema" +themeColor: "Warna Jam Server" size: "Ukuran" numberOfColumn: "Jumlah per kolom" searchByGoogle: "Penelusuran" -instanceDefaultLightTheme: "Bawaan instan tema terang" -instanceDefaultDarkTheme: "Bawaan instan tema gelap" +instanceDefaultLightTheme: "Tema terang bawaan ranah server" +instanceDefaultDarkTheme: "Tema gelap bawaan ranah server" instanceDefaultThemeDescription: "Masukkan kode tema di format obyek." mutePeriod: "Batas waktu bisu" indefinitely: "Selamanya" @@ -1850,3 +1850,58 @@ allowedInstancesDescription: Host server akan masuk daftar putih untuk federasi, dipisahkan dengan baris baru (hanya diterapkan pada mode pribadi). xl: XL privateMode: Mode Pribadi +seperateRenoteQuote: Tombol posting ulang dan kutip terpisah +failedToUpload: Gagal unggah +beta: Beta +move: Pindahkan +navbar: Bilah navigasi +thereIsUnresolvedAbuseReportWarning: Ada laporal yang belum diselesaikan. +statusbar: Bilah status +isSystemAccount: Akun ini dibuat dan dioperasikan secara otomatis oleh sistem. Mohon + jangan memoderasi, menyunting, menghapus, atau mengutak-atik dengan akun ini, atau + itu akan merusak servermu. +lastActiveDate: Terakhir dipakai pada +deleteAccount: Hapus akun +numberOfPageCache: Jumlah halaman yang disinggah +fast: Cepat +cannotUploadBecauseInappropriate: Berkas ini tidak dapat diunggah karena sebagiannya + terdeteksi berpotensi Tidak Aman. +shuffle: Acak +enableAutoSensitive: Otomatis menandai Tidak Aman +enableAutoSensitiveDescription: Mengizinkan deteksi otomatis dan menandai media Tidak + Aman dengan Pembelajaran Mesin. Bahkan saat opsi ini nonaktif, ia bisa diaktifkan + pada ranah server. +activeEmailValidationDescription: Mengaktifkan validasi alamat surel yang lebih ketat, + yang termasuk memeriksa alamat sekali pakai dan memastikan apakah memang bisa berkomunikasi + dengan mereka. Saat tidak dicentang, format surel lah yang hanya akan divalidasi. +alt: ALT +requireAdminForView: Kamu harus masuk dengan akun administrator untuk melihat ini. +recentNHours: '{n} jam terakhir' +typeToConfirm: Harap masukkan {x} untuk konfirmasi +document: Dokumentasi +sensitiveMediaDetection: Deteksi media Tidak Aman +breakFollowConfirm: Yakin ingin menghapus pengikut? +cannotUploadBecauseNoFreeSpace: Gagal unggah karena kapasitas Drive kurang. +unsubscribePushNotification: Nonaktifkan pemberitahuan dorong +image: Gambar +video: Video +pleaseSelect: Pilih opsi +audio: Audio +numberOfPageCacheDescription: Naikkan angka ini akan meningkatkan kenyamanan pengguna + tapi menyebabkan beban server dan penggunaan memori lebih besar. +pushNotification: Pemberitahuan dorong +subscribePushNotification: Aktifkan pemberitahuan dorong +cannotUploadBecauseExceedsFileSizeLimit: Berkas ini tidak dapat diunggah karena melebihi + batas ukuran maksimum yang diizinkan. +recentNDays: '{n} hari terakhir' +noEmailServerWarning: Server surel tidak dikonfigurasi. +check: Cek +driveCapOverrideLabel: Ubah kapasitas drive untuk pengguna ini +driveCapOverrideCaption: Reset kapasitas ke bawaan dengan memasukkan nilai 0 atau + lebih rendah. +logoutConfirm: Yakin keluar? +refreshInterval: 'Perbarui interval ' +type: Tipe +speed: Kecepatan +slow: Pelan +remoteOnly: Jarak jauh saja From a4ff5c4ecffc1183723807fec823e40334ff5ff8 Mon Sep 17 00:00:00 2001 From: mastoduy Date: Thu, 20 Jul 2023 15:54:47 +0000 Subject: [PATCH 028/239] chore: Translated using Weblate (Vietnamese) Currently translated at 82.0% (1506 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/vi/ --- locales/vi-VN.yml | 331 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 230 insertions(+), 101 deletions(-) diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index 40b3909cec..70707db5a5 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -1,7 +1,9 @@ ---- _lang_: "Tiếng Việt" headlineMisskey: "Mạng xã hội liên hợp" -introMisskey: "Xin chào! Calckey là một nền tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới mới! 🚀" +introMisskey: "Xin chào! Calckey là một nền tảng tiểu blog phi tập trung mã nguồn + mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có + thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới + mới! 🚀" monthAndDay: "{day} tháng {month}" search: "Tìm kiếm" notifications: "Thông báo" @@ -13,7 +15,7 @@ ok: "Đồng ý" gotIt: "Đã hiểu!" cancel: "Hủy" enterUsername: "Nhập tên người dùng" -renotedBy: "Chia sẻ bởi {user}" +renotedBy: "{user} đăng lại" noNotes: "Chưa có tút nào." noNotifications: "Không có thông báo" instance: "Máy chủ" @@ -44,11 +46,12 @@ copyContent: "Chép nội dung" copyLink: "Chép liên kết" delete: "Xóa" deleteAndEdit: "Sửa" -deleteAndEditConfirm: "Bạn có chắc muốn sửa tút này? Những biểu cảm, lượt trả lời và đăng lại sẽ bị mất." +deleteAndEditConfirm: "Bạn có chắc muốn sửa tút này? Những biểu cảm, lượt trả lời + và đăng lại sẽ bị mất." addToList: "Thêm vào danh sách" sendMessage: "Gửi tin nhắn" copyUsername: "Chép tên người dùng" -searchUser: "Tìm kiếm người dùng" +searchUser: "Tìm người" reply: "Trả lời" loadMore: "Tải thêm" showMore: "Xem thêm" @@ -64,9 +67,11 @@ import: "Nhập dữ liệu" export: "Xuất dữ liệu" files: "Tập tin" download: "Tải xuống" -driveFileDeleteConfirm: "Bạn có chắc muốn xóa tập tin \"{name}\"? Tút liên quan cũng sẽ bị xóa theo." +driveFileDeleteConfirm: "Bạn có chắc muốn xóa tập tin \"{name}\"? Tút liên quan cũng + sẽ bị xóa theo." unfollowConfirm: "Bạn có chắc muốn ngưng theo dõi {name}?" -exportRequested: "Đang chuẩn bị xuất tập tin. Quá trình này có thể mất ít phút. Nó sẽ được tự động thêm vào Drive sau khi hoàn thành." +exportRequested: "Đang chuẩn bị xuất tập tin. Quá trình này có thể mất ít phút. Nó + sẽ được tự động thêm vào Drive sau khi hoàn thành." importRequested: "Bạn vừa yêu cầu nhập dữ liệu. Quá trình này có thể mất ít phút." lists: "Danh sách" noLists: "Bạn chưa có danh sách nào" @@ -81,7 +86,8 @@ error: "Lỗi" somethingHappened: "Xảy ra lỗi" retry: "Thử lại" pageLoadError: "Xảy ra lỗi khi tải trang." -pageLoadErrorDescription: "Có thể là do bộ nhớ đệm của trình duyệt. Hãy thử xóa bộ nhớ đệm và thử lại sau ít phút." +pageLoadErrorDescription: "Có thể là do bộ nhớ đệm của trình duyệt. Hãy thử xóa bộ + nhớ đệm và thử lại sau ít phút." serverIsDead: "Máy chủ không phản hồi. Vui lòng thử lại sau giây lát." youShouldUpgradeClient: "Để xem trang này, hãy làm tươi để cập nhật ứng dụng." enterListName: "Đặt tên cho danh sách" @@ -129,7 +135,7 @@ selectAntenna: "Chọn một antenna" selectWidget: "Chọn tiện ích" editWidgets: "Sửa tiện ích" editWidgetsExit: "Xong" -customEmojis: "Tùy chỉnh emoji" +customEmojis: "Emoji" emoji: "Emoji" emojis: "Emoji" emojiName: "Tên emoji" @@ -137,18 +143,24 @@ emojiUrl: "URL Emoji" addEmoji: "Thêm emoji" settingGuide: "Cài đặt đề xuất" cacheRemoteFiles: "Tập tin cache từ xa" -cacheRemoteFilesDescription: "Khi tùy chọn này bị tắt, các tập tin từ xa sẽ được tải trực tiếp từ máy chủ khác. Điều này sẽ giúp giảm dung lượng lưu trữ nhưng lại tăng lưu lượng truy cập, vì hình thu nhỏ sẽ không được tạo." +cacheRemoteFilesDescription: "Khi tùy chọn này bị tắt, các tập tin từ xa sẽ được tải + trực tiếp từ máy chủ khác. Điều này sẽ giúp giảm dung lượng lưu trữ nhưng lại tăng + lưu lượng truy cập, vì hình thu nhỏ sẽ không được tạo." flagAsBot: "Đánh dấu đây là tài khoản bot" -flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Calckey để coi tài khoản này như một bot." +flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương + trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi + tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Calckey để coi + tài khoản này như một bot." flagAsCat: "Tài khoản này là mèo" flagAsCatDescription: "Bật tùy chọn này để đánh dấu tài khoản là một con mèo." flagShowTimelineReplies: "Hiện lượt trả lời trong bảng tin" -flagShowTimelineRepliesDescription: "Hiện lượt trả lời của người bạn theo dõi trên tút của những người khác." +flagShowTimelineRepliesDescription: "Hiện lượt trả lời của người bạn theo dõi trên + tút của những người khác." autoAcceptFollowed: "Tự động phê duyệt theo dõi từ những người mà bạn đang theo dõi" addAccount: "Thêm tài khoản" loginFailed: "Đăng nhập không thành công" showOnRemote: "Truy cập trang của người này" -general: "Tổng quan" +general: "Tổng quát" wallpaper: "Ảnh bìa" setWallpaper: "Đặt ảnh bìa" removeWallpaper: "Xóa ảnh bìa" @@ -156,7 +168,11 @@ searchWith: "Tìm kiếm: {q}" youHaveNoLists: "Bạn chưa có danh sách nào" followConfirm: "Bạn có chắc muốn theo dõi {name}?" proxyAccount: "Tài khoản proxy" -proxyAccountDescription: "Tài khoản proxy là tài khoản hoạt động như một người theo dõi từ xa cho người dùng trong những điều kiện nhất định. Ví dụ: khi người dùng thêm người dùng từ xa vào danh sách, hoạt động của người dùng từ xa sẽ không được chuyển đến phiên bản nếu không có người dùng cục bộ nào theo dõi người dùng đó, vì vậy tài khoản proxy sẽ theo dõi." +proxyAccountDescription: "Tài khoản proxy là tài khoản hoạt động như một người theo + dõi từ xa cho người dùng trong những điều kiện nhất định. Ví dụ: khi người dùng + thêm người dùng từ xa vào danh sách, hoạt động của người dùng từ xa sẽ không được + chuyển đến phiên bản nếu không có người dùng cục bộ nào theo dõi người dùng đó, + vì vậy tài khoản proxy sẽ theo dõi." host: "Host" selectUser: "Chọn người dùng" recipient: "Người nhận" @@ -186,11 +202,13 @@ instanceInfo: "Thông tin máy chủ" statistics: "Thống kê" clearQueue: "Xóa hàng đợi" clearQueueConfirmTitle: "Bạn có chắc muốn xóa hàng đợi?" -clearQueueConfirmText: "Mọi tút chưa được gửi còn lại trong hàng đợi sẽ không được liên hợp. Thông thường thao tác này không cần thiết." +clearQueueConfirmText: "Mọi tút chưa được gửi còn lại trong hàng đợi sẽ không được + liên hợp. Thông thường thao tác này không cần thiết." clearCachedFiles: "Xóa bộ nhớ đệm" clearCachedFilesConfirm: "Bạn có chắc muốn xóa sạch bộ nhớ đệm?" blockedInstances: "Máy chủ đã chặn" -blockedInstancesDescription: "Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không thể giao tiếp với máy chủy này nữa." +blockedInstancesDescription: "Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không + thể giao tiếp với máy chủy này nữa." muteAndBlock: "Ẩn và Chặn" mutedUsers: "Người đã ẩn" blockedUsers: "Người đã chặn" @@ -239,7 +257,8 @@ saved: "Đã lưu" messaging: "Trò chuyện" upload: "Tải lên" keepOriginalUploading: "Giữ hình ảnh gốc" -keepOriginalUploadingDescription: "Giữ nguyên như hình ảnh được tải lên ban đầu. Nếu tắt, một phiên bản để hiển thị trên web sẽ được tạo khi tải lên." +keepOriginalUploadingDescription: "Giữ nguyên như hình ảnh được tải lên ban đầu. Nếu + tắt, một phiên bản để hiển thị trên web sẽ được tạo khi tải lên." fromDrive: "Từ ổ đĩa" fromUrl: "Từ URL" uploadFromUrl: "Tải lên bằng một URL" @@ -255,7 +274,8 @@ agreeTo: "Tôi đồng ý {0}" tos: "Điều khoản dịch vụ" start: "Bắt đầu" home: "Trang chính" -remoteUserCaution: "Vì người dùng này ở máy chủ khác, thông tin hiển thị có thể không đầy đủ." +remoteUserCaution: "Vì người dùng này ở máy chủ khác, thông tin hiển thị có thể không + đầy đủ." activity: "Hoạt động" images: "Hình ảnh" birthday: "Sinh nhật" @@ -288,7 +308,8 @@ unableToDelete: "Không thể xóa" inputNewFileName: "Nhập tên mới cho tập tin" inputNewDescription: "Nhập mô tả mới" inputNewFolderName: "Nhập tên mới cho thư mục" -circularReferenceFolder: "Thư mục đích là một thư mục con của thư mục bạn muốn di chuyển." +circularReferenceFolder: "Thư mục đích là một thư mục con của thư mục bạn muốn di + chuyển." hasChildFilesOrFolders: "Không thể xóa cho đến khi không còn gì trong thư mục." copyUrl: "Sao chép URL" rename: "Đổi tên" @@ -322,7 +343,8 @@ connectService: "Kết nối" disconnectService: "Ngắt kết nối" enableLocalTimeline: "Bật bảng tin máy chủ" enableGlobalTimeline: "Bật bảng tin liên hợp" -disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi bảng tin, kể cả khi chúng không được bật." +disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi + bảng tin, kể cả khi chúng không được bật." registration: "Đăng ký" enableRegistration: "Cho phép đăng ký mới" invite: "Mời" @@ -334,7 +356,8 @@ bannerUrl: "URL Ảnh bìa" backgroundImageUrl: "URL Ảnh nền" basicInfo: "Thông tin cơ bản" pinnedUsers: "Những người thú vị" -pinnedUsersDescription: "Liệt kê mỗi hàng một tên người dùng xuống dòng để ghim trên tab \"Khám phá\"." +pinnedUsersDescription: "Liệt kê mỗi hàng một tên người dùng xuống dòng để ghim trên + tab \"Khám phá\"." pinnedPages: "Trang đã ghim" pinnedPagesDescription: "Liệt kê các trang thú vị để ghim trên máy chủ." pinnedClipId: "ID của clip muốn ghim" @@ -347,14 +370,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Bật reCAPTCHA" recaptchaSiteKey: "Khóa của trang" recaptchaSecretKey: "Khóa bí mật" -avoidMultiCaptchaConfirm: "Dùng nhiều hệ thống Captcha có thể gây nhiễu giữa chúng. Bạn có muốn tắt các hệ thống Captcha khác hiện đang hoạt động không? Nếu bạn muốn chúng tiếp tục được bật, hãy nhấn hủy." +avoidMultiCaptchaConfirm: "Dùng nhiều hệ thống Captcha có thể gây nhiễu giữa chúng. + Bạn có muốn tắt các hệ thống Captcha khác hiện đang hoạt động không? Nếu bạn muốn + chúng tiếp tục được bật, hãy nhấn hủy." antennas: "Trạm phát sóng" manageAntennas: "Quản lý trạm phát sóng" name: "Tên" antennaSource: "Nguồn trạm phát sóng" antennaKeywords: "Từ khóa để nghe" antennaExcludeKeywords: "Từ khóa để lọc ra" -antennaKeywordsDescription: "Phân cách bằng dấu cách cho điều kiện AND hoặc bằng xuống dòng cho điều kiện OR." +antennaKeywordsDescription: "Phân cách bằng dấu cách cho điều kiện AND hoặc bằng xuống + dòng cho điều kiện OR." notifyAntenna: "Thông báo có tút mới" withFileAntenna: "Chỉ những tút có media" enableServiceworker: "Bật ServiceWorker" @@ -362,7 +388,7 @@ antennaUsersDescription: "Liệt kê mỗi hàng một tên người dùng" caseSensitive: "Trường hợp nhạy cảm" withReplies: "Bao gồm lượt trả lời" connectedTo: "Những tài khoản sau đã kết nối" -notesAndReplies: "Tút kèm trả lời" +notesAndReplies: "Lượt trả lời" withFiles: "Media" silence: "Ẩn" silenceConfirm: "Bạn có chắc muốn ẩn người này?" @@ -433,7 +459,8 @@ invitationCode: "Mã mời" checking: "Đang kiểm tra..." available: "Khả dụng" unavailable: "Không khả dụng" -usernameInvalidFormat: "Bạn có thể dùng viết hoa/viết thường, chữ số, và dấu gạch dưới." +usernameInvalidFormat: "Bạn có thể dùng viết hoa/viết thường, chữ số, và dấu gạch + dưới." tooShort: "Quá ngắn" tooLong: "Quá dài" weakPassword: "Mật khẩu yếu" @@ -442,7 +469,8 @@ strongPassword: "Mật khẩu mạnh" passwordMatched: "Trùng khớp" passwordNotMatched: "Không trùng khớp" signinWith: "Đăng nhập bằng {x}" -signinFailed: "Không thể đăng nhập. Vui lòng kiểm tra tên người dùng và mật khẩu của bạn." +signinFailed: "Không thể đăng nhập. Vui lòng kiểm tra tên người dùng và mật khẩu của + bạn." tapSecurityKey: "Nhấn mã bảo mật của bạn" or: "Hoặc" language: "Ngôn ngữ" @@ -483,15 +511,20 @@ showFeaturedNotesInTimeline: "Hiện tút nổi bật trong bảng tin" objectStorage: "Đối tượng lưu trữ" useObjectStorage: "Dùng đối tượng lưu trữ" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "URL được sử dụng làm tham khảo. Chỉ định URL của CDN hoặc Proxy của bạn nếu bạn đang sử dụng. Với S3 dùng 'https://.s3.amazonaws.com', còn GCS hoặc dịch vụ tương tự dùng 'https://storage.googleapis.com/', etc." +objectStorageBaseUrlDesc: "URL được sử dụng làm tham khảo. Chỉ định URL của CDN hoặc + Proxy của bạn nếu bạn đang sử dụng. Với S3 dùng 'https://.s3.amazonaws.com', + còn GCS hoặc dịch vụ tương tự dùng 'https://storage.googleapis.com/', etc." objectStorageBucket: "Bucket" objectStorageBucketDesc: "Nhập tên bucket dùng ở nhà cung cấp của bạn." objectStoragePrefix: "Tiền tố" -objectStoragePrefixDesc: "Các tập tin sẽ được lưu trữ trong các thư mục có tiền tố này." +objectStoragePrefixDesc: "Các tập tin sẽ được lưu trữ trong các thư mục có tiền tố + này." objectStorageEndpoint: "Đầu cuối" -objectStorageEndpointDesc: "Để trống nếu bạn đang dùng AWS S3, nếu không thì chỉ định đầu cuối là '' hoặc ':', tùy thuộc vào nhà cung cấp dịch vụ." +objectStorageEndpointDesc: "Để trống nếu bạn đang dùng AWS S3, nếu không thì chỉ định + đầu cuối là '' hoặc ':', tùy thuộc vào nhà cung cấp dịch vụ." objectStorageRegion: "Khu vực" -objectStorageRegionDesc: "Nhập một khu vực cụ thể như 'xx-east-1'. Nếu nhà cung cấp dịch vụ của bạn không phân biệt giữa các khu vực, hãy để trống hoặc nhập 'us-east-1'." +objectStorageRegionDesc: "Nhập một khu vực cụ thể như 'xx-east-1'. Nếu nhà cung cấp + dịch vụ của bạn không phân biệt giữa các khu vực, hãy để trống hoặc nhập 'us-east-1'." objectStorageUseSSL: "Dùng SSL" objectStorageUseSSLDesc: "Tắt nếu bạn không dùng HTTPS để kết nối API" objectStorageUseProxy: "Kết nối thông qua Proxy" @@ -523,7 +556,8 @@ sort: "Sắp xếp" ascendingOrder: "Tăng dần" descendingOrder: "Giảm dần" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Calckey trong đó." +scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. + Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Calckey trong đó." output: "Nguồn ra" script: "Kịch bản" disablePagesScript: "Tắt AiScript trên Trang" @@ -531,11 +565,14 @@ updateRemoteUser: "Cập nhật thông tin người dùng ở máy chủ khác" deleteAllFiles: "Xóa toàn bộ tập tin" deleteAllFilesConfirm: "Bạn có chắc xóa toàn bộ tập tin?" removeAllFollowing: "Ngưng theo dõi tất cả mọi người" -removeAllFollowingDescription: "Thực hiện điều này sẽ ngưng theo dõi tất cả các tài khoản khỏi {host}. Chỉ thực hiện điều này nếu máy chủ không còn tồn tại." +removeAllFollowingDescription: "Thực hiện điều này sẽ ngưng theo dõi tất cả các tài + khoản khỏi {host}. Chỉ thực hiện điều này nếu máy chủ không còn tồn tại." userSuspended: "Người này đã bị vô hiệu hóa." userSilenced: "Người này đã bị ẩn" yourAccountSuspendedTitle: "Tài khoản bị vô hiệu hóa" -yourAccountSuspendedDescription: "Tài khoản này đã bị vô hiệu hóa do vi phạm quy tắc máy chủ hoặc điều tương tự. Liên hệ với quản trị viên nếu bạn muốn biết lý do chi tiết hơn. Vui lòng không tạo tài khoản mới." +yourAccountSuspendedDescription: "Tài khoản này đã bị vô hiệu hóa do vi phạm quy tắc + máy chủ hoặc điều tương tự. Liên hệ với quản trị viên nếu bạn muốn biết lý do chi + tiết hơn. Vui lòng không tạo tài khoản mới." menu: "Menu" divider: "Phân chia" addItem: "Thêm mục" @@ -576,12 +613,14 @@ permission: "Cho phép " enableAll: "Bật toàn bộ" disableAll: "Tắt toàn bộ" tokenRequested: "Cấp quyền truy cập vào tài khoản" -pluginTokenRequestedDescription: "Plugin này sẽ có thể sử dụng các quyền được đặt ở đây." +pluginTokenRequestedDescription: "Plugin này sẽ có thể sử dụng các quyền được đặt + ở đây." notificationType: "Loại thông báo" edit: "Sửa" emailServer: "Email máy chủ" enableEmail: "Bật phân phối email" -emailConfigInfo: "Được dùng để xác minh email của bạn lúc đăng ký hoặc nếu bạn quên mật khẩu của mình" +emailConfigInfo: "Được dùng để xác minh email của bạn lúc đăng ký hoặc nếu bạn quên + mật khẩu của mình" email: "Email" emailAddress: "Địa chỉ email" smtpConfig: "Cấu hình máy chủ SMTP" @@ -602,7 +641,7 @@ makeActive: "Kích hoạt" display: "Hiển thị" copy: "Sao chép" metrics: "Số liệu" -overview: "Tổng quan" +overview: "Tường" logs: "Nhật ký" delayed: "Độ trễ" database: "Cơ sở dữ liệu" @@ -611,10 +650,13 @@ create: "Tạo" notificationSetting: "Cài đặt thông báo" notificationSettingDesc: "Chọn loại thông báo bạn muốn hiển thị." useGlobalSetting: "Dùng thiết lập chung" -useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn sẽ được áp dụng. Nếu bị tắt, có thể thực hiện các thiết lập riêng lẻ." +useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn sẽ được áp dụng. Nếu + bị tắt, có thể thực hiện các thiết lập riêng lẻ." other: "Khác" regenerateLoginToken: "Tạo lại mã đăng nhập" -regenerateLoginTokenDescription: "Tạo lại mã nội bộ có thể dùng để đăng nhập. Thông thường hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ bị đăng xuất." +regenerateLoginTokenDescription: "Tạo lại mã nội bộ có thể dùng để đăng nhập. Thông + thường hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ + bị đăng xuất." setMultipleBySeparatingWithSpace: "Tách nhiều mục nhập bằng dấu cách." fileIdOrUrl: "ID tập tin hoặc URL" behavior: "Thao tác" @@ -622,19 +664,22 @@ sample: "Ví dụ" abuseReports: "Lượt báo cáo" reportAbuse: "Báo cáo" reportAbuseOf: "Báo cáo {name}" -fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này. Nếu đó là về một tút cụ thể, hãy kèm theo URL của tút." +fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này. Nếu + đó là về một tút cụ thể, hãy kèm theo URL của tút." abuseReported: "Báo cáo đã được gửi. Cảm ơn bạn nhiều." reporter: "Người báo cáo" reporteeOrigin: "Bị báo cáo" reporterOrigin: "Máy chủ người báo cáo" forwardReport: "Chuyển tiếp báo cáo cho máy chủ từ xa" -forwardReportIsAnonymous: "Thay vì tài khoản của bạn, một tài khoản hệ thống ẩn danh sẽ được hiển thị dưới dạng người báo cáo ở máy chủ từ xa." +forwardReportIsAnonymous: "Thay vì tài khoản của bạn, một tài khoản hệ thống ẩn danh + sẽ được hiển thị dưới dạng người báo cáo ở máy chủ từ xa." send: "Gửi" abuseMarkAsResolved: "Đánh dấu đã xử lý" openInNewTab: "Mở trong tab mới" openInSideView: "Mở trong thanh bên" defaultNavigationBehaviour: "Thao tác điều hướng mặc định" -editTheseSettingsMayBreakAccount: "Việc chỉnh sửa các cài đặt này có thể làm hỏng tài khoản của bạn." +editTheseSettingsMayBreakAccount: "Việc chỉnh sửa các cài đặt này có thể làm hỏng + tài khoản của bạn." instanceTicker: "Thông tin máy chủ của tút" waitingFor: "Đang đợi {x}" random: "Ngẫu nhiên" @@ -646,9 +691,11 @@ createNew: "Tạo mới" optional: "Không bắt buộc" createNewClip: "Tạo một ghim mới" unclip: "Bỏ ghim" -confirmToUnclipAlreadyClippedNote: "Bài đăng này là một phần của \"{name}\" ghim. Bạn có muốn bỏ khỏi ghim?" +confirmToUnclipAlreadyClippedNote: "Bài đăng này là một phần của \"{name}\" ghim. + Bạn có muốn bỏ khỏi ghim?" public: "Công khai" -i18nInfo: "Calckey đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác nhau. Bạn có thể hỗ trợ tại {link}." +i18nInfo: "Calckey đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác nhau. + Bạn có thể hỗ trợ tại {link}." manageAccessTokens: "Tạo mã truy cập" accountInfo: "Thông tin tài khoản" notesCount: "Số lượng tút" @@ -667,12 +714,15 @@ no: "Từ chối" driveFilesCount: "Số tập tin trong Ổ đĩa" driveUsage: "Dung lượng ổ đĩa" noCrawle: "Từ chối lập chỉ mục" -noCrawleDescription: "Không cho công cụ tìm kiếm lập chỉ mục trang hồ sơ, tút, Trang, etc." -lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai, trừ khi bạn đặt chế độ hiển thị tút của mình thành \"Chỉ người theo dõi\"." +noCrawleDescription: "Không cho công cụ tìm kiếm lập chỉ mục trang hồ sơ, tút, Trang, + etc." +lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai, trừ khi bạn đặt chế + độ hiển thị tút của mình thành \"Chỉ người theo dõi\"." alwaysMarkSensitive: "Luôn đánh dấu NSFW" loadRawImages: "Tải ảnh gốc thay vì ảnh thu nhỏ" disableShowingAnimatedImages: "Không phát ảnh động" -verificationEmailSent: "Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết đính kèm để hoàn tất xác minh." +verificationEmailSent: "Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết + đính kèm để hoàn tất xác minh." notSet: "Chưa đặt" emailVerified: "Email đã được xác minh" noteFavoritesCount: "Số lượng tút yêu thích" @@ -684,14 +734,16 @@ clips: "Ghim" experimentalFeatures: "Tính năng thử nghiệm" developer: "Nhà phát triển" makeExplorable: "Không hiện tôi trong \"Khám phá\"" -makeExplorableDescription: "Nếu bạn tắt, tài khoản của bạn sẽ không hiện trong mục \"Khám phá\"." +makeExplorableDescription: "Nếu bạn tắt, tài khoản của bạn sẽ không hiện trong mục + \"Khám phá\"." showGapBetweenNotesInTimeline: "Hiện dải phân cách giữa các tút trên bảng tin" duplicate: "Tạo bản sao" left: "Bên trái" center: "Giữa" wide: "Rộng" narrow: "Thu hẹp" -reloadToApplySetting: "Cài đặt này sẽ chỉ áp dụng sau khi tải lại trang. Tải lại ngay bây giờ?" +reloadToApplySetting: "Cài đặt này sẽ chỉ áp dụng sau khi tải lại trang. Tải lại ngay + bây giờ?" needReloadToApply: "Cần tải lại để điều này được áp dụng." showTitlebar: "Hiện thanh tựa đề" clearCache: "Xóa bộ nhớ đệm" @@ -699,7 +751,10 @@ onlineUsersCount: "{n} người đang online" nUsers: "{n} Người" nNotes: "{n} Tút" sendErrorReports: "Báo lỗi" -sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia sẻ với Calckey khi xảy ra sự cố, giúp nâng cao chất lượng của Calckey.\nBao gồm thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt động của bạn trong Calckey, v.v." +sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia + sẻ với Calckey khi xảy ra sự cố, giúp nâng cao chất lượng của Calckey.\nBao gồm + thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt + động của bạn trong Calckey, v.v." myTheme: "Theme của tôi" backgroundColor: "Màu nền" accentColor: "Màu phụ" @@ -708,7 +763,7 @@ saveAs: "Lưu thành" advanced: "Nâng cao" value: "Giá trị" createdAt: "Ngày tạo" -updatedAt: "Cập nhật lúc" +updatedAt: "Cập nhật" saveConfirm: "Lưu thay đổi?" deleteConfirm: "Bạn có muốn xóa không?" invalidValue: "Giá trị không hợp lệ." @@ -738,14 +793,16 @@ unlikeConfirm: "Bạn có chắc muốn bỏ thích ?" fullView: "Kích thước đầy đủ" quitFullView: "Thoát toàn màn hình" addDescription: "Thêm mô tả" -userPagePinTip: "Bạn có thể hiển thị các tút ở đây bằng cách chọn \"Ghim vào hồ sơ\" từ menu của mỗi tút." +userPagePinTip: "Bạn có thể hiển thị các tút ở đây bằng cách chọn \"Ghim vào hồ sơ\"\ + \ từ menu của mỗi tút." notSpecifiedMentionWarning: "Tút này có đề cập đến những người không mong muốn" info: "Giới thiệu" userInfo: "Thông tin người dùng" unknown: "Chưa biết" onlineStatus: "Trạng thái" hideOnlineStatus: "Ẩn trạng thái online" -hideOnlineStatusDescription: "Ẩn trạng thái online của bạn làm giảm sự tiện lợi của một số tính năng như tìm kiếm." +hideOnlineStatusDescription: "Ẩn trạng thái online của bạn làm giảm sự tiện lợi của + một số tính năng như tìm kiếm." online: "Online" active: "Hoạt động" offline: "Offline" @@ -780,7 +837,8 @@ emailNotConfiguredWarning: "Chưa đặt địa chỉ email." ratio: "Tỷ lệ" previewNoteText: "Hiện xem trước" customCss: "Tùy chỉnh CSS" -customCssWarn: "Chỉ sử dụng những cài đặt này nếu bạn biết rõ về nó. Việc nhập các giá trị không đúng có thể khiến máy chủ hoạt động không bình thường." +customCssWarn: "Chỉ sử dụng những cài đặt này nếu bạn biết rõ về nó. Việc nhập các + giá trị không đúng có thể khiến máy chủ hoạt động không bình thường." global: "Toàn cầu" squareAvatars: "Ảnh đại diện vuông" sent: "Gửi" @@ -795,7 +853,8 @@ whatIsNew: "Hiện những thay đổi" translate: "Dịch" translatedFrom: "Dịch từ {x}" accountDeletionInProgress: "Đang xử lý việc xóa tài khoản" -usernameInfo: "Bạn có thể sử dụng chữ cái (a ~ z, A ~ Z), chữ số (0 ~ 9) hoặc dấu gạch dưới (_). Tên người dùng không thể thay đổi sau này." +usernameInfo: "Bạn có thể sử dụng chữ cái (a ~ z, A ~ Z), chữ số (0 ~ 9) hoặc dấu + gạch dưới (_). Tên người dùng không thể thay đổi sau này." aiChanMode: "Chế độ Ai" keepCw: "Giữ cảnh báo nội dung" pubSub: "Tài khoản Chính/Phụ" @@ -811,12 +870,14 @@ filter: "Bộ lọc" controlPanel: "Bảng điều khiển" manageAccounts: "Quản lý tài khoản" makeReactionsPublic: "Đặt lịch sử biểu cảm công khai" -makeReactionsPublicDescription: "Điều này sẽ hiển thị công khai danh sách tất cả các biểu cảm trước đây của bạn." +makeReactionsPublicDescription: "Điều này sẽ hiển thị công khai danh sách tất cả các + biểu cảm trước đây của bạn." classic: "Cổ điển" muteThread: "Không quan tâm nữa" unmuteThread: "Quan tâm tút này" ffVisibility: "Hiển thị Theo dõi/Người theo dõi" -ffVisibilityDescription: "Quyết định ai có thể xem những người bạn theo dõi và những người theo dõi bạn." +ffVisibilityDescription: "Quyết định ai có thể xem những người bạn theo dõi và những + người theo dõi bạn." continueThread: "Tiếp tục xem chuỗi tút" deleteAccountConfirm: "Điều này sẽ khiến tài khoản bị xóa vĩnh viễn. Vẫn tiếp tục?" incorrectPassword: "Sai mật khẩu." @@ -857,14 +918,17 @@ thereIsUnresolvedAbuseReportWarning: "Có báo cáo chưa xử lí." recommended: "Được đề xuất" check: "Kiểm tra" driveCapOverrideLabel: "Thay đổi dung lượng drive cho người này" -driveCapOverrideCaption: "Đặt dung lượng drive về mặc định bằng cách nhập 0 hoặc số âm." +driveCapOverrideCaption: "Đặt dung lượng drive về mặc định bằng cách nhập 0 hoặc số + âm." requireAdminForView: "Bạn phải đăng nhập như là quản trị viên mới xem được." isSystemAccount: "Đã tạo một tài khoản và tự động vận hành bởi hệ thống." typeToConfirm: "Nhấn {x} để xác nhận" deleteAccount: "Xóa tài khoản" document: "Tài liệu" numberOfPageCache: "Số lượng trang bộ nhớ đệm" -numberOfPageCacheDescription: "Việc tăng con số này sẽ cải thiện sự thuận tiện cho người dùng nhưng gây ra nhiều áp lực hơn cho máy chủ cũng như sử dụng nhiều bộ nhớ hơn." +numberOfPageCacheDescription: "Việc tăng con số này sẽ cải thiện sự thuận tiện cho + người dùng nhưng gây ra nhiều áp lực hơn cho máy chủ cũng như sử dụng nhiều bộ nhớ + hơn." logoutConfirm: "Bạn có chắc muốn đăng xuất?" lastActiveDate: "Lần cuối vào" statusbar: "Thanh trạng thái" @@ -881,24 +945,33 @@ sensitiveMediaDetection: "Tự động phát hiện NSFW" localOnly: "Chỉ trên máy chủ" remoteOnly: "Chỉ máy chủ từ xa" failedToUpload: "Tải lên thất bại" -cannotUploadBecauseInappropriate: "Không thể tải lên tập tin này vì các phần của tập tin đã được phát hiện có khả năng là NSFW." +cannotUploadBecauseInappropriate: "Không thể tải lên tập tin này vì các phần của tập + tin đã được phát hiện có khả năng là NSFW." cannotUploadBecauseNoFreeSpace: "Tải lên không thành công do thiếu dung lượng Drive." beta: "Beta" enableAutoSensitive: "Tự động đánh dấu NSFW" -enableAutoSensitiveDescription: "Cho phép tự động phát hiện và đánh dấu media NSFW thông qua học máy, nếu có thể. Ngay cả khi tùy chọn này bị tắt, nó vẫn có thể được bật trên toàn máy chủ." -activeEmailValidationDescription: "Cho phép xác minh địa chỉ email chặt chẽ hơn, bao gồm việc kiểm tra các địa chỉ dùng một lần và xem nó có thực sự được giao tiếp hay không. Khi bỏ chọn, chỉ định dạng của email được xác minh." +enableAutoSensitiveDescription: "Cho phép tự động phát hiện và đánh dấu media NSFW + thông qua học máy, nếu có thể. Ngay cả khi tùy chọn này bị tắt, nó vẫn có thể được + bật trên toàn máy chủ." +activeEmailValidationDescription: "Cho phép xác minh địa chỉ email chặt chẽ hơn, bao + gồm việc kiểm tra các địa chỉ dùng một lần và xem nó có thực sự được giao tiếp hay + không. Khi bỏ chọn, chỉ định dạng của email được xác minh." navbar: "Thanh điều hướng" shuffle: "Xáo trộn" account: "Tài khoản của bạn" move: "Di chuyển" _sensitiveMediaDetection: - description: "Giảm nỗ lực kiểm duyệt máy chủ thông qua việc tự động nhận dạng media NSFW thông qua học máy. Điều này sẽ làm tăng một chút áp lực trên máy chủ." + description: "Giảm nỗ lực kiểm duyệt máy chủ thông qua việc tự động nhận dạng media + NSFW thông qua học máy. Điều này sẽ làm tăng một chút áp lực trên máy chủ." sensitivity: "Phát hiện nhạy cảm" - sensitivityDescription: "Giảm độ nhạy sẽ dẫn đến ít phát hiện sai hơn (dương tính giả), tăng nó sẽ dẫn đến ít phát hiện sai hơn (âm tính giả)." + sensitivityDescription: "Giảm độ nhạy sẽ dẫn đến ít phát hiện sai hơn (dương tính + giả), tăng nó sẽ dẫn đến ít phát hiện sai hơn (âm tính giả)." setSensitiveFlagAutomatically: "Đánh dấu là NSFW" - setSensitiveFlagAutomaticallyDescription: "Kết quả của phát hiện nội bộ sẽ được giữ lại ngay cả khi tùy chọn này bị tắt." + setSensitiveFlagAutomaticallyDescription: "Kết quả của phát hiện nội bộ sẽ được + giữ lại ngay cả khi tùy chọn này bị tắt." analyzeVideos: "Bật chuẩn đoán video" - analyzeVideosDescription: "Phân tích video bên cạnh hình ảnh. Điều này sẽ làm tăng một chút áp lực trên máy chủ." + analyzeVideosDescription: "Phân tích video bên cạnh hình ảnh. Điều này sẽ làm tăng + một chút áp lực trên máy chủ." _emailUnavailable: used: "Địa chỉ email đã được sử dụng" format: "Địa chỉ email không hợp lệ" @@ -912,11 +985,15 @@ _ffVisibility: _signup: almostThere: "Gần xong rồi" emailAddressInfo: "Hãy điền địa chỉ email của bạn. Nó sẽ không được công khai." - emailSent: "Một email xác minh đã được gửi đến địa chỉ email ({email}) của bạn. Vui lòng nhấn vào liên kết trong đó để hoàn tất việc tạo tài khoản." + emailSent: "Một email xác minh đã được gửi đến địa chỉ email ({email}) của bạn. + Vui lòng nhấn vào liên kết trong đó để hoàn tất việc tạo tài khoản." _accountDelete: accountDelete: "Xóa tài khoản" - mayTakeTime: "Vì xóa tài khoản là một quá trình tốn nhiều tài nguyên nên có thể mất một khoảng thời gian để hoàn thành, tùy thuộc vào lượng nội dung bạn đã tạo và số lượng tập tin bạn đã tải lên." - sendEmail: "Sau khi hoàn tất việc xóa tài khoản, một email sẽ được gửi đến địa chỉ email đã đăng ký tài khoản này." + mayTakeTime: "Vì xóa tài khoản là một quá trình tốn nhiều tài nguyên nên có thể + mất một khoảng thời gian để hoàn thành, tùy thuộc vào lượng nội dung bạn đã tạo + và số lượng tập tin bạn đã tải lên." + sendEmail: "Sau khi hoàn tất việc xóa tài khoản, một email sẽ được gửi đến địa chỉ + email đã đăng ký tài khoản này." requestAccountDelete: "Yêu cầu xóa tài khoản" started: "Đang bắt đầu xóa tài khoản." inProgress: "Đang xóa dần tài khoản." @@ -924,9 +1001,12 @@ _ad: back: "Quay lại" reduceFrequencyOfThisAd: "Hiện ít lại" _forgotPassword: - enterEmail: "Nhập địa chỉ email bạn đã sử dụng để đăng ký. Một liên kết mà bạn có thể đặt lại mật khẩu của mình sau đó sẽ được gửi đến nó." - ifNoEmail: "Nếu bạn không sử dụng email lúc đăng ký, vui lòng liên hệ với quản trị viên." - contactAdmin: "Máy chủ này không hỗ trợ sử dụng địa chỉ email, vui lòng liên hệ với quản trị viên để đặt lại mật khẩu của bạn." + enterEmail: "Nhập địa chỉ email bạn đã sử dụng để đăng ký. Một liên kết mà bạn có + thể đặt lại mật khẩu của mình sau đó sẽ được gửi đến nó." + ifNoEmail: "Nếu bạn không sử dụng email lúc đăng ký, vui lòng liên hệ với quản trị + viên." + contactAdmin: "Máy chủ này không hỗ trợ sử dụng địa chỉ email, vui lòng liên hệ + với quản trị viên để đặt lại mật khẩu của bạn." _gallery: my: "Kho Ảnh" liked: "Tút Đã Thích" @@ -950,11 +1030,13 @@ _preferencesBackups: inputName: "Nhập tên bản sao lưu" cannotSave: "Không thể lưu" nameAlreadyExists: "Bản sao lưu \"{name}\" đã tồn tại. Xin nhập tên khác." - applyConfirm: "Bạn có chắc muốn áp dụng bản sao lưu \"{name}\" cho thiết bị này? Thiết lập hiện tại sẽ bị ghi đè." + applyConfirm: "Bạn có chắc muốn áp dụng bản sao lưu \"{name}\" cho thiết bị này? + Thiết lập hiện tại sẽ bị ghi đè." saveConfirm: "Lưu bản sao lưu {name}?" deleteConfirm: "Xóa bản sao lưu {name}?" renameConfirm: "Đổi tên bản sao lưu \"{old}\" thành \"{new}\"?" - noBackups: "Chưa có bản sao lưu. Bạn có thể sao lưu thiết lập trên máy chủ này bằng cách sử dụng \"Tạo sao lưu\"." + noBackups: "Chưa có bản sao lưu. Bạn có thể sao lưu thiết lập trên máy chủ này bằng + cách sử dụng \"Tạo sao lưu\"." createdAt: "Tạo vào: {time} {date}" updatedAt: "Cập nhật: {time} {date}" cannotLoad: "Tải thất bại" @@ -972,15 +1054,22 @@ _aboutMisskey: source: "Mã nguồn" translation: "Dịch Calckey" donate: "Ủng hộ Calckey" - morePatrons: "Chúng tôi cũng trân trọng sự hỗ trợ của nhiều người đóng góp khác không được liệt kê ở đây. Cảm ơn! 🥰" + morePatrons: "Chúng tôi cũng trân trọng sự hỗ trợ của nhiều người đóng góp khác + không được liệt kê ở đây. Cảm ơn! 🥰" patrons: "Người ủng hộ" + patronsList: Liệt kê theo thứ tự, không theo số tiền ủng hộ. Hãy để tên bạn ở đây! + donateTitle: Thích Calckey? + pleaseDonateToCalckey: Hãy cân nhắc ủng hộ Calckey phát triển. + donateHost: Ủng hộ {host} + pleaseDonateToHost: Cũng như ủng hộ chi phí vận hành máy chủ {host} của bạn. _nsfw: respect: "Ẩn nội dung NSFW" ignore: "Hiện nội dung NSFW" force: "Ẩn mọi media" _mfm: cheatSheet: "MFM Cheatsheet" - intro: "MFM là ngôn ngữ phát triển độc quyền của Calckey có thể được sử dụng ở nhiều nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." + intro: "MFM là ngôn ngữ phát triển độc quyền của Calckey có thể được sử dụng ở nhiều + nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." dummy: "Calckey mở rộng thế giới Fediverse" mention: "Nhắc đến" mentionDescription: "Bạn có thể nhắc đến ai đó bằng cách sử dụng @tên người dùng." @@ -999,11 +1088,13 @@ _mfm: inlineCode: "Mã (Trong dòng)" inlineCodeDescription: "Hiển thị tô sáng cú pháp trong dòng cho mã (chương trình)." blockCode: "Mã (Khối)" - blockCodeDescription: "Hiển thị tô sáng cú pháp cho mã nhiều dòng (chương trình) trong một khối." + blockCodeDescription: "Hiển thị tô sáng cú pháp cho mã nhiều dòng (chương trình) + trong một khối." inlineMath: "Toán học (Trong dòng)" inlineMathDescription: "Hiển thị công thức toán (KaTeX) trong dòng" blockMath: "Toán học (Khối)" - blockMathDescription: "Hiển thị công thức toán học nhiều dòng (KaTeX) trong một khối" + blockMathDescription: "Hiển thị công thức toán học nhiều dòng (KaTeX) trong một + khối" quote: "Trích dẫn" quoteDescription: "Hiển thị nội dung dạng lời trích dạng." emoji: "Tùy chỉnh emoji" @@ -1044,6 +1135,9 @@ _mfm: rotateDescription: "Xoay nội dung theo một góc cụ thể." plain: "Đơn giản" plainDescription: "Vô hiệu hóa mọi hiệu ứng MFM chứa trong hiệu ứng MFM này." + stop: Dừng CĐN + play: Phát CĐN + warn: CĐN có thể gây đau mắt hoặc chóng mặt _instanceTicker: none: "Không hiển thị" remote: "Hiện cho người dùng từ máy chủ khác" @@ -1069,15 +1163,20 @@ _menuDisplay: hide: "Ẩn" _wordMute: muteWords: "Ẩn từ ngữ" - muteWordsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition." - muteWordsDescription2: "Bao quanh các từ khóa bằng dấu gạch chéo để sử dụng cụm từ thông dụng." + muteWordsDescription: "Separate with spaces for an AND condition or with line breaks + for an OR condition." + muteWordsDescription2: "Bao quanh các từ khóa bằng dấu gạch chéo để sử dụng cụm + từ thông dụng." softDescription: "Ẩn các tút phù hợp điều kiện đã đặt khỏi bảng tin." - hardDescription: "Ngăn các tút đáp ứng các điều kiện đã đặt xuất hiện trên bảng tin. Lưu ý, những tút này sẽ không được thêm vào bảng tin ngay cả khi các điều kiện được thay đổi." + hardDescription: "Ngăn các tút đáp ứng các điều kiện đã đặt xuất hiện trên bảng + tin. Lưu ý, những tút này sẽ không được thêm vào bảng tin ngay cả khi các điều + kiện được thay đổi." soft: "Yếu" hard: "Mạnh" mutedNotes: "Những tút đã ẩn" _instanceMute: - instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn." + instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ + được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn." instanceMuteDescription2: "Tách bằng cách xuống dòng" title: "Ẩn tút từ những máy chủ đã liệt kê." heading: "Danh sách những máy chủ bị ẩn" @@ -1109,7 +1208,8 @@ _theme: darken: "Độ tối" lighten: "Độ sáng" inputConstantName: "Nhập tên cho hằng số này" - importInfo: "Nếu bạn nhập mã theme ở đây, bạn có thể nhập mã đó vào trình chỉnh sửa theme" + importInfo: "Nếu bạn nhập mã theme ở đây, bạn có thể nhập mã đó vào trình chỉnh + sửa theme" deleteConstantConfirm: "Bạn có chắc muốn xóa hằng số {const} không?" keys: accent: "Màu phụ" @@ -1183,32 +1283,47 @@ _tutorial: step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." - step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step2_2: "Providing some information about who you are will make it easier for others + to tell if they want to see your notes or follow you." step3_1: "Now time to follow some people!" - step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step3_2: "Your home and social timelines are based off of who you follow, so try + following a couple accounts to get started.\nClick the plus circle on the top + right of a profile to follow them." step4_1: "Let's get you out there." - step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step4_2: "For your first post, some people like to made a {introduction} post or + a simple \"Hello world!\"" step5_1: "Timelines, timelines everywhere!" step5_2: "Your instance has {timelines} different timelines enabled." step5_3: "The Home {icon} timeline is where you can see posts from your followers." - step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." - step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." - step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." - step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else + on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances + the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of + your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other + connected instance." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." - step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." - step6_4: "Now go, explore, and have fun!" + step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, + an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Calckey. + This one does though! It's a bit complicated, but you'll get the hang of it in + no time." + step6_4: "Bây giờ bắt đầu khám phá, và vui thôi!" _2fa: alreadyRegistered: "Bạn đã đăng ký thiết bị xác minh 2 bước." registerTOTP: "Đăng ký một thiết bị" registerSecurityKey: "Đăng ký một mã bảo vệ" - step1: "Trước tiên, hãy cài đặt một ứng dụng xác minh (chẳng hạn như {a} hoặc {b}) trên thiết bị của bạn." + step1: "Trước tiên, hãy cài đặt một ứng dụng xác minh (chẳng hạn như {a} hoặc {b}) + trên thiết bị của bạn." step2: "Sau đó, quét mã QR hiển thị trên màn hình này." step2Url: "Bạn cũng có thể nhập URL này nếu sử dụng một chương trình máy tính:" step3: "Nhập mã token do ứng dụng của bạn cung cấp để hoàn tất thiết lập." - step4: "Kể từ bây giờ, những lần đăng nhập trong tương lai sẽ yêu cầu mã token đăng nhập đó." - securityKeyInfo: "Bên cạnh xác minh bằng vân tay hoặc mã PIN, bạn cũng có thể thiết lập xác minh thông qua khóa bảo mật phần cứng hỗ trợ FIDO2 để bảo mật hơn nữa cho tài khoản của mình." + step4: "Kể từ bây giờ, những lần đăng nhập trong tương lai sẽ yêu cầu mã token đăng + nhập đó." + securityKeyInfo: "Bên cạnh xác minh bằng vân tay hoặc mã PIN, bạn cũng có thể thiết + lập xác minh thông qua khóa bảo mật phần cứng hỗ trợ FIDO2 để bảo mật hơn nữa + cho tài khoản của mình." _permissions: "read:account": "Xem thông tin tài khoản của bạn" "write:account": "Sửa thông tin tài khoản của bạn" @@ -1244,7 +1359,8 @@ _permissions: "write:gallery-likes": "Sửa danh sách các tút đã thích trong thư viện của tôi" _auth: shareAccess: "Bạn có muốn cho phép \"{name}\" truy cập vào tài khoản này không?" - shareAccessAsk: "Bạn có chắc muốn cho phép ứng dụng này truy cập vào tài khoản của mình không?" + shareAccessAsk: "Bạn có chắc muốn cho phép ứng dụng này truy cập vào tài khoản của + mình không?" permissionAsk: "Ứng dụng này yêu cầu các quyền sau" pleaseGoBack: "Vui lòng quay lại ứng dụng" callback: "Quay lại ứng dụng" @@ -1304,7 +1420,7 @@ _poll: deadlineTime: "giờ" duration: "Thời hạn" votesCount: "{n} bình chọn" - totalVotes: "{n} tổng bình chọn" + totalVotes: "{n} lượt bình chọn" vote: "Bình chọn" showResult: "Xem kết quả" voted: "Đã bình chọn" @@ -1342,7 +1458,9 @@ _profile: youCanIncludeHashtags: "Bạn có thể dùng hashtag trong tiểu sử." metadata: "Thông tin bổ sung" metadataEdit: "Sửa thông tin bổ sung" - metadataDescription: "Sử dụng phần này, bạn có thể hiển thị các mục thông tin bổ sung trong hồ sơ của mình. Bạn có thể thêm thẻ {a} hoặc thẻ {l} với {rel} để xác minh liên kết trên tiểu sử của mình!" + metadataDescription: "Sử dụng phần này, bạn có thể hiển thị các mục thông tin bổ + sung trong hồ sơ của mình. Bạn có thể thêm thẻ {a} hoặc thẻ {l} với {rel} để xác + minh liên kết trên tiểu sử của mình!" metadataLabel: "Nhãn" metadataContent: "Nội dung" changeAvatar: "Đổi ảnh đại diện" @@ -1616,7 +1734,8 @@ _pages: _dailyRannum: arg1: "Giá trị tối thiểu" arg2: "Giá trị tối đa" - dailyRandomPick: "Chọn ngẫu nhiên từ một danh sách (Đổi mỗi người một lần mỗi ngày)" + dailyRandomPick: "Chọn ngẫu nhiên từ một danh sách (Đổi mỗi người một lần mỗi + ngày)" _dailyRandomPick: arg1: "Danh sách" seedRandom: "Ngẫu nhiên (với seed)" @@ -1663,7 +1782,8 @@ _pages: _for: arg1: "Số lần lặp lại" arg2: "Hành động" - typeError: "Chỗ {slot} chấp nhận các giá trị thuộc loại \"{expect}\", nhưng giá trị được cung cấp thuộc loại \"{actual}\"!" + typeError: "Chỗ {slot} chấp nhận các giá trị thuộc loại \"{expect}\", nhưng giá + trị được cung cấp thuộc loại \"{actual}\"!" thereIsEmptySlot: "Chỗ {slot} đang trống!" types: string: "Văn bản" @@ -1727,7 +1847,8 @@ _deck: newProfile: "Hồ sơ mới" deleteProfile: "Xóa hồ sơ" introduction: "Kết hợp các cột để tạo giao diện của riêng bạn!" - introduction2: "Bạn có thể thêm cột bất kỳ lúc nào bằng cách nhấn + ở bên phải màn hình." + introduction2: "Bạn có thể thêm cột bất kỳ lúc nào bằng cách nhấn + ở bên phải màn + hình." widgetsIntroduction: "Chọn \"Sửa widget\" trong menu cột và thêm một widget." _columns: main: "Chính" @@ -1738,3 +1859,11 @@ _deck: list: "Danh sách" mentions: "Lượt nhắc" direct: "Nhắn riêng" +renoteMute: Ẩn lượt chia sẻ +renoteUnmute: Bỏ ẩn lượt chia sẻ +searchPlaceholder: Lướt Calckey +edited: Đã sửa {date} {time} +findOtherInstance: Tìm máy chủ khác +noThankYou: Từ chối +_filters: + withFile: Có file From 93dddda287226bfacb65b2b5c96756261203fe3d Mon Sep 17 00:00:00 2001 From: ltlapy Date: Thu, 20 Jul 2023 14:01:13 +0000 Subject: [PATCH 029/239] chore: Translated using Weblate (Korean) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ --- locales/ko-KR.yml | 199 +++++++++++++++++++++++----------------------- 1 file changed, 101 insertions(+), 98 deletions(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 25b62c0f70..1f2fd35be9 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -17,7 +17,7 @@ enterUsername: "유저명 입력" renotedBy: "{user}님이 Renote" noNotes: "노트가 없습니다" noNotifications: "표시할 알림이 없습니다" -instance: "인스턴스" +instance: "서버" settings: "설정" basicSettings: "기본 설정" otherSettings: "기타 설정" @@ -65,7 +65,7 @@ import: "가져오기" export: "내보내기" files: "파일" download: "다운로드" -driveFileDeleteConfirm: "파일 \"{name}\" 을 삭제하시겠습니까? 이 파일이 첨부된 노트도 함께 삭제됩니다." +driveFileDeleteConfirm: "파일 \"{name}\" 을 삭제하시겠습니까? 이 파일이 첨부되었더 노트에서도 같이 삭제됩니다." unfollowConfirm: "{name}님을 언팔로우하시겠습니까?" exportRequested: "내보내기를 요청하였습니다. 이 작업은 시간이 걸릴 수 있습니다. 내보내기가 완료되면 \"드라이브\"에 추가됩니다." importRequested: "가져오기를 요청하였습니다. 이 작업에는 시간이 걸릴 수 있습니다." @@ -151,7 +151,7 @@ flagShowTimelineRepliesDescription: "이 설정을 활성화하면 타임라인 autoAcceptFollowed: "팔로우 중인 유저로부터의 팔로우 요청을 자동 수락" addAccount: "계정 추가" loginFailed: "로그인에 실패했습니다" -showOnRemote: "리모트에서 보기" +showOnRemote: "원본 페이지 열기" general: "일반" wallpaper: "배경" setWallpaper: "배경화면 설정" @@ -161,14 +161,14 @@ youHaveNoLists: "리스트가 없습니다" followConfirm: "{name}님을 팔로우 하시겠습니까?" proxyAccount: "프록시 계정" proxyAccountDescription: "프록시 계정은 특정 조건 하에서 유저의 리모트 팔로우를 대행하는 계정입니다. 예를 들면, 유저가 리모트 - 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 인스턴스로 배달되지 않기 때문에, 대신 프록시 계정이 - 해당 유저를 팔로우하도록 합니다." + 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 서버로 배달되지 않기 때문에, 대신 프록시 계정이 해당 + 유저를 팔로우하도록 합니다." host: "호스트" selectUser: "유저 선택" recipient: "수신인" annotation: "내용에 대한 주석" federation: "연합" -instances: "인스턴스" +instances: "서버" registeredAt: "등록 날짜" latestRequestSentAt: "마지막으로 요청을 보낸 시간" latestRequestReceivedAt: "마지막으로 요청을 받은 시간" @@ -178,7 +178,7 @@ charts: "차트" perHour: "1시간마다" perDay: "1일마다" stopActivityDelivery: "액티비티 보내지 않기" -blockThisInstance: "이 인스턴스를 차단" +blockThisInstance: "이 서버를 차단" operations: "작업" software: "소프트웨어" version: "버전" @@ -188,22 +188,22 @@ jobQueue: "작업 대기열" cpuAndMemory: "CPU와 메모리" network: "네트워크" disk: "디스크" -instanceInfo: "인스턴스 정보" +instanceInfo: "서버 정보" statistics: "통계" clearQueue: "대기열 비우기" clearQueueConfirmTitle: "대기열을 비우시겠습니까?" -clearQueueConfirmText: "대기열에 남아 있는 노트는 더이상 연합되지 않습니다. 보통의 경우 이 작업은 필요하지 않습니다." +clearQueueConfirmText: "대기열에 남아 있는 게시물이 연합되지 않습니다. 보통의 경우 이 작업은 필요하지 않습니다." clearCachedFiles: "캐시 비우기" clearCachedFilesConfirm: "캐시된 리모트 파일을 모두 삭제하시겠습니까?" -blockedInstances: "차단된 인스턴스" -blockedInstancesDescription: "차단하려는 인스턴스의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 인스턴스는 이 인스턴스와 - 통신할 수 없게 됩니다." +blockedInstances: "차단한 서버" +blockedInstancesDescription: "차단하려는 서버의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 서버는 이 서버와 통신할 + 수 없게 됩니다." muteAndBlock: "뮤트 및 차단" mutedUsers: "뮤트한 유저" blockedUsers: "차단한 유저" noUsers: "아무도 없습니다" editProfile: "프로필 수정" -noteDeleteConfirm: "이 노트를 삭제하시겠습니까?" +noteDeleteConfirm: "이 게시물을 삭제하시겠습니까?" pinLimitExceeded: "더 이상 고정할 수 없습니다." intro: "Misskey의 설치가 완료되었습니다! 관리자 계정을 생성해주세요." done: "완료" @@ -220,9 +220,9 @@ all: "전체" subscribing: "구독 중" publishing: "배포 중" notResponding: "응답 없음" -instanceFollowing: "인스턴스의 팔로잉" -instanceFollowers: "인스턴스의 팔로워" -instanceUsers: "인스턴스의 유저" +instanceFollowing: "서버 팔로잉" +instanceFollowers: "서버 팔로워" +instanceUsers: "서버 유저" changePassword: "비밀번호 변경" security: "보안" retypedNotMatch: "입력이 일치하지 않습니다." @@ -313,8 +313,8 @@ unwatch: "지켜보기 해제" accept: "허가" reject: "거부" normal: "정상" -instanceName: "인스턴스 이름" -instanceDescription: "인스턴스 소개" +instanceName: "서버 이름" +instanceDescription: "서버 소개" maintainerName: "관리자 이름" maintainerEmail: "관리자 이메일" tosUrl: "이용약관 URL" @@ -344,9 +344,9 @@ basicInfo: "기본 정보" pinnedUsers: "고정된 유저" pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다." pinnedPages: "고정한 페이지" -pinnedPagesDescription: "인스턴스의 대문에 고정하고 싶은 페이지의 경로를 한 줄에 하나씩 적습니다." +pinnedPagesDescription: "서버 대문에 고정할 페이지의 경로를 한 줄에 하나씩 적습니다." pinnedClipId: "고정할 클립의 ID" -pinnedNotes: "고정해놓은 노트" +pinnedNotes: "고정한 글" hcaptcha: "hCaptcha" enableHcaptcha: "hCaptcha 활성화" hcaptchaSiteKey: "사이트 키" @@ -364,8 +364,8 @@ antennaSource: "받을 소스" antennaKeywords: "받을 키워드" antennaExcludeKeywords: "제외할 키워드" antennaKeywordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다" -notifyAntenna: "새로운 노트를 알림" -withFileAntenna: "파일이 첨부된 노트만" +notifyAntenna: "새로운 글을 알림" +withFileAntenna: "파일이 첨부된 게시물만" enableServiceworker: "ServiceWorker 사용" antennaUsersDescription: "유저명을 한 줄에 한 명씩 적습니다" caseSensitive: "대소문자를 구분" @@ -429,7 +429,7 @@ text: "텍스트" enable: "사용" next: "다음" retype: "다시 입력" -noteOf: "{user}의 노트" +noteOf: "{user}의 게시물" inviteToGroup: "그룹에 초대하기" quoteAttached: "인용함" quoteQuestion: "인용해서 작성하시겠습니까?" @@ -487,8 +487,8 @@ accountSettings: "계정 설정" promotion: "프로모션" promote: "프로모션하기" numberOfDays: "며칠동안" -hideThisNote: "이 노트를 숨기기" -showFeaturedNotesInTimeline: "타임라인에 추천 노트를 표시" +hideThisNote: "이 글을 숨기기" +showFeaturedNotesInTimeline: "타임라인에 추천 게시물을 표시" objectStorage: "오브젝트 스토리지" useObjectStorage: "오브젝트 스토리지를 사용" objectStorageBaseUrl: "Base URL" @@ -514,7 +514,7 @@ objectStorageSetPublicRead: "업로드할 때 'public-read'를 설정하기" serverLogs: "서버 로그" deleteAll: "모두 삭제" showFixedPostForm: "타임라인 상단에 글 작성란을 표시" -newNoteRecived: "새 노트가 있습니다" +newNoteRecived: "새 글이 있습니다" sounds: "소리" listen: "듣기" none: "없음" @@ -546,8 +546,8 @@ updateRemoteUser: "리모트 유저 정보 갱신" deleteAllFiles: "모든 파일 삭제" deleteAllFilesConfirm: "모든 파일을 삭제하시겠습니까?" removeAllFollowing: "모든 팔로잉 해제" -removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 - 된 경우 등에 실행해 주세요." +removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 서버가 더 이상 존재하지 않게 된 + 경우 등에 실행해 주세요." userSuspended: "이 계정은 정지된 상태입니다." userSilenced: "이 계정은 사일런스된 상태입니다." yourAccountSuspendedTitle: "계정이 정지되었습니다" @@ -561,8 +561,8 @@ addRelay: "릴레이 추가" inboxUrl: "Inbox 주소" addedRelays: "추가된 릴레이" serviceworkerInfo: "푸시 알림을 수행하려면 활성화해야 합니다." -deletedNote: "삭제된 노트" -invisibleNote: "비공개 노트" +deletedNote: "삭제된 글" +invisibleNote: "비공개 글" enableInfiniteScroll: "자동으로 좀 더 보기" visibility: "공개 범위" poll: "투표" @@ -613,7 +613,7 @@ testEmail: "이메일 전송 테스트" wordMute: "단어 뮤트" regexpError: "정규 표현식 오류" regexpErrorDescription: "{tab}단어 뮤트 {line}행의 정규 표현식에 오류가 발생했습니다:" -instanceMute: "인스턴스 뮤트" +instanceMute: "서버 뮤트" userSaysSomething: "{name}님이 무언가를 말했습니다" makeActive: "활성화" display: "표시" @@ -645,35 +645,35 @@ abuseReported: "신고를 보냈습니다. 신고해 주셔서 감사합니다." reporter: "신고자" reporteeOrigin: "피신고자" reporterOrigin: "신고자" -forwardReport: "리모트 인스턴스에도 신고 내용 보내기" -forwardReportIsAnonymous: "리모트 인스턴스에서는 나의 정보를 볼 수 없으며, 익명의 시스템 계정으로 표시됩니다." +forwardReport: "리모트 서버에도 신고 내용 보내기" +forwardReportIsAnonymous: "리모트 서버에서는 나의 정보를 볼 수 없으며, 익명의 시스템 계정으로 표시됩니다." send: "전송" abuseMarkAsResolved: "해결됨으로 표시" openInNewTab: "새 탭에서 열기" openInSideView: "사이드뷰로 열기" defaultNavigationBehaviour: "기본 탐색 동작" editTheseSettingsMayBreakAccount: "이 설정을 변경하면 계정이 손상될 수 있습니다." -instanceTicker: "노트의 인스턴스 정보" +instanceTicker: "게시물의 인스턴스 정보" waitingFor: "{x}을(를) 기다리고 있습니다" random: "랜덤" system: "시스템" -switchUi: "UI 전환" +switchUi: "레이아웃" desktop: "데스크탑" clip: "클립" createNew: "새로 만들기" optional: "옵션" createNewClip: "새 클립 만들기" unclip: "클립 해제" -confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?" +confirmToUnclipAlreadyClippedNote: "이 글은 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?" public: "공개" i18nInfo: "Calckey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다." manageAccessTokens: "액세스 토큰 관리" accountInfo: "계정 정보" -notesCount: "노트 수" +notesCount: "글 수" repliesCount: "답글 수" -renotesCount: "Renote 수" +renotesCount: "부스트 수" repliedCount: "받은 답글 수" -renotedCount: "받은 Renote 수" +renotedCount: "받은 부스트 수" followingCount: "팔로우 수" followersCount: "팔로워 수" sentReactionsCount: "보낸 리액션 수" @@ -685,15 +685,15 @@ no: "아니오" driveFilesCount: "드라이브 파일 개수" driveUsage: "드라이브 사용량" noCrawle: "검색엔진의 인덱싱 거부" -noCrawleDescription: "검색엔진에 사용자 페이지, 노트, 페이지 등의 콘텐츠를 인덱싱되지 않게 합니다." -lockedAccountInfo: "팔로우를 승인으로 승인받더라도 노트의 공개 범위를 '팔로워'로 하지 않는 한 누구나 당신의 노트를 볼 수 있습니다." +noCrawleDescription: "검색엔진에 사용자 페이지, 게시물, 페이지 등의 콘텐츠를 인덱싱되지 않게 합니다." +lockedAccountInfo: "팔로우를 승인으로 승인받더라도 게시물의 공개 범위를 '팔로워'로 하지 않는 한 누구나 당신의 글을 볼 수 있습니다." alwaysMarkSensitive: "미디어를 항상 열람 주의로 설정" loadRawImages: "첨부한 이미지의 썸네일을 원본화질로 표시" disableShowingAnimatedImages: "움직이는 이미지를 자동으로 재생하지 않음" verificationEmailSent: "확인 메일을 발송하였습니다. 설정을 완료하려면 메일에 첨부된 링크를 확인해 주세요." notSet: "설정되지 않음" emailVerified: "메일 주소가 확인되었습니다." -noteFavoritesCount: "즐겨찾기한 노트 수" +noteFavoritesCount: "즐겨찾기한 게시물 수" pageLikesCount: "좋아요 한 Page 수" pageLikedCount: "Page에 받은 좋아요 수" contact: "연락처" @@ -715,10 +715,11 @@ showTitlebar: "타이틀 바를 표시하기" clearCache: "캐시 비우기" onlineUsersCount: "{n}명이 접속 중" nUsers: "{n} 유저" -nNotes: "{n} 노트" +nNotes: "{n} 게시물" sendErrorReports: "오류 보고서 보내기" -sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Misskey에 보내어 더 - 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다." +sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Firefish에 보내어 + 더 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다.\n 상세 정보에는 OS 버전, 브라우저 정보, Firefish에서의 활동 정보 등이 + 포함됩니다." myTheme: "내 테마" backgroundColor: "배경 색" accentColor: "강조 색상" @@ -742,7 +743,7 @@ capacity: "용량" inUse: "사용중" editCode: "코드 수정" apply: "적용" -receiveAnnouncementFromInstance: "이 인스턴스의 알림을 이메일로 수신할게요" +receiveAnnouncementFromInstance: "이 서버의 알림을 이메일로 수신" emailNotification: "메일 알림" publish: "게시" inChannelSearch: "채널에서 검색" @@ -757,7 +758,7 @@ unlikeConfirm: "좋아요를 취소할까요?" fullView: "전체 화면" quitFullView: "전체 화면 해제" addDescription: "설명 추가" -userPagePinTip: "각 노트의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 노트를 표시해 둘 수 있어요." +userPagePinTip: "각 게시물의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 노트를 표시해 둘 수 있어요." notSpecifiedMentionWarning: "수신자가 선택되지 않은 멘션이 있어요" info: "정보" userInfo: "유저 정보" @@ -770,7 +771,7 @@ active: "최근에 활동함" offline: "오프라인" notRecommended: "추천하지 않음" botProtection: "Bot 방어" -instanceBlocking: "인스턴스 차단" +instanceBlocking: "서버 차단" selectAccount: "계정 선택" switchAccount: "계정 바꾸기" enabled: "활성화" @@ -787,7 +788,7 @@ postToGallery: "갤러리에 업로드" gallery: "갤러리" recentPosts: "최근 포스트" popularPosts: "인기 포스트" -shareWithNote: "노트로 공유" +shareWithNote: "게시물로 공유" ads: "광고" expiration: "기한" memo: "메모" @@ -833,7 +834,7 @@ controlPanel: "제어판" manageAccounts: "계정 관리" makeReactionsPublic: "리액션 목록을 공개하기" makeReactionsPublicDescription: "나의 리액션을 누구나 볼 수 있게 합니다." -classic: "클래식" +classic: "중앙" muteThread: "이 글타래를 뮤트" unmuteThread: "글타래 뮤트 해제" ffVisibility: "내 인맥의 공개 범위" @@ -856,8 +857,8 @@ themeColor: "테마 컬러" size: "크기" numberOfColumn: "한 줄에 보일 리액션의 수" searchByGoogle: "검색" -instanceDefaultLightTheme: "인스턴스 기본 라이트 테마" -instanceDefaultDarkTheme: "인스턴스 기본 다크 테마" +instanceDefaultLightTheme: "서버 기본 라이트 테마" +instanceDefaultDarkTheme: "서버 기본 다크 테마" instanceDefaultThemeDescription: "객체 형식의 테마 코드를 입력해 주세요." mutePeriod: "뮤트할 기간" indefinitely: "무기한" @@ -880,7 +881,8 @@ check: "체크" driveCapOverrideLabel: "이 유저의 드라이브 용량을 변경" driveCapOverrideCaption: "0 이하를 지정하면 해제됩니다." requireAdminForView: "열람하려면 관리자 계정으로 로그인해야 합니다." -isSystemAccount: "시스템에 의해 자동으로 생성되어 관리되는 계정입니다." +isSystemAccount: "시스템에 의해 자동으로 생성되어 관리되는 계정입니다. 이 계정에 대해 모더레이션, 수정, 삭제 등을 수행하면 서버가 + 오작동할 수 있으므로 조작하지 마십시오." typeToConfirm: "계속하시려면 {x} 을 입력하세요" deleteAccount: "계정 삭제" document: "문서" @@ -906,7 +908,7 @@ cannotUploadBecauseNoFreeSpace: "드라이브 용량이 부족하여 업로드 beta: "베타" enableAutoSensitive: "자동 NSFW 탐지" enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, - 인스턴스 정책에 따라 자동으로 설정될 수 있습니다." + 서버 정책에 따라 자동으로 설정될 수 있습니다." activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. 해제할 경우 이메일 형식에 대해서만 검사합니다." navbar: "네비게이션 바" @@ -949,8 +951,8 @@ _ad: reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기" _forgotPassword: enterEmail: "여기에 계정에 등록한 메일 주소를 입력해 주세요. 입력한 메일 주소로 비밀번호 재설정 링크를 발송합니다." - ifNoEmail: "메일 주소를 등록하지 않은 경우, 관리자에 문의해 주십시오." - contactAdmin: "이 인스턴스에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오." + ifNoEmail: "메일 주소를 등록하지 않은 경우, 서버 관리자에게 문의해 주십시오." + contactAdmin: "이 서버에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오." _gallery: my: "내 갤러리" liked: "좋아요 한 갤러리" @@ -1034,7 +1036,7 @@ _mfm: inlineMath: "수식(인라인)" inlineMathDescription: "수식(KaTeX)를 인라인으로 보이게 합니다." blockMath: "수식(블록)" - blockMathDescription: "여러 줄의 수식(KaTeX)를 블록으로 보이게 합니다." + blockMathDescription: "수식(KaTeX)을 블록으로 보이게 합니다." quote: "인용" quoteDescription: "내용을 인용문으로 표시합니다." emoji: "커스텀 이모지" @@ -1111,7 +1113,7 @@ _channel: owned: "관리중" following: "팔로잉" usersCount: "{n}명 참여 중" - notesCount: "{n}노트" + notesCount: "{n} 게시물" nameAndDescription: 이름과 설명 nameOnly: 이름만 _menuDisplay: @@ -1123,16 +1125,17 @@ _wordMute: muteWords: "뮤트할 단어" muteWordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다。" muteWordsDescription2: "정규 표현식을 사용하려면 키워드를 빗금표(/)로 감싸 주세요." - softDescription: "지정한 조건의 노트를 타임라인에서 숨깁니다." - hardDescription: "지정한 조건의 노트를 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 노트는 조건을 변경해도 표시되지 않습니다." + softDescription: "지정한 조건의 게시물을 타임라인에서 숨깁니다." + hardDescription: "지정한 조건의 게시물을 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 게시물은 조건을 변경해도 표시되지 + 않습니다." soft: "보통" hard: "보다 높은 수준" - mutedNotes: "뮤트된 노트" + mutedNotes: "뮤트된 게시물" _instanceMute: - instanceMuteDescription: "뮤트한 인스턴스에서 오는 답글을 포함한 모든 노트와 Renote를 뮤트합니다." + instanceMuteDescription: "뮤트한 서버에서 오는 답글을 포함한 모든 게시물과 부스트를 뮤트합니다." instanceMuteDescription2: "한 줄에 하나씩 입력해 주세요" - title: "지정한 인스턴스의 노트를 숨깁니다." - heading: "뮤트할 인스턴스" + title: "지정한 서버의 노트를 숨깁니다." + heading: "뮤트할 서버" _theme: explore: "테마 찾아보기" install: "테마 설치" @@ -1181,7 +1184,7 @@ _theme: hashtag: "해시태그" mention: "멘션" mentionMe: "나에게 보낸 멘션" - renote: "Renote" + renote: "부스트" modalBg: "모달 배경" divider: "구분선" scrollbarHandle: "스크롤바 핸들" @@ -1208,8 +1211,8 @@ _theme: accentLighten: "강조 색상 (밝음)" fgHighlighted: "강조된 텍스트" _sfx: - note: "새 노트" - noteMy: "내 노트" + note: "새 게시물" + noteMy: "나의 게시" notification: "알림" chat: "대화" chatBg: "대화 (백그라운드)" @@ -1271,7 +1274,7 @@ _permissions: "write:messaging": "대화를 시작하거나 메시지를 보냅니다" "read:mutes": "뮤트 여부를 확인합니다" "write:mutes": "뮤트를 하거나 해제합니다" - "write:notes": "노트를 작성하거나 삭제합니다" + "write:notes": "게시물을 작성하거나 삭제합니다" "read:notifications": "알림을 확인합니다" "write:notifications": "알림을 모두 읽음 처리합니다" "read:reactions": "리액션을 확인합니다" @@ -1299,11 +1302,11 @@ _auth: allPermissions: 모든 접근 권한 copyAsk: '아래 인증 코드를 어플리케이션에 붙여넣으십시오:' _antennaSources: - all: "모든 노트" - homeTimeline: "팔로우중인 유저의 노트" - users: "지정한 한 명 혹은 여러 명의 유저의 노트" - userList: "지정한 리스트에 속한 유저의 노트" - userGroup: "지정한 그룹에 속한 유저의 노트" + all: "모든 게시물" + homeTimeline: "팔로우 중인 유저의 게시물" + users: "지정한 한 명 혹은 여러 명의 유저의 게시물" + userList: "지정한 리스트에 속한 유저의 게시물" + userGroup: "지정한 그룹에 속한 유저의 게시물" instances: 지정한 서버의 모든 유저의 게시물 _weekday: sunday: "일요일" @@ -1373,17 +1376,17 @@ _poll: _visibility: public: "공개" publicDescription: "모든 유저에게 공개" - home: "홈" + home: "미등재" homeDescription: "홈 타임라인에만 공개" followers: "팔로워" - followersDescription: "팔로워에게만 공개" + followersDescription: "팔로워 및 멘션한 유저에게만 공개" specified: "다이렉트" specifiedDescription: "지정한 유저에게만 공개" localOnly: "로컬에만" localOnlyDescription: "리모트 유저에게 보이지 않기" _postForm: - replyPlaceholder: "이 노트에 답글..." - quotePlaceholder: "이 노트를 인용..." + replyPlaceholder: "이 글에 답글..." + quotePlaceholder: "이 글을 인용..." channelPlaceholder: "채널에 게시하기..." _placeholders: a: "지금 무엇을 하고 있나요?" @@ -1407,7 +1410,7 @@ _profile: changeBanner: "배너 이미지 변경" locationDescription: 영문 도시명을 입력하면, 현재 시간대의 시각이 유저 페이지에 표시됩니다. _exportOrImport: - allNotes: "모든 노트" + allNotes: "모든 게시물" followingList: "팔로잉" muteList: "뮤트" blockingList: "차단" @@ -1420,10 +1423,10 @@ _charts: usersIncDec: "유저 수 증감" usersTotal: "유저 수 합계" activeUsers: "활성 유저 수" - notesIncDec: "노트 수 증감" - localNotesIncDec: "로컬 노트 수 증감" - remoteNotesIncDec: "리모트 노트 수 증감" - notesTotal: "노트 수 합계" + notesIncDec: "게시물 수 증감" + localNotesIncDec: "로컬 게시물 수 증감" + remoteNotesIncDec: "리모트 게시물 수 증감" + notesTotal: "게시물 수 합계" filesIncDec: "파일 수 증감" filesTotal: "파일 수 합계" storageUsageIncDec: "스토리지 사용량 증감" @@ -1432,8 +1435,8 @@ _instanceCharts: requests: "요청" users: "유저 수 증감" usersTotal: "누적 유저 수" - notes: "노트 수 증감" - notesTotal: "누적 노트 수" + notes: "게시물 수 증감" + notesTotal: "누적 게시물 수" ff: "팔로잉/팔로워 증감" ffTotal: "누적 팔로잉/팔로워 수" cacheSize: "캐시 용량 증감" @@ -1520,10 +1523,10 @@ _pages: id: "캔버스 ID" width: "폭" height: "높이" - note: "노트필기" + note: "게시물 삽입" _note: - id: "노트 ID" - idDescription: "노트 URL을 붙여넣어 설정할 수도 있습니다." + id: "게시물 ID" + idDescription: "게시물 URL을 붙여넣어 설정할 수도 있습니다." detailed: "세부 정보 보기" switch: "스위치" _switch: @@ -1744,7 +1747,7 @@ _notification: youGotMention: "{name}님이 멘션함" youGotReply: "{name}님이 답글함" youGotQuote: "{name}님이 인용함" - youRenoted: "{name}님이 Renote" + youRenoted: "{name}님이 Boost" youGotPoll: "{name}님이 투표함" youGotMessagingMessageFromUser: "{name} 님이 보낸 채팅이 있어요" youGotMessagingMessageFromGroup: "{name}에서 보낸 채팅이 있어요" @@ -1759,7 +1762,7 @@ _notification: follow: "팔로잉" mention: "멘션" reply: "답글" - renote: "Renote" + renote: "부스트" quote: "인용" reaction: "리액션" pollVote: "투표 참여" @@ -1771,10 +1774,10 @@ _notification: _actions: followBack: "팔로우" reply: "답글" - renote: "Renote" - reacted: 의 리액션 - renoted: 이 부스트 - voted: 이 투표함 + renote: "부스트" + reacted: 님의 리액션 + renoted: 님이 부스트 + voted: 님이 투표함 _deck: alwaysShowMainColumn: "메인 칼럼 항상 표시" columnAlign: "칼럼 정렬" @@ -1786,9 +1789,9 @@ _deck: swapDown: "아래로 이동" stackLeft: "왼쪽에 쌓기" popRight: "오른쪽으로 빼기" - profile: "프로파일" - newProfile: "새 프로파일" - deleteProfile: "프로파일 삭제" + profile: "작업 공간" + newProfile: "새 작업 공간" + deleteProfile: "작업 공간 삭제" introduction: "칼럼을 조합해서 나만의 인터페이스를 구성해 보아요!" introduction2: "나중에라도 화면 우측의 + 버튼을 눌러 새 칼럼을 추가할 수 있습니다." widgetsIntroduction: "칼럼 메뉴의 \"위젯 편집\"에서 위젯을 추가해 주세요" @@ -1856,7 +1859,7 @@ customKaTeXMacroDescription: 'KaTeX 매크로를 지정하여 수식을 더욱 reactionPickerSkinTone: 선호하는 이모지 피부 톤 selectInstance: 서버 선택 showAds: 광고 보이기 -searchPlaceholder: Firefish를 검색 +searchPlaceholder: Firefish에서 검색 addInstance: 서버 추가 listsDesc: 리스트를 사용하여 특정 유저로 이루어진 타임라인을 구성할 수 있습니다. 리스트는 '타임라인' 페이지에서 접근할 수 있습니다. enableEmojiReactions: 이모지 리액션을 활성화 @@ -1869,7 +1872,7 @@ expandOnNoteClickDesc: 비활성화한 경우에도 우클릭 메뉴 또는 타 customMOTDDescription: 유저가 페이지를 로딩/새로고침할 때 마다 무작위로 표시할 메시지를 한 줄에 하나씩 입력합니다. moveFrom: 다른 계정에서 이 계정으로 이사하기 moveAccount: 이사하기! -enterSendsMessage: 메시지에서 Return 키를 눌러 전송합니다. (기본값은 Ctrl + Return) +enterSendsMessage: 메시지에서 Return 키를 눌러 전송 (기본값 Ctrl + Return) verifiedLink: 인증된 링크 alt: 설명 statusbar: 스테이터스 바 From d5bc0ab39cb9c2ffea7cf865fe1c755920c65c05 Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Fri, 21 Jul 2023 17:31:19 +0900 Subject: [PATCH 030/239] Add feeds translations for ja_JP --- locales/ja-JP.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 46a486d916..3333d1a6d4 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1959,3 +1959,8 @@ donationLink: 寄付ページへのリンク removeMember: メンバーを削除 removeQuote: 引用を削除 removeRecipient: 宛先を削除 +_feeds: + copyFeed: "フィードのURLをコピー" + rss: "RSS" + atom: "Atom" + jsonFeed: "JSONフィード" From 40350c5eab86a58c36c64203b17180ef76aed497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Fri, 21 Jul 2023 17:06:24 +0300 Subject: [PATCH 031/239] Better animations on opening images in Photoswipe --- packages/client/src/components/MkImgWithBlurhash.vue | 6 ++++-- packages/client/src/components/MkMedia.vue | 5 ++++- packages/client/src/components/MkMediaList.vue | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/MkImgWithBlurhash.vue b/packages/client/src/components/MkImgWithBlurhash.vue index 5a0cefec2c..178d95f04d 100644 --- a/packages/client/src/components/MkImgWithBlurhash.vue +++ b/packages/client/src/components/MkImgWithBlurhash.vue @@ -68,14 +68,16 @@ onMounted(() => { canvas, img { display: block; - width: 100%; - height: 100%; + max-width: 100%; + max-height: 100%; } canvas { position: absolute; inset: 0; object-fit: cover; + width: 100%; + height: 100%; } img { diff --git a/packages/client/src/components/MkMedia.vue b/packages/client/src/components/MkMedia.vue index 5e7ccff7db..4e1acbd9fc 100644 --- a/packages/client/src/components/MkMedia.vue +++ b/packages/client/src/components/MkMedia.vue @@ -202,7 +202,7 @@ watch( } > a { - display: block; + display: flex; cursor: zoom-in; overflow: hidden; width: 100%; @@ -211,6 +211,9 @@ watch( background-size: contain; background-repeat: no-repeat; box-sizing: border-box; + justify-content: center; + align-items: center; + &:focus-visible { border: 2px solid var(--accent); } diff --git a/packages/client/src/components/MkMediaList.vue b/packages/client/src/components/MkMediaList.vue index 93aad7b783..5e5ed233ba 100644 --- a/packages/client/src/components/MkMediaList.vue +++ b/packages/client/src/components/MkMediaList.vue @@ -75,7 +75,7 @@ onMounted(() => { }), gallery: gallery.value, children: ".image", - thumbSelector: ".image", + thumbSelector: ".image img", loop: false, padding: window.innerWidth > 500 From 3d0a56e4c60bb1e3b74a9733ad9f427faabce5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Fri, 21 Jul 2023 17:50:09 +0300 Subject: [PATCH 032/239] Re-centering images after changing image component Also fixing scaling issues in pages when image is thinner than page width. --- packages/client/src/components/MkDriveFileThumbnail.vue | 2 ++ packages/client/src/components/MkGalleryPostPreview.vue | 3 +++ packages/client/src/components/page/page.image.vue | 5 ++--- packages/client/src/pages/gallery/post.vue | 1 - packages/client/src/pages/user/index.photos.vue | 3 +++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/MkDriveFileThumbnail.vue b/packages/client/src/components/MkDriveFileThumbnail.vue index 4022ad3145..c5af469e91 100644 --- a/packages/client/src/components/MkDriveFileThumbnail.vue +++ b/packages/client/src/components/MkDriveFileThumbnail.vue @@ -91,6 +91,8 @@ const isThumbnailAvailable = computed(() => { border: 0; padding: 0; cursor: pointer; + align-items: center; + justify-content: center; > .icon-sub { position: absolute; diff --git a/packages/client/src/components/MkGalleryPostPreview.vue b/packages/client/src/components/MkGalleryPostPreview.vue index 2ef339a8fe..2d6e00464a 100644 --- a/packages/client/src/components/MkGalleryPostPreview.vue +++ b/packages/client/src/components/MkGalleryPostPreview.vue @@ -53,8 +53,11 @@ const props = defineProps<{ } > .thumbnail { + display: flex; width: 100%; height: 100%; + justify-content: center; + align-items: center; position: absolute; transition: all 0.5s ease; diff --git a/packages/client/src/components/page/page.image.vue b/packages/client/src/components/page/page.image.vue index 726446030f..1dd0ec73e8 100644 --- a/packages/client/src/components/page/page.image.vue +++ b/packages/client/src/components/page/page.image.vue @@ -30,8 +30,7 @@ const image = props.hpml.page.attachedFiles.find( diff --git a/packages/client/src/pages/gallery/post.vue b/packages/client/src/pages/gallery/post.vue index 398adb1bcd..aa55cc15bf 100644 --- a/packages/client/src/pages/gallery/post.vue +++ b/packages/client/src/pages/gallery/post.vue @@ -149,7 +149,6 @@ import { computed, defineComponent, inject, watch } from "vue"; import MkButton from "@/components/MkButton.vue"; import * as os from "@/os"; import MkContainer from "@/components/MkContainer.vue"; -import ImgWithBlurhash from "@/components/MkImgWithBlurhash.vue"; import MkPagination from "@/components/MkPagination.vue"; import MkGalleryPostPreview from "@/components/MkGalleryPostPreview.vue"; import MkFollowButton from "@/components/MkFollowButton.vue"; diff --git a/packages/client/src/pages/user/index.photos.vue b/packages/client/src/pages/user/index.photos.vue index 9259364e26..256547323b 100644 --- a/packages/client/src/pages/user/index.photos.vue +++ b/packages/client/src/pages/user/index.photos.vue @@ -98,6 +98,9 @@ onMounted(() => { grid-gap: 6px; > .img { + display: flex; + justify-content: center; + align-items: center; position: relative; height: 128px; border-radius: 6px; From 8550a8fe2c6afc0ffae1d5b8c2aa473300bd12bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BC=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Fri, 21 Jul 2023 19:05:45 +0300 Subject: [PATCH 033/239] Add largest dimension property to enhance image display --- .../client/src/components/MkImgWithBlurhash.vue | 15 ++++++++++++++- packages/client/src/components/MkMedia.vue | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/client/src/components/MkImgWithBlurhash.vue b/packages/client/src/components/MkImgWithBlurhash.vue index 178d95f04d..75a8cd71fb 100644 --- a/packages/client/src/components/MkImgWithBlurhash.vue +++ b/packages/client/src/components/MkImgWithBlurhash.vue @@ -12,7 +12,11 @@ :title="title" :type="type" :alt="alt" - :class="{ cover }" + :class="{ + cover, + wide: largestDimension === 'width', + tall: largestDimension === 'height' + }" :style="{ 'object-fit': cover ? 'cover' : null }" loading="lazy" @load="onLoad" @@ -32,6 +36,7 @@ const props = withDefaults( title?: string | null; size?: number; cover?: boolean; + largestDimension?: 'width'|'height' }>(), { src: null, @@ -82,5 +87,13 @@ canvas { img { object-fit: contain; + + &.wide { + width: 100%; + } + + &.tall { + height: 100%; + } } diff --git a/packages/client/src/components/MkMedia.vue b/packages/client/src/components/MkMedia.vue index 4e1acbd9fc..96b38e4fd7 100644 --- a/packages/client/src/components/MkMedia.vue +++ b/packages/client/src/components/MkMedia.vue @@ -26,6 +26,7 @@ :alt="media.comment" :type="media.type" :cover="false" + :largest-dimension="largestDimension" />
GIF
@@ -120,6 +121,11 @@ const mediaType = computed(() => { : props.media.type; }); +let largestDimension: 'width'|'height'; + +if (props.media.type.startsWith('image') && props.media.properties?.width && props.media.properties?.height) { + largestDimension = props.media.properties.width > props.media.properties.height ? 'width' : 'height' +} function captionPopup() { os.alert({ type: "info", From 346658f27ffd164ab071d1667f4b353be39af4c1 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Fri, 21 Jul 2023 10:12:14 -0700 Subject: [PATCH 034/239] docs: :memo: repo move --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 99369ad801..61792df1d5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# ️:warning: Repo has moved! + +https://git.joinfirefish.org/firefish/firefish/ +
Firefish logo From 72b11f2c7d78a5d35f74f9db0dd2d884bb82598a Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 21 Jul 2023 17:15:27 +0000 Subject: [PATCH 035/239] Revert "docs: :memo: repo move" This reverts commit 346658f27ffd164ab071d1667f4b353be39af4c1 --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 61792df1d5..99369ad801 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -# ️:warning: Repo has moved! - -https://git.joinfirefish.org/firefish/firefish/ -
Firefish logo From 2dcb21349f187d74cd12e544bce69fe62aa3f102 Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 21 Jul 2023 14:30:36 -0400 Subject: [PATCH 036/239] chore: change image url --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 720cb63271..c8674548ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: web: - image: docker.io/thatonecalculator/firefish + image: registry.joinfirefish.org/firefish/firefish container_name: firefish_web restart: unless-stopped depends_on: From 740ebcf5ccaa4bef3128dc6903fe04b4a7944b6b Mon Sep 17 00:00:00 2001 From: Namekuji Date: Fri, 21 Jul 2023 14:33:03 -0400 Subject: [PATCH 037/239] chore: fix repository url --- chart/README.md | 2 +- chart/values.yaml | 2 +- dev/docker-compose.yml.example | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/README.md b/chart/README.md index 0833eb9a83..25c24ec674 100644 --- a/chart/README.md +++ b/chart/README.md @@ -53,7 +53,7 @@ A fun, new, open way to experience social media https://joinfirefish.org | elasticsearch | object | `{"auth":{},"enabled":false,"hostname":"","port":9200,"ssl":false}` | https://github.com/bitnami/charts/tree/master/bitnami/elasticsearch#parameters | | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"docker.io/thatonecalculator/firefish"` | | +| image.repository | string | `"registry.joinfirefish.org/firefish/firefish"` | | | image.tag | string | `""` | | | imagePullSecrets | list | `[]` | | | ingress.annotations | object | `{}` | | diff --git a/chart/values.yaml b/chart/values.yaml index 3bb050441a..98306efc4c 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -5,7 +5,7 @@ replicaCount: 1 image: - repository: docker.io/thatonecalculator/firefish + repository: registry.joinfirefish.org/firefish/firefish pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "" diff --git a/dev/docker-compose.yml.example b/dev/docker-compose.yml.example index 21779a57bf..872bb399ec 100644 --- a/dev/docker-compose.yml.example +++ b/dev/docker-compose.yml.example @@ -2,7 +2,7 @@ version: "3" services: web: - image: docker.io/thatonecalculator/firefish + image: registry.joinfirefish.org/firefish/firefish build: .. container_name: firefish_web restart: always From 47f5cb2e76752d64ac9324589791bb4c41b560ba Mon Sep 17 00:00:00 2001 From: yumeko Date: Fri, 21 Jul 2023 22:32:39 +0300 Subject: [PATCH 038/239] Don't leak error details (including the stack trace) upon API call failure to client in production --- packages/backend/src/server/api/api-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/server/api/api-handler.ts b/packages/backend/src/server/api/api-handler.ts index 99a12fd110..770d5ac6f6 100644 --- a/packages/backend/src/server/api/api-handler.ts +++ b/packages/backend/src/server/api/api-handler.ts @@ -33,7 +33,7 @@ export default (endpoint: IEndpoint, ctx: Koa.Context) => code: y!.code, id: y!.id, kind: y!.kind, - ...(y!.info ? { info: y!.info } : {}), + ...((y!.info && process.env.NODE_ENV !== "production") ? { info: y!.info } : {}), }, }; } else { From c9526b9a31436e8b923844128d776469a9e74b28 Mon Sep 17 00:00:00 2001 From: yumeko Date: Fri, 21 Jul 2023 23:15:53 +0300 Subject: [PATCH 039/239] Throw a proper ApiError with statusCode 404 when GETting a non-existing emoji. Closes #10332 --- .../backend/src/server/api/endpoints/emoji.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/server/api/endpoints/emoji.ts b/packages/backend/src/server/api/endpoints/emoji.ts index ddfad77374..f5a5be4ec5 100644 --- a/packages/backend/src/server/api/endpoints/emoji.ts +++ b/packages/backend/src/server/api/endpoints/emoji.ts @@ -1,6 +1,7 @@ import { IsNull } from "typeorm"; import { Emojis } from "@/models/index.js"; import define from "../define.js"; +import { ApiError } from "../error.js"; export const meta = { tags: ["meta"], @@ -9,6 +10,15 @@ export const meta = { allowGet: true, cacheSec: 3600, + errors: { + noSuchEmoji: { + message: "No such emoji.", + code: "NO_SUCH_EMOJI", + id: "6a5e3be7-5ac3-44a6-a425-9937cd66f8e1", + httpStatusCode: 404, + }, + }, + res: { type: "object", optional: false, @@ -28,12 +38,16 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, me) => { - const emoji = await Emojis.findOneOrFail({ + const emoji = await Emojis.findOne({ where: { name: ps.name, host: IsNull(), }, }); + if (!emoji) { + throw new ApiError(meta.errors.noSuchEmoji); + } + return Emojis.pack(emoji); }); From 7569081040dd81ae6c81b2ab710c88b9e0660417 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 21 Jul 2023 23:16:54 +0000 Subject: [PATCH 040/239] Update MkImgWithBlurhash.vue --- packages/client/src/components/MkImgWithBlurhash.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/client/src/components/MkImgWithBlurhash.vue b/packages/client/src/components/MkImgWithBlurhash.vue index 75a8cd71fb..d07542e437 100644 --- a/packages/client/src/components/MkImgWithBlurhash.vue +++ b/packages/client/src/components/MkImgWithBlurhash.vue @@ -13,10 +13,10 @@ :type="type" :alt="alt" :class="{ - cover, - wide: largestDimension === 'width', - tall: largestDimension === 'height' - }" + cover, + wide: largestDimension === 'width', + tall: largestDimension === 'height' + }" :style="{ 'object-fit': cover ? 'cover' : null }" loading="lazy" @load="onLoad" @@ -36,7 +36,7 @@ const props = withDefaults( title?: string | null; size?: number; cover?: boolean; - largestDimension?: 'width'|'height' + largestDimension?: "width" | "height"; }>(), { src: null, From 0394f22c4ff204d0a56a5dbf44b7607fb0285ca4 Mon Sep 17 00:00:00 2001 From: Vyr Cossont Date: Fri, 21 Jul 2023 16:23:15 -0700 Subject: [PATCH 041/239] fix: convert quoted status and reaction accounts in Mastodon API layer --- packages/backend/src/server/api/mastodon/converters.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/backend/src/server/api/mastodon/converters.ts b/packages/backend/src/server/api/mastodon/converters.ts index cbaf5287f6..3ee9813ae4 100644 --- a/packages/backend/src/server/api/mastodon/converters.ts +++ b/packages/backend/src/server/api/mastodon/converters.ts @@ -38,6 +38,12 @@ export function convertNotification(notification: Entity.Notification) { export function convertPoll(poll: Entity.Poll) { return simpleConvert(poll); } +export function convertReaction(reaction: Entity.Reaction) { + if (reaction.accounts) { + reaction.accounts = reaction.accounts.map(convertAccount); + } + return reaction; +} export function convertRelationship(relationship: Entity.Relationship) { return simpleConvert(relationship); } @@ -61,6 +67,8 @@ export function convertStatus(status: Entity.Status) { })); if (status.poll) status.poll = convertPoll(status.poll); if (status.reblog) status.reblog = convertStatus(status.reblog); + if (status.quote) status.quote = convertStatus(status.quote); + status.emoji_reactions = status.mentions.map(convertReaction); return status; } From 07d7e5c157c0bbf51f71fb494f72e4292352fa5f Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Fri, 21 Jul 2023 18:31:31 -0700 Subject: [PATCH 042/239] docs: :memo: fix link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99369ad801..3eb2b24079 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ If you have access to a server that supports one of the sources below, I recomme -[![Install on Ubuntu](https://pool.jortage.com/voringme/misskey/3b62a443-1b44-45cf-8f9e-f1c588f803ed.png)](https://gitlab.prometheus.systems/firefish/ubuntu-bash-install)  [![Install Firefish with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=firefish) +[![Install on Ubuntu](https://pool.jortage.com/voringme/misskey/3b62a443-1b44-45cf-8f9e-f1c588f803ed.png)](https://git.joinfirefish.org/firefish/ubuntu-bash-install)  [![Install Firefish with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=firefish) ## 🛳️ Containerization From 2f49c8734d40ed2435ffe71e11ecce10b169c515 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Sat, 22 Jul 2023 03:14:10 +0000 Subject: [PATCH 043/239] =?UTF-8?q?build:=20=F0=9F=91=B7=20add=20CI=20conf?= =?UTF-8?q?ig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..8b5236eb55 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,52 @@ +# This file is a template, and might need editing before it works on your project. +# You can copy and paste this template into a new `.gitlab-ci.yml` file. +# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. +# +# To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml + +# Official framework image. Look for the different tagged releases at: +# https://hub.docker.com/r/library/node/tags/ +image: node:alpine + + +stages: + - build + +# Pick zero or more services to be used on all builds. +# Only needed when using a docker container to run your tests in. +# Check out: https://docs.gitlab.com/ee/ci/services/index.html +variables: + POSTGRES_PASSWORD: test + +services: + - postgres:15 + - redis + +before_script: + - apk add --no-cache cargo python3 make g++ + - cp .config/ci.yml .config/default.yml + - corepack enable + - corepack prepare pnpm@latest --activate + +testCommit: + stage: build + script: + - pnpm i --frozen-lockfile + - pnpm run build + - pnpm run migrate + only: + - main + - beta + - develop + - /^feature\/.*$/ + +# This folder is cached between builds +# https://docs.gitlab.com/ee/ci/yaml/index.html#cache +cache: + paths: + - node_modules/ + + From 2137c5754106bb2905eda0907a2bce3bea91d05a Mon Sep 17 00:00:00 2001 From: yumeko Date: Sat, 22 Jul 2023 11:31:01 +0300 Subject: [PATCH 044/239] Add a basic title and description for the objectStorageS3ForcePathStyle storage configuration option. --- locales/en-US.yml | 3 +++ locales/ja-JP.yml | 2 ++ packages/client/src/pages/admin/object-storage.vue | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index af85419471..8f06d7120c 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -566,6 +566,9 @@ objectStorageUseProxy: "Connect over Proxy" objectStorageUseProxyDesc: "Turn this off if you are not going to use a Proxy for API connections" objectStorageSetPublicRead: "Set \"public-read\" on upload" +objectStorageS3ForcePathStyle: "Use path-based endpoint URLs" +objectStorageS3ForcePathStyleDesc: "Turn this on to construct endpoint URLs in the + format of 's3.amazonaws.com//' over '.s3.amazonaws.com'." serverLogs: "Server logs" deleteAll: "Delete all" showFixedPostForm: "Display the posting form at the top of the timeline" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 46a486d916..c7b80e2265 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -517,6 +517,8 @@ objectStorageUseSSLDesc: "API接続にhttpsを使用しない場合はオフに objectStorageUseProxy: "Proxyを利用する" objectStorageUseProxyDesc: "API接続にproxyを利用しない場合はオフにしてください" objectStorageSetPublicRead: "アップロード時に'public-read'を設定する" +objectStorageS3ForcePathStyle: "DNS名ではなくてパスを使用する" +objectStorageS3ForcePathStyleDesc: "EndpointのURLを作る際には、'.s3.amazonaws.com'の代わりに's3.amazonaws.com//'のようなスタイルを使用します。" serverLogs: "サーバーログ" deleteAll: "全て削除" showFixedPostForm: "タイムライン上部に投稿フォームを表示する" diff --git a/packages/client/src/pages/admin/object-storage.vue b/packages/client/src/pages/admin/object-storage.vue index a438c69447..c90a970c79 100644 --- a/packages/client/src/pages/admin/object-storage.vue +++ b/packages/client/src/pages/admin/object-storage.vue @@ -134,7 +134,12 @@ v-model="objectStorageS3ForcePathStyle" class="_formBlock" > - + +
@@ -149,7 +154,6 @@ import FormSwitch from "@/components/form/switch.vue"; import FormInput from "@/components/form/input.vue"; import FormSuspense from "@/components/form/suspense.vue"; import FormSplit from "@/components/form/split.vue"; -import FormSection from "@/components/form/section.vue"; import * as os from "@/os"; import { fetchInstance } from "@/instance"; import { i18n } from "@/i18n"; From 4e23b77aff4406ae3c6da7943a3275e834a93c72 Mon Sep 17 00:00:00 2001 From: yumeko Date: Sat, 22 Jul 2023 13:57:44 +0300 Subject: [PATCH 045/239] Replace URL generation code in the drive file uploader with something more robust. Closes #10404, hopefully. --- .../backend/src/services/drive/add-file.ts | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/packages/backend/src/services/drive/add-file.ts b/packages/backend/src/services/drive/add-file.ts index b9991f4949..630711cef3 100644 --- a/packages/backend/src/services/drive/add-file.ts +++ b/packages/backend/src/services/drive/add-file.ts @@ -37,6 +37,32 @@ import { deleteFile } from "./delete-file.js"; const logger = driveLogger.createSubLogger("register", "yellow"); +type PathPartLike = string | null + +// Joins an array of elements into a URL pathname, possibly with a base URL object to append to. +// Null or 0-length parts will be left out. +function urlPathJoin( + baseOrParts: URL | PathPartLike[], + pathParts?: PathPartLike[], +): string { + if (baseOrParts instanceof URL) { + const url = new URL(baseOrParts as URL); + if (pathParts) { + pathParts.unshift( + url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname, + ); + url.pathname = pathParts + .filter((x) => x !== null && x.toString().length > 0) + .join("/"); + } + return url.toString(); + } + const baseParts = baseOrParts.concat(pathParts ?? []); + return baseParts + .filter((x) => x !== null && x.toString().length > 0) + .join("/"); +} + /*** * Save file * @param path Path for original @@ -77,17 +103,16 @@ async function save( ext = ""; } - const baseUrl = - meta.objectStorageBaseUrl || + const baseUrl = new URL( + meta.objectStorageBaseUrl ?? `/${meta.objectStorageBucket}`, `${meta.objectStorageUseSSL ? "https" : "http"}://${ - meta.objectStorageEndpoint - }${meta.objectStoragePort ? `:${meta.objectStoragePort}` : ""}/${ - meta.objectStorageBucket - }`; + meta.objectStorageEndpoint + }${meta.objectStoragePort ? `:${meta.objectStoragePort}` : ""}`, + ); // for original - const key = `${meta.objectStoragePrefix}/${uuid()}${ext}`; - const url = `${baseUrl}/${key}`; + const key = urlPathJoin([meta.objectStoragePrefix, `${uuid()}${ext}`]); + const url = urlPathJoin(baseUrl, [key]); // for alts let webpublicKey: string | null = null; @@ -101,10 +126,8 @@ async function save( const uploads = [upload(key, fs.createReadStream(path), type, name)]; if (alts.webpublic) { - webpublicKey = `${meta.objectStoragePrefix}/webpublic-${uuid()}.${ - alts.webpublic.ext - }`; - webpublicUrl = `${baseUrl}/${webpublicKey}`; + webpublicKey = urlPathJoin([meta.objectStoragePrefix, `webpublic-${uuid()}.${alts.webpublic.ext}`]); + webpublicUrl = urlPathJoin(baseUrl, [webpublicKey]); logger.info(`uploading webpublic: ${webpublicKey}`); uploads.push( @@ -113,10 +136,8 @@ async function save( } if (alts.thumbnail) { - thumbnailKey = `${meta.objectStoragePrefix}/thumbnail-${uuid()}.${ - alts.thumbnail.ext - }`; - thumbnailUrl = `${baseUrl}/${thumbnailKey}`; + thumbnailKey = urlPathJoin([meta.objectStoragePrefix, `thumbnail-${uuid()}.${alts.thumbnail.ext}`]); + thumbnailUrl = urlPathJoin(baseUrl, [thumbnailKey]); logger.info(`uploading thumbnail: ${thumbnailKey}`); uploads.push( From 9854b313fdbd7fde78972b39eeb6fd163ad1d1db Mon Sep 17 00:00:00 2001 From: Mizunashi Mana Date: Sun, 23 Jul 2023 00:41:55 +0900 Subject: [PATCH 046/239] Add lang translation for bul_BG --- locales/bul_BG.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/bul_BG.yml b/locales/bul_BG.yml index 0967ef424b..ea453824bc 100644 --- a/locales/bul_BG.yml +++ b/locales/bul_BG.yml @@ -1 +1 @@ -{} +_lang_: Български From 6caaa1f7adc819f35304cd7108a7ce954ba33350 Mon Sep 17 00:00:00 2001 From: Ramdziana F Y Date: Fri, 21 Jul 2023 15:43:43 +0000 Subject: [PATCH 047/239] chore: Translated using Weblate (Indonesian) Currently translated at 89.1% (1636 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 717d71592e..4e00a863dd 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1905,3 +1905,78 @@ type: Tipe speed: Kecepatan slow: Pelan remoteOnly: Jarak jauh saja +moveFrom: Dari akun lama pindahkan ke akun ini +indexNotice: Sedang mengindeks. Ini memerlukan beberapa waktu, mohon jangan mulai + ulang server setidaknya satu jam. +sendPushNotificationReadMessage: Hapus pemberitahuan dorong saat pemberitahuan atau + pesan relevan sudah dibaca +moveAccountDescription: Proses ini permanen. Pastikan kamu sudah mengatur alias dari + akun ini ke akun barumu sebelum pindah. Silakan masukkan tag akun dengan format + seperti @orang@server.com +sendModMail: Kirim Pemberitahuan Moderasi +signupsDisabled: Pendaftaran ke server ini nonaktif, tapi kamu dapat selalu mendaftar + ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah + ini. +enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus +isBot: Akun ini bot +customMOTD: MOTD khusus (pesan layar percik) +recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis + baru untuk tampil di linimasa rekomendasi. +preventAiLearningDescription: Minta model bahasa AI pihak ketiga untuk tidak mempelajari + konten yang kamu unggah, seperti postingan dan gambar. +pushNotificationAlreadySubscribed: Pemberitahuan dorong sudah aktif +pushNotificationNotSupported: Peramban atau servermu tidak mendukung pemberitahuan + dorong +apps: Aplikasi +showAds: Tampilkan iklan +enterSendsMessage: Tekan Enter pada Pesan untuk mengirim pesan (matikan dengan Ctrl + + Enter) +showAdminUpdates: Indikasi versi Calckey baru tersedia (hanya admin) +indexFrom: Indeks dari Post ID berikutnya +noteId: ID Postingan +findOtherInstance: Cari server lain +caption: Keterangan Otomatis +splash: Layar Percik +migration: Migrasi +moveTo: Pindahkan akun sekarang ke akun baru +moveFromLabel: 'Akun tujuan pindah:' +moveFromDescription: Ini akan mengatur alias akun lamamu jadi kamu dapat pindah dari + akun tersebut ke akun sekarang. Lakukan ini SEBELUM memindahkan akun lama. Silakan + masukkan tag akun dengan format seperti @orang@server.com +defaultReaction: Reaksi emoji bawaan untuk postingan keluar dan masuk +indexPosts: Indeks Postingan +preventAiLearning: Cegah scraping bot AI +customKaTeXMacro: Makro KaTeX khusus +sendPushNotificationReadMessageCaption: Pemberitahuan yang berisi teks "{emptyPushNotificationMessage}" + akan ditampilkan dengan cepat. Ini mungkin meningkatkan penggunaan baterai perangkatmu, + jika berlaku. +adminCustomCssWarn: Pengaturan ini hanya dapat dipakai jika kamu tahu fungsinya. Memasukkan + nilai yang keliru akan membuat klien SIAPA PUN berhenti berfungsi secara normal. + Mohon pastikan CSS-mu bekerja secara benar dengan mengujinya lebih dahulu pada pengaturan + penggunamu. +customMOTDDescription: Pesan khusus untuk MOTD (layar percik) dipisahkan dengan baris + baru untuk ditampilkan secara acak ketika pengguna memuat/muat ulang halaman. +customSplashIcons: Ikon layar percik khusus (url) +customSplashIconsDescription: URL untuk ikon layar percik khusus dipisahkan dengan + garis baru untuk ditampilkan secara acak saat pengguna memuat/muat ulang halaman. + Harap pastikan gambar adalah URL statis, lebih utama berukuran 192x192. +showUpdates: Tampilkan sembulan saat pemutakhiran Calckey +recommendedInstances: Server yang direkomendasikan +updateAvailable: Ada pemutakhiran tersedia! +swipeOnMobile: Izinkan usap antar halaman +swipeOnDesktop: Izinkan usap ala mobile di desktop +logoImageUrl: URL gambar logo +replayTutorial: Ulangi tutorial +moveToLabel: 'Akun yang ingin kamu pindah:' +moveAccount: Pindahkan akun! +migrationConfirm: "Kamu sangat yakin ingin memindahkan akunmu ke {account}? Sekali + pindah, kamu tidak dapat membatalkannya, dan kamu tidak akan dapat menggunakan akunmu + lagi secara normal. \nDan juga, harap pastikan kamu sudah mengatur akun sekarang + sebagai akun yang dipindahkan." +license: Lisensi +indexFromDescription: Kosongkan untuk mengindeks setiap postingan +noGraze: Harap nonaktifkan ekstensi peramban "Graze for Mastodon", karena akan menganggu + Calckey. +silencedWarning: Halaman ini tampil karena pengguna ini datang dari server yang dibisukan + adminmu, jadi mereka berpotensi spam. +isLocked: Akun ini perlu persetujuan ikuti From 19311e683c949457bf8dd8d4310d39f14a40f043 Mon Sep 17 00:00:00 2001 From: yumeko Date: Sat, 22 Jul 2023 22:12:52 +0300 Subject: [PATCH 048/239] Dump to console the error data associated with logger error calls. --- packages/backend/src/services/logger.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/backend/src/services/logger.ts b/packages/backend/src/services/logger.ts index 146dae2ea8..330d275029 100644 --- a/packages/backend/src/services/logger.ts +++ b/packages/backend/src/services/logger.ts @@ -115,6 +115,10 @@ export default class Logger { console.log(important ? chalk.bold(log) : log); + if (level === "error" && data !== null) { + console.log(data); + } + if (store) { if (this.syslogClient) { const send = From 8811b472cf03e5a957e79685418096cb474ca14d Mon Sep 17 00:00:00 2001 From: Tom Funken Date: Sun, 23 Jul 2023 11:57:54 +0000 Subject: [PATCH 049/239] Fixed invalid links --- docs/docker.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index b8a243a38a..02035e045b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,7 +1,7 @@ # 🐳 Running a Firefish server with Docker ## Pre-built docker container -[thatonecalculator/firefish](https://hub.docker.com/r/thatonecalculator/firefish) +[registry.joinfirefish.org/firefish/firefish](https://git.joinfirefish.org/firefish/firefish/container_registry) ## `docker-compose` @@ -29,7 +29,7 @@ Everything else can be left as-is. ## Running docker-compose -The [prebuilt container for firefish](https://hub.docker.com/r/thatonecalculator/firefish) is fairly large, and may take a few minutes to download and extract using docker. +The [prebuilt container for firefish](https://git.joinfirefish.org/firefish/firefish/container_registry) is fairly large, and may take a few minutes to download and extract using docker. Copy `docker-compose.yml` and the `config/` to a directory, then run the **docker-compose** command: `docker-compose up -d`. From c0eac56355a0c40ac4d9c0bae82917506e011dc3 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Sun, 23 Jul 2023 14:13:46 -0700 Subject: [PATCH 050/239] fix: :bug: antenna notes pagination repeat --- .../src/server/api/endpoints/antennas/notes.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 6ca71c08e2..4d3bdfb274 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -60,13 +60,14 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchAntenna); } + const limit = ps.limit + (ps.untilId ? 1 : 0) + (ps.sinceId ? 1 : 0); // untilIdに指定したものも含まれるため+1 const noteIdsRes = await redisClient.xrevrange( `antennaTimeline:${antenna.id}`, - ps.untilDate || "+", - "-", + ps.untilDate ?? "+", + ps.sinceDate ?? "-", "COUNT", - ps.limit + 1, - ); // untilIdに指定したものも含まれるため+1 + limit, + ); if (noteIdsRes.length === 0) { return []; @@ -74,7 +75,7 @@ export default define(meta, paramDef, async (ps, user) => { const noteIds = noteIdsRes .map((x) => x[1][1]) - .filter((x) => x !== ps.untilId); + .filter((x) => x !== ps.untilId && x !== ps.sinceId); if (noteIds.length === 0) { return []; @@ -105,7 +106,8 @@ export default define(meta, paramDef, async (ps, user) => { generateMutedUserQuery(query, user); generateBlockedUserQuery(query, user); - const notes = await query.take(ps.limit).getMany(); + const notes = await query.getMany(); + notes.sort((a, b) => (a.id > b.id ? -1 : 1)); if (notes.length > 0) { readNote(user.id, notes); From f5a88e70803fd8726dd8d81292d879bf810ba7e1 Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 24 Jul 2023 00:55:26 +0000 Subject: [PATCH 051/239] Update patrons.json --- patrons.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patrons.json b/patrons.json index 6544466b9e..450b44fa99 100644 --- a/patrons.json +++ b/patrons.json @@ -16,7 +16,7 @@ "@surfbum@firefish.nz", "@topher@mastodon.online", "@hanicef@stop.voring.me", - "@nmkj@firefish.jp", + "@nmkj@calckey.jp", "@unattributed@firefish.social", "@cody@misskey.codingneko.com", "@kate@blahaj.zone", @@ -53,9 +53,9 @@ "@riversidebryan@firefish.lgbt", "@aRubes@sloth.run", "@andreasdotorg@firefish.social", - "@ozzy@firefish.online", + "@ozzy@calckey.online", "@leni@windycity.style", - "@mhzmodels@firefish.art", + "@mhzmodels@calckey.art", "@ReflexVE@firefish.social", "@mark@firefish.social", "@skyizwhite@himagine.club", @@ -96,7 +96,7 @@ "@seasicksailor@firefish.social", "@geerue@firefish.social", "@WXFanatic@m.ai6yr.org", - "@Hunkabilly@firefish.world" + "@Hunkabilly@calckey.world" ], "sponsors": [ "@atomicpoet@firefish.social", From 2e6bfa465a44c705b09b06a79bfee53364f961b1 Mon Sep 17 00:00:00 2001 From: jolupa Date: Sun, 23 Jul 2023 20:43:18 +0000 Subject: [PATCH 052/239] chore: Translated using Weblate (Catalan) Currently translated at 100.0% (1836 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ --- locales/ca-ES.yml | 85 ++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index a70cacc2f9..66d237e9b8 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -116,7 +116,7 @@ reaction: "Reaccions" reactionSetting: "Reaccions a mostrar al selector de reaccions" reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem \"+\" per afegir." -rememberNoteVisibility: "Recorda la configuració de visibilitat de les notes" +rememberNoteVisibility: "Recorda la configuració de visibilitat de les publicacions" attachCancel: "Elimina el fitxer adjunt" markAsSensitive: "Marca com a NSFW" unmarkAsSensitive: "Desmarca com a NSFW" @@ -418,7 +418,7 @@ _exportOrImport: blockingList: "Bloqueja" userLists: "Llistes" excludeMutingUsers: Exclou els usuaris silenciats - allNotes: Totes les notes + allNotes: Totes les publicacions excludeInactiveUsers: Exclou usuaris inactius _pages: script: @@ -633,7 +633,7 @@ _pages: if: Si _if: variable: Variable - post: Formulari de notes + post: Formulari de publicació _post: text: Contingut attachCanvasImage: Adjuntar imatge de llenç @@ -841,7 +841,7 @@ blockedUsers: Usuaris blocats noUsers: No hi ha cap usuari editProfile: Edita el perfil noteDeleteConfirm: Segur que vols eliminar la publicació? -pinLimitExceeded: No pots fixar més notes +pinLimitExceeded: No pots fixar més publicacions muteAndBlock: Silenciats i blocats mutedUsers: Usuaris silenciats done: Fet @@ -1044,7 +1044,7 @@ pinnedClipId: ID del clip que vols fixar hcaptcha: hCaptcha manageAntennas: Gestiona les Antenes name: Nom -notesAndReplies: Notes i respostes +notesAndReplies: Publicacions i respostes silence: Posa en silenci withFiles: Amb fitxers popularUsers: Usuaris populars @@ -1070,7 +1070,7 @@ notFoundDescription: No es pot trobar cap pàgina que correspongui a aquesta adr uploadFolder: Carpeta per defecte per pujar arxius cacheClear: Netejar la memòria cau markAsReadAllNotifications: Marca totes les notificacions com llegides -markAsReadAllUnreadNotes: Marca totes les notes com a llegides +markAsReadAllUnreadNotes: Marca totes les publicacions com a llegides markAsReadAllTalkMessages: Marca tots els missatges com llegits help: Ajuda inputMessageHere: Escriu aquí el missatge @@ -1140,7 +1140,7 @@ promote: Promoure numberOfDays: Nombre de dies objectStorageBaseUrl: Adreça URL base hideThisNote: Amaga aquesta publicació -showFeaturedNotesInTimeline: Mostra les notes destacades a les líneas de temps +showFeaturedNotesInTimeline: Mostra les publicacions destacades a les línees de temps objectStorage: Emmagatzematge d'objectes useObjectStorage: Fes servir l'emmagatzema d'objectes expandTweet: Amplia el tuit @@ -1211,7 +1211,7 @@ notificationSetting: Preferències de notificacions makeActive: Activar notificationSettingDesc: Tria el tipus de notificació que es veure. notifyAntenna: Notificar publicacions noves -withFileAntenna: Només notes amb fitxers +withFileAntenna: Només publicacions amb fitxers enableServiceworker: Activa les notificacions push per al teu navegador antennaUsersDescription: Escriu un nom d'usuari per línea antennaInstancesDescription: Escriu la adreça d'un servidor per línea @@ -1294,7 +1294,7 @@ defaultNavigationBehaviour: Navegació per defecte editTheseSettingsMayBreakAccount: Si edites aquestes configuracions pots fer mal bé el teu compte. userSilenced: Aquest usuari ha sigut silenciat. -instanceTicker: Informació de notes del servidor +instanceTicker: Informació de publicacions del servidor waitingFor: Esperant a {x} random: Aleatori system: Sistema @@ -1312,18 +1312,18 @@ no: No noCrawle: Rebutjar la indexació dels restrejadors driveUsage: Espai fet servir al Disk noCrawleDescription: No permetre que els buscadors guardin la informació de les pàgines - de perfil, notes, Pàgines, etc. + de perfil, publicacions, Pàgines, etc. alwaysMarkSensitive: Marcar per defecte com a NSFW lockedAccountInfo: Si has configurat la visibilitat del compte per "Només seguidors" - les teves notes no seren visibles per a ningú més, inclús si has d'aprovar els teus - seguidors manualment. + les teves publicacions no serien visibles per a ningú més, inclús si has d'aprovar + els teus seguidors manualment. disableShowingAnimatedImages: No reproduir les imatges animades verificationEmailSent: S'ha enviat correu electrònic de verificació. Si us plau segueix les instruccions per completar la verificació. notSet: Sense especificar emailVerified: El correu electrònic s'ha verificat loadRawImages: Carregar les imatges originals en comptes de mostrar les miniatures -noteFavoritesCount: Nombre de notes afegides a favorits +noteFavoritesCount: Nombre de publicacions afegides a favorits useSystemFont: Fes servir la font per defecte del sistema contact: Contacte clips: Retalls @@ -1331,7 +1331,7 @@ experimentalFeatures: Característiques experimentals developer: Desenvolupador makeExplorableDescription: Si desactives aquesta funció el teu compte no sortirà a la secció "Explora". -showGapBetweenNotesInTimeline: Mostra un espai entre notes a la línea de temps +showGapBetweenNotesInTimeline: Mostra un espai entre publicacions a la línea de temps makeExplorable: Fes el compte visible a "Explora" duplicate: Duplicar left: Esquerra @@ -1343,7 +1343,7 @@ needReloadToApply: Es requereix recarregar la pàgina perquè això surti efecte showTitlebar: Mostrar la barra de títol onlineUsersCount: Hi han {n} usuaris connectats nUsers: '{n} Usuaris' -nNotes: '{n} Notes' +nNotes: '{n} Publicacions' sendErrorReports: Enviar informe d'error clearCache: Netejar memòria cau switchAccount: Canvia de compte @@ -1445,7 +1445,7 @@ _ad: reduceFrequencyOfThisAd: Mostrar aquest anunci menys _gallery: my: La meva Galeria - liked: Notes que m'han agradat + liked: Publicacions que m'han agradat unlike: Elimina m'agrada like: M'agrada _forgotPassword: @@ -1617,7 +1617,7 @@ youAreRunningUpToDateClient: Estás fent servir la versió del client més nova. unlikeConfirm: Vols treure el teu m'agrada? fullView: Vista complerta desktop: Escritori -notesCount: Nombre de notes +notesCount: Nombre de publicacions confirmToUnclipAlreadyClippedNote: Aquesta publicació ja és al clip "{name}". La vols treure d'aquest clip? driveFilesCount: Nombre de fitxers al Disk @@ -1671,7 +1671,7 @@ objectStorageRegion: Regió objectStoragePrefix: Prefix objectStoragePrefixDesc: Els fitxers es guardaran dins de carpetes amb aquest prefix. objectStorageEndpoint: Extrem -newNoteRecived: Hi han notes noves +newNoteRecived: Hi han publicacions noves sounds: Sons listen: Escoltar none: Res @@ -1686,7 +1686,8 @@ objectStorageUseProxyDesc: Desactiva això si no faràs servir un servidor Proxy objectStorageSetPublicRead: Fixar com a "public-read" al pujar serverLogs: Registres del servidor deleteAll: Esborrar tot -showFixedPostForm: Mostrar el formulari de notes al principi de la línia de temps +showFixedPostForm: Mostrar el formulari de publicacions al principi de la línia de + temps unableToProcess: Aquesta operació no es pot acabar recentUsed: Fet servir fa poc install: Instal·lar @@ -1778,7 +1779,7 @@ migrationConfirm: "Esteu absolutament segur que voleu migrar el vostre compte a Un cop ho feu, no podreu revertir-ho i no podreu tornar a utilitzar el vostre compte amb normalitat.\nA més, assegureu-vos d'haver configurat aquest compte actual com el compte del qual us moveu." -defaultReaction: Reacció d'emoji predeterminada per a notes sortints i entrants +defaultReaction: Reacció d'emoji predeterminades per a publicacions sortints i entrants enableCustomKaTeXMacro: Activa les macros KaTeX personalitzades noteId: ID de la publicació _nsfw: @@ -1841,7 +1842,7 @@ pushNotificationAlreadySubscribed: Les notificacions push ja estan activades pushNotificationNotSupported: El vostre navegador o servidor no admet notificacions push license: Llicència -indexPosts: Índex de notes +indexPosts: Índex de publicacions indexFrom: Índex a partir de l'ID de Publicacions indexFromDescription: Deixeu en blanc per indexar cada publicació indexNotice: Ara indexant. Això probablement trigarà una estona, si us plau, no reinicieu @@ -1864,7 +1865,7 @@ _channel: owned: Propietari usersCount: '{n} Participants' following: Seguit per - notesCount: '{n} Notes' + notesCount: '{n} Publicacions' nameAndDescription: Nom i descripció nameOnly: Només nom _instanceMute: @@ -1912,7 +1913,7 @@ _tutorial: Calckey. Aquest sí que sí! És una mica complicat, però ho aconseguiràs en poc temps. step2_2: Proporcionar informació sobre qui sou facilitarà que altres puguin saber - si volen veure les vostres notes o seguir-vos. + si volen veure les vostres publicacions o seguir-vos. step3_1: Ara toca seguir a algunes persones! step3_2: "Les teves líneas de temps d'inici i social es basen en qui seguiu, així que proveu de seguir un parell de comptes per començar.\nFeu clic al cercle més @@ -1934,9 +1935,9 @@ _permissions: "write:notifications": Gestiona les teves notificacions "write:user-groups": Editar o suprimir grups d'usuaris "write:blocks": Editar la llista d'usuaris bloquejats - "write:notes": Redactar o suprimir notes + "write:notes": Redactar o suprimir publicacions "write:channels": Editar els teus canals - "read:gallery-likes": Consulta la llista de notes que t'agraden de la galeria + "read:gallery-likes": Consulta la llista de publicacions que t'agraden de la galeria "write:drive": Editar o suprimir fitxers i carpetes del Disc "read:favorites": Consulta la teva llista d'adreces d'interès "write:favorites": Editeu la teva llista d'adreces d'interès @@ -1950,7 +1951,7 @@ _permissions: "read:channels": Consulta els teus canals "read:gallery": Consulta la teva galeria "write:gallery": Edita la teva galeria - "write:gallery-likes": Edita la llista de notes que t'agraden de la galeria + "write:gallery-likes": Edita la llista de publicacions que t'agraden de la galeria "read:following": Consulta la informació sobre a qui segueixes "read:reactions": Consulta les teves reaccions "read:pages": Consulta la teva pàgina @@ -1994,10 +1995,10 @@ _charts: apRequest: Sol·licituds usersTotal: Nombre total d'usuaris activeUsers: Usuaris actius - notesIncDec: Diferència en el nombre de notes - localNotesIncDec: Diferència en el nombre de notes locals - remoteNotesIncDec: Diferència en el nombre de notes remotes - notesTotal: Nombre total de notes + notesIncDec: Diferència en el nombre de publicacions + localNotesIncDec: Diferència en el nombre de publicacions locals + remoteNotesIncDec: Diferència en el nombre de publicacions remotes + notesTotal: Nombre total de publicacions filesIncDec: Diferència en el nombre de fitxers filesTotal: Nombre total de fitxers storageUsageTotal: Ús total d'emmagatzematge @@ -2006,13 +2007,13 @@ _instanceCharts: requests: Sol·licituds users: Diferència en el nombre d'usuaris usersTotal: Nombre acumulat d'usuaris - notes: Diferència en el nombre de notes + notes: Diferència en el nombre de publicacions ffTotal: Nombre acumulat d'usuaris que segueixes/et segueixen cacheSize: Diferència en la mida de la memòria cau cacheSizeTotal: Mida total acumulada de la memòria cau files: Diferència en el nombre de fitxers filesTotal: Nombre acumulat de fitxers - notesTotal: Nombre acumulat de notes + notesTotal: Nombre acumulat de publicacions ff: "Diferència en el nombre d'usuaris que segueixes/que et segueixen " _timelines: home: Inici @@ -2033,12 +2034,12 @@ _wordMute: hard: Dur muteWordsDescription2: Envolta les paraules clau amb barres inclinades per utilitzar expressions regulars. - softDescription: Amaga les notes que compleixen les condicions establertes de la - línia de temps. - hardDescription: Evita que les notes que compleixin les condicions establertes s'afegeixin - a la línia de temps. A més, aquestes notes no s'afegiran a la línia de temps encara - que es modifiquin les condicions. - mutedNotes: Notes silenciades + softDescription: Amaga les publicacions que compleixen les condicions establertes + de la línia de temps. + hardDescription: Evita que les publicacions que compleixin les condicions establertes + s'afegeixin a la línia de temps. A més, aquestes publicacions no s'afegiran a + la línia de temps encara que es modifiquin les condicions. + mutedNotes: Publicacions silenciades _auth: shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al teu compte? @@ -2061,11 +2062,11 @@ _messaging: groups: Grups dms: Privat _antennaSources: - all: Totes les notes + all: Totes les publicacions homeTimeline: Publicacions dels usuaris que segueixes - users: Notes d'usuaris concrets - userGroup: Notes d'usuaris d'un grup determinat - userList: Notes d'una llista determinada d'usuaris + users: Publicacions d'usuaris concrets + userGroup: Publicacions d'usuaris d'un grup determinat + userList: Publicacions d'una llista determinada d'usuaris instances: Publicacions de tots els usuaris d'un servidor _relayStatus: requesting: Pendent From 5b1eb14803f37f60e57c1b11c697792136b5cc88 Mon Sep 17 00:00:00 2001 From: Butters Date: Mon, 24 Jul 2023 12:40:07 +0000 Subject: [PATCH 053/239] chore: Translated using Weblate (German) Currently translated at 97.6% (1793 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index c2c89f15c0..11bca2929d 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -3,7 +3,7 @@ headlineMisskey: "Eine dezentralisierte Open-Source Social Media Plattform, die immer gratis bleibt! 🚀" introMisskey: "Willkommen! Calckey ist eine dezentralisierte Open-Source Social Media Plattform, die für immer gratis bleibt!🚀" -monthAndDay: "{month}/{day}" +monthAndDay: "{day}.{month}." search: "Suchen" notifications: "Benachrichtigungen" username: "Nutzername" @@ -1482,7 +1482,7 @@ _widgets: postForm: "Beitragsfeld" slideshow: "Diashow" button: "Knopf" - onlineUsers: "Nutzer Online" + onlineUsers: "Nutzer online" jobQueue: "Job-Warteschlange" serverMetric: "Servermetriken" aiscript: "AiScript-Konsole" @@ -1551,7 +1551,8 @@ _profile: metadata: "Zusätzliche Informationen" metadataEdit: "Zusätzliche Informationen bearbeiten" metadataDescription: "Hierdurch kannst du auf deinem Profil zusätzliche Informationsblöcke - anzeigen lassen. Sie können ein {a}-Tag oder ein {l}-Tag mit {rel} hinzufügen, um den Link in Ihrem Profil zu überprüfen!" + anzeigen lassen. Sie können ein {a}-Tag oder ein {l}-Tag mit {rel} hinzufügen, + um den Link in Ihrem Profil zu überprüfen!" metadataLabel: "Beschriftung" metadataContent: "Inhalt" changeAvatar: "Profilbild ändern" @@ -2150,3 +2151,4 @@ clipsDesc: Clips sind wie teilbare, kategorisierte Lesezeichen. Du kannst Clips channelFederationWarn: Kanäle föderieren noch nicht zu anderen Servern reactionPickerSkinTone: Bevorzugte Emoji-Hautfarbe swipeOnMobile: Wischen zwischen den Seiten erlauben +enableServerMachineStats: Server-Hardware-Statistik aktivieren From aa451ab1f948abbc06e561dadfa2c17889caa165 Mon Sep 17 00:00:00 2001 From: AkDk7 Date: Mon, 24 Jul 2023 12:46:36 +0000 Subject: [PATCH 054/239] chore: Translated using Weblate (German) Currently translated at 97.6% (1793 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 11bca2929d..5e5ec0cbab 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -900,7 +900,7 @@ manageAccounts: "Nutzerkonten verwalten" makeReactionsPublic: "Reaktionsverlauf veröffentlichen" makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen einsehen können." -classic: "Mittig/zentriert" +classic: "Zentriert" muteThread: "Thread stummschalten" unmuteThread: "Threadstummschaltung aufheben" ffVisibility: "Sichtbarkeit von Gefolgten/Followern" @@ -1972,9 +1972,8 @@ enableEmojiReactions: Emoji-Reaktionen aktivieren flagSpeakAsCat: Wie eine Katze sprechen showEmojisInReactionNotifications: Emojis in Reaktionsbenachrichtigungen anzeigen userSaysSomethingReason: '{name} sagte {reason}' -hiddenTagsDescription: 'Geben sie hier die Schlagworte (ohne #hashtag) an, die vom - "Trending and Explore" ausgeschlossen werden sollen. Versteckte Schlagworte sind - immer noch über andere Wege auffindbar.' +hiddenTagsDescription: 'Liste die Hashtags (ohne #) welche du von Trending und Explore + verstecken möchtest. Versteckte Hashtags sind durch andere Wege weiterhin auffindbar.' addInstance: Server hinzufügen flagSpeakAsCatDescription: Deine Beiträge werden im Katzenmodus nyanisiert hiddenTags: Versteckte Hashtags From 7f1ac019b5fa77bc183191d240b4bc90e339efb6 Mon Sep 17 00:00:00 2001 From: Michael 465537 Date: Mon, 24 Jul 2023 12:48:59 +0000 Subject: [PATCH 055/239] chore: Translated using Weblate (German) Currently translated at 97.6% (1793 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 5e5ec0cbab..85972e2ec6 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -982,7 +982,7 @@ cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein Cloud-Drive-Speicherplatz aufgebraucht ist." beta: "Beta" -enableAutoSensitive: "Selbstständige NSFW-Kennzeichnung" +enableAutoSensitive: "Automatische NSFW-Kennzeichnung" enableAutoSensitiveDescription: "Erlaubt, wo möglich, die automatische Erkennung und Kennzeichnung von NSFW-Medien durch maschinelles Lernen. Auch wenn diese Option deaktiviert ist, kann sie über den Server aktiviert sein." From 492e356b01dd21a08b320f12a64030fb16a49528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Byron=20Fr=C3=B6hlich?= Date: Mon, 24 Jul 2023 12:46:05 +0000 Subject: [PATCH 056/239] chore: Translated using Weblate (German) Currently translated at 97.6% (1793 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 85972e2ec6..bd2a0aa2f6 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1983,8 +1983,8 @@ renoteMute: Boosts stummschalten renoteUnmute: Stummschaltung von Boosts aufheben noInstances: Keine Server gefunden privateModeInfo: Wenn diese Option aktiviert ist, können nur als vertrauenswürdig - eingestufte Server mit diesem Server kommunizieren. Alle Beiträge werden für die - Öffentlichkeit verborgen. + eingestufte Server mit diesem Server föderieren. Alle Beiträge werden für die Öffentlichkeit + verborgen. allowedInstances: Vertrauenswürdige Server selectInstance: Wähle einen Server aus silencedInstancesDescription: Liste die Hostnamen der Server auf, die du stummschalten From 2d7f19a704e3a8f7d2428d3364c478655b0fd6c4 Mon Sep 17 00:00:00 2001 From: Lizzy Hennig Date: Mon, 24 Jul 2023 14:47:10 +0000 Subject: [PATCH 057/239] chore: Translated using Weblate (German) Currently translated at 97.6% (1793 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ --- locales/de-DE.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index bd2a0aa2f6..775cbb682a 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1448,7 +1448,7 @@ _auth: pleaseGoBack: "Bitte kehre zur Anwendung zurück" callback: "Es wird zur Anwendung zurückgekehrt" denied: "Zugriff verweigert" - copyAsk: Bitte fügen Sie den folgenden Autorisierungscode in die Anwendung ein + copyAsk: 'Bitte fügen Sie den folgenden Autorisierungscode in die Anwendung ein:' _antennaSources: all: "Alle Beiträge" homeTimeline: "Beiträge von Nutzern, denen gefolgt wird" From a456f0c64213b8d2a39a3fe5085be4e22abb1910 Mon Sep 17 00:00:00 2001 From: Linerly Date: Mon, 24 Jul 2023 01:15:17 +0000 Subject: [PATCH 058/239] chore: Translated using Weblate (Indonesian) Currently translated at 97.3% (1787 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 188 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 143 insertions(+), 45 deletions(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 4e00a863dd..bec4d86e85 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1,9 +1,7 @@ _lang_: "Bahasa Indonesia" headlineMisskey: "Jaringan terhubung melalui catatan" -introMisskey: "Selamat datang! Calckey adalah perangkat mikroblog tercatu bersifat - sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta ceritakan - segala tentangmu.📡\nTunjukkan juga reaksimu pada catatan pengguna lain.👍\nMari jelajahi - dunia baru🚀" +introMisskey: "Selamat datang! Firefish adalah media sosial sumber terbuka dan terdesentralisasi + yang selamanya bebas! 🚀" monthAndDay: "{day} {month}" search: "Penelusuran" notifications: "Pemberitahuan" @@ -12,7 +10,7 @@ password: "Kata sandi" forgotPassword: "Lupa Kata Sandi" fetchingAsApObject: "Mengambil data dari Fediverse" ok: "OK" -gotIt: "Saya mengerti" +gotIt: "Mengerti!" cancel: "Batalkan" enterUsername: "Masukkan nama pengguna" renotedBy: "Diposting ulang oleh {user}" @@ -25,21 +23,21 @@ otherSettings: "Pengaturan lainnya" openInWindow: "Buka di jendela" profile: "Profil" timeline: "Linimasa" -noAccountDescription: "Pengguna ini belum menulis bio" +noAccountDescription: "Pengguna ini belum menulis bio." login: "Masuk" loggingIn: "Sedang masuk" logout: "Keluar" signup: "Daftar" -uploading: "Sedang mengunggah" +uploading: "Mengunggah..." save: "Simpan" users: "Pengguna" addUser: "Tambah pengguna" favorite: "Favorit" favorites: "Favorit" unfavorite: "Hapus favorit" -favorited: "Ditambahkan ke favorit" -alreadyFavorited: "Telah ditambahkan ke favorit" -cantFavorite: "Tidak dapat menambahkan ke favorit" +favorited: "Ditambahkan ke markah." +alreadyFavorited: "Telah ditambahkan ke markah." +cantFavorite: "Tidak dapat menambahkan ke markah." pin: "Sematkan ke profil" unpin: "Lepas sematan dari profil" copyContent: "Salin konten" @@ -152,10 +150,11 @@ cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar a flagAsBot: "Atur akun ini sebagai Bot" flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini. Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah - interaksi berantai dengan bot lain dan menyesuaikan sistem internal Calckey untuk + interaksi berantai dengan bot lain dan menyesuaikan sistem internal Firefish untuk memperlakukan akun ini sebagai bot." flagAsCat: "Atur akun ini sebagai kucing" -flagAsCatDescription: "Nyalakan tanda ini untuk menandai akun ini sebagai kucing." +flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti + seekor kucing!" flagShowTimelineReplies: "Tampilkan balasan di linimasa" flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna pada postingan pengguna lain di linimasa jika diaktifkan." @@ -961,8 +960,8 @@ _forgotPassword: enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut." ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi - admin segera." - contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak + admin server segera." + contactAdmin: "Server ini tidak mendukung menggunakan alamat surel, mohon kontak admin untuk mengatur ulang password kamu." _gallery: my: "Postingan saya" @@ -995,6 +994,15 @@ _aboutMisskey: morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang tidak tercantum disini. Terima kasih! 🥰" patrons: "Pendukung" + patronsList: Diurutkan secara kronologis, bukan berdasarkan jumlah donasi. Berdonasilah + dengan tautan di atas supaya nama kamu ada di sini! + sponsors: Sponsor Firefish + donateTitle: Suka Firefish? + pleaseDonateToCalckey: Silakan pertimbangkan berdonasi ke Firefish untuk mendukung + pengembangannya. + pleaseDonateToHost: Silakan pertimbangkan juga berdonasi ke server rumah kamu, {host}, + untuk membantu dengan biaya operasi. + donateHost: Berdonasi ke {host} _nsfw: respect: "Sembunyikan media NSFW" ignore: "Jangan sembunyikan media NSFW" @@ -1027,8 +1035,7 @@ _mfm: inlineMath: "Matematika (Dalam baris)" inlineMathDescription: "Menampilkan formula matematika (KaTeX) dalam baris." blockMath: "Matematika (Blok)" - blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah - blok." + blockMathDescription: "Tampilkan formula matematika (KaTeX) dalam sebuah blok." quote: "Kutip" quoteDescription: "Menampilkan konten sebagai kutipan." emoji: "Emoji kustom" @@ -1069,6 +1076,27 @@ _mfm: sparkleDescription: "Memberikan konten efek partikel kelap-kelip." rotate: "Putar" rotateDescription: "Putar konten sesuai sudut yang ditentukan." + play: Mainkan MFM + stop: Hentikan MFM + warn: MFM dapat berisi animasi yang sangat cepat + advanced: MFM tingkat lanjut + foreground: Warna latar depan + foregroundDescription: Ubah warna depan teks. + backgroundDescription: Ubah warna latar belakang teks. + plainDescription: Menonaktifkan efek dari semua MFM dalam efek MFM ini. + crop: Pangkas + alwaysPlay: Selalu mainkan MFM beranimasi secara otomatis + advancedDescription: Jika dinonaktifkan, hanya memperbolehkan markup dasar kecuali + jika MFM beranimasi dimainkan + positionDescription: Gerakkan konten dengan jumlah yang ditentukan. + scale: Skala + cropDescription: Pangkas + background: Warna latar belakang + plain: Biasa + position: Posisi + scaleDescription: Ubah skala konten dengan jumlah yang ditentukan. + fade: Memudar + fadeDescription: Memudar konten. _instanceTicker: none: "Jangan tampilkan" remote: "Tampilkan untuk pengguna luar" @@ -1077,6 +1105,7 @@ _serverDisconnectedBehavior: reload: "Muat ulang otomatis" dialog: "Tampilkan dialog peringatan" quiet: "Tampilkan peringatan tidak mengganggu" + nothing: Jangan lakukan apa pun _channel: create: "Buat saluran" edit: "Sunting saluran" @@ -1086,7 +1115,9 @@ _channel: owned: "Dimiliki" following: "Mengikuti" usersCount: "{n} Partisipan" - notesCount: "terdapat {n} catatan" + notesCount: "{n} Postingan" + nameOnly: Nama saja + nameAndDescription: Nama dan deskripsi _menuDisplay: sideFull: "Horisontal" sideIcon: "Horisontal (Ikon)" @@ -1098,20 +1129,20 @@ _wordMute: baris baru untuk kondisi OR." muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan regular expressions." - softDescription: "Sembunyikan catatan yang memenuhi aturan kondisi dari linimasa." - hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa. - Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun jika - kondisi tersebut diubah." + softDescription: "Sembunyikan postingan yang memenuhi aturan kondisi dari lini masa." + hardDescription: "Cegah postingan memenuhi aturan kondisi dari ditambahkan ke lini + masa. Dengan tambahan, kiriman berikut tidak akan ditambahkan ke lini masa meskipun + jika kondisi tersebut diubah." soft: "Lembut" hard: "Keras" - mutedNotes: "Catatan yang dibisukan" + mutedNotes: "Postingan yang dibisukan" _instanceMute: - instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari - instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam instansi - yang dibisukan." + instanceMuteDescription: "Pengaturan ini akan membisukan postingan/pembagian apa + saja dari server yang terdaftar, termasuk pengguna yang membalas pengguna lain + dalam server yang dibisukan." instanceMuteDescription2: "Pisah dengan baris baru" - title: "Sembunyikan note dari instansi terdaftar." - heading: "Daftar instansi yang akan dibisukan" + title: "Sembunyikan note dari server terdaftar." + heading: "Daftar server yang akan dibisukan" _theme: explore: "Jelajahi tema" install: "Pasang tema" @@ -1161,7 +1192,7 @@ _theme: hashtag: "Tagar" mention: "Sebut" mentionMe: "Sebutan (saya)" - renote: "Renote" + renote: "Bagikan" modalBg: "Latar belakang modal" divider: "Pembagi" scrollbarHandle: "Pegangan bilah gulir" @@ -1188,8 +1219,8 @@ _theme: accentLighten: "Aksen (Terang)" fgHighlighted: "Teks yang disorot" _sfx: - note: "Catatan" - noteMy: "Catatan (Saya)" + note: "Postingan baru" + noteMy: "Postingan sendiri" notification: "Pemberitahuan" chat: "Pesan" chatBg: "Obrolan (Latar Belakang)" @@ -1219,8 +1250,8 @@ _tutorial: siapapun." step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti seseorang." - step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain - mudah untuk mengikutimu kembali." + step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuatnya lebih + mudah bagi orang lain untuk menentukan jika mereka ingin postinganmu atau mengikutimu." step3_1: "Sekarang saatnya mengikuti beberapa orang!" step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan mengklik ikon pensil pada layar kamu." @@ -1229,21 +1260,21 @@ _tutorial: step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja ikutan bikin akun misskey punyaku\"!" step4_1: "Selesai mencatat catatan pertamamu?" - step4_2: "Horee! Sekarang catatan pertamamu sudah ditampilkan di linimasa milikmu." + step4_2: "Untuk kiriman pertama kamu, beberapa orang biasanya membuat postingan + {introduction} atau \"Halo dunia!\" yang sederhana." step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti orang lain." - step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk - kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga saat - ini. Coba ikuti seseorang yang kamu suka!" - step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol - follow pada profil mereka." + step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan." + step5_3: "Lini masa Beranda {icon} adalah tempat di mana kamu bisa melihat postingan + dari akun yang kamu ikuti." step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." step6_1: "Sekarang kamu dapat melihat catatan pengguna lain pada linimasamu." - step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon - dengan cepat." - step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain - dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." + step6_2: "Ya, kamu tidak saja bergabung ke Firefish. Kamu telah bergabung ke sebuah + portal ke Fediverse, sebuah jaringan ribuan server yang saling berhubungan." + step6_3: "Setiap server bekerja dalam berbagai cara, dan tidak semua server menjalankan + Firefish. Ini salah satunya! Mungkin sedikit sulit, tetapi lama-lama kamu akan + mengerti." step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Calckey." step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung ke bagian {help}." @@ -1278,7 +1309,7 @@ _permissions: "write:messaging": "Buat atau hapus obrolan" "read:mutes": "Lihat daftar orang yang dibisukan" "write:mutes": "Sunting daftar orang yang dibisukan" - "write:notes": "Buat atau hapus catatan" + "write:notes": "Buat atau hapus postingan" "read:notifications": "Lihat pemberitahuan" "write:notifications": "Sunting pemberitahuan" "read:reactions": "Lihat reaksi" @@ -1368,7 +1399,7 @@ _poll: _visibility: public: "Publik" publicDescription: "Catat ke linimasa global" - home: "Beranda" + home: "Tidak terdaftar" homeDescription: "Catat ke linimasa beranda saja" followers: "Pengikut" followersDescription: "Catat ke pengikut saja" @@ -1396,7 +1427,7 @@ _profile: metadataEdit: "Sunting informasi tambahan" metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan ke dalam profilmu. Anda dapat menambahkan tag {a} atau tag {l} dengan {rel} untuk - memverifikasi tautan di profil Anda!" + memverifikasi tautan di profil kamu!" metadataLabel: "Label" metadataContent: "Isi" changeAvatar: "Ubah avatar" @@ -1980,3 +2011,70 @@ noGraze: Harap nonaktifkan ekstensi peramban "Graze for Mastodon", karena akan m silencedWarning: Halaman ini tampil karena pengguna ini datang dari server yang dibisukan adminmu, jadi mereka berpotensi spam. isLocked: Akun ini perlu persetujuan ikuti +_preferencesBackups: + list: Cadangan yang dibuat + saveNew: Simpan cadangan baru + loadFile: Muat dari berkas + save: Simpan perubahan + nameAlreadyExists: Cadangan bernama "{name}" sudah ada. Silakan masukkan nama yang + berbeda. + noBackups: Belum ada cadangan. Kamu bisa mencadangan pengaturan klien kamu di server + ini menggunakan "Buat cadangan baru". + updatedAt: 'Diperbarui pada: {date} {time}' + cannotLoad: Gagal memuat + cannotSave: Gagal menyimpan + invalidFile: Format berkas tidak valid + createdAt: 'Dibuat pada: {date} {time}' + inputName: Silakan masukkan nama untuk cadangan ini + apply: Terapkan ke perangkat ini + saveConfirm: Simpan cadangan sebagai {name}? + deleteConfirm: Hapus cadangan {name}? + renameConfirm: Ubah nama cadangan ini dari "{old}" ke "{new}"? +enableServerMachineStats: Aktifkan statistik perangkat keras server +enableIdenticonGeneration: Aktifkan pembuatan Identicon +reactionPickerSkinTone: Warna kulit emoji yang disukai +_sensitiveMediaDetection: + description: Mengurangi upaya moderasi server dengan mengenal media NSFW secara + otomatis melalui Pembelajaran Mesin. Ini akan sedikit menambah beban pada server. + sensitivity: Sensitivitas deteksi + sensitivityDescription: Mengurangi sensitivitas akan mengurangi kesalahan mendeteksi + (positif palsu). + analyzeVideosDescription: Menganalisa video selain gambar. Ini akan sedikit menambah + beban pada server. + setSensitiveFlagAutomatically: Tandai sebagai NSFW + setSensitiveFlagAutomaticallyDescription: Hasil deteksi internal akan disimpan bahkan + jika opsi ini dinonaktifkan. + analyzeVideos: Aktifkan analisa video +_filters: + fromDomain: Dari domain + notesAfter: Postingan setelah + followersOnly: Hanya pengikut + fromUser: Dari pengguna + withFile: Dengan berkas + followingOnly: Hanya mengikuti + notesBefore: Postingan sebelum +_messaging: + dms: Privat + groups: Grup +verifiedLink: Tautan terverifikasi +isPatron: Pendukung Firefish +customKaTeXMacroDescription: 'Siapkan makro untuk menulis ekspresi matematika dengan + mudah! Notasi ini sesuai dengan definisi perintah LaTeX dan ditulis sebagai \newcommand{\ + nama}{konten} atau \newcommand{\nama}[jumlah argumen]{konten}. Sebagai contoh, \newcommand{\add}[2]{#1 + + #2} akan memperluas \add{3}{foo} menjadi 3 + foo. Tanda kurung kurawal yang mengelilingi + nama makro dapat diubah menjadi tanda kurung bulat atau persegi. Hal ini mempengaruhi + tanda kurung yang digunakan untuk argumen. Satu (dan hanya satu) makro dapat didefinisikan + per baris, dan kamu tidak dapat memutus baris di tengah-tengah definisi. Baris yang + tidak valid akan diabaikan. Hanya fungsi substitusi string sederhana yang didukung; + sintaks lanjutan, seperti percabangan bersyarat, tidak dapat digunakan di sini.' +showPopup: Beri tahu pengguna dengan popup +showWithSparkles: Tampilkan dengan kelap-kelip +youHaveUnreadAnnouncements: Anda memiliki pengumuman yang belum dibaca +donationLink: Tautan ke laman donasi +neverShow: Jangan tampilkan lagi +remindMeLater: Mungkin nanti +removeQuote: Hapus kutipan +removeRecipient: Hapus penerima +removeMember: Hapus anggota +isModerator: Moderator +isAdmin: Administrator From 8c595403dddecb6095dbe5c8d5e7301a0d4f5626 Mon Sep 17 00:00:00 2001 From: Ramdziana F Y Date: Mon, 24 Jul 2023 15:19:59 +0000 Subject: [PATCH 059/239] chore: Translated using Weblate (Indonesian) Currently translated at 97.3% (1787 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 68 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index bec4d86e85..11c4b0eb1f 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1267,8 +1267,8 @@ _tutorial: step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan." step5_3: "Lini masa Beranda {icon} adalah tempat di mana kamu bisa melihat postingan dari akun yang kamu ikuti." - step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna - rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." + step5_4: "Linimasa Lokal {icon} adalah tempat kamu dapat melihat postingan dari + siapa pun di server ini." step6_1: "Sekarang kamu dapat melihat catatan pengguna lain pada linimasamu." step6_2: "Ya, kamu tidak saja bergabung ke Firefish. Kamu telah bergabung ke sebuah portal ke Fediverse, sebuah jaringan ribuan server yang saling berhubungan." @@ -1279,6 +1279,12 @@ _tutorial: step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung ke bagian {help}." step7_3: "Semoga berhasil dan bersenang-senanglah! 🚀" + step5_6: Linimasa Rekomendasi {icon} adalah tempat kamu dapat melihat postingan + dari server yang direkomendasikan admin. + step6_4: Sekarang pergilah, bereksplorasi, dan senang-senang! + step5_5: Linimasa Sosial {icon} adalah kombinasi antara linimasa Beranda dan Lokal. + step5_7: Linimasa Global {icon} adalah tempat kamu dapat melihat postingan orang-orang + dari server yang terkoneksi. _2fa: alreadyRegistered: "Kamu telah mendaftarkan perangkat otentikasi dua faktor." registerTOTP: "Daftarkan perangkat baru" @@ -1294,6 +1300,25 @@ _2fa: securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." + renewTOTPConfirm: Ini akan menyebabkan kode verifikasi dari aplikasimu sebelumnya + berhenti bekerja + token: Token 2FA + chromePasskeyNotSupported: Kunci pas Chrome saat ini tidak didukung. + securityKeyName: Masukkan nama kunci + removeKey: Hapus kunci keamanan + step2Click: Mengklik kode QR ini akan mengizinkanmu mendaftarkan 2FA untuk kunci + keamanan atau apl ontentikasi ponsel. + step3Title: Masukkan kode otentikasi + securityKeyNotSupported: Perambanmu tidak mendukung kunci keamanan. + renewTOTPOk: Konfigurasi ulang + renewTOTPCancel: Batal + registerTOTPBeforeKey: Silakan atur apl otentikator untuk mendaftarkan kunci keamanan + atau kunci pas. + tapSecurityKey: Silakan ikuti perambanmu untuk mendaftarkan kunci keamanan atau + kunci pas + removeKeyConfirm: Yakin menghapus kunci {name}? + whyTOTPOnlyRenew: Apl otentikator tidak dapat dihapus selama kunci keamanan didaftarkan. + renewTOTP: Konfigurasi ulang apl otentikator _permissions: "read:account": "Lihat informasi akun" "write:account": "Sunting informasi akun" @@ -1331,16 +1356,19 @@ _auth: shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?" shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun kamu?" - permissionAsk: "Aplikasi ini membutuhkan beberapa ijin, yaitu:" + permissionAsk: "Aplikasi ini membutuhkan izin berikut:" pleaseGoBack: "Mohon kembali ke aplikasi kamu" callback: "Mengembalikan kamu ke aplikasi" denied: "Akses ditolak" + copyAsk: 'Harap tempel kode otorisasi berikut ke aplikasi:' + allPermissions: Akses akun penuh _antennaSources: - all: "Semua catatan" - homeTimeline: "Catatan dari pengguna yang diikuti" - users: "Catatan dari pengguna tertentu" - userList: "Catatan dari daftar tertentu" - userGroup: "Catatan dari pengguna dalam grup yang ditentukan" + all: "Semua postingan" + homeTimeline: "Postingan dari pengguna yang diikuti" + users: "Postingan dari pengguna tertentu" + userList: "Postingan dari daftar tertentu" + userGroup: "Postingan dari pengguna dalam grup yang ditentukan" + instances: Postingan dari semua pengguna di server _weekday: sunday: "Minggu" monday: "Senin" @@ -1350,7 +1378,7 @@ _weekday: friday: "Jumat" saturday: "Sabtu" _widgets: - memo: "Catatan memo" + memo: "Catatan Tempel" notifications: "Pemberitahuan" timeline: "Linimasa" calendar: "Kalender" @@ -1359,16 +1387,26 @@ _widgets: rss: "Pembaca RSS" activity: "Aktivitas" photos: "Foto" - digitalClock: "Jam digital" + digitalClock: "Jam Digital" federation: "Federasi" - postForm: "Buat catatan" + postForm: "Formulir Posting" slideshow: "Slideshow" button: "Tombol" - onlineUsers: "Pengguna online" + onlineUsers: "Pengguna Daring" jobQueue: "Antrian kerja" - serverMetric: "Statistik peladen" + serverMetric: "Metrik Server" aiscript: "Konsol AiScript" aichan: "Ai" + rssTicker: Telegraf RSS + meiliIndexCount: Postingan yang terindeks + userList: Daftar Pengguna + instanceCloud: Server Awan + unixClock: Jam UNIX + meiliSize: Ukuran indeks + _userList: + chooseList: Pilih daftar + meiliStatus: Status Server + serverInfo: Info Server _cw: hide: "Sembunyikan" show: "Lihat konten" @@ -1398,7 +1436,7 @@ _poll: remainingSeconds: "Berakhir dalam {s} detik" _visibility: public: "Publik" - publicDescription: "Catat ke linimasa global" + publicDescription: "Postinganmu akan terlihat di semua linimasa publik" home: "Tidak terdaftar" homeDescription: "Catat ke linimasa beranda saja" followers: "Pengikut" @@ -2030,6 +2068,8 @@ _preferencesBackups: saveConfirm: Simpan cadangan sebagai {name}? deleteConfirm: Hapus cadangan {name}? renameConfirm: Ubah nama cadangan ini dari "{old}" ke "{new}"? + applyConfirm: Kamu yakin ingin menerapkan cadangan "{name}" di perangkat ini? Pengaturan + yang sudah ada akan ditimpa. enableServerMachineStats: Aktifkan statistik perangkat keras server enableIdenticonGeneration: Aktifkan pembuatan Identicon reactionPickerSkinTone: Warna kulit emoji yang disukai From 9da56c89bfc91b509f306f60c3ca0e200bd6e286 Mon Sep 17 00:00:00 2001 From: Ramdziana F Y Date: Mon, 24 Jul 2023 15:31:37 +0000 Subject: [PATCH 060/239] chore: Translated using Weblate (Indonesian) Currently translated at 97.3% (1788 of 1836 strings) Translation: Firefish/locales Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ --- locales/id-ID.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 11c4b0eb1f..7c214d14c1 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1438,7 +1438,7 @@ _visibility: public: "Publik" publicDescription: "Postinganmu akan terlihat di semua linimasa publik" home: "Tidak terdaftar" - homeDescription: "Catat ke linimasa beranda saja" + homeDescription: "Posting ke linimasa beranda saja" followers: "Pengikut" followersDescription: "Catat ke pengikut saja" specified: "Langsung" From d1378ed99e070cd866f4f04a025140bdacdc68b3 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Mon, 24 Jul 2023 10:02:41 -0700 Subject: [PATCH 061/239] =?UTF-8?q?fix:=20=F0=9F=8D=B1=20old=20custom=20as?= =?UTF-8?q?sets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom/assets/badges/error.png | Bin 58350 -> 41010 bytes custom/assets/badges/info.png | Bin 56191 -> 10118 bytes custom/assets/badges/not-found.png | Bin 56874 -> 9342 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/custom/assets/badges/error.png b/custom/assets/badges/error.png index e90912b405bd46bb597853035ae4b83818ef98ba..046f18e149d63562698eccf86761c1f40fc1955b 100644 GIT binary patch literal 41010 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
JDt&ZdroqB2r^?OZnB0gVlfD3_l}rXH1ok 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 z z;3t<%>KSM&P?4M%;HEtnV4U)be1JXbaPO*zdd&cYT0w#l5`g*(U5UQ62bi5Gbkz$M zp@OR=q;MxwV8Mls)fi|+U6IQbxhHb+@mY)z1ROX}p}o7aYXm(dxHS^W{DRTmQJcH( ztznMBvS+^Jia?7n2&MOaXnHKc!Qm?16|f8|Rr&v&T>Q8aJ6DPDtlLzQ&v(Ymj+Q5vv-XoBvf3+t>p^siwq_A&FuBP z9JTu-RX_AGORew(mK^&FmkSpk`+}7pMgfLEdu{g&J3DKjzlF<$ZW87my#nRw*|gG_ zBN)idLQmZ`jXN4;fKZnqfI@d0*mKmwruE4_!U*6t&Nz2*n2}Pf>Vc0<$wO2Ry8HSe zIa~gB`dcrRdvXA<;_CQ1Q&}gl;A&Ep-b4W&Ddg{!PCgMc7>jSdnexc)zBU5NrlT%b za7QGx{A!-K1VaFq8s5OM+o$)NGJk(^uIXoR6nyw}1OE&ZpuOjR`g|jei%#XvMrO`+ zOCHnNb%H6kC>J9U8Z>c9zwa-AL-U{foYo2h05%`lSU4&XOP(O5UnY~`_Lpv*7fb1> zpTN^!VrSUhIRDUU^7qRn_oP4e$_{V1k6lev z3&svj<)q=~C+3)#czPOxVAlS%($_M4=bKzLkaGjLZ8-EP72kb|W%8}>*;oEW zk5l;Ud)aeIO-;R|uXXCYS}J#as<;q712wYs1lCAn!-uBn5P8NgHlg*bHyC9*P>c1I z7ZA{J*yW1d9SN4C|5rfDDiOZ1e%l~)!%S#4#1i0y+2taK&x`rZJ z><{z+QAg*hj07l+4?;B(}9 zL5RQx0O7&_mG-KzHGN=gQ*`vLuLI0nu0H4V(<4g4q z$fuzCj;FkWJveyLGwcNn$-j#tTkSW4_)dR}y9qla8WoBUk0EUB37-1vP%==wR`|w& z2@~$h2$+6G`Ed0!1S+jS-wY-eftwCQ9`Xf%8Rv+TePl!m{~qk6V^Q67ID+r1&X;s&|eTIWRy|y?VbLi71xk5Ae)#P zU!mLOxMuv9EPwCJ&j0}O^UWd8Li@aZd;uG~@zBl3{Q;S`QP}E^OLPG7pk#<~V^DUv z2f!NKgVEj&83AE9WMtrZ=M7kOG6tt_K;8YHl0s?Qcmx%QTitYDiWB|+#A*GeP}Xws z*d~={%6Non@+>;}B2?HsIG#-(1f? z4+G*v@{C<5vGS~QtP{_z=pOP+-A!S0AL;Np@-WY?#Gz!M@G1s6X{e3j+kwk+JQ|QC zar7y)-vC^L?*b<@I2s1(a0>C>woBAvIuX_!bNSvnDnZ(1to#U(T)l@bU2@|?poeyn zIBBj^yBp$={0orUJIQls6Aeneff0CK6%TYtz=0tiVCwN5-9mwZd7SwUZ+^JL=W{Gv ze;1z~;FFJBdCcS@dpX!=0Pg`k1FpWP9Fd55k5EY7R-RV})F5*TDD;v@4M~X^(cgvB&`^>mDM%oV^sFF5-C z-f0vzt>aK}APEi{Rj4q$9{Lhj?_a+yF#X6sgYiYgk|`>Mew9%AYj|dw5$i7tAiqHU zxsP09p===LaAcFAi~v_4He>~d#T79Z-v(sK2sudsJd&l~#VNwmWk=4TuvzV=3824S zmIP-%F(3>;RI4S$IgA`meOz?-Y#^Mp-fJGxqR<|8<@M3sC9a=0cue?+24UQ9cKQBy z`rT}NiGnA$GKq_L-%q%D@A`EC+6%}gzA&y2ixWozaBvN{{bF=arU0R^zJbN$Hg1dL z{+lV9rw9WgHaM1fhilK7*7ghi*Y?wn$2GG-01!hnegV^w!y`}z=CGS=&M)UsNw6Dj z!X|359?TxVg%!E>Ip)F-Hmqi@K(NcOu>%UwBiWA9vtZWzGaX^=2l_IOnER5wH)XEN z6};2$NQ9LLMd4lIy8Evp{y=RXs4kP@8MDm%GfrJ7Vcbj+m#!11)d4<9hiG@3Tz_)` zO}N9GzTpJptoeUH*>TDXR}mH%Ct}#tn`|%!aFdk*Iczx0@5k(bj*@`xBRb3cU??c(@1IAt~WUdxX~F8__?^TqoB zGYi56gb=1LZ{sUW24Z0Vj9dXsD{htqG*@IKB{5?lbj9;bFBaH%m^^ZB<`Lo-YUYy9 zl-p^@q#bnW=*{F&dM|SufO`cc0ALoNl&$3x=oj(x*HNvV zyYYTA53yuPFt_@4cjF`1T8{U2gvnPkd^THaaLk$Ck7S>G;sY=Qqrm^e%m6^q zJvta>a&g>Ry1=iFF7Te#EQ$>^`{8!VrxD6e)@EnJp%6J0uCm!$9zGb3=JY7Skh-Pi6}WJ;sU zy~eI3e?Q^gs|rXnvWaWmfbw>9;(-*z`aXC(Fc_emYBvIm$Nw0xT~}Wl-C3btdLNRIu*CiOI|NO|VsYfy^TExPRr|LKo z7x#rg$p9_o@>2B;4*#8B#!doy5i(e}hX;&efQYL3DEZbtN<;K}>5|x0q|k1s3j^xu z;?Q|?k*0~<3vMU3;(JWPN4(OmqM(IOvq90!`wc}cJ4T7S-k{;ToM)bq^AbTxi)FBn zX)q@zW6`W5l*!fCh%+nFC(}zP|2_QvMJR;qx~mnvBSA~HRQK2Y9nfD_@109mkcU17 z%%{Q#e2VxLWhq$4sP!+n{EM>v;;tdMmmCTRgV2?d1qPRpzgGr%MmLjU^m;zQ5&N57 zZ`F$wwAd1I9J%Qg3Tb(oD;pt8pS4g}SwKWl_vk0I?Ab4wrw$D!G6Rhx11-&8FJkFo zX__z+qo$k;kK_J#cc${XYK1FORosW*racFv=IU#uGvNd+LNIhlx@#8#>FVnJbNNCX z#AJ>b4=zqwB;2fP*aJa=l2@|phKmfzL>uMW^fHB3T+5I9`RCD)yt`YkcVi5`Dprl1EzfL+5wE7xRmVhfCg(vLleH&0q>7g%F$IoO7iHd-$zc71( zJOJKbNZvNC8~|8@iUqpo(9a#DU%|1rxw2!Z2!3~_EQqc#FwR;ldS?O#+k*Wcun|B9 znj;NpxCayCLCQ#cipW(kD5=D9!P?^KL}WWKM@Drdn)(jcvtV) zfLo0HS7?v$1&BCFUC`r=$JAHc;uLk{RP0Qkz{sux7a-T0B}82=&vNU@YmeN0lIA>d z+9`$aOh7z=Irq-K4+af!xlkB@^QbumU5O~Eg%s>`xw2baGbk^wKF-i&V^`&Sn0M*w z{Th%f*fVvgu;Q;W{a1V)D;l7<&Q5ui1w8F=of{6FrkNscMsGGwR!2_8&V*e#aasZ- z6xs45bGbSD8cBOLGFcHo z*^C$(_e0?tg;6LGw`2GGp?j8Hcmrsg?atqh+jEi%?>a@L_k7qVN^dQrJ7A%a1pp}I zG#Er=#0Y3S3|d!T56&!c`oE)e*MDm-H{(hPDcEjIvhuLg$*$g~0l$#QL1sFv?oP8! z+{vgnXEz^Xoy_B7`F>>2LD-1tuM@8Rqf0If7#_I&5YS1>?-Sf{y=?$MM%meW39Y(L zY7CN~!%Y5R-mo>$myt8_HKkYD-@5B9_Ju?&J;H~VvEk>8@UE7*danlbQn@APtAdNU zRoC8z1~)uR;cFeA_A1YMhk&FJB{bX*el|Sj%JI+Eg0Li3ygwMEzVHI#JD663(_iii zG&1UbtWxM^y82phW~tnCc_<|-mAT(II}NxmL^eVIU2&+$#HiX9SMSq+Ur3My`eaya zqQ%B;ew`Er`yHOd(|qJJW@5!@FLSZQh+E_Yz|=bH;HUlO0hs3=0gYBMOj!!r+2|$<^O|PZo$nMg0G+DyaBe)CSj&X+u?r<9_M%zundQ cGmzH*16uBJKk}B}E&u=k07*qoM6N<$f~eXho&W#< literal 58350 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 diff --git a/custom/assets/badges/info.png b/custom/assets/badges/info.png index ac70544e4a6a77fdfd81575238346c363c1f7733..c6ab300a726e0927ffc88e2ad5c14cd932f3d431 100644 GIT binary patch literal 10118 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 literal 56191 zcmV+9KpVe_P)p%1O zf8SUQd=F^hyYb!lZtT;c4Be>&;=B9(-S}?&9|Zs@(WL}XhZcCg8{duZ#(>-M(5V1| zD{uS@|9bkh?^J-njY^;lSOK&F(Y<}bJKtS_x3P|lyh4Q17o)E~a?<~Wdu|0hKpKz@ z*Z~`mm-t^4XaY=tOw3C&;7c5l?*L%C0Ptu2_4MoC0lz#?5)Sz3Zf_;z>n7y)5e)?+Qc7=PM_LLj0=@#)0r7s$>rhSRw~oK~x;e8? zJ_k+4kWzL5^An8ZwFK+MIMj)U7V}Wyl(-I)iGcqzVm^pJMha7SUbLY;byu6&8oE%hD-D4Nf-Q7)1 zO%0!a{yCp~@(G`P_8Il{_2_z^P2UTA1U!(i8$`eL0C35#?%~Pj-(H^pfX46Se87

uPCgXrPeK)6>^W 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

fI-7`|3+;u0 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 Date: Mon, 24 Jul 2023 13:10:35 -0400 Subject: [PATCH 062/239] fix: rename copyright to firefish --- packages/backend/assets/LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/assets/LICENSE b/packages/backend/assets/LICENSE index 342509dec1..cb57aef954 100644 --- a/packages/backend/assets/LICENSE +++ b/packages/backend/assets/LICENSE @@ -1,4 +1,4 @@ -Copyright 2023 Calckey +Copyright 2023 Firefish Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From bec0aae4185676ba2d5c77ce86a1f7b7a18e3b08 Mon Sep 17 00:00:00 2001 From: ThatOneCalculator Date: Mon, 24 Jul 2023 16:03:58 -0700 Subject: [PATCH 063/239] chore: :art: format --- packages/backend/src/boot/master.ts | 42 +++++++++++++++---- .../backend/src/server/api/api-handler.ts | 4 +- packages/backend/src/server/web/manifest.ts | 7 +++- .../client/src/pages/settings/general.vue | 3 +- 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 25731b7e2b..bbefdc34ca 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -31,13 +31,41 @@ function greet() { if (!envOption.quiet) { //#region Firefish logo const v = `v${meta.version}`; - console.log(themeColor(" ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ◯ ")); - console.log(themeColor("█ █ █ ▄ █ █ █ █ █ █ █ █ █ ○ ▄ ▄")); - console.log(themeColor("█ ▄▄▄█ █ █ █ █ █ ▄▄▄█ ▄▄▄█ █ ▄▄▄▄▄█ █▄█ █ ⚬ █▄▄ █▄▄ ")); - console.log(themeColor("█ █▄▄▄█ █ █▄▄█▄█ █▄▄▄█ █▄▄▄█ █ █▄▄▄▄▄█ █ ▄▄▄▄▄▄ ▄")); - console.log(themeColor("█ ▄▄▄█ █ ▄▄ █ ▄▄▄█ ▄▄▄█ █▄▄▄▄▄ █ ▄ █ █ █ █▄▄")); - console.log(themeColor("█ █ █ █ █ █ █ █▄▄▄█ █ █ █▄▄▄▄▄█ █ █ █ █ █ ● ● █")); - console.log(themeColor("█▄▄▄█ █▄▄▄█▄▄▄█ █▄█▄▄▄▄▄▄▄█▄▄▄█ █▄▄▄█▄▄▄▄▄▄▄█▄▄█ █▄▄█ ▀▄▄▄▄▄▄▀")); + console.log( + themeColor( + " ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ◯ ", + ), + ); + console.log( + themeColor( + "█ █ █ ▄ █ █ █ █ █ █ █ █ █ ○ ▄ ▄", + ), + ); + console.log( + themeColor( + "█ ▄▄▄█ █ █ █ █ █ ▄▄▄█ ▄▄▄█ █ ▄▄▄▄▄█ █▄█ █ ⚬ █▄▄ █▄▄ ", + ), + ); + console.log( + themeColor( + "█ █▄▄▄█ █ █▄▄█▄█ █▄▄▄█ █▄▄▄█ █ █▄▄▄▄▄█ █ ▄▄▄▄▄▄ ▄", + ), + ); + console.log( + themeColor( + "█ ▄▄▄█ █ ▄▄ █ ▄▄▄█ ▄▄▄█ █▄▄▄▄▄ █ ▄ █ █ █ █▄▄", + ), + ); + console.log( + themeColor( + "█ █ █ █ █ █ █ █▄▄▄█ █ █ █▄▄▄▄▄█ █ █ █ █ █ ● ● █", + ), + ); + console.log( + themeColor( + "█▄▄▄█ █▄▄▄█▄▄▄█ █▄█▄▄▄▄▄▄▄█▄▄▄█ █▄▄▄█▄▄▄▄▄▄▄█▄▄█ █▄▄█ ▀▄▄▄▄▄▄▀", + ), + ); //#endregion console.log( diff --git a/packages/backend/src/server/api/api-handler.ts b/packages/backend/src/server/api/api-handler.ts index 770d5ac6f6..48a33dfc6e 100644 --- a/packages/backend/src/server/api/api-handler.ts +++ b/packages/backend/src/server/api/api-handler.ts @@ -33,7 +33,9 @@ export default (endpoint: IEndpoint, ctx: Koa.Context) => code: y!.code, id: y!.id, kind: y!.kind, - ...((y!.info && process.env.NODE_ENV !== "production") ? { info: y!.info } : {}), + ...(y!.info && process.env.NODE_ENV !== "production" + ? { info: y!.info } + : {}), }, }; } else { diff --git a/packages/backend/src/server/web/manifest.ts b/packages/backend/src/server/web/manifest.ts index 9128ee5166..bbcf639ffe 100644 --- a/packages/backend/src/server/web/manifest.ts +++ b/packages/backend/src/server/web/manifest.ts @@ -14,10 +14,13 @@ export const manifestHandler = async (ctx: Koa.Context) => { res.name = instance.name || "Firefish"; if (instance.themeColor) res.theme_color = instance.themeColor; for (const icon of res.icons) { - icon.src = `${icon.src}?v=${config.version.replace(/[^0-9]/g, '')}`; + icon.src = `${icon.src}?v=${config.version.replace(/[^0-9]/g, "")}`; } for (const screenshot of res.screenshots) { - screenshot.src = `${screenshot.src}?v=${config.version.replace(/[^0-9]/g, '')}`; + screenshot.src = `${screenshot.src}?v=${config.version.replace( + /[^0-9]/g, + "", + )}`; } ctx.set("Cache-Control", "max-age=300"); ctx.body = res; diff --git a/packages/client/src/pages/settings/general.vue b/packages/client/src/pages/settings/general.vue index 7fefc6d746..e7a8183f3a 100644 --- a/packages/client/src/pages/settings/general.vue +++ b/packages/client/src/pages/settings/general.vue @@ -8,7 +8,8 @@

y5V|w~A?oj>ef0twzj}v`^-IxX(S^XB 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