Übrigens, das seltsame Verhalten, dass Du zuerst beobachtet hast (oranger Button an der falschen Stelle, usw.) liegt daran, dass AdjustLanguage den übersetzten String in seine Bestandteile zerlegt und Nummern daraus macht.
Wenn nämlich "a_button_give 5 1 2 Dd" statt "5 1 2 Dd" drinsteht, liest die Funktion, die eben nur GUI-Object, Button, MouseOver-Button, Shortcut erwartet, a_button_give als GUI-Object, also 0, dann 5 und 1 als Button-Sprites und die 2 als Shortcut.
Da die Leute damit öfter Probleme haben und es nie eine offizielle Dokumentation gab (ich hab die Lösung damals von LucasFan mitgeteilt bekommen, da ich meine Episode 2 sofort nach Erscheinen übersetzt hatte), könnte man in zukünftige Starterpacks einen Check einbauen, der eine entsprechende Fehlermeldung ausgibt.
Z.B. so:
function SetActionButtons (int action,const string button_definition){
// extract data from button_definition
string bd;
if (IsTranslationAvailable ())
{
StrCopy (bd, GetTranslation (button_definition));
if (StrContains(bd, "a_button")>0)
Display("Bitte a_button_x aus der Übersetzung der GUI-Buttons entfernen!");
}