直接回答:工程化的核心是把文案当作代码资产流水线化管理:源码里只出现 key 与 ICU MessageFormat 模板(复数、性别、变量内插),文案存独立资源文件按语言分包;提取、翻译、回灌、发布全自动(lint 禁硬编码中文、CI 提取新 key 推翻译平台、翻译完成自动回 PR);运行时按 locale 动态加载语言包,默认语言内联进首屏。
展开解析:高频痛点逐个看:key 设计——用语义 key(checkout.submit)而非文案 hash(改文案不炸引用),配命名空间拆分按需加载;复数与性别——阿拉伯语有六种复数形态,必须用 ICU 模板而非 if-else 拼字符串;变量与富文本——“共 3 件商品”里数字与链接要用占位符与标签占位,禁止字符串拼接翻译;排版溢出——德语比英语长 30%,UI 要做弹性与截断策略,伪本地化(pseudo-locale,把文案拉长加符号)测试提前暴露;语言包体积——只加载当前语言与 fallback,其余懒加载,词条按路由/命名空间再切;日期货币——用 Intl API 而非手拼格式,时区与日历系统(佛历、伊斯兰历)在特定市场是真问题。RTL(从右向左)支持是另一个量级的工程:逻辑属性(margin-inline-start 替代 margin-left)+ 自动镜像的图标策略。流程上的铁律:翻译质量靠上下文,给译者截图与字符限制,纯 key 列表翻译必然翻车。
追问方向:语言包如何做增量更新与回退?多语言 SEO(hreflang)怎么处理?
(约 490 字)