博客现在说三个语言

2026年9月7日 goi18nsvelte

如果你看地址栏现在有一个语言代码在它中。那是新的。整个博客现在存在于英语、挪威语和西班牙语中:每个贴子,每个页面,导航,错误消息,日期。这是自重新设计以来最大的单一改变,它触及几乎每个文件在前端加上内容模型在博客服务。

形状的它:每个公开 URL 携带一个语言前缀,/en、/no 或 /es。访问不带一个的和服务器数字出你在哪里发送你,首先从一个 cookie 如果你有选择一个语言之前,然后从你的浏览器的 Accept-Language,然后英语作为回退:

const lang = resolveLanguage(
    event.cookies.get(LANG_COOKIE),
    event.request.headers.get('accept-language')
);
event.locals.lang = lang;
throw redirect(302, `${localizedPath(pathname, lang)}${event.url.search}`);

你的显式选择总是打败浏览器猜测。一旦选择西班牙语博客保持西班牙语直到你说别的,不管你的浏览器声称你更喜欢什么。

内容是更大的问题。机器即时翻译从不在表上(这是一个自托管博客,什么都不离开盒子),所以每个贴子是一个真正的行每个语言,和版本被链接在一个翻译组中。每个版本在它自己的时间表上发布,有它自己的身体,分享 slug 与它的同胞,所以在贴子上切换语言让你到那个相同的贴子,不到一个翻译的前页。切换器在一个翻译不存在时是惯性,而不是倾倒你在一个 404。

挪威语的前页,语言切换器在铁路中

然后来了有趣的破坏。移动每个路由在一个语言前缀下默默地打破了什么有什么都没有做语言:avatar 上传限制。Caddy 坐在前面一切有每个路径身体大小限制,而且它的规则对 /profile 不再匹配因为 profile 页面现在住在 /en/profile。超过默认帽子的上传开始在前门死去有一个空的 413 而不是一个友好的错误。修复是一个覆盖所有前缀的 matcher 行,但课是更大的:当你移动网站上的每个 URL,grep 你的反向代理配置对路径太。

审查抓住了两个更多真实的。侧边栏中的标签列表计数了所有语言的贴子,所以挪威语网站显示了导致空页的标签(查询现在对语言过滤)。并且 slug 唯一性检查看穿所有语言当它应该只在一个里面,这将有阻止完美有效的翻译从保存。

翻译接口是几天有一个 132 钥匙消息目录的小心的工作类型检查者强制执行,所以一个在西班牙语中缺失的字符串是一个构建错误,不一个空白按钮。翻译内容是诚实的体力劳动:34 贴子和 3 页,每个重写了两次。档案页,feeds 和 sitemap 全部每个语言说话太,有 hreflang 链接所以搜索引擎理解版本属于在一起。

Velkommen,并欢迎。如果你想看一个关于挪威岛的贴子如何用挪威语读切换器在铁路中。

0 条评论

登录 后即可评论。

登录

忘记密码?

还没有账号?