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

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

相关推荐
BBB努力学习程序设计几秒前
Web App开发基础知识:从零构建现代化Web应用
前端·html
BBB努力学习程序设计2 分钟前
使用Bootstrap框架搭建简单页面:快速构建现代化网站
前端·html
西洼工作室2 分钟前
CSS响应式布局全攻略
前端·css·响应式布局·栅格系统
用户93816912553604 分钟前
VUE3项目配置
前端
CloudWeGo9 分钟前
企业级落地案例:抖音搜索核心链路基于 Kitex 流式改造的技术实践
人工智能·架构·开源
2501_9167665413 分钟前
【Springboot】主配置文件
java·spring boot·后端
星释23 分钟前
Rust 练习册 21:Hello World 与入门基础
开发语言·后端·rust
绝无仅有30 分钟前
大厂面试题MySQL解析:MVCC、Redolog、Undolog与Binlog的区别
后端·面试·架构
绝无仅有31 分钟前
MySQL面试题解析:MySQL读写分离与主从同步
后端·面试·架构
MegatronKing32 分钟前
一个有意思的问题引起了我的反思
前端·后端·测试