Dein Ansatz ist schon falsch.
Ein Formular ist für sich selbst verantwortlich; d.h. es sorgt selbst dafür, dass es ist der richtigen Sprache angezeigt wird.
So wie du dir das vorstellst, versteust die die Verantwortlichkeiten über mehrere Units.
Das führt zu einem Programm, in dem sich kaum mehr etwas ändern lässt ohne dass an anderer Stelle etwas passiert oder
eine Änderung notwendig wird.
Stell dir vor, du änderst den Namen eines Labels von "Label18" nach "LblBruttopreis".
Was sofort eine Änderung in der
Unit untLGU nach sich zieht.
Mögliche Lösung:
Jedes Formular hat eine Procedure zur Sprachumstellung:
Delphi-Quellcode:
procedure TForm1.SetLanguage;
begin
SetLngCaption(lblName01, 1004);
SetLngCaption(lblDescr01, 1008);
...
end;
Es gibt mehrere Möglichkeiten, wie man diese Prozedure ganz allgemein aufrufen kann, ohne jedes einzelne Formular
mit Uses einzubinden.
Egal, wie viele Formulare deine Anwendung hat, solange jedes Formular die Procedure SetLanguage hat
ist es möglich die Sprache zur Laufzeit umzuschalten.
Die aktuelle Sprache (LngNr) ist in irgendeinem globalen Objekt hinterlegt;
man braucht die Variable nicht überall mitzuschleifen.