From 43e172a902234d37cb3702556d03a6a62a0a9154 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 12:02:03 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E4=BF=84=E8=AF=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 基于en翻译成俄语版, slogan"替换为本土化的товь уши и хвосты — будет жарко!🔥 --- public/locales/ru | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 public/locales/ru diff --git a/public/locales/ru b/public/locales/ru new file mode 100644 index 0000000..a9d7f99 --- /dev/null +++ b/public/locales/ru @@ -0,0 +1,118 @@ +{ + "header": { + "title": "Фуркон календарь", + "slogan": "Готовь уши и хвосты — будет жарко!🔥", + "nav": { + "homepage": "главная страница", + "city": "город", + "organization": "Организаторы", + "years": "временная шкала" + } + }, + "footer": { + "friendsLink": "Партнёрские ссылки", + "aboutUs": "О нас", + "disclaimer": "Сведения носят справочный характер.Официальный источник — сайт организатора.", + "use": "Сайт создан", + "and": "и", + "made": " " + }, + "homepage": { + "total": "{{total}} Всего фурконов", + "month": "{{month}} ", + "nextYearMonth": "в{{month}}следующего года", + "group": { + "status": { + "passed": "Завершено", + "now": "Прямо сейчас!", + "soon": "Скоро будет!", + "next": "Ещё в этом году", + "nextYear": "Смотрим на следующий год" + } + }, + "noResult": "По вашему запросу конвентов не найдено...", + "noResultTip": "Попробуйте другие параметры... или подождём вместе?", + "noResultContact": "Сообщите нам об анонсированном фурконе! Контакты — в подвале сайта." + }, + "event": { + "filter": { + "onlyAvailable": "Только предстоящие ", + "all": "Все размеры", + "cosy": "Камерные (0-100)", + "small": "Камерные (100-500)", + "medium": "Камерные (500-1,000)", + "large": "Камерные (1,000-3,000)", + "xlarge": "Камерные (3,000-5,000)", + "xxlarge": "Супер-гигантские (5,000+)", + "mega": "Супер-гигантские (10,000+ )" + }, + "status": { + "cancel": "Мероприятие отменено организаторами и не состоится" + }, + "type": { + "all-in-con": "Многофункциональный фуркон", + "comic-market": "Комикет-ярмарка", + "suit-only-con": "Фурсют-митап", + "travel-con": "Путешествие фурри", + "fandom-meetup": "Тематический сход" + }, + "locationType": { + "hotel": "Отель", + "venue": "Площадка", + "online": "Онлайн" + }, + "hostBy": "Организатор: {{hostName}}", + "unknown": "Пока не объявлено", + "scaleDes": "Предположительно {{scale}} мероприятие", + "scale": { + "all": "Все размеры", + "cosy": "Камерные (0-100)", + "small": "Камерные (100-500)", + "medium": "Камерные (500-1,000)", + "large": "Камерные (1,000-3,000)", + "xlarge": "Камерные (3,000-5,000)", + "xxlarge": "Супер-гигантские (5,000+)", + "mega": "Супер-гигантские (10,000+ )" + }, + "goToSource": "Перейти к источнику", + "map": "Карта конвента", + "mapLoading": "Открыть в Gaode Map...", + "gotoGaoDe": "Открыть в Gaode Map", + "gotoOrganization": "Участники и стенды", + "dateFormat": "MMMM dd, yyyy" + }, + "organization": { + "active": "Active Organizers", + "inactive": "Inactive Organizers", + "createdAt": "Established {{distance}} ago", + "firstTimeEvent": "First held on {{year}}/{{month}}/{{day}}", + "firstTimeShow": "First appeared on {{year}}/{{month}}/{{day}}", + "totalEvent": "A total of {{amount}} furry conventions/gatherings recorded", + "website": "Official website", + "bilibili": "Bilibili", + "twitter": "Twitter", + "weibo": "Weibo", + "wikifur": "Wikifur", + "facebook": "Facebook", + "plurk": "Plurk", + "rednote": "RedNote", + "qq": "Copy QQ group number: {{qq}}", + "copyQq": "Copy QQ group number", + "qqCopySuccess": "🥳 Copied successfully, go join the QQ group now", + "mail": "Email {{email}}", + "copyMail": "Copy Email", + "mailCopySuccess": "🥳 Copied successfully, go send an email now", + "des": "Organizer introduction", + "defaultDes": "This organizer is lazy and hasn't written any introduction.", + "passedEvent": "Past conventions" + }, + "years": { + "title": "Overview", + "des": "FCC has documented {{totalAmount}} furry cons across {{totalYear}} years:", + "unknown": "Not yet scheduled", + "known": "{{year}}", + "thisYear": "Current year", + "total": "Wrapping up {{total}} amazing furry conventions this year", + "month": "{{month}} " + } +} From fe4c311004de4d4f8f44f7d153332335999a07c5 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 13:52:24 +0800 Subject: [PATCH 02/17] Update ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译organization和years --- public/locales/ru | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/public/locales/ru b/public/locales/ru index a9d7f99..8a83869 100644 --- a/public/locales/ru +++ b/public/locales/ru @@ -82,37 +82,37 @@ "dateFormat": "MMMM dd, yyyy" }, "organization": { - "active": "Active Organizers", - "inactive": "Inactive Organizers", - "createdAt": "Established {{distance}} ago", - "firstTimeEvent": "First held on {{year}}/{{month}}/{{day}}", - "firstTimeShow": "First appeared on {{year}}/{{month}}/{{day}}", - "totalEvent": "A total of {{amount}} furry conventions/gatherings recorded", - "website": "Official website", + "active": "Активные организаторы", + "inactive": "Неактивные организаторы", + "createdAt": "Основан {{distance}} назад", + "firstTimeEvent": "Первый фуркон: {{day}}.{{month}}.{{year}}", + "firstTimeShow": "Впервые на сцене: {{day}}.{{month}}.{{year}}", + "totalEvent": "Зафиксировано {{amount}} фурконов/встреч", + "website": "Официальный сайт", "bilibili": "Bilibili", "twitter": "Twitter", "weibo": "Weibo", - "wikifur": "Wikifur", + "wikifur": "WikiFur", "facebook": "Facebook", "plurk": "Plurk", "rednote": "RedNote", - "qq": "Copy QQ group number: {{qq}}", - "copyQq": "Copy QQ group number", - "qqCopySuccess": "🥳 Copied successfully, go join the QQ group now", - "mail": "Email {{email}}", - "copyMail": "Copy Email", - "mailCopySuccess": "🥳 Copied successfully, go send an email now", - "des": "Organizer introduction", - "defaultDes": "This organizer is lazy and hasn't written any introduction.", - "passedEvent": "Past conventions" + "qq": "QQ International: {{qq}}", + "copyQq": "Скопировать номер QQ-группы", + "qqCopySuccess": "🥳 Скопировано! Присоединяйтесь к группе QQ International", + "mail": "Почта: {{email}}", + "copyMail": "Скопировать адрес", + "mailCopySuccess": "🥳 Скопировано! Пишите письмо", + "des": "Об организаторе", + "defaultDes": "Организатор ленив и не написал описание", + "passedEvent": "Прошедшие фурконы" }, "years": { - "title": "Overview", - "des": "FCC has documented {{totalAmount}} furry cons across {{totalYear}} years:", - "unknown": "Not yet scheduled", - "known": "{{year}}", - "thisYear": "Current year", - "total": "Wrapping up {{total}} amazing furry conventions this year", - "month": "{{month}} " + "title": "Итоги", + "des": "За {{totalYear}} лет в календаре фурри-мероприятий собрано {{totalAmount}} фурконов/встреч. Среди них:", + "unknown": "Дата уточняется", + "known": "{{year}} год", + "thisYear": "В этом году", + "total": "Всего {{total}} фурконов/встреч", + "month": "{{month}} месяц" } } From 0031cd2926c9b2d15ae443d542952b041018d494 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 14:27:27 +0800 Subject: [PATCH 03/17] Create common.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 繁体中文(台湾)翻译 --- public/locales/zh-Hans-tw/common.json | 117 ++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 public/locales/zh-Hans-tw/common.json diff --git a/public/locales/zh-Hans-tw/common.json b/public/locales/zh-Hans-tw/common.json new file mode 100644 index 0000000..c91a47a --- /dev/null +++ b/public/locales/zh-Hans-tw/common.json @@ -0,0 +1,117 @@ +{ + "header": { + "title": "獸展行事曆", + "slogan": "放假囉!", + "nav": { + "homepage": "首頁", + "city": "城市", + "organization": "主辦單位", + "years": "年度總覽" + } + }, + "footer": { + "friendsLink": "合作連結", + "aboutUs": "關於我們", + "disclaimer": "本頁資訊僅供參考,詳情請以活動官方公告為準", + "use": "採用", + "and": "與", + "made": "技術製作" + }, + "homepage": { + "total": "共收錄 {{total}} 場展會", + "month": "{{month}}月", + "nextYearMonth": "明年{{month}}月", + "group": { + "status": { + "passed": "已結束", + "now": "正在舉行", + "soon": "即將開始", + "next": "今年場次", + "nextYear": "明年展會" + } + }, + "noResult": "目前沒有符合條件的展會...", + "noResultTip": "試試其他搜尋條件,或是...再等等看?", + "noResultContact": "歡迎透過頁尾聯絡方式,向我們回報已公佈的展會資訊!" + }, + "event": { + "filter": { + "onlyAvailable": "只看未開始的展會", + "all": "所有規模", + "cosy": "迷你型(0-100人)", + "small": "小型(100-500人)", + "medium": "中型(500-1000人)", + "large": "大型(1000-3000人)", + "xlarge": "超大型(3000-5000人)", + "xxlarge": "特大型(5000人以上)", + "mega": "巨型(破萬人)" + }, + "status": { + "cancel": "活動已由主辦單位取消。" + }, + "type": { + "all-in-con": "綜合型展會", + "comic-market": "販售會", + "suit-only-con": "獸裝限定聚", + "travel-con": "旅行聚會", + "fandom-meetup": "主題同好聚" + }, + "locationType": { + "hotel": "飯店", + "venue": "展演場館", + "online": "線上活動" + }, + "hostBy": "主辦單位:{{hostName}}", + "unknown": "尚未公佈", + "scaleDes": "預估為 {{scale}} 展會", + "scale": { + "cosy": "迷你型(0-100人)", + "small": "小型規模(100-500人)", + "medium": "中型規模(500-1000人)", + "large": "大型規模(1000-3000人)", + "xlarge": "超大型規模(3000-5000人)", + "xxlarge": "特大型規模(5000人以上)", + "mega": "巨型規模(破萬人)" + }, + "goToSource": "查看原始資訊", + "map": "活動地圖", + "mapLoading": "地圖載入中", + "gotoGaoDe": "用高德地圖查看", + "gotoOrganization": "查看主辦單位", + "dateFormat": "yyyy年MM月dd日" + }, + "organization": { + "active": "營運中主辦", + "inactive": "已停辦主辦", + "createdAt": "創立於 {{distance}}", + "firstTimeEvent": "首場展會:{{year}}年{{month}}月{{day}}日", + "firstTimeShow": "首次登場:{{year}}年{{month}}月{{day}}日", + "totalEvent": "累計舉辦 {{amount}} 場展會/獸聚", + "website": "官方網站", + "bilibili": "Bilibili", + "twitter": "Twitter", + "weibo": "微博", + "wikifur": "前往 Wikifur 瞭解更多", + "facebook": "Facebook", + "plurk": "Plurk", + "rednote": "小紅書", + "qq": "QQ群號:{{qq}}", + "copyQq": "複製QQ群號", + "qqCopySuccess": "🥳 複製成功!請至QQ使用群號搜尋", + "mail": "寄信至 {{email}}", + "copyMail": "複製信箱", + "mailCopySuccess": "🥳 複製成功!快去寄信吧", + "des": "主辦單位簡介", + "defaultDes": "這個主辦單位尚未提供簡介。", + "passedEvent": "歷年活動" + }, + "years": { + "title": "年度統計", + "des": "獸展行事曆共收錄 {{totalYear}} 個年度的 {{totalAmount}} 場展會/獸聚。其中:", + "unknown": "日期未定", + "known": "{{year}}年", + "thisYear": "本年度", + "total": "共 {{total}} 場展會/獸聚", + "month": "{{month}}月" + } +} From 6fb6d459aefa43ff72f2807e4fab2e2b3315ae29 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 14:55:21 +0800 Subject: [PATCH 04/17] Update common.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充all:全部规模>Overall scale --- public/locales/en/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 80d5496..d7999aa 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -37,6 +37,7 @@ "event": { "filter": { "onlyAvailable": "Only view upcoming conventions", + "all": "Overall scale", "cosy": "Mini (0-100 attendees)", "small": "Small (100-500 attendees)", "medium": "Medium (500-1,000 attendees)", From 3b7ffd0d3e5f1163192f5a11948050fc5dd37a1e Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:26:08 +0800 Subject: [PATCH 05/17] Update next-i18next.config.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充zh-Hans-tw、ru --- next-i18next.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 0bf245b..2d61582 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -2,8 +2,8 @@ module.exports = { i18n: { defaultLocale: "zh-Hans", - locales: ["zh-Hans", "en"], + locales: ["zh-Hans", "zh-Hans-tw", "en", "ru"], localeDetection: false, }, - reloadOnPrerender: process.env.NODE_ENV === "development", + reloadOnPrerender: locales: ["zh-Hans", "zh-Hans-tw", "en", "ru"],.env.NODE_ENV === "development", }; From 87cdfc4d371dd67cf4f69956ce159698650360bd Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:40:27 +0800 Subject: [PATCH 06/17] Delete public/locales/ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重新创建文件夹 --- public/locales/ru | 118 ---------------------------------------------- 1 file changed, 118 deletions(-) delete mode 100644 public/locales/ru diff --git a/public/locales/ru b/public/locales/ru deleted file mode 100644 index 8a83869..0000000 --- a/public/locales/ru +++ /dev/null @@ -1,118 +0,0 @@ -{ - "header": { - "title": "Фуркон календарь", - "slogan": "Готовь уши и хвосты — будет жарко!🔥", - "nav": { - "homepage": "главная страница", - "city": "город", - "organization": "Организаторы", - "years": "временная шкала" - } - }, - "footer": { - "friendsLink": "Партнёрские ссылки", - "aboutUs": "О нас", - "disclaimer": "Сведения носят справочный характер.Официальный источник — сайт организатора.", - "use": "Сайт создан", - "and": "и", - "made": " " - }, - "homepage": { - "total": "{{total}} Всего фурконов", - "month": "{{month}} ", - "nextYearMonth": "в{{month}}следующего года", - "group": { - "status": { - "passed": "Завершено", - "now": "Прямо сейчас!", - "soon": "Скоро будет!", - "next": "Ещё в этом году", - "nextYear": "Смотрим на следующий год" - } - }, - "noResult": "По вашему запросу конвентов не найдено...", - "noResultTip": "Попробуйте другие параметры... или подождём вместе?", - "noResultContact": "Сообщите нам об анонсированном фурконе! Контакты — в подвале сайта." - }, - "event": { - "filter": { - "onlyAvailable": "Только предстоящие ", - "all": "Все размеры", - "cosy": "Камерные (0-100)", - "small": "Камерные (100-500)", - "medium": "Камерные (500-1,000)", - "large": "Камерные (1,000-3,000)", - "xlarge": "Камерные (3,000-5,000)", - "xxlarge": "Супер-гигантские (5,000+)", - "mega": "Супер-гигантские (10,000+ )" - }, - "status": { - "cancel": "Мероприятие отменено организаторами и не состоится" - }, - "type": { - "all-in-con": "Многофункциональный фуркон", - "comic-market": "Комикет-ярмарка", - "suit-only-con": "Фурсют-митап", - "travel-con": "Путешествие фурри", - "fandom-meetup": "Тематический сход" - }, - "locationType": { - "hotel": "Отель", - "venue": "Площадка", - "online": "Онлайн" - }, - "hostBy": "Организатор: {{hostName}}", - "unknown": "Пока не объявлено", - "scaleDes": "Предположительно {{scale}} мероприятие", - "scale": { - "all": "Все размеры", - "cosy": "Камерные (0-100)", - "small": "Камерные (100-500)", - "medium": "Камерные (500-1,000)", - "large": "Камерные (1,000-3,000)", - "xlarge": "Камерные (3,000-5,000)", - "xxlarge": "Супер-гигантские (5,000+)", - "mega": "Супер-гигантские (10,000+ )" - }, - "goToSource": "Перейти к источнику", - "map": "Карта конвента", - "mapLoading": "Открыть в Gaode Map...", - "gotoGaoDe": "Открыть в Gaode Map", - "gotoOrganization": "Участники и стенды", - "dateFormat": "MMMM dd, yyyy" - }, - "organization": { - "active": "Активные организаторы", - "inactive": "Неактивные организаторы", - "createdAt": "Основан {{distance}} назад", - "firstTimeEvent": "Первый фуркон: {{day}}.{{month}}.{{year}}", - "firstTimeShow": "Впервые на сцене: {{day}}.{{month}}.{{year}}", - "totalEvent": "Зафиксировано {{amount}} фурконов/встреч", - "website": "Официальный сайт", - "bilibili": "Bilibili", - "twitter": "Twitter", - "weibo": "Weibo", - "wikifur": "WikiFur", - "facebook": "Facebook", - "plurk": "Plurk", - "rednote": "RedNote", - "qq": "QQ International: {{qq}}", - "copyQq": "Скопировать номер QQ-группы", - "qqCopySuccess": "🥳 Скопировано! Присоединяйтесь к группе QQ International", - "mail": "Почта: {{email}}", - "copyMail": "Скопировать адрес", - "mailCopySuccess": "🥳 Скопировано! Пишите письмо", - "des": "Об организаторе", - "defaultDes": "Организатор ленив и не написал описание", - "passedEvent": "Прошедшие фурконы" - }, - "years": { - "title": "Итоги", - "des": "За {{totalYear}} лет в календаре фурри-мероприятий собрано {{totalAmount}} фурконов/встреч. Среди них:", - "unknown": "Дата уточняется", - "known": "{{year}} год", - "thisYear": "В этом году", - "total": "Всего {{total}} фурконов/встреч", - "month": "{{month}} месяц" - } -} From 6d266b8e21745c86a285092b573c5becf053c246 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:41:02 +0800 Subject: [PATCH 07/17] Create common.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 俄语文件迁移 --- public/locales/ru/common.json | 118 ++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 public/locales/ru/common.json diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json new file mode 100644 index 0000000..8a83869 --- /dev/null +++ b/public/locales/ru/common.json @@ -0,0 +1,118 @@ +{ + "header": { + "title": "Фуркон календарь", + "slogan": "Готовь уши и хвосты — будет жарко!🔥", + "nav": { + "homepage": "главная страница", + "city": "город", + "organization": "Организаторы", + "years": "временная шкала" + } + }, + "footer": { + "friendsLink": "Партнёрские ссылки", + "aboutUs": "О нас", + "disclaimer": "Сведения носят справочный характер.Официальный источник — сайт организатора.", + "use": "Сайт создан", + "and": "и", + "made": " " + }, + "homepage": { + "total": "{{total}} Всего фурконов", + "month": "{{month}} ", + "nextYearMonth": "в{{month}}следующего года", + "group": { + "status": { + "passed": "Завершено", + "now": "Прямо сейчас!", + "soon": "Скоро будет!", + "next": "Ещё в этом году", + "nextYear": "Смотрим на следующий год" + } + }, + "noResult": "По вашему запросу конвентов не найдено...", + "noResultTip": "Попробуйте другие параметры... или подождём вместе?", + "noResultContact": "Сообщите нам об анонсированном фурконе! Контакты — в подвале сайта." + }, + "event": { + "filter": { + "onlyAvailable": "Только предстоящие ", + "all": "Все размеры", + "cosy": "Камерные (0-100)", + "small": "Камерные (100-500)", + "medium": "Камерные (500-1,000)", + "large": "Камерные (1,000-3,000)", + "xlarge": "Камерные (3,000-5,000)", + "xxlarge": "Супер-гигантские (5,000+)", + "mega": "Супер-гигантские (10,000+ )" + }, + "status": { + "cancel": "Мероприятие отменено организаторами и не состоится" + }, + "type": { + "all-in-con": "Многофункциональный фуркон", + "comic-market": "Комикет-ярмарка", + "suit-only-con": "Фурсют-митап", + "travel-con": "Путешествие фурри", + "fandom-meetup": "Тематический сход" + }, + "locationType": { + "hotel": "Отель", + "venue": "Площадка", + "online": "Онлайн" + }, + "hostBy": "Организатор: {{hostName}}", + "unknown": "Пока не объявлено", + "scaleDes": "Предположительно {{scale}} мероприятие", + "scale": { + "all": "Все размеры", + "cosy": "Камерные (0-100)", + "small": "Камерные (100-500)", + "medium": "Камерные (500-1,000)", + "large": "Камерные (1,000-3,000)", + "xlarge": "Камерные (3,000-5,000)", + "xxlarge": "Супер-гигантские (5,000+)", + "mega": "Супер-гигантские (10,000+ )" + }, + "goToSource": "Перейти к источнику", + "map": "Карта конвента", + "mapLoading": "Открыть в Gaode Map...", + "gotoGaoDe": "Открыть в Gaode Map", + "gotoOrganization": "Участники и стенды", + "dateFormat": "MMMM dd, yyyy" + }, + "organization": { + "active": "Активные организаторы", + "inactive": "Неактивные организаторы", + "createdAt": "Основан {{distance}} назад", + "firstTimeEvent": "Первый фуркон: {{day}}.{{month}}.{{year}}", + "firstTimeShow": "Впервые на сцене: {{day}}.{{month}}.{{year}}", + "totalEvent": "Зафиксировано {{amount}} фурконов/встреч", + "website": "Официальный сайт", + "bilibili": "Bilibili", + "twitter": "Twitter", + "weibo": "Weibo", + "wikifur": "WikiFur", + "facebook": "Facebook", + "plurk": "Plurk", + "rednote": "RedNote", + "qq": "QQ International: {{qq}}", + "copyQq": "Скопировать номер QQ-группы", + "qqCopySuccess": "🥳 Скопировано! Присоединяйтесь к группе QQ International", + "mail": "Почта: {{email}}", + "copyMail": "Скопировать адрес", + "mailCopySuccess": "🥳 Скопировано! Пишите письмо", + "des": "Об организаторе", + "defaultDes": "Организатор ленив и не написал описание", + "passedEvent": "Прошедшие фурконы" + }, + "years": { + "title": "Итоги", + "des": "За {{totalYear}} лет в календаре фурри-мероприятий собрано {{totalAmount}} фурконов/встреч. Среди них:", + "unknown": "Дата уточняется", + "known": "{{year}} год", + "thisYear": "В этом году", + "total": "Всего {{total}} фурконов/встреч", + "month": "{{month}} месяц" + } +} From 7b8fd40b94dca6bf8a9dbbfeb7143e3d0d0435d5 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:48:09 +0800 Subject: [PATCH 08/17] Update common.json --- public/locales/zh-Hans-tw/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/zh-Hans-tw/common.json b/public/locales/zh-Hans-tw/common.json index c91a47a..dca3d5c 100644 --- a/public/locales/zh-Hans-tw/common.json +++ b/public/locales/zh-Hans-tw/common.json @@ -1,12 +1,12 @@ { "header": { - "title": "獸展行事曆", + "title": "獸展日曆", "slogan": "放假囉!", "nav": { "homepage": "首頁", "city": "城市", "organization": "主辦單位", - "years": "年度總覽" + "years": "年份表" } }, "footer": { @@ -15,7 +15,7 @@ "disclaimer": "本頁資訊僅供參考,詳情請以活動官方公告為準", "use": "採用", "and": "與", - "made": "技術製作" + "made": "製作而成" }, "homepage": { "total": "共收錄 {{total}} 場展會", @@ -81,8 +81,8 @@ "dateFormat": "yyyy年MM月dd日" }, "organization": { - "active": "營運中主辦", - "inactive": "已停辦主辦", + "active": "營運中", + "inactive": "已停辦", "createdAt": "創立於 {{distance}}", "firstTimeEvent": "首場展會:{{year}}年{{month}}月{{day}}日", "firstTimeShow": "首次登場:{{year}}年{{month}}月{{day}}日", @@ -107,7 +107,7 @@ }, "years": { "title": "年度統計", - "des": "獸展行事曆共收錄 {{totalYear}} 個年度的 {{totalAmount}} 場展會/獸聚。其中:", + "des": "獸展日曆共收錄 {{totalYear}} 個年度的 {{totalAmount}} 場展會/獸聚。其中:", "unknown": "日期未定", "known": "{{year}}年", "thisYear": "本年度", From 42f2eb2d2dec764ebc380895a5a7ff38a862ea17 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:02:25 +0800 Subject: [PATCH 09/17] Update localeMenu.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 引用繁体中文和俄文 --- src/components/layout/localeMenu.tsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/components/layout/localeMenu.tsx b/src/components/layout/localeMenu.tsx index 695e52f..a23a995 100644 --- a/src/components/layout/localeMenu.tsx +++ b/src/components/layout/localeMenu.tsx @@ -39,6 +39,26 @@ export default function LocaleMenu() { English +
  • + setOpen(false)} + > + 繁體中文 + +
  • +
  • + setOpen(false)} + > + Русский + +
  • )} From 173f3b2dd5241a1a06beec72d385bd1008ba49e2 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:09:32 +0800 Subject: [PATCH 10/17] Update index.tsx --- src/components/layout/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/layout/index.tsx b/src/components/layout/index.tsx index 575bd16..3fae98c 100644 --- a/src/components/layout/index.tsx +++ b/src/components/layout/index.tsx @@ -19,6 +19,10 @@ const PUBLIC_URL = process.env.NEXT_PUBLIC_WEBSITE_URL; const getCanonicalUrl = (locale: string | undefined, path: string) => { switch (locale) { + case "ru": + return `https://www.furrycons.cn/ru${path}`; + case "zh-tw": + return `https://www.furrycons.cn/tw${path}`; case "en": return `https://www.furrycons.cn/en${path}`; case "zh-Hans": From 8c0e87051bca4c4c9e185d54a68d84a036e3df07 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:11:51 +0800 Subject: [PATCH 11/17] Create common.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 检查文档结构后弃用zh-Hans-tw,改为zh-tw。 --- public/locales/zh-tw/common.json | 117 +++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 public/locales/zh-tw/common.json diff --git a/public/locales/zh-tw/common.json b/public/locales/zh-tw/common.json new file mode 100644 index 0000000..dca3d5c --- /dev/null +++ b/public/locales/zh-tw/common.json @@ -0,0 +1,117 @@ +{ + "header": { + "title": "獸展日曆", + "slogan": "放假囉!", + "nav": { + "homepage": "首頁", + "city": "城市", + "organization": "主辦單位", + "years": "年份表" + } + }, + "footer": { + "friendsLink": "合作連結", + "aboutUs": "關於我們", + "disclaimer": "本頁資訊僅供參考,詳情請以活動官方公告為準", + "use": "採用", + "and": "與", + "made": "製作而成" + }, + "homepage": { + "total": "共收錄 {{total}} 場展會", + "month": "{{month}}月", + "nextYearMonth": "明年{{month}}月", + "group": { + "status": { + "passed": "已結束", + "now": "正在舉行", + "soon": "即將開始", + "next": "今年場次", + "nextYear": "明年展會" + } + }, + "noResult": "目前沒有符合條件的展會...", + "noResultTip": "試試其他搜尋條件,或是...再等等看?", + "noResultContact": "歡迎透過頁尾聯絡方式,向我們回報已公佈的展會資訊!" + }, + "event": { + "filter": { + "onlyAvailable": "只看未開始的展會", + "all": "所有規模", + "cosy": "迷你型(0-100人)", + "small": "小型(100-500人)", + "medium": "中型(500-1000人)", + "large": "大型(1000-3000人)", + "xlarge": "超大型(3000-5000人)", + "xxlarge": "特大型(5000人以上)", + "mega": "巨型(破萬人)" + }, + "status": { + "cancel": "活動已由主辦單位取消。" + }, + "type": { + "all-in-con": "綜合型展會", + "comic-market": "販售會", + "suit-only-con": "獸裝限定聚", + "travel-con": "旅行聚會", + "fandom-meetup": "主題同好聚" + }, + "locationType": { + "hotel": "飯店", + "venue": "展演場館", + "online": "線上活動" + }, + "hostBy": "主辦單位:{{hostName}}", + "unknown": "尚未公佈", + "scaleDes": "預估為 {{scale}} 展會", + "scale": { + "cosy": "迷你型(0-100人)", + "small": "小型規模(100-500人)", + "medium": "中型規模(500-1000人)", + "large": "大型規模(1000-3000人)", + "xlarge": "超大型規模(3000-5000人)", + "xxlarge": "特大型規模(5000人以上)", + "mega": "巨型規模(破萬人)" + }, + "goToSource": "查看原始資訊", + "map": "活動地圖", + "mapLoading": "地圖載入中", + "gotoGaoDe": "用高德地圖查看", + "gotoOrganization": "查看主辦單位", + "dateFormat": "yyyy年MM月dd日" + }, + "organization": { + "active": "營運中", + "inactive": "已停辦", + "createdAt": "創立於 {{distance}}", + "firstTimeEvent": "首場展會:{{year}}年{{month}}月{{day}}日", + "firstTimeShow": "首次登場:{{year}}年{{month}}月{{day}}日", + "totalEvent": "累計舉辦 {{amount}} 場展會/獸聚", + "website": "官方網站", + "bilibili": "Bilibili", + "twitter": "Twitter", + "weibo": "微博", + "wikifur": "前往 Wikifur 瞭解更多", + "facebook": "Facebook", + "plurk": "Plurk", + "rednote": "小紅書", + "qq": "QQ群號:{{qq}}", + "copyQq": "複製QQ群號", + "qqCopySuccess": "🥳 複製成功!請至QQ使用群號搜尋", + "mail": "寄信至 {{email}}", + "copyMail": "複製信箱", + "mailCopySuccess": "🥳 複製成功!快去寄信吧", + "des": "主辦單位簡介", + "defaultDes": "這個主辦單位尚未提供簡介。", + "passedEvent": "歷年活動" + }, + "years": { + "title": "年度統計", + "des": "獸展日曆共收錄 {{totalYear}} 個年度的 {{totalAmount}} 場展會/獸聚。其中:", + "unknown": "日期未定", + "known": "{{year}}年", + "thisYear": "本年度", + "total": "共 {{total}} 場展會/獸聚", + "month": "{{month}}月" + } +} From 3c2f67bf417f277c7adb036a4c30eec143f78ec5 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:12:23 +0800 Subject: [PATCH 12/17] Delete public/locales/zh-Hans-tw directory --- public/locales/zh-Hans-tw/common.json | 117 -------------------------- 1 file changed, 117 deletions(-) delete mode 100644 public/locales/zh-Hans-tw/common.json diff --git a/public/locales/zh-Hans-tw/common.json b/public/locales/zh-Hans-tw/common.json deleted file mode 100644 index dca3d5c..0000000 --- a/public/locales/zh-Hans-tw/common.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "header": { - "title": "獸展日曆", - "slogan": "放假囉!", - "nav": { - "homepage": "首頁", - "city": "城市", - "organization": "主辦單位", - "years": "年份表" - } - }, - "footer": { - "friendsLink": "合作連結", - "aboutUs": "關於我們", - "disclaimer": "本頁資訊僅供參考,詳情請以活動官方公告為準", - "use": "採用", - "and": "與", - "made": "製作而成" - }, - "homepage": { - "total": "共收錄 {{total}} 場展會", - "month": "{{month}}月", - "nextYearMonth": "明年{{month}}月", - "group": { - "status": { - "passed": "已結束", - "now": "正在舉行", - "soon": "即將開始", - "next": "今年場次", - "nextYear": "明年展會" - } - }, - "noResult": "目前沒有符合條件的展會...", - "noResultTip": "試試其他搜尋條件,或是...再等等看?", - "noResultContact": "歡迎透過頁尾聯絡方式,向我們回報已公佈的展會資訊!" - }, - "event": { - "filter": { - "onlyAvailable": "只看未開始的展會", - "all": "所有規模", - "cosy": "迷你型(0-100人)", - "small": "小型(100-500人)", - "medium": "中型(500-1000人)", - "large": "大型(1000-3000人)", - "xlarge": "超大型(3000-5000人)", - "xxlarge": "特大型(5000人以上)", - "mega": "巨型(破萬人)" - }, - "status": { - "cancel": "活動已由主辦單位取消。" - }, - "type": { - "all-in-con": "綜合型展會", - "comic-market": "販售會", - "suit-only-con": "獸裝限定聚", - "travel-con": "旅行聚會", - "fandom-meetup": "主題同好聚" - }, - "locationType": { - "hotel": "飯店", - "venue": "展演場館", - "online": "線上活動" - }, - "hostBy": "主辦單位:{{hostName}}", - "unknown": "尚未公佈", - "scaleDes": "預估為 {{scale}} 展會", - "scale": { - "cosy": "迷你型(0-100人)", - "small": "小型規模(100-500人)", - "medium": "中型規模(500-1000人)", - "large": "大型規模(1000-3000人)", - "xlarge": "超大型規模(3000-5000人)", - "xxlarge": "特大型規模(5000人以上)", - "mega": "巨型規模(破萬人)" - }, - "goToSource": "查看原始資訊", - "map": "活動地圖", - "mapLoading": "地圖載入中", - "gotoGaoDe": "用高德地圖查看", - "gotoOrganization": "查看主辦單位", - "dateFormat": "yyyy年MM月dd日" - }, - "organization": { - "active": "營運中", - "inactive": "已停辦", - "createdAt": "創立於 {{distance}}", - "firstTimeEvent": "首場展會:{{year}}年{{month}}月{{day}}日", - "firstTimeShow": "首次登場:{{year}}年{{month}}月{{day}}日", - "totalEvent": "累計舉辦 {{amount}} 場展會/獸聚", - "website": "官方網站", - "bilibili": "Bilibili", - "twitter": "Twitter", - "weibo": "微博", - "wikifur": "前往 Wikifur 瞭解更多", - "facebook": "Facebook", - "plurk": "Plurk", - "rednote": "小紅書", - "qq": "QQ群號:{{qq}}", - "copyQq": "複製QQ群號", - "qqCopySuccess": "🥳 複製成功!請至QQ使用群號搜尋", - "mail": "寄信至 {{email}}", - "copyMail": "複製信箱", - "mailCopySuccess": "🥳 複製成功!快去寄信吧", - "des": "主辦單位簡介", - "defaultDes": "這個主辦單位尚未提供簡介。", - "passedEvent": "歷年活動" - }, - "years": { - "title": "年度統計", - "des": "獸展日曆共收錄 {{totalYear}} 個年度的 {{totalAmount}} 場展會/獸聚。其中:", - "unknown": "日期未定", - "known": "{{year}}年", - "thisYear": "本年度", - "total": "共 {{total}} 場展會/獸聚", - "month": "{{month}}月" - } -} From aa0cb5b02c56214b5097ae7b99781cd66772418c Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:14:37 +0800 Subject: [PATCH 13/17] Update localeMenu.tsx --- src/components/layout/localeMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/layout/localeMenu.tsx b/src/components/layout/localeMenu.tsx index a23a995..df4420f 100644 --- a/src/components/layout/localeMenu.tsx +++ b/src/components/layout/localeMenu.tsx @@ -42,7 +42,7 @@ export default function LocaleMenu() {
  • setOpen(false)} > From 522078f1543001b2988d64055cc6d26990c2df80 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:17:28 +0800 Subject: [PATCH 14/17] Update next-i18next.config.js --- next-i18next.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 2d61582..8ecfb8b 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -2,8 +2,8 @@ module.exports = { i18n: { defaultLocale: "zh-Hans", - locales: ["zh-Hans", "zh-Hans-tw", "en", "ru"], + locales: ["zh-Hans", "zh-tw", "en", "ru"], localeDetection: false, }, - reloadOnPrerender: locales: ["zh-Hans", "zh-Hans-tw", "en", "ru"],.env.NODE_ENV === "development", + reloadOnPrerender: locales: ["zh-Hans", "zh-tw", "en", "ru"],.env.NODE_ENV === "development", }; From 6f5aa94efb7df150bcf07e1ba13e7d704d499999 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sun, 3 Aug 2025 00:44:56 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E6=B7=BB=E5=8A=A0zh-tw?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/meta.ts | 212 ++++++++++++++++++++++++++++++---------------- 1 file changed, 141 insertions(+), 71 deletions(-) diff --git a/src/utils/meta.ts b/src/utils/meta.ts index 4ad6e28..488fa85 100644 --- a/src/utils/meta.ts +++ b/src/utils/meta.ts @@ -1,66 +1,77 @@ import { OrganizationType } from "@/types/organization"; import { format } from "date-fns"; -export type currentSupportLocale = "zh-Hans" | "en"; +export type currentSupportLocale = "zh-Hans" | "zh-tw" | "en" | "ru"; export const OrganizationPageMeta = { - en: { - title: "Organizers", - description: (organizationCount: number) => - `Welcome to the FurConsCalendar! The calendar has recorded a total of ${organizationCount} organizers related to furry conventions and gatherings. Whether they are still active today or not, we sincerely thank these groups for their contributions to the development of furry culture.`, - }, "zh-Hans": { title: "展商列表", description: (organizationCount: number) => `欢迎来到兽展日历!兽展日历共计收录了 ${organizationCount} 个和兽展/兽聚相关的展方,无论他们今天是否还在活跃,我们真挚感谢这些为兽人文化发展做出贡献的团体。`, }, + "zh-tw": { + title: "展商名單", + description: (organizationCount: number) => + `歡迎來到獸展日曆!獸展日曆共計收錄了 ${organizationCount} 個和獸展/獸聚相關的展方,無論他們今天是否還在活躍,我們真摯感謝這些為獸人文化發展做出貢獻的團體。`, + }, + en: { + title: "Organizers", + description: (organizationCount: number) => + `Welcome to the FurConsCalendar! The calendar has recorded a total of ${organizationCount} organizers related to furry conventions and gatherings. Whether they are still active today or not, we sincerely thank these groups for their contributions to the development of furry culture.`, + }, + }; export const CityPageMeta = { + "zh-Hans": { + title: "兽展城市列表", + description: (cities: number) => + `欢迎来到兽展日历!兽展日历共收录 ${cities} 个城市举办过的兽展(兽聚)活动信息,快来看看这些城市有没有你所在的地方吧!`, + }, + "zh-tw": { + title: "獸展城市列表", + description: (cities: number) => + `歡迎來到獸展日曆!獸展日曆共收錄 ${cities} 個城市舉辦過的獸展(獸聚)活動資訊,快來看看這些城市有沒有你所在的地方吧!`, + }, en: { title: "Cities", description: (cities: number) => `Welcome to the FurConsCalendar! The calendar has recorded a total of ${cities} cities related to furry conventions and gatherings. Whether they are still active today or not, we sincerely thank these groups for their contributions to the development of furry culture.`, }, - "zh-Hans": { - title: "兽展城市列表", - description: (cities: number) => - `欢迎来到兽展日历!兽展日历共收录 ${cities} 个城市举办过的兽展(兽聚)活动信息,快来看看这些城市有没有你所在的地方吧!`, - }, }; export const YearPageMeta = { - en: { - title: "Timeline", - description: (yearCount: number, eventCount: number) => - `Welcome to the FurConsCalendar! Over the past ${yearCount} years, the calendar has recorded a total of ${eventCount} events. Which ones have you attended? We hope they were some of your best memories!`, - }, "zh-Hans": { title: "年度时间轴", description: (yearCount: number, eventCount: number) => `欢迎来到兽展日历!兽展日历共计收录了 ${yearCount} 年间共计 ${eventCount} 场活动,你去过哪些呢?希望他们对你来说是最美好的回忆!`, }, + "zh-tw": { + title: "年度時間軸", + description: (yearCount: number, eventCount: number) => + `歡迎來到獸展日曆!獸展日曆共計收錄了 ${yearCount} 年間共計 ${eventCount} 場活動,你去過哪些呢? 希望他們對你來說是最美好的回憶!`, + }, + en: { + title: "Timeline", + description: (yearCount: number, eventCount: number) => + `Welcome to the FurConsCalendar! Over the past ${yearCount} years, the calendar has recorded a total of ${eventCount} events. Which ones have you attended? We hope they were some of your best memories!`, + }, }; const universalKeywords = (locale: currentSupportLocale) => { switch (locale) { - case "en": - return ["Furry Convention", "Furry Con", "Furry Convention Calendar"]; case "zh-Hans": default: return ["兽聚", "兽展", "兽聚日历", "兽展日历"]; + case "zh-tw": + return ["獸聚", "獸展", "獸聚日曆", "獸展日曆"]; + case "en": + return ["Furry Convention", "Furry Con", "Furry Convention Calendar"]; } }; function generateHomeKeywords(nowYear: number, locale: currentSupportLocale) { switch (locale) { - case "en": - return [ - `${nowYear} Furry Conventions`, - `${nowYear} Furry Convention Schedule`, - `${nowYear} Furry Gatherings`, - `${nowYear} Furry Gathering Schedule`, - ]; case "zh-Hans": default: return [ @@ -69,6 +80,20 @@ function generateHomeKeywords(nowYear: number, locale: currentSupportLocale) { `${nowYear}兽聚`, `${nowYear}兽聚时间表`, ]; + case "zh-tw": + return [ + `${nowYear}獸展`, + `${nowYear}獸展時程表`, + `${nowYear}獸聚`, + `${nowYear}獸聚時程表`, + ]; + case "en": + return [ + `${nowYear} Furry Conventions`, + `${nowYear} Furry Convention Schedule`, + `${nowYear} Furry Gatherings`, + `${nowYear} Furry Gathering Schedule`, + ]; } } @@ -80,6 +105,33 @@ function generateEventKeywords( ? format(event.startDate, locale === "en" ? "yyyy" : "yyyy年") : null; switch (locale) { + case "zh-Hans": + return [ + `${event?.name}`, + `${event?.name}兽聚`, + `${event?.name}兽展`, + `${event?.name}举办时间`, + `${event?.name}时间`, + ...(event?.city ? [`${event.city}兽聚`, `${event.city}兽展`] : []), + ...(startYear ? [`${startYear}兽聚`, `${startYear}兽展`] : []), + ...(startYear && event?.city + ? [`${startYear}${event.city}兽聚`, `${startYear}${event.city}兽展`] + : []), + ]; + case "zh-tw": + default: + return [ + `${event?.name}`, + `${event?.name}獸聚`, + `${event?.name}獸展`, + `${event?.name}舉辦時間`, + `${event?.name}時間`, + ...(event?.city ? [`${event.city}獸聚`, `${event.city}獸展`] : []), + ...(startYear ? [`${startYear}獸聚`, `${startYear}獸展`] : []), + ...(startYear && event?.city + ? [`${startYear}${event.city}獸聚`, `${startYear}${event.city}獸展`] + : []), + ]; case "en": return [ `${event?.name}`, @@ -100,20 +152,6 @@ function generateEventKeywords( ] : []), ]; - case "zh-Hans": - default: - return [ - `${event?.name}`, - `${event?.name}兽聚`, - `${event?.name}兽展`, - `${event?.name}举办时间`, - `${event?.name}时间`, - ...(event?.city ? [`${event.city}兽聚`, `${event.city}兽展`] : []), - ...(startYear ? [`${startYear}兽聚`, `${startYear}兽展`] : []), - ...(startYear && event?.city - ? [`${startYear}${event.city}兽聚`, `${startYear}${event.city}兽展`] - : []), - ]; } } @@ -122,12 +160,6 @@ function generateOrganizationKeywords( locale: currentSupportLocale ) { switch (locale) { - case "en": - return [ - `${organization?.name}`, - `${organization?.name} Furry Gathering`, - `${organization?.name} Furry Convention`, - ]; case "zh-Hans": default: return [ @@ -135,6 +167,18 @@ function generateOrganizationKeywords( `${organization?.name}兽聚`, `${organization?.name}兽展`, ]; + case "zh-tw": + return [ + `${organization?.name}`, + `${organization?.name}獸聚`, + `${organization?.name}獸展`, + ]; + case "en": + return [ + `${organization?.name}`, + `${organization?.name} Furry Gathering`, + `${organization?.name} Furry Convention`, + ]; } } @@ -193,12 +237,15 @@ function titleGenerator(locale: currentSupportLocale, title?: string) { function descriptionGenerator(locale: currentSupportLocale) { switch (locale) { - case "en": - return "FurConsCalendar is dedicated to providing the latest and most comprehensive information on furry conventions and gatherings. Come here to find interesting events and invite your friends to join the fun!"; - case "zh-Hans": default: return "欢迎来到兽展日历!兽展日历致力于为您提供最新最全的兽展、兽聚等相关资讯整合,来这里寻找感兴趣的展会,叫上朋友一起来玩吧!"; + case "zh-tw": + return "歡迎來到獸展日曆! 獸展日曆致力於為您提供最新最全的獸展、獸聚等相關資訊整合,來這裡尋找感興趣的展會,叫上朋友一起來玩吧!"; + case "en": + return "FurConsCalendar is dedicated to providing the latest and most comprehensive information on furry conventions and gatherings. Come here to find interesting events and invite your friends to join the fun!"; + + } } @@ -218,19 +265,6 @@ function eventDescriptionGenerator( } switch (locale) { - case "en": - return event.startAt && event.endAt - ? `Details about "${ - event?.name - }": This furry convention is organized by "${ - event?.organization?.name - }" and will be held from ${format( - event?.startAt!, - "MMMM dd, yyyy" - )} to ${format(event?.endAt!, "MMMM dd, yyyy")} at "${ - event?.region?.localName - }${event?.address}". Stay tuned for ticket sales!` - : `Welcome to FurConsCalendar! FCC provides detailed information about "${event?.name}": This furry convention is organized by "${event?.organization?.name}" and will be held at "${event?.region?.localName}${event?.address}". Stay tuned for ticket sales!`; case "zh-Hans": default: return event.startAt && event.endAt @@ -245,6 +279,32 @@ function eventDescriptionGenerator( event?.region?.localName }${event?.address}”举办,喜欢的朋友记得关注开始售票时间~` : `欢迎来到兽展日历!兽展日历提供关于“${event?.name}”的详细信息:这是由“${event?.organization?.name}”举办的兽展,将在“${event?.region?.localName}${event?.address}”举办,喜欢的朋友记得关注开始售票时间~`; + case "zh-tw": + return event.startAt && event.endAt + ? `歡迎來到獸展日曆!獸展日曆提供關於“${ + event?.name + }”的詳細信息:這是由“${ + event?.organization?.name + }”舉辦的獸展,將於${format( + event?.startAt!, + "yyyy/MM/dd" + )}至${format(event?.endAt!, "yyyy/MM/dd")}在“${ + event?.region?.localName + }${event?.address}”舉辦,喜歡的朋友記得關注開票時間~` + : `歡迎來到獸展日曆!獸展日曆提供關於“${event?.name}”的詳細信息:這是由“${event?.organization?.name}”舉辦的獸展,將在“${event?.region?.localName}${event?.address}”舉辦,喜歡的朋友記得關注開票時間~`; + case "en": + return event.startAt && event.endAt + ? `Details about "${ + event?.name + }": This furry convention is organized by "${ + event?.organization?.name + }" and will be held from ${format( + event?.startAt!, + "MMMM dd, yyyy" + )} to ${format(event?.endAt!, "MMMM dd, yyyy")} at "${ + event?.region?.localName + }${event?.address}". Stay tuned for ticket sales!` + : `Welcome to FurConsCalendar! FCC provides detailed information about "${event?.name}": This furry convention is organized by "${event?.organization?.name}" and will be held at "${event?.region?.localName}${event?.address}". Stay tuned for ticket sales!`; } } @@ -255,16 +315,6 @@ function organizationDetailDescriptionGenerator( eventStartAt?: string | null ) { switch (locale) { - case "en": - return `Welcome to FurConsCalendar! FCC provides detailed information about "${ - organization?.name - }": This organizer has hosted a total of ${eventCount} furry conventions, with the most recent one held on ${ - eventStartAt ? format(eventStartAt, "MMMM dd, yyyy") : "unknown date" - }. ${ - organization?.description - ? `Here's how they describe themselves: "${organization?.description}".` - : "However, they haven't provided much information about themselves." - }`; case "zh-Hans": default: return `欢迎来到兽展日历!兽展日历提供关于 ${ @@ -276,6 +326,26 @@ function organizationDetailDescriptionGenerator( ? `他们是这样介绍自己的:“${organization?.description}”。` : "不过他们没怎么介绍自己。" }`; + case "zh-tw": + return `歡迎來到獸展日曆! 獸展日曆提供關於 ${ + organization?.name + } 的相關信息,這家展商已累計舉辦 ${eventCount} 場獸展,最近的一場在${ + eventStartAt ? format(eventStartAt, "yyyy/MM/dd") : "未知時間線" + },${ + organization?.description + ? `他們是這樣介紹自己的:“${organization?.description}”。` + : "不過他們沒怎麼介紹自己。" + }`; + case "en": + return `Welcome to FurConsCalendar! FCC provides detailed information about "${ + organization?.name + }": This organizer has hosted a total of ${eventCount} furry conventions, with the most recent one held on ${ + eventStartAt ? format(eventStartAt, "MMMM dd, yyyy") : "unknown date" + }. ${ + organization?.description + ? `Here's how they describe themselves: "${organization?.description}".` + : "However, they haven't provided much information about themselves." + }`; } } From d8cb74d749212a79791e4f3e38fa7a8080138fa8 Mon Sep 17 00:00:00 2001 From: DgHCo3 <110822227+DgHCo3@users.noreply.github.com> Date: Sun, 3 Aug 2025 00:55:12 +0800 Subject: [PATCH 16/17] =?UTF-8?q?=E6=B7=BB=E5=8A=A0zh-tw=E3=80=81ru?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/index.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/layout/index.tsx b/src/components/layout/index.tsx index 3fae98c..e26ee8d 100644 --- a/src/components/layout/index.tsx +++ b/src/components/layout/index.tsx @@ -79,7 +79,7 @@ export default function Layout({ content={ headMetas?.keywords ? headMetas.keywords - : universalKeywords(i18n.language as "zh-Hans" | "en").join(",") + : universalKeywords(i18n.language as "zh-Hans" | "zh-tw" | "en" | "ru").join(",") } key="keywords" /> @@ -172,8 +172,8 @@ export default function Layout({ + + Date: Sun, 3 Aug 2025 01:14:39 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next.js Bundle Analysis: All jobs have failed --- next-i18next.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 8ecfb8b..7108679 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -5,5 +5,5 @@ module.exports = { locales: ["zh-Hans", "zh-tw", "en", "ru"], localeDetection: false, }, - reloadOnPrerender: locales: ["zh-Hans", "zh-tw", "en", "ru"],.env.NODE_ENV === "development", + reloadOnPrerender: process.env.NODE_ENV === "development", };