Globalization

This commit is contained in:
2025-11-30 15:24:31 +08:00
parent 83b16b1cf4
commit 16ece63ae2
9 changed files with 2162 additions and 108 deletions

4
app/components.d.ts vendored
View File

@@ -15,9 +15,7 @@ declare module 'vue' {
NAvatar: typeof import('naive-ui')['NAvatar']
NButton: typeof import('naive-ui')['NButton']
NCard: typeof import('naive-ui')['NCard']
NDropdown: typeof import('naive-ui')['NDropdown']
NIcon: typeof import('naive-ui')['NIcon']
NMenu: typeof import('naive-ui')['NMenu']
NPopover: typeof import('naive-ui')['NPopover']
NTag: typeof import('naive-ui')['NTag']
RouterLink: typeof import('vue-router')['RouterLink']
@@ -30,9 +28,7 @@ declare global {
const NAvatar: typeof import('naive-ui')['NAvatar']
const NButton: typeof import('naive-ui')['NButton']
const NCard: typeof import('naive-ui')['NCard']
const NDropdown: typeof import('naive-ui')['NDropdown']
const NIcon: typeof import('naive-ui')['NIcon']
const NMenu: typeof import('naive-ui')['NMenu']
const NPopover: typeof import('naive-ui')['NPopover']
const NTag: typeof import('naive-ui')['NTag']
const RouterLink: typeof import('vue-router')['RouterLink']

View File

@@ -32,7 +32,16 @@
/>
</n-popover>
<div class="flex gap-4">
<naive-color-mode-switch />
<n-dropdown
trigger="hover"
:options="localeDropdownOptions"
@select="handleLocaleSelect"
>
<n-button text>{{ locale.toUpperCase().split("-")[0] }}</n-button>
</n-dropdown>
</div>
</div>
</header>
@@ -46,39 +55,45 @@
<aside>
<nuxt-img src="/favicon.png" alt="Solsynth" class="w-12 h-12" />
<div>
<h3 class="text-lg font-bold">Solsynth</h3>
Making software, hardware and experiences since 2024
<h3 class="text-lg font-bold">{{ t("common.solsynth") }}</h3>
{{ t("layout.default.footer.tagline") }}
</div>
</aside>
<nav>
<h6 class="footer-title">Products</h6>
<a href="https://solian.app" target="_blank" class="link link-hover"
>Solar Network</a
>
<nuxt-link to="/products" class="link link-hover">Catalog</nuxt-link>
<h6 class="footer-title">{{ t("layout.default.footer.products") }}</h6>
<a href="https://solian.app" target="_blank" class="link link-hover">{{
t("layout.default.footer.solarNetwork")
}}</a>
<nuxt-link to="/products" class="link link-hover">{{
t("layout.default.footer.catalog")
}}</nuxt-link>
</nav>
<nav>
<h6 class="footer-title">Company</h6>
<nuxt-link to="/about" class="link link-hover">About us</nuxt-link>
<h6 class="footer-title">{{ t("layout.default.footer.company") }}</h6>
<nuxt-link to="/about" class="link link-hover">{{
t("layout.default.footer.about")
}}</nuxt-link>
<a
href="https://github.com/Solsynth"
target="_blank"
class="link link-hover"
>GitHub</a
>{{ t("layout.default.footer.github") }}</a
>
</nav>
<nav>
<h6 class="footer-title">Legal</h6>
<nuxt-link to="/terms/user-agreement" class="link link-hover"
>Terms of Service</nuxt-link
>
<nuxt-link to="/terms/privacy-policy" class="link link-hover"
>Privacy Policy</nuxt-link
>
<nuxt-link to="/terms/refund-policy" class="link link-hover"
>Refund Policy</nuxt-link
>
<nuxt-link to="/terms" class="link link-hover">All Documents</nuxt-link>
<h6 class="footer-title">{{ t("layout.default.footer.legal") }}</h6>
<nuxt-link to="/terms/user-agreement" class="link link-hover">{{
t("layout.default.footer.tos")
}}</nuxt-link>
<nuxt-link to="/terms/privacy-policy" class="link link-hover">{{
t("layout.default.footer.privacy")
}}</nuxt-link>
<nuxt-link to="/terms/refund-policy" class="link link-hover">{{
t("layout.default.footer.refund")
}}</nuxt-link>
<nuxt-link to="/terms" class="link link-hover">{{
t("layout.default.footer.allDocs")
}}</nuxt-link>
</nav>
</footer>
</div>
@@ -86,9 +101,10 @@
<script lang="ts" setup>
import type { MenuOption } from "naive-ui";
import { NIcon, NAvatar, NMenu } from "naive-ui";
import { NIcon, NAvatar, NMenu, NDropdown, NButton } from "naive-ui";
import { computed, h } from "vue";
import { useRoute, RouterLink } from "vue-router";
import { useRoute, useRouter, RouterLink } from "vue-router";
import { useI18n } from "vue-i18n";
import {
ExploreOutlined,
CategoryOutlined,
@@ -96,11 +112,26 @@ import {
} from "@vicons/material";
import { breakpointsTailwind } from "@vueuse/core";
const router = useRouter();
const switchLocalePath = useSwitchLocalePath();
const { t, locale, locales } = useI18n();
const localeDropdownOptions = computed(() => {
return locales.value?.map((l: any) => ({
label: l.name,
key: l.code,
}));
});
const handleLocaleSelect = (key: string) => {
router.push(switchLocalePath(key));
};
const route = useRoute();
const breakpoints = useBreakpoints(breakpointsTailwind);
const { data: recentProducts } = await useAsyncData("recent-products", () =>
queryCollection("products").order("updatedDate", "DESC").limit(5).all()
queryCollection("products").order("updatedDate", "DESC").limit(5).all(),
);
const activeKey = computed(() => {
@@ -148,12 +179,12 @@ const menuOptions = computed<MenuOption[]>(() => {
return [
{
label: renderLabel("Explore", "/"),
label: renderLabel(t("layout.default.menu.explore"), "/"),
key: "explore",
icon: renderIcon(ExploreOutlined),
},
{
label: renderLabel("Products", "/products"),
label: renderLabel(t("layout.default.menu.products"), "/products"),
key: "products",
icon: renderIcon(CategoryOutlined),
children: productChildren,

View File

@@ -11,11 +11,10 @@
<nuxt-img src="/favicon.png" class="w-32 h-32 mb-8 animate-float" />
<h1 class="text-6xl font-extrabold mb-6 tracking-tight">
We <span ref="typedElement" class="text-primary" />
{{ t('page.index.hero.we') }} <span ref="typedElement" class="text-primary" />
</h1>
<p class="text-2xl mb-10 opacity-80 max-w-2xl">
We are a group of friends that make software, hardware and any stuff
that is interesting.
{{ t('page.index.hero.subtitle') }}
</p>
<n-space justify="center" size="large">
<n-button
@@ -26,10 +25,10 @@
href="#products"
class="px-8 text-lg font-bold shadow-lg shadow-primary/30 hover:shadow-primary/50 transition-shadow"
>
Explore Products
{{ t('page.index.hero.explore') }}
</n-button>
<n-button size="large" round tag="a" href="/about" class="px-8 text-lg">
About Us
{{ t('page.index.hero.about') }}
</n-button>
</n-space>
@@ -45,10 +44,9 @@
<!-- Products Section -->
<div id="products" class="scroll-mt-24">
<div class="text-center mb-16">
<h2 class="text-4xl font-bold mb-4">Our Creations</h2>
<h2 class="text-4xl font-bold mb-4">{{ t('page.index.creations.title') }}</h2>
<p class="text-xl opacity-70 max-w-2xl mx-auto">
From social networks to cloud drives, we build tools that empower and
connect.
{{ t('page.index.creations.subtitle') }}
</p>
</div>
@@ -134,14 +132,12 @@
class="flex flex-col md:flex-row items-center gap-12 relative z-10 p-8"
>
<div class="flex-1">
<h2 class="text-3xl font-bold mb-4">More Than Just Code</h2>
<h2 class="text-3xl font-bold mb-4">{{ t('page.index.about.title') }}</h2>
<p class="text-lg opacity-80 mb-6 leading-relaxed">
We are a community-driven team focused on creating meaningful
experiences. Our mission goes beyond softwareit's about
connection, innovation, and fun.
{{ t('page.index.about.subtitle') }}
</p>
<n-button type="primary" ghost size="large" tag="a" href="/about">
Read Our Story
{{ t('page.index.about.readStory') }}
<template #icon>
<n-icon :component="ChevronRightOutlined"></n-icon>
</template>
@@ -180,13 +176,16 @@ import {
InfoRound,
} from "@vicons/material";
import Typed from "typed.js";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const route = useRoute();
const typedElement = ref(null);
const typed = shallowRef(null);
useHead({
title: "We are Solsynth",
title: t('page.index.title'),
titleTemplate: "%s",
});
@@ -197,11 +196,11 @@ onMounted(() => {
}
typed.value = new Typed(typedElement.value, {
strings: [
"make software",
"make hardware",
"craft experiences",
"write stories",
"are Solsynth",
t("page.index.hero.typed.makeSoftware"),
t("page.index.hero.typed.makeHardware"),
t("page.index.hero.typed.craftExperiences"),
t("page.index.hero.typed.writeStories"),
t("page.index.hero.typed.areSolsynth"),
],
typeSpeed: 50,
backDelay: 1500,

View File

@@ -27,14 +27,11 @@
</div>
<h1 class="text-6xl md:text-7xl font-extrabold mb-6 tracking-tight">
Solar Network
{{ t('page.product.solarNetwork.hero.title') }}
</h1>
<p class="text-xl md:text-2xl mb-10 max-w-2xl mx-auto leading-relaxed">
The next-generation social network designed for
<span class="text-primary font-semibold">technology enthusiasts</span
>, <span class="text-secondary font-semibold">developers</span>, and
<span class="text-info font-semibold">ACG culture</span>.
{{ t('page.product.solarNetwork.hero.subtitle', [t('page.product.solarNetwork.hero.subtitle.enthusiasts'), t('page.product.solarNetwork.hero.subtitle.developers'), t('page.product.solarNetwork.hero.subtitle.acg')]) }}
</p>
<n-space justify="center" size="large" class="mb-16">
@@ -46,7 +43,7 @@
href="#download"
class="px-8 py-6 text-lg font-bold shadow-lg shadow-primary/25 hover:shadow-primary/40 transition-all download-button"
>
Get Started
{{ t('page.product.solarNetwork.hero.getStarted') }}
<template #icon>
<n-icon :component="ArrowDownwardRound" />
</template>
@@ -59,7 +56,7 @@
href="#features"
class="px-8 py-6 text-lg hover:bg-gray-100 dark:hover:bg-white/10 transition-all"
>
Learn More
{{ t('page.product.solarNetwork.hero.learnMore') }}
</n-button>
</n-space>
</div>
@@ -77,11 +74,10 @@
<div class="container mx-auto max-w-6xl">
<div class="text-center mb-20">
<h2 class="text-4xl md:text-5xl font-bold mb-6">
Why Solar Network?
{{ t('page.product.solarNetwork.features.title') }}
</h2>
<p class="text-xl max-w-2xl mx-auto">
Built for those who create, code, and connect. Experience a platform
that understands your passions.
{{ t('page.product.solarNetwork.features.subtitle') }}
</p>
</div>
@@ -94,10 +90,11 @@
>
<n-icon size="32" :component="CodeRound" />
</div>
<h3 class="text-2xl font-bold mb-4">Developer First</h3>
<h3 class="text-2xl font-bold mb-4">
{{ t('page.product.solarNetwork.features.devFirst.title') }}
</h3>
<p class="opacity-80 leading-relaxed">
Native syntax highlighting, code snippet sharing, and seamless
integration with your favorite dev tools.
{{ t('page.product.solarNetwork.features.devFirst.content') }}
</p>
</div>
</div>
@@ -110,11 +107,11 @@
>
<n-icon size="32" :component="ApiRound" />
</div>
<h3 class="text-2xl font-bold mb-4">OpenAPI</h3>
<h3 class="text-2xl font-bold mb-4">
{{ t('page.product.solarNetwork.features.openapi.title') }}
</h3>
<p class="opacity-80 leading-relaxed">
Fully documented API, transparent rate limiting and risk
control. Great start for developing your own app with the
Solar Network!
{{ t('page.product.solarNetwork.features.openapi.content') }}
</p>
</div>
</div>
@@ -127,10 +124,11 @@
>
<n-icon size="32" :component="AutoAwesomeRound" />
</div>
<h3 class="text-2xl font-bold mb-4">ACG Culture</h3>
<h3 class="text-2xl font-bold mb-4">
{{ t('page.product.solarNetwork.features.acg.title') }}
</h3>
<p class="opacity-80 leading-relaxed">
A dedicated space for Anime, Comic, and Game enthusiasts.
Share your art, reviews, and passion.
{{ t('page.product.solarNetwork.features.acg.content') }}
</p>
</div>
</div>
@@ -143,10 +141,11 @@
>
<n-icon size="32" :component="FavoriteRound" />
</div>
<h3 class="text-2xl font-bold mb-4">Friendly Community</h3>
<h3 class="text-2xl font-bold mb-4">
{{ t('page.product.solarNetwork.features.community.title') }}
</h3>
<p class="opacity-80 leading-relaxed">
Join a vibrant community of like-minded individuals. Share
your knowledge, ask questions, and connect with others.
{{ t('page.product.solarNetwork.features.community.content') }}
</p>
</div>
</div>
@@ -159,18 +158,18 @@
>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-0">
<div class="p-12 flex flex-col justify-center">
<h3 class="text-3xl font-bold mb-6">Experience the Future</h3>
<h3 class="text-3xl font-bold mb-6">
{{ t('page.product.solarNetwork.experience.title') }}
</h3>
<p class="text-lg mb-8">
Watch our promotional video to see Solar Network in action.
Discover a fluid, responsive, and beautiful interface designed
for modern interactions.
{{ t('page.product.solarNetwork.experience.content') }}
</p>
<div class="flex gap-4">
<n-tag type="warning" round :bordered="false">
<template #icon
><n-icon :component="ConstructionRound"
/></template>
Under Construction
{{ t('page.product.solarNetwork.experience.wip') }}
</n-tag>
</div>
</div>
@@ -207,10 +206,10 @@
<div class="container mx-auto max-w-5xl">
<div class="text-center mb-20">
<h2 class="text-2xl md:text-3xl font-bold mb-2">
Start Your Journey
{{ t('page.product.solarNetwork.download.title') }}
</h2>
<p class="text-xl">
Available on iOS, Android, macOS, Windows, and Linux.
{{ t('page.product.solarNetwork.download.subtitle') }}
</p>
</div>
@@ -227,7 +226,7 @@
class="shadow-lg shadow-success/20"
>
<template #icon><n-icon :component="StarRound" /></template>
Recommended
{{ t('page.product.solarNetwork.download.faster.recommended') }}
</n-tag>
</div>
@@ -237,9 +236,11 @@
>
<n-icon size="36" color="white" :component="IosShareRound" />
</div>
<h3 class="text-2xl font-bold mb-2">Faster Release</h3>
<h3 class="text-2xl font-bold mb-2">
{{ t('page.product.solarNetwork.download.faster.title') }}
</h3>
<p class="opacity-80 mb-8 grow">
Get early access to the latest features on all platforms.
{{ t('page.product.solarNetwork.download.faster.content') }}
<br />
<span class="text-xs opacity-70 mt-2 block">
<n-space size="small" align="center">
@@ -261,7 +262,7 @@
target="_blank"
class="py-6 font-bold"
>
Join TestFlight (iOS, macOS)
{{ t('page.product.solarNetwork.download.faster.testflight') }}
<template #icon><n-icon :component="LaunchRound" /></template>
</n-button>
<n-button
@@ -274,7 +275,7 @@
target="_blank"
class="py-6 font-bold"
>
Direct Download
{{ t('page.product.solarNetwork.download.faster.direct') }}
<template #icon
><n-icon :component="CloudDownloadRound"
/></template>
@@ -289,7 +290,7 @@
target="_blank"
class="py-2 font-bold text-primary hover:underline"
>
Open in your Browser
{{ t('page.product.solarNetwork.download.faster.browser') }}
<template #icon><n-icon :component="WebRound" /></template>
</n-button>
</div>
@@ -309,9 +310,11 @@
>
<n-icon size="36" color="white" :component="LogoApple" />
</div>
<h3 class="text-2xl font-bold mb-2">App Store</h3>
<h3 class="text-2xl font-bold mb-2">
{{ t('page.product.solarNetwork.download.appstore.title') }}
</h3>
<p class="opacity-80 mb-8 grow">
Stable release for general users. Leave a review to support us!
{{ t('page.product.solarNetwork.download.appstore.content') }}
</p>
<n-button
secondary
@@ -323,7 +326,7 @@
target="_blank"
class="py-6 font-bold"
>
Visit Store Page
{{ t('page.product.solarNetwork.download.appstore.visit') }}
<template #icon><n-icon :component="LaunchRound" /></template>
</n-button>
</div>
@@ -345,7 +348,7 @@
<div
class="text-xs opacity-80 uppercase tracking-wider font-bold mb-1"
>
Latest Release
{{ t('page.product.solarNetwork.download.latest.title') }}
</div>
<div class="font-mono text-primary font-bold">
{{ latestRelease.data.value?.tag_name }}
@@ -358,7 +361,7 @@
:href="latestRelease.data.value?.html_url"
target="_blank"
>
View on GitHub
{{ t('page.product.solarNetwork.download.latest.view') }}
<template #icon
><n-icon :component="ArrowForwardRound"
/></template>
@@ -371,10 +374,11 @@
<!-- Footer / Support -->
<div class="py-24 bg-primary/5">
<div class="container mx-auto px-4 text-center">
<h2 class="text-2xl font-bold mb-2">Need Help?</h2>
<h2 class="text-2xl font-bold mb-2">
{{ t('page.product.solarNetwork.support.title') }}
</h2>
<p class="mb-12 text-lg">
Feel free to contact your customer service or report a bug on the
GitHub.
{{ t('page.product.solarNetwork.support.content') }}
</p>
<div class="flex flex-wrap justify-center gap-8">
<a
@@ -383,14 +387,14 @@
class="flex items-center gap-3 px-6 py-4 rounded-xl bg-white dark:bg-white/5 hover:bg-gray-100 dark:hover:bg-white/10 transition-colors border border-gray-200 dark:border-white/5 text-gray-900 dark:text-white shadow-sm"
>
<n-icon :component="LogoGithub" size="24" />
<span class="font-semibold">Report an Issue</span>
<span class="font-semibold">{{ t('page.product.solarNetwork.support.report') }}</span>
</a>
<a
href="mailto:lily@solsynth.dev"
class="flex items-center gap-3 px-6 py-4 rounded-xl bg-white dark:bg-white/5 hover:bg-gray-100 dark:hover:bg-white/10 transition-colors border border-gray-200 dark:border-white/5 text-gray-900 dark:text-white shadow-sm"
>
<n-icon :component="MailOutlineRound" size="24" />
<span class="font-semibold">Contact Support</span>
<span class="font-semibold">{{ t('page.product.solarNetwork.support.contact') }}</span>
</a>
</div>
</div>
@@ -423,14 +427,16 @@ import {
LogoWindows,
LogoTux,
} from "@vicons/ionicons5";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
useHead({
title: "Solar Network - Stay Connected",
title: t('page.product.solarNetwork.title'),
meta: [
{
name: "description",
content:
"The amazing social network for technology, programming, and ACG fans.",
content: t('page.product.solarNetwork.description'),
},
],
});

71
i18n/en.json Normal file
View File

@@ -0,0 +1,71 @@
{
"common.solsynth": "Solsynth",
"layout.default.footer.tagline": "Making software, hardware and experiences since 2024",
"layout.default.footer.products": "Products",
"layout.default.footer.solarNetwork": "Solar Network",
"layout.default.footer.catalog": "Catalog",
"layout.default.footer.company": "Company",
"layout.default.footer.about": "About us",
"layout.default.footer.github": "GitHub",
"layout.default.footer.legal": "Legal",
"layout.default.footer.tos": "Terms of Service",
"layout.default.footer.privacy": "Privacy Policy",
"layout.default.footer.refund": "Refund Policy",
"layout.default.footer.allDocs": "All Documents",
"layout.default.menu.explore": "Explore",
"layout.default.menu.products": "Products",
"page.index.title": "We are Solsynth",
"page.index.hero.we": "We",
"page.index.hero.typed.makeSoftware": "make software",
"page.index.hero.typed.makeHardware": "make hardware",
"page.index.hero.typed.craftExperiences": "craft experiences",
"page.index.hero.typed.writeStories": "write stories",
"page.index.hero.typed.areSolsynth": "are Solsynth",
"page.index.hero.subtitle": "We are a group of friends that make software, hardware and any stuff that is interesting.",
"page.index.hero.explore": "Explore Products",
"page.index.hero.about": "About Us",
"page.index.creations.title": "Our Creations",
"page.index.creations.subtitle": "From social networks to cloud drives, we build tools that empower and connect.",
"page.index.about.title": "More Than Just Code",
"page.index.about.subtitle": "We are a community-driven team focused on creating meaningful experiences. Our mission goes beyond software—it's about connection, innovation, and fun.",
"page.index.about.readStory": "Read Our Story",
"page.product.solarNetwork.title": "Solar Network - Stay Connected",
"page.product.solarNetwork.description": "The amazing social network for technology, programming, and ACG fans.",
"page.product.solarNetwork.hero.title": "Solar Network",
"page.product.solarNetwork.hero.subtitle": "The next-generation social network designed for {0}, {1}, and {2}.",
"page.product.solarNetwork.hero.subtitle.enthusiasts": "technology enthusiasts",
"page.product.solarNetwork.hero.subtitle.developers": "developers",
"page.product.solarNetwork.hero.subtitle.acg": "ACG culture",
"page.product.solarNetwork.hero.getStarted": "Get Started",
"page.product.solarNetwork.hero.learnMore": "Learn More",
"page.product.solarNetwork.features.title": "Why Solar Network?",
"page.product.solarNetwork.features.subtitle": "Built for those who create, code, and connect. Experience a platform that understands your passions.",
"page.product.solarNetwork.features.devFirst.title": "Developer First",
"page.product.solarNetwork.features.devFirst.content": "Native syntax highlighting, code snippet sharing, and seamless integration with your favorite dev tools.",
"page.product.solarNetwork.features.openapi.title": "OpenAPI",
"page.product.solarNetwork.features.openapi.content": "Fully documented API, transparent rate limiting and risk control. Great start for developing your own app with the Solar Network!",
"page.product.solarNetwork.features.acg.title": "ACG Culture",
"page.product.solarNetwork.features.acg.content": "A dedicated space for Anime, Comic, and Game enthusiasts. Share your art, reviews, and passion.",
"page.product.solarNetwork.features.community.title": "Friendly Community",
"page.product.solarNetwork.features.community.content": "Join a vibrant community of like-minded individuals. Share your knowledge, ask questions, and connect with others.",
"page.product.solarNetwork.experience.title": "Experience the Future",
"page.product.solarNetwork.experience.content": "Watch our promotional video to see Solar Network in action. Discover a fluid, responsive, and beautiful interface designed for modern interactions.",
"page.product.solarNetwork.experience.wip": "Under Construction",
"page.product.solarNetwork.download.title": "Start Your Journey",
"page.product.solarNetwork.download.subtitle": "Available on iOS, Android, macOS, Windows, and Linux.",
"page.product.solarNetwork.download.faster.title": "Faster Release",
"page.product.solarNetwork.download.faster.recommended": "Recommended",
"page.product.solarNetwork.download.faster.content": "Get early access to the latest features on all platforms.",
"page.product.solarNetwork.download.faster.testflight": "Join TestFlight (iOS, macOS)",
"page.product.solarNetwork.download.faster.direct": "Direct Download",
"page.product.solarNetwork.download.faster.browser": "Open in your Browser",
"page.product.solarNetwork.download.appstore.title": "App Store",
"page.product.solarNetwork.download.appstore.content": "Stable release for general users. Leave a review to support us!",
"page.product.solarNetwork.download.appstore.visit": "Visit Store Page",
"page.product.solarNetwork.download.latest.title": "Latest Release",
"page.product.solarNetwork.download.latest.view": "View on GitHub",
"page.product.solarNetwork.support.title": "Need Help?",
"page.product.solarNetwork.support.content": "Feel free to contact your customer service or report a bug on the GitHub.",
"page.product.solarNetwork.support.report": "Report an Issue",
"page.product.solarNetwork.support.contact": "Contact Support"
}

71
i18n/zh-cn.json Normal file
View File

@@ -0,0 +1,71 @@
{
"common.solsynth": "Solsynth",
"layout.default.footer.tagline": "自 2024 年以来,我们一直致力于软件、硬件和体验的创造。",
"layout.default.footer.products": "产品",
"layout.default.footer.solarNetwork": "Solar Network",
"layout.default.footer.catalog": "目录",
"layout.default.footer.company": "公司",
"layout.default.footer.about": "关于我们",
"layout.default.footer.github": "GitHub",
"layout.default.footer.legal": "法律",
"layout.default.footer.tos": "服务条款",
"layout.default.footer.privacy": "隐私政策",
"layout.default.footer.refund": "退款政策",
"layout.default.footer.allDocs": "所有文档",
"layout.default.menu.explore": "发现",
"layout.default.menu.products": "产品",
"page.index.title": "我们是 Solsynth",
"page.index.hero.we": "我们",
"page.index.hero.typed.makeSoftware": "创造软件",
"page.index.hero.typed.makeHardware": "构建硬件",
"page.index.hero.typed.craftExperiences": "打造体验",
"page.index.hero.typed.writeStories": "撰写故事",
"page.index.hero.typed.areSolsynth": "是 Solsynth",
"page.index.hero.subtitle": "我们是一群朋友,致力于创造有趣的软件、硬件和任何新奇玩意。",
"page.index.hero.explore": "探索产品",
"page.index.hero.about": "关于我们",
"page.index.creations.title": "我们的作品",
"page.index.creations.subtitle": "从社交网络到云存储,我们构建的工具旨在赋能与连接。",
"page.index.about.title": "不止于代码",
"page.index.about.subtitle": "我们是一个由社区驱动的团队,专注于创造有意义的体验。我们的使命超越软件——关乎连接、创新和乐趣。",
"page.index.about.readStory": "阅读我们的故事",
"page.product.solarNetwork.title": "Solar Network - 保持联系",
"page.product.solarNetwork.description": "为技术、编程和 ACG 爱好者打造的卓越社交网络。",
"page.product.solarNetwork.hero.title": "Solar Network",
"page.product.solarNetwork.hero.subtitle": "为 {0}、{1} 和 {2} 设计的下一代社交网络。",
"page.product.solarNetwork.hero.subtitle.enthusiasts": "技术爱好者",
"page.product.solarNetwork.hero.subtitle.developers": "开发者",
"page.product.solarNetwork.hero.subtitle.acg": "ACG 文化",
"page.product.solarNetwork.hero.getStarted": "开始使用",
"page.product.solarNetwork.hero.learnMore": "了解更多",
"page.product.solarNetwork.features.title": "为何选择 Solar Network",
"page.product.solarNetwork.features.subtitle": "为创造者、编码者和连接者而构建。体验一个懂你热情的平台。",
"page.product.solarNetwork.features.devFirst.title": "开发者优先",
"page.product.solarNetwork.features.devFirst.content": "原生语法高亮、代码片段分享,以及与你喜爱的开发工具无缝集成。",
"page.product.solarNetwork.features.openapi.title": "开放 API",
"page.product.solarNetwork.features.openapi.content": "提供完整文档的 API透明的速率限制和风险控制。是你利用 Solar Network 开发自己应用的绝佳起点!",
"page.product.solarNetwork.features.acg.title": "ACG 文化",
"page.product.solarNetwork.features.acg.content": "一个专为动漫、漫画和游戏爱好者打造的空间。分享你的艺术、评论和热情。",
"page.product.solarNetwork.features.community.title": "友好的社区",
"page.product.solarNetwork.features.community.content": "加入一个由志同道合的人组成的充满活力的社区。分享你的知识、提出问题并与他人建立联系。",
"page.product.solarNetwork.experience.title": "体验未来",
"page.product.solarNetwork.experience.content": "观看我们的宣传视频,了解 Solar Network 的实际运行情况。发现专为现代交互设计的流畅、响应迅速且美观的界面。",
"page.product.solarNetwork.experience.wip": "正在建设中",
"page.product.solarNetwork.download.title": "开启你的旅程",
"page.product.solarNetwork.download.subtitle": "支持 iOS、Android、macOS、Windows 和 Linux。",
"page.product.solarNetwork.download.faster.title": "抢先版",
"page.product.solarNetwork.download.faster.recommended": "推荐",
"page.product.solarNetwork.download.faster.content": "在所有平台上抢先体验最新功能。",
"page.product.solarNetwork.download.faster.testflight": "加入 TestFlight (iOS, macOS)",
"page.product.solarNetwork.download.faster.direct": "直接下载",
"page.product.solarNetwork.download.faster.browser": "在浏览器中打开",
"page.product.solarNetwork.download.appstore.title": "App Store",
"page.product.solarNetwork.download.appstore.content": "为普通用户提供的稳定版本。留下评论以支持我们!",
"page.product.solarNetwork.download.appstore.visit": "访问商店页面",
"page.product.solarNetwork.download.latest.title": "最新发布",
"page.product.solarNetwork.download.latest.view": "在 GitHub 上查看",
"page.product.solarNetwork.support.title": "需要帮助?",
"page.product.solarNetwork.support.content": "随时联系我们的客服或在 GitHub 上报告错误。",
"page.product.solarNetwork.support.report": "报告问题",
"page.product.solarNetwork.support.contact": "联系支持"
}

View File

@@ -8,7 +8,6 @@ import { generateTailwindColorThemes } from "@bg-dev/nuxt-naiveui/utils";
export default defineNuxtConfig({
compatibilityDate: "2025-07-15",
devtools: { enabled: true },
ssr: false,
css: ["~/assets/css/main.css"],
app: {
pageTransition: { name: "page", mode: "out-in" },
@@ -18,7 +17,6 @@ export default defineNuxtConfig({
link: [{ rel: "icon", type: "image/png", href: "/favicon.png" }],
},
},
nitro: {},
modules: [
"@nuxt/content",
"@nuxt/eslint",
@@ -26,7 +24,25 @@ export default defineNuxtConfig({
"@nuxt/scripts",
"@vueuse/nuxt",
"@bg-dev/nuxt-naiveui",
"@nuxtjs/i18n",
],
i18n: {
langDir: ".",
strategy: "prefix_except_default",
locales: [
{
code: "en",
name: "English",
file: "en.json",
},
{
code: "zh-cn",
name: "简体中文",
file: "zh-cn.json",
},
],
defaultLocale: "en",
},
vite: {
plugins: [
tailwindcss(),
@@ -47,6 +63,27 @@ export default defineNuxtConfig({
}),
],
},
nitro: {
preset: "cloudflare_module",
cloudflare: {
deployConfig: true,
wrangler: {
d1_databases: [
{
binding: "DB",
database_name: "capital-content",
database_id: "73d65123-3c42-4dc9-b540-8e89678962a2",
},
],
},
},
},
content: {
database: {
type: "d1",
bindingName: "DB",
},
},
naiveui: {
colorModePreference: "system",
colorModePreferenceCookieName: "fi-ColorMode",

1853
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,8 @@
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
"postinstall": "nuxt prepare",
"deploy": "npx wrangler --cwd .output deploy --name capital"
},
"dependencies": {
"@bg-dev/nuxt-naiveui": "^2.0.0",
@@ -16,6 +17,7 @@
"@nuxt/eslint": "1.7.1",
"@nuxt/image": "1.10.0",
"@nuxt/scripts": "0.11.10",
"@nuxtjs/i18n": "10.2.1",
"@octokit/rest": "^22.0.1",
"@unhead/vue": "^2.0.19",
"@vueuse/core": "^13.9.0",