Skip to content

Redesigning Lokalize's Translation Memory Tab - GSoC Week 1

Sunday, 31 May 2026  |  Navya Sai Sadu

Hi! I'm Navya and am working on Redesigning Lokalize's Translation Memory Tab. Lokalize was created during Google Summer of Code several years ago. This also implies that the conventions to be followed are quite old.

The first week of GSoC was full of learnings and experiments as I had expected. There was no hassle of setting things up and all because I worked on Lokalize during Season of KDE. Things are going as per the plan and I am starting to gain momentum. The weeks ahead require more effort and time. I'm gonna share some of the knowledge gained and used as it might benefit me (to remember or come back to when needed) and other new contributors.

The project essentially resolves the bug and integrates the separate TM Manager Window into the TM Tab for ease.

KConfig

KDE provides devs with KConfig classes to auto generate methods to use for app's configuration settings. This site might also be of some help. Lokalize has lokalize.kcfg for app-wide configuration and projectbase.kcfg and projectlocal.kcfg for project-specific configuration. The latter one appeared to me more apt for user's personal settings such as per-project selection of TMs. A new entry was added to lokalize.kcfg for global default TMs.

There are also ".kcfgc" files which apparently act as config for the config files. So, the property of the entry added can be controlled there. In my case, it was to have mutators so as to be able to change the selection of TMs.

The setters and getters generated were used to write a method that returns a list of TMs to query across. These will also be used in the upcoming weeks when I finally create a UI for checking and selecting TMs.

Git

I always get to know something new and cool in the git world while working. My mentor told that master is like any other branch, it's just us that we treat it differently. I created a new branch to direct my MRs there since it'll be a long time till everything is ready to be merged into upstream.

Testing

The example provided here is a basic template which the rest of the tests present also follow. An article on the internet said that there's no point in writing tests for getters and setters (another discussion forum had - especially if those are auto generated) so I just took it as a chance to learn something new and get the hang of those methods.

I wasted quite some time only to figure out that I need to run the test from the build dir instead.