feat: initial release v0.3.0

This commit is contained in:
saturn
2026-03-08 03:15:27 +08:00
commit 881ed44996
1311 changed files with 225407 additions and 0 deletions

118
src/i18n.ts Normal file
View File

@@ -0,0 +1,118 @@
import { notFound } from 'next/navigation';
import { getRequestConfig } from 'next-intl/server';
import { routing, locales, type Locale } from './i18n/routing';
// Re-export for convenience
export { locales, type Locale, routing };
export const defaultLocale = routing.defaultLocale;
export default getRequestConfig(async ({ requestLocale }) => {
// 获取请求的 locale
const locale = await requestLocale;
// 验证传入的 locale 是否有效
if (!locale || !locales.includes(locale as Locale)) {
notFound();
}
// 加载所有模块化的翻译文件
const [
common,
stages,
assetLibrary,
smartImport,
nav,
apiConfig,
modelSection,
providerSection,
landing,
auth,
workspace,
workspaceDetail,
profile,
billing,
apiTypes,
actions,
video,
storyboard,
assets,
voice,
errors,
novelPromotion,
configModal,
worldContextModal,
progress,
scriptView,
assetHub,
assetModal,
assetPicker,
layout
] = await Promise.all([
import(`../messages/${locale}/common.json`),
import(`../messages/${locale}/stages.json`),
import(`../messages/${locale}/assetLibrary.json`),
import(`../messages/${locale}/smartImport.json`),
import(`../messages/${locale}/nav.json`),
import(`../messages/${locale}/apiConfig.json`),
import(`../messages/${locale}/modelSection.json`),
import(`../messages/${locale}/providerSection.json`),
import(`../messages/${locale}/landing.json`),
import(`../messages/${locale}/auth.json`),
import(`../messages/${locale}/workspace.json`),
import(`../messages/${locale}/workspaceDetail.json`),
import(`../messages/${locale}/profile.json`),
import(`../messages/${locale}/billing.json`),
import(`../messages/${locale}/apiTypes.json`),
import(`../messages/${locale}/actions.json`),
import(`../messages/${locale}/video.json`),
import(`../messages/${locale}/storyboard.json`),
import(`../messages/${locale}/assets.json`),
import(`../messages/${locale}/voice.json`),
import(`../messages/${locale}/errors.json`),
import(`../messages/${locale}/novel-promotion.json`),
import(`../messages/${locale}/configModal.json`),
import(`../messages/${locale}/worldContextModal.json`),
import(`../messages/${locale}/progress.json`),
import(`../messages/${locale}/scriptView.json`),
import(`../messages/${locale}/assetHub.json`),
import(`../messages/${locale}/assetModal.json`),
import(`../messages/${locale}/assetPicker.json`),
import(`../messages/${locale}/layout.json`)
]);
return {
locale,
messages: {
common: common.default,
stages: stages.default,
assetLibrary: assetLibrary.default,
smartImport: smartImport.default,
nav: nav.default,
apiConfig: apiConfig.default,
modelSection: modelSection.default,
providerSection: providerSection.default,
landing: landing.default,
auth: auth.default,
workspace: workspace.default,
workspaceDetail: workspaceDetail.default,
profile: profile.default,
billing: billing.default,
apiTypes: apiTypes.default,
actions: actions.default,
video: video.default,
storyboard: storyboard.default,
assets: assets.default,
voice: voice.default,
errors: errors.default,
novelPromotion: novelPromotion.default,
configModal: configModal.default,
worldContextModal: worldContextModal.default,
progress: progress.default,
scriptView: scriptView.default,
assetHub: assetHub.default,
assetModal: assetModal.default,
assetPicker: assetPicker.default,
layout: layout.default
}
};
});