From 545371011a76cc7e4c0698237fde38fc61af05e1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Jul 2023 07:43:55 +0900 Subject: [PATCH 001/120] use happy-dom 10.0.3 Resolve #11287 --- packages/backend/package.json | 2 +- packages/frontend/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 185651f39..5baf583dc 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -100,7 +100,7 @@ "fluent-ffmpeg": "2.1.2", "form-data": "4.0.0", "got": "13.0.0", - "happy-dom": "10.3.2", + "happy-dom": "10.0.3", "hpagent": "1.2.0", "ioredis": "5.3.2", "ip-cidr": "3.1.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index caddca2cc..90c0cca44 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -123,7 +123,7 @@ "eslint-plugin-import": "2.27.5", "eslint-plugin-vue": "9.15.1", "fast-glob": "3.3.0", - "happy-dom": "10.3.2", + "happy-dom": "10.0.3", "micromatch": "4.0.5", "msw": "1.2.2", "msw-storybook-addon": "1.8.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d97a8b798..205efb2ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -207,8 +207,8 @@ importers: specifier: 13.0.0 version: 13.0.0 happy-dom: - specifier: 10.3.2 - version: 10.3.2 + specifier: 10.0.3 + version: 10.0.3 hpagent: specifier: 1.2.0 version: 1.2.0 @@ -948,8 +948,8 @@ importers: specifier: 3.3.0 version: 3.3.0 happy-dom: - specifier: 10.3.2 - version: 10.3.2 + specifier: 10.0.3 + version: 10.0.3 micromatch: specifier: 4.0.5 version: 4.0.5 @@ -985,7 +985,7 @@ importers: version: 1.0.2 vitest: specifier: 0.33.0 - version: 0.33.0(happy-dom@10.3.2)(sass@1.63.6) + version: 0.33.0(happy-dom@10.0.3)(sass@1.63.6) vitest-fetch-mock: specifier: 0.2.2 version: 0.2.2(vitest@0.33.0) @@ -8482,7 +8482,7 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.33.0(happy-dom@10.3.2)(sass@1.63.6) + vitest: 0.33.0(happy-dom@10.0.3)(sass@1.63.6) transitivePeerDependencies: - supports-color dev: true @@ -13320,8 +13320,8 @@ packages: uglify-js: 3.17.4 dev: true - /happy-dom@10.3.2: - resolution: {integrity: sha512-SmV12YEaaAlEfhfq+4unIHkyvqY08as7x9dM+Q6TxjNpHX0k3ihJ4mukjxxstEpx463XhVQJsAKGlNoVdKWsVA==} + /happy-dom@10.0.3: + resolution: {integrity: sha512-WkCP+Z5fX6U5PY+yHP3ElV5D9PoxRAHRWPFq3pG9rg/6Hjf5ak7dozAgSCywsTRUq2qfa8vV8OQvUy5pRXy8EQ==} dependencies: css.escape: 1.5.1 entities: 4.5.0 @@ -20821,12 +20821,12 @@ packages: vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.5 - vitest: 0.33.0(happy-dom@10.3.2)(sass@1.63.6) + vitest: 0.33.0(happy-dom@10.0.3)(sass@1.63.6) transitivePeerDependencies: - encoding dev: true - /vitest@0.33.0(happy-dom@10.3.2)(sass@1.63.6): + /vitest@0.33.0(happy-dom@10.0.3)(sass@1.63.6): resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -20870,7 +20870,7 @@ packages: cac: 6.7.14 chai: 4.3.7 debug: 4.3.4(supports-color@8.1.1) - happy-dom: 10.3.2 + happy-dom: 10.0.3 local-pkg: 0.4.3 magic-string: 0.30.1 pathe: 1.1.1 From 96cde67b2c9b6ecbc4df7bbf2d97ebdd511007e7 Mon Sep 17 00:00:00 2001 From: woxtu Date: Sun, 16 Jul 2023 14:21:05 +0900 Subject: [PATCH 002/120] Use nullish coalescing operator (#11294) --- .../frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts index 3e756cae9..1c417991e 100644 --- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts +++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts @@ -256,7 +256,7 @@ export default function(props: { case 'mention': { return [h(MkMention, { key: Math.random(), - host: (token.props.host == null && props.author && props.author.host != null ? props.author.host : token.props.host) || host, + host: (token.props.host == null && props.author && props.author.host != null ? props.author.host : token.props.host) ?? host, username: token.props.username, })]; } From 44174127872738f8ac65252546b2b1dbf53aa389 Mon Sep 17 00:00:00 2001 From: CGsama Date: Sun, 16 Jul 2023 01:21:49 -0400 Subject: [PATCH 003/120] Export notes with file detail (#11293) --- .../queue/processors/ExportNotesProcessorService.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts index 75f32ffee..107c8e4ce 100644 --- a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts +++ b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts @@ -14,6 +14,8 @@ import { bindThis } from '@/decorators.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type * as Bull from 'bullmq'; import type { DbJobDataWithUser } from '../types.js'; +import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; +import { Packed } from '@/misc/json-schema.js'; @Injectable() export class ExportNotesProcessorService { @@ -34,6 +36,8 @@ export class ExportNotesProcessorService { private driveService: DriveService, private queueLoggerService: QueueLoggerService, + + private driveFileEntityService: DriveFileEntityService, ) { this.logger = this.queueLoggerService.logger.createSubLogger('export-notes'); } @@ -97,7 +101,8 @@ export class ExportNotesProcessorService { if (note.hasPoll) { poll = await this.pollsRepository.findOneByOrFail({ noteId: note.id }); } - const content = JSON.stringify(serialize(note, poll)); + const files = await this.driveFileEntityService.packManyByIds(note.fileIds); + const content = JSON.stringify(serialize(note, poll, files)); const isFirst = exportedNotesCount === 0; await write(isFirst ? content : ',\n' + content); exportedNotesCount++; @@ -125,12 +130,13 @@ export class ExportNotesProcessorService { } } -function serialize(note: Note, poll: Poll | null = null): Record { +function serialize(note: Note, poll: Poll | null = null, files: Map['id'], Packed<'DriveFile'>>): Record { return { id: note.id, text: note.text, createdAt: note.createdAt, fileIds: note.fileIds, + files: files, replyId: note.replyId, renoteId: note.renoteId, poll: poll, From 20c2fa4c58b82d5a7382cf2598d7b416b58ae9a4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Jul 2023 14:22:28 +0900 Subject: [PATCH 004/120] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 902322287..66fa58919 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ - featuredノートのsignedGet回数を減らしました - リモートサーバーからのNSFW映像のキャッシュだけを無効化できるオプションを追加 - MeilisearchにIndexするノートの範囲を設定できるように +- Export notes with file detail - Fix: Remove Meilisearch index when notes are deleted - Fix: 非英語環境でのPostgreSQLのエラーハンドリングを修正 - Fix: インスタンスのアイコンがbase64の場合の挙動を修正 From 29f84a072b0349a9ab51935a85d856448ebf30da Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Jul 2023 14:22:41 +0900 Subject: [PATCH 005/120] New Crowdin updates (#11196) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (German) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Swedish) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Russian) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Russian) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Dutch) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (English) * New translations ja-JP.yml (German) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Arabic) * New translations ja-JP.yml (Turkish) * New translations ja-JP.yml (Thai) * New translations ja-JP.yml (Thai) --------- Co-authored-by: Kagami Sascha Rosylight --- locales/ar-SA.yml | 44 +++++--- locales/de-DE.yml | 24 ++++ locales/en-US.yml | 24 ++++ locales/es-ES.yml | 11 +- locales/it-IT.yml | 13 +++ locales/ja-KS.yml | 7 ++ locales/nl-NL.yml | 8 ++ locales/ru-RU.yml | 5 + locales/sv-SE.yml | 18 +++ locales/th-TH.yml | 47 +++++++- locales/tr-TR.yml | 282 ++++++++++++++++++++++++++++++++++++++++++++++ locales/zh-CN.yml | 41 ++++--- locales/zh-TW.yml | 68 +++++++---- 13 files changed, 537 insertions(+), 55 deletions(-) diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 4dc3f743f..116973a4e 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -41,19 +41,23 @@ unfavorite: "إزالة من المفضلة" favorited: "أُضيف إلى المفضلة." alreadyFavorited: "تمت إضافته بالفعل إلى المفضلة." cantFavorite: "تعذرت الإضافة إلى المفضلة." -pin: "دبّسها على الصفحة الشخصية" -unpin: "ألغ تدبيسها من ملفك الشخصي" +pin: "ثبتها على الصفحة الشخصية" +unpin: "فكها من ملفك الشخصي" copyContent: "انسخ المحتوى" copyLink: "انسخ الرابط" delete: "حذف" deleteAndEdit: "إزالة وإعادة الصياغة" deleteAndEditConfirm: "أمتأكد من حذف الملاحظة؟ ستفقد كل مشاركاتها، والتفاعلات، والردود عليها." addToList: "أضفه إلى قائمة" +addToAntenna: "أضف إلى هوائي" sendMessage: "أرسل رسالة" copyRSS: "انسخ رابط RSS" copyUsername: "انسخ اسم المستخدم" copyUserId: "انسخ معرف المستخدم" copyNoteId: "انسخ معرف الملاحظة" +copyFileId: "انسخ معرّف الملف" +copyFolderId: "انسخ معرّف المجلد" +copyProfileUrl: "انسخ رابط الملف الشخصي" searchUser: "ابحث عن مستخدمين" reply: "رد" loadMore: "عرض المزيد" @@ -108,8 +112,8 @@ cantReRenote: "لا يمكنك إعادة نشر ملاحظة معاد نشره quote: "اقتبس" inChannelRenote: "إعادة نشر في قناة" inChannelQuote: "اقتباس في قناة" -pinnedNote: "ملاحظة مدبسة" -pinned: "دبّسها على الصفحة الشخصية" +pinnedNote: "ملاحظة مثبتة" +pinned: "ثبتها على الصفحة الشخصية" you: "أنت" clickToShow: "اضغط للعرض" sensitive: "محتوى حساس" @@ -136,8 +140,10 @@ unblockConfirm: "أمتأكد من إلغاء حجب هذا الحساب؟" suspendConfirm: "أمتأكد من تعليق الحساب؟" unsuspendConfirm: "أمتأكد من إلغاء تعليق؟" selectList: "اختر قائمة" +editList: "عدّل القائمة" selectChannel: "اختر قناة" selectAntenna: "اختر هوائيًا" +editAntenna: "عدّل الهوائي" selectWidget: "اختر ودجة" editWidgets: "عدّل الودجات" editWidgetsExit: "تم" @@ -208,7 +214,7 @@ blockedUsers: "الحسابات المحجوبة" noUsers: "ليس هناك مستخدمون" editProfile: "تعديل الملف التعريفي" noteDeleteConfirm: "هل تريد حذف هذه الملاحظة؟" -pinLimitExceeded: "لا يمكنك تدبيس الملاحظات بعد الآن." +pinLimitExceeded: "لا يمكنك تثبيت الملاحظات بعد الآن." intro: "لقد انتهت عملية تنصيب Misskey. الرجاء إنشاء حساب إداري." done: "تمّ" processing: "المعالجة جارية" @@ -307,6 +313,7 @@ copyUrl: "انسخ الرابط" rename: "إعادة التسمية" avatar: "الصورة الرمزية" banner: "الصورة الرأسية" +displayOfSensitiveMedia: "عرض المحتوى الحساس" whenServerDisconnected: "عند فقدان الاتصال بالخادم" disconnectedFromServer: "قُطِع الإتصال بالخادم" reload: "انعش" @@ -345,12 +352,12 @@ iconUrl: "رابط الأيقونة" bannerUrl: "رابط صورة اللافتة" backgroundImageUrl: "رابط صورة الخلفية" basicInfo: "المعلومات الأساسية " -pinnedUsers: "المستخدمون المدبسون" -pinnedUsersDescription: "قائمة المستخدمين المدبسين في لسان \"استكشف\" ، اجعل كل اسم مستخدم في سطر لوحده." -pinnedPages: "الصفحات المدبسة" -pinnedPagesDescription: "أدخل مسار الصفحات التي تريد تدبيسها في أعلى هذا الموقع، اجعل كل مسار في سطر لوحده." -pinnedClipId: "معرّف المشبك المدبس" -pinnedNotes: "ملاحظة مدبسة" +pinnedUsers: "المستخدمون المثبتون" +pinnedUsersDescription: "قائمة المستخدمين المثبتين في لسان \"استكشف\" ، اجعل كل اسم مستخدم في سطر لوحده." +pinnedPages: "الصفحات المثبتة" +pinnedPagesDescription: "أدخل مسار الصفحات التي تريد تثبيتها في أعلى هذا الموقع، اجعل كل مسار في سطر لوحده." +pinnedClipId: "معرّف المشبك المثبت" +pinnedNotes: "ملاحظة مثبتة" hcaptcha: "hCaptcha" enableHcaptcha: "فعّل hCaptcha" hcaptchaSiteKey: "مفتاح الموقع" @@ -729,7 +736,7 @@ unlikeConfirm: "أتريد إلغاء إعجابك؟" fullView: "ملء الشاشة" quitFullView: "اخرج من وضع ملء للشاشة" addDescription: "أضف وصفًا" -userPagePinTip: "لعرض ملاحظة هنا اختر \"دبسها على الصفحة الشخصية\" من قائمة تلك الملاحظة." +userPagePinTip: "لعرض ملاحظة هنا اختر \"ثبتها على الصفحة الشخصية\" من قائمة تلك الملاحظة." notSpecifiedMentionWarning: "في الملاحظة ذكر لمستخدمين لن يستلموها." info: "عن" userInfo: "معلومات المستخدم" @@ -835,6 +842,9 @@ oneDay: "يوم" oneWeek: "أسبوع" oneMonth: "شهر" failedToFetchAccountInformation: "تعذر جلب معلومات الحساب" +cropImage: "اقتصاص الصورة" +cropImageAsk: "أتريد اقتصاص هذه الصورة" +cropYes: "اقتص" cropNo: "استخدمها كما هي" file: "الملفات" recentNHours: "آخر {n} ساعة" @@ -845,10 +855,12 @@ recommended: "مقترح" driveCapOverrideLabel: "غيّر حجم قرص التخزين لهذا المستخدم" driveCapOverrideCaption: "أعد الحجم إلى القيمة الافتراضية بإدخال 0 أو أقل." requireAdminForView: "لاستعراض هذه الصفحة وجب عليك الولوج كمدير." +isSystemAccount: "حساب أنشأه النظام ويُدار من قِبله." typeToConfirm: "أدخل {x} للتأكيد" deleteAccount: "احذف الحساب" document: "التوثيق" numberOfPageCache: "عدد الصفحات المخزنة مؤقتًا" +numberOfPageCacheDescription: "رفع الرقم سيسحن تجربة المستخدم لكن سيرفع استهلاك الذاكرة." logoutConfirm: "أتريد الخروج؟" lastActiveDate: "آخر استخدام" statusbar: "شريط الحالة" @@ -907,6 +919,7 @@ color: "اللون" manageCustomEmojis: "إدارة الإيموجي المخصصة" youCannotCreateAnymore: "وصلت لسقف الإنشاء." cannotPerformTemporary: "غير متاح مؤقتاً" +invalidParamError: "معاملات غير صالحة" permissionDeniedError: "رُفضة العملية" preset: "إعدادات مسبقة" selectFromPresets: "اختر من الإعدادات المسبقة" @@ -980,6 +993,10 @@ _initialAccountSetting: profileSetting: "إعدادات الملف الشخصي" privacySetting: "إعدادات الخصوصية" theseSettingsCanEditLater: "يمكنك تغيير هذه الإعدادات لاحقًا." + skipAreYouSure: "أتريد تخطي إعداد الملف الشخصي؟" + laterAreYouSure: "أتريد إعداد الملف الشخصي لاحقًا؟" +_serverRules: + description: "مجموعة من القواعد لعرضها عند التسجيل، من المستحسن كتابة ملخصٍ للشروط الخدمة." _accountMigration: moveFrom: "انقل حسابًا آخر لهذا الحساب" moveFromLabel: "الحساب الأصلي #{n}" @@ -1063,6 +1080,7 @@ _role: high: "عالية" _options: canManageCustomEmojis: "إدارة الإيموجي المخصصة" + pinMax: "حد عدد الملاحظات المثبتة" _condition: isLocal: "مستخدم محلي" isRemote: "مستخدم بعيد" @@ -1439,7 +1457,7 @@ _pages: url: "رابط الصفحة" summary: "ملخص الصفحة" alignCenter: "توسيط العناصر" - hideTitleWhenPinned: "اخف عنوان الصفحة عند تدبيسها في ملف الشخصي" + hideTitleWhenPinned: "اخف عنوان الصفحة عند تثبيتها في ملف الشخصي" font: "الخط" fontSerif: "Serif" fontSansSerif: "Sans Serif" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index e33ceb0f0..c157b453c 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -49,6 +49,7 @@ delete: "Löschen" deleteAndEdit: "Löschen und Bearbeiten" deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen." addToList: "Zu Liste hinzufügen" +addToAntenna: "Zu Antenne hinzufügen" sendMessage: "Nachricht senden" copyRSS: "RSS kopieren" copyUsername: "Benutzernamen kopieren" @@ -56,6 +57,7 @@ copyUserId: "Benutzer-ID kopieren" copyNoteId: "Notiz-ID kopieren" copyFileId: "Datei-ID kopieren" copyFolderId: "Ordner-ID kopieren" +copyProfileUrl: "Profil-URL kopieren" searchUser: "Nach einem Benutzer suchen" reply: "Antworten" loadMore: "Mehr laden" @@ -154,6 +156,8 @@ addEmoji: "Emoji hinzufügen" settingGuide: "Empfohlene Einstellung" cacheRemoteFiles: "Dateien von fremden Instanzen im Cache speichern" cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Dateien fremder Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz auf diesem Server gespart, aber durch fehlende Generierung von Vorschaubildern mehr Bandbreite verwendet." +cacheRemoteSensitiveFiles: "Sensitive Dateien von fremden Instanzen im Cache speichern" +cacheRemoteSensitiveFilesDescription: "Ist diese Einstellung deaktiviert, so werden sensitive Dateien fremder Instanzen direkt von dort ohne Zwischenspeicherung geladen." flagAsBot: "Als Bot markieren" flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Misskeys interne Systeme dieses Benutzerkonto als Bot behandeln." flagAsCat: "Als Katze markieren" @@ -1070,6 +1074,23 @@ branding: "Branding" enableServerMachineStats: "Hardwareinformationen des Servers veröffentlichen" enableIdenticonGeneration: "Generierung von Benutzer-Identicons aktivieren" turnOffToImprovePerformance: "Deaktivierung kann zu höherer Leistung führen." +createInviteCode: "Einladung erstellen" +createWithOptions: "Einladung mit Optionen erstellen" +createCount: "Einladungsanzahl" +inviteCodeCreated: "Einladung erstellt" +inviteLimitExceeded: "Du hast das Maximum an erstellbaren Einladungen erreicht." +createLimitRemaining: "Erstellbare Einladungen: Noch {limit}" +inviteLimitResetCycle: "Am {time} wird dies auf {limit} zurückgesetzt." +expirationDate: "Ablaufdatum" +noExpirationDate: "Keins" +inviteCodeUsedAt: "Einladung verwendet am" +registeredUserUsingInviteCode: "Einladung verwendet von" +waitingForMailAuth: "Bestätigungsemail ausstehend" +inviteCodeCreator: "Einladung erstellt von" +usedAt: "Benutzt am" +unused: "Unbenutzt" +used: "Benutzt" +expired: "Abgelaufen" _initialAccountSetting: accountCreated: "Dein Konto wurde erfolgreich erstellt!" letsStartAccountSetup: "Lass uns nun dein Konto einrichten." @@ -1380,6 +1401,9 @@ _role: ltlAvailable: "Kann auf die lokale Chronik zugreifen" canPublicNote: "Kann öffentliche Notizen erstellen" canInvite: "Erstellung von Einladungscodes für diese Instanz" + inviteLimit: "Maximalanzahl an Einladungen" + inviteLimitCycle: "Zyklus des Einladungslimits" + inviteExpirationTime: "Gültigkeitsdauer von Einladungen" canManageCustomEmojis: "Benutzerdefinierte Emojis verwalten" driveCapacity: "Drive-Kapazität" alwaysMarkNsfw: "Dateien immer als NSFW markieren" diff --git a/locales/en-US.yml b/locales/en-US.yml index 02c15e541..1ede207a8 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -49,6 +49,7 @@ delete: "Delete" deleteAndEdit: "Delete and edit" deleteAndEditConfirm: "Are you sure you want to delete this note and edit it? You will lose all reactions, renotes and replies to it." addToList: "Add to list" +addToAntenna: "Add to antenna" sendMessage: "Send a message" copyRSS: "Copy RSS" copyUsername: "Copy username" @@ -56,6 +57,7 @@ copyUserId: "Copy user ID" copyNoteId: "Copy note ID" copyFileId: "Copy file ID" copyFolderId: "Copy folder ID" +copyProfileUrl: "Copy profile URL" searchUser: "Search for a user" reply: "Reply" loadMore: "Load more" @@ -154,6 +156,8 @@ addEmoji: "Add an emoji" settingGuide: "Recommended settings" cacheRemoteFiles: "Cache remote files" cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded directly from the remote instance. Disabling this will decrease storage usage, but increase traffic, as thumbnails will not be generated." +cacheRemoteSensitiveFiles: "Cache sensitive remote files" +cacheRemoteSensitiveFilesDescription: "When this setting is disabled, sensitive remote files are loaded directly from the remote instance without caching." flagAsBot: "Mark this account as a bot" flagAsBotDescription: "Enable this option if this account is controlled by a program. If enabled, it will act as a flag for other developers to prevent endless interaction chains with other bots and adjust Misskey's internal systems to treat this account as a bot." flagAsCat: "Mark this account as a cat" @@ -1070,6 +1074,23 @@ branding: "Branding" enableServerMachineStats: "Publish server hardware stats" enableIdenticonGeneration: "Enable user identicon generation" turnOffToImprovePerformance: "Turning this off can increase performance." +createInviteCode: "Generate invite" +createWithOptions: "Generate with options" +createCount: "Invite count" +inviteCodeCreated: "Invite generated" +inviteLimitExceeded: "You've exceeded the limit of invites you can generate." +createLimitRemaining: "Invite limit: {limit} remaining" +inviteLimitResetCycle: "This limit will reset to {limit} at {time}." +expirationDate: "Expiration date" +noExpirationDate: "No expiration" +inviteCodeUsedAt: "Invite code used at" +registeredUserUsingInviteCode: "Invite used by" +waitingForMailAuth: "Email verification pending" +inviteCodeCreator: "Invite created by" +usedAt: "Used at" +unused: "Unused" +used: "Used" +expired: "Expired" _initialAccountSetting: accountCreated: "Your account was successfully created!" letsStartAccountSetup: "For starters, let's set up your profile." @@ -1380,6 +1401,9 @@ _role: ltlAvailable: "Can view the local timeline" canPublicNote: "Can send public notes" canInvite: "Can create instance invite codes" + inviteLimit: "Invite limit" + inviteLimitCycle: "Invite limit cooldown" + inviteExpirationTime: "Invite expiration interval" canManageCustomEmojis: "Can manage custom emojis" driveCapacity: "Drive capacity" alwaysMarkNsfw: "Always mark files as NSFW" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 6f6433982..2d1a68de9 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -54,6 +54,8 @@ copyRSS: "Copiar RSS" copyUsername: "Copiar nombre de usuario" copyUserId: "Copiar ID del usuario" copyNoteId: "Copiar ID de la nota" +copyFileId: "Copiar un archivo ID" +copyFolderId: "Copiar carpeta ID" searchUser: "Buscar un usuario" reply: "Responder" loadMore: "Ver más" @@ -313,6 +315,7 @@ copyUrl: "Copiar URL" rename: "Renombrar" avatar: "Avatar" banner: "Banner" +displayOfSensitiveMedia: "Mostrar contenido sensible" whenServerDisconnected: "Cuando se pierda la conexión con el servidor" disconnectedFromServer: "Desconectado del servidor" reload: "Recargar" @@ -847,7 +850,7 @@ manageAccounts: "Administrar cuenta" makeReactionsPublic: "Hacer el historial de reacciones público" makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente visibles." classic: "Clásico" -muteThread: "Ocultar hilo" +muteThread: "Silenciar hilo" unmuteThread: "Mostrar hilo" ffVisibility: "Visibilidad de seguidores y seguidos" ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes te siguen" @@ -994,6 +997,7 @@ reactionAcceptance: "Aceptación de reacciones" likeOnly: "Sólo 'me gusta'" likeOnlyForRemote: "Sólo reacciones de instancias remotas" nonSensitiveOnly: "Solo no sensible" +nonSensitiveOnlyForLocalLikeOnlyForRemote: "Sólo no contenido sensible (sólo me gusta en remote)" rolesAssignedToMe: "Roles asignados a mí" resetPasswordConfirm: "¿Realmente quieres cambiar la contraseña?" sensitiveWords: "Palabras sensibles" @@ -1029,9 +1033,14 @@ continue: "Continuar" preservedUsernames: "Nombre de usuario reservado" archive: "Archivo" channelArchiveConfirmTitle: "¿Seguro de archivar {name}?" +displayOfNote: "Mostrar notas" +initialAccountSetting: "Configración inicial de su cuenta\nか\nConfigración de inicio" youFollowing: "Siguiendo" options: "Opción" update: "Actualizar" +later: "Ahora no" +goToMisskey: "ir a Misskey" +additionalEmojiDictionary: "Diccionario adicional de Emoji" installed: "Instalado" branding: "Marca" enableServerMachineStats: "Publicar estadísticas de hardware del servidor" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 51c8e28d6..cb4b44315 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -49,11 +49,15 @@ delete: "Elimina" deleteAndEdit: "Elimina e modifica" deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo? Verranno eliminate anche tutte le reazioni, rinote e risposte collegate." addToList: "Aggiungi alla lista" +addToAntenna: "Aggiungi all'antenna" sendMessage: "Invia messaggio" copyRSS: "Copia RSS" copyUsername: "Copia nome utente" copyUserId: "Copia ID del profilo" copyNoteId: "Copia ID della Nota" +copyFileId: "Copia ID del file" +copyFolderId: "Copia ID della cartella" +copyProfileUrl: "Copia URL del profilo" searchUser: "Cerca profilo" reply: "Rispondi" loadMore: "Mostra di più" @@ -136,8 +140,10 @@ unblockConfirm: "Vuoi davvero sbloccare il profilo?" suspendConfirm: "Vuoi sospendere questo profilo?" unsuspendConfirm: "Vuoi revocare la sospensione si questo profilo?" selectList: "Seleziona una lista" +editList: "Modifica Lista" selectChannel: "Seleziona canale" selectAntenna: "Scegli un'antenna" +editAntenna: "Modifica Antenna" selectWidget: "Seleziona il riquadro" editWidgets: "Modifica i riquadri" editWidgetsExit: "Conferma le modifiche" @@ -311,6 +317,7 @@ copyUrl: "Copia URL" rename: "Modifica nome" avatar: "Foto del profilo" banner: "Intestazione" +displayOfSensitiveMedia: "Visibilità dei media sensibili" whenServerDisconnected: "Quando la connessione col server è persa" disconnectedFromServer: "Il server si è disconnesso" reload: "Ricarica" @@ -1064,6 +1071,7 @@ installed: "Installazione avvenuta" branding: "Branding" enableServerMachineStats: "Pubblicare le informazioni sul server" enableIdenticonGeneration: "Generazione automatica delle Identicon" +turnOffToImprovePerformance: "Disattiva, per migliorare le prestazioni" _initialAccountSetting: accountCreated: "Il tuo profilo è stato creato!" letsStartAccountSetup: "Per iniziare, impostiamo il tuo profilo." @@ -1436,6 +1444,7 @@ _ad: back: "Indietro" reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso" hide: "Nascondi" + timezoneinfo: "Il giorno della settimana è determinato in base al fuso orario del server." _forgotPassword: enterEmail: "Inserisci l'indirizzo di posta elettronica che hai registrato nel tuo profilo. Il collegamento necessario per ripristinare la password verrà inviato a questo indirizzo." ifNoEmail: "Se il tuo indirizzo email non risulta registrato, contatta l'amministrazione dell'istanza." @@ -1487,6 +1496,10 @@ _aboutMisskey: donate: "Sostieni Misskey" morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie mille! 🥰" patrons: "Sostenitori" +_displayOfSensitiveMedia: + respect: "Nascondere i media sensibili" + ignore: "Non nascondere i media sensibili" + force: "Nascondi tutti i media" _instanceTicker: none: "Nascondi" remote: "Mostra solo per i profili remoti" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index ec1aeb31e..3f4ec957a 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1066,6 +1066,9 @@ installed: "インストール済み" branding: "あ" enableServerMachineStats: "サーバーのマシン情報見せびらかすで" enableIdenticonGeneration: "ユーザーごとのIdenticon生成を有効にする" +turnOffToImprovePerformance: "オフにしたらえらい軽うなるで。" +unused: "つこてへん" +used: "もうつこてる" _initialAccountSetting: accountCreated: "アカウント作り終わったで。" letsStartAccountSetup: "アカウントの初期設定をしよか。" @@ -1489,6 +1492,10 @@ _aboutMisskey: donate: "Misskeyに寄付" morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰" patrons: "支援者" +_displayOfSensitiveMedia: + respect: "きわどいのは見とうない" + ignore: "きわどいのも見たい" + force: "常にメディアを隠すで" _instanceTicker: none: "表示せん" remote: "リモートユーザーに表示" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index c22b978f3..ae2881a7d 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -20,6 +20,7 @@ noNotes: "Geen notities" noNotifications: "Geen meldingen" instance: "Server" settings: "Instellingen" +notificationSettings: "Notificatie instellingen" basicSettings: "Basisinstellingen" otherSettings: "Overige instellingen" openInWindow: "In een venster openen" @@ -48,8 +49,15 @@ delete: "Verwijderen" deleteAndEdit: "Verwijderen en bewerken" deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan bewerken? Je verliest alle reacties, herdelingen en antwoorden erop." addToList: "Aan lijst toevoegen" +addToAntenna: "Voeg toe aan antenne" sendMessage: "Verstuur bericht" +copyRSS: "Kopieer RSS" copyUsername: "Kopiëren gebruikersnaam " +copyUserId: "Kopieer gebruiker ID" +copyNoteId: "Kopieer notitie ID" +copyFileId: "Kopieer veld ID" +copyFolderId: "Kopieer folder ID" +copyProfileUrl: "Kopieer profiel URL" searchUser: "Zoeken een gebruiker" reply: "Antwoord" loadMore: "Laad meer" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 9100753b4..080ebf166 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -54,6 +54,9 @@ copyRSS: "Скопировать RSS" copyUsername: "Скопировать имя пользователя" copyUserId: "Скопировать ID пользователя" copyNoteId: "Скопировать ID заметки" +copyFileId: "Скопировать ID файла" +copyFolderId: "Скопировать ID папки" +copyProfileUrl: "Скопировать URL профиля " searchUser: "Поиск людей" reply: "Ответить" loadMore: "Показать еще" @@ -136,8 +139,10 @@ unblockConfirm: "Разблокировать этот аккаунт?" suspendConfirm: "Заморозить этот аккаунт?" unsuspendConfirm: "Разморозить этот аккаунт?" selectList: "Выберите список" +editList: "Редактировать список" selectChannel: "Выберите канал" selectAntenna: "Выберите антенну" +editAntenna: "Редактировать антенну" selectWidget: "Выберите виджет" editWidgets: "Редактировать виджеты" editWidgetsExit: "Готово" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index 5526708f0..3da94ed81 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -20,6 +20,7 @@ noNotes: "Inga noteringar" noNotifications: "Inga notifikationer" instance: "Instanser" settings: "Inställningar" +notificationSettings: "Notifieringsinställningar" basicSettings: "Basinställningar" otherSettings: "Andra inställningar" openInWindow: "Öppna i ett fönster" @@ -53,6 +54,8 @@ copyRSS: "Kopiera RSS" copyUsername: "Kopiera användarnamn" copyUserId: "Kopiera användar-ID" copyNoteId: "Kopiera noter-ID" +copyFileId: "Kopiera Fil-ID" +copyFolderId: "Kopiera mapp-ID" searchUser: "Sök användare" reply: "Svara" loadMore: "Ladda mer" @@ -106,6 +109,7 @@ cantRenote: "Inlägget kunde inte bli omnoterat." cantReRenote: "En omnotering kan inte bli omnoterad." quote: "Citat" inChannelRenote: "Omnotera inom kanalen" +inChannelQuote: "I kanal citat" pinnedNote: "Fästad not" pinned: "Fäst till profil" you: "Du" @@ -309,6 +313,7 @@ banner: "Banner" reload: "Ladda om" doNothing: "Ignorera" reloadConfirm: "Vill du ladda om tidslinjen?" +watch: "Titta" accept: "Tillåt" reject: "Neka" normal: "Normal" @@ -334,13 +339,22 @@ invite: "Inbjudan" inMb: "I megabyte" iconUrl: "URL till profilbilden" bannerUrl: "URL till banner-bilden" +basicInfo: "Grundläggande info" +pinnedUsers: "Fästa användare" +pinnedPages: "Fästa sidor" pinnedNotes: "Fästad not" hcaptcha: "hCaptcha" enableHcaptcha: "Aktivera hCaptcha" hcaptchaSiteKey: "Webbplatsnyckel" +hcaptchaSecretKey: "Hemlig nyckel" recaptcha: "reCAPTCHA" enableRecaptcha: "Aktivera reCAPTCHA" +recaptchaSiteKey: "Webbplatsnyckel" +recaptchaSecretKey: "Hemlig nyckel" +turnstile: "Turnstile" enableTurnstile: "Aktivera Turnstile" +turnstileSiteKey: "Webbplatsnyckel" +turnstileSecretKey: "Hemlig nyckel" antennas: "Antenner" manageAntennas: "Hantera Antenner" name: "Namn" @@ -352,6 +366,7 @@ notifyAntenna: "Notifiera om nya noter" withFileAntenna: "Endast noter med filer" enableServiceworker: "Aktivera pushnotiser i denna webbläsaren" antennaUsersDescription: "Ange ett användarnamn per linje" +withReplies: "Med svar" notesAndReplies: "Inlägg och svar" silence: "Tystnad" recentlyUpdatedUsers: "Nyligen aktiva användare" @@ -362,6 +377,9 @@ userList: "Listor" about: "Om" aboutMisskey: "Om Misskey" administrator: "Administratör" +2fa: "Tvåfaktorsautentisering" +totp: "Autentiseringsapp" +moderator: "Moderator" passwordLessLogin: "Lösenordsfri inloggning" passwordLessLoginDescription: "Tillåter lösenordsfri inloggning med endast en säkerhetsnyckel eller en passkey." resetPassword: "Återställ Lösenord" diff --git a/locales/th-TH.yml b/locales/th-TH.yml index 387f4b9d6..cabdb155d 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -3,7 +3,7 @@ _lang_: "ภาษาไทย" headlineMisskey: "เชื่อมต่อเครือข่ายโดยโน้ต" introMisskey: "ยินดีต้อนรับจ้าาา! Misskey เป็นบริการไมโครบล็อกโอเพ่นซอร์ส แบบการกระจายอำนาจ\nสร้าง \"โน้ต\" เพื่อแบ่งปันความคิดของคุณกับทุกคนรอบตัวคุณกันเถอะ 📡\nด้วยการ \"รีแอคชั่นผู้คน\" คุณยังสามารถแสดงความรู้สึกของคุณเกี่ยวกับบันทึกของทุกคนได้อย่างรวดเร็ว 👍\n\nแล้วมาท่องสำรวจโลกใบใหม่กันเถอะ! 🚀" poweredByMisskeyDescription: "{name} เป็นส่วนหนึ่งในบริการที่ถูกขับเคลื่อนโดยแพลตฟอร์มโอเพ่นซอร์ส Misskey (เรียกว่า \"อินสแตนซ์ Misskey\")" -monthAndDay: "{เดือน}/{วัน}" +monthAndDay: "{month}/{day}" search: "ค้นหา" notifications: "การเเจ้งเตือน" username: "ชื่อผู้ใช้" @@ -15,7 +15,7 @@ gotIt: "เข้าใจแล้ว !" cancel: "ยกเลิก" noThankYou: "ไม่เป็นไร" enterUsername: "ใส่ชื่อผู้ใช้" -renotedBy: "รีโน้ตโดย {ผู้ใช้}" +renotedBy: "รีโน้ตโดย {user}" noNotes: "ไม่มีโน้ต" noNotifications: "ไม่มีการแจ้งเตือน" instance: "อินสแตนซ์" @@ -49,11 +49,15 @@ delete: "ลบ" deleteAndEdit: "ลบและแก้ไข" deleteAndEditConfirm: "นายแน่ใจแล้วเหรอ? ว่าต้องการลบโน้ตนี้และแก้ไข คุณอาจจะสูญเสียการโต้ตอบ, โน้ต, และการตอบกลับทั้งหมดได้นะ" addToList: "เพิ่มในลิสต์" +addToAntenna: "เพิ่มไปยังเสาอากาศ" sendMessage: "ส่งข้อความ" copyRSS: "คัดลอก RSS" copyUsername: "คัดลอกชื่อผู้ใช้" copyUserId: "คัดลอก ID ผู้ใช้" copyNoteId: "คัดลอก ID โน้ต " +copyFileId: "คัดลอกไฟล์ ID" +copyFolderId: "คัดลอกโฟลเดอร์ ID" +copyProfileUrl: "คัดลอกโปรไฟล์ URL" searchUser: "ค้นหาผู้ใช้งาน" reply: "ตอบกลับ" loadMore: "โหลดเพิ่มเติม" @@ -152,6 +156,8 @@ addEmoji: "แทรกอีโมจิ" settingGuide: "การตั้งค่าที่แนะนำ" cacheRemoteFiles: "แคชไฟล์ระยะไกล" cacheRemoteFilesDescription: "เมื่อปิดใช้งานการตั้งค่านี้ ไฟล์ระยะไกลนั้นจะถูกโหลดโดยตรงจากอินสแตนซ์ระยะไกล แต่กรณีการปิดใช้งานนี้จะช่วยลดปริมาณการใช้พื้นที่จัดเก็บข้อมูล แต่เพิ่มปริมาณการใช้งาน เพราะเนื่องจากจะไม่มีการสร้างภาพขนาดย่อ" +cacheRemoteSensitiveFiles: "ไฟล์ระยะไกลที่มีความละเอียดอ่อนแคช" +cacheRemoteSensitiveFilesDescription: "เมื่อปิดการใช้งานแล้วการตั้งค่านี้ ไฟล์รีโมตที่มีความละเอียดอ่อนนั้นจะถูกโหลดโดยตรงจากอินสแตนซ์ระยะไกลโดยที่ไม่มีการแคช" flagAsBot: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นบอท" flagAsBotDescription: "การเปิดใช้งานตัวเลือกนี้หากบัญชีนี้ถูกควบคุมโดยนักเขียนโปรแกรม หรือ ถ้าหากเปิดใช้งาน มันจะทำหน้าที่เป็นแฟล็กสำหรับนักพัฒนารายอื่นๆ และเพื่อป้องกันการโต้ตอบแบบไม่มีที่สิ้นสุดกับบอทตัวอื่นๆ และยังสามารถปรับเปลี่ยนระบบภายในของ Misskey เพื่อปฏิบัติต่อบัญชีนี้เป็นบอท" flagAsCat: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นแมว" @@ -313,6 +319,7 @@ copyUrl: "คัดลอก URL" rename: "เปลี่ยนชื่อ" avatar: "ไอคอน" banner: "แบนเนอร์" +displayOfSensitiveMedia: "แสดงผลสื่อละเอียดอ่อน" whenServerDisconnected: "สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์" disconnectedFromServer: "ถูกตัดการเชื่อมต่อออกจากเซิร์ฟเวอร์" reload: "รีโหลด" @@ -331,9 +338,9 @@ tosUrl: "เงื่อนไขการให้บริการ URL" thisYear: "ปีนี้" thisMonth: "เดือนนี้" today: "วันนี้" -dayX: "{วัน}" +dayX: "{day}" monthX: "{เดือน}" -yearX: "{ปี}" +yearX: "{year}" pages: "หน้า" integration: "รวบรวม" connectService: "เชื่อมต่อ" @@ -1043,6 +1050,7 @@ preservedUsernamesDescription: "ลิสต์ชื่อผู้ใช้ท createNoteFromTheFile: "เรียบเรียงโน้ตจากไฟล์นี้" archive: "เก็บถาวร" channelArchiveConfirmTitle: "เก็บถาวรจริงๆ {name} มั้ย?" +channelArchiveConfirmDescription: "ช่องที่ถูกเก็บถาวรแล้วนั้นจะไม่ปรากฏในรายการช่องหรือผลการค้นหานั้นอีกต่อไปไม่สามารถเพิ่มโพสต์ใหม่ได้อีกต่อไปนะ" thisChannelArchived: "ช่องนี้ถูกเก็บถาวรแล้วนะ" displayOfNote: "การแสดงโน้ต" initialAccountSetting: "ตั้งค่าโปรไฟล์" @@ -1053,6 +1061,7 @@ specifyUser: "ผู้ใช้เฉพาะ" failedToPreviewUrl: "ไม่สามารถดูตัวอย่างได้" update: "อัปเดต" rolesThatCanBeUsedThisEmojiAsReaction: "บทบาทที่สามารถใช้อิโมจินี้เป็นรีแอคชั่นได้" +rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription: "ถ้าหากไม่ได้ระบุบทบาท ทุกคนนั้นก็สามารถใช้อิโมจินี้เป็นการแสดงความรู้สึกได้นะ" rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "บทบาทเหล่านี้ต้องเป็นสาธารณะ" cancelReactionConfirm: "ต้องการลบรีแอคชั่นของคุณจริงๆหรอ?" changeReactionConfirm: "ต้องการเปลี่ยนรีแอคชั่นของคุณจริงๆหรอ?" @@ -1064,6 +1073,23 @@ branding: "แบรนดิ้ง" enableServerMachineStats: "เผยแพร่สถานะฮาร์ดแวร์ของเซิร์ฟเวอร์" enableIdenticonGeneration: "เปิดใช้งานผู้ใช้สร้างตัวระบุ" turnOffToImprovePerformance: "การปิดส่วนนี้สามารถเพิ่มประสิทธิภาพได้" +createInviteCode: "สร้างคำเชิญ" +createWithOptions: "สร้างด้วยตัวเลือก" +createCount: "จำนวนการเชิญ" +inviteCodeCreated: "สร้างคำเชิญแล้ว" +inviteLimitExceeded: "คุณสร้างคำเชิญเกินถึงขีดจำกัดแล้วนะ" +createLimitRemaining: "ขีดจำกัดการเชิญ: {limit} ที่เหลืออยู่" +inviteLimitResetCycle: "ขีดจำกัดนี้จะถูกรีเซ็ตเป็น {limit} ที่ {time}." +expirationDate: "วันที่หมดอายุ" +noExpirationDate: "ไม่มีหมดอายุ" +inviteCodeUsedAt: "รหัสคำเชิญใช้แล้วที่" +registeredUserUsingInviteCode: "ใช้คำเชิญแล้วโดย" +waitingForMailAuth: "กำลังรอการยืนยันอีเมล" +inviteCodeCreator: "สร้างการเชิญแล้วโดย" +usedAt: "ใช้แล้วที่" +unused: "ไม่ใช้แล้ว" +used: "ใช้แล้ว" +expired: "หมดอายุแล้ว" _initialAccountSetting: accountCreated: "คุณได้สร้างบัญชีของคุณสำเร็จเรียบร้อยแล้ว!" letsStartAccountSetup: "สำหรับผู้เริ่มต้นมาตั้งค่าโปรไฟล์ของคุณกันเถอะ" @@ -1071,8 +1097,12 @@ _initialAccountSetting: profileSetting: "ตั้งค่าโปรไฟล์" privacySetting: "ตั้งค่าความเป็นส่วนตัว" theseSettingsCanEditLater: "คุณสามารถเปลี่ยนการตั้งค่าเหล่านี้ได้ในภายหลังได้ตลอดเวลานะ" + youCanEditMoreSettingsInSettingsPageLater: "ยังมีการตั้งค่าอื่นๆ อีกมากมายที่คุณนั้นสามารถกำหนดค่าได้จาก \"การตั้งค่า\" เพื่อให้แน่ใจว่าได้เยี่ยมชมมันได้ภายหลังนะ" + followUsers: "ลองติดตามผู้ใช้บางคนที่คุณอาจจะสนใจเพื่อสร้างไทม์ไลน์ของคุณสิ !" + pushNotificationDescription: "กำลังเปิดใช้งานการแจ้งเตือนแบบพุชจะช่วยให้คุณได้รับการแจ้งเตือนจาก {name} โดยตรงบนอุปกรณ์ของคุณนะ" initialAccountSettingCompleted: "ตั้งค่าโปรไฟล์เสร็จสมบูรณ์แล้ว!" haveFun: "สนุกกับ {name}!" + ifYouNeedLearnMore: "ถ้าหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีใช้ {ชื่อ} (Misskey) กรุณาไปที่ {link}" skipAreYouSure: "ต้องการข้ามการตั้งค่าโปรไฟล์จริงๆแบบนั้นหรอ?" laterAreYouSure: "ต้องการตั้งค่าโปรไฟล์ในภายหลังจริงๆอย่างงั้นหรอ?" _serverRules: @@ -1370,6 +1400,9 @@ _role: ltlAvailable: "การดูไทม์ไลน์ในท้องถิ่น" canPublicNote: "สามารถส่งโน้ตสาธารณะ" canInvite: "สร้างรหัสเชิญอินสแตนซ์" + inviteLimit: "จำกัดการเชิญ" + inviteLimitCycle: "จำกัดการเชิญไว้คูลดาวน์" + inviteExpirationTime: "วันหมดอายุของรหัสการเชิญ" canManageCustomEmojis: "จัดการอีโมจิแบบกำหนดเอง" driveCapacity: "ความจุของไดรฟ์" alwaysMarkNsfw: "ทำเครื่องหมายไฟล์ว่าเป็น NSFW เสมอ" @@ -1484,6 +1517,10 @@ _aboutMisskey: donate: "บริจาคให้กับ Misskey" morePatrons: "เราขอขอบคุณสำหรับความช่วยเหลือจากผู้ช่วยอื่นๆ ที่ไม่ได้ระบุไว้ที่นี่นะ ขอขอบคุณ! 🥰" patrons: "สมาชิกพันธมิตร" +_displayOfSensitiveMedia: + respect: "ซ่อนสื่อทำเครื่องหมายบอกว่าละเอียดอ่อน" + ignore: "แสดงผลสื่อทำเครื่องหมายบอกว่าละเอียดอ่อน" + force: "ซ่อนสื่อทั้งหมด" _instanceTicker: none: "ไม่ต้องแสดง" remote: "แสดงสำหรับผู้ใช้ระยะไกล" @@ -1623,6 +1660,8 @@ _time: day: "วัน" _timelineTutorial: title: "วิธีใช้งาน Misskey" + step1_1: "นี่คือ \"ไทม์ไลน์\" \"โน้ต\" ทั้งหมดที่ส่งใน {name} จะแสดงรายการตามลำดับเวลาที่นี่นะ" + step1_2: "อาจจะมีไทม์ไลน์ที่แตกต่างกันเล็กน้อยยกตัวอย่างเช่น \"ไทม์ไลน์หน้าแรก\" จะมีโน้ตของผู้ใช้ที่คุณติดตามและ \"ไทม์ไลน์ท้องถิ่น\" จะมีโน้ตจากผู้ใช้ทั้งหมดของ {name}" step2_1: "มาลองโพสต์โน้ตต่อไปกัน คุณสามารถทำได้โดยการกดปุ่มที่มีไอคอนดินสอ" step2_2: "ยังไงไหนลองเขียนแนะนำตัวเองหรือแค่ \"สวัสดี {name}!\" ถ้าคุณไม่รู้สึกเหมือนมัน?" step3_1: "เสร็จสิ้นการโพสต์โน้ตย่อแรกของคุณแล้วอย่างงั้นหรอ?" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index cc402eec4..42cc7da3f 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -1,5 +1,6 @@ --- _lang_: "Türkçe" +headlineMisskey: "Notlarla bağlanmış bir ağ" introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Misskey'e hoş geldiniz.\nMisskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\" oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\nHerkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀." poweredByMisskeyDescription: "name}Açık kaynak bir platform\nMisskeyDünya'nın en sunucularında biri。" monthAndDay: "{month}Ay {day}Gün" @@ -11,7 +12,9 @@ forgotPassword: "şifremi unuttum" ok: "TAMAM" gotIt: "Anladım" cancel: "İptal" +noThankYou: "Hayır, teşekkürler" enterUsername: "Kullanıcı adınızı giriniz" +renotedBy: "{user} tarafından Renotelandı" noNotes: "Notlar mevcut değil." noNotifications: "Bildirim bulunmuyor" instance: "Sunucu" @@ -45,15 +48,35 @@ delete: "Sil" deleteAndEdit: "Sil ve yeniden düzenle" deleteAndEditConfirm: "Bu notu silip yeniden düzenlemek istiyor musunuz? Bu nota ilişkin tüm Tepkiler, Yeniden Notlar ve Yanıtlar da silinecektir." addToList: "Listeye ekle" +addToAntenna: "Antene ekle" sendMessage: "Mesaj Gönder" copyRSS: "RSSKopyala" copyUsername: "Kullanıcı Adını Kopyala" copyUserId: "KullanıcıyıKopyala" copyNoteId: "Kimlik notunu kopyala" +copyFileId: "Dosya ID'sini kopyala" +copyFolderId: "Klasör ID'sini kopyala" +copyProfileUrl: "Profil URL'sini kopyala" searchUser: "Kullanıcıları ara" reply: "yanıt" loadMore: "Devamını yükle" showMore: "Devamını yükle" +showLess: "Kapat" +youGotNewFollower: "seni takip etti" +receiveFollowRequest: "Takip isteği alındı" +followRequestAccepted: "Takip isteği kabul edildi" +mention: "Bahset" +mentions: "Bahsetmeler" +directNotes: "Kişisel mesajlar" +importAndExport: "İçeri/Dışarı aktar" +import: "İçeri aktar" +export: "Dışa aktar" +files: "Dosyalar" +download: "İndir" +driveFileDeleteConfirm: "\"{name}\" dosyası silinsin mi? Dosya kullanıldığı tüm notlardan kaybolacaktır." +unfollowConfirm: "{name} takipten çıkarılsın mı?" +exportRequested: "Dışa aktarım talep ettiniz. Bu biraz zaman alabilir. İşlem bitince Sürücünüze eklenecektir." +importRequested: "Dışa aktarım talep ettiniz. Bu işlem biraz zaman alabilir." lists: "Listeler" noLists: "Liste yok" note: "not" @@ -64,6 +87,16 @@ followsYou: "seni takip ediyor" createList: "Liste oluştur" manageLists: "Yönetici Listeleri" error: "hata" +somethingHappened: "Bir hata oluştu" +retry: "Tekrar dene" +pageLoadError: "Sayfa yüklenemedi." +pageLoadErrorDescription: "Bu genelde ağ veya tarayıcı ön belleği hatalarından olur. Lütfen ön belleği temizlemeyi veya birkaç dakika beklemeyi ve sayfayı yenilemeyi deneyin." +serverIsDead: "Sunucu yanıt vermiyor. Birkaç dakika sonra tekrar deneyin." +youShouldUpgradeClient: "Sayfayı görüntülemek için yenileyin." +enterListName: "Liste ismi" +privacy: "Gizlilik" +makeFollowManuallyApprove: "Takip istekleri elle onaylansın" +defaultNoteVisibility: "Varsayılan görünürlük" follow: "takipçi" followRequest: "Takip isteği" followRequests: "Takip istekleri" @@ -76,9 +109,24 @@ renoted: "yeniden adlandırılmış" cantRenote: "Ayrılamama" cantReRenote: "not alabilirmiyim" quote: "alıntı" +inChannelRenote: "Kanal içi Renote" +inChannelQuote: "Kanal içi Alıntı" pinnedNote: "Sabitlenen" pinned: "Sabitlenmiş" you: "sen" +clickToShow: "Görüntülemek için tıkla" +sensitive: "Hassas içerik" +add: "Ekle" +reaction: "Tepkiler" +reactions: "Tepkiler" +reactionSetting: "Palette görünecek tepkiler" +reactionSettingDescription2: "Sıralamak için sürükleyin, silmek için tıklayın, eklemek için \"+\" tuşuna tıklayın." +rememberNoteVisibility: "Görünürlük ayarlarını hatırla" +attachCancel: "Eki sil" +markAsSensitive: "Hassas içerik olarak işaretle" +unmarkAsSensitive: "Hassas içerik işaretini kaldır" +enterFileName: "Dosya ismini gir" +mute: "Gizle" unmute: "sesi aç" renoteMute: "sesi kapat" renoteUnmute: "sesi açmayı iptal et" @@ -88,46 +136,280 @@ suspend: "askıya al" unsuspend: "askıya alma" blockConfirm: "Onayı engelle" unblockConfirm: "engellemeyi kaldır onayla" +suspendConfirm: "Hesap askıya alınsın mı?" +unsuspendConfirm: "Hesap askıdan kaldırılsın mı" +selectList: "Bir liste seç" +editList: "Listeyi düzenle" selectChannel: "Kanal seç" +selectAntenna: "Bir anten seç" +editAntenna: "Anteni düzenle" +selectWidget: "Araç seç" +editWidgets: "Araçları düzenle" +editWidgetsExit: "Tamam" +customEmojis: "Özel Emoji" +emoji: "Emoji" +emojis: "Emoji" +emojiName: "Emoji adı" +emojiUrl: "Emoji URL'si" +addEmoji: "Emoji ekle" +settingGuide: "Önerilen ayarlar" +cacheRemoteFiles: "Uzak dosyalar ön belleğe alınsın" +cacheRemoteFilesDescription: "Bu ayar açık olduğunda diğer sitelerin dosyaları doğrudan uzak sunucudan yüklenecektir. Bu ayarı kapatmak depolama kullanımını azaltacak ama küçük resimler oluşturulmadığından trafiği arttıracaktır." +cacheRemoteSensitiveFiles: "Hassas uzak dosyalar ön belleğe alınsın" +cacheRemoteSensitiveFilesDescription: "Bu ayar kapalı olduğunda hassas uzak dosyalar ön belleğe alınmadan doğrudan uzak sunucudan yüklenecektir." flagAsBot: "Bot olarak işaretle" +flagAsBotDescription: "Bu seçeneği hesap bir program tarafından kontrol ediliyorsa işaretleyin. Bu, diğer geliştiricilerin sonsuz etkileşim zincirleri oluşturmasını engellemeye yardımcı olur ve Misskey'in iç sisteminin hesaba bir bot gibi davranmasını sağlar." +flagAsCat: "Kedi hesabı" +flagAsCatDescription: "Kedi hesabı" +flagShowTimelineReplies: "Zaman akışında notlara gelen cevapları göster" +flagShowTimelineRepliesDescription: "Açık olduğu durumda, zaman akışında kullanıcıların başkalarına verdiği cevaplar gözükür." +autoAcceptFollowed: "Takip edilen hesapların takip isteklerini kabul et" +addAccount: "Hesap ekle" +reloadAccountsList: "Hesap listesini güncelle" +loginFailed: "Giriş başarısız oldu" +showOnRemote: "Uzak sunucuda görüntüle" +general: "Genel" +wallpaper: "Duvar kağıdı" +setWallpaper: "Duvar kağıdını ayarla" +removeWallpaper: "Duvar kağıdını sil" +searchWith: "Arama: {q}" +youHaveNoLists: "Hiç listeniz yok" +followConfirm: "{name} takip edilsin mi?" +proxyAccount: "Vekil hesabı" +proxyAccountDescription: "Proxy hesabı, belirli koşullar altında kullanıcılar için uzaktan takipçi işlevi gören bir hesaptır. Örneğin, bir kullanıcı listeye bir uzak kullanıcı eklediğinde, o kullanıcıyı takip eden yerel bir kullanıcı yoksa uzak kullanıcının etkinliği örneğe teslim edilmeyecektir, dolayısıyla bunun yerine proxy hesabı takip edilecektir." +host: "Sağlayıcı" +selectUser: "Kullanıcı seç" +recipient: "Kime" +annotation: "Açıklamalar" +federation: "Federasyon" instances: "Sunucu" +registeredAt: "Katılma tarihi" +latestRequestReceivedAt: "Alınan son talep" +latestStatus: "En son durum" +storageUsage: "Depolama kullanımı" +charts: "Çizelgeler" +perHour: "Saatlik" +perDay: "Günlük" +stopActivityDelivery: "Durum güncellemelerini gönderme" +blockThisInstance: "Bu sunucuyu engelle" +operations: "İşlemler" +software: "Yazılımlar" +version: "Sürüm" +metadata: "Meta Verileri" +withNFiles: "{n} tane dosya" +monitor: "Monitör" +jobQueue: "İşlem sırası" +cpuAndMemory: "İşlemci ve Hafıza" +network: "Ağ" +disk: "Disk" +instanceInfo: "Sunucu Bilgisi" +statistics: "İstatistikler" +clearQueue: "Sırayı temizle" +clearQueueConfirmTitle: "Sıra silinsin mi?" +clearQueueConfirmText: "Sırada kalan hiçbir şey iletilmeyecek. Genelde bu işlem gerekli değildir." +clearCachedFiles: "Ön belleği temizle" +clearCachedFilesConfirm: "Ön belleğe alınmış tüm uzak sunucu dosyaları silinsin mi?" +blockedInstances: "Engellenen sunucular" +blockedInstancesDescription: "Engellemek istediğiniz sunucuların alan adlarını satır sonlarıyla ayırarak yazın. Yazılan sunucular bu sunucuyla iletişime geçemeyecek." +muteAndBlock: "Susturma ve Engelleme" +mutedUsers: "Susturulan kullanıcılar" +blockedUsers: "Engellenen kullanıcılar" +noUsers: "Kullanıcı yok" +editProfile: "Profili düzenle" +noteDeleteConfirm: "Bu notu silmek istediğinizden emin misiniz?" +pinLimitExceeded: "Daha fazla not sabitlenemez" +intro: "Misskey yüklemesi tamamlandı! Lütfen yönetici hesabını oluşturun." +done: "Tamamlandı" +preview: "Önizleme" +default: "Varsayılan" +defaultValueIs: "Varsayılan: {value}" +noCustomEmojis: "Emoji bulunamadı" +noJobs: "Hiç işlem yok" +federating: "Federe ediliyor" +blocked: "Engellenmiş" +suspended: "Askıya alınmış" +all: "Tümü" +subscribing: "Abonelik" +publishing: "Paylaşım" +notResponding: "Cevap yok" +instanceFollowing: "Sunucuda takip edenler" +instanceFollowers: "Sunucu takipçileri" +instanceUsers: "Sunucu kullanıcıları" +changePassword: "Şifreyi değiştir" +security: "Güvenlik" +retypedNotMatch: "Girişler uyuşmuyor." +currentPassword: "Geçerli şifre" +newPassword: "Yeni şifre" +newPasswordRetype: "Yeni şifre (tekrar)" +attachFile: "Dosya ekle" +more: "Daha!" +featured: "Öne Çıkan" +usernameOrUserId: "Kullanıcı adı veya ID'si" +noSuchUser: "Kullanıcı bulunamadı" +lookup: "Sorgu" +announcements: "Duyurular" +imageUrl: "Görsel URL'si" remove: "Sil" +removed: "Silindi" +removeAreYouSure: "\"{x}\" silmek istediğinizden emin misiniz?" +deleteAreYouSure: "\"{x}\" silmek istediğinizden emin misiniz?" +resetAreYouSure: "Sıfırlansın mı?" +saved: "Kaydedildi" +messaging: "Mesajlar" +upload: "Yükle" +keepOriginalUploading: "Orijinal görseli koru" +keepOriginalUploadingDescription: "Orijinal olarak yüklenen görüntüyü olduğu gibi kaydeder. Kapatılırsa, yükleme sırasında web'de görüntülenecek bir sürüm oluşturulur." +fromUrl: "Bağlantıdan" +uploadFromUrl: "Bağlantıdan yükle" +uploadFromUrlDescription: "Yüklemek istediğiniz dosyanın bağlantısı" +uploadFromUrlRequested: "Yükleme talep edildi" +uploadFromUrlMayTakeTime: "Yüklemenin tamamlanması biraz süre alabilir." +explore: "Keşfet" +messageRead: "Okundu" +noMoreHistory: "Bundan öncesi yok" +startMessaging: "Yeni bir sohbet başlat" +nUsersRead: "{n} kişi okudu" +agreeTo: "Kabul Ediyorum: {0}" +agree: "Kabul Et" +agreeBelow: "Aşağıdakileri kabul ederim" +basicNotesBeforeCreateAccount: "Önemli notlar" +termsOfService: "Şartlar ve Koşullar" +start: "Başla" +home: "Ana sayfa" +remoteUserCaution: "Bu kullanıcı bir uzak sunucudan olduğu için alınan bilgiler tam olmayabilir." +activity: "Etkinlik" +images: "Görseller" +image: "Görseller" +birthday: "Doğum günü" +yearsOld: "{age} yaşında" +registeredDate: "Kayıt tarihi" +location: "Konum" +theme: "Temalar" +themeForLightMode: "Aydınlık Tema" +themeForDarkMode: "Karanlık Tema" +light: "Aydınlık" +dark: "Karanlık" +lightThemes: "Aydınlık Temalar" +darkThemes: "Karanlık Temalar" +syncDeviceDarkMode: "Sistem Koyu Modu ile senkronize et" +drive: "Sürücü" +fileName: "Dosya adı" +selectFile: "Dosya seç" +selectFiles: "Dosya seç" +selectFolder: "Klasör seç" +selectFolders: "Klasör seç" +renameFile: "Dosyayı yeniden adlandır" +folderName: "Klasör adı" +createFolder: "Klasör oluştur" +renameFolder: "Klasörü Yeniden Adlandır" +deleteFolder: "Klasörü sil" +addFile: "Dosya ekle" +emptyDrive: "Sürücü boş" +hasChildFilesOrFolders: "Klasör boş olmadığından silinemiyor" +doNothing: "Bir şey yapma" +reloadConfirm: "Zaman akışı yenilensin mi?" +maintainerName: "Yönetici ismi" +monthX: "{month} ay" +enableRegistration: "Kayıtlara izin ver" pinnedNotes: "Sabitlenen" +manageAntennas: "Anten ayarları" userList: "Listeler" +resetPassword: "Şifre sıfırlama" +noMessagesYet: "Şimdilik mesaj yok" +details: "Detaylar" +deck: "Güverte" +smtpHost: "Sağlayıcı" smtpUser: "Kullanıcı Adı" smtpPass: "Şifre" +notificationSetting: "Bildirim ayarları" +noCrawleDescription: "Arama motorlarından profilinde, notlarında, sayfalarında vb. dolaşılmamasını ve dizine eklememesini talep et." +clearCache: "Ön belleği temizle" +onlineUsersCount: "{n} kullanıcı çevrim içi" user: "Kullanıcı" +global: "Küresel" +squareAvatars: "Kare avatarlar" searchByGoogle: "Arama" +file: "Dosyalar" +pushNotification: "Push bildirimleri" +subscribePushNotification: "Push bildirimlerini etkinleştir" +unsubscribePushNotification: "Push bildirimlerini kapat" +pushNotificationAlreadySubscribed: "Push bildirimleri zaten açık" +pushNotificationNotSupported: "Push bildirimleri sunucu veya tarayıcı tarafından desteklenmiyor" +noRole: "Rol bulunamadı" +color: "Renk" +addMemo: "Kısa not ekle" +_accountDelete: + started: "Silme işlemi başlatıldı" +_email: + _follow: + title: "seni takip etti" _theme: + color: "Renk" keys: + mention: "Bahset" renote: "vazgeçme" _sfx: note: "notlar" notification: "Bildirim" + chat: "Mesajlar" +_2fa: + renewTOTPCancel: "Hayır, teşekkürler" +_permissions: + "read:blocks": "Engellenen hesapları gör" + "write:blocks": "Engellenen hesap listesini düzenle" _widgets: profile: "Profil" + instanceInfo: "Sunucu Bilgisi" notifications: "Bildirim" timeline: "Zaman çizelgesi" + calendar: "Takvim" + clock: "Saat" + activity: "Etkinlik" + federation: "Federasyon" + jobQueue: "İşlem sırası" + _userList: + chooseList: "Bir liste seç" _cw: show: "Devamını yükle" +_poll: + vote: "Oy kullan" _visibility: + publicDescription: "Herkese açık" + home: "Ana sayfa" followers: "takipçi" _profile: username: "Kullanıcı Adı" _exportOrImport: followingList: "takipçi" + muteList: "Gizle" blockingList: "engelle" userLists: "Listeler" +_charts: + federation: "Federasyon" +_timelines: + home: "Ana sayfa" + global: "Küresel" +_pages: + blocks: + image: "Görseller" _notification: + youWereFollowed: "seni takip etti" + unreadAntennaNote: "{name} anteni" _types: follow: "takipçi" + mention: "Bahset" renote: "vazgeçme" quote: "alıntı" + reaction: "Tepkiler" + receiveFollowRequest: "Takip isteği alındı" + followRequestAccepted: "Takip isteği kabul edildi" _actions: reply: "yanıt" renote: "vazgeçme" _deck: + configureColumn: "Sütun seçenekleri" _columns: notifications: "Bildirim" tl: "Zaman çizelgesi" list: "Listeler" + mentions: "Bahsetmeler" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 7cf450213..ee34d9159 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -49,11 +49,15 @@ delete: "删除" deleteAndEdit: "删除并编辑" deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应、转发和回复也将被删除。" addToList: "添加至列表" +addToAntenna: "添加到天线" sendMessage: "发送" copyRSS: "复制RSS" copyUsername: "复制用户名" copyUserId: "复制用户 ID" copyNoteId: "复制帖子 ID" +copyFileId: "复制文件ID" +copyFolderId: "复制文件夹ID" +copyProfileUrl: "复制配置文件URL" searchUser: "搜索用户" reply: "回复" loadMore: "查看更多" @@ -313,6 +317,7 @@ copyUrl: "复制链接" rename: "重命名" avatar: "头像" banner: "横幅" +displayOfSensitiveMedia: "显示敏感媒体" whenServerDisconnected: "与服务器连接中断时" disconnectedFromServer: "已和服务器断开连接" reload: "重新加载" @@ -1066,6 +1071,7 @@ installed: "已安装" branding: "品牌" enableServerMachineStats: "公开服务器硬件统计信息" enableIdenticonGeneration: "启用生成用户 Identicon" +turnOffToImprovePerformance: "关闭该选项可以提高性能。" _initialAccountSetting: accountCreated: "账户创建完成了!" letsStartAccountSetup: "来进行帐户的初始设置吧。" @@ -1153,53 +1159,53 @@ _achievements: flavor: "真的有那么多可以写的东西吗?" _login3: title: "初学者 I" - description: "连续登录 3 天" + description: "累计登录 3 天" flavor: "今天开始我就是 Misskist!" _login7: title: "初学者 II" - description: "连续登录 7 天" + description: "累计登录 7 天" flavor: "您开始习惯了吗?" _login15: title: "初学者 III" - description: "连续登录 15 天" + description: "累计登录 15 天" _login30: title: "Misskist Ⅰ" - description: "连续登录 30 天" + description: "累计登录 30 天" _login60: title: "Misskist Ⅱ" - description: "连续登录 60 天" + description: "累计登录 60 天" _login100: title: "Misskist Ⅲ" - description: "总登入 100 天" + description: "累计登入 100 天" flavor: "那个用户,是 Misskist 喔" _login200: title: "定期联系Ⅰ" - description: "总登录天数 200 天" + description: "累计登录 200 天" _login300: title: "定期联系Ⅱ" - description: "总登录天数 300 天" + description: "累计登录 300 天" _login400: title: "定期联系Ⅲ" - description: "总登录天数 400 天" + description: "累计登录 400 天" _login500: title: "老熟人Ⅰ" - description: "总登录天数 500 天" + description: "累计登录 500 天" flavor: "诸君,我喜欢贴文" _login600: title: "老熟人Ⅱ" - description: "总登录天数 600 天" + description: "累计登录 600 天" _login700: title: "老熟人Ⅲ" - description: "总登录天数 700 天" + description: "累计登录 700 天" _login800: title: "帖子大师 Ⅰ" - description: "总登录天数 800 天" + description: "累计登录 800 天" _login900: title: "帖子大师 Ⅱ" - description: "总登录天数 900 天" + description: "累计登录 900 天" _login1000: title: "帖子大师 Ⅲ" - description: "总登录天数 1000 天" + description: "累计登录 1000 天" flavor: "感谢您使用 Misskey!" _noteClipped1: title: "忍不住要收藏到便签" @@ -1438,6 +1444,7 @@ _ad: back: "返回" reduceFrequencyOfThisAd: "减少此广告的频率" hide: "不显示" + timezoneinfo: "星期几是由服务器的时区所指定的。" _forgotPassword: enterEmail: "请输入您设置的电子邮箱地址,密码重置链接将发送至该邮箱上。" ifNoEmail: "如果您没有设置电子邮件地址,请联系管理员。" @@ -1489,6 +1496,10 @@ _aboutMisskey: donate: "赞助 Misskey" morePatrons: "还有很多其它的人也在支持我们,非常感谢🥰" patrons: "支持者" +_displayOfSensitiveMedia: + respect: "隐藏敏感媒体" + ignore: "显示敏感媒体" + force: "隐藏所有内容" _instanceTicker: none: "不显示" remote: "仅远程用户" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 2a8dc42b9..5c057bd24 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1,7 +1,7 @@ --- _lang_: "繁體中文" -headlineMisskey: "貼文連繫網路" -introMisskey: "歡迎! Misskey是一個開放原始碼且去中心化的社群網路。\n透過「貼文」分享周邊新鮮事,並告訴其他人您的想法!📡\n透過「反應」功能,對大家的貼文表達情感!👍\n一起來探索這個新的世界吧!🚀" +headlineMisskey: "貼文連繫網絡" +introMisskey: "歡迎! Misskey是一個開源且去中心化的社群網絡。\n通過「貼文」分享周邊新鮮事,並告訴其他人您的想法!📡\n透過「情感」功能,對大家的貼文表達情感!👍\n一起來探索這個新的世界吧!🚀" poweredByMisskeyDescription: "{name}是使用開放原始碼平台Misskey的服務之一(稱為 Misskey 伺服器)。\n" monthAndDay: "{month}月 {day}日" search: "搜尋" @@ -49,13 +49,15 @@ delete: "刪除" deleteAndEdit: "刪除並編輯" deleteAndEditConfirm: "要刪除並再次編輯嗎?此貼文的所有反應、轉發和回覆也將會消失。" addToList: "加入至清單" +addToAntenna: "新增至天線" sendMessage: "發送訊息" copyRSS: "複製RSS" copyUsername: "複製使用者名稱" -copyUserId: "複製使用者ID" -copyNoteId: "複製貼文ID" +copyUserId: "複製使用者 ID" +copyNoteId: "複製貼文 ID" copyFileId: "複製檔案ID" copyFolderId: "複製資料夾ID" +copyProfileUrl: "複製個人資料網址" searchUser: "搜尋使用者" reply: "回覆" loadMore: "載入更多" @@ -74,8 +76,8 @@ files: "檔案" download: "下載" driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。\n" unfollowConfirm: "確定要取消追隨{name}嗎?" -exportRequested: "已請求匯出。這可能會花一點時間。結束後檔案將會被放到雲端裡。" -importRequested: "已請求匯入。這可能會花一點時間" +exportRequested: "已請求匯出。這可能會花一點時間。匯出的檔案將會被放到雲端裡。" +importRequested: "已請求匯入。這可能會花一點時間。" lists: "清單" noLists: "你沒有任何清單" note: "貼文" @@ -89,9 +91,9 @@ error: "錯誤" somethingHappened: "發生錯誤" retry: "重試" pageLoadError: "載入頁面失敗" -pageLoadErrorDescription: "這通常是因為網路錯誤或是瀏覽器快取殘留的原因。請先清除瀏覽器快取,稍後再重試" +pageLoadErrorDescription: "這通常是網路錯誤或瀏覽器快取殘留而引起的。請先清除瀏覽器快取,稍後再重試。" serverIsDead: "伺服器沒有回應。請稍等片刻再試。" -youShouldUpgradeClient: "請重新載入以使用新版本的客戶端顯示此頁面" +youShouldUpgradeClient: "請重新載入以使用新版客戶端顯示此頁面。" enterListName: "輸入清單名稱" privacy: "隱私" makeFollowManuallyApprove: "手動審核追隨請求" @@ -113,13 +115,13 @@ inChannelQuote: "在頻道內引用" pinnedNote: "已置頂的貼文" pinned: "置頂" you: "您" -clickToShow: "按一下以顯示" +clickToShow: "點擊查看" sensitive: "敏感內容" add: "新增" reaction: "反應" reactions: "反應" reactionSetting: "在選擇器中顯示反應" -reactionSettingDescription2: "拖動以重新列序,點擊以刪除,按下 + 添加。" +reactionSettingDescription2: "拖動以交換,點擊以刪除,按下「+」以新增。" rememberNoteVisibility: "記住貼文可見性" attachCancel: "移除附件" markAsSensitive: "標記為敏感內容" @@ -154,8 +156,10 @@ addEmoji: "加入表情符號" settingGuide: "推薦設定" cacheRemoteFiles: "快取遠端檔案" cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外連接數據。" +cacheRemoteSensitiveFiles: "快取遠端的敏感檔案" +cacheRemoteSensitiveFilesDescription: "若停用這個設定,則不會快取遠端的敏感檔案,而是直接連結。" flagAsBot: "此使用者是機器人" -flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Misskey內部系統將本帳戶識別為機器人" +flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Misskey內部系統將本帳戶識別為機器人。" flagAsCat: "喵~~~~~~~~~~~~~~!!!!!!!!!!!!" flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示" flagShowTimelineReplies: "在時間軸上顯示貼文的回覆" @@ -350,7 +354,7 @@ invite: "邀請" driveCapacityPerLocalAccount: "每個本地用戶的雲端空間大小" driveCapacityPerRemoteAccount: "每個非本地用戶的雲端空間大小" inMb: "以Mbps為單位" -iconUrl: "圖標URL" +iconUrl: "圖標URL (例如 favicon)" bannerUrl: "橫幅圖片URL" backgroundImageUrl: "背景圖片的來源網址 " basicInfo: "基本資訊" @@ -410,7 +414,7 @@ totp: "驗證應用程式" totpDescription: "以驗證應用程式輸入一次性密碼" moderator: "審查員" moderation: "審查" -nUsersMentioned: "提到了{n}" +nUsersMentioned: "被提及到 {n} 次" securityKeyAndPasskey: "安全金鑰・Passkey" securityKey: "安全金鑰" lastUsed: "上次使用" @@ -503,7 +507,7 @@ showFeaturedNotesInTimeline: "在時間軸上顯示熱門推薦" objectStorage: "Object Storage (物件儲存)" useObjectStorage: "使用Object Storage" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理,请指定其URL,例如S3:“https://.s3.amazonaws.com”,GCS:“https://storage.googleapis.com/”" +objectStorageBaseUrlDesc: "引用時的URL。如果您使用的是CDN或反向代理,請指定其URL,例如S3:'https://.s3.amazonaws.com'、GCS:'https://storage.googleapis.com/'。" objectStorageBucket: "儲存空間(Bucket)" objectStorageBucketDesc: "請指定您正在使用的服務的存儲桶名稱。 " objectStoragePrefix: "前綴" @@ -592,7 +596,7 @@ plugins: "外掛" preferencesBackups: "備份設定檔" deck: "多欄模式" undeck: "取消多欄模式" -useBlurEffectForModal: "在模態框使用模糊效果" +useBlurEffectForModal: "在對話框使用模糊效果" useFullReactionPicker: "使用全尺寸的反應選擇器" width: "寬度" height: "高度" @@ -667,7 +671,7 @@ instanceTicker: "貼文的實例來源" waitingFor: "等待{x}" random: "隨機" system: "系統" -switchUi: "切換界面" +switchUi: "切換介面" desktop: "桌面" clip: "摘錄" createNew: "新建" @@ -813,7 +817,7 @@ emailNotConfiguredWarning: "沒有設定電子郵件地址" ratio: "%" previewNoteText: "預覽文本" customCss: "自定義 CSS" -customCssWarn: "這個設定必須由具備相關知識的人員操作,不當的設定可能导致客戶端無法正常使用。" +customCssWarn: "這個設定必須由具備相關知識的人員操作,不當的設定可能導致客戶端無法正常使用。" global: "全域" squareAvatars: "頭像以方形顯示" sent: "發送" @@ -1034,8 +1038,8 @@ rightTop: "右上" leftBottom: "左下" rightBottom: "右下" stackAxis: "堆疊方向" -vertical: "縱向" -horizontal: "側向" +vertical: "直向" +horizontal: "橫向" position: "位置" serverRules: "伺服器規則" pleaseConfirmBelowBeforeSignup: "在本伺服器註冊之前,請確認下列事項。" @@ -1070,6 +1074,23 @@ branding: "品牌宣傳" enableServerMachineStats: "公布伺服器的機器資訊" enableIdenticonGeneration: "啟用每個使用者的Identicon" turnOffToImprovePerformance: "關閉時會提高性能。" +createInviteCode: "建立邀請碼" +createWithOptions: "使用選項建立" +createCount: "建立數" +inviteCodeCreated: "已建立邀請碼" +inviteLimitExceeded: "可建立的邀請碼已達上限。" +createLimitRemaining: "可建立的邀請碼:剩餘 {limit} 個" +inviteLimitResetCycle: "可以在 {time} 內建立最多 {limit} 個邀請碼。" +expirationDate: "有效日期" +noExpirationDate: "不設有效日期" +inviteCodeUsedAt: "使用邀請碼的日期和時間" +registeredUserUsingInviteCode: "用了邀請碼的使用者" +waitingForMailAuth: "等待電子郵件認證" +inviteCodeCreator: "建立了邀請碼的使用者" +usedAt: "使用的日期和時間" +unused: "未使用" +used: "已使用" +expired: "過期" _initialAccountSetting: accountCreated: "帳戶已建立完成!" letsStartAccountSetup: "來進行帳戶的初始設定吧。" @@ -1380,6 +1401,9 @@ _role: ltlAvailable: "瀏覽本地時間軸" canPublicNote: "允許公開貼文" canInvite: "發行實例邀請碼" + inviteLimit: "可建立邀請碼的數量" + inviteLimitCycle: "邀請碼的發放間隔" + inviteExpirationTime: "邀請碼的有效日期" canManageCustomEmojis: "管理自訂表情符號" driveCapacity: "雲端硬碟容量" alwaysMarkNsfw: "總是將檔案標記為NSFW" @@ -1519,8 +1543,8 @@ _channel: nameAndDescription: "名稱與說明" nameOnly: "僅名稱" _menuDisplay: - sideFull: "側向" - sideIcon: "側向(圖示)" + sideFull: "橫向" + sideIcon: "橫向(圖示)" top: "頂部" hide: "隱藏" _wordMute: @@ -1637,7 +1661,7 @@ _time: day: "日" _timelineTutorial: title: "Misskey的使用方法" - step1_1: "這個畫面是「時間軸」。發布到{name}的「貼文」按照時間順序顯示。" + step1_1: "這個畫面是「時間軸」。發布到{name}的「貼文」會按照時間順序顯示。" step1_2: "時間軸有多種類型,例如在「首頁時間軸」中流動的是您追蹤的人的貼文;而在「本地時間軸」流動的是{name}全體的貼文。" step2_1: "試試看,發布個貼文吧!按畫面上鉛筆圖示的按鈕開啟表格。" step2_2: "初次貼文的內容,建議包括自我介紹以及「開始使用{name}」。" From ad5fd626c75c54fdddc2cdb8c979fe87c4a84f91 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Jul 2023 14:46:41 +0900 Subject: [PATCH 006/120] fix of #11293 --- .../src/queue/processors/ExportNotesProcessorService.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts index 107c8e4ce..94c81a3cf 100644 --- a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts +++ b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts @@ -11,11 +11,11 @@ import { createTemp } from '@/misc/create-temp.js'; import type { Poll } from '@/models/entities/Poll.js'; import type { Note } from '@/models/entities/Note.js'; import { bindThis } from '@/decorators.js'; +import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; +import { Packed } from '@/misc/json-schema.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type * as Bull from 'bullmq'; import type { DbJobDataWithUser } from '../types.js'; -import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; -import { Packed } from '@/misc/json-schema.js'; @Injectable() export class ExportNotesProcessorService { @@ -130,7 +130,7 @@ export class ExportNotesProcessorService { } } -function serialize(note: Note, poll: Poll | null = null, files: Map['id'], Packed<'DriveFile'>>): Record { +function serialize(note: Note, poll: Poll | null = null, files: Packed<'DriveFile'>[]): Record { return { id: note.id, text: note.text, From df5480668d52e2fcf6ac03b4df22e5e00d258322 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Jul 2023 14:46:55 +0900 Subject: [PATCH 007/120] 13.14.0-beta.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ce2616614..7788ca655 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "13.14.0-beta.3", + "version": "13.14.0-beta.4", "codename": "nasubi", "repository": { "type": "git", From be595ebd628fcdce93fc8e55a6fc7f2796c41c16 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 17 Jul 2023 08:11:17 +0900 Subject: [PATCH 008/120] =?UTF-8?q?enhance(client):=20Deck=E3=81=A7?= =?UTF-8?q?=E9=9D=9E=E3=83=AB=E3=83=BC=E3=83=88=E3=83=9A=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=81=AB=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=97=E3=81=9F?= =?UTF-8?q?=E9=9A=9B=E3=81=AB=E7=B0=A1=E6=98=93UI=E3=81=A7=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=97=E3=81=AA=E3=81=84=E8=A8=AD=E5=AE=9A=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + locales/index.d.ts | 1 + locales/ja-JP.yml | 1 + packages/frontend/src/boot/main-boot.ts | 3 ++- packages/frontend/src/pages/settings/deck.vue | 3 +++ packages/frontend/src/ui/deck/deck-store.ts | 4 ++++ 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66fa58919..8a57b5ee1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ - フォローやお気に入り登録をしていないチャンネルを開く時は概要ページを開くように - 画面ビューワをタップした場合、マウスクリックと同様に画像ビューワを閉じるように - オフライン時の画面にリロードボタンを追加 +- Deckで非ルートページにアクセスした際に簡易UIで表示しない設定を追加 - Fix: サーバーメトリクスが90度傾いている - Fix: 非ログイン時にクレデンシャルが必要なページに行くとエラーが出る問題を修正 - Fix: sparkle内にリンクを入れるとクリック不能になる問題の修正 diff --git a/locales/index.d.ts b/locales/index.d.ts index 082cde078..66b24890f 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2135,6 +2135,7 @@ export interface Locale { "introduction": string; "introduction2": string; "widgetsIntroduction": string; + "useSimpleUiForNonRootPages": string; "_columns": { "main": string; "widgets": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index ceff2a7cf..5f728e0e8 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2050,6 +2050,7 @@ _deck: introduction: "カラムを組み合わせて自分だけのインターフェイスを作りましょう!" introduction2: "画面の右にある + を押して、いつでもカラムを追加できます。" widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選択してウィジェットを追加してください" + useSimpleUiForNonRootPages: "非ルートページは簡易UIで表示" _columns: main: "メイン" diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts index d2db5e98b..0a351cd6e 100644 --- a/packages/frontend/src/boot/main-boot.ts +++ b/packages/frontend/src/boot/main-boot.ts @@ -13,10 +13,11 @@ import { miLocalStorage } from '@/local-storage'; import { claimAchievement, claimedAchievements } from '@/scripts/achievements'; import { mainRouter } from '@/router'; import { initializeSw } from '@/scripts/initialize-sw'; +import { deckStore } from '@/ui/deck/deck-store'; export async function mainBoot() { const { isClientUpdated } = await common(() => createApp( - new URLSearchParams(window.location.search).has('zen') || (ui === 'deck' && location.pathname !== '/') ? defineAsyncComponent(() => import('@/ui/zen.vue')) : + new URLSearchParams(window.location.search).has('zen') || (ui === 'deck' && deckStore.state.useSimpleUiForNonRootPages && location.pathname !== '/') ? defineAsyncComponent(() => import('@/ui/zen.vue')) : !$i ? defineAsyncComponent(() => import('@/ui/visitor.vue')) : ui === 'deck' ? defineAsyncComponent(() => import('@/ui/deck.vue')) : ui === 'classic' ? defineAsyncComponent(() => import('@/ui/classic.vue')) : diff --git a/packages/frontend/src/pages/settings/deck.vue b/packages/frontend/src/pages/settings/deck.vue index bc0179b3a..481959fd0 100644 --- a/packages/frontend/src/pages/settings/deck.vue +++ b/packages/frontend/src/pages/settings/deck.vue @@ -1,5 +1,7 @@