Skip to content

Commit 4cd9bbe

Browse files
committed
feat(www): locale specific urls
1 parent bca112e commit 4cd9bbe

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

packages/console/app/src/component/locale-links.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
11
import { Link } from "@solidjs/meta"
22
import { For } from "solid-js"
3+
import { getRequestEvent } from "solid-js/web"
34
import { config } from "~/config"
45
import { useLanguage } from "~/context/language"
56
import { LOCALES, route, tag } from "~/lib/language"
67

8+
function skip(path: string) {
9+
const evt = getRequestEvent()
10+
if (!evt) return false
11+
12+
const key = "__locale_links_seen"
13+
const locals = evt.locals as Record<string, unknown>
14+
const seen = locals[key] instanceof Set ? (locals[key] as Set<string>) : new Set<string>()
15+
locals[key] = seen
16+
if (seen.has(path)) return true
17+
seen.add(path)
18+
return false
19+
}
20+
721
export function LocaleLinks(props: { path: string }) {
822
const language = useLanguage()
23+
if (skip(props.path)) return null
924

1025
return (
1126
<>

packages/console/app/src/lib/language.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export function strip(pathname: string) {
9090

9191
export function route(locale: Locale, pathname: string) {
9292
const next = strip(pathname)
93+
if (next.startsWith("/docs")) return next
9394
if (locale === "en") return next
9495
if (next === "/") return `/${locale}`
9596
return `/${locale}${next}`

packages/console/app/vite.config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import { nitro } from "nitro/vite"
44

55
export default defineConfig({
66
plugins: [
7-
solidStart() as PluginOption,
7+
solidStart({
8+
middleware: "./src/middleware.ts",
9+
}) as PluginOption,
810
nitro({
911
compatibilityDate: "2024-09-19",
1012
preset: "cloudflare_module",

0 commit comments

Comments
 (0)