I reverse-engineered TraceTogether, for the “right reasons”

I reverse-engineered TraceTogether, for the “right reasons”

When TraceTogether was rolled out in Singapore, I geeked out with the BlueTrace Protocol and the basics of how it worked. However, with my experience of volunteering for the migrant population, I knew that we needed translations, badly. We needed translations if we wanted to an effective deployment of TraceTogether in the vulnerable population.

With their little command over English, would most of the migrant workers be able to effectively use TraceTogether?

Tracing the Contacts

I immediately texted everyone I knew, working with GovTech or SingHealth. I contacted GovTech on a few channels to connect me to the right person. I was surprised at the speed they responded with contacts! Finally, along with active help from Sudesna, a recent NUS-grad young physician, I got a few contacts to move forward.

Meanwhile

I was anxious to get the translations rolled out. I needed to start translating by the time I reached the correct person-in-charge. So, as any sane human would do, I started a Google Sheet, and tried to type in text from the app interface. Soon however, I realised this was unsustainable as some of the hidden screens would remain untranslated.

So, I took the Android app, and started reverse-engineering. I used a tool named apktool to decompile the app, and looked for the file containing all the “strings of text” used throughout the app. Luckily, I did find the English resources file.

However, it was XML, and I needed to spit out a CSV/Excel file for it to be any good. Developers always try to automate everything. Spirited, I did write a simple Python script to convert this document into a CSV, uploaded to Google Sheets and started translating.

I was happy. I felt relieved. Now, all I had to do was to hand this over to the responsible team to be implemented.

The Contact!

Finally I found a person from the Hive Team coordinating UI/UX efforts of TraceTogether. They were delighted to see the efforts, however had to let me know that, the (then) current version of the app wasn’t designed to be multilingual, and a new version with new strings would be released soon!

Altho, not all of TraceTogether was translated by individual contributors from the members of the public. My translations were partially accepted to some of the untranslated parts of TraceTogether. The Team was very aware of the need of the migrant population, and started their own effort of translation even before me! However, as people with hearts, they always did try to encourage us volunteers, and made opportunities for us to contribute here and there.

Screenshot of TraceTogether App

We started working to translate the newer features of the app. One of the first features I translated, was the SafeEntry check-in feature. I still get excited to see my translations on the app.

I believe allowing the public to participate is empowering us, giving us a feeling of achievement as we could contribute as much as we could, in helping to keep this tiny island we call home, safe. Thanks, the TT TEAM!

The Cool T

And, I got a cool TraceTogether T as a token of appreciation :’)