尧图精选

AppFlowy 如何添加新语言翻译并重新生成本地化文件

🕒 发布时间:2026/9/9 23:17:21 📁 来源:尧图网络
AppFlowy 如何添加新语言翻译并重新生成本地化文件【免费下载链接】AppFlowyBring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data. The leading open source Notion alternative.项目地址: https://gitcode.com/GitHub_Trending/ap/AppFlowyAppFlowy 的界面文案由frontend/resources/translations目录下的 JSON 文件驱动源码中的本地化键则由 Flutter 的easy_localization生成器从这些 JSON 编译而来。本文的任务是为 AppFlowy 增加或修改一种语言的翻译然后运行代码生成脚本把翻译 JSON 同步到assets/translations/并重新生成本地化文件。适用前提是本地已具备 Flutter/Dart 开发环境脚本会执行flutter pub get与dart run。翻译体系先弄清哪些文件在哪里添加语言之前先确认三处关键位置翻译源文件frontend/resources/translations/每种语言一个 JSON 文件如en-US.json、zh-CN.json、ja-JP.json目前已有 30 多个语言文件。inlang 配置仓库根目录的 project.inlang.json。其中sourceLanguageTag为en-USplugin.inlang.i18next.pathPattern指向./frontend/resources/translations/{languageTag}.json变量引用语法为:。新增语言标签时languageTags数组是登记处。生成目标frontend/appflowy_flutter/assets/translations/。生成脚本会把源目录里的 JSON 复制到这里再由easy_localization基于-s en-US.json生成本地化键文件locale_keys.g.dart。注意区分frontend/resources/translations/是手工维护的源头assets/translations/是脚本生成复制出来的产物不要直接改后者。添加新语言的三种方式README 的 Translations 章节给出了三条路径按需选一条1. 手工编辑 JSON 翻译文件直接在frontend/resources/translations/中新增或编辑对应语言标签的 JSON 文件。翻译内容的键需与源语言en-US.json对齐变量占位遵循 inlang 配置中的:引用语法。如果你要为全新语言登记标签把新标签加入project.inlang.json的languageTags列表并在languageTags中为它建立frontend/resources/translations/标签.json保证文件名与pathPattern模板一致。2. inlang 在线编辑器README 提供了 inlang 在线编辑器入口可以在网页端编辑本项目AppFlowy-IO/AppFlowy的翻译适合不想本地搭环境的贡献者。3. 用 inlang 补齐机器翻译README 给出的命令npx inlang machine translate这条命令用于补齐缺失的翻译依赖 inlang 模块提供的机器翻译能力首次运行会提示登录/授权按其交互流程操作即可。它生成的是翻译草稿建议人工校对后再走下一节的本地化文件重新生成。重新生成本地化文件翻译 JSON 就位后运行语言文件生成脚本。推荐直接调用语言专项脚本它只处理本地化文件bash frontend/scripts/code_generation/language_files/generate_language_files.sh脚本支持以下可选参数见 generate_language_files.sh 的参数解析部分参数用途--skip-pub-get跳过flutter pub get--skip-pub-packages-get跳过flutter packages pub get--verbose显示pub get和dart run easy_localization:generate的完整输出便于排错--exclude-packages被识别但不影响本脚本行为的兼容参数传入未知参数时脚本会打印Unknown option: ...并退出退出码 1。脚本实际执行的动作读脚本源码可确认进入frontend/appflowy_flutter删除并重建assets/translations/再把frontend/resources/translations/*.json全部复制过去——注意这是清理复制若你手动在assets/translations/里放过未提交到资源目录的改动会被清掉执行flutter pub get与flutter packages pub get脚本注释说明CI 上偶发null check operator used on a null value错误因此默认强制执行这两步执行两次dart run easy_localization:generatedart run easy_localization:generate -S assets/translations/dart run easy_localization:generate -f keys -o locale_keys.g.dart -S assets/translations/ -s en-US.json第二条命令以en-US.json为源语言文件生成本地化键因此源语言 JSON 必须存在且格式正确否则生成会失败。不要用 generate.sh 替代frontend/scripts/code_generation/下的总入口 generate.sh 会依次执行语言文件、图标flowy_icons和 freezed 三类代码生成。它属于批量脚本会一并执行当前任务之外的独立生成任务因此只想刷新本地化文件时应使用上文的语言专项脚本而不是总入口。验证生成结果脚本正常结束时输出 Start generating language files. Done generating language files. Language files generation cost N seconds.其中N为实际耗时秒数仅表示脚本完成不是固定成功阈值。可做的核对frontend/appflowy_flutter/assets/translations/下的 JSON 集合与frontend/resources/translations/一致脚本是全量复制新增语言的 JSON 应出现在这里locale_keys.g.dart已由easy_localization:generate重新生成若不确定哪一步失败加--verbose重跑查看pub get与生成命令的真实报错输出。限制与排查新语言标签需要在project.inlang.json的languageTags中登记文件名必须符合pathPattern模板{languageTag}.json否则 inlang 工具链在线编辑器、npx inlang machine translate不会识别该语言。easy_localization的键生成固定以en-US.json为基准脚本中-s en-US.json。新增语言缺键不会报错只会导致对应文案回退脚本本身不校验键的完整性inlang 侧的 lint 规则missing-translation、empty-pattern等见project.inlang.json的modules是在 inlang 流程中生效的。脚本要求本机可用flutter和dart命令在无法访问 pub 仓库的环境下即使加--skip-pub-getdart run仍依赖已安装的easy_localization包建议保持网络可用。仓库根目录的project.inlang/目录含 project_id 与 settings.json是 inlang 工具的本地项目标识与配置编辑翻译内容时无需改动。【免费下载链接】AppFlowyBring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data. The leading open source Notion alternative.项目地址: https://gitcode.com/GitHub_Trending/ap/AppFlowy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →