|
|
@@ -0,0 +1,29 @@
|
|
|
+---
|
|
|
+import config from "virtual:starlight/user-config"
|
|
|
+import StarlightLanguageSelect from "@astrojs/starlight/components/LanguageSelect.astro"
|
|
|
+
|
|
|
+const locales = Object.keys(config.locales ?? {})
|
|
|
+---
|
|
|
+
|
|
|
+<opencode-language-select data-locales={JSON.stringify(locales)}>
|
|
|
+ <StarlightLanguageSelect />
|
|
|
+</opencode-language-select>
|
|
|
+
|
|
|
+<script>
|
|
|
+ document.addEventListener("change", (event) => {
|
|
|
+ if (!(event.target instanceof HTMLSelectElement)) return
|
|
|
+ const wrapper = event.target.closest("opencode-language-select")
|
|
|
+ if (!(wrapper instanceof HTMLElement)) return
|
|
|
+
|
|
|
+ const locales = JSON.parse(wrapper.dataset.locales ?? "[]") as string[]
|
|
|
+ const locale = locales[event.target.selectedIndex]
|
|
|
+ if (!locale) return
|
|
|
+ document.cookie = `oc_locale=${encodeURIComponent(locale === "root" ? "en" : locale)}; Path=/; Max-Age=31536000; SameSite=Lax`
|
|
|
+ })
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+ opencode-language-select {
|
|
|
+ display: contents;
|
|
|
+ }
|
|
|
+</style>
|