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/observabilitylogger.go 统一日志、client_ip 真实 IP 识别(反代后面拿 IP 是基本功)
  • internal/ratelimitlimiter.go 接口限流,公开 API 不设防等于邀请爬虫
  • internal/store:repository 分层 + migrations.go 版本化建表,建表语句跟着代码走,新环境一把起

我的 i18n 清单#

  1. 界面文案与数据译名分离
  2. 复数/单位/时区从第一天设计
  3. 未翻译词条可追踪(admin_untranslated_translations
  4. 限流日志先行,开源 API 才敢开放

VSports 系列六篇完:前端工程化、数据链路、部署、测试、后台、国际化。一套全栈基本功,都在这了。