12 comments

[ 2.7 ms ] story [ 32.9 ms ] thread
I'm also trying to avoid the gettext monstrosity to be introduced into our c++ codebase after making equality great experiences with a self-build solution in previous teams. It's ok so solve easy problems by yourself. Good for the author for thinking for himself.
Looking at strings in the linked apptranslator.org website, a lot of them have ampersands (&) e.g. "&Back" or "&Book View"

What do those mean?

Translations seem to put them in the middle sometimes

---

on the other hand, there are languages even with "0 untranslated strings" that have untranslated "unused strings" - what are those about, and is it okay to not have those be tracked?

I had to implement multilingual UI for my app recently and the best method I found was using an LLM API inside a script which just runs on build and anytime a new text field gets added it gets the translations and stores it in a JSON where the right strings are picked based on system language or user settings. The annoying part was adjusting the entire UI to the new 'dynamic' string selection functionality but other than that, the tokens I had generated only cost maybe a dollar. I suggest the author looks into that, because waiting for user submissions could take some time
The solution to the "interface/tooling to translate" problem, at least for open source applications, is https://translatewiki.net/ , with the additional benefit that it comes with a team of experts that can help you understand how to deal with stuff you might be unfamiliar with, such as RTL languages and plural forms.
> [gettext] also doesn’t solve the 2 hard problems. I would still have to write code to extract strings from source code and build a way to allow users to translate them easily.

The first problem is solved by the xgettext tool.

The second problem is solved by services like Transifex. Or by telling people to use Poedit and having them submit GitHub pull requests.

At the same time, gettext does solve the issue of plural forms. This solution does not.

Internationalization and localization are extremely hard problems. I know because I worked as technical translator for sone years.

But, in C++ land, I had very good success with Qt and its translation system in one of my open source projects.

That was 2010’ish, there are probably better ways now bit I don’t know.

Since this is a Windows C++ app, why not use MUI? It solves this exact problem, and since it's a standard part of the platform, there's broad tooling support for it.
Not related to UI translation but I've been using Sumatra PDF on Linux through wine and it's worked really well. Using it to read and search through 50k page TRMs and it's very fast.
Have you noticed context issues in the translated values?

Just translating literally does not always work.

I am building an Android application and facing this issue. I've been thinking about going down the rabbit hole and linking each text to be translated to a screenshot or similar thing, so that the user sees their proposed translation in context

Using English strings both "as is" and as keys for translation to other languages is terrible idea. This is because the same English string may be translated differently depending on context - this includes different declensions/cases and synonyms. One should use abstract string keys instead and use translation for English like for any other language.