将 Django 应用本地化为 7 种语言——RTL、一款 ... 笔记

将 Django 应用本地化为 7 种语言——RTL、一款 JS 游戏以及诚实的部分

作者作为一名独立开发者,将一个大型 Django 应用本地化为七种语言,以扩大其覆盖范围。做出这一决定的初衷是希望让全球用户都能获取免费的学习资源,并提高该网站在搜索引擎中的可收录性。 一项关键的架构决策是将用户界面“边框”(按钮、标签)与长篇内容分离。界面元素采用了 Django 的 gettext 系统,而课程内容则以各语言的 Markdown 文件形式存储,并以英语作为备用语言。核心领域术语特意保留为英语,以保持一致性并符合专业标准。主要的技术挑战包括处理从右到左(RTL)的布局,这需要实现 CSS 逻辑属性以实现无缝镜像。另一个问题是 Django 的语言标签(例如 zh-hans)与内容目录命名约定(例如 zh)之间存在差异。 JavaScript 翻译的集成涉及使用 Django 的 djangojs 目录来处理动态 UI 字符串。一个强大的内容加载器至关重要,它能确保部分翻译的语言能优雅地默认显示英文内容,而非产生 404 错误。系统还实施了自动一致性测试,以确保翻译文件与英文原文件保持相同的结构完整性。 最后,系统根据 IP 国家/地区或用户设置来确定访问者的语言偏好,并提供一个明确的切换器以覆盖默认设置。作者公开承认,非英语翻译均为由 AI 辅助生成的草稿,目前正在审核中。这种严谨的方法使单个开发者成功实现了多语言本地化。