mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-09-07 00:17:12 +08:00
* feat(i18n): enhance locale handling and routing - Implemented dynamic locale aliases in router configuration. - Added support for preferred locale storage in global state. - Improved locale resolution logic in router beforeEach guard. - Created utility functions for locale management and path manipulation. - Added tests for locale matching and message extraction. - Updated Header component to allow language selection. - Refactored getRouterPathWithLang to utilize new locale utilities. - Updated Vite configuration to support aliasing for vue-i18n. - Bumped version numbers across various packages to 1.9.0. * feat(i18n): update version to 1.8.0 and enhance locale handling - Updated version numbers across all package.json files to 1.8.0. - Enhanced locale handling in App.vue by centralizing locale configurations. - Improved Turnstile component to support dynamic language rendering. - Refactored i18n utilities to include initial locale setup and empty locale messages. - Updated i18n.ts to utilize the new locale management structure. - Added naive-locale.ts for better integration with Naive UI's locale handling. - Adjusted Header.vue to streamline language selection and locale changes. - Fixed translations in multiple locale files for consistency and accuracy. * fix(i18n): address review feedback * feat(i18n): update default locale to English and enhance language handling in components * fix(i18n): switch locale selector to dropdown * docs: add topbar language and github order design spec * fix(i18n): 修复 Header 语言切换器相关问题,恢复为独立控件并调整样式 * Refactor locale handling in router and add locale-guard utility functions - Improved locale resolution logic in router by introducing utility functions for better readability and maintainability. - Added `locale-guard.js` to encapsulate locale-related functions such as getting route locale, resolving locale for navigation, and applying locale navigation state. - Updated JWT synchronization logic to streamline the handling of JWT from query parameters. - Modified i18n messages test to check for coverage of registered locale message keys instead of extracting English source messages. * 删除顶部栏语言和GitHub顺序设计文档 * fix: 修复前端设置初始化时未返回 domains 数组导致的 undefined 错误 * refactor(i18n): consolidate locale infrastructure * fix(i18n): stabilize locale route switching * fix(i18n): persist default locale selection * fix(i18n): 修复前端设置初始化时未返回 domains 数组导致的 undefined 错误,统一按空数组兜底处理 feat(i18n): 添加 locale 别名处理,支持默认语言的重定向 test(i18n): 增加对默认语言别名重定向的测试用例 * refactor: replace useAppI18n with useScopedI18n in multiple components for improved localization management * fix(tests): 移除不必要的 URL 断言以简化 Passkey 测试 * fix(i18n): 更新语言切换逻辑,确保使用当前语言设置进行路由导航 * fix(i18n): 强制路由切换以确保语言切换后正确导航 * refactor(i18n): 优化消息注册和路由本地化逻辑,移除冗余代码 * refactor(i18n): 拆分 API 文件以优化路由管理,更新语言处理逻辑 * fix: align i18n release notes and frontend test script
108 lines
2.4 KiB
TypeScript
108 lines
2.4 KiB
TypeScript
import {
|
|
dateDeDE,
|
|
dateEnUS,
|
|
dateEsAR,
|
|
dateJaJP,
|
|
datePtBR,
|
|
dateZhCN,
|
|
deDE,
|
|
enUS,
|
|
esAR,
|
|
jaJP,
|
|
ptBR,
|
|
zhCN,
|
|
} from 'naive-ui'
|
|
|
|
import type { NDateLocale, NLocale } from 'naive-ui'
|
|
|
|
type NaiveLocaleConfig = {
|
|
locale: NLocale
|
|
dateLocale: NDateLocale
|
|
}
|
|
|
|
type LocaleRegistryEntry = {
|
|
locale: string
|
|
label: string
|
|
browserMatches: string[]
|
|
naive: NaiveLocaleConfig
|
|
turnstileLocale: string
|
|
}
|
|
|
|
export const LOCALE_REGISTRY = [
|
|
{
|
|
locale: 'zh',
|
|
label: '中文',
|
|
browserMatches: ['zh'],
|
|
naive: { locale: zhCN, dateLocale: dateZhCN },
|
|
turnstileLocale: 'zh-CN',
|
|
},
|
|
{
|
|
locale: 'en',
|
|
label: 'English',
|
|
browserMatches: ['en'],
|
|
naive: { locale: enUS, dateLocale: dateEnUS },
|
|
turnstileLocale: 'en',
|
|
},
|
|
{
|
|
locale: 'es',
|
|
label: 'Español',
|
|
browserMatches: ['es'],
|
|
naive: { locale: esAR, dateLocale: dateEsAR },
|
|
turnstileLocale: 'es',
|
|
},
|
|
{
|
|
locale: 'pt-BR',
|
|
label: 'Português (Brasil)',
|
|
browserMatches: ['pt'],
|
|
naive: { locale: ptBR, dateLocale: datePtBR },
|
|
turnstileLocale: 'pt-BR',
|
|
},
|
|
{
|
|
locale: 'ja',
|
|
label: '日本語',
|
|
browserMatches: ['ja'],
|
|
naive: { locale: jaJP, dateLocale: dateJaJP },
|
|
turnstileLocale: 'ja',
|
|
},
|
|
{
|
|
locale: 'de',
|
|
label: 'Deutsch',
|
|
browserMatches: ['de'],
|
|
naive: { locale: deDE, dateLocale: dateDeDE },
|
|
turnstileLocale: 'de',
|
|
},
|
|
] as const satisfies readonly LocaleRegistryEntry[]
|
|
|
|
export type SupportedLocale = (typeof LOCALE_REGISTRY)[number]['locale']
|
|
|
|
export const SUPPORTED_LOCALES = LOCALE_REGISTRY.map(({ locale }) => locale) as SupportedLocale[]
|
|
|
|
const localeRegistryMap = Object.fromEntries(
|
|
LOCALE_REGISTRY.map((entry) => [entry.locale, entry]),
|
|
) as Record<SupportedLocale, (typeof LOCALE_REGISTRY)[number]>
|
|
|
|
export const getLocaleRegistryEntry = (locale: SupportedLocale) => {
|
|
return localeRegistryMap[locale]
|
|
}
|
|
|
|
export const getLocaleLabel = (locale: SupportedLocale) => {
|
|
return getLocaleRegistryEntry(locale).label
|
|
}
|
|
|
|
export const getLocaleOptions = () => {
|
|
return LOCALE_REGISTRY.map(({ locale, label }) => ({
|
|
label,
|
|
value: locale,
|
|
key: locale,
|
|
}))
|
|
}
|
|
|
|
export const getNaiveLocaleConfig = (locale: SupportedLocale) => {
|
|
return getLocaleRegistryEntry(locale).naive
|
|
}
|
|
|
|
export const getTurnstileLocale = (locale: SupportedLocale) => {
|
|
return getLocaleRegistryEntry(locale).turnstileLocale
|
|
}
|
|
|