The situation for WinBoard and XBoard is quite different. In both cases all strings are hard-coded in the program. But XBoard uses the GNU gettext system for internationalization. In this system all translatable text strings are marked by enclosing them in _() or N_(). There then is software to extract all strings into a so called pot file, which is a
template for the translation.
A human translator would then have to fill in the translated strings in the pot file, to make it into a so called .po file for a specific language. Once that is done, a national version of XBoard can be generated from the .po file and the normal sources. The .pot file for WinBoard 4.4.0 is available, and included in the source distribution. There are even partial translations for German and Turkish included. (The Turkish version is from 4.2.7, so the new features will remain untranslated.)
For WinBoard the situation is more complicated, as the texts for menus and dialogs are not hard-coded in a C program (as the are for XBoard in the file xboard.c), but are all inside the Windows resource file winboard.rc. This resource file is not C-code, and text strings cannot be marked in it with _(). So the GNU gettext system cannot be used on it. The files that are shared between WinBoard and XBoard, in particular backend.c, can of course benefit from the XBoard translation. But the text strings in there are not really very important or often seen. They fall mainly in 3 types:
1) Strings printed in the message field above the board, such as "xboard adjudication: checkmate", or warnings against common user faults, such as "it is white's turn", "Illegal move".
2) Messages that appear in error popups, most of which you would almost never see in normal use.
3) messages that go into the debug file.
I would say that (3) do not need translation at all, they are only there for the XBoard developers, and not for the users. For (2) only the most common errors probably need translation. Translation is really only important for group (1), which is fortunately quite small.
But that means that the GNU gettext translation is in itself far from sufficient to create the impression of a translated WinBoard: 90% of the texts the user is exposed to are in menus and dialogs. So for WinBoard it all hinges on the winboard.rc file.
Now I have developed a system to 'record' translations as an edit script. The edit script contains a number of substitute commands to replace text strings by there translated versions. It is not a fatal error if an original in the script no longer is present. And strings not mentioned in the script simply remain untranslated. So I can apply the script written for an earlier version without problems to updated versions of winboard.rc. This means translation efforts do not get lost on updates, and that we will not have to maintain a large number of national versions for winboard.rc for each change we make in it. We just make the change in the English 'master' version, and someone that wants to make (say) a Spanish version for a new WinBoard release can start by applying the old script to the new winboard.rc, to generate a Spanish version from it, before compiling WinBoard. This is as simple as typing the single command
./internationalize spanish.txt
befor doing the normal make command. Only new or modified menu and dialog text would then remain English, and by adding their translations to the spanish.txt file, the Spanish version would have been fully updated as well.
The file spanish.txt, recording the translation, consists of about 400 lines of the format:
"Bishop"=="Alfil"
"&King"=="&Rey"
"Fruit and &Vegetables"=="Frutas y &Verduras"
etcetera. I have a file "laguage.txt" available as template for translators (it can be downloaded from the XBoard git repository at the GNU-Savanah website), which contains an empty translation, like
"Bishop"==""
"&King"==""
"Fruit and &Vegetables"==""
A Spanish translation of winboard.rc is already in the making.
Of course translaying all text strings printed by WinBoard is just a minor job compared to translating the documentation (help file, man page).