AI Coding 让我两天完成图像编辑器 Monica 的国际化与多主题

一、引言

去年这个时候我对 AI Coding 的理解,更多停留在「写点代码补全」的层面。但是在前几个月我真正用起来才发现,它远不止于此。更像是和一位全天候的结对编程伙伴(也就是大家常说的 Vibe Coding)合作:我用自然语言描述需求,它帮我生成、重构甚至优化实现。

结果是显而易见的------原本至少需要一周才能完成的某款软件的国际化与多主题功能,我在不到两天的时间内就搞定了。

二、案例背景:Monica 图像编辑器

Monica (github.com/fengzhizi71...) 是我正在开发的一款跨平台的桌面图像编辑软件。它不仅支持多种图像格式(包括相机 RAW),还集成了传统图像处理和基于深度学习的图像增强功能,提供可扩展、可二次开发的图像编辑体验。

在 Monica 的功能规划里,**国际化(i18n)和多主题(暗黑模式 + 多种主题色)**属于「非核心但必要」的部分:

  • 国际化能让更多用户无障碍使用软件。
  • 多主题能提升个性化体验,特别是暗黑模式已经成为现代应用的标配。

但问题是,如果靠传统开发方式,这两个功能都很「费工夫」:

  • 国际化意味着要把界面里的所有文本抽取出来、管理语言资源、写切换逻辑,还得测试各种场景。
  • 多主题则需要重构 UI 样式,提取颜色变量,实现亮/暗模式切换,还要保证兼容性。

它们都不是难到需要攻关的技术问题,而是典型的「不复杂但费时」功能。而正是这类功能,使用 AI Coding 可以带来效率的巨大提升。

三. 功能一:国际化(i18n)

3.1 传统做法

如果完全靠人工开发,一个图像编辑器的国际化流程大概是这样的:

  1. 先把界面中所有的文案找出来,逐个抽取成资源文件(比如 JSON、XML、properties 等)。
  2. 建立语言文件结构,至少要有 en 和 zh 两个版本。
  3. 改造 UI 代码,确保所有文本都能通过 key 动态加载,而不是硬编码。
  4. 编写语言切换逻辑,让应用可以在运行时切换语言。
  5. 测试每个界面,确保不同语言下不会出现 UI 溢出、编码问题。

这个过程听起来很常规,但细节特别多。就拿抽取字符串来说,一个几十个界面的应用可能要耗上两天时间才能完成,整个流程加起来至少 3--4 天。

3.2 AI Coding 做法(以 Cursor 为例)

我在 Cursor 里写了一个类似这样的需求描述:

复制代码
帮我为项目加上国际化功能,至少支持中英文。  
请把界面里的硬编码字符串提取出来,改成使用资源文件的方式。  
同时实现一个语言切换逻辑,让用户可以在设置里选择语言。

当然有一个前提,Cursor 已经很熟悉当前的项目了。

Cursor 的处理方式让我挺惊喜的:

  • 它会自动找出代码里所有硬编码的文本,并生成对应的资源文件。
  • 自动修改 UI 绑定,把原来的 "打开本地图片" 改成LocalizationManager.getString("open_local_image")这样的写法。
  • 还会补全一个语言切换函数,以及初始化配置逻辑。

我需要做的就是:

  • 检查生成的 key 是否合理。
  • 检查是否有需要国际化的地方遗漏了。
  • 对照界面,微调一些翻译或 UI 细节。

整个流程差不多半天就完成了,而如果自己手动写,至少得花 3 天。Cursor 每次完成一项功能,都会进行总结以及写一个 readme 文档。

3.3 Cursor 使用技巧

在国际化这个场景里,我总结了几个实用技巧

  • 需求要分步骤给:不要一次性抛出「帮我做全局国际化」,可以先让 Cursor 提取字符串,再让它生成语言切换逻辑,最后加上配置界面。这样生成结果更可控。
  • 善用"Explain"功能:Cursor 不只是写代码,还能解释它为什么要这样改。如果生成的 key 命名不合理,可以直接让它「重新生成更短的 key」。
  • 对话式修正:如果有遗漏的地方,不用自己改代码,直接在对话里说「还有 XXX 文件里的文案没提取」就行,它会补全。
  • 结合搜索:Cursor 有全局搜索,配合国际化这种「找硬编码」的需求特别好用,可以直接定位剩余未抽取的文本。

最后,我还让 Cursor 写了两个脚本,便于后续使用 Cursor 补全国际化功能时,使用起来更加方便。

  • string_manager.sh - 综合管理工具

    • 清理重复项
    • 检查缺失翻译
    • 文件统计报告
    • 自动修复功能
  • position_check.sh - 位置比对工具

    • 检查中英文文件位置一致性
    • 详细的位置差异分析
    • 统计信息报告

四、多主题颜色切换:从繁琐到一键生成

在桌面软件中,多主题颜色切换(常见的"亮色模式 / 暗色模式",甚至更多创意配色)已经成为用户体验的标配。

4.1 传统做法:手工维护庞大的样式表

如果按照传统方式来写,过程通常是这样的:

  • 为每个 UI 元素(按钮、背景、文字、边框等)逐一定义颜色;
  • 在 Kotlin Compose 中维护多份 ColorScheme,并反复检查它们的一致性;
  • 每次调试时都要手动切换主题,生怕某个角落的颜色"没换过去"。

这种方式虽然可行,但工作量庞大,极其机械。随着组件数量增加,样式表会变得越来越臃肿,维护成本也随之上升。

4.2 AI Coding 做法:自动生成配色方案 + 一键改造

我在 Cursor 里直接输入了这样的提示:

复制代码
帮我为图像编辑器生成两个主题(亮色 / 暗色),并写成可切换的 Compose 代码。
要求:风格简洁、颜色对比度足够、不要和已有按钮冲突。

几分钟后,Cursor 就生成了 ColorTheme.kt 和 ThemeManager.kt 文件,自动定义了 LIGHT 和 DARK 两套主题,并写好了切换逻辑。

更妙的是,我后来临时想加一个「高饱和度主题」,只需再输入一句:

复制代码
再加一个强调色更多、适合设计师的主题。

Cursor 很快就生成了第三套方案,还帮我自动调整了关键组件的颜色引用。原本需要几天才能完成的主题扩展,如今只需要几分钟。

4.3 实用技巧:让 AI 记住「颜色命名规范」

如果不给约束,AI 往往会生成五花八门的命名(如 primaryLightBlue、mainOrange),长久来看难以维护。 目前,我是这样做的:

  • 在对话开始时就规定一套统一规则:比如 primary, secondary, background, surface, error;
  • 让 AI 在所有后续生成中都遵循这套命名。

这样就能保证新增主题不会引入混乱,而是自然融入到既有的主题系统中。

五、效率对比与价值

如果没有 AI 帮助,这些功能对一个开发者来说,往往意味着至少一周的工作量:

  • 国际化 → 翻译文本、管理语言文件、插入切换逻辑,逐个测试。
  • 多主题切换 → 维护多份样式表,调试每个 UI 组件。

而在 Cursor 的协助下,我只花了两天时间就完成了这两个模块的开发与调试。

换句话说,AI Coding 帮我节省了约 70% 的时间成本,并且在很多细节上(例如颜色一致性、国际化 key 的规范化),它比我手写更可靠。

英文版界面示例

主题切换

除了时间成本的降低,价值还体现在:

  • 思维负担的减轻:不需要记忆所有样式细节,把规则交给 AI 就好。
  • 迭代速度的提升:想到一个新主题或新语言时,只需补充一句 prompt。
  • 产品体验的提升:本来容易被拖延的功能(如国际化),现在可以提前上线。

六、我的思考与结尾

最近几个月,我尝试使用了多种 AI 编程工具,比如 Cursor、Qoder、Gemini CLI、v0 等等,让我对 AI Coding 有了更清晰的认知:

  • 它不是替代,而是加速 在现阶段 AI 不是取代开发者,而是帮我跳过那些「重复性劳动」。真正的设计思路、功能逻辑,依然需要我来把关。
  • 越具体,越高效 例如在 Cursor 里,prompt 越具体、规则越清晰,输出的代码越可直接使用。模糊的需求可能会得到华丽却不可控的结果。
  • 养成"AI 优先"的习惯 过去我遇到这些功能时,可能会选择"以后再做"。但现在我更倾向于先尝试让 AI 生成,再做针对性修改。或者遇到复杂的功能,让 ChatGPT 先出一个方案,然后丢给 AI 编程工具让它去实现。
  • 长期价值:降低门槛 + 提高迭代力 对于开发者来说,AI Coding 不仅是节省时间的工具,更是让产品能以更快的速度进入用户手中的神器。

最后,Monica 后续的开发除了借助会 AI Coding,我也会继续增加 AI 相关的功能,以及探索使用「自然语言 × 图像编辑」的边界。

图像编辑器 Monica 的地址:github.com/fengzhizi71...

相关推荐
SamDeepThinking2 小时前
有了 AI IDE 之后,为什么还还要 CLI?
后端·ai编程·cursor
RainbowSea4 小时前
8. Spring AI tools/function-call
java·spring·ai编程
RainbowSea4 小时前
7. Spring AI 对话记忆 + 结构化输出
java·spring·ai编程
ChinaRainbowSea5 小时前
6. Advisor 对话拦截
java·人工智能·后端·spring·ai编程
程序员鱼皮7 小时前
我用 AI 做了个小程序,治好了我的学习焦虑症!
程序员·ai编程·trae
ChinaRainbowSea8 小时前
5. Prompt 提示词
java·人工智能·后端·spring·prompt·ai编程
云起SAAS20 小时前
老年ai模拟恋爱抖音快手微信小程序看广告流量主开源
人工智能·微信小程序·小程序·ai编程·看广告变现轻·老年ai模拟恋爱·ai模拟恋爱
飞哥数智坊1 天前
AI 编程时代,你得学会“狠心”删代码
人工智能·ai编程
zero13_小葵司1 天前
基于多Agent构建AI驱动的智能化软件开发协作平台
人工智能·aigc·软件工程·团队开发·ai编程