Friday, 27 March 2026
Eight weeks, a deep dive into KDE's architecture, and one completely fried motherboard later, my Season of KDE (SoK) journey has officially come to an end!
For the past couple of months, I've been working on KDE's computer-aided translation tool, Lokalize, under the mentorship of Finley Watson. What started as a simple UI ticket ended up teaching me a ton about open-source development, community collaboration, and user experience.
Fixing the "Jumping" Menubar
If you use Lokalize, you’ve probably run into this bug: the menubar reshuffles every time you switch tabs. Go from the Editor to the Project Overview, and suddenly the Edit, Go, and Sync menus disappear or swap places. It totally breaks muscle memory. As part of my Season of KDE project, my task was to fix it.
Instead of just hacking together a quick fix, I restructured how Lokalize handles its menus globally. I created a "Global Skeleton" layout that reserves a permanent spot for every menu, regardless of which tab is open. I then wrote logic that hooks into the application's tab-switching events. Now, if a menu isn't needed for your current tab, it simply greys out instead of disappearing completely. The result is a much more predictable UI!
Ghost Actions & The Bookmark Manager
While exploring the codebase, I discovered a graveyard of "ghost actions"—UI buttons that existed on the screen but had zero backend code making them work. After surveying the KDE translators' mailing list to understand their daily workflows, I got to work building them:
- Core Editing & Batch Actions: I built the backend logic to make Cut, Copy, Paste, and Alternate Translations work seamlessly. I also implemented batch actions (Save All, Close All, Revert All), complete with a safe shutdown sequence that prompts users for unsaved changes so they never lose their work.
- The Bookmark Manager (In Review): Translators lacked a good way to review multiple flagged lines in large files. I designed a brand-new, interactive Bookmark Manager dialog that lists all bookmarked entries with text previews and checkboxes. Currently, this feature is under active discussion with the KDE Visual Design Group (VDG) to ensure the UX aligns perfectly with KDE's design guidelines.
What I Learned
Writing code was really only half the experience. My biggest takeaways from SoK were:
- Navigating Legacy Code: I learned how to read, trace, and respect a massive, established C++ codebase rather than trying to rewrite everything from scratch.
- Community-Driven Development: Talking to the translators and getting feedback from the design team taught me that building what users actually need is just as important as writing the code to make it work.
List of Contributions
Merged:- Menubar Standardization: Fix inconsistent menubar ordering across tabs
- Edge Case Fixes: Lokalize: Refresh top-level menu availability on Welcome screen
- UX Improvements: editor: focus relevant tab before unsaved changes prompt in fileOpen()
- Ghost Actions I: editor: implement cut/copy/paste and alternate translation attach
- Ghost Actions II: editor: implement file save/revert/close all actions
- New Feature: editor: add edit bookmarks action and dialog (Currently in UX review with VDG)
What's Next?
While Season of KDE is over, my time with Lokalize isn't! I will keep contributing to get the Bookmark Manager completed, and I am currently drafting my proposal for Google Summer of Code (GSoC).
Special Thanks
A very special thank you to my mentor, Finley Watson. None of this would have been possible without your guidance. Thank you for the incredibly thorough code reviews, your endless patience, and for being so supportive when my hardware literally went up in smoke. Thank you for making this such a great first experience with KDE.
Finally, a huge thank you to the translators on the mailing list who helped shape these features, and the entire KDE community for being so welcoming.
See you in the KDE Git logs!















