想去哪里?

首页 页面 关于 页面 项目 页面 简历 页面 技术 页面 随笔 页面 联系 页面 隐私政策 页面 Terminal Spike 隐私政策 页面 用 Astro 构建文档与职业个人网站 技术 通过 tmux、Mosh、Termius 与 Tailscale 随处使用 Codex 技术 用 Langfuse 观察 Codex 的 MCP 工具调用 技术 产品应用中的本地化 技术 把 MCP 作为安全的 AI 集成边界 技术 用 Zod、OpenAPI 与 Swagger 维护 API 契约 技术 用 pg-boss 运行持久后台任务 技术 通过真实知识工作流理解 pgvector 与 RAG 技术 Pi Edge:让 Pi 待在 Obsidian 笔记旁 技术 为真实排序任务设计拖放交互 技术 Prisma 与 PostgreSQL:产品状态的事实来源 技术 把 Ralph Loop 当作计划队列 技术 用 React Router 组织全栈产品工作流 技术 把 shadcn 风格组件变成自己的产品系统 技术 用表格与编辑器承载密集业务操作 技术 Terminal Spike:原生 Android 终端 技术 在 Linux 上用 fcitx 输入带声调的拼音 技术 在 Linux 上配置 DEFT Pro 轨迹球 技术 在 KOReader 上使用 Pocket 稍后读 技术 为 Vercel AI SDK 设置明确的工具边界 技术 垂直切片架构与 dependency-cruiser 技术 用 Vitest 与 Playwright 测试产品工作流 技术 我的随处工作流:Herdr、code-server、Obsidian 与 Pi Edge 技术 Zod 不只是校验 技术 《卡拉马佐夫兄弟》是我看过最好的小说 随笔 基督徒口述1960劳改历史 随笔 圣经中的“道”与言语 随笔 我们爱,因为神先爱我们,而不是空洞的“自爱” 随笔 妈妈,让我来承担爸爸的过错吧 随笔 我与神的故事 随笔 世界远离上帝,接近中国 随笔 “爱的五种语言”和内外向,只存在于语言中 随笔 人格类型不存在,你在世界而非概念中生活 随笔 危险的词语:为什么心理学是不可能的 随笔 2000 年,一个深圳打工者的故事 随笔 阿联酋Ras al Khaimah见闻录 随笔 沙甸:1975 年的一场冲突 随笔 关于中国的纪录片 随笔
← 技术/工程实践

产品应用中的本地化

本地化如何影响路由、校验、日期、权限与支持流程。

本地化不只是把英文字符串换成另一种语言。

在产品中,语言会影响整个工作流:标签、校验提示、日期、空状态、权限说明、文档、支持笔记,有时还有表单结构。如果这些细节散落各处,本地化就会变得昂贵且容易出错。

第一个边界是文案归属。将来需要翻译的重要产品语言,不应藏在组件内随手写下的字符串里。

const messages = {
  importStarted: "Import started.",
  importFailed: "Import failed. Check the error file and try again.",
};

这不是完整的国际化系统,只是在展示一种习惯:产品提示也是数据,应当能被找到、审查和替换。

校验提示尤其需要用心。“输入无效”可能技术上正确,却没有帮助用户修正问题。把差的错误提示翻译出来,依然是差的提示。

日期和数字也会影响产品行为。状态页不应该让用户猜 05/06/2026 究竟是 5 月 6 日还是 6 月 5 日。可以通过 Intl.DateTimeFormat 按地区格式化,或者采用没有歧义的格式。

路由也要做选择。有些应用需要本地化 URL,有些只需在同一路由展示不同语言。这会影响 SEO、书签、支持链接、分析和缓存。我不会在产品没有实际需求时引入多语言路由。

代价是维护:更多文件、键名、审核步骤和测试,简单改文案也可能变慢。因此我倾向先为重要区域建立结构:校验、导航、空状态和高风险流程。

消息键名应贴近产品概念,而不是当前英文句子:

较弱的键:submitButtonText
更好的键:request.submit.action

后者描述消息的职责,英文文案变化时仍然有效。

如果明确需要多语言,我会尽早开始;若基本工作流还在探索,我会等待。过早本地化会拖慢尚未成形的产品调整。

实际目标很简单:用户应当理解发生了什么、接下来能做什么,以及哪里出错了。本地化是这份承诺的一部分。