Hi there!
I've finally read the whole gettext manual and took the time to (mostly) understand it

I don't want to step on anyone's toes, so feel free to yell at me if I'm dealing with things too obvious, or already taken up by someone else.
Quote:
1. Gettext has grouped together some messages that are the same in English but will have different translations, namely:
"Equip" in modes/menu/menu.cpp:521, where it's a noun, and at line 636, where it's a verb.
"Arm" in modes/menu/menu.cpp:853 and menu_views.cpp:204, where it's an abbreviation for Armor
"All" in modes/menu/menu_views.cpp:199 and again at line 703; I have no words that can fit both uses of All.
This applies, but I don't know how to apply that in the code, so I'll leave it to you guys for now.
As Marcavis ingeniously said, we'll need to to make use of context by using the pgettext(context, stringToTranslate) function. Another new UTranslate-like function adding context as parameter is then needed, I guess.
Can I propose this as contexts for Marcavis examples?
Code:
String Context
------ --------
Equip noun
Equip verb
Arm Body Part
Arm Armor Abbreviation
All Equip Menu
All Skill Menu
As for 2, I'd propose this (or alike):
Code:
_detail_textbox.SetDisplayText(UTranslate("With the additional %s drunes found in this treasure added, the party now holds a total of %s drunes.", MakeUnicodeString(NumberToString(_treasure->_drunes)), MakeUnicodeString(NumberToString(GlobalManager->GetDrunes())) );
So we can always make use of
%s numbering if the order is changing as it could be for the German translation for example.
Quote:
3. Some messages require usage of plural forms: "count", "unique", "characters" in both shop_confirm.cpp and shop_leave.cpp
Indeed, the
ngettext function should be used those cases.
I'll add that I remember seeing one or two sentences too similar in the english version of the story, making the dialogues in french a bit weird in some cases. I'll try to catch them for my next po update.
Best regards.