SSR-first i18n for Astro.
English | 中文
sipc.ink 进入后在控制台输入
setLang("en")
setLang("zh")
pnpm i "@sipc.ink/tastro"---
import { initTastro } from '@sipc.ink/tastro'
initTastro({
defaultLang: 'zh',
languages: {
zh: () => import('./locales/zh.json'),
en: () => import('./locales/en.json'),
},
})
---
./locales/zh.json
{
"welcome": "欢迎",
"login-time": "上次登录时间:{time}",
}./locales/en.json
{
"welcome": "Welcome",
"login-time": "Last login time: {time}",
}---
import { useTastro } from '@sipc.ink/tastro'
const { t, lang } = useTastro(Astro.request)
// 引入 request 是为了自动判断请求中的 Accept-Language
---
// 普通
<h1>{t('welcome')}</h1>
// 插值
<h1>{t('login-time',{ time: "114514" })}</h1>
// 浏览器语言
<p>当前语言: {lang}</p><script>
function setLang(lang) {
document.cookie = `lang=${lang}; path=/; max-age=31536000`
location.reload()
}
</script>initTastro(config)- 初始化配置useTastro(request)- 创建运行时t(key, vars)- 翻译文本lang- 当前语言
- 🚀 SSR 优先
- ⚡ 零依赖,轻量
- 📦 自动缓存
- 🍪 智能语言检测(Cookie → Accept-Language → 默认)