我用 Compose 写了一个 i18n 多语言管理工具

1、背景

做过开发的人,大概率都体会过维护多语言词条的麻烦。比如改一个词条,就得同步修改多个语言文件;支持的语言越多,这种重复劳动带来的挫败感就越强。之前我因为不熟桌面程序 UI 框架,只能靠 Python 脚本减轻负担,但没有 GUI,用起来还是不够方便。现在学了 Compose,我打算用它开发一个桌面工具,彻底优化多语言维护的体验。

这个项目的名称叫 Easy I18n,表达的是"让多语言维护更加简单"的含义。那么就来看下我做了哪些提升开发体验的功能吧~

2、功能

1. 多项目、多目录和多平台

Easy I18n 可以用来管理你的各种项目的多语言词条。目前它支持的平台包括:

  • Android 多语言文件 strings.xml 的管理
  • iOS 两种多语言文件:*.strings 文件和 .xcstrings 文件的管理
  • Compose Multiplatform 多语言文件 strings.xml 的管理
  • Flutter 多语言文件 *.arb 的管理
  • Java 多语言文件 *.properties 的管理

第一个版本支持以上多语言文件管理,后续我还打算支持任意类型 json 和 yaml 等类型文件的管理。

当你创建了项目之后可以选择上述支持的任意平台,然后选择你的项目的根目录。Easy I18n 会自动深度扫描你的项目目录并识别可能的多语言路径。这大大减轻了使用的难度~

Easy I18n 在内部磨平了以上各种文件类型的差异,最终会以如下的形式呈现你的项目所有的多语言词条:

2. 便捷的编辑工具

当项目的多语言被加载完毕之后,你可以在应用内对多语言词条进行编辑。

和很多同类软件不一样的是,Easy I18n 会将一个词条在所有语言下的含义以一个对话框的形式展示出来。这样你可以更直观地查看这个词条在不同语言下的含义,更方便用户进行对比和修改。

在对话框下方,内置了比较常用的词条管理工具,比如自动化翻译该词条、首字母大写和删除等等。

除此之外,你还可以通过语言和词条的维度进行筛选,比如下面展示的是对关键字 "ai" 的查询,并仅展示它在默认语言和中文下的含义。

此外,你还可以对数据的列进行排序等等。这些便捷工具将大幅提升你编辑词条时的使用体验。

3. 自动化翻译

自动化翻译是必不可少的!

如下图所示,Easy I18n 内置了:

  • Google 翻译
  • 百度翻译
  • DeepL 翻译
  • Libre 翻译
  • 腾讯云翻译

等多种翻译方式。并且,我会借鉴了过往翻译器的使用经验结合各个平台特点对翻译结果进行了优化。

4. AI 翻译

使用过一般翻译工具的同学可能知道这些工具的弱点,那就是缺少背景支持,容易出现歧义。比方说,中文的时间单位 "天",有时候会被翻译成英语 "sky"。这样的翻译结果就是风马牛不相及了!所以,在各种翻译方式之上我增加了 AI 翻译。如下所示,它支持各种不同类型的 AI 平台:

为了进一步优化 AI 的翻译效果,我在多语言词条之外增加了一个"备注"的概念。这些信息会被存储到应用的数据库中,因而不会影响到你原始的多语言文件。你可以通过这些"备注"进一步描述这个词条的使用场景,以使 AI 的翻译更加准确。

最后

目前我暂时把软件放到了 Github 上面,不论你是想要一款多语言管理工具还是对 Compose 开发 Desktop 的效果感兴趣,你都可以到如下仓库进行下载:

github.com/Shouheng88/...

目前版本是该软件的第一个正式发行版本。后续,我会为该软件增加更多的功能~

该软件完全使用 Kotlin 和 Compose Multiplatform 开发,在随后我也会整理使用 Compose 开发 Desktop 过程中的各种问题。

关注我,获取更多有价值的信息~ ❤️

相关推荐
这个DBA有点耶几秒前
银行核心系统数据库迁移怎么选?6 步法+5 个避坑指南
数据库·安全·架构
码事漫谈8 分钟前
FDE 的起源、形态与真实边界
后端
hanchenxing11 分钟前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
ServBay21 分钟前
Grok Bot 还是 OpenClaw?聊聊真正能替人打杂的 AI 智能体
后端·aigc·grok
默_笙32 分钟前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土32 分钟前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
弈栈录44 分钟前
LangGraph 入门:用状态机设计可靠的 Agent 工作流
后端·程序员
caoerzhong1 小时前
JeeWMS 开源仓库管理系统多租户架构解析:一套 Java WMS 如何同时服务多个货主与多个仓库
java·架构·开源·vue
小羊没烦恼!1 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
聚搜云——JuSouClouD1 小时前
阿里云代理商能帮忙设计架构方案吗?有哪些增值服务
阿里云·架构·云计算