From 181a1adb7a1c8de272fd5eea9aa8231a39ce0269 Mon Sep 17 00:00:00 2001 From: sisungo Date: Wed, 22 Apr 2026 14:21:08 +0800 Subject: [PATCH] feat: add few links --- messages/en.json | 11 +++++++++-- messages/jp.json | 11 +++++++++-- messages/zh-cn.json | 11 +++++++++-- src/components/Footer.svelte | 14 ++++++++++---- src/components/Topbar.svelte | 2 +- src/routes/+error.svelte | 5 +++++ src/routes/+layout.js | 1 + src/routes/+page.svelte | 6 +++++- src/routes/404/+page.svelte | 12 ++++++++++++ src/routes/news/+page.svelte | 1 - src/routes/products/+page.svelte | 9 ++++++++- src/routes/products/misaka/+page.svelte | 0 src/shared/Languages.js | 2 +- src/shared/Products.js | 17 +++++++++++++++-- 14 files changed, 85 insertions(+), 17 deletions(-) create mode 100644 src/routes/+error.svelte create mode 100644 src/routes/+layout.js create mode 100644 src/routes/404/+page.svelte create mode 100644 src/routes/products/misaka/+page.svelte diff --git a/messages/en.json b/messages/en.json index 1fe8601..5f38535 100644 --- a/messages/en.json +++ b/messages/en.json @@ -9,13 +9,20 @@ "footer_social": "Social", "footer_privacy": "Privacy Notice", "footer_links": "Links", + "footer_link_misaka": "Access our Misaka Network", "semilabs": "SemiLabs", "semilabs_description": "A field to build reliable and secure digital infrastructure.", "learn_more": "Learn More", "products_title": "Products by SemiLabs", - "product_os": "SemiOS Operating System", + "product_softinfra": "Software Infrastructure", + "product_semios": "SemiOS Operating System", + "product_cloud": "Cloud Computing", + "product_games": "Games", - "news_title": "SemiLabs News" + "news_title": "SemiLabs News", + + "error_title": "Oh, no!", + "error_description": "Sorry, the page you are looking for does not exist." } diff --git a/messages/jp.json b/messages/jp.json index 12d51a4..ddff102 100644 --- a/messages/jp.json +++ b/messages/jp.json @@ -9,13 +9,20 @@ "footer_social": "ソーシャル", "footer_privacy": "プライバシーポリシー", "footer_links": "リンク", + "footer_link_misaka": "Misaka Network にアクセス", "semilabs": "SemiLabs", "semilabs_description": "信頼性とセキュリティを保証するデジタルインフラストラクチャを構築するフィールドです。", "learn_more": "詳細を見る", "products_title": "SemiLabs の 製品", - "product_os": "SemiOS オペレーティングシステム", + "product_softinfra": "基礎ソフトウェア", + "product_semios": "SemiOS オペレーティングシステム", + "product_cloud": "クラウドコンピューティング", + "product_games": "ゲーム", - "news_title": "SemiLabs ニュース" + "news_title": "SemiLabs ニュース", + + "error_title": "おっと!", + "error_description": "申し訳ありませんが、お探しのページは見つかりませんでした。" } diff --git a/messages/zh-cn.json b/messages/zh-cn.json index 4a54bb2..1f3f7a2 100644 --- a/messages/zh-cn.json +++ b/messages/zh-cn.json @@ -9,13 +9,20 @@ "footer_social": "社交媒体", "footer_privacy": "隐私政策", "footer_links": "相关链接", + "footer_link_misaka": "访问我们的 Misaka 网络", "semilabs": "SemiLabs", "semilabs_description": "构建可靠而安全的数字基础设施。", "learn_more": "了解更多", "products_title": "SemiLabs 产品", - "product_os": "SemiOS 操作系统", + "product_softinfra": "基础软件", + "product_semios": "SemiOS 操作系统", + "product_cloud": "云计算", + "product_games": "游戏", - "news_title": "SemiLabs 新闻" + "news_title": "SemiLabs 新闻", + + "error_title": "糟糕...", + "error_description": "您正在访问的页面似乎不存在。" } diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte index dcbb0c2..701ddfb 100644 --- a/src/components/Footer.svelte +++ b/src/components/Footer.svelte @@ -12,20 +12,26 @@
-
-
+
+

{m.footer_links()}

+
-
+

{m.footer_terms_and_policies()}

-
+

{m.footer_social()}

+
+ GitHub +
diff --git a/src/components/Topbar.svelte b/src/components/Topbar.svelte index c7c4dd8..d3711cf 100644 --- a/src/components/Topbar.svelte +++ b/src/components/Topbar.svelte @@ -69,7 +69,7 @@ - + diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..84f4a07 --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,5 @@ + diff --git a/src/routes/+layout.js b/src/routes/+layout.js new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/src/routes/+layout.js @@ -0,0 +1 @@ +export const prerender = true; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5fcd4a4..aa40d17 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -3,6 +3,10 @@ import { Button } from '$lib/components/ui/button/index.js'; + + SemiLabs + +

{m.semilabs()}

{m.semilabs_description()}

- + diff --git a/src/routes/404/+page.svelte b/src/routes/404/+page.svelte new file mode 100644 index 0000000..ab07198 --- /dev/null +++ b/src/routes/404/+page.svelte @@ -0,0 +1,12 @@ + + +
+
+

{m.error_title()}

+
+
+

{m.error_description()}

+
+
diff --git a/src/routes/news/+page.svelte b/src/routes/news/+page.svelte index 5239279..1b2b164 100644 --- a/src/routes/news/+page.svelte +++ b/src/routes/news/+page.svelte @@ -1,6 +1,5 @@

{m.news_title()}

diff --git a/src/routes/products/+page.svelte b/src/routes/products/+page.svelte index eee1320..bb36cfc 100644 --- a/src/routes/products/+page.svelte +++ b/src/routes/products/+page.svelte @@ -1,6 +1,13 @@

{m.products_title()}

+
+{#each products as product_class} +

{product_class.title}

+ {#each product_class.products as product} + {product.name} + {/each} +{/each} diff --git a/src/routes/products/misaka/+page.svelte b/src/routes/products/misaka/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/Languages.js b/src/shared/Languages.js index 049cfc2..dc3d689 100644 --- a/src/shared/Languages.js +++ b/src/shared/Languages.js @@ -1,5 +1,5 @@ export const languages = [ { id: 'en', name: 'English' }, { id: 'zh-cn', name: '简体中文' }, - { id: 'jp', name: '日本语' } + { id: 'jp', name: '日本語' } ]; diff --git a/src/shared/Products.js b/src/shared/Products.js index dd84582..aac6e9c 100644 --- a/src/shared/Products.js +++ b/src/shared/Products.js @@ -2,12 +2,25 @@ import * as m from '$lib/paraglide/messages'; export const products = [ { - title: m.product_os(), + title: m.product_softinfra(), products: [ { - name: m.product_os(), + name: m.product_semios(), link: 'https://os.semilabs.org' } ] + }, + { + title: m.product_cloud(), + products: [ + { + name: 'Misaka', + link: '/products/misaka' + } + ] + }, + { + title: m.product_games(), + products: [] } ];