From 00b47e16736f8b472f20dab8def30fb22d54c8be Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 5 Jun 2023 21:49:47 +0300 Subject: [PATCH 01/43] fix regex misinterpreting tag name in badly formed HTML, prevent rich content from ever using dangerous tags --- src/components/rich_content/rich_content.jsx | 4 +++- src/services/html_converter/utility.service.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx index 7881e365c..47ef517b5 100644 --- a/src/components/rich_content/rich_content.jsx +++ b/src/components/rich_content/rich_content.jsx @@ -149,7 +149,9 @@ export default { // Handle tag nodes if (Array.isArray(item)) { const [opener, children, closer] = item - const Tag = getTagName(opener) + let Tag = getTagName(opener) + if (Tag === 'script') Tag = 'js-exploit' + if (Tag === 'style') Tag = 'css-exploit' const fullAttrs = getAttrs(opener, () => true) const attrs = getAttrs(opener) const previouslyMentions = currentMentions !== null diff --git a/src/services/html_converter/utility.service.js b/src/services/html_converter/utility.service.js index f10429718..a13013537 100644 --- a/src/services/html_converter/utility.service.js +++ b/src/services/html_converter/utility.service.js @@ -5,7 +5,7 @@ * @return {String} - tagname, i.e. "div" */ export const getTagName = (tag) => { - const result = /(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(tag) + const result = /(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gis.exec(tag) return result && (result[1] || result[2]) } From 10e28f6c1df4432947fa5686c6cecde9ffe8582d Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 5 Jun 2023 21:54:17 +0300 Subject: [PATCH 02/43] changelog --- changelog.d/parser.fix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/parser.fix diff --git a/changelog.d/parser.fix b/changelog.d/parser.fix new file mode 100644 index 000000000..13bac0bf6 --- /dev/null +++ b/changelog.d/parser.fix @@ -0,0 +1 @@ +fix regex issue in HTML parser/renderer From 0109724a5f16e58a78ab4c09c955c44982368c6f Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 5 Jun 2023 21:57:36 +0300 Subject: [PATCH 03/43] case insensititvy --- src/components/rich_content/rich_content.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx index 47ef517b5..b16ab242e 100644 --- a/src/components/rich_content/rich_content.jsx +++ b/src/components/rich_content/rich_content.jsx @@ -150,8 +150,8 @@ export default { if (Array.isArray(item)) { const [opener, children, closer] = item let Tag = getTagName(opener) - if (Tag === 'script') Tag = 'js-exploit' - if (Tag === 'style') Tag = 'css-exploit' + if (Tag.toLowerCase() === 'script') Tag = 'js-exploit' + if (Tag.toLowerCase() === 'style') Tag = 'css-exploit' const fullAttrs = getAttrs(opener, () => true) const attrs = getAttrs(opener) const previouslyMentions = currentMentions !== null From 8ba22a248118dfd5869adc9da881794e464e564c Mon Sep 17 00:00:00 2001 From: tusooa Date: Fri, 9 Jun 2023 16:11:15 -0400 Subject: [PATCH 04/43] Fix react button not working if reaction accounts are not loaded --- changelog.d/react-button.fix | 1 + src/components/emoji_reactions/emoji_reactions.js | 7 ++++--- src/modules/statuses.js | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 changelog.d/react-button.fix diff --git a/changelog.d/react-button.fix b/changelog.d/react-button.fix new file mode 100644 index 000000000..c2222fb60 --- /dev/null +++ b/changelog.d/react-button.fix @@ -0,0 +1 @@ +Fix react button not working if reaction accounts are not loaded diff --git a/src/components/emoji_reactions/emoji_reactions.js b/src/components/emoji_reactions/emoji_reactions.js index b4936424b..4d5c6c5a3 100644 --- a/src/components/emoji_reactions/emoji_reactions.js +++ b/src/components/emoji_reactions/emoji_reactions.js @@ -57,10 +57,10 @@ const EmojiReactions = { reactedWith (emoji) { return this.status.emoji_reactions.find(r => r.name === emoji).me }, - fetchEmojiReactionsByIfMissing () { + async fetchEmojiReactionsByIfMissing () { const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts) if (hasNoAccounts) { - this.$store.dispatch('fetchEmojiReactionsBy', this.status.id) + return await this.$store.dispatch('fetchEmojiReactionsBy', this.status.id) } }, reactWith (emoji) { @@ -69,9 +69,10 @@ const EmojiReactions = { unreact (emoji) { this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji }) }, - emojiOnClick (emoji, event) { + async emojiOnClick (emoji, event) { if (!this.loggedIn) return + await this.fetchEmojiReactionsByIfMissing() if (this.reactedWith(emoji)) { this.unreact(emoji) } else { diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 93a4a957c..ed21a7309 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -757,7 +757,7 @@ const statuses = { ) }, fetchEmojiReactionsBy ({ rootState, commit }, id) { - rootState.api.backendInteractor.fetchEmojiReactions({ id }).then( + return rootState.api.backendInteractor.fetchEmojiReactions({ id }).then( emojiReactions => { commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser }) } From 4e6af5bd234d9ce9be04286d7645d81a3cbc910b Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 13 Jun 2023 14:00:20 -0400 Subject: [PATCH 05/43] Fix openSettingsModalTab --- changelog.d/edit-profile-button.fix | 1 + src/modules/interface.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog.d/edit-profile-button.fix diff --git a/changelog.d/edit-profile-button.fix b/changelog.d/edit-profile-button.fix new file mode 100644 index 000000000..5a92765cd --- /dev/null +++ b/changelog.d/edit-profile-button.fix @@ -0,0 +1 @@ +Fix openSettingsModalTab so that it correctly opens Settings modal instead of Admin modal diff --git a/src/modules/interface.js b/src/modules/interface.js index 2d012f1ba..f8d62d87c 100644 --- a/src/modules/interface.js +++ b/src/modules/interface.js @@ -112,7 +112,7 @@ const interfaceMod = { }, openSettingsModalTab ({ commit }, value) { commit('setSettingsModalTargetTab', value) - commit('openSettingsModal') + commit('openSettingsModal', 'user') }, pushGlobalNotice ( { commit, dispatch, state }, From db1643b94e47262bf5648d53d9a21f2d5cec7f00 Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 13 Jun 2023 15:06:46 -0400 Subject: [PATCH 06/43] Keep aspect ratio of custom emoji reaction in notification --- changelog.d/custom-emoji-notif-width.fix | 1 + src/components/notifications/notifications.scss | 1 + 2 files changed, 2 insertions(+) create mode 100644 changelog.d/custom-emoji-notif-width.fix diff --git a/changelog.d/custom-emoji-notif-width.fix b/changelog.d/custom-emoji-notif-width.fix new file mode 100644 index 000000000..da118f6ba --- /dev/null +++ b/changelog.d/custom-emoji-notif-width.fix @@ -0,0 +1 @@ +Keep aspect ratio of custom emoji reaction in notification diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss index 61f7317e2..5749e4302 100644 --- a/src/components/notifications/notifications.scss +++ b/src/components/notifications/notifications.scss @@ -136,6 +136,7 @@ .emoji-reaction-emoji-image { vertical-align: middle; + object-fit: contain; } .notification-details { From 66a881db4f2f7805042f60a78cfa22b821c7236b Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Sat, 27 May 2023 16:26:06 +0000 Subject: [PATCH 07/43] Translated using Weblate (Arabic) Currently translated at 41.8% (441 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 64 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 93367865e..8fed47fc2 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -219,7 +219,7 @@ "limited_availability": "غير متوفر على متصفحك", "links": "الروابط", "lock_account_description": "", - "loop_video": "كرر الفيديوهات", + "loop_video": "كرر تشغيل الفيديوهات", "loop_video_silent_only": "كرر فيديوهات بدون صوت (مثل gif في ماستودون)", "name": "الاسم", "name_bio": "الاسم والسيرة الذاتية", @@ -369,7 +369,9 @@ "notification_visibility_polls": "انتهاء استطلاعات اشتركت بها", "file_export_import": { "restore_settings": "استرجع الإعدادات من ملف", - "backup_restore": "نسخ احتياطي للإعدادات" + "backup_restore": "نسخ احتياطي للإعدادات", + "backup_settings_theme": "احفظ النسخ الاحتياطي للإعدادات والسمة في ملف", + "backup_settings": "احفظ النسخ الاحتياطي للإعدادات في ملف" }, "mutes_tab": "مكتومون", "no_mutes": "لا يوجد مكتومون", @@ -378,7 +380,63 @@ "hide_follows_count_description": "لا تظهر عدد المتابَعين", "hide_muted_threads": "اخف النقاشات المكتومة", "no_blocks": "لا يوجد محجوبون", - "show_admin_badge": "أظهر شارة \"مدير\" في ملفي التعريفي" + "show_admin_badge": "أظهر شارة \"مدير\" في ملفي التعريفي", + "conversation_display_tree": "تفرعات", + "notification_setting_block_from_strangers": "احجب اشعارات من لا تتابعهم", + "style": { + "switcher": { + "clear_all": "امسح الكل", + "keep_as_is": "أبقه على حاله", + "use_snapshot": "النسخة القديمة", + "use_source": "النسخة الحديثة", + "load_theme": "حمِّل سمة", + "help": { + "upgraded_from_v2": "PleromaFE حُدث، وعليه ربما ستجد اختلافًا في السمة." + }, + "keep_color": "أبق الألوان", + "keep_opacity": "أبق الشفافية", + "keep_fonts": "أبق الخطوط", + "keep_shadows": "أبق الظلال" + }, + "common": { + "color": "اللون", + "opacity": "الشافافية" + } + }, + "notification_setting_privacy": "الخصوصية", + "notification_mutes": "لوقف استلام إشعارات من مستخدم، اكتمه.", + "search_user_to_mute": "جِد من تريد كتمه", + "subject_input_always_show": "أظهر حقل الموضوع دائمًا", + "subject_line_noop": "لا تنسخ", + "auto_update": "أظهر المنشورات الجديدة تلقائيًا", + "mention_link_display": "اعرض روابط الذكر", + "more_settings": "إعدادات إضافية", + "user_mutes": "مستخدمون", + "mention_link_show_avatar": "أظهر الصورة الرمزية للمستخدم بجانب الرابط", + "preview": "معاينة", + "show_scrollbars": "أظهر شريط التمرير للعمود الجانبي", + "third_column_mode": "أظهر محتوى العمود الثالث إذا توفرت المساحة", + "third_column_mode_none": "لا تظهر العمود الثالث", + "third_column_mode_notifications": "عمود الإشعارات", + "columns": "الأعمدة", + "column_sizes": "حجم الأعمدة", + "column_sizes_sidebar": "الشريط الجانبي", + "type_domains_to_mute": "جِد نطاقًا لكتمه", + "upload_a_photo": "ارفع صورة", + "virtual_scrolling": "حسن تصيير الخيط الزمني", + "user_popover_avatar_action_zoom": "كبر صورة الرمزية", + "fun": "ممتع", + "column_sizes_content": "المحتوى", + "column_sizes_notifs": "الإشعارات", + "search_user_to_block": "جِد من تريد حجبه", + "url": "رابط", + "subject_line_behavior": "انسخ الموضوع عند الرد", + "conversation_display": "اسلوب عرض المحادثة", + "mention_link_show_avatar_quick": "أظهر الصورة الرمزية للمستخدم عند ذكره", + "user_popover_avatar_action_open": "افتح الملف الشخصي", + "notifications": "الإشعارات", + "notification_setting_filters": "مرشح", + "notification_setting_hide_notification_contents": "اخف محتوى الإشعارات ومرسليها" }, "timeline": { "collapse": "", From 5d63833c99cbfd7b2075c1cfbdc880acd119ece9 Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Tue, 30 May 2023 13:51:58 +0000 Subject: [PATCH 08/43] Translated using Weblate (Arabic) Currently translated at 45.9% (484 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 64 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 8fed47fc2..da86b8319 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -401,6 +401,59 @@ "common": { "color": "اللون", "opacity": "الشافافية" + }, + "advanced_colors": { + "top_bar": "شريط العلوي", + "icons": "أيقونات", + "poll": "منحنى الاستطلاع", + "_tab_label": "متقدم", + "badge_notification": "الإشعارات", + "selectedPost": "منشور محدد", + "selectedMenu": "عنصر محدد من قائمة", + "highlight": "عناصر بارزة", + "disabled": "معطل", + "tabs": "ألسنة", + "chat": { + "border": "حدود" + }, + "alert_warning": "تحذير", + "alert_error": "خطأ", + "buttons": "أزرار", + "borders": "الحدود", + "wallpaper": "خلفية" + }, + "shadows": { + "components": { + "button": "زر", + "input": "حقل إدخال", + "topBar": "شريط العلوي", + "avatar": "الصورة الرمزية لمستخدم (في الملف الشخصي)", + "avatarStatus": "الصورة الرمزية لمستخدم (في منشور)" + }, + "_tab_label": "الظلال والإضاءة", + "shadow_id": "ظل #{value}", + "blur": "طمس", + "spread": "توزع" + }, + "fonts": { + "size": "حجم (بالبكسل)", + "_tab_label": "خطوط", + "components": { + "interface": "واجهة", + "input": "حقول الإدخال", + "post": "نص المنشور" + }, + "family": "اسم الخط", + "custom": "مخصص" + }, + "preview": { + "header": "معاينة", + "content": "محتوى", + "header_faint": "جيد", + "mono": "محتوى", + "button": "زر", + "input": "وصلت للتوّ إلى لوس أنجلس.", + "fine_print": "طالع {0} لتعلم ما لا ينفعك!" } }, "notification_setting_privacy": "الخصوصية", @@ -425,7 +478,7 @@ "upload_a_photo": "ارفع صورة", "virtual_scrolling": "حسن تصيير الخيط الزمني", "user_popover_avatar_action_zoom": "كبر صورة الرمزية", - "fun": "ممتع", + "fun": "متعة", "column_sizes_content": "المحتوى", "column_sizes_notifs": "الإشعارات", "search_user_to_block": "جِد من تريد حجبه", @@ -436,7 +489,14 @@ "user_popover_avatar_action_open": "افتح الملف الشخصي", "notifications": "الإشعارات", "notification_setting_filters": "مرشح", - "notification_setting_hide_notification_contents": "اخف محتوى الإشعارات ومرسليها" + "notification_setting_hide_notification_contents": "اخف محتوى الإشعارات ومرسليها", + "mention_link_display_short": "اسماء قصيرة (مثل {'@'}foo)", + "mention_link_display_full_for_remote": "اسماء كاملة للمستخدمين من الخوادم البعاد ({'@'}foo{'@'}example.org)", + "version": { + "title": "نسخة" + }, + "commit_value": "احفظ", + "mention_link_display_full": "اسماء كاملة دايمًا (مثل {'@'}foo{'@'}example.org)" }, "timeline": { "collapse": "", From 20621c71dc6aec8a10eb4943656122ffa6c9e9b2 Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Thu, 1 Jun 2023 18:23:22 +0000 Subject: [PATCH 09/43] Translated using Weblate (Arabic) Currently translated at 46.0% (485 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index da86b8319..416626ba6 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -645,5 +645,10 @@ "remote_user_resolver": { "searching_for": "يبحث عن", "error": "لم يُعثر عليه." + }, + "admin_dash": { + "nodb": { + "documentation": "التوثيق" + } } } From 6ff477e124debb3d4e136df0fa9da2fc2ea8fe38 Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Sat, 3 Jun 2023 10:21:09 +0000 Subject: [PATCH 10/43] Translated using Weblate (Arabic) Currently translated at 55.3% (583 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 140 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 133 insertions(+), 7 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 416626ba6..ed84da531 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -453,7 +453,9 @@ "mono": "محتوى", "button": "زر", "input": "وصلت للتوّ إلى لوس أنجلس.", - "fine_print": "طالع {0} لتعلم ما لا ينفعك!" + "fine_print": "طالع {0} لتعلّم ما لا ينفعك!", + "error": "مثال خطأ", + "faint_link": "دليل للمساعدة" } }, "notification_setting_privacy": "الخصوصية", @@ -499,14 +501,18 @@ "mention_link_display_full": "اسماء كاملة دايمًا (مثل {'@'}foo{'@'}example.org)" }, "timeline": { - "collapse": "", + "collapse": "طوي", "conversation": "محادثة", "error_fetching": "خطأ أثناء جلب التحديثات", - "load_older": "تحميل المنشورات القديمة", + "load_older": "حمل الحالات القديمة", "no_retweet_hint": "", - "repeated": "", - "show_new": "عرض الجديد", - "up_to_date": "تم تحديثه" + "repeated": "شورِك", + "show_new": "اعرض الجديد", + "up_to_date": "محدث", + "no_more_statuses": "لا مزيد من الحالات", + "error": "خطأ أثناء جلب الخيط الزمني: {0}", + "reload": "أعد التحميل", + "no_statuses": "لا توجد حالات" }, "user_card": { "approve": "قبول", @@ -648,7 +654,127 @@ }, "admin_dash": { "nodb": { - "documentation": "التوثيق" + "documentation": "التوثيق", + "text2": "اغلب خيارات الضبط لن تتوفر." + }, + "window_title": "الإدارة", + "wip_notice": "لوحة المدير لا زالت تجريبية ولا تزال قيد للتطوير، {adminFeLink}.", + "old_ui_link": "واجهة المدير القديمة هنا", + "commit_all": "احفظ الكل", + "tabs": { + "instance": "مثيل" + }, + "instance": { + "instance": "معلومات المثيل", + "registrations": "تسجيل المستخدمين", + "restrict": { + "header": "قيّد وصول الزواروالمجهولين", + "timelines": "وصول الخط الزمني", + "profiles": "وصول الملفات الشخصية", + "activities": "وصول النشاطات/الحالات" + } + }, + "limits": { + "posts": "حد النشر", + "uploads": "حد المرفقات" + }, + "frontend": { + "repository": "رابط المستودع", + "versions": "النسخ المتوفرة", + "build_url": "رابط البناء", + "reinstall": "أعد التثبيت", + "is_default": "(افتراضي)", + "is_default_custom": "(افتراضي، النسخة: {version})", + "install": "ثبّت", + "install_version": "ثبت النسخة {version}", + "more_install_options": "مزيد من خيارات التثبيت", + "set_default": "عينه كافتراضي", + "set_default_version": "عين النسخة {version} كافتراضية", + "available_frontends": "متوفر للتثبيت" + }, + "temp_overrides": { + ":pleroma": { + ":instance": { + ":public": { + "label": "المثيل علني", + "description": "تعطيله سيحصر الوصول إلى API للمستخدمين الوالجين، ولن يقدر الزوار على الوصول إلى الخط الزمني العلني والموحد." + }, + ":description_limit": { + "description": "حد عدد المحارف لوصف المرفق" + }, + ":background_image": { + "label": "صورة الخلفية" + } + } + } } + }, + "time": { + "in_past": "منذ {0}", + "unit": { + "hours_short": "{0}سا", + "minutes": "{0} دقيقة | {0} دقائق", + "days_short": "{0}ي", + "minutes_short": "{0}د", + "hours": "{0} ساعة | {0} ساعات", + "weeks": "{0} أسبوع | {0} أسابيع", + "months_short": "{0}ش", + "seconds": "{0} ثانية | {0} ثانية", + "seconds_short": "{0}ثا", + "years": "{0} سنة | {0} سنوات", + "years_short": "{0}سن", + "days": "{0} يوم | {0} أيام", + "months": "{0} شهر | {0} أشهر", + "weeks_short": "{0}أس" + }, + "in_future": "في {0}", + "now": "هذه اللحظة", + "now_short": "الآن" + }, + "status": { + "delete_confirm": "أتريد حذف هذه الحالة؟", + "delete_error": "خطأ أثناء حذف الحالة: {0}", + "plus_more": "+{number} أخرون", + "many_attachments": "المنشور يحوي {number} مرفقات", + "repeat_confirm": "أتريد مشاركة هذه الحالة؟", + "edited_at": "(آخر تعديل {time})", + "repeat_confirm_title": "تأكيد المشاركة", + "repeat_confirm_accept_button": "شارك", + "repeat_confirm_cancel_button": "لا تشارك", + "edit": "حرر الحالة", + "pin": "ثبته على الملف الشخصي", + "unpin": "ألغ تثبيته من الملف الشخصي", + "delete_confirm_cancel_button": "أبقه", + "replies_list": "الردود:", + "status_deleted": "هذا المنشور محذوف", + "favorites": "المفضلة", + "pinned": "مثبت", + "hide_full_subject": "اخف كامل الموضوع", + "repeats": "المشاركات", + "delete": "اخذف الحالة", + "delete_confirm_title": "تأكيد الحذف", + "reply_to": "رد على", + "mentions": "الذكر", + "unmute_conversation": "ارفع الكتم عن المحادثة", + "status_unavailable": "الحالة غير متوفرة", + "copy_link": "انسخ رابط الحالة", + "show_full_subject": "أظهر الموضوع كاملا", + "show_content": "أظهر المحتوى", + "hide_content": "اخف المحتوى", + "you": "(أنت)", + "show_all_attachments": "أظهر كل المرفقات", + "hide_attachment": "اخف المرفق", + "move_down": "حرك المرفق لليمين", + "thread_hide": "اخف هذا النقاش", + "thread_muted": "النقاش مكتوم", + "delete_confirm_accept_button": "احذف", + "mute_conversation": "اكتم المحادثة", + "external_source": "مصدر خارجي", + "expand": "وسّع", + "collapse_attachments": "طوي المرفقات", + "remove_attachment": "أزل المرفق", + "move_up": "حرك المرفق لليسار", + "open_gallery": "افتح المعرض", + "thread_show": "أظهر هذا النقاس" } } From 148e8a71700c3daa0e02a28214e0e0ce93b78290 Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Tue, 6 Jun 2023 20:26:16 +0000 Subject: [PATCH 11/43] Translated using Weblate (Arabic) Currently translated at 57.8% (610 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index ed84da531..4c2137154 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -517,10 +517,10 @@ "user_card": { "approve": "قبول", "block": "حظر", - "blocked": "تم حظره!", + "blocked": "حُظر!", "deny": "رفض", - "follow": "اتبع", - "followees": "", + "follow": "تابع", + "followees": "متابَعون", "followers": "مُتابِعون", "following": "", "follows_you": "يتابعك!", @@ -528,7 +528,33 @@ "muted": "تم كتمه", "per_day": "في اليوم", "remote_follow": "مُتابَعة عن بُعد", - "statuses": "المنشورات" + "statuses": "المنشورات", + "approve_confirm_accept_button": "قبول", + "approve_confirm_title": "تأكيد القبول", + "edit_profile": "عدّل الملف الشخصي", + "deny_confirm": "أتريد رفض طلب المتابعة من {user} ؟", + "unfollow_confirm_title": "تأكيد إلغاء المتابعة", + "follow_progress": "الطلب جارٍ…", + "hidden": "مخفي", + "its_you": "أنت!", + "approve_confirm_cancel_button": "لا تقبل", + "approve_confirm": "أتريد قبول طلب المتابعة من {user} ؟", + "block_confirm_title": "تأكيد الحظر", + "block_confirm_accept_button": "حظر", + "block_confirm_cancel_button": "لا تحظر", + "deactivated": "عُطل", + "deny_confirm_title": "تأكيد الرفض", + "deny_confirm_accept_button": "رفض", + "deny_confirm_cancel_button": "لا ترفض", + "favorites": "المفضلة", + "follow_cancel": "ألغ الطلب", + "follow_sent": "أُرسل الطلب!", + "follow_unfollow": "ألغ المتابعة", + "unfollow_confirm": "أتريد إلغاء متابعة {user}؟", + "unfollow_confirm_accept_button": "ألغ المتابعة", + "unfollow_confirm_cancel_button": "لا تلغ المتابعة", + "media": "وسائط", + "block_confirm": "أتريد حظر {user} ؟" }, "user_profile": { "timeline_title": "الخيط الزمني للمستخدم" From a7705ade8881a20be3a1d5fc4de5e65564c1f2bb Mon Sep 17 00:00:00 2001 From: baloo toumi Date: Fri, 9 Jun 2023 12:10:55 +0000 Subject: [PATCH 12/43] Translated using Weblate (Arabic) Currently translated at 58.3% (615 of 1054 strings) Translation: Pleroma/Pleroma-FE Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma-fe/ar/ --- src/i18n/ar.json | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 4c2137154..f2a62ff96 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -524,8 +524,8 @@ "followers": "مُتابِعون", "following": "", "follows_you": "يتابعك!", - "mute": "كتم", - "muted": "تم كتمه", + "mute": "اكتم", + "muted": "مكتوم", "per_day": "في اليوم", "remote_follow": "مُتابَعة عن بُعد", "statuses": "المنشورات", @@ -554,7 +554,13 @@ "unfollow_confirm_accept_button": "ألغ المتابعة", "unfollow_confirm_cancel_button": "لا تلغ المتابعة", "media": "وسائط", - "block_confirm": "أتريد حظر {user} ؟" + "block_confirm": "أتريد حظر {user} ؟", + "mute_confirm_cancel_button": "لا تكتم", + "mute_confirm_title": "تأكيد الكتم", + "message": "راسل", + "mute_confirm": "أتريد كتم {user}؟", + "mute_confirm_accept_button": "اكتم", + "mention": "أذكر" }, "user_profile": { "timeline_title": "الخيط الزمني للمستخدم" From 21093e573c90f943d7ab29542f3d57f50c4196df Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Tue, 20 Jun 2023 14:10:51 +0000 Subject: [PATCH 13/43] Main --- src/i18n/languages.js | 2 +- src/i18n/nan.json | 1253 +++++++++++++++++++++++++ src/services/locale/locale.service.js | 2 + 3 files changed, 1256 insertions(+), 1 deletion(-) create mode 100644 src/i18n/nan.json diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 250b3b1a9..1d14fe9c3 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -1,4 +1,3 @@ - const languages = [ 'ar', 'ca', @@ -18,6 +17,7 @@ const languages = [ 'ja', 'ja_easy', 'ko', + 'nan', 'nb', 'nl', 'oc', diff --git a/src/i18n/nan.json b/src/i18n/nan.json new file mode 100644 index 000000000..82e9f281f --- /dev/null +++ b/src/i18n/nan.json @@ -0,0 +1,1253 @@ +{ + "about": { + "mrf": { + "federation": "聯邦", + "keyword": { + "keyword_policies": "關鍵字政策", + "ftl_removal": "Tuì「知影 ê 網路」時間線除掉。", + "reject": "拒絕", + "replace": "取代", + "is_replaced_by": "→" + }, + "mrf_policies": "啟用 ê MRF 政策", + "mrf_policies_desc": "MRF 政策操作本站 ê 對外通信行為。以下ê政策啟用 ah:", + "simple": { + "simple_policies": "站臺特有 ê 政策", + "instance": "站", + "reason": "理由", + "not_applicable": "N/A", + "accept": "接受", + "accept_desc": "本站干焦接受下跤 ê 站 ê 短 phue:", + "reject": "拒絕", + "reject_desc": "本站 buē 接受 tuì 以下 ê 站 ê 短 phue:", + "quarantine": "隔離", + "quarantine_desc": "針對下跤 ê 站,本站干焦送出公開ê PO文:", + "ftl_removal": "Tuì「知影 ê 網路」時間線thâi掉", + "ftl_removal_desc": "本站buē 佇「知影 ê 網路」刊下跤 ê 站 ê PO文:", + "media_removal": "Thâi除媒體", + "media_removal_desc": "本站 kā 下跤 ê 站臺送 ê PO文 ê 媒體 lóng thâi 除:", + "media_nsfw": "媒體 lóng 標做「敏感內容」", + "media_nsfw_desc": "本站 kā 下跤 ê 站 ê 媒體,lóng 標做敏感內容:" + } + }, + "staff": "工作人員" + }, + "announcements": { + "page_header": "公告", + "title": "公告", + "mark_as_read_action": "標做有讀", + "post_form_header": "貼公告", + "post_placeholder": "佇 tsia 拍你 ê 公告……", + "post_action": "貼", + "post_error": "錯誤:{error}", + "close_error": "關", + "delete_action": "Thâi", + "start_time_prompt": "開始時間: ", + "end_time_prompt": "結束時間:", + "all_day_prompt": "Tse 是 kui 工 ê 事件", + "published_time_display": "公告佇 {time}", + "start_time_display": "有效 tuì:{time}", + "end_time_display": "中止佇:{time}", + "edit_action": "編輯", + "submit_edit_action": "送出", + "cancel_edit_action": "取消", + "inactive_message": "這个公告 tsit-má 無效力。" + }, + "shoutbox": { + "title": "留話枋" + }, + "domain_mute_card": { + "mute": "予恬去", + "mute_progress": "Teh 予恬……", + "unmute": "予有聲", + "unmute_progress": "Teh 予有聲……" + }, + "exporter": { + "export": "匯出", + "processing": "Teh 處理,較停仔指示你下載檔案……" + }, + "features_panel": { + "shout": "留話枋", + "pleroma_chat_messages": "Pleroma 開講", + "gopher": "Gopher", + "media_proxy": "媒體代理伺侯器", + "scope_options": "公開範圍選項", + "text_limit": "字數限制", + "title": "有效 ê 功能", + "who_to_follow": "啥儂通綴", + "upload_limit": "檔案 sài-suh 限制" + }, + "finder": { + "error_fetching_user": "Tshuē 用者 ê 時起錯誤", + "find_user": "Tshuē 用者" + }, + "general": { + "apply": "應用", + "submit": "送出", + "more": "Koh 較 tsē", + "loading": "Leh 載入……", + "generic_error": "起錯誤 ah", + "generic_error_message": "起錯誤:{0}", + "error_retry": "請 koh 試一 kái", + "retry": "Koh 試", + "optional": "非必要", + "show_more": "展示較 tsē", + "show_less": "展示較少", + "never_show_again": "Mài koh 展示", + "dismiss": "無視", + "cancel": "取消", + "disable": "無愛用", + "enable": "啟用", + "confirm": "確認", + "verify": "驗證", + "close": "關掉", + "undo": "復原", + "yes": "是", + "no": "毋是", + "peek": "先看 māi", + "scroll_to_top": "捲 kàu 頂懸", + "role": { + "admin": "行政員", + "moderator": "管理員" + }, + "unpin": "無愛 kā 釘", + "pin": "Kā釘起來", + "flash_content": "Ji̍h tsia,用 Ruffle(iáu teh 試驗,可能 buē 紡)看 Flash ê 內容。", + "flash_sepcurity": "注意 tse 可能有危險,因為 Flash 內容猶原是任意 ê 程式碼。", + "flash_fail": "載入 flash 內容失敗,詳細會當看控制臺。", + "scope_in_timeline": { + "direct": "私人 phue", + "private": "干焦 hōo 綴 lí ê 看", + "public": "公開佇公共時間線", + "unlisted": "無愛公開佇公共時間線" + } + }, + "image_cropper": { + "crop_picture": "裁相片", + "save": "儲存", + "save_without_cropping": "無裁就儲存", + "cancel": "取消" + }, + "importer": { + "submit": "送出", + "success": "匯入成功。", + "error": "佇匯入 ê 時起錯誤。" + }, + "login": { + "login": "登入", + "description": "用 OAuth 登入", + "logout": "登出", + "logout_confirm_title": "登出確認", + "logout_confirm": "Lí 敢真正 beh 登出?", + "logout_confirm_accept_button": "登出", + "logout_confirm_cancel_button": "mài 登出", + "password": "密碼", + "placeholder": "例:lain", + "register": "註冊", + "username": "用者 ê 名", + "hint": "登入,參與討論", + "authentication_code": "認證碼", + "enter_recovery_code": "輸入恢復碼", + "enter_two_factor_code": "輸入兩階段認證碼", + "recovery_code": "恢復碼", + "heading": { + "totp": "兩階段認證", + "recovery": "兩階段恢復" + } + }, + "media_modal": { + "previous": "頂一 ê", + "next": "後一个", + "counter": "{current} / {total}", + "hide": "關掉媒體瀏覽" + }, + "nav": { + "about": "有關……", + "administration": "管理", + "back": "轉去", + "friend_requests": "跟綴請求", + "mentions": "The̍h起", + "interactions": "互動", + "dms": "私人 phue", + "public_tl": "公共時間線", + "timeline": "時間線", + "home_timeline": "厝 ê 時間線", + "twkn": "知影 ê 網路", + "bookmarks": "冊籤", + "user_search": "Tshuē 用者", + "search": "tshuē", + "search_close": "關掉 tshiau-tshuē liâu", + "who_to_follow": "Siáng 會當綴?", + "preferences": "個人 ê 設定", + "timelines": "時間流", + "chats": "開講", + "lists": "列單", + "edit_nav_mobile": "自訂導覽條", + "edit_pinned": "編輯釘起來 ê 項目", + "edit_finish": "編輯 suah", + "mobile_sidebar": "切換行動版 ê 邊 á liâu", + "mobile_notifications": "拍開通知", + "mobile_notifications": "拍開通知(有無讀ê)", + "mobile_notifications_close": "關掉通知", + "announcements": "公告" + }, + "notifications": { + "broken_favorite": "狀態毋知影,leh tshiau-tshuē……", + "error": "佇取得通知 ê 時起錯誤:{0}", + "favorited_you": "kah 意 lí ê 狀態", + "followed_you": "綴 lí", + "follow_request": "想 beh 綴 lí", + "load_older": "載入 khah 早 ê 通知", + "notifications": "通知", + "read": "讀!", + "repeated_you": "轉送 lí ê 狀態", + "no_more_notifications": "無別 ê 通知", + "migrated_to": "移民到", + "reacted_with": "顯出{0} ê 反應", + "submitted_report": "送出檢舉", + "poll_ended": "投票結束" + }, + "polls": { + "add_poll": "開投票", + "add_option": "加選項", + "option": "選項", + "votes": "票", + "people_voted_count": "{count} 位有投", + "votes_count": "{count} 票", + "vote": "投票", + "type": "投票 ê 形式", + "single_choice": "孤選", + "multiple_choices": "Tsē 選", + "expiry": "投票期限", + "expires_in": "投票 tī {0} 以後結束", + "expired": "投票佇 {0} 以前結束", + "not_enough_options": "投票 ê 選項傷少。" + }, + "emoji": { + "stickers": "貼圖", + "emoji": "繪文字", + "keep_open": "Hōo 揀選仔開 leh", + "search_emoji": "Tshuē 繪文字", + "add_emoji": "插繪文字", + "custom": "定製 ê 繪文字", + "unpacked": "拍開 ê 繪文字", + "unicode": "Unicode 繪文字", + "unicode_groups": { + "activities": "活動", + "animals-and-nature": "動物 kap 自然", + "flags": "旗 á", + "food-and-drink": "食物 kap 飲料", + "objects": "物體", + "people-and-body": "Lâng kap 身軀", + "smileys-and-emotion": "笑面 kap 情緒", + "symbols": "符號", + "travel-and-places": "旅遊 kap 所在" + }, + "load_all_hint": "載入頭前 {saneAmount} ê 繪文字,規个攏載入效能可能 ē khah 食力。", + "load_all": "Kā {emojiAmount} ê 繪文字攏載入", + "regional_indicator": "地區指引 {letter}" + }, + "errors": { + "storage_unavailable": "Pleroma buē-tàng the̍h 著瀏覽器儲存 ê。Lí ê 登入狀態抑是局部設定 buē 儲存,mā 凡勢 tú 著意料外 ê 問題。拍開 cookie 看覓。" + }, + "interactions": { + "favs_repeats": "轉送 kap kah 意", + "follows": "最近綴 lí ê", + "emoji_reactions": "繪文字 ê 回應", + "reports": "檢舉", + "moves": "用者 ê 移民", + "load_older": "載入 koh khah 早 ê 互動" + }, + "post_status": { + "edit_status": "編輯狀態", + "new_status": "PO 新 ê 狀態", + "account_not_locked_warning": "Lín 口座毋是 {0} ê。見 nā 有 lâng 綴--lí,ē-tàng 看著 lí ê 限定跟綴者 ê PO 文。.", + "account_not_locked_warning_link": "鎖起來 ê 口座", + "attachments_sensitive": "Kā 附件標做敏感內容。", + "media_description": "媒體說明", + "content_type": { + "text/plain": "純 ê 文字", + "text/html": "HTML", + "text/markdown": "Markdown", + "text/bbcode": "BBCode" + }, + "content_type_selection": "貼 ê 形式", + "content_warning": "主旨(毋是必要)", + "default": "Tú 正 kàu 高雄 ah。", + "direct_warning_to_all": "Tsit ê PO 文通 hōo 逐 ê 提起 ê 用者看見。", + "direct_warning_to_first_only": "Tsit ê PO 文,kan-ta 短信 tú 開始提起 ê 用者,tsiah 通看見。", + "edit_remote_warning": "別 ê 站臺可能無支援編輯,無法度收著 PO 文上新 ê 版本。", + "edit_unsupported_warning": "Pleroma 無支持編輯 the̍h 起 hām 投票。", + "posting": "PO 文", + "post": "PO", + "preview": "Sing 看覓", + "preview_empty": "空 ê", + "empty_status_error": "無法度 PO 無檔案 koh 空 ê 狀態。", + "media_description_error": "更新媒體失敗,請 koh 試一 kái。", + "scope_notice": { + "public": "Tsit ê PO 文通予逐 ê 儂看著。", + "private": "Tsit ê PO 文 kan-ta 予綴 lí ê 看著。", + "unlisted": "Tsit ê PO 文 buē 公開 tī 公共時間線 kap 知影 ê 網路。" + }, + "scope_notice_dismiss": "關掉 tsit ê 通知", + "scope": { + "direct": "私人 phue - PO 文干焦予提起 ê 用者看著", + "private": "限定綴 ê 儂 - PO 文干焦予綴 lí ê 儂看著", + "public": "公開 - PO kàu 公開時間線", + "unlisted": "Mài 列出來 - Mài PO tī 公開時間線。" + } + }, + "registration": { + "bio_optional": "介紹(毋是必要)", + "email": "Email", + "email_optional": "Email(毋是必要)", + "fullname": "顯示 ê 名", + "password_confirm": "確認密碼", + "registration": "註冊", + "token": "邀請碼", + "captcha": "驗證碼", + "new_captcha": "Ji̍h 圖片,the̍h 新 ê 驗證碼", + "username_placeholder": "e.g. lain", + "fullname_placeholder": "e.g. 岩倉 Lain", + "bio_placeholder": "e.g.\nLí 好,我是 Lain。我是日本動畫 ê 角色,tuà tī 日本 ê 郊區。Lí 凡勢 bat tī Wired 知影我。", + "reason": "註冊 ê 理由", + "reason_placeholder": "本站靠人工審核註冊。\n介紹管理者 lí beh tī tsia 註冊 ê 理由。", + "register": "註冊", + "validations": { + "username_required": "著愛添", + "fullname_required": "著愛添", + "email_required": "著愛添", + "password_required": "著愛添", + "password_confirmation_required": "著愛添", + "password_confirmation_match": "密碼著相 kâng", + "birthday_required": "著愛添", + "birthday_min_age": "Buē-tàng tī {date} 以後" + }, + "email_language": "Lí想 beh 服侍器用 siánn 物語言寄批 hōo lí?", + "birthday": "生日", + "birthday_optional": "生日(毋是必要):" + }, + "remote_user_resolver": { + "remote_user_resolver": "別站用者 ê 解析器", + "searching_for": "Tshuē", + "error": "Tshuē無" + }, + "report": { + "reporter": "檢舉人:", + "reported_user": "Beh 檢舉 ê 用者:", + "reported_statuses": "Beh 檢舉 ê 狀態:", + "notes": "Notes:", + "state": "State:", + "state_open": "開 ê", + "state_closed": "關 ê", + "state_resolved": "解決了 ê" + }, + "selectable_list": { + "select_all": "攏總揀" + }, + "settings": { + "add_language": "加一 ê 備用 ê 語言", + "remove_language": "Ni 掉", + "primary_language": "主要語言:", + "fallback_language": "備用語言 {index}:", + "app_name": "App ê 名", + "expert_mode": "進階模式", + "save": "保存改變", + "security": "安全", + "setting_changed": "設定 kap 預先 ê 有 tsing 差", + "setting_server_side": "This setting is tied to your profile and affects all sessions and clients", + "enter_current_password_to_confirm": "Enter your current password to confirm your identity", + "post_look_feel": "Posts Look & Feel", + "mention_links": "Mention links", + "mfa": { + "otp": "OTP", + "setup_otp": "Setup OTP", + "wait_pre_setup_otp": "presetting OTP", + "confirm_and_enable": "Confirm & enable OTP", + "title": "Two-factor Authentication", + "generate_new_recovery_codes": "Generate new recovery codes", + "warning_of_generate_new_codes": "When you generate new recovery codes, your old codes won’t work anymore.", + "recovery_codes": "Recovery codes.", + "waiting_a_recovery_codes": "Receiving backup codes…", + "recovery_codes_warning": "Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.", + "authentication_methods": "Authentication methods", + "scan": { + "title": "Scan", + "desc": "Using your two-factor app, scan this QR code or enter text key:", + "secret_code": "Key" + }, + "verify": { + "desc": "To enable two-factor authentication, enter the code from your two-factor app:" + } + }, + "lists_navigation": "Show lists in navigation", + "allow_following_move": "Allow auto-follow when following account moves", + "attachmentRadius": "Attachments", + "attachments": "Attachments", + "avatar": "Avatar", + "avatarAltRadius": "Avatars (notifications)", + "avatarRadius": "Avatars", + "background": "Background", + "bio": "Bio", + "email_language": "Language for receiving emails from the server", + "block_export": "Block export", + "block_export_button": "Export your blocks to a csv file", + "block_import": "Block import", + "block_import_error": "Error importing blocks", + "blocks_imported": "Blocks imported! Processing them will take a while.", + "mute_export": "Mute export", + "mute_export_button": "Export your mutes to a csv file", + "mute_import": "Mute import", + "mute_import_error": "Error importing mutes", + "mutes_imported": "Mutes imported! Processing them will take a while.", + "import_mutes_from_a_csv_file": "Import mutes from a csv file", + "account_backup": "Account backup", + "account_backup_description": "This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.", + "account_backup_table_head": "Backup", + "download_backup": "Download", + "backup_not_ready": "This backup is not ready yet.", + "backup_running": "This backup is in progress, processed {number} record. | This backup is in progress, processed {number} records.", + "backup_failed": "This backup has failed.", + "remove_backup": "Remove", + "list_backups_error": "Error fetching backup list: {error}", + "add_backup": "Create a new backup", + "added_backup": "Added a new backup.", + "add_backup_error": "Error adding a new backup: {error}", + "blocks_tab": "Blocks", + "bot": "This is a bot account", + "btnRadius": "Buttons", + "cBlue": "Blue (Reply, follow)", + "cGreen": "Green (Retweet)", + "cOrange": "Orange (Favorite)", + "cRed": "Red (Cancel)", + "change_email": "Change email", + "change_email_error": "There was an issue changing your email.", + "changed_email": "Email changed successfully!", + "change_password": "Change password", + "change_password_error": "There was an issue changing your password.", + "changed_password": "Password changed successfully!", + "chatMessageRadius": "Chat message", + "collapse_subject": "Collapse posts with subjects", + "composing": "Composing", + "confirm_new_password": "Confirm new password", + "current_password": "Current password", + "confirm_dialogs": "Ask for confirmation when", + "confirm_dialogs_repeat": "repeating a status", + "confirm_dialogs_unfollow": "unfollowing a user", + "confirm_dialogs_block": "blocking a user", + "confirm_dialogs_mute": "muting a user", + "confirm_dialogs_delete": "deleting a status", + "confirm_dialogs_logout": "logging out", + "confirm_dialogs_approve_follow": "approving a follower", + "confirm_dialogs_deny_follow": "denying a follower", + "confirm_dialogs_remove_follower": "removing a follower", + "mutes_and_blocks": "Mutes and Blocks", + "data_import_export_tab": "Data import / export", + "default_vis": "Default visibility scope", + "delete_account": "Delete account", + "delete_account_description": "Permanently delete your data and deactivate your account.", + "delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.", + "delete_account_instructions": "Type your password in the input below to confirm account deletion.", + "account_alias": "Account aliases", + "account_alias_table_head": "Alias", + "list_aliases_error": "Error fetching aliases: {error}", + "hide_list_aliases_error_action": "Close", + "remove_alias": "Remove this alias", + "new_alias_target": "Add a new alias (e.g. {example})", + "added_alias": "Alias is added.", + "add_alias_error": "Error adding alias: {error}", + "move_account": "Move account", + "move_account_notes": "If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.", + "move_account_target": "Target account (e.g. {example})", + "moved_account": "Account is moved.", + "move_account_error": "Error moving account: {error}", + "discoverable": "Allow discovery of this account in search results and other services", + "domain_mutes": "Domains", + "avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.", + "pad_emoji": "Pad emoji with spaces when adding from picker", + "autocomplete_select_first": "Automatically select the first candidate when autocomplete results are available", + "emoji_reactions_on_timeline": "Show emoji reactions on timeline", + "emoji_reactions_scale": "Reactions scale factor", + "export_theme": "Save preset", + "filtering": "Filtering", + "wordfilter": "Wordfilter", + "filtering_explanation": "All statuses containing these words will be muted, one per line", + "word_filter_and_more": "Word filter and more...", + "follow_export": "Follow export", + "follow_export_button": "Export your follows to a csv file", + "follow_import": "Follow import", + "follow_import_error": "Error importing followers", + "follows_imported": "Follows imported! Processing them will take a while.", + "accent": "Accent", + "foreground": "Foreground", + "general": "General", + "hide_attachments_in_convo": "Hide attachments in conversations", + "hide_attachments_in_tl": "Hide attachments in timeline", + "hide_media_previews": "Hide media previews", + "hide_muted_posts": "Hide posts of muted users", + "mute_bot_posts": "Mute bot posts", + "hide_bot_indication": "Hide bot indication in posts", + "hide_all_muted_posts": "Hide muted posts", + "max_thumbnails": "Maximum amount of thumbnails per post (empty = no limit)", + "hide_isp": "Hide instance-specific panel", + "hide_shoutbox": "Hide instance shoutbox", + "right_sidebar": "Reverse order of columns", + "navbar_column_stretch": "Stretch navbar to columns width", + "always_show_post_button": "Always show floating New Post button", + "hide_wallpaper": "Hide instance wallpaper", + "preload_images": "Preload images", + "use_one_click_nsfw": "Open NSFW attachments with just one click", + "hide_post_stats": "Hide post statistics (e.g. the number of favorites)", + "hide_user_stats": "Hide user statistics (e.g. the number of followers)", + "hide_filtered_statuses": "Hide all filtered posts", + "hide_wordfiltered_statuses": "Hide word-filtered statuses", + "hide_muted_threads": "Hide muted threads", + "import_blocks_from_a_csv_file": "Import blocks from a csv file", + "import_followers_from_a_csv_file": "Import follows from a csv file", + "import_theme": "Load preset", + "inputRadius": "Input fields", + "checkboxRadius": "Checkboxes", + "instance_default": "(default: {value})", + "instance_default_simple": "(default)", + "interface": "Interface", + "interfaceLanguage": "Interface language", + "invalid_theme_imported": "The selected file is not a supported Pleroma theme. No changes to your theme were made.", + "limited_availability": "Unavailable in your browser", + "links": "Links", + "lock_account_description": "Restrict your account to approved followers only", + "loop_video": "Loop videos", + "loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")", + "mutes_tab": "Mutes", + "play_videos_in_modal": "Play videos in a popup frame", + "url": "URL", + "preview": "Preview", + "file_export_import": { + "backup_restore": "Settings backup", + "backup_settings": "Backup settings to file", + "backup_settings_theme": "Backup settings and theme to file", + "restore_settings": "Restore settings from file", + "errors": { + "invalid_file": "The selected file is not a supported Pleroma settings backup. No changes were made.", + "file_too_new": "Incompatile major version: {fileMajor}, this PleromaFE (settings ver {feMajor}) is too old to handle it", + "file_too_old": "Incompatile major version: {fileMajor}, file version is too old and not supported (min. set. ver. {feMajor})", + "file_slightly_new": "File minor version is different, some settings might not load" + } + }, + "profile_fields": { + "label": "Profile metadata", + "add_field": "Add field", + "name": "Label", + "value": "Content" + }, + "birthday": { + "label": "Birthday", + "show_birthday": "Show my birthday" + }, + "account_privacy": "Privacy", + "use_contain_fit": "Don't crop the attachment in thumbnails", + "name": "Name", + "name_bio": "Name & bio", + "new_email": "New email", + "new_password": "New password", + "posts": "Posts", + "user_profiles": "User Profiles", + "notification_visibility": "Types of notifications to show", + "notification_visibility_follows": "Follows", + "notification_visibility_likes": "Favorites", + "notification_visibility_mentions": "Mentions", + "notification_visibility_repeats": "Repeats", + "notification_visibility_moves": "User Migrates", + "notification_visibility_emoji_reactions": "Reactions", + "notification_visibility_polls": "Ends of polls you voted in", + "no_rich_text_description": "Strip rich text formatting from all posts", + "no_blocks": "No blocks", + "no_mutes": "No mutes", + "hide_favorites_description": "Don't show list of my favorites (people still get notified)", + "hide_follows_description": "Don't show who I'm following", + "hide_followers_description": "Don't show who's following me", + "hide_follows_count_description": "Don't show follow count", + "hide_followers_count_description": "Don't show follower count", + "show_admin_badge": "Show \"Admin\" badge in my profile", + "show_moderator_badge": "Show \"Moderator\" badge in my profile", + "nsfw_clickthrough": "Hide sensitive/NSFW media", + "oauth_tokens": "OAuth tokens", + "token": "Token", + "refresh_token": "Refresh token", + "valid_until": "Valid until", + "revoke_token": "Revoke", + "panelRadius": "Panels", + "pause_on_unfocused": "Pause when tab is not focused", + "presets": "Presets", + "profile_background": "Profile background", + "profile_banner": "Profile banner", + "profile_tab": "Profile", + "radii_help": "Set up interface edge rounding (in pixels)", + "replies_in_timeline": "Replies in timeline", + "reply_visibility_all": "Show all replies", + "reply_visibility_following": "Only show replies directed at me or users I'm following", + "reply_visibility_self": "Only show replies directed at me", + "reply_visibility_following_short": "Show replies to my follows", + "reply_visibility_self_short": "Show replies to self only", + "autohide_floating_post_button": "Automatically hide New Post button (mobile)", + "saving_err": "Error saving settings", + "saving_ok": "Settings saved", + "search_user_to_block": "Search whom you want to block", + "search_user_to_mute": "Search whom you want to mute", + "security_tab": "Security", + "scope_copy": "Copy scope when replying (DMs are always copied)", + "minimal_scopes_mode": "Minimize post scope selection options", + "set_new_avatar": "Set new avatar", + "set_new_profile_background": "Set new profile background", + "set_new_profile_banner": "Set new profile banner", + "reset_avatar": "Reset avatar", + "reset_profile_background": "Reset profile background", + "reset_profile_banner": "Reset profile banner", + "reset_avatar_confirm": "Do you really want to reset the avatar?", + "reset_banner_confirm": "Do you really want to reset the banner?", + "reset_background_confirm": "Do you really want to reset the background?", + "settings": "Settings", + "subject_input_always_show": "Always show subject field", + "subject_line_behavior": "Copy subject when replying", + "subject_line_email": "Like email: \"re: subject\"", + "subject_line_mastodon": "Like mastodon: copy as is", + "subject_line_noop": "Do not copy", + "conversation_display": "Conversation display style", + "conversation_display_tree": "Tree-style", + "conversation_display_tree_quick": "Tree view", + "disable_sticky_headers": "Don't stick column headers to top of the screen", + "show_scrollbars": "Show side column's scrollbars", + "third_column_mode": "When there's enough space, show third column containing", + "third_column_mode_none": "Don't show third column at all", + "third_column_mode_notifications": "Notifications column", + "third_column_mode_postform": "Main post form and navigation", + "columns": "Columns", + "column_sizes": "Column sizes", + "column_sizes_sidebar": "Sidebar", + "column_sizes_content": "Content", + "column_sizes_notifs": "Notifications", + "tree_advanced": "Allow more flexible navigation in tree view", + "tree_fade_ancestors": "Display ancestors of the current status in faint text", + "conversation_display_linear": "Linear-style", + "conversation_display_linear_quick": "Linear view", + "conversation_other_replies_button": "Show the \"other replies\" button", + "conversation_other_replies_button_below": "Below statuses", + "conversation_other_replies_button_inside": "Inside statuses", + "max_depth_in_thread": "Maximum number of levels in thread to display by default", + "post_status_content_type": "Post status content type", + "sensitive_by_default": "Mark posts as sensitive by default", + "stop_gifs": "Pause animated images until you hover on them", + "streaming": "Automatically show new posts when scrolled to the top", + "auto_update": "Show new posts automatically", + "user_mutes": "Users", + "useStreamingApi": "Receive posts and notifications real-time", + "use_websockets": "Use websockets (Realtime updates)", + "text": "Text", + "theme": "Theme", + "theme_help": "Use hex color codes (#rrggbb) to customize your color theme.", + "theme_help_v2_1": "You can also override certain component's colors and opacity by toggling the checkbox, use \"Clear all\" button to clear all overrides.", + "theme_help_v2_2": "Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.", + "tooltipRadius": "Tooltips/alerts", + "type_domains_to_mute": "Search domains to mute", + "upload_a_photo": "Upload a photo", + "user_settings": "User Settings", + "values": { + "false": "no", + "true": "yes" + }, + "virtual_scrolling": "Optimize timeline rendering", + "use_at_icon": "Display {'@'} symbol as an icon instead of text", + "mention_link_display": "Display mention links", + "mention_link_display_short": "always as short names (e.g. {'@'}foo)", + "mention_link_display_full_for_remote": "as full names only for remote users (e.g. {'@'}foo{'@'}example.org)", + "mention_link_display_full": "always as full names (e.g. {'@'}foo{'@'}example.org)", + "mention_link_use_tooltip": "Show user card when clicking mention links", + "mention_link_show_avatar": "Show user avatar beside the link", + "mention_link_show_avatar_quick": "Show user avatar next to mentions", + "mention_link_fade_domain": "Fade domains (e.g. {'@'}example.org in {'@'}foo{'@'}example.org)", + "mention_link_bolden_you": "Highlight mention of you when you are mentioned", + "user_popover_avatar_action": "Popover avatar click action", + "user_popover_avatar_action_zoom": "Zoom the avatar", + "user_popover_avatar_action_close": "Close the popover", + "user_popover_avatar_action_open": "Open profile", + "user_popover_avatar_overlay": "Show user popover over user avatar", + "fun": "Fun", + "greentext": "Meme arrows", + "show_yous": "Show (You)s", + "notifications": "Notifications", + "notification_setting_filters": "Filters", + "notification_setting_block_from_strangers": "Block notifications from users who you do not follow", + "notification_setting_privacy": "Privacy", + "notification_setting_hide_notification_contents": "Hide the sender and contents of push notifications", + "notification_mutes": "To stop receiving notifications from a specific user, use a mute.", + "notification_blocks": "Blocking a user stops all notifications as well as unsubscribes them.", + "enable_web_push_notifications": "Enable web push notifications", + "more_settings": "More settings", + "style": { + "switcher": { + "keep_color": "Keep colors", + "keep_shadows": "Keep shadows", + "keep_opacity": "Keep opacity", + "keep_roundness": "Keep roundness", + "keep_fonts": "Keep fonts", + "save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.", + "reset": "Reset", + "clear_all": "Clear all", + "clear_opacity": "Clear opacity", + "load_theme": "Load theme", + "keep_as_is": "Keep as is", + "use_snapshot": "Old version", + "use_source": "New version", + "help": { + "upgraded_from_v2": "PleromaFE has been upgraded, theme could look a little bit different than you remember.", + "v2_imported": "File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.", + "future_version_imported": "File you imported was made in newer version of FE.", + "older_version_imported": "File you imported was made in older version of FE.", + "snapshot_present": "Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.", + "snapshot_missing": "No theme snapshot was in the file so it could look different than originally envisioned.", + "fe_upgraded": "PleromaFE's theme engine upgraded after version update.", + "fe_downgraded": "PleromaFE's version rolled back.", + "migration_snapshot_ok": "Just to be safe, theme snapshot loaded. You can try loading theme data.", + "migration_napshot_gone": "For whatever reason snapshot was missing, some stuff could look different than you remember.", + "snapshot_source_mismatch": "Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version." + } + }, + "common": { + "color": "色彩", + "opacity": "無透明度", + "contrast": { + "hint": "Contrast ratio is {ratio}, it {level} {context}", + "level": { + "aa": "meets Level AA guideline (minimal)", + "aaa": "meets Level AAA guideline (recommended)", + "bad": "doesn't meet any accessibility guidelines" + }, + "context": { + "18pt": "for large (18pt+) text", + "text": "for text" + } + } + }, + "common_colors": { + "_tab_label": "Common", + "main": "Common colors", + "foreground_hint": "See \"Advanced\" tab for more detailed control", + "rgbo": "Icons, accents, badges" + }, + "advanced_colors": { + "_tab_label": "Advanced", + "alert": "Alert background", + "alert_error": "Error", + "alert_warning": "Warning", + "alert_neutral": "Neutral", + "post": "Posts/User bios", + "badge": "Badge background", + "popover": "Tooltips, menus, popovers", + "badge_notification": "Notification", + "panel_header": "Panel header", + "top_bar": "Top bar", + "borders": "Borders", + "buttons": "Buttons", + "inputs": "Input fields", + "faint_text": "Faded text", + "underlay": "Underlay", + "wallpaper": "Wallpaper", + "poll": "Poll graph", + "icons": "Icons", + "highlight": "Highlighted elements", + "pressed": "Pressed", + "selectedPost": "Selected post", + "selectedMenu": "Selected menu item", + "disabled": "Disabled", + "toggled": "Toggled", + "tabs": "Tabs", + "chat": { + "incoming": "Incoming", + "outgoing": "Outgoing", + "border": "Border" + } + }, + "radii": { + "_tab_label": "Roundness" + }, + "shadows": { + "_tab_label": "Shadow and lighting", + "component": "Component", + "override": "Override", + "shadow_id": "Shadow #{value}", + "blur": "Blur", + "spread": "Spread", + "inset": "Inset", + "hintV3": "For shadows you can also use the {0} notation to use other color slot.", + "filter_hint": { + "always_drop_shadow": "Warning, this shadow always uses {0} when browser supports it.", + "drop_shadow_syntax": "{0} does not support {1} parameter and {2} keyword.", + "avatar_inset": "Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.", + "spread_zero": "Shadows with spread > 0 will appear as if it was set to zero", + "inset_classic": "Inset shadows will be using {0}" + }, + "components": { + "panel": "Panel", + "panelHeader": "Panel header", + "topBar": "Top bar", + "avatar": "User avatar (in profile view)", + "avatarStatus": "User avatar (in post display)", + "popup": "Popups and tooltips", + "button": "Button", + "buttonHover": "Button (hover)", + "buttonPressed": "Button (pressed)", + "buttonPressedHover": "Button (pressed+hover)", + "input": "Input field" + } + }, + "fonts": { + "_tab_label": "Fonts", + "help": "Select font to use for elements of UI. For \"custom\" you have to enter exact font name as it appears in system.", + "components": { + "interface": "Interface", + "input": "Input fields", + "post": "Post text", + "postCode": "Monospaced text in a post (rich text)" + }, + "family": "Font name", + "size": "Size (in px)", + "weight": "Weight (boldness)", + "custom": "Custom" + }, + "preview": { + "header": "Preview", + "content": "Content", + "error": "Example error", + "button": "Button", + "text": "A bunch of more {0} and {1}", + "mono": "content", + "input": "Just landed in L.A.", + "faint_link": "helpful manual", + "fine_print": "Read our {0} to learn nothing useful!", + "header_faint": "This is fine", + "checkbox": "I have skimmed over terms and conditions", + "link": "a nice lil' link" + } + }, + "version": { + "title": "Version", + "backend_version": "Backend version", + "frontend_version": "Frontend version" + }, + "commit_value": "Save", + "commit_value_tooltip": "Value is not saved, press this button to commit your changes", + "reset_value": "Reset", + "reset_value_tooltip": "Reset draft", + "hard_reset_value": "Hard reset", + "hard_reset_value_tooltip": "Remove setting from storage, forcing use of default value" + }, + "admin_dash": { + "window_title": "Administration", + "wip_notice": "This admin dashboard is experimental and WIP, {adminFeLink}.", + "old_ui_link": "old admin UI available here", + "reset_all": "Reset all", + "commit_all": "Save all", + "tabs": { + "nodb": "No DB Config", + "instance": "Instance", + "limits": "Limits", + "frontends": "Front-ends" + }, + "nodb": { + "heading": "Database config is disabled", + "text": "You need to change backend config files so that {property} is set to {value}, see more in {documentation}.", + "documentation": "documentation", + "text2": "Most configuration options will be unavailable." + }, + "captcha": { + "native": "Native", + "kocaptcha": "KoCaptcha" + }, + "instance": { + "instance": "Instance information", + "registrations": "User sign-ups", + "captcha_header": "CAPTCHA", + "kocaptcha": "KoCaptcha settings", + "access": "Instance access", + "restrict": { + "header": "Restrict access for anonymous visitors", + "description": "Detailed setting for allowing/disallowing access to certain aspects of API. By default (indeterminate state) it will disallow if instance is not public, ticked checkbox means disallow access even if instance is public, unticked means allow access even if instance is private. Please note that unexpected behavior might happen if some settings are set, i.e. if profile access is disabled posts will show without profile information.", + "timelines": "Timelines access", + "profiles": "User profiles access", + "activities": "Statues/activities access" + } + }, + "limits": { + "arbitrary_limits": "Arbitrary limits", + "posts": "Post limits", + "uploads": "Attachments limits", + "users": "User profile limits", + "profile_fields": "Profile fields limits", + "user_uploads": "Profile media limits" + }, + "frontend": { + "repository": "Repository link", + "versions": "Available versions", + "build_url": "Build URL", + "reinstall": "Reinstall", + "is_default": "(Default)", + "is_default_custom": "(Default, version: {version})", + "install": "Install", + "install_version": "Install version {version}", + "more_install_options": "More install options", + "more_default_options": "More default setting options", + "set_default": "Set default", + "set_default_version": "Set version {version} as default", + "wip_notice": "Please note that this section is a WIP and lacks certain features as backend implementation of front-end management is incomplete.", + "default_frontend": "Default front-end", + "default_frontend_tip": "Default front-end will be shown to all users. Currently there's no way to for a user to select personal front-end. If you switch away from PleromaFE you'll most likely have to use old and buggy AdminFE to do instance configuration until we replace it.", + "default_frontend_tip2": "WIP: Since Pleroma backend doesn't properly list all installed frontends you'll have to enter name and reference manually. List below provides shortcuts to fill the values.", + "available_frontends": "Available for install" + }, + "temp_overrides": { + ":pleroma": { + ":instance": { + ":public": { + "label": "Instance is public", + "description": "Disabling this will make all API accessible only for logged-in users, this will make Public and Federated timelines inaccessible to anonymous visitors." + }, + ":limit_to_local_content": { + "label": "Limit search to local content", + "description": "Disables global network search for unauthenticated (default), all users or none" + }, + ":description_limit": { + "label": "Limit", + "description": "Character limit for attachment descriptions" + }, + ":background_image": { + "label": "Background image", + "description": "Background image (primarily used by PleromaFE)" + } + } + } + } + }, + "time": { + "unit": { + "days": "{0} day | {0} days", + "days_short": "{0}d", + "hours": "{0} hour | {0} hours", + "hours_short": "{0}h", + "minutes": "{0} minute | {0} minutes", + "minutes_short": "{0}min", + "months": "{0} month | {0} months", + "months_short": "{0}mo", + "seconds": "{0} second | {0} seconds", + "seconds_short": "{0}s", + "weeks": "{0} week | {0} weeks", + "weeks_short": "{0}w", + "years": "{0} year | {0} years", + "years_short": "{0}y" + }, + "in_future": "in {0}", + "in_past": "{0} ago", + "now": "just now", + "now_short": "now" + }, + "timeline": { + "collapse": "Collapse", + "conversation": "Conversation", + "error": "Error fetching timeline: {0}", + "load_older": "Load older statuses", + "no_retweet_hint": "Post is marked as followers-only or direct and cannot be repeated", + "repeated": "repeated", + "show_new": "Show new", + "reload": "Reload", + "up_to_date": "Up-to-date", + "no_more_statuses": "No more statuses", + "no_statuses": "No statuses", + "socket_reconnected": "Realtime connection established", + "socket_broke": "Realtime connection lost: CloseEvent code {0}", + "quick_view_settings": "Quick view settings", + "quick_filter_settings": "Quick filter settings" + }, + "status": { + "favorites": "Favorites", + "repeats": "Repeats", + "repeat_confirm": "Do you really want to repeat this status?", + "repeat_confirm_title": "Repeat confirmation", + "repeat_confirm_accept_button": "Repeat", + "repeat_confirm_cancel_button": "Do not repeat", + "delete": "Delete status", + "delete_error": "Error deleting status: {0}", + "edit": "Edit status", + "edited_at": "(last edited {time})", + "pin": "Pin on profile", + "unpin": "Unpin from profile", + "pinned": "Pinned", + "bookmark": "Bookmark", + "unbookmark": "Unbookmark", + "delete_confirm": "Do you really want to delete this status?", + "delete_confirm_title": "Delete confirmation", + "delete_confirm_accept_button": "Delete", + "delete_confirm_cancel_button": "Keep", + "reply_to": "Reply to", + "mentions": "Mentions", + "replies_list": "Replies:", + "replies_list_with_others": "Replies (+{numReplies} other): | Replies (+{numReplies} others):", + "mute_conversation": "Mute conversation", + "unmute_conversation": "Unmute conversation", + "status_unavailable": "Status unavailable", + "copy_link": "Copy link to status", + "external_source": "External source", + "thread_muted": "Thread muted", + "thread_muted_and_words": ", has words:", + "show_full_subject": "Show full subject", + "hide_full_subject": "Hide full subject", + "show_content": "Show content", + "hide_content": "Hide content", + "status_deleted": "This post was deleted", + "nsfw": "NSFW", + "expand": "Expand", + "you": "(You)", + "plus_more": "+{number} more", + "many_attachments": "Post has {number} attachment(s)", + "collapse_attachments": "Collapse attachments", + "show_all_attachments": "Show all attachments", + "show_attachment_in_modal": "Show in media modal", + "show_attachment_description": "Preview description (open attachment for full description)", + "hide_attachment": "Hide attachment", + "remove_attachment": "Remove attachment", + "attachment_stop_flash": "Stop Flash player", + "move_up": "Shift attachment left", + "move_down": "Shift attachment right", + "open_gallery": "Open gallery", + "thread_hide": "Hide this thread", + "thread_show": "Show this thread", + "thread_show_full": "Show everything under this thread ({numStatus} status in total, max depth {depth}) | Show everything under this thread ({numStatus} statuses in total, max depth {depth})", + "thread_show_full_with_icon": "{icon} {text}", + "thread_follow": "See the remaining part of this thread ({numStatus} status in total) | See the remaining part of this thread ({numStatus} statuses in total)", + "thread_follow_with_icon": "{icon} {text}", + "ancestor_follow": "See {numReplies} other reply under this status | See {numReplies} other replies under this status", + "ancestor_follow_with_icon": "{icon} {text}", + "show_all_conversation_with_icon": "{icon} {text}", + "show_all_conversation": "Show full conversation ({numStatus} other status) | Show full conversation ({numStatus} other statuses)", + "show_only_conversation_under_this": "Only show replies to this status", + "status_history": "Status history", + "reaction_count_label": "{num} person reacted | {num} people reacted" + }, + "user_card": { + "approve": "Approve", + "approve_confirm_title": "Approve confirmation", + "approve_confirm_accept_button": "Approve", + "approve_confirm_cancel_button": "Do not approve", + "approve_confirm": "Do you want to approve {user}'s follow request?", + "block": "Block", + "blocked": "Blocked!", + "block_confirm_title": "Block confirmation", + "block_confirm": "Do you really want to block {user}?", + "block_confirm_accept_button": "Block", + "block_confirm_cancel_button": "Do not block", + "deactivated": "Deactivated", + "deny": "Deny", + "deny_confirm_title": "Deny confirmation", + "deny_confirm_accept_button": "Deny", + "deny_confirm_cancel_button": "Do not deny", + "deny_confirm": "Do you want to deny {user}'s follow request?", + "edit_profile": "Edit profile", + "favorites": "Favorites", + "follow": "Follow", + "follow_cancel": "Cancel request", + "follow_sent": "Request sent!", + "follow_progress": "Requesting…", + "follow_unfollow": "Unfollow", + "unfollow_confirm_title": "Unfollow confirmation", + "unfollow_confirm": "Do you really want to unfollow {user}?", + "unfollow_confirm_accept_button": "Unfollow", + "unfollow_confirm_cancel_button": "Do not unfollow", + "followees": "Following", + "followers": "Followers", + "following": "Following!", + "follows_you": "Follows you!", + "hidden": "Hidden", + "its_you": "It's you!", + "media": "Media", + "mention": "Mention", + "message": "Message", + "mute": "Mute", + "muted": "Muted", + "mute_confirm_title": "Mute confirmation", + "mute_confirm": "Do you really want to mute {user}?", + "mute_confirm_accept_button": "Mute", + "mute_confirm_cancel_button": "Do not mute", + "mute_duration_prompt": "Mute this user for (0 for indefinite time):", + "per_day": "per day", + "remote_follow": "Remote follow", + "remove_follower": "Remove follower", + "remove_follower_confirm_title": "Remove follower confirmation", + "remove_follower_confirm_accept_button": "Remove", + "remove_follower_confirm_cancel_button": "Keep", + "remove_follower_confirm": "Do you really want to remove {user} from your followers?", + "report": "Report", + "statuses": "Statuses", + "subscribe": "Subscribe", + "unsubscribe": "Unsubscribe", + "unblock": "Unblock", + "unblock_progress": "Unblocking…", + "block_progress": "Blocking…", + "unmute": "Unmute", + "unmute_progress": "Unmuting…", + "mute_progress": "Muting…", + "hide_repeats": "Hide repeats", + "show_repeats": "Show repeats", + "bot": "Bot", + "birthday": "Born {birthday}", + "admin_menu": { + "moderation": "Moderation", + "grant_admin": "Grant Admin", + "revoke_admin": "Revoke Admin", + "grant_moderator": "Grant Moderator", + "revoke_moderator": "Revoke Moderator", + "activate_account": "Activate account", + "deactivate_account": "Deactivate account", + "delete_account": "Delete account", + "force_nsfw": "Mark all posts as NSFW", + "strip_media": "Remove media from posts", + "force_unlisted": "Force posts to be unlisted", + "sandbox": "Force posts to be followers-only", + "disable_remote_subscription": "Disallow following user from remote instances", + "disable_any_subscription": "Disallow following user at all", + "quarantine": "Disallow user posts from federating", + "delete_user": "Delete user", + "delete_user_data_and_deactivate_confirmation": "This will permanently delete the data from this account and deactivate it. Are you absolutely sure?" + }, + "highlight": { + "disabled": "No highlight", + "solid": "Solid bg", + "striped": "Striped bg", + "side": "Side stripe" + }, + "note": "Note", + "note_blank": "(None)", + "edit_note": "Edit note", + "edit_note_apply": "Apply", + "edit_note_cancel": "Cancel" + }, + "user_profile": { + "timeline_title": "User timeline", + "profile_does_not_exist": "Sorry, this profile does not exist.", + "profile_loading_error": "Sorry, there was an error loading this profile." + }, + "user_reporting": { + "title": "Reporting {0}", + "add_comment_description": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", + "additional_comments": "Additional comments", + "forward_description": "The account is from another server. Send a copy of the report there as well?", + "forward_to": "Forward to {0}", + "submit": "Submit", + "generic_error": "An error occurred while processing your request." + }, + "who_to_follow": { + "more": "More", + "who_to_follow": "Who to follow" + }, + "tool_tip": { + "media_upload": "Upload media", + "repeat": "Repeat", + "reply": "Reply", + "favorite": "Favorite", + "add_reaction": "Add Reaction", + "user_settings": "User Settings", + "accept_follow_request": "Accept follow request", + "reject_follow_request": "Reject follow request", + "bookmark": "Bookmark", + "toggle_expand": "Expand or collapse notification to show post in full", + "toggle_mute": "Expand or collapse notification to reveal muted content", + "autocomplete_available": "{number} result is available. Use up and down keys to navigate through them. | {number} results are available. Use up and down keys to navigate through them." + }, + "upload": { + "error": { + "base": "上傳 ê 時失敗。", + "message": "傳 buē 起去:{0}", + "file_too_big": "檔案 sài-suh 傷大 [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", + "default": "Koh 試一 kái。" + }, + "file_size_units": { + "B": "B", + "KiB": "KiB", + "MiB": "MiB", + "GiB": "GiB", + "TiB": "TiB" + } + }, + "search": { + "people": "用戶", + "hashtags": "主題標籤", + "person_talking": "{count} ê leh 論", + "people_talking": "{count} ê leh 論", + "no_results": "無半 ê 結果", + "no_more_results": "無其他 ê 結果", + "load_more": "載入 koh 較 tsē 結果" + }, + "password_reset": { + "forgot_password": "Buē 記得密碼?", + "password_reset": "重頭設密碼", + "instruction": "拍 lí ê email 地址 iah 是用者 ê 名。Guán 會送 lí 連結,重頭設定密碼。", + "placeholder": "Lí ê email 地址 iah 是用者 ê 名。", + "check_email": "檢查電子 phue 箱,看有重頭設密碼 ê 連結無。", + "return_home": "轉來頭頁", + "too_many_requests": "Lí kā 請求 ê khòo-tah 用了 ah。等一時仔,閣試一 pái。", + "password_reset_disabled": "密碼重頭設定無開放。請聯絡本站 ê 行政員。", + "password_reset_required": "Beh 登入,著重頭設 lí ê 密碼。", + "password_reset_required_but_mailer_is_disabled": "Lí 需要重頭設密碼,毋 koh tsia 無開放密碼 koh 再設定。請聯絡本站 ê 行政員。" + }, + "chats": { + "you": "Lí:", + "message_user": "傳私人 phue:{nickname}", + "delete": "Thâi 掉", + "chats": "開講", + "new": "發起開講", + "empty_message_error": "無法度 PO 空 ê phue", + "more": "Koh較濟……", + "delete_confirm": "Lí 敢真 ê beh thâi tsit 張 phue?", + "error_loading_chat": "載入開講 ê 時,出箠 ah。", + "error_sending_message": "送 phue ê 時,出箠 ah。", + "empty_chat_list_placeholder": "Lí 猶無佇 tsia 開講過,來開講 lah!" + }, + "lists": { + "lists": "列單", + "new": "新 ê 列單", + "title": "列單標題", + "search": "Tshuē 用者", + "create": "開新 ê", + "save": "保存改變", + "delete": "刣列單", + "following_only": "限定 lí 所關注 ê", + "manage_lists": "管理列單", + "manage_members": "管理列單成員", + "add_members": "Tshiau 閣較 tsē ê 用者", + "remove_from_list": "對列單刣掉", + "add_to_list": "加入去列單", + "is_in_list": "列單已經有 ah ", + "editing_list": "編輯列單 {listTitle}", + "creating_list": "開新 ê 列單", + "update_title": "保存標題", + "really_delete": "敢真正 beh 刣掉列單?", + "error": "操作列單 ê 時陣出重耽:{0}" + }, + "file_type": { + "audio": "音訊", + "video": "影片", + "image": "影像", + "file": "檔案" + }, + "display_date": { + "today": "今 á 日" + }, + "update": { + "big_update_title": "敬請體諒", + "big_update_content": "因為 guán 有一站 á 無發行新版本,所以這个版本會 kap lí 以早慣 sì ê 無仝。", + "update_bugs": "請佇 {pleromaGitlab} 報告任何問題 kap bug,因為 Pleroma 改變真 tsē。雖罔 guán 徹底 leh 試,mā 家 kī 用開發版,伊凡勢有一寡重耽。Guán 歡迎 lín 提供關係所拄著 ê 問題 ê 意見、建議,或者是改進 Pleroma kap Pleroma-FE ê 法度。", + "update_bugs_gitlab": "Pleroma GitLab", + "update_changelog": "Nā beh 知影改變 ê 詳細,請看:{theFullChangelog}.", + "update_changelog_here": "Kui ê 改變日誌", + "art_by": "美編:{linkToArtist}" + }, + "unicode_domain_indicator": { + "tooltip": "這 ê 域名包含毋是 ascii ê 字元。" + } +} diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index a4af8b90f..4e092a7f2 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -3,6 +3,7 @@ import ISO6391 from 'iso-639-1' import _ from 'lodash' const specialLanguageCodes = { + nan: 'nan', ja_easy: 'ja', zh_Hant: 'zh-HANT', zh: 'zh-Hans' @@ -19,6 +20,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', + nan: '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From d98650e21d9d24dde321e77367e701a5025e9b70 Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Tue, 20 Jun 2023 14:47:51 +0000 Subject: [PATCH 14/43] add changelog --- changelog.d/add-taiwanese-aka-hokkien-i18n-support.add | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/add-taiwanese-aka-hokkien-i18n-support.add diff --git a/changelog.d/add-taiwanese-aka-hokkien-i18n-support.add b/changelog.d/add-taiwanese-aka-hokkien-i18n-support.add new file mode 100644 index 000000000..53d898055 --- /dev/null +++ b/changelog.d/add-taiwanese-aka-hokkien-i18n-support.add @@ -0,0 +1 @@ +add the initial i18n translation file for Taiwanese (Hokkien), and modify some related files. \ No newline at end of file From d722dc165e73e6124614c1b17ed7ba8c7d700354 Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Tue, 20 Jun 2023 14:52:41 +0000 Subject: [PATCH 15/43] unify the indention --- src/i18n/languages.js | 2 +- src/services/locale/locale.service.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 1d14fe9c3..432829f61 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -17,7 +17,7 @@ const languages = [ 'ja', 'ja_easy', 'ko', - 'nan', + 'nan', 'nb', 'nl', 'oc', diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index 4e092a7f2..9bd33f4e3 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -20,7 +20,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', - nan: '臺語(閩南語)', + nan: '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From 8897ac5c9b90cdf28e8f039092d83de58e9a883a Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Wed, 21 Jun 2023 14:20:37 +0000 Subject: [PATCH 16/43] Update locale.service.js --- src/services/locale/locale.service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index 9bd33f4e3..f6a1f708d 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -3,7 +3,7 @@ import ISO6391 from 'iso-639-1' import _ from 'lodash' const specialLanguageCodes = { - nan: 'nan', + nan: 'nan-TW', ja_easy: 'ja', zh_Hant: 'zh-HANT', zh: 'zh-Hans' From cf0d8c9257fb0be69c9de0f0ed68092eb60b289a Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Wed, 21 Jun 2023 17:02:26 +0000 Subject: [PATCH 17/43] according to https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1841#note_101513 by tusooa --- src/i18n/{nan.json => nan-TW.json} | 0 src/services/locale/locale.service.js | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) rename src/i18n/{nan.json => nan-TW.json} (100%) diff --git a/src/i18n/nan.json b/src/i18n/nan-TW.json similarity index 100% rename from src/i18n/nan.json rename to src/i18n/nan-TW.json diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index f6a1f708d..e1c84c0a9 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -3,7 +3,6 @@ import ISO6391 from 'iso-639-1' import _ from 'lodash' const specialLanguageCodes = { - nan: 'nan-TW', ja_easy: 'ja', zh_Hant: 'zh-HANT', zh: 'zh-Hans' @@ -20,7 +19,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', - nan: '臺語(閩南語)', + nan_TW: '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From ee01393b5fddb2dac7c305f8522f1dd4ad56e18d Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Wed, 21 Jun 2023 17:06:01 +0000 Subject: [PATCH 18/43] Update 2 files - /src/i18n/languages.js - /src/services/locale/locale.service.js --- src/i18n/languages.js | 2 +- src/services/locale/locale.service.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 432829f61..33a98f8e1 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -17,7 +17,7 @@ const languages = [ 'ja', 'ja_easy', 'ko', - 'nan', + 'nan-TW', 'nb', 'nl', 'oc', diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index e1c84c0a9..2747c1782 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -19,7 +19,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', - nan_TW: '臺語(閩南語)', + nan-TW: '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From b4cf20e7bc544fae95e6f19ed3e563d43e5966f6 Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Wed, 21 Jun 2023 17:45:05 +0000 Subject: [PATCH 19/43] fix the error of unquoting --- src/services/locale/locale.service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index 2747c1782..91d78cf25 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -19,7 +19,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', - nan-TW: '臺語(閩南語)', + "nan-TW": '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From e1fff8e06465779bda3dd5041f739cfa89a2f7ea Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Wed, 21 Jun 2023 17:51:06 +0000 Subject: [PATCH 20/43] Update file locale.service.js --- src/services/locale/locale.service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/locale/locale.service.js b/src/services/locale/locale.service.js index 91d78cf25..24ed3cdb7 100644 --- a/src/services/locale/locale.service.js +++ b/src/services/locale/locale.service.js @@ -19,7 +19,7 @@ const internalToBackendLocaleMulti = codes => { const getLanguageName = (code) => { const specialLanguageNames = { ja_easy: 'やさしいにほんご', - "nan-TW": '臺語(閩南語)', + 'nan-TW': '臺語(閩南語)', zh: '简体中文', zh_Hant: '繁體中文' } From 7ce71d8f82fa6b645dc09f9c98fc9e00d1c9dba0 Mon Sep 17 00:00:00 2001 From: Kian-ting Tan Date: Thu, 22 Jun 2023 15:35:04 +0000 Subject: [PATCH 21/43] Update nan-TW.json --- src/i18n/nan-TW.json | 1703 +++++++++++------------------------------- 1 file changed, 452 insertions(+), 1251 deletions(-) diff --git a/src/i18n/nan-TW.json b/src/i18n/nan-TW.json index 82e9f281f..68daebbbc 100644 --- a/src/i18n/nan-TW.json +++ b/src/i18n/nan-TW.json @@ -1,1253 +1,454 @@ { - "about": { - "mrf": { - "federation": "聯邦", - "keyword": { - "keyword_policies": "關鍵字政策", - "ftl_removal": "Tuì「知影 ê 網路」時間線除掉。", - "reject": "拒絕", - "replace": "取代", - "is_replaced_by": "→" - }, - "mrf_policies": "啟用 ê MRF 政策", - "mrf_policies_desc": "MRF 政策操作本站 ê 對外通信行為。以下ê政策啟用 ah:", - "simple": { - "simple_policies": "站臺特有 ê 政策", - "instance": "站", - "reason": "理由", - "not_applicable": "N/A", - "accept": "接受", - "accept_desc": "本站干焦接受下跤 ê 站 ê 短 phue:", - "reject": "拒絕", - "reject_desc": "本站 buē 接受 tuì 以下 ê 站 ê 短 phue:", - "quarantine": "隔離", - "quarantine_desc": "針對下跤 ê 站,本站干焦送出公開ê PO文:", - "ftl_removal": "Tuì「知影 ê 網路」時間線thâi掉", - "ftl_removal_desc": "本站buē 佇「知影 ê 網路」刊下跤 ê 站 ê PO文:", - "media_removal": "Thâi除媒體", - "media_removal_desc": "本站 kā 下跤 ê 站臺送 ê PO文 ê 媒體 lóng thâi 除:", - "media_nsfw": "媒體 lóng 標做「敏感內容」", - "media_nsfw_desc": "本站 kā 下跤 ê 站 ê 媒體,lóng 標做敏感內容:" - } - }, - "staff": "工作人員" - }, - "announcements": { - "page_header": "公告", - "title": "公告", - "mark_as_read_action": "標做有讀", - "post_form_header": "貼公告", - "post_placeholder": "佇 tsia 拍你 ê 公告……", - "post_action": "貼", - "post_error": "錯誤:{error}", - "close_error": "關", - "delete_action": "Thâi", - "start_time_prompt": "開始時間: ", - "end_time_prompt": "結束時間:", - "all_day_prompt": "Tse 是 kui 工 ê 事件", - "published_time_display": "公告佇 {time}", - "start_time_display": "有效 tuì:{time}", - "end_time_display": "中止佇:{time}", - "edit_action": "編輯", - "submit_edit_action": "送出", - "cancel_edit_action": "取消", - "inactive_message": "這个公告 tsit-má 無效力。" - }, - "shoutbox": { - "title": "留話枋" - }, - "domain_mute_card": { - "mute": "予恬去", - "mute_progress": "Teh 予恬……", - "unmute": "予有聲", - "unmute_progress": "Teh 予有聲……" - }, - "exporter": { - "export": "匯出", - "processing": "Teh 處理,較停仔指示你下載檔案……" - }, - "features_panel": { - "shout": "留話枋", - "pleroma_chat_messages": "Pleroma 開講", - "gopher": "Gopher", - "media_proxy": "媒體代理伺侯器", - "scope_options": "公開範圍選項", - "text_limit": "字數限制", - "title": "有效 ê 功能", - "who_to_follow": "啥儂通綴", - "upload_limit": "檔案 sài-suh 限制" - }, - "finder": { - "error_fetching_user": "Tshuē 用者 ê 時起錯誤", - "find_user": "Tshuē 用者" - }, - "general": { - "apply": "應用", - "submit": "送出", - "more": "Koh 較 tsē", - "loading": "Leh 載入……", - "generic_error": "起錯誤 ah", - "generic_error_message": "起錯誤:{0}", - "error_retry": "請 koh 試一 kái", - "retry": "Koh 試", - "optional": "非必要", - "show_more": "展示較 tsē", - "show_less": "展示較少", - "never_show_again": "Mài koh 展示", - "dismiss": "無視", - "cancel": "取消", - "disable": "無愛用", - "enable": "啟用", - "confirm": "確認", - "verify": "驗證", - "close": "關掉", - "undo": "復原", - "yes": "是", - "no": "毋是", - "peek": "先看 māi", - "scroll_to_top": "捲 kàu 頂懸", - "role": { - "admin": "行政員", - "moderator": "管理員" - }, - "unpin": "無愛 kā 釘", - "pin": "Kā釘起來", - "flash_content": "Ji̍h tsia,用 Ruffle(iáu teh 試驗,可能 buē 紡)看 Flash ê 內容。", - "flash_sepcurity": "注意 tse 可能有危險,因為 Flash 內容猶原是任意 ê 程式碼。", - "flash_fail": "載入 flash 內容失敗,詳細會當看控制臺。", - "scope_in_timeline": { - "direct": "私人 phue", - "private": "干焦 hōo 綴 lí ê 看", - "public": "公開佇公共時間線", - "unlisted": "無愛公開佇公共時間線" - } - }, - "image_cropper": { - "crop_picture": "裁相片", - "save": "儲存", - "save_without_cropping": "無裁就儲存", - "cancel": "取消" - }, - "importer": { - "submit": "送出", - "success": "匯入成功。", - "error": "佇匯入 ê 時起錯誤。" - }, - "login": { - "login": "登入", - "description": "用 OAuth 登入", - "logout": "登出", - "logout_confirm_title": "登出確認", - "logout_confirm": "Lí 敢真正 beh 登出?", - "logout_confirm_accept_button": "登出", - "logout_confirm_cancel_button": "mài 登出", - "password": "密碼", - "placeholder": "例:lain", - "register": "註冊", - "username": "用者 ê 名", - "hint": "登入,參與討論", - "authentication_code": "認證碼", - "enter_recovery_code": "輸入恢復碼", - "enter_two_factor_code": "輸入兩階段認證碼", - "recovery_code": "恢復碼", - "heading": { - "totp": "兩階段認證", - "recovery": "兩階段恢復" - } - }, - "media_modal": { - "previous": "頂一 ê", - "next": "後一个", - "counter": "{current} / {total}", - "hide": "關掉媒體瀏覽" - }, - "nav": { - "about": "有關……", - "administration": "管理", - "back": "轉去", - "friend_requests": "跟綴請求", - "mentions": "The̍h起", - "interactions": "互動", - "dms": "私人 phue", - "public_tl": "公共時間線", - "timeline": "時間線", - "home_timeline": "厝 ê 時間線", - "twkn": "知影 ê 網路", - "bookmarks": "冊籤", - "user_search": "Tshuē 用者", - "search": "tshuē", - "search_close": "關掉 tshiau-tshuē liâu", - "who_to_follow": "Siáng 會當綴?", - "preferences": "個人 ê 設定", - "timelines": "時間流", - "chats": "開講", - "lists": "列單", - "edit_nav_mobile": "自訂導覽條", - "edit_pinned": "編輯釘起來 ê 項目", - "edit_finish": "編輯 suah", - "mobile_sidebar": "切換行動版 ê 邊 á liâu", - "mobile_notifications": "拍開通知", - "mobile_notifications": "拍開通知(有無讀ê)", - "mobile_notifications_close": "關掉通知", - "announcements": "公告" - }, - "notifications": { - "broken_favorite": "狀態毋知影,leh tshiau-tshuē……", - "error": "佇取得通知 ê 時起錯誤:{0}", - "favorited_you": "kah 意 lí ê 狀態", - "followed_you": "綴 lí", - "follow_request": "想 beh 綴 lí", - "load_older": "載入 khah 早 ê 通知", - "notifications": "通知", - "read": "讀!", - "repeated_you": "轉送 lí ê 狀態", - "no_more_notifications": "無別 ê 通知", - "migrated_to": "移民到", - "reacted_with": "顯出{0} ê 反應", - "submitted_report": "送出檢舉", - "poll_ended": "投票結束" - }, - "polls": { - "add_poll": "開投票", - "add_option": "加選項", - "option": "選項", - "votes": "票", - "people_voted_count": "{count} 位有投", - "votes_count": "{count} 票", - "vote": "投票", - "type": "投票 ê 形式", - "single_choice": "孤選", - "multiple_choices": "Tsē 選", - "expiry": "投票期限", - "expires_in": "投票 tī {0} 以後結束", - "expired": "投票佇 {0} 以前結束", - "not_enough_options": "投票 ê 選項傷少。" - }, - "emoji": { - "stickers": "貼圖", - "emoji": "繪文字", - "keep_open": "Hōo 揀選仔開 leh", - "search_emoji": "Tshuē 繪文字", - "add_emoji": "插繪文字", - "custom": "定製 ê 繪文字", - "unpacked": "拍開 ê 繪文字", - "unicode": "Unicode 繪文字", - "unicode_groups": { - "activities": "活動", - "animals-and-nature": "動物 kap 自然", - "flags": "旗 á", - "food-and-drink": "食物 kap 飲料", - "objects": "物體", - "people-and-body": "Lâng kap 身軀", - "smileys-and-emotion": "笑面 kap 情緒", - "symbols": "符號", - "travel-and-places": "旅遊 kap 所在" - }, - "load_all_hint": "載入頭前 {saneAmount} ê 繪文字,規个攏載入效能可能 ē khah 食力。", - "load_all": "Kā {emojiAmount} ê 繪文字攏載入", - "regional_indicator": "地區指引 {letter}" - }, - "errors": { - "storage_unavailable": "Pleroma buē-tàng the̍h 著瀏覽器儲存 ê。Lí ê 登入狀態抑是局部設定 buē 儲存,mā 凡勢 tú 著意料外 ê 問題。拍開 cookie 看覓。" - }, - "interactions": { - "favs_repeats": "轉送 kap kah 意", - "follows": "最近綴 lí ê", - "emoji_reactions": "繪文字 ê 回應", - "reports": "檢舉", - "moves": "用者 ê 移民", - "load_older": "載入 koh khah 早 ê 互動" - }, - "post_status": { - "edit_status": "編輯狀態", - "new_status": "PO 新 ê 狀態", - "account_not_locked_warning": "Lín 口座毋是 {0} ê。見 nā 有 lâng 綴--lí,ē-tàng 看著 lí ê 限定跟綴者 ê PO 文。.", - "account_not_locked_warning_link": "鎖起來 ê 口座", - "attachments_sensitive": "Kā 附件標做敏感內容。", - "media_description": "媒體說明", - "content_type": { - "text/plain": "純 ê 文字", - "text/html": "HTML", - "text/markdown": "Markdown", - "text/bbcode": "BBCode" - }, - "content_type_selection": "貼 ê 形式", - "content_warning": "主旨(毋是必要)", - "default": "Tú 正 kàu 高雄 ah。", - "direct_warning_to_all": "Tsit ê PO 文通 hōo 逐 ê 提起 ê 用者看見。", - "direct_warning_to_first_only": "Tsit ê PO 文,kan-ta 短信 tú 開始提起 ê 用者,tsiah 通看見。", - "edit_remote_warning": "別 ê 站臺可能無支援編輯,無法度收著 PO 文上新 ê 版本。", - "edit_unsupported_warning": "Pleroma 無支持編輯 the̍h 起 hām 投票。", - "posting": "PO 文", - "post": "PO", - "preview": "Sing 看覓", - "preview_empty": "空 ê", - "empty_status_error": "無法度 PO 無檔案 koh 空 ê 狀態。", - "media_description_error": "更新媒體失敗,請 koh 試一 kái。", - "scope_notice": { - "public": "Tsit ê PO 文通予逐 ê 儂看著。", - "private": "Tsit ê PO 文 kan-ta 予綴 lí ê 看著。", - "unlisted": "Tsit ê PO 文 buē 公開 tī 公共時間線 kap 知影 ê 網路。" - }, - "scope_notice_dismiss": "關掉 tsit ê 通知", - "scope": { - "direct": "私人 phue - PO 文干焦予提起 ê 用者看著", - "private": "限定綴 ê 儂 - PO 文干焦予綴 lí ê 儂看著", - "public": "公開 - PO kàu 公開時間線", - "unlisted": "Mài 列出來 - Mài PO tī 公開時間線。" - } - }, - "registration": { - "bio_optional": "介紹(毋是必要)", - "email": "Email", - "email_optional": "Email(毋是必要)", - "fullname": "顯示 ê 名", - "password_confirm": "確認密碼", - "registration": "註冊", - "token": "邀請碼", - "captcha": "驗證碼", - "new_captcha": "Ji̍h 圖片,the̍h 新 ê 驗證碼", - "username_placeholder": "e.g. lain", - "fullname_placeholder": "e.g. 岩倉 Lain", - "bio_placeholder": "e.g.\nLí 好,我是 Lain。我是日本動畫 ê 角色,tuà tī 日本 ê 郊區。Lí 凡勢 bat tī Wired 知影我。", - "reason": "註冊 ê 理由", - "reason_placeholder": "本站靠人工審核註冊。\n介紹管理者 lí beh tī tsia 註冊 ê 理由。", - "register": "註冊", - "validations": { - "username_required": "著愛添", - "fullname_required": "著愛添", - "email_required": "著愛添", - "password_required": "著愛添", - "password_confirmation_required": "著愛添", - "password_confirmation_match": "密碼著相 kâng", - "birthday_required": "著愛添", - "birthday_min_age": "Buē-tàng tī {date} 以後" - }, - "email_language": "Lí想 beh 服侍器用 siánn 物語言寄批 hōo lí?", - "birthday": "生日", - "birthday_optional": "生日(毋是必要):" - }, - "remote_user_resolver": { - "remote_user_resolver": "別站用者 ê 解析器", - "searching_for": "Tshuē", - "error": "Tshuē無" - }, - "report": { - "reporter": "檢舉人:", - "reported_user": "Beh 檢舉 ê 用者:", - "reported_statuses": "Beh 檢舉 ê 狀態:", - "notes": "Notes:", - "state": "State:", - "state_open": "開 ê", - "state_closed": "關 ê", - "state_resolved": "解決了 ê" - }, - "selectable_list": { - "select_all": "攏總揀" - }, - "settings": { - "add_language": "加一 ê 備用 ê 語言", - "remove_language": "Ni 掉", - "primary_language": "主要語言:", - "fallback_language": "備用語言 {index}:", - "app_name": "App ê 名", - "expert_mode": "進階模式", - "save": "保存改變", - "security": "安全", - "setting_changed": "設定 kap 預先 ê 有 tsing 差", - "setting_server_side": "This setting is tied to your profile and affects all sessions and clients", - "enter_current_password_to_confirm": "Enter your current password to confirm your identity", - "post_look_feel": "Posts Look & Feel", - "mention_links": "Mention links", - "mfa": { - "otp": "OTP", - "setup_otp": "Setup OTP", - "wait_pre_setup_otp": "presetting OTP", - "confirm_and_enable": "Confirm & enable OTP", - "title": "Two-factor Authentication", - "generate_new_recovery_codes": "Generate new recovery codes", - "warning_of_generate_new_codes": "When you generate new recovery codes, your old codes won’t work anymore.", - "recovery_codes": "Recovery codes.", - "waiting_a_recovery_codes": "Receiving backup codes…", - "recovery_codes_warning": "Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.", - "authentication_methods": "Authentication methods", - "scan": { - "title": "Scan", - "desc": "Using your two-factor app, scan this QR code or enter text key:", - "secret_code": "Key" - }, - "verify": { - "desc": "To enable two-factor authentication, enter the code from your two-factor app:" - } - }, - "lists_navigation": "Show lists in navigation", - "allow_following_move": "Allow auto-follow when following account moves", - "attachmentRadius": "Attachments", - "attachments": "Attachments", - "avatar": "Avatar", - "avatarAltRadius": "Avatars (notifications)", - "avatarRadius": "Avatars", - "background": "Background", - "bio": "Bio", - "email_language": "Language for receiving emails from the server", - "block_export": "Block export", - "block_export_button": "Export your blocks to a csv file", - "block_import": "Block import", - "block_import_error": "Error importing blocks", - "blocks_imported": "Blocks imported! Processing them will take a while.", - "mute_export": "Mute export", - "mute_export_button": "Export your mutes to a csv file", - "mute_import": "Mute import", - "mute_import_error": "Error importing mutes", - "mutes_imported": "Mutes imported! Processing them will take a while.", - "import_mutes_from_a_csv_file": "Import mutes from a csv file", - "account_backup": "Account backup", - "account_backup_description": "This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.", - "account_backup_table_head": "Backup", - "download_backup": "Download", - "backup_not_ready": "This backup is not ready yet.", - "backup_running": "This backup is in progress, processed {number} record. | This backup is in progress, processed {number} records.", - "backup_failed": "This backup has failed.", - "remove_backup": "Remove", - "list_backups_error": "Error fetching backup list: {error}", - "add_backup": "Create a new backup", - "added_backup": "Added a new backup.", - "add_backup_error": "Error adding a new backup: {error}", - "blocks_tab": "Blocks", - "bot": "This is a bot account", - "btnRadius": "Buttons", - "cBlue": "Blue (Reply, follow)", - "cGreen": "Green (Retweet)", - "cOrange": "Orange (Favorite)", - "cRed": "Red (Cancel)", - "change_email": "Change email", - "change_email_error": "There was an issue changing your email.", - "changed_email": "Email changed successfully!", - "change_password": "Change password", - "change_password_error": "There was an issue changing your password.", - "changed_password": "Password changed successfully!", - "chatMessageRadius": "Chat message", - "collapse_subject": "Collapse posts with subjects", - "composing": "Composing", - "confirm_new_password": "Confirm new password", - "current_password": "Current password", - "confirm_dialogs": "Ask for confirmation when", - "confirm_dialogs_repeat": "repeating a status", - "confirm_dialogs_unfollow": "unfollowing a user", - "confirm_dialogs_block": "blocking a user", - "confirm_dialogs_mute": "muting a user", - "confirm_dialogs_delete": "deleting a status", - "confirm_dialogs_logout": "logging out", - "confirm_dialogs_approve_follow": "approving a follower", - "confirm_dialogs_deny_follow": "denying a follower", - "confirm_dialogs_remove_follower": "removing a follower", - "mutes_and_blocks": "Mutes and Blocks", - "data_import_export_tab": "Data import / export", - "default_vis": "Default visibility scope", - "delete_account": "Delete account", - "delete_account_description": "Permanently delete your data and deactivate your account.", - "delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.", - "delete_account_instructions": "Type your password in the input below to confirm account deletion.", - "account_alias": "Account aliases", - "account_alias_table_head": "Alias", - "list_aliases_error": "Error fetching aliases: {error}", - "hide_list_aliases_error_action": "Close", - "remove_alias": "Remove this alias", - "new_alias_target": "Add a new alias (e.g. {example})", - "added_alias": "Alias is added.", - "add_alias_error": "Error adding alias: {error}", - "move_account": "Move account", - "move_account_notes": "If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.", - "move_account_target": "Target account (e.g. {example})", - "moved_account": "Account is moved.", - "move_account_error": "Error moving account: {error}", - "discoverable": "Allow discovery of this account in search results and other services", - "domain_mutes": "Domains", - "avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.", - "pad_emoji": "Pad emoji with spaces when adding from picker", - "autocomplete_select_first": "Automatically select the first candidate when autocomplete results are available", - "emoji_reactions_on_timeline": "Show emoji reactions on timeline", - "emoji_reactions_scale": "Reactions scale factor", - "export_theme": "Save preset", - "filtering": "Filtering", - "wordfilter": "Wordfilter", - "filtering_explanation": "All statuses containing these words will be muted, one per line", - "word_filter_and_more": "Word filter and more...", - "follow_export": "Follow export", - "follow_export_button": "Export your follows to a csv file", - "follow_import": "Follow import", - "follow_import_error": "Error importing followers", - "follows_imported": "Follows imported! Processing them will take a while.", - "accent": "Accent", - "foreground": "Foreground", - "general": "General", - "hide_attachments_in_convo": "Hide attachments in conversations", - "hide_attachments_in_tl": "Hide attachments in timeline", - "hide_media_previews": "Hide media previews", - "hide_muted_posts": "Hide posts of muted users", - "mute_bot_posts": "Mute bot posts", - "hide_bot_indication": "Hide bot indication in posts", - "hide_all_muted_posts": "Hide muted posts", - "max_thumbnails": "Maximum amount of thumbnails per post (empty = no limit)", - "hide_isp": "Hide instance-specific panel", - "hide_shoutbox": "Hide instance shoutbox", - "right_sidebar": "Reverse order of columns", - "navbar_column_stretch": "Stretch navbar to columns width", - "always_show_post_button": "Always show floating New Post button", - "hide_wallpaper": "Hide instance wallpaper", - "preload_images": "Preload images", - "use_one_click_nsfw": "Open NSFW attachments with just one click", - "hide_post_stats": "Hide post statistics (e.g. the number of favorites)", - "hide_user_stats": "Hide user statistics (e.g. the number of followers)", - "hide_filtered_statuses": "Hide all filtered posts", - "hide_wordfiltered_statuses": "Hide word-filtered statuses", - "hide_muted_threads": "Hide muted threads", - "import_blocks_from_a_csv_file": "Import blocks from a csv file", - "import_followers_from_a_csv_file": "Import follows from a csv file", - "import_theme": "Load preset", - "inputRadius": "Input fields", - "checkboxRadius": "Checkboxes", - "instance_default": "(default: {value})", - "instance_default_simple": "(default)", - "interface": "Interface", - "interfaceLanguage": "Interface language", - "invalid_theme_imported": "The selected file is not a supported Pleroma theme. No changes to your theme were made.", - "limited_availability": "Unavailable in your browser", - "links": "Links", - "lock_account_description": "Restrict your account to approved followers only", - "loop_video": "Loop videos", - "loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")", - "mutes_tab": "Mutes", - "play_videos_in_modal": "Play videos in a popup frame", - "url": "URL", - "preview": "Preview", - "file_export_import": { - "backup_restore": "Settings backup", - "backup_settings": "Backup settings to file", - "backup_settings_theme": "Backup settings and theme to file", - "restore_settings": "Restore settings from file", - "errors": { - "invalid_file": "The selected file is not a supported Pleroma settings backup. No changes were made.", - "file_too_new": "Incompatile major version: {fileMajor}, this PleromaFE (settings ver {feMajor}) is too old to handle it", - "file_too_old": "Incompatile major version: {fileMajor}, file version is too old and not supported (min. set. ver. {feMajor})", - "file_slightly_new": "File minor version is different, some settings might not load" - } - }, - "profile_fields": { - "label": "Profile metadata", - "add_field": "Add field", - "name": "Label", - "value": "Content" - }, - "birthday": { - "label": "Birthday", - "show_birthday": "Show my birthday" - }, - "account_privacy": "Privacy", - "use_contain_fit": "Don't crop the attachment in thumbnails", - "name": "Name", - "name_bio": "Name & bio", - "new_email": "New email", - "new_password": "New password", - "posts": "Posts", - "user_profiles": "User Profiles", - "notification_visibility": "Types of notifications to show", - "notification_visibility_follows": "Follows", - "notification_visibility_likes": "Favorites", - "notification_visibility_mentions": "Mentions", - "notification_visibility_repeats": "Repeats", - "notification_visibility_moves": "User Migrates", - "notification_visibility_emoji_reactions": "Reactions", - "notification_visibility_polls": "Ends of polls you voted in", - "no_rich_text_description": "Strip rich text formatting from all posts", - "no_blocks": "No blocks", - "no_mutes": "No mutes", - "hide_favorites_description": "Don't show list of my favorites (people still get notified)", - "hide_follows_description": "Don't show who I'm following", - "hide_followers_description": "Don't show who's following me", - "hide_follows_count_description": "Don't show follow count", - "hide_followers_count_description": "Don't show follower count", - "show_admin_badge": "Show \"Admin\" badge in my profile", - "show_moderator_badge": "Show \"Moderator\" badge in my profile", - "nsfw_clickthrough": "Hide sensitive/NSFW media", - "oauth_tokens": "OAuth tokens", - "token": "Token", - "refresh_token": "Refresh token", - "valid_until": "Valid until", - "revoke_token": "Revoke", - "panelRadius": "Panels", - "pause_on_unfocused": "Pause when tab is not focused", - "presets": "Presets", - "profile_background": "Profile background", - "profile_banner": "Profile banner", - "profile_tab": "Profile", - "radii_help": "Set up interface edge rounding (in pixels)", - "replies_in_timeline": "Replies in timeline", - "reply_visibility_all": "Show all replies", - "reply_visibility_following": "Only show replies directed at me or users I'm following", - "reply_visibility_self": "Only show replies directed at me", - "reply_visibility_following_short": "Show replies to my follows", - "reply_visibility_self_short": "Show replies to self only", - "autohide_floating_post_button": "Automatically hide New Post button (mobile)", - "saving_err": "Error saving settings", - "saving_ok": "Settings saved", - "search_user_to_block": "Search whom you want to block", - "search_user_to_mute": "Search whom you want to mute", - "security_tab": "Security", - "scope_copy": "Copy scope when replying (DMs are always copied)", - "minimal_scopes_mode": "Minimize post scope selection options", - "set_new_avatar": "Set new avatar", - "set_new_profile_background": "Set new profile background", - "set_new_profile_banner": "Set new profile banner", - "reset_avatar": "Reset avatar", - "reset_profile_background": "Reset profile background", - "reset_profile_banner": "Reset profile banner", - "reset_avatar_confirm": "Do you really want to reset the avatar?", - "reset_banner_confirm": "Do you really want to reset the banner?", - "reset_background_confirm": "Do you really want to reset the background?", - "settings": "Settings", - "subject_input_always_show": "Always show subject field", - "subject_line_behavior": "Copy subject when replying", - "subject_line_email": "Like email: \"re: subject\"", - "subject_line_mastodon": "Like mastodon: copy as is", - "subject_line_noop": "Do not copy", - "conversation_display": "Conversation display style", - "conversation_display_tree": "Tree-style", - "conversation_display_tree_quick": "Tree view", - "disable_sticky_headers": "Don't stick column headers to top of the screen", - "show_scrollbars": "Show side column's scrollbars", - "third_column_mode": "When there's enough space, show third column containing", - "third_column_mode_none": "Don't show third column at all", - "third_column_mode_notifications": "Notifications column", - "third_column_mode_postform": "Main post form and navigation", - "columns": "Columns", - "column_sizes": "Column sizes", - "column_sizes_sidebar": "Sidebar", - "column_sizes_content": "Content", - "column_sizes_notifs": "Notifications", - "tree_advanced": "Allow more flexible navigation in tree view", - "tree_fade_ancestors": "Display ancestors of the current status in faint text", - "conversation_display_linear": "Linear-style", - "conversation_display_linear_quick": "Linear view", - "conversation_other_replies_button": "Show the \"other replies\" button", - "conversation_other_replies_button_below": "Below statuses", - "conversation_other_replies_button_inside": "Inside statuses", - "max_depth_in_thread": "Maximum number of levels in thread to display by default", - "post_status_content_type": "Post status content type", - "sensitive_by_default": "Mark posts as sensitive by default", - "stop_gifs": "Pause animated images until you hover on them", - "streaming": "Automatically show new posts when scrolled to the top", - "auto_update": "Show new posts automatically", - "user_mutes": "Users", - "useStreamingApi": "Receive posts and notifications real-time", - "use_websockets": "Use websockets (Realtime updates)", - "text": "Text", - "theme": "Theme", - "theme_help": "Use hex color codes (#rrggbb) to customize your color theme.", - "theme_help_v2_1": "You can also override certain component's colors and opacity by toggling the checkbox, use \"Clear all\" button to clear all overrides.", - "theme_help_v2_2": "Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.", - "tooltipRadius": "Tooltips/alerts", - "type_domains_to_mute": "Search domains to mute", - "upload_a_photo": "Upload a photo", - "user_settings": "User Settings", - "values": { - "false": "no", - "true": "yes" - }, - "virtual_scrolling": "Optimize timeline rendering", - "use_at_icon": "Display {'@'} symbol as an icon instead of text", - "mention_link_display": "Display mention links", - "mention_link_display_short": "always as short names (e.g. {'@'}foo)", - "mention_link_display_full_for_remote": "as full names only for remote users (e.g. {'@'}foo{'@'}example.org)", - "mention_link_display_full": "always as full names (e.g. {'@'}foo{'@'}example.org)", - "mention_link_use_tooltip": "Show user card when clicking mention links", - "mention_link_show_avatar": "Show user avatar beside the link", - "mention_link_show_avatar_quick": "Show user avatar next to mentions", - "mention_link_fade_domain": "Fade domains (e.g. {'@'}example.org in {'@'}foo{'@'}example.org)", - "mention_link_bolden_you": "Highlight mention of you when you are mentioned", - "user_popover_avatar_action": "Popover avatar click action", - "user_popover_avatar_action_zoom": "Zoom the avatar", - "user_popover_avatar_action_close": "Close the popover", - "user_popover_avatar_action_open": "Open profile", - "user_popover_avatar_overlay": "Show user popover over user avatar", - "fun": "Fun", - "greentext": "Meme arrows", - "show_yous": "Show (You)s", - "notifications": "Notifications", - "notification_setting_filters": "Filters", - "notification_setting_block_from_strangers": "Block notifications from users who you do not follow", - "notification_setting_privacy": "Privacy", - "notification_setting_hide_notification_contents": "Hide the sender and contents of push notifications", - "notification_mutes": "To stop receiving notifications from a specific user, use a mute.", - "notification_blocks": "Blocking a user stops all notifications as well as unsubscribes them.", - "enable_web_push_notifications": "Enable web push notifications", - "more_settings": "More settings", - "style": { - "switcher": { - "keep_color": "Keep colors", - "keep_shadows": "Keep shadows", - "keep_opacity": "Keep opacity", - "keep_roundness": "Keep roundness", - "keep_fonts": "Keep fonts", - "save_load_hint": "\"Keep\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.", - "reset": "Reset", - "clear_all": "Clear all", - "clear_opacity": "Clear opacity", - "load_theme": "Load theme", - "keep_as_is": "Keep as is", - "use_snapshot": "Old version", - "use_source": "New version", - "help": { - "upgraded_from_v2": "PleromaFE has been upgraded, theme could look a little bit different than you remember.", - "v2_imported": "File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.", - "future_version_imported": "File you imported was made in newer version of FE.", - "older_version_imported": "File you imported was made in older version of FE.", - "snapshot_present": "Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.", - "snapshot_missing": "No theme snapshot was in the file so it could look different than originally envisioned.", - "fe_upgraded": "PleromaFE's theme engine upgraded after version update.", - "fe_downgraded": "PleromaFE's version rolled back.", - "migration_snapshot_ok": "Just to be safe, theme snapshot loaded. You can try loading theme data.", - "migration_napshot_gone": "For whatever reason snapshot was missing, some stuff could look different than you remember.", - "snapshot_source_mismatch": "Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version." - } - }, - "common": { - "color": "色彩", - "opacity": "無透明度", - "contrast": { - "hint": "Contrast ratio is {ratio}, it {level} {context}", - "level": { - "aa": "meets Level AA guideline (minimal)", - "aaa": "meets Level AAA guideline (recommended)", - "bad": "doesn't meet any accessibility guidelines" - }, - "context": { - "18pt": "for large (18pt+) text", - "text": "for text" - } - } - }, - "common_colors": { - "_tab_label": "Common", - "main": "Common colors", - "foreground_hint": "See \"Advanced\" tab for more detailed control", - "rgbo": "Icons, accents, badges" - }, - "advanced_colors": { - "_tab_label": "Advanced", - "alert": "Alert background", - "alert_error": "Error", - "alert_warning": "Warning", - "alert_neutral": "Neutral", - "post": "Posts/User bios", - "badge": "Badge background", - "popover": "Tooltips, menus, popovers", - "badge_notification": "Notification", - "panel_header": "Panel header", - "top_bar": "Top bar", - "borders": "Borders", - "buttons": "Buttons", - "inputs": "Input fields", - "faint_text": "Faded text", - "underlay": "Underlay", - "wallpaper": "Wallpaper", - "poll": "Poll graph", - "icons": "Icons", - "highlight": "Highlighted elements", - "pressed": "Pressed", - "selectedPost": "Selected post", - "selectedMenu": "Selected menu item", - "disabled": "Disabled", - "toggled": "Toggled", - "tabs": "Tabs", - "chat": { - "incoming": "Incoming", - "outgoing": "Outgoing", - "border": "Border" - } - }, - "radii": { - "_tab_label": "Roundness" - }, - "shadows": { - "_tab_label": "Shadow and lighting", - "component": "Component", - "override": "Override", - "shadow_id": "Shadow #{value}", - "blur": "Blur", - "spread": "Spread", - "inset": "Inset", - "hintV3": "For shadows you can also use the {0} notation to use other color slot.", - "filter_hint": { - "always_drop_shadow": "Warning, this shadow always uses {0} when browser supports it.", - "drop_shadow_syntax": "{0} does not support {1} parameter and {2} keyword.", - "avatar_inset": "Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.", - "spread_zero": "Shadows with spread > 0 will appear as if it was set to zero", - "inset_classic": "Inset shadows will be using {0}" - }, - "components": { - "panel": "Panel", - "panelHeader": "Panel header", - "topBar": "Top bar", - "avatar": "User avatar (in profile view)", - "avatarStatus": "User avatar (in post display)", - "popup": "Popups and tooltips", - "button": "Button", - "buttonHover": "Button (hover)", - "buttonPressed": "Button (pressed)", - "buttonPressedHover": "Button (pressed+hover)", - "input": "Input field" - } - }, - "fonts": { - "_tab_label": "Fonts", - "help": "Select font to use for elements of UI. For \"custom\" you have to enter exact font name as it appears in system.", - "components": { - "interface": "Interface", - "input": "Input fields", - "post": "Post text", - "postCode": "Monospaced text in a post (rich text)" - }, - "family": "Font name", - "size": "Size (in px)", - "weight": "Weight (boldness)", - "custom": "Custom" - }, - "preview": { - "header": "Preview", - "content": "Content", - "error": "Example error", - "button": "Button", - "text": "A bunch of more {0} and {1}", - "mono": "content", - "input": "Just landed in L.A.", - "faint_link": "helpful manual", - "fine_print": "Read our {0} to learn nothing useful!", - "header_faint": "This is fine", - "checkbox": "I have skimmed over terms and conditions", - "link": "a nice lil' link" - } - }, - "version": { - "title": "Version", - "backend_version": "Backend version", - "frontend_version": "Frontend version" - }, - "commit_value": "Save", - "commit_value_tooltip": "Value is not saved, press this button to commit your changes", - "reset_value": "Reset", - "reset_value_tooltip": "Reset draft", - "hard_reset_value": "Hard reset", - "hard_reset_value_tooltip": "Remove setting from storage, forcing use of default value" - }, - "admin_dash": { - "window_title": "Administration", - "wip_notice": "This admin dashboard is experimental and WIP, {adminFeLink}.", - "old_ui_link": "old admin UI available here", - "reset_all": "Reset all", - "commit_all": "Save all", - "tabs": { - "nodb": "No DB Config", - "instance": "Instance", - "limits": "Limits", - "frontends": "Front-ends" - }, - "nodb": { - "heading": "Database config is disabled", - "text": "You need to change backend config files so that {property} is set to {value}, see more in {documentation}.", - "documentation": "documentation", - "text2": "Most configuration options will be unavailable." - }, - "captcha": { - "native": "Native", - "kocaptcha": "KoCaptcha" - }, - "instance": { - "instance": "Instance information", - "registrations": "User sign-ups", - "captcha_header": "CAPTCHA", - "kocaptcha": "KoCaptcha settings", - "access": "Instance access", - "restrict": { - "header": "Restrict access for anonymous visitors", - "description": "Detailed setting for allowing/disallowing access to certain aspects of API. By default (indeterminate state) it will disallow if instance is not public, ticked checkbox means disallow access even if instance is public, unticked means allow access even if instance is private. Please note that unexpected behavior might happen if some settings are set, i.e. if profile access is disabled posts will show without profile information.", - "timelines": "Timelines access", - "profiles": "User profiles access", - "activities": "Statues/activities access" - } - }, - "limits": { - "arbitrary_limits": "Arbitrary limits", - "posts": "Post limits", - "uploads": "Attachments limits", - "users": "User profile limits", - "profile_fields": "Profile fields limits", - "user_uploads": "Profile media limits" - }, - "frontend": { - "repository": "Repository link", - "versions": "Available versions", - "build_url": "Build URL", - "reinstall": "Reinstall", - "is_default": "(Default)", - "is_default_custom": "(Default, version: {version})", - "install": "Install", - "install_version": "Install version {version}", - "more_install_options": "More install options", - "more_default_options": "More default setting options", - "set_default": "Set default", - "set_default_version": "Set version {version} as default", - "wip_notice": "Please note that this section is a WIP and lacks certain features as backend implementation of front-end management is incomplete.", - "default_frontend": "Default front-end", - "default_frontend_tip": "Default front-end will be shown to all users. Currently there's no way to for a user to select personal front-end. If you switch away from PleromaFE you'll most likely have to use old and buggy AdminFE to do instance configuration until we replace it.", - "default_frontend_tip2": "WIP: Since Pleroma backend doesn't properly list all installed frontends you'll have to enter name and reference manually. List below provides shortcuts to fill the values.", - "available_frontends": "Available for install" - }, - "temp_overrides": { - ":pleroma": { - ":instance": { - ":public": { - "label": "Instance is public", - "description": "Disabling this will make all API accessible only for logged-in users, this will make Public and Federated timelines inaccessible to anonymous visitors." - }, - ":limit_to_local_content": { - "label": "Limit search to local content", - "description": "Disables global network search for unauthenticated (default), all users or none" - }, - ":description_limit": { - "label": "Limit", - "description": "Character limit for attachment descriptions" - }, - ":background_image": { - "label": "Background image", - "description": "Background image (primarily used by PleromaFE)" - } - } - } - } - }, - "time": { - "unit": { - "days": "{0} day | {0} days", - "days_short": "{0}d", - "hours": "{0} hour | {0} hours", - "hours_short": "{0}h", - "minutes": "{0} minute | {0} minutes", - "minutes_short": "{0}min", - "months": "{0} month | {0} months", - "months_short": "{0}mo", - "seconds": "{0} second | {0} seconds", - "seconds_short": "{0}s", - "weeks": "{0} week | {0} weeks", - "weeks_short": "{0}w", - "years": "{0} year | {0} years", - "years_short": "{0}y" - }, - "in_future": "in {0}", - "in_past": "{0} ago", - "now": "just now", - "now_short": "now" - }, - "timeline": { - "collapse": "Collapse", - "conversation": "Conversation", - "error": "Error fetching timeline: {0}", - "load_older": "Load older statuses", - "no_retweet_hint": "Post is marked as followers-only or direct and cannot be repeated", - "repeated": "repeated", - "show_new": "Show new", - "reload": "Reload", - "up_to_date": "Up-to-date", - "no_more_statuses": "No more statuses", - "no_statuses": "No statuses", - "socket_reconnected": "Realtime connection established", - "socket_broke": "Realtime connection lost: CloseEvent code {0}", - "quick_view_settings": "Quick view settings", - "quick_filter_settings": "Quick filter settings" - }, - "status": { - "favorites": "Favorites", - "repeats": "Repeats", - "repeat_confirm": "Do you really want to repeat this status?", - "repeat_confirm_title": "Repeat confirmation", - "repeat_confirm_accept_button": "Repeat", - "repeat_confirm_cancel_button": "Do not repeat", - "delete": "Delete status", - "delete_error": "Error deleting status: {0}", - "edit": "Edit status", - "edited_at": "(last edited {time})", - "pin": "Pin on profile", - "unpin": "Unpin from profile", - "pinned": "Pinned", - "bookmark": "Bookmark", - "unbookmark": "Unbookmark", - "delete_confirm": "Do you really want to delete this status?", - "delete_confirm_title": "Delete confirmation", - "delete_confirm_accept_button": "Delete", - "delete_confirm_cancel_button": "Keep", - "reply_to": "Reply to", - "mentions": "Mentions", - "replies_list": "Replies:", - "replies_list_with_others": "Replies (+{numReplies} other): | Replies (+{numReplies} others):", - "mute_conversation": "Mute conversation", - "unmute_conversation": "Unmute conversation", - "status_unavailable": "Status unavailable", - "copy_link": "Copy link to status", - "external_source": "External source", - "thread_muted": "Thread muted", - "thread_muted_and_words": ", has words:", - "show_full_subject": "Show full subject", - "hide_full_subject": "Hide full subject", - "show_content": "Show content", - "hide_content": "Hide content", - "status_deleted": "This post was deleted", - "nsfw": "NSFW", - "expand": "Expand", - "you": "(You)", - "plus_more": "+{number} more", - "many_attachments": "Post has {number} attachment(s)", - "collapse_attachments": "Collapse attachments", - "show_all_attachments": "Show all attachments", - "show_attachment_in_modal": "Show in media modal", - "show_attachment_description": "Preview description (open attachment for full description)", - "hide_attachment": "Hide attachment", - "remove_attachment": "Remove attachment", - "attachment_stop_flash": "Stop Flash player", - "move_up": "Shift attachment left", - "move_down": "Shift attachment right", - "open_gallery": "Open gallery", - "thread_hide": "Hide this thread", - "thread_show": "Show this thread", - "thread_show_full": "Show everything under this thread ({numStatus} status in total, max depth {depth}) | Show everything under this thread ({numStatus} statuses in total, max depth {depth})", - "thread_show_full_with_icon": "{icon} {text}", - "thread_follow": "See the remaining part of this thread ({numStatus} status in total) | See the remaining part of this thread ({numStatus} statuses in total)", - "thread_follow_with_icon": "{icon} {text}", - "ancestor_follow": "See {numReplies} other reply under this status | See {numReplies} other replies under this status", - "ancestor_follow_with_icon": "{icon} {text}", - "show_all_conversation_with_icon": "{icon} {text}", - "show_all_conversation": "Show full conversation ({numStatus} other status) | Show full conversation ({numStatus} other statuses)", - "show_only_conversation_under_this": "Only show replies to this status", - "status_history": "Status history", - "reaction_count_label": "{num} person reacted | {num} people reacted" - }, - "user_card": { - "approve": "Approve", - "approve_confirm_title": "Approve confirmation", - "approve_confirm_accept_button": "Approve", - "approve_confirm_cancel_button": "Do not approve", - "approve_confirm": "Do you want to approve {user}'s follow request?", - "block": "Block", - "blocked": "Blocked!", - "block_confirm_title": "Block confirmation", - "block_confirm": "Do you really want to block {user}?", - "block_confirm_accept_button": "Block", - "block_confirm_cancel_button": "Do not block", - "deactivated": "Deactivated", - "deny": "Deny", - "deny_confirm_title": "Deny confirmation", - "deny_confirm_accept_button": "Deny", - "deny_confirm_cancel_button": "Do not deny", - "deny_confirm": "Do you want to deny {user}'s follow request?", - "edit_profile": "Edit profile", - "favorites": "Favorites", - "follow": "Follow", - "follow_cancel": "Cancel request", - "follow_sent": "Request sent!", - "follow_progress": "Requesting…", - "follow_unfollow": "Unfollow", - "unfollow_confirm_title": "Unfollow confirmation", - "unfollow_confirm": "Do you really want to unfollow {user}?", - "unfollow_confirm_accept_button": "Unfollow", - "unfollow_confirm_cancel_button": "Do not unfollow", - "followees": "Following", - "followers": "Followers", - "following": "Following!", - "follows_you": "Follows you!", - "hidden": "Hidden", - "its_you": "It's you!", - "media": "Media", - "mention": "Mention", - "message": "Message", - "mute": "Mute", - "muted": "Muted", - "mute_confirm_title": "Mute confirmation", - "mute_confirm": "Do you really want to mute {user}?", - "mute_confirm_accept_button": "Mute", - "mute_confirm_cancel_button": "Do not mute", - "mute_duration_prompt": "Mute this user for (0 for indefinite time):", - "per_day": "per day", - "remote_follow": "Remote follow", - "remove_follower": "Remove follower", - "remove_follower_confirm_title": "Remove follower confirmation", - "remove_follower_confirm_accept_button": "Remove", - "remove_follower_confirm_cancel_button": "Keep", - "remove_follower_confirm": "Do you really want to remove {user} from your followers?", - "report": "Report", - "statuses": "Statuses", - "subscribe": "Subscribe", - "unsubscribe": "Unsubscribe", - "unblock": "Unblock", - "unblock_progress": "Unblocking…", - "block_progress": "Blocking…", - "unmute": "Unmute", - "unmute_progress": "Unmuting…", - "mute_progress": "Muting…", - "hide_repeats": "Hide repeats", - "show_repeats": "Show repeats", - "bot": "Bot", - "birthday": "Born {birthday}", - "admin_menu": { - "moderation": "Moderation", - "grant_admin": "Grant Admin", - "revoke_admin": "Revoke Admin", - "grant_moderator": "Grant Moderator", - "revoke_moderator": "Revoke Moderator", - "activate_account": "Activate account", - "deactivate_account": "Deactivate account", - "delete_account": "Delete account", - "force_nsfw": "Mark all posts as NSFW", - "strip_media": "Remove media from posts", - "force_unlisted": "Force posts to be unlisted", - "sandbox": "Force posts to be followers-only", - "disable_remote_subscription": "Disallow following user from remote instances", - "disable_any_subscription": "Disallow following user at all", - "quarantine": "Disallow user posts from federating", - "delete_user": "Delete user", - "delete_user_data_and_deactivate_confirmation": "This will permanently delete the data from this account and deactivate it. Are you absolutely sure?" - }, - "highlight": { - "disabled": "No highlight", - "solid": "Solid bg", - "striped": "Striped bg", - "side": "Side stripe" - }, - "note": "Note", - "note_blank": "(None)", - "edit_note": "Edit note", - "edit_note_apply": "Apply", - "edit_note_cancel": "Cancel" - }, - "user_profile": { - "timeline_title": "User timeline", - "profile_does_not_exist": "Sorry, this profile does not exist.", - "profile_loading_error": "Sorry, there was an error loading this profile." - }, - "user_reporting": { - "title": "Reporting {0}", - "add_comment_description": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", - "additional_comments": "Additional comments", - "forward_description": "The account is from another server. Send a copy of the report there as well?", - "forward_to": "Forward to {0}", - "submit": "Submit", - "generic_error": "An error occurred while processing your request." - }, - "who_to_follow": { - "more": "More", - "who_to_follow": "Who to follow" - }, - "tool_tip": { - "media_upload": "Upload media", - "repeat": "Repeat", - "reply": "Reply", - "favorite": "Favorite", - "add_reaction": "Add Reaction", - "user_settings": "User Settings", - "accept_follow_request": "Accept follow request", - "reject_follow_request": "Reject follow request", - "bookmark": "Bookmark", - "toggle_expand": "Expand or collapse notification to show post in full", - "toggle_mute": "Expand or collapse notification to reveal muted content", - "autocomplete_available": "{number} result is available. Use up and down keys to navigate through them. | {number} results are available. Use up and down keys to navigate through them." - }, - "upload": { - "error": { - "base": "上傳 ê 時失敗。", - "message": "傳 buē 起去:{0}", - "file_too_big": "檔案 sài-suh 傷大 [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", - "default": "Koh 試一 kái。" - }, - "file_size_units": { - "B": "B", - "KiB": "KiB", - "MiB": "MiB", - "GiB": "GiB", - "TiB": "TiB" - } - }, - "search": { - "people": "用戶", - "hashtags": "主題標籤", - "person_talking": "{count} ê leh 論", - "people_talking": "{count} ê leh 論", - "no_results": "無半 ê 結果", - "no_more_results": "無其他 ê 結果", - "load_more": "載入 koh 較 tsē 結果" - }, - "password_reset": { - "forgot_password": "Buē 記得密碼?", - "password_reset": "重頭設密碼", - "instruction": "拍 lí ê email 地址 iah 是用者 ê 名。Guán 會送 lí 連結,重頭設定密碼。", - "placeholder": "Lí ê email 地址 iah 是用者 ê 名。", - "check_email": "檢查電子 phue 箱,看有重頭設密碼 ê 連結無。", - "return_home": "轉來頭頁", - "too_many_requests": "Lí kā 請求 ê khòo-tah 用了 ah。等一時仔,閣試一 pái。", - "password_reset_disabled": "密碼重頭設定無開放。請聯絡本站 ê 行政員。", - "password_reset_required": "Beh 登入,著重頭設 lí ê 密碼。", - "password_reset_required_but_mailer_is_disabled": "Lí 需要重頭設密碼,毋 koh tsia 無開放密碼 koh 再設定。請聯絡本站 ê 行政員。" - }, - "chats": { - "you": "Lí:", - "message_user": "傳私人 phue:{nickname}", - "delete": "Thâi 掉", - "chats": "開講", - "new": "發起開講", - "empty_message_error": "無法度 PO 空 ê phue", - "more": "Koh較濟……", - "delete_confirm": "Lí 敢真 ê beh thâi tsit 張 phue?", - "error_loading_chat": "載入開講 ê 時,出箠 ah。", - "error_sending_message": "送 phue ê 時,出箠 ah。", - "empty_chat_list_placeholder": "Lí 猶無佇 tsia 開講過,來開講 lah!" - }, - "lists": { - "lists": "列單", - "new": "新 ê 列單", - "title": "列單標題", - "search": "Tshuē 用者", - "create": "開新 ê", - "save": "保存改變", - "delete": "刣列單", - "following_only": "限定 lí 所關注 ê", - "manage_lists": "管理列單", - "manage_members": "管理列單成員", - "add_members": "Tshiau 閣較 tsē ê 用者", - "remove_from_list": "對列單刣掉", - "add_to_list": "加入去列單", - "is_in_list": "列單已經有 ah ", - "editing_list": "編輯列單 {listTitle}", - "creating_list": "開新 ê 列單", - "update_title": "保存標題", - "really_delete": "敢真正 beh 刣掉列單?", - "error": "操作列單 ê 時陣出重耽:{0}" - }, - "file_type": { - "audio": "音訊", - "video": "影片", - "image": "影像", - "file": "檔案" - }, - "display_date": { - "today": "今 á 日" - }, - "update": { - "big_update_title": "敬請體諒", - "big_update_content": "因為 guán 有一站 á 無發行新版本,所以這个版本會 kap lí 以早慣 sì ê 無仝。", - "update_bugs": "請佇 {pleromaGitlab} 報告任何問題 kap bug,因為 Pleroma 改變真 tsē。雖罔 guán 徹底 leh 試,mā 家 kī 用開發版,伊凡勢有一寡重耽。Guán 歡迎 lín 提供關係所拄著 ê 問題 ê 意見、建議,或者是改進 Pleroma kap Pleroma-FE ê 法度。", - "update_bugs_gitlab": "Pleroma GitLab", - "update_changelog": "Nā beh 知影改變 ê 詳細,請看:{theFullChangelog}.", - "update_changelog_here": "Kui ê 改變日誌", - "art_by": "美編:{linkToArtist}" - }, - "unicode_domain_indicator": { - "tooltip": "這 ê 域名包含毋是 ascii ê 字元。" - } + "about": { + "mrf": { + "federation": "聯邦", + "keyword": { + "keyword_policies": "關鍵字政策", + "ftl_removal": "Tuì「知影 ê 網路」時間線除掉。", + "reject": "拒絕", + "replace": "取代" + + }, + "mrf_policies": "啟用 ê MRF 政策", + "mrf_policies_desc": "MRF 政策操作本站 ê 對外通信行為。以下ê政策啟用 ah:", + "simple": { + "simple_policies": "站臺特有 ê 政策", + "instance": "站", + "reason": "理由", + + "accept": "接受", + "accept_desc": "本站干焦接受下跤 ê 站 ê 短 phue:", + "reject": "拒絕", + "reject_desc": "本站 buē 接受 tuì 以下 ê 站 ê 短 phue:", + "quarantine": "隔離", + "quarantine_desc": "針對下跤 ê 站,本站干焦送出公開ê PO文:", + "ftl_removal": "Tuì「知影 ê 網路」時間線thâi掉", + "ftl_removal_desc": "本站buē 佇「知影 ê 網路」刊下跤 ê 站 ê PO文:", + "media_removal": "Thâi除媒體", + "media_removal_desc": "本站 kā 下跤 ê 站臺送 ê PO文 ê 媒體 lóng thâi 除:", + "media_nsfw": "媒體 lóng 標做「敏感內容」", + "media_nsfw_desc": "本站 kā 下跤 ê 站 ê 媒體,lóng 標做敏感內容:" + } + }, + "staff": "工作人員" + }, + "announcements": { + "page_header": "公告", + "title": "公告", + "mark_as_read_action": "標做有讀", + "post_form_header": "貼公告", + "post_placeholder": "佇 tsia 拍你 ê 公告……", + "post_action": "貼", + "post_error": "錯誤:{error}", + "close_error": "關", + + "start_time_prompt": "開始時間: ", + "end_time_prompt": "結束時間:", + "all_day_prompt": "Tse 是 kui 工 ê 事件", + "published_time_display": "公告佇 {time}", + "start_time_display": "有效 tuì:{time}", + "end_time_display": "中止佇:{time}", + "edit_action": "編輯", + "submit_edit_action": "送出", + "cancel_edit_action": "取消", + "inactive_message": "這个公告 tsit-má 無效力。" + }, + "shoutbox": { + "title": "留話枋" + }, + "domain_mute_card": { + "mute": "予恬去", + "mute_progress": "Teh 予恬……", + "unmute": "予有聲", + "unmute_progress": "Teh 予有聲……" + }, + "exporter": { + "export": "匯出", + "processing": "Teh 處理,較停仔指示你下載檔案……" + }, + "features_panel": { + "shout": "留話枋", + "pleroma_chat_messages": "Pleroma 開講", + + "media_proxy": "媒體代理伺侯器", + "scope_options": "公開範圍選項", + "text_limit": "字數限制", + "title": "有效 ê 功能", + "who_to_follow": "啥儂通綴", + "upload_limit": "檔案 sài-suh 限制" + }, + "finder": { + "error_fetching_user": "Tshuē 用者 ê 時起錯誤", + "find_user": "Tshuē 用者" + }, + "general": { + "apply": "應用", + "submit": "送出", + "more": "Koh 較 tsē", + "loading": "Leh 載入……", + "generic_error": "起錯誤 ah", + "generic_error_message": "起錯誤:{0}", + "error_retry": "請 koh 試一 kái", + "retry": "Koh 試", + "optional": "非必要", + "show_more": "展示較 tsē", + "show_less": "展示較少", + "never_show_again": "Mài koh 展示", + "dismiss": "無視", + "cancel": "取消", + "disable": "無愛用", + "enable": "啟用", + "confirm": "確認", + "verify": "驗證", + "close": "關掉", + "undo": "復原", + "yes": "是", + "no": "毋是", + "peek": "先看 māi", + "scroll_to_top": "捲 kàu 頂懸", + "role": { + "admin": "行政員", + "moderator": "管理員" + }, + "unpin": "無愛 kā 釘", + "pin": "Kā釘起來", + "flash_content": "Ji̍h tsia,用 Ruffle(iáu teh 試驗,可能 buē 紡)看 Flash ê 內容。", + "flash_sepcurity": "注意 tse 可能有危險,因為 Flash 內容猶原是任意 ê 程式碼。", + "flash_fail": "載入 flash 內容失敗,詳細會當看控制臺。", + "scope_in_timeline": { + "direct": "私人 phue", + "private": "干焦 hōo 綴 lí ê 看", + "public": "公開佇公共時間線", + "unlisted": "無愛公開佇公共時間線" + } + }, + "image_cropper": { + "crop_picture": "裁相片", + "save": "儲存", + "save_without_cropping": "無裁就儲存", + "cancel": "取消" + }, + "importer": { + "submit": "送出", + "success": "匯入成功。", + "error": "佇匯入 ê 時起錯誤。" + }, + "login": { + "login": "登入", + "description": "用 OAuth 登入", + "logout": "登出", + "logout_confirm_title": "登出確認", + "logout_confirm": "Lí 敢真正 beh 登出?", + "logout_confirm_accept_button": "登出", + "logout_confirm_cancel_button": "mài 登出", + "password": "密碼", + "placeholder": "例:lain", + "register": "註冊", + "username": "用者 ê 名", + "hint": "登入,參與討論", + "authentication_code": "認證碼", + "enter_recovery_code": "輸入恢復碼", + "enter_two_factor_code": "輸入兩階段認證碼", + "recovery_code": "恢復碼", + "heading": { + "totp": "兩階段認證", + "recovery": "兩階段恢復" + } + }, + "media_modal": { + "previous": "頂一 ê", + "next": "後一个", + "counter": "{current} / {total}", + "hide": "關掉媒體瀏覽" + }, + "nav": { + "about": "有關……", + "administration": "管理", + "back": "轉去", + "friend_requests": "跟綴請求", + "mentions": "The̍h起", + "interactions": "互動", + "dms": "私人 phue", + "public_tl": "公共時間線", + "timeline": "時間線", + "home_timeline": "厝 ê 時間線", + "twkn": "知影 ê 網路", + "bookmarks": "冊籤", + "user_search": "Tshuē 用者", + + "search_close": "關掉 tshiau-tshuē liâu", + "who_to_follow": "Siáng 會當綴?", + "preferences": "個人 ê 設定", + "timelines": "時間流", + "chats": "開講", + "lists": "列單", + "edit_nav_mobile": "自訂導覽條", + "edit_pinned": "編輯釘起來 ê 項目", + "edit_finish": "編輯 suah", + "mobile_sidebar": "切換行動版 ê 邊 á liâu", + "mobile_notifications": "拍開通知(有無讀ê)", + "mobile_notifications_close": "關掉通知", + "announcements": "公告" + }, + "notifications": { + "broken_favorite": "狀態毋知影,leh tshiau-tshuē……", + "error": "佇取得通知 ê 時起錯誤:{0}", + "favorited_you": "kah 意 lí ê 狀態", + "followed_you": "綴 lí", + "follow_request": "想 beh 綴 lí", + "load_older": "載入 khah 早 ê 通知", + "notifications": "通知", + "read": "讀!", + "repeated_you": "轉送 lí ê 狀態", + "no_more_notifications": "無別 ê 通知", + "migrated_to": "移民到", + "reacted_with": "顯出{0} ê 反應", + "submitted_report": "送出檢舉", + "poll_ended": "投票結束" + }, + "polls": { + "add_poll": "開投票", + "add_option": "加選項", + "option": "選項", + "votes": "票", + "people_voted_count": "{count} 位有投", + "votes_count": "{count} 票", + "vote": "投票", + "type": "投票 ê 形式", + "single_choice": "孤選", + "multiple_choices": "Tsē 選", + "expiry": "投票期限", + "expires_in": "投票 tī {0} 以後結束", + "expired": "投票佇 {0} 以前結束", + "not_enough_options": "投票 ê 選項傷少。" + }, + "emoji": { + "stickers": "貼圖", + "emoji": "繪文字", + "keep_open": "Hōo 揀選仔開 leh", + "search_emoji": "Tshuē 繪文字", + "add_emoji": "插繪文字", + "custom": "定製 ê 繪文字", + "unpacked": "拍開 ê 繪文字", + "unicode": "Unicode 繪文字", + "unicode_groups": { + "activities": "活動", + "animals-and-nature": "動物 kap 自然", + "flags": "旗 á", + "food-and-drink": "食物 kap 飲料", + "objects": "物體", + "people-and-body": "Lâng kap 身軀", + "smileys-and-emotion": "笑面 kap 情緒", + "symbols": "符號", + "travel-and-places": "旅遊 kap 所在" + }, + "load_all_hint": "載入頭前 {saneAmount} ê 繪文字,規个攏載入效能可能 ē khah 食力。", + "load_all": "Kā {emojiAmount} ê 繪文字攏載入", + "regional_indicator": "地區指引 {letter}" + }, + "errors": { + "storage_unavailable": "Pleroma buē-tàng the̍h 著瀏覽器儲存 ê。Lí ê 登入狀態抑是局部設定 buē 儲存,mā 凡勢 tú 著意料外 ê 問題。拍開 cookie 看覓。" + }, + "interactions": { + "favs_repeats": "轉送 kap kah 意", + "follows": "最近綴 lí ê", + "emoji_reactions": "繪文字 ê 回應", + "reports": "檢舉", + "moves": "用者 ê 移民", + "load_older": "載入 koh khah 早 ê 互動" + }, + "post_status": { + "edit_status": "編輯狀態", + "new_status": "PO 新 ê 狀態", + "account_not_locked_warning": "Lín 口座毋是 {0} ê。見 nā 有 lâng 綴--lí,ē-tàng 看著 lí ê 限定跟綴者 ê PO 文。.", + "account_not_locked_warning_link": "鎖起來 ê 口座", + "attachments_sensitive": "Kā 附件標做敏感內容。", + "media_description": "媒體說明", + "content_type": { + "text/plain": "純 ê 文字" + + }, + "content_type_selection": "貼 ê 形式", + "content_warning": "主旨(毋是必要)", + "default": "Tú 正 kàu 高雄 ah。", + "direct_warning_to_all": "Tsit ê PO 文通 hōo 逐 ê 提起 ê 用者看見。", + "direct_warning_to_first_only": "Tsit ê PO 文,kan-ta 短信 tú 開始提起 ê 用者,tsiah 通看見。", + "edit_remote_warning": "別 ê 站臺可能無支援編輯,無法度收著 PO 文上新 ê 版本。", + "edit_unsupported_warning": "Pleroma 無支持編輯 the̍h 起 hām 投票。", + "posting": "PO 文", + + "preview": "Sing 看覓", + "preview_empty": "空 ê", + "empty_status_error": "無法度 PO 無檔案 koh 空 ê 狀態。", + "media_description_error": "更新媒體失敗,請 koh 試一 kái。", + "scope_notice": { + "public": "Tsit ê PO 文通予逐 ê 儂看著。", + "private": "Tsit ê PO 文 kan-ta 予綴 lí ê 看著。", + "unlisted": "Tsit ê PO 文 buē 公開 tī 公共時間線 kap 知影 ê 網路。" + }, + "scope_notice_dismiss": "關掉 tsit ê 通知", + "scope": { + "direct": "私人 phue - PO 文干焦予提起 ê 用者看著", + "private": "限定綴 ê 儂 - PO 文干焦予綴 lí ê 儂看著", + "public": "公開 - PO kàu 公開時間線", + "unlisted": "Mài 列出來 - Mài PO tī 公開時間線。" + } + }, + "registration": { + "bio_optional": "介紹(毋是必要)", + + "email_optional": "Email(毋是必要)", + "fullname": "顯示 ê 名", + "password_confirm": "確認密碼", + "registration": "註冊", + "token": "邀請碼", + "captcha": "驗證碼", + "new_captcha": "Ji̍h 圖片,the̍h 新 ê 驗證碼", + + "fullname_placeholder": "e.g. 岩倉 Lain", + "bio_placeholder": "e.g.\nLí 好,我是 Lain。我是日本動畫 ê 角色,tuà tī 日本 ê 郊區。Lí 凡勢 bat tī Wired 知影我。", + "reason": "註冊 ê 理由", + "reason_placeholder": "本站靠人工審核註冊。\n介紹管理者 lí beh tī tsia 註冊 ê 理由。", + "register": "註冊", + "validations": { + "username_required": "著愛添", + "fullname_required": "著愛添", + "email_required": "著愛添", + "password_required": "著愛添", + "password_confirmation_required": "著愛添", + "password_confirmation_match": "密碼著相 kâng", + "birthday_required": "著愛添", + "birthday_min_age": "Buē-tàng tī {date} 以後" + }, + "email_language": "Lí想 beh 服侍器用 siánn 物語言寄批 hōo lí?", + "birthday": "生日", + "birthday_optional": "生日(毋是必要):" + }, + "remote_user_resolver": { + "remote_user_resolver": "別站用者 ê 解析器", + + "error": "Tshuē無" + }, + "report": { + "reporter": "檢舉人:", + "reported_user": "Beh 檢舉 ê 用者:", + "reported_statuses": "Beh 檢舉 ê 狀態:", + + "state_open": "開 ê", + "state_closed": "關 ê", + "state_resolved": "解決了 ê" + }, + "selectable_list": { + "select_all": "攏總揀" + }, + "settings": { + "add_language": "加一 ê 備用 ê 語言", + "remove_language": "Ni 掉", + "primary_language": "主要語言:", + "fallback_language": "備用語言 {index}:", + "app_name": "App ê 名", + "expert_mode": "進階模式", + "save": "保存改變", + "security": "安全", + "setting_changed": "設定 kap 預先 ê 有 tsing 差", + + "style": { + + "common": { + "color": "色彩", + "opacity": "無透明度", + "contrast": { + "hint": "Contrast ratio is {ratio}, it {level} {context}" + } + } + + }, + + + "upload": { + "error": { + "base": "上傳 ê 時失敗。", + "message": "傳 buē 起去:{0}", + "file_too_big": "檔案 sài-suh 傷大 [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", + "default": "Koh 試一 kái。" + }, + "file_size_units": {} + }, + "search": { + "people": "用戶", + "hashtags": "主題標籤", + "person_talking": "{count} ê leh 論", + "people_talking": "{count} ê leh 論", + "no_results": "無半 ê 結果", + "no_more_results": "無其他 ê 結果", + "load_more": "載入 koh 較 tsē 結果" + }, + "password_reset": { + "forgot_password": "Buē 記得密碼?", + "password_reset": "重頭設密碼", + "instruction": "拍 lí ê email 地址 iah 是用者 ê 名。Guán 會送 lí 連結,重頭設定密碼。", + "placeholder": "Lí ê email 地址 iah 是用者 ê 名。", + "check_email": "檢查電子 phue 箱,看有重頭設密碼 ê 連結無。", + "return_home": "轉來頭頁", + "too_many_requests": "Lí kā 請求 ê khòo-tah 用了 ah。等一時仔,閣試一 pái。", + "password_reset_disabled": "密碼重頭設定無開放。請聯絡本站 ê 行政員。", + "password_reset_required": "Beh 登入,著重頭設 lí ê 密碼。", + "password_reset_required_but_mailer_is_disabled": "Lí 需要重頭設密碼,毋 koh tsia 無開放密碼 koh 再設定。請聯絡本站 ê 行政員。" + }, + "chats": { + + "message_user": "傳私人 phue:{nickname}", + "delete": "Thâi 掉", + "chats": "開講", + "new": "發起開講", + "empty_message_error": "無法度 PO 空 ê phue", + "more": "Koh較濟……", + "delete_confirm": "Lí 敢真 ê beh thâi tsit 張 phue?", + "error_loading_chat": "載入開講 ê 時,出箠 ah。", + "error_sending_message": "送 phue ê 時,出箠 ah。", + "empty_chat_list_placeholder": "Lí 猶無佇 tsia 開講過,來開講 lah!" + }, + "lists": { + "lists": "列單", + "new": "新 ê 列單", + "title": "列單標題", + "search": "Tshuē 用者", + "create": "開新 ê", + "save": "保存改變", + "delete": "刣列單", + "following_only": "限定 lí 所關注 ê", + "manage_lists": "管理列單", + "manage_members": "管理列單成員", + "add_members": "Tshiau 閣較 tsē ê 用者", + "remove_from_list": "對列單刣掉", + "add_to_list": "加入去列單", + "is_in_list": "列單已經有 ah ", + "editing_list": "編輯列單 {listTitle}", + "creating_list": "開新 ê 列單", + "update_title": "保存標題", + "really_delete": "敢真正 beh 刣掉列單?", + "error": "操作列單 ê 時陣出重耽:{0}" + }, + "file_type": { + "audio": "音訊", + "video": "影片", + "image": "影像", + "file": "檔案" + }, + "display_date": { + "today": "今 á 日" + }, + "update": { + "big_update_title": "敬請體諒", + "big_update_content": "因為 guán 有一站 á 無發行新版本,所以這个版本會 kap lí 以早慣 sì ê 無仝。", + "update_bugs": "請佇 {pleromaGitlab} 報告任何問題 kap bug,因為 Pleroma 改變真 tsē。雖罔 guán 徹底 leh 試,mā 家 kī 用開發版,伊凡勢有一寡重耽。Guán 歡迎 lín 提供關係所拄著 ê 問題 ê 意見、建議,或者是改進 Pleroma kap Pleroma-FE ê 法度。", + + "update_changelog": "Nā beh 知影改變 ê 詳細,請看:{theFullChangelog}.", + "update_changelog_here": "Kui ê 改變日誌", + "art_by": "美編:{linkToArtist}" + }, + "unicode_domain_indicator": { + "tooltip": "這 ê 域名包含毋是 ascii ê 字元。" + } + } } From 8cc6b213fb3581caa77637a45ee60ee20268218a Mon Sep 17 00:00:00 2001 From: tusooa Date: Thu, 29 Jun 2023 10:27:02 -0400 Subject: [PATCH 22/43] Fix react button misalignment on safari ios --- changelog.d/react-button-safari.fix | 1 + src/components/emoji_reactions/emoji_reactions.vue | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 changelog.d/react-button-safari.fix diff --git a/changelog.d/react-button-safari.fix b/changelog.d/react-button-safari.fix new file mode 100644 index 000000000..9846d50d0 --- /dev/null +++ b/changelog.d/react-button-safari.fix @@ -0,0 +1 @@ +Fix react button misalignment on safari ios diff --git a/src/components/emoji_reactions/emoji_reactions.vue b/src/components/emoji_reactions/emoji_reactions.vue index 92fc58ca4..c11b338ec 100644 --- a/src/components/emoji_reactions/emoji_reactions.vue +++ b/src/components/emoji_reactions/emoji_reactions.vue @@ -93,6 +93,7 @@ .emoji-reaction-count-button { background-color: var(--btn); + margin: 0; height: 100%; border-top-left-radius: 0; border-bottom-left-radius: 0; @@ -120,6 +121,7 @@ box-sizing: border-box; border-top-right-radius: 0; border-bottom-right-radius: 0; + margin: 0; .reaction-emoji { width: var(--emoji-size); From 09402e2537e0c43c52bd8345301885647e841ed1 Mon Sep 17 00:00:00 2001 From: tusooa Date: Thu, 29 Jun 2023 11:31:07 -0400 Subject: [PATCH 23/43] Fix scrolling emoji selector in modal in safari ios --- changelog.d/scroll-emoji-selector-safari.fix | 1 + src/components/emoji_picker/emoji_picker.js | 4 ++++ src/components/emoji_picker/emoji_picker.vue | 2 ++ 3 files changed, 7 insertions(+) create mode 100644 changelog.d/scroll-emoji-selector-safari.fix diff --git a/changelog.d/scroll-emoji-selector-safari.fix b/changelog.d/scroll-emoji-selector-safari.fix new file mode 100644 index 000000000..3f5dda7d8 --- /dev/null +++ b/changelog.d/scroll-emoji-selector-safari.fix @@ -0,0 +1 @@ +Fix scrolling emoji selector in modal in safari ios diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js index 349b043df..30c01aa52 100644 --- a/src/components/emoji_picker/emoji_picker.js +++ b/src/components/emoji_picker/emoji_picker.js @@ -105,6 +105,7 @@ const EmojiPicker = { default: false } }, + inject: ['popoversZLayer'], data () { return { keyword: '', @@ -350,6 +351,9 @@ const EmojiPicker = { return emoji.displayText } + }, + isInModal () { + return this.popoversZLayer === 'modals' } } } diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue index 6972164b0..3e77d5232 100644 --- a/src/components/emoji_picker/emoji_picker.vue +++ b/src/components/emoji_picker/emoji_picker.vue @@ -12,6 +12,7 @@ Date: Thu, 29 Jun 2023 11:40:33 -0400 Subject: [PATCH 24/43] Comment the v-body-scroll-lock usage in code --- src/components/emoji_picker/emoji_picker.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue index 3e77d5232..aacd7a220 100644 --- a/src/components/emoji_picker/emoji_picker.vue +++ b/src/components/emoji_picker/emoji_picker.vue @@ -12,6 +12,11 @@ v-body-scroll-lock="isInModal" > v-body-scroll-lock="isInModal" :class="groupsScrolledClass" :min-item-size="minItemSize" From 9fa0c05b35d175a8186899ec46933bf437a2444c Mon Sep 17 00:00:00 2001 From: tusooa Date: Thu, 29 Jun 2023 11:43:49 -0400 Subject: [PATCH 25/43] Fix lint --- src/components/emoji_picker/emoji_picker.vue | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue index aacd7a220..227d7718b 100644 --- a/src/components/emoji_picker/emoji_picker.vue +++ b/src/components/emoji_picker/emoji_picker.vue @@ -9,15 +9,15 @@ >