|
|
@@ -1,5 +1,5 @@
|
|
|
import "./index.css"
|
|
|
-import { Title, Meta, Link } from "@solidjs/meta"
|
|
|
+import { Title, Meta } from "@solidjs/meta"
|
|
|
import { A, createAsync, query } from "@solidjs/router"
|
|
|
import { Header } from "~/component/header"
|
|
|
import { Footer } from "~/component/footer"
|
|
|
@@ -11,6 +11,8 @@ import { config } from "~/config"
|
|
|
import { createSignal, onMount, Show, JSX } from "solid-js"
|
|
|
import { DownloadPlatform } from "./types"
|
|
|
import { useI18n } from "~/context/i18n"
|
|
|
+import { useLanguage } from "~/context/language"
|
|
|
+import { LocaleLinks } from "~/component/locale-links"
|
|
|
|
|
|
type OS = "macOS" | "Windows" | "Linux" | null
|
|
|
|
|
|
@@ -66,6 +68,7 @@ function CopyStatus() {
|
|
|
|
|
|
export default function Download() {
|
|
|
const i18n = useI18n()
|
|
|
+ const language = useLanguage()
|
|
|
const [detectedOS, setDetectedOS] = createSignal<OS>(null)
|
|
|
|
|
|
onMount(() => {
|
|
|
@@ -83,7 +86,7 @@ export default function Download() {
|
|
|
return (
|
|
|
<main data-page="download">
|
|
|
<Title>{i18n.t("download.title")}</Title>
|
|
|
- <Link rel="canonical" href={`${config.baseUrl}/download`} />
|
|
|
+ <LocaleLinks path="/download" />
|
|
|
<Meta name="description" content={i18n.t("download.meta.description")} />
|
|
|
<div data-component="container">
|
|
|
<Header hideGetStarted />
|
|
|
@@ -97,7 +100,10 @@ export default function Download() {
|
|
|
<h1>{i18n.t("download.hero.title")}</h1>
|
|
|
<p>{i18n.t("download.hero.subtitle")}</p>
|
|
|
<Show when={detectedOS()}>
|
|
|
- <a href={getDownloadHref(getDownloadPlatform(detectedOS()))} data-component="download-button">
|
|
|
+ <a
|
|
|
+ href={language.route(getDownloadHref(getDownloadPlatform(detectedOS())))}
|
|
|
+ data-component="download-button"
|
|
|
+ >
|
|
|
<IconDownload />
|
|
|
{i18n.t("download.hero.button", { os: detectedOS()! })}
|
|
|
</a>
|
|
|
@@ -169,7 +175,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>{i18n.t("download.platform.macosAppleSilicon")}</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("darwin-aarch64-dmg")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("darwin-aarch64-dmg"))} data-component="action-button">
|
|
|
{i18n.t("download.action.download")}
|
|
|
</a>
|
|
|
</div>
|
|
|
@@ -185,7 +191,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>{i18n.t("download.platform.macosIntel")}</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("darwin-x64-dmg")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("darwin-x64-dmg"))} data-component="action-button">
|
|
|
{i18n.t("download.action.download")}
|
|
|
</a>
|
|
|
</div>
|
|
|
@@ -208,7 +214,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>{i18n.t("download.platform.windowsX64")}</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("windows-x64-nsis")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("windows-x64-nsis"))} data-component="action-button">
|
|
|
{i18n.t("download.action.download")}
|
|
|
</a>
|
|
|
</div>
|
|
|
@@ -224,7 +230,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>{i18n.t("download.platform.linuxDeb")}</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("linux-x64-deb")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("linux-x64-deb"))} data-component="action-button">
|
|
|
{i18n.t("download.action.download")}
|
|
|
</a>
|
|
|
</div>
|
|
|
@@ -240,7 +246,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>{i18n.t("download.platform.linuxRpm")}</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("linux-x64-rpm")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("linux-x64-rpm"))} data-component="action-button">
|
|
|
{i18n.t("download.action.download")}
|
|
|
</a>
|
|
|
</div>
|
|
|
@@ -257,7 +263,7 @@ export default function Download() {
|
|
|
</span>
|
|
|
<span>Linux (.AppImage)</span>
|
|
|
</div>
|
|
|
- <a href={getDownloadHref("linux-x64-appimage")} data-component="action-button">
|
|
|
+ <a href={language.route(getDownloadHref("linux-x64-appimage"))} data-component="action-button">
|
|
|
Download
|
|
|
</a>
|
|
|
</div>*/}
|
|
|
@@ -422,36 +428,38 @@ export default function Download() {
|
|
|
</li>
|
|
|
<li>
|
|
|
<Faq question={i18n.t("home.faq.q2")}>
|
|
|
- {i18n.t("home.faq.a2.before")} <a href="/docs">{i18n.t("home.faq.a2.link")}</a>.
|
|
|
+ {i18n.t("home.faq.a2.before")} <a href={language.route("/docs")}>{i18n.t("home.faq.a2.link")}</a>.
|
|
|
</Faq>
|
|
|
</li>
|
|
|
<li>
|
|
|
<Faq question={i18n.t("home.faq.q3")}>
|
|
|
{i18n.t("download.faq.a3.beforeLocal")}{" "}
|
|
|
- <a href="/docs/providers/#lm-studio" target="_blank">
|
|
|
+ <a href={language.route("/docs/providers/#lm-studio")} target="_blank">
|
|
|
{i18n.t("download.faq.a3.localLink")}
|
|
|
</a>{" "}
|
|
|
- {i18n.t("download.faq.a3.afterLocal.beforeZen")} <A href="/zen">{i18n.t("nav.zen")}</A>
|
|
|
+ {i18n.t("download.faq.a3.afterLocal.beforeZen")}{" "}
|
|
|
+ <A href={language.route("/zen")}>{i18n.t("nav.zen")}</A>
|
|
|
{i18n.t("download.faq.a3.afterZen")}
|
|
|
</Faq>
|
|
|
</li>
|
|
|
<li>
|
|
|
<Faq question={i18n.t("home.faq.q5")}>
|
|
|
- {i18n.t("home.faq.a5.beforeDesktop")} <a href="/download">{i18n.t("home.faq.a5.desktop")}</a>{" "}
|
|
|
- {i18n.t("home.faq.a5.and")} <a href="/docs/cli/#web">{i18n.t("home.faq.a5.web")}</a>!
|
|
|
+ {i18n.t("home.faq.a5.beforeDesktop")}{" "}
|
|
|
+ <a href={language.route("/download")}>{i18n.t("home.faq.a5.desktop")}</a> {i18n.t("home.faq.a5.and")}{" "}
|
|
|
+ <a href={language.route("/docs/cli/#web")}>{i18n.t("home.faq.a5.web")}</a>!
|
|
|
</Faq>
|
|
|
</li>
|
|
|
<li>
|
|
|
<Faq question={i18n.t("home.faq.q6")}>
|
|
|
{i18n.t("download.faq.a5.p1")} {i18n.t("download.faq.a5.p2.beforeZen")}{" "}
|
|
|
- <A href="/zen">{i18n.t("nav.zen")}</A>
|
|
|
+ <A href={language.route("/zen")}>{i18n.t("nav.zen")}</A>
|
|
|
{i18n.t("download.faq.a5.p2.afterZen")}
|
|
|
</Faq>
|
|
|
</li>
|
|
|
<li>
|
|
|
<Faq question={i18n.t("home.faq.q7")}>
|
|
|
{i18n.t("download.faq.a6.p1")} {i18n.t("download.faq.a6.p2.beforeShare")}{" "}
|
|
|
- <a href="/docs/share/#privacy">{i18n.t("download.faq.a6.shareLink")}</a>.
|
|
|
+ <a href={language.route("/docs/share/#privacy")}>{i18n.t("download.faq.a6.shareLink")}</a>.
|
|
|
</Faq>
|
|
|
</li>
|
|
|
<li>
|