From 15bf29405f8e60910a108b5090f7ec7f0ad86a42 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 07:35:29 +0000 Subject: [PATCH 1/4] Initial plan From 0ccde3aaff5f6157d68741db022fe23e6bf12c4f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 07:39:00 +0000 Subject: [PATCH 2/4] feat: add Blog text link to footer Community section Agent-Logs-Url: https://github.com/microsoft/aspire.dev/sessions/58542868-76bc-4e46-ab5f-dac94756c185 Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> --- src/frontend/src/components/FooterLinks.astro | 6 ++++++ src/frontend/src/content/i18n/da.json | 1 + src/frontend/src/content/i18n/de.json | 1 + src/frontend/src/content/i18n/en.json | 1 + src/frontend/src/content/i18n/es.json | 1 + src/frontend/src/content/i18n/fr.json | 1 + src/frontend/src/content/i18n/hi.json | 1 + src/frontend/src/content/i18n/id.json | 1 + src/frontend/src/content/i18n/it.json | 1 + src/frontend/src/content/i18n/ja.json | 1 + src/frontend/src/content/i18n/ko.json | 1 + src/frontend/src/content/i18n/pt-BR.json | 1 + src/frontend/src/content/i18n/ru.json | 1 + src/frontend/src/content/i18n/tr.json | 1 + src/frontend/src/content/i18n/uk.json | 1 + src/frontend/src/content/i18n/zh-CN.json | 1 + 16 files changed, 21 insertions(+) diff --git a/src/frontend/src/components/FooterLinks.astro b/src/frontend/src/components/FooterLinks.astro index 279596495..5d5bc3ce8 100644 --- a/src/frontend/src/components/FooterLinks.astro +++ b/src/frontend/src/components/FooterLinks.astro @@ -49,6 +49,12 @@ const is404 = {Astro.locals.t('footer.watch' as any)} +
  • + + + {Astro.locals.t('footer.blog' as any)} + +
  • ) diff --git a/src/frontend/src/content/i18n/da.json b/src/frontend/src/content/i18n/da.json index 355708bc8..bb2585830 100644 --- a/src/frontend/src/content/i18n/da.json +++ b/src/frontend/src/content/i18n/da.json @@ -65,6 +65,7 @@ "community": "Fællesskab", "discuss": "Diskutér", "watch": "Se", + "blog": "Blog", "privacy": "Privatliv", "resources": "Ressourcer", "legal": "Juridisk", diff --git a/src/frontend/src/content/i18n/de.json b/src/frontend/src/content/i18n/de.json index 368671206..1f931f921 100644 --- a/src/frontend/src/content/i18n/de.json +++ b/src/frontend/src/content/i18n/de.json @@ -65,6 +65,7 @@ "community": "Community", "discuss": "Diskutieren", "watch": "Ansehen", + "blog": "Blog", "privacy": "Datenschutz", "resources": "Ressourcen", "legal": "Rechtliches", diff --git a/src/frontend/src/content/i18n/en.json b/src/frontend/src/content/i18n/en.json index 2da9c6e43..df31539b5 100644 --- a/src/frontend/src/content/i18n/en.json +++ b/src/frontend/src/content/i18n/en.json @@ -65,6 +65,7 @@ "community": "Community", "discuss": "Discuss", "watch": "Watch", + "blog": "Blog", "privacy": "Privacy", "resources": "Resources", "legal": "Legal", diff --git a/src/frontend/src/content/i18n/es.json b/src/frontend/src/content/i18n/es.json index 6d7c66f8d..5332fcea2 100644 --- a/src/frontend/src/content/i18n/es.json +++ b/src/frontend/src/content/i18n/es.json @@ -65,6 +65,7 @@ "community": "Comunidad", "discuss": "Debatir", "watch": "Ver bajo demanda", + "blog": "Blog", "privacy": "Privacidad", "resources": "Recursos", "legal": "Legal", diff --git a/src/frontend/src/content/i18n/fr.json b/src/frontend/src/content/i18n/fr.json index 2e3a7d522..a049e870b 100644 --- a/src/frontend/src/content/i18n/fr.json +++ b/src/frontend/src/content/i18n/fr.json @@ -65,6 +65,7 @@ "community": "Communauté", "discuss": "Discuter", "watch": "Regarder", + "blog": "Blog", "privacy": "Confidentialité", "resources": "Ressources", "legal": "Mentions légales", diff --git a/src/frontend/src/content/i18n/hi.json b/src/frontend/src/content/i18n/hi.json index e87db7256..52cc877bb 100644 --- a/src/frontend/src/content/i18n/hi.json +++ b/src/frontend/src/content/i18n/hi.json @@ -65,6 +65,7 @@ "community": "समुदाय", "discuss": "चर्चा", "watch": "देखें", + "blog": "ब्लॉग", "privacy": "गोपनीयता", "resources": "संसाधन", "legal": "कानूनी", diff --git a/src/frontend/src/content/i18n/id.json b/src/frontend/src/content/i18n/id.json index 0b8028632..a0b3a957c 100644 --- a/src/frontend/src/content/i18n/id.json +++ b/src/frontend/src/content/i18n/id.json @@ -65,6 +65,7 @@ "community": "Komunitas", "discuss": "Diskusi", "watch": "Tonton", + "blog": "Blog", "privacy": "Privasi", "resources": "Sumber Daya", "legal": "Hukum", diff --git a/src/frontend/src/content/i18n/it.json b/src/frontend/src/content/i18n/it.json index 48bace028..6f61bd64b 100644 --- a/src/frontend/src/content/i18n/it.json +++ b/src/frontend/src/content/i18n/it.json @@ -65,6 +65,7 @@ "community": "Community", "discuss": "Discute", "watch": "Guarda", + "blog": "Blog", "privacy": "Privacy", "resources": "Risorse", "legal": "Legale", diff --git a/src/frontend/src/content/i18n/ja.json b/src/frontend/src/content/i18n/ja.json index 9d3dfad8e..cb6ad6a0c 100644 --- a/src/frontend/src/content/i18n/ja.json +++ b/src/frontend/src/content/i18n/ja.json @@ -65,6 +65,7 @@ "community": "コミュニティ", "discuss": "ディスカッション", "watch": "視聴", + "blog": "ブログ", "privacy": "プライバシー", "resources": "リソース", "legal": "法的情報", diff --git a/src/frontend/src/content/i18n/ko.json b/src/frontend/src/content/i18n/ko.json index 4679e76c1..239419ff6 100644 --- a/src/frontend/src/content/i18n/ko.json +++ b/src/frontend/src/content/i18n/ko.json @@ -65,6 +65,7 @@ "community": "커뮤니티", "discuss": "토론", "watch": "보기", + "blog": "블로그", "privacy": "개인정보", "resources": "리소스", "legal": "법적 고지", diff --git a/src/frontend/src/content/i18n/pt-BR.json b/src/frontend/src/content/i18n/pt-BR.json index 3af7b2bd7..b327d6993 100644 --- a/src/frontend/src/content/i18n/pt-BR.json +++ b/src/frontend/src/content/i18n/pt-BR.json @@ -65,6 +65,7 @@ "community": "Comunidade", "discuss": "Discutir", "watch": "Assistir", + "blog": "Blog", "privacy": "Privacidade", "resources": "Recursos", "legal": "Legal", diff --git a/src/frontend/src/content/i18n/ru.json b/src/frontend/src/content/i18n/ru.json index d5551d27a..652038b07 100644 --- a/src/frontend/src/content/i18n/ru.json +++ b/src/frontend/src/content/i18n/ru.json @@ -65,6 +65,7 @@ "community": "Сообщество", "discuss": "Обсуждать", "watch": "Смотреть", + "blog": "Блог", "privacy": "Конфиденциальность", "resources": "Ресурсы", "legal": "Правовая информация", diff --git a/src/frontend/src/content/i18n/tr.json b/src/frontend/src/content/i18n/tr.json index 9c68fe72e..b70c72a0e 100644 --- a/src/frontend/src/content/i18n/tr.json +++ b/src/frontend/src/content/i18n/tr.json @@ -65,6 +65,7 @@ "community": "Topluluk", "discuss": "Tartış", "watch": "İzle", + "blog": "Blog", "privacy": "Gizlilik", "resources": "Kaynaklar", "legal": "Yasal", diff --git a/src/frontend/src/content/i18n/uk.json b/src/frontend/src/content/i18n/uk.json index 68ce9566c..2cb79b77e 100644 --- a/src/frontend/src/content/i18n/uk.json +++ b/src/frontend/src/content/i18n/uk.json @@ -65,6 +65,7 @@ "community": "Спільнота", "discuss": "Обговорити", "watch": "Переглянути", + "blog": "Блог", "privacy": "Приватність", "resources": "Ресурси", "legal": "Правова інформація", diff --git a/src/frontend/src/content/i18n/zh-CN.json b/src/frontend/src/content/i18n/zh-CN.json index f90538e50..32311c309 100644 --- a/src/frontend/src/content/i18n/zh-CN.json +++ b/src/frontend/src/content/i18n/zh-CN.json @@ -65,6 +65,7 @@ "community": "社区", "discuss": "讨论", "watch": "观看", + "blog": "博客", "privacy": "隐私", "resources": "资源", "legal": "法律信息", From 5ec34c60dda8344f1fb173b3a923fcc8c0c92f75 Mon Sep 17 00:00:00 2001 From: David Pine Date: Fri, 8 May 2026 10:55:27 -0500 Subject: [PATCH 3/4] Update footer community link labels Use recognizable platform names for footer Community links, include BlueSky and Twitch alongside the existing social destinations, and remove the unused action-label locale entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/frontend/src/components/FooterLinks.astro | 73 ++++++++----------- src/frontend/src/content/i18n/da.json | 3 - src/frontend/src/content/i18n/de.json | 3 - src/frontend/src/content/i18n/en.json | 3 - src/frontend/src/content/i18n/es.json | 3 - src/frontend/src/content/i18n/fr.json | 3 - src/frontend/src/content/i18n/hi.json | 3 - src/frontend/src/content/i18n/id.json | 3 - src/frontend/src/content/i18n/it.json | 3 - src/frontend/src/content/i18n/ja.json | 3 - src/frontend/src/content/i18n/ko.json | 3 - src/frontend/src/content/i18n/pt-BR.json | 3 - src/frontend/src/content/i18n/ru.json | 3 - src/frontend/src/content/i18n/tr.json | 3 - src/frontend/src/content/i18n/uk.json | 3 - src/frontend/src/content/i18n/zh-CN.json | 3 - .../unit/custom-components.vitest.test.ts | 38 ++++++++++ 17 files changed, 70 insertions(+), 86 deletions(-) diff --git a/src/frontend/src/components/FooterLinks.astro b/src/frontend/src/components/FooterLinks.astro index 5d5bc3ce8..a1e087bea 100644 --- a/src/frontend/src/components/FooterLinks.astro +++ b/src/frontend/src/components/FooterLinks.astro @@ -1,10 +1,33 @@ --- import { Icon } from '@astrojs/starlight/components'; -import config from 'virtual:starlight/user-config'; +import { socialConfig } from '../../config/socials.config'; + +type CommunityLink = { + icon: (typeof socialConfig)[number]['icon'] | 'reddit'; + label: string; + href: string; +}; + +const getSocialLink = (label: string, displayLabel = label): CommunityLink | null => { + const link = socialConfig.find((social) => social.label === label); + return link ? { icon: link.icon, label: displayLabel, href: link.href } : null; +}; + +const communityLinks = [ + getSocialLink('X', 'X (Twitter)'), + getSocialLink('BlueSky'), + getSocialLink('GitHub'), + getSocialLink('Discord'), + { + icon: 'reddit', + label: 'Reddit', + href: 'https://www.reddit.com/r/aspiredotdev', + }, + getSocialLink('YouTube'), + getSocialLink('Twitch'), + getSocialLink('Blog', Astro.locals.t('footer.blog' as any)), +].filter((link): link is CommunityLink => link !== null); -const links = config.social || []; -const gitHubLink = links.find((link) => link.label === 'GitHub')?.href ?? null; -const discordLink = links.find((link) => link.label === 'Discord')?.href ?? null; const is404 = Astro.locals.starlightRoute?.entry?.slug === '404' || /^\/(?:[^/]+\/)?404\/?$/.test(Astro.url.pathname); @@ -15,46 +38,14 @@ const is404 = ) diff --git a/src/frontend/src/content/i18n/da.json b/src/frontend/src/content/i18n/da.json index bb2585830..d124ea96f 100644 --- a/src/frontend/src/content/i18n/da.json +++ b/src/frontend/src/content/i18n/da.json @@ -61,10 +61,7 @@ "madeWithLove": "Lavet med 💜 hos Microsoft", "opensInNewTab": "åbner i ny fane", "ask": "Spørg & svar", - "collab": "Samarbejd", "community": "Fællesskab", - "discuss": "Diskutér", - "watch": "Se", "blog": "Blog", "privacy": "Privatliv", "resources": "Ressourcer", diff --git a/src/frontend/src/content/i18n/de.json b/src/frontend/src/content/i18n/de.json index 1f931f921..97e84c62a 100644 --- a/src/frontend/src/content/i18n/de.json +++ b/src/frontend/src/content/i18n/de.json @@ -61,10 +61,7 @@ "madeWithLove": "Mit 💜 bei Microsoft erstellt", "opensInNewTab": "öffnet in neuem Tab", "ask": "Fragen & Antworten", - "collab": "Zusammenarbeiten", "community": "Community", - "discuss": "Diskutieren", - "watch": "Ansehen", "blog": "Blog", "privacy": "Datenschutz", "resources": "Ressourcen", diff --git a/src/frontend/src/content/i18n/en.json b/src/frontend/src/content/i18n/en.json index df31539b5..434f88d39 100644 --- a/src/frontend/src/content/i18n/en.json +++ b/src/frontend/src/content/i18n/en.json @@ -61,10 +61,7 @@ "madeWithLove": "Made with 💜 at Microsoft", "opensInNewTab": "opens in new tab", "ask": "FAQ", - "collab": "Collaborate", "community": "Community", - "discuss": "Discuss", - "watch": "Watch", "blog": "Blog", "privacy": "Privacy", "resources": "Resources", diff --git a/src/frontend/src/content/i18n/es.json b/src/frontend/src/content/i18n/es.json index 5332fcea2..d2c8441b4 100644 --- a/src/frontend/src/content/i18n/es.json +++ b/src/frontend/src/content/i18n/es.json @@ -61,10 +61,7 @@ "madeWithLove": "Hecho con 💜 en Microsoft", "opensInNewTab": "se abre en una nueva pestaña", "ask": "Preguntas y respuestas", - "collab": "Colabora", "community": "Comunidad", - "discuss": "Debatir", - "watch": "Ver bajo demanda", "blog": "Blog", "privacy": "Privacidad", "resources": "Recursos", diff --git a/src/frontend/src/content/i18n/fr.json b/src/frontend/src/content/i18n/fr.json index a049e870b..71eccbef5 100644 --- a/src/frontend/src/content/i18n/fr.json +++ b/src/frontend/src/content/i18n/fr.json @@ -61,10 +61,7 @@ "madeWithLove": "Fait avec 💜 chez Microsoft", "opensInNewTab": "ouvre dans un nouvel onglet", "ask": "Questions & Réponses", - "collab": "Collaborer", "community": "Communauté", - "discuss": "Discuter", - "watch": "Regarder", "blog": "Blog", "privacy": "Confidentialité", "resources": "Ressources", diff --git a/src/frontend/src/content/i18n/hi.json b/src/frontend/src/content/i18n/hi.json index 52cc877bb..2c8739d87 100644 --- a/src/frontend/src/content/i18n/hi.json +++ b/src/frontend/src/content/i18n/hi.json @@ -61,10 +61,7 @@ "madeWithLove": "Microsoft पर 💜 के साथ बनाया गया", "opensInNewTab": "नए टैब में खुलता है", "ask": "प्रश्न & उत्तर", - "collab": "सहयोग करें", "community": "समुदाय", - "discuss": "चर्चा", - "watch": "देखें", "blog": "ब्लॉग", "privacy": "गोपनीयता", "resources": "संसाधन", diff --git a/src/frontend/src/content/i18n/id.json b/src/frontend/src/content/i18n/id.json index a0b3a957c..b9d831cd7 100644 --- a/src/frontend/src/content/i18n/id.json +++ b/src/frontend/src/content/i18n/id.json @@ -61,10 +61,7 @@ "madeWithLove": "Dibuat dengan 💜 di Microsoft", "opensInNewTab": "membuka di tab baru", "ask": "Tanya & Jawab", - "collab": "Kolaborasi", "community": "Komunitas", - "discuss": "Diskusi", - "watch": "Tonton", "blog": "Blog", "privacy": "Privasi", "resources": "Sumber Daya", diff --git a/src/frontend/src/content/i18n/it.json b/src/frontend/src/content/i18n/it.json index 6f61bd64b..645aed450 100644 --- a/src/frontend/src/content/i18n/it.json +++ b/src/frontend/src/content/i18n/it.json @@ -61,10 +61,7 @@ "madeWithLove": "Creato con 💜 in Microsoft", "opensInNewTab": "apre in una nuova scheda", "ask": "Domande & Risposte", - "collab": "Collabora", "community": "Community", - "discuss": "Discute", - "watch": "Guarda", "blog": "Blog", "privacy": "Privacy", "resources": "Risorse", diff --git a/src/frontend/src/content/i18n/ja.json b/src/frontend/src/content/i18n/ja.json index cb6ad6a0c..a3b135f0c 100644 --- a/src/frontend/src/content/i18n/ja.json +++ b/src/frontend/src/content/i18n/ja.json @@ -61,10 +61,7 @@ "madeWithLove": "Microsoft で 💜 を込めて制作", "opensInNewTab": "新しいタブで開く", "ask": "質問 & 回答", - "collab": "コラボレーション", "community": "コミュニティ", - "discuss": "ディスカッション", - "watch": "視聴", "blog": "ブログ", "privacy": "プライバシー", "resources": "リソース", diff --git a/src/frontend/src/content/i18n/ko.json b/src/frontend/src/content/i18n/ko.json index 239419ff6..29d773d34 100644 --- a/src/frontend/src/content/i18n/ko.json +++ b/src/frontend/src/content/i18n/ko.json @@ -61,10 +61,7 @@ "madeWithLove": "Microsoft에서 💜로 제작", "opensInNewTab": "새 탭에서 열림", "ask": "질문 & 답변", - "collab": "협업", "community": "커뮤니티", - "discuss": "토론", - "watch": "보기", "blog": "블로그", "privacy": "개인정보", "resources": "리소스", diff --git a/src/frontend/src/content/i18n/pt-BR.json b/src/frontend/src/content/i18n/pt-BR.json index b327d6993..8ad3042a2 100644 --- a/src/frontend/src/content/i18n/pt-BR.json +++ b/src/frontend/src/content/i18n/pt-BR.json @@ -61,10 +61,7 @@ "madeWithLove": "Feito com 💜 na Microsoft", "opensInNewTab": "abre em nova aba", "ask": "Pergunte & Responda", - "collab": "Colabore", "community": "Comunidade", - "discuss": "Discutir", - "watch": "Assistir", "blog": "Blog", "privacy": "Privacidade", "resources": "Recursos", diff --git a/src/frontend/src/content/i18n/ru.json b/src/frontend/src/content/i18n/ru.json index 652038b07..d2c8ae922 100644 --- a/src/frontend/src/content/i18n/ru.json +++ b/src/frontend/src/content/i18n/ru.json @@ -61,10 +61,7 @@ "madeWithLove": "Сделано с 💜 в Microsoft", "opensInNewTab": "открывается в новой вкладке", "ask": "Вопросы & ответы", - "collab": "Сотрудничать", "community": "Сообщество", - "discuss": "Обсуждать", - "watch": "Смотреть", "blog": "Блог", "privacy": "Конфиденциальность", "resources": "Ресурсы", diff --git a/src/frontend/src/content/i18n/tr.json b/src/frontend/src/content/i18n/tr.json index b70c72a0e..d5cf971e4 100644 --- a/src/frontend/src/content/i18n/tr.json +++ b/src/frontend/src/content/i18n/tr.json @@ -61,10 +61,7 @@ "madeWithLove": "Microsoft'ta 💜 ile yapıldı", "opensInNewTab": "yeni sekmede açılır", "ask": "Sor & Yanıtla", - "collab": "İşbirliği", "community": "Topluluk", - "discuss": "Tartış", - "watch": "İzle", "blog": "Blog", "privacy": "Gizlilik", "resources": "Kaynaklar", diff --git a/src/frontend/src/content/i18n/uk.json b/src/frontend/src/content/i18n/uk.json index 2cb79b77e..436989f15 100644 --- a/src/frontend/src/content/i18n/uk.json +++ b/src/frontend/src/content/i18n/uk.json @@ -61,10 +61,7 @@ "madeWithLove": "Зроблено з 💜 у Microsoft", "opensInNewTab": "відкривається в новій вкладці", "ask": "Запитання & Відповіді", - "collab": "Співпраця", "community": "Спільнота", - "discuss": "Обговорити", - "watch": "Переглянути", "blog": "Блог", "privacy": "Приватність", "resources": "Ресурси", diff --git a/src/frontend/src/content/i18n/zh-CN.json b/src/frontend/src/content/i18n/zh-CN.json index 32311c309..9f2b3cdda 100644 --- a/src/frontend/src/content/i18n/zh-CN.json +++ b/src/frontend/src/content/i18n/zh-CN.json @@ -61,10 +61,7 @@ "madeWithLove": "由 Microsoft 倾情打造 💜", "opensInNewTab": "在新标签页中打开", "ask": "问 & 答", - "collab": "协作", "community": "社区", - "discuss": "讨论", - "watch": "观看", "blog": "博客", "privacy": "隐私", "resources": "资源", diff --git a/src/frontend/tests/unit/custom-components.vitest.test.ts b/src/frontend/tests/unit/custom-components.vitest.test.ts index 9659790f6..70df541db 100644 --- a/src/frontend/tests/unit/custom-components.vitest.test.ts +++ b/src/frontend/tests/unit/custom-components.vitest.test.ts @@ -806,6 +806,44 @@ describe('custom Astro component render coverage', () => { expect(html).not.toContain('h=1000'); }); + it('renders footer community links with platform names', async () => { + const translations: Record = { + 'footer.community': 'Community', + 'footer.blog': 'Blog', + 'footer.collab': 'Collaborate', + 'footer.discuss': 'Discuss', + 'footer.watch': 'Watch', + }; + const t = ((key: string) => translations[key] ?? key) as ((key: string) => string) & { + dir: () => 'ltr'; + }; + t.dir = () => 'ltr'; + + const html = normalizeHtml( + await renderComponent(FooterLinks, { + locals: { t }, + }) + ); + + for (const label of [ + 'X (Twitter)', + 'BlueSky', + 'GitHub', + 'Discord', + 'Reddit', + 'YouTube', + 'Twitch', + 'Blog', + ]) { + expect(html).toContain(label); + } + + expect(html).not.toContain('Follow'); + expect(html).not.toContain('Collaborate'); + expect(html).not.toContain('Discuss'); + expect(html).not.toContain('Watch'); + }); + it('hides footer community links on localized 404 pages', async () => { const html = normalizeHtml( await renderComponent(FooterLinks, { From 133563279796a08c71135e2455492011c051184e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 12:10:41 +0000 Subject: [PATCH 4/4] feat: add localized CTA title attributes to footer community links Agent-Logs-Url: https://github.com/microsoft/aspire.dev/sessions/73b6f7ea-d8f6-4e3d-8020-cd733fe0c56e Co-authored-by: IEvangelist <7679720+IEvangelist@users.noreply.github.com> --- src/frontend/src/components/FooterLinks.astro | 30 ++++++++++++------- src/frontend/src/content/i18n/da.json | 8 +++++ src/frontend/src/content/i18n/de.json | 8 +++++ src/frontend/src/content/i18n/en.json | 8 +++++ src/frontend/src/content/i18n/es.json | 8 +++++ src/frontend/src/content/i18n/fr.json | 8 +++++ src/frontend/src/content/i18n/hi.json | 8 +++++ src/frontend/src/content/i18n/id.json | 8 +++++ src/frontend/src/content/i18n/it.json | 8 +++++ src/frontend/src/content/i18n/ja.json | 8 +++++ src/frontend/src/content/i18n/ko.json | 8 +++++ src/frontend/src/content/i18n/pt-BR.json | 8 +++++ src/frontend/src/content/i18n/ru.json | 8 +++++ src/frontend/src/content/i18n/tr.json | 8 +++++ src/frontend/src/content/i18n/uk.json | 8 +++++ src/frontend/src/content/i18n/zh-CN.json | 8 +++++ 16 files changed, 139 insertions(+), 11 deletions(-) diff --git a/src/frontend/src/components/FooterLinks.astro b/src/frontend/src/components/FooterLinks.astro index a1e087bea..ed5973c7e 100644 --- a/src/frontend/src/components/FooterLinks.astro +++ b/src/frontend/src/components/FooterLinks.astro @@ -5,27 +5,35 @@ import { socialConfig } from '../../config/socials.config'; type CommunityLink = { icon: (typeof socialConfig)[number]['icon'] | 'reddit'; label: string; + title: string; href: string; }; -const getSocialLink = (label: string, displayLabel = label): CommunityLink | null => { +const getSocialLink = ( + label: string, + title: string, + displayLabel = label, +): CommunityLink | null => { const link = socialConfig.find((social) => social.label === label); - return link ? { icon: link.icon, label: displayLabel, href: link.href } : null; + return link ? { icon: link.icon, label: displayLabel, title, href: link.href } : null; }; +const t = (key: string) => Astro.locals.t(key as any); + const communityLinks = [ - getSocialLink('X', 'X (Twitter)'), - getSocialLink('BlueSky'), - getSocialLink('GitHub'), - getSocialLink('Discord'), + getSocialLink('X', t('footer.followOnX'), 'X'), + getSocialLink('BlueSky', t('footer.followOnBlueSky')), + getSocialLink('GitHub', t('footer.collaborateOnGitHub')), + getSocialLink('Discord', t('footer.joinDiscord')), { - icon: 'reddit', + icon: 'reddit' as const, label: 'Reddit', + title: t('footer.discussOnReddit'), href: 'https://www.reddit.com/r/aspiredotdev', }, - getSocialLink('YouTube'), - getSocialLink('Twitch'), - getSocialLink('Blog', Astro.locals.t('footer.blog' as any)), + getSocialLink('YouTube', t('footer.watchOnYouTube')), + getSocialLink('Twitch', t('footer.watchOnTwitch')), + getSocialLink('Blog', t('footer.readBlog'), t('footer.blog')), ].filter((link): link is CommunityLink => link !== null); const is404 = @@ -40,7 +48,7 @@ const is404 =