Skip to content
Open
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
eec9f84
chore: added Astro's built i18n routing
JoblersTune Apr 8, 2025
8c8f582
TMP
JoblersTune Apr 8, 2025
79a5267
TMP
JoblersTune Apr 8, 2025
4dd0b43
feat: added Starlight's built in internationalization
JoblersTune Apr 8, 2025
95828bd
TMP
JoblersTune Apr 8, 2025
d05598c
TMP
JoblersTune Apr 8, 2025
b906491
chore: undo Starlight locale conflict. Can't be supported
JoblersTune Apr 8, 2025
58da964
TMP
JoblersTune Apr 8, 2025
8e9d88b
TMP
JoblersTune Apr 8, 2025
1803b84
TMP experiment
JoblersTune Apr 8, 2025
cebe4e1
TMP undo experiment
JoblersTune Apr 8, 2025
c807f04
chore: removed defaultLocale
JoblersTune Apr 10, 2025
16eac9a
chore: filtering blogs and building pages
JoblersTune Apr 11, 2025
130d33a
chore: added a lang attribute for filtering and all slugs must be unique
JoblersTune Apr 11, 2025
4f7f9eb
work in progress, dynamic routing to make language for all blog posts…
JoblersTune Apr 11, 2025
c8925d4
chore: add translation for nav items
Anca2022 Jul 2, 2025
e7e08d8
chore: add language switcher to navigation menu
Anca2022 Jul 2, 2025
2ab6b21
chore: set color for links in language switcher
Anca2022 Jul 3, 2025
992e7d6
chore: add translations for blog article paths
Anca2022 Jul 4, 2025
a2e4eb7
Merge pull request #141 from interledger/am/language-switcher
Anca2022 Oct 20, 2025
6c626f8
fix social icons
JonathanMatthey Oct 20, 2025
e5bc889
feat: add language switch to Startlight docs headers
JonathanMatthey Oct 20, 2025
32363e2
feat: add i18n translation for interledgerprotocol page
JonathanMatthey Oct 20, 2025
cb542cf
fix: update nav to reflect main site
JonathanMatthey Oct 20, 2025
497ba0d
fix: improve menu ES
JonathanMatthey Oct 20, 2025
d147194
add footer translation
JonathanMatthey Oct 20, 2025
74280d0
feat: add hreflang tags for multilingual SEO
JonathanMatthey Oct 20, 2025
4294c80
add couple of dummy ES posts
JonathanMatthey Oct 20, 2025
a0f95f1
add 1 more dummy ES blog post
JonathanMatthey Oct 20, 2025
aa7aff1
fix breadcrumps translation + links
JonathanMatthey Oct 20, 2025
e05a08c
temp - rm github social
JonathanMatthey Oct 21, 2025
a07be77
rm: dummy posts
JonathanMatthey Oct 22, 2025
4d0f3bb
rm: translated doc page
JonathanMatthey Oct 22, 2025
14914a2
fix: translation cumbre
JonathanMatthey Oct 22, 2025
2ba7623
Update astro.config.mjs
JonathanMatthey Dec 1, 2025
87e909d
Fix: use web font
JonathanMatthey Dec 1, 2025
9d9df1d
Update src/i18n/ui.ts
JonathanMatthey Dec 1, 2025
05e93b3
Update src/i18n/ui.ts
JonathanMatthey Dec 1, 2025
46a3670
Update src/i18n/ui.ts
JonathanMatthey Dec 1, 2025
9aef01e
Update src/i18n/ui.ts
JonathanMatthey Dec 1, 2025
e2b90d2
Update src/i18n/ui.ts
JonathanMatthey Dec 1, 2025
6764952
update footer text
JonathanMatthey Dec 1, 2025
8919aa3
update tech blog description
JonathanMatthey Dec 1, 2025
fe04415
fix: responsive languagepicker
JonathanMatthey Dec 1, 2025
3f2beb8
fix: translate tech blog title /desc
JonathanMatthey Dec 1, 2025
814c40d
fix: hreflang tags in head
JonathanMatthey Dec 1, 2025
33b86d8
Update src/pages/blog/[...page].astro
JonathanMatthey Dec 2, 2025
bb6e359
Update src/i18n/ui.ts
JonathanMatthey Dec 2, 2025
81c8341
fix lang
JonathanMatthey Dec 2, 2025
05730bc
add translation t
JonathanMatthey Dec 2, 2025
7a267dd
translatepath
JonathanMatthey Dec 2, 2025
1b0e263
Update src/i18n/ui.ts
JonathanMatthey Dec 2, 2025
2dff34f
1159 not 1160
JonathanMatthey Dec 2, 2025
44b7ef9
hided language picker on dev page
JonathanMatthey Dec 2, 2025
3d7104c
add /es path to Spanish landing page links
Anca2022 Jan 12, 2026
f5813b6
change ui Spanish translations to match those on the foundation website
Anca2022 Jan 12, 2026
f88d2cf
Merge branch 'main' into jm/translate-startlight-docs2
Anca2022 Jan 13, 2026
9bdefc5
format files
Anca2022 Jan 13, 2026
8bb218c
remove duplicate optional "lang" field from blog collection schema
Anca2022 Jan 13, 2026
a99f5a2
add lang to blog frontmatter where missing
Anca2022 Jan 13, 2026
47ef701
change font name to match the one on foundation
Anca2022 Jan 13, 2026
68f56a5
Add Spanish article “El Universo Interledger” to translation system
Anca2022 Jan 14, 2026
d1f1086
integrate tag filter component into Spanish blog page
Anca2022 Jan 14, 2026
e920a38
fix translating twice ES paths
Anca2022 Jan 15, 2026
bec8b2b
fix routing priority for es/blog/tag/[tag]
Anca2022 Jan 15, 2026
57b1f95
format and check if build problem is fixed
Anca2022 Jan 15, 2026
51b5fce
make LanguagePicker on FoundationHeader match the one on foundation w…
Anca2022 Jan 15, 2026
499e920
use SVG Astro components instead of ::after for better color control
Anca2022 Jan 15, 2026
9a5a524
limit allowed article tags via schema; remove workarounds
Anca2022 Jan 15, 2026
bf04f2a
format
Anca2022 Jan 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ import mdx from "@astrojs/mdx";
export default defineConfig({
site: "https://interledger.org",
base: "/developers",
i18n: {
locales: ["es", "en"],
defaultLocale: "en",
routing: {
prefixDefaultLocale: false,
fallbackType: "rewrite"
},
fallback: {
es: "en"
}
},
integrations: [
starlight({
title: "Interledger",
Expand Down Expand Up @@ -52,9 +63,7 @@ export default defineConfig({
Header: "./src/components/Header.astro",
PageSidebar: "./src/components/PageSidebar.astro",
},
social: {
github: "https://github.com/interledger",
},
social:{},
sidebar: [
{
label: "Overview",
Expand Down
6 changes: 5 additions & 1 deletion src/components/Header.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import Search from "@astrojs/starlight/components/Search.astro";
import SocialIcons from "@astrojs/starlight/components/SocialIcons.astro";
import ThemeSelect from "@astrojs/starlight/components/ThemeSelect.astro";
import DevelopersLogo from "./logos/DevelopersLogo.astro";
import LanguagePicker from "./LanguagePicker.astro";
import { getLangFromUrl } from "../i18n/utils";

const lang = getLangFromUrl(Astro.url);
---

<div class="header sl-flex">
Expand All @@ -24,10 +28,10 @@ import DevelopersLogo from "./logos/DevelopersLogo.astro";
</a>
<Search {...Astro.props} />
<div class="sl-hidden md:sl-flex secondary-wrap">

<SocialIcons {...Astro.props} />
<ThemeSelect {...Astro.props} />
</div>
<LanguagePicker lang={lang} />
</div>

<style>
Expand Down
87 changes: 87 additions & 0 deletions src/components/LanguagePicker.astro
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is great for /docs pages, but the <LanguagePicker> now breaks on /developers 😅
image

Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
import { defaultLang } from "../i18n/ui";
import { useTranslatedPath } from "../i18n/utils";
const { lang } = Astro.props;
const path = Astro.url.pathname;
const translatePath = useTranslatedPath(defaultLang, lang);
---

<div class="language-switcher-language-url" role="navigation">
<ul class="links">
<li
class:list={[lang === "en" && "is-active"]}
aria-current={lang === "en" ? "page" : undefined}
>
<a
href={translatePath(path, "en")}
class:list={["language-link", lang === "en" && "is-active"]}
hreflang="en-gb"
aria-current={lang === "en" ? "page" : undefined}
>
EN
</a>
</li>
<li
class:list={[lang === "es" && "is-active"]}
aria-current={lang === "es" ? "page" : undefined}
>
<a
href={translatePath(path, "es")}
class:list={["language-link", lang === "es" && "is-active"]}
hreflang="es"
aria-current={lang === "es" ? "page" : undefined}
>
ES
</a>
</li>
</ul>
</div>

<style>
a {
text-decoration-color: transparent;
transition: text-decoration-color ease-in-out 200ms;
}

.language-switcher-language-url {
flex: none;
}

.language-switcher-language-url .links {
display: flex;
list-style: none;
padding: 0;
margin-inline-start: var(--space-2xs);
}

.language-switcher-language-url .links li:first-child::after {
display: inline-flex;
content: "|";
}

.language-switcher-language-url .links a {
margin: var(--space-3xs);
padding: var(--space-xs) var(--space-2xs);
text-underline-offset: 8px;
text-decoration: underline 1.5px transparent;
color: var(--color-primary-fallback);
color: var(--color-primary);
}

.language-switcher-language-url .links a.is-active {
text-decoration-color: currentColor;
}

.language-switcher-language-url .links a:hover {
background-color: var(--color-nav-hover);
border-radius: var(--border-radius);
}

@media screen and (max-width: 1159px) {
.language-switcher-language-url {
position: absolute;
top: 25px;
right: calc(var(--space-m) + var(--space-xs) + 24px);
}
}
</style>
21 changes: 13 additions & 8 deletions src/components/pages/FoundationFooter.astro
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
---
import { getLangFromUrl, useTranslations, useTranslatedPath } from "../../i18n/utils";

const lang = getLangFromUrl(Astro.url);
const t = useTranslations(lang);
const translatePath = useTranslatedPath(lang, lang);
const currentYear = new Date().getFullYear();
---

<footer class="site-footer" role="contentinfo">
<div class="connect-wrapper">
<div class="mailing-list">
<h3>Join our mailing list</h3>
<h3>{t("footer.mailing-list")}</h3>
<a
class="button subscribe-btn"
href="/subscribe"
href={translatePath("/subscribe")}
data-umami-event="Footer link - Subscribe"
>
Subscribe
{t("footer.subscribe")}
</a>
</div>
<div class="social-links">
<h3>Connect with us</h3>
<h3>{t("footer.connect")}</h3>
<ul>
<li>
<a href="https://www.youtube.com/@InterledgerFoundation" aria-label="Interledger's Youtube channel" data-umami-event="Footer - Youtube">
Expand Down Expand Up @@ -55,11 +60,11 @@ const currentYear = new Date().getFullYear();
</ul>
</div>
</div>
<p>&copy; 2020–{currentYear}, Interledger Foundation. All rights reserved.</p>
<p>&copy; 2020–{currentYear}, Interledger Foundation. {lang === 'es' ? 'Todos los derechos reservados.' : 'All rights reserved.'}</p>
<ul class="footer-links">
<li><a href="https://www.iubenda.com/terms-and-conditions/88624819" data-umami-event="Footer - T&C">Terms & conditions</a></li>
<li><a href="https://www.iubenda.com/privacy-policy/88624819" data-umami-event="Footer - Privacy">Privacy policy</a></li>
<li><a href="/contact" data-umami-event="Footer - Contact">Contact us</a></li>
<li><a href="https://www.iubenda.com/terms-and-conditions/88624819" data-umami-event="Footer - T&C">{t("footer.terms")}</a></li>
<li><a href="https://www.iubenda.com/privacy-policy/88624819" data-umami-event="Footer - Privacy">{t("footer.privacy")}</a></li>
<li><a href={translatePath("/contact")} data-umami-event="Footer - Contact">{t("footer.contact")}</a></li>
</ul>
</footer>

Expand Down
Loading