278 字
1 分钟
27 种语言:VSports 的国际化实战
前端:27 个语言包
src/i18n/ 下 27 个文件:ar/cs/de/en/es/fa/fr/hr/id/it/ja/ko/nl/no/pt-BR/pt/ru/sv/tr/uk/uz/zh-TW/zh……时区、主题、单位(公制/英制)还在设置页可调。看球的人遍布全球,语言和单位一个不能少。
服务端:球队名是另一套管线
界面文案走前端语言包,球队、联赛、球员译名走 MySQL(football_translations + 三层覆盖),原因很简单:球队几千支,译名天天变,发版周期跟不上数据变化,必须走库 + 后台实时改。
可观测与限流:藏在 internal 里
internal/observability:logger.go统一日志、client_ip真实 IP 识别(反代后面拿 IP 是基本功)internal/ratelimit:limiter.go接口限流,公开 API 不设防等于邀请爬虫internal/store:repository 分层 +migrations.go版本化建表,建表语句跟着代码走,新环境一把起
我的 i18n 清单
- 界面文案与数据译名分离
- 复数/单位/时区从第一天设计
- 未翻译词条可追踪(
admin_untranslated_translations) - 限流日志先行,开源 API 才敢开放
VSports 系列六篇完:前端工程化、数据链路、部署、测试、后台、国际化。一套全栈基本功,都在这了。