我用 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 过程中的各种问题。

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

相关推荐
微信api接口介绍3 小时前
微信个人发消息api
运维·服务器·开发语言·前端·网络·微信·ipad
阿明Drift3 小时前
从炫酷粒子星云学 Three.js:深度解析一个 15 万粒子的 GPU 动画系统
前端·three.js
凉_橙3 小时前
移动端h5适配方案
前端
久亮哦3 小时前
开发Electron程序
前端·javascript·electron
星星电灯猴3 小时前
iOS 26 应用管理实战 多工具协同构建开发与调试的高效体系
后端
敲敲了个代码3 小时前
为什么 Electron 项目推荐使用 Monorepo 架构 [特殊字符][特殊字符][特殊字符]
前端·javascript·学习·架构·electron·github
你们的前端课代表3 小时前
前端如何优雅地“边聊边等”——用 Fetch 实现流式请求大模型
前端
王大宇_3 小时前
React闭包陷阱
前端·javascript
Java水解3 小时前
SpringMVC入门:配置、映射与参数处理
后端·spring