Thema: Delphi Programm mehrsprachig

Einzelnen Beitrag anzeigen

Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Programm mehrsprachig

  Alt 20. Mai 2005, 10:49
Zitat von Susanne:
erzeugt wird ja mit gnu gettext immer die default.po - Datei. Kann ich die auch umbenennen in z.B. english.po?
Klar, das ist kein Problem.

Zitat von Susanne:
Ich hab es versucht und dann mit AddDomainForResourceString('english'); aber dann wird meine Oberfläche nicht mehr in englisch angezeigt, wenn ich ihm dann hingegen wieder die default gebe, wird wieder alles in Englisch angezeigt.
Mit AddDomainForResourceString werden nur Domains für Ressourcenstrings hinzugefügt, z.b. eine Datei mit Deinen Strings in der Datei default.mo und die Delphi Runtime Strings in delphi7.mo.

Welche Datei für die Oberfläche verwendet werden soll bestimmst Du mit der Funktion textdomain, z.b. so wenn Du Deine Übersetzungsdatei formulare.mo genannt hast:

Delphi-Quellcode:
begin
  { Translation Domain für Formulare }
  textdomain('formulare');
end;
Alternativ kannst Du den Aufruf von TranslateComponent(self) auch in TranslateComponent(self,'formulare') ändern.


Zitat von Susanne:
Das zweite ist, dass ich ihm doch auch sagen kann, dass er bestimmte sachen nicht übersetzten soll. Ich hab dies mit TP_GlobalIgnoreClass (TDocViewer) versucht und das ganze auch dort eingebunden, wie auch das AddDomainForResourceString steht. Aber dann bekomme ich einen Fehler, dass dies ein undefinierter Bezeichner ist. Laut Dokumentation soll das doch genau an diese Stelle?
Der Parameter für TP_GlobalIgnoreClass ist eine Klasse, daher muß diese Klasse auch bekannt sein. Wenn Dein TDocViewer dort nicht bekannt ist kann es nicht funktionieren, z.b. wenn die Komponente nur in bestimmten Units "geused" wird.

Du kannst natürlich in der Unit, wo Du TDocViewer verwendest das OnCreate Ereignis abändern:

Delphi-Quellcode:
procedure TMyForm.FormCreate(Sender: TObject);
begin
  TP_Ignore(self,'MyDocViewer');
  TranslateComponent(self);
end;

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat