<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jaimukund Bhan on KDE Blogs</title><link>https://blogs.kde.org/authors/jaimukund/</link><description>Recent content in Jaimukund Bhan on KDE Blogs</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 07 Apr 2026 06:31:09 +0000</lastBuildDate><atom:link href="https://blogs.kde.org/authors/jaimukund/index.xml" rel="self" type="application/rss+xml"/><item><title>Season of KDE 2026 - Fixing the Glossary in Lokalize (Final)</title><link>https://blogs.kde.org/2026/04/06/season-of-kde-2026-fixing-the-glossary-in-lokalize-final/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><author>Jaimukund Bhan</author><guid>https://blogs.kde.org/2026/04/06/season-of-kde-2026-fixing-the-glossary-in-lokalize-final/</guid><description>&lt;p&gt;Greetings to the KDE community!&lt;/p&gt;
&lt;p&gt;This is a blog which follows my &lt;a href="https://blogs.kde.org/2026/03/08/season-of-kde-2026-fixing-the-glossary-in-lokalize-midterm/"&gt;previous post&lt;/a&gt; and includes the work I did in the second half of Season of KDE.&lt;/p&gt;
&lt;h3 id="improved-manual-glossary-term-addition"&gt;&lt;a href="https://invent.kde.org/sdk/lokalize/-/merge_requests/295"&gt;Improved manual Glossary term addition&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There are two methods to add terms to the glossary. The first one is to highlight the source and target terms in the Editor Tab, and then using the context menu in the Glossary View to &lt;code&gt;Define a New Term&lt;/code&gt;. The second is to manually add new terms through the Glossary Tab without any prior text selection. Previously, when a term had to be added manually, a blank entry was made first, which the user could then edit. This meant that multiple blank entries could be accidentally accumulated in the Glossary file.
Users are now prompted to enter the source and target terms in a dialog box when trying to add terms manually, removing the need of creating blank entries.&lt;/p&gt;
&lt;h3 id="fixed-the-shortcut-key-for-previous-active-tab"&gt;&lt;a href="https://invent.kde.org/sdk/lokalize/-/merge_requests/296"&gt;Fixed the shortcut key for Previous Active Tab&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The shortcut key for switching to the Previously Active Tab was not working properly as the &lt;code&gt;currentChanged&lt;/code&gt; signal updated the current index of the &lt;code&gt;m_mainTabs&lt;/code&gt; before the previous index could be saved to the &lt;code&gt;previousActiveTabIndex&lt;/code&gt; variable.
I updated the event filter to catch tab switches made through mouse clicks and replaced the integer variable with a widget pointer, since it would remain valid even if tab positions change, whereas an index-based would require calculations.&lt;/p&gt;</description></item><item><title>Season of KDE 2026 - Fixing the Glossary in Lokalize (Midterm)</title><link>https://blogs.kde.org/2026/03/08/season-of-kde-2026-fixing-the-glossary-in-lokalize-midterm/</link><pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate><author>Jaimukund Bhan</author><guid>https://blogs.kde.org/2026/03/08/season-of-kde-2026-fixing-the-glossary-in-lokalize-midterm/</guid><description>&lt;p&gt;Greetings to the KDE community!&lt;/p&gt;
&lt;p&gt;My name is &lt;a href="https://invent.kde.org/jaimukund"&gt;Jaimukund Bhan&lt;/a&gt; and I have been working on &lt;a href="https://invent.kde.org/sdk/lokalize"&gt;Lokalize&lt;/a&gt;, the l10n tool used to translate KDE software, for Season of KDE 2026. Specifically, I have been fixing the Glossary - which is a collection of frequently used words linked to keyboard shortcuts for quick access while translating.&lt;/p&gt;
&lt;p&gt;The following are the changes I have made during the first half of SoK, while learning a lot about developing with the Qt Framework and on KDE software.&lt;/p&gt;
&lt;h3 id="creating--saving-the-glossary-file"&gt;&lt;a href="invent.kde.org/sdk/lokalize/-/merge_requests/268"&gt;Creating &amp;amp; Saving the Glossary file&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;First and foremost, the Glossary file had to exist! At the time, I found out that the file would not load or allow entries to the glossary, because it wasn’t opened inside the function. Crisis was averted when the code for opening the files was added, but now came the saving functionality.
After a long, long (but fruitful) discussion with my mentor, I finalized the file saving logic to trap the user into setting a valid glossary file path for their project. This meant the user had to ensure that they had permission for the directory in which they meant to save the glossary file and should specify an existing file path. In case the user had entered something invalid, this change would return the dialog box back, pre-filled with a default valid path.
I got comfortable with a few Qt features and learned a lot about the user’s workflow through this task.&lt;/p&gt;
&lt;h3 id="autosaving-the-glossary-file"&gt;&lt;a href="https://invent.kde.org/sdk/lokalize/-/merge_requests/283"&gt;Autosaving the Glossary File&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Now that the glossary file could be saved, a feature request was made for autosaving the glossary file. At the time, the only way to save the glossary file was by the keyboard shortcut (Ctrl+S) or when the glossary tab was closed and the user was prompted to save/discard their changes.
To autosave the glossary file, I had to identify when and how the file needed to be saved. This time, I found a relic hiding in the codebase (AuxTextEdit, the KTextEdit I had to override), which was exactly what I needed to catch when the user stopped editing the Definition section of a term in the Glossary tab. Now the file would be saved whenever the user added/deleted terms or stopped editing. I also unearthed another feature which was not working correctly, although this will be covered in the next part.&lt;/p&gt;
&lt;h3 id="removing-the-restore-function"&gt;&lt;a href="https://invent.kde.org/sdk/lokalize/-/merge_requests/284"&gt;Removing the Restore function&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Less code is good code. This change was just removing a feature not a lot of users had a need for, and clearing that up would make it much easier to maintain the codebase.
The Glossary tab had a button to restore the glossary file from disk, which was meant as a way to reset all the unsaved changes made to the glossary file. But with all the new features made for autosaving, it did not make sense to keep it anymore.&lt;/p&gt;
&lt;h3 id="showing-the-first-visible-entry-in-editor"&gt;&lt;a href="https://invent.kde.org/sdk/lokalize/-/merge_requests/290"&gt;Showing the first visible entry in Editor&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Two bugs I found were how the Glossary editor would not clear the editor when all the terms were deleted from the file and that the Subject field would be pre-selected with a term from the combo box, when no actual term was selected if the app started on the Glossary tab. I added the clause to clear the editor whenever all the terms were deleted, and selected the first entry whenever the app started on the Glossary tab.&lt;/p&gt;
&lt;h3 id="acknowledgements"&gt;Acknowledgements&lt;/h3&gt;
&lt;p&gt;A huge thank you to my mentor, &lt;a href="https://invent.kde.org/finw"&gt;Finley Watson&lt;/a&gt;, for being super patient with all the discussions and changes I made, and to the KDE Community for being so welcoming! I’d recently switched to using Linux with Plasma and the biggest reason for applying was to learn how to effectively contribute to KDE software. I’ve truly enjoyed this journey so far, and I hope to keep contributing to the KDE community long after this project is complete.&lt;/p&gt;</description></item></channel></rss>