update
Some checks failed
deploy / deploy (push) Has been cancelled

This commit is contained in:
toom1996
2026-08-18 00:47:04 +08:00
parent e83fff9a9f
commit 55c199a5c1
39 changed files with 462 additions and 190 deletions

View File

@ -1,6 +1,6 @@
import { getLocaleByPath } from 'astro:i18n';
import { DEFAULT_LOCALE, LOCALES, type Locale } from './config';
import { translate } from './dictionary';
import { DEFAULT_LOCALE, LOCALES, type Locale } from '@/i18n/config';
import { translate } from '@/i18n/dictionary';
/**
* 从 URL 解析语言,委托 Astro 内置的 astro:i18n.getLocaleByPath。
@ -29,5 +29,17 @@ export function useTranslations(locale: Locale) {
return { t, locale };
}
/**
* 一行取「当前语言 + 翻译函数」,干掉每个页面重复的样板:
* const { locale, t } = getI18n(Astro)
* 内部用 Astro.currentLocale(与 Layout 判断语言的方式一致),
* 取不到时回退默认语言。参数只要求含 currentLocale 字段,避免耦合 Astro 全局类型。
*/
export function getI18n(Astro: { currentLocale?: string | undefined }) {
const locale = (Astro.currentLocale as Locale) ?? DEFAULT_LOCALE;
const { t } = useTranslations(locale);
return { locale, t };
}
export { LOCALES, DEFAULT_LOCALE };
export type { Locale };