Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Gettext verhindern, das ein bestimmtes Label übersetzt wird (https://www.delphipraxis.net/86818-gettext-verhindern-das-ein-bestimmtes-label-uebersetzt-wird.html)

DelphiManiac 20. Feb 2007 08:36


Gettext verhindern, das ein bestimmtes Label übersetzt wird
 
Hallo,

ich hoffe ihr könnt mir weiterhelfen, ich nutze für meine Mehrsprachigkeit in meinen Programmen,
ich schalte die Language um:

Delphi-Quellcode:
  UseLanguage('en');
und lasse dann die Form übersetzten
Delphi-Quellcode:
  TranslateComponent(self);
Mein Problem ist nun aber, dass ich ein Label habe, dass ich zur Laufzeit ändere, und da sollt auch nicht übersetzt werden.

Ich kann zwar Klassen von der Übersetzung rausnehmen, aber wie mache ich das mit einzelnen Objekten??

Danke euch!!!

DevilsCamp 20. Feb 2007 08:39

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Ich mache das so:

Ich gebe jeder Component, die übersetzt werden soll einen Tag-Wert > 0.
Anschliessend durchlaufe ich mit FindComponent alle Components durch und prüfe ob der Tag > 0 ist. Wenn ja, dann wird der Text umgeschrieben ansonsten nicht.

DelphiManiac 20. Feb 2007 08:46

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Hi,

es gibt ja die Möglichkeit über ein Ignore,
aber das klappt bei mir nicht:

Delphi-Quellcode:
  TP_Ignore(self,lblVersion.Caption);
  TP_Ignore(Self,lblSuperUserMode.Caption);
  TranslateComponent(self);

sh17 20. Feb 2007 08:49

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Prinziell ist e gettext, egal, was in den einzelnen Komponenten zum Übersetzen drin steht. Entweder ist eine Übersetzung da oder nicht.

Nach TranslateComponent(self) musst Du also die Caption der entsprechenden Labels selbst auf den gewünschten Inhalt setzen.

Beim Umstellen der Sprache zur Laufzeit sollte übrigens ReTranslateComponent aufgerufen werden, wenn das Formuar bereits einmal übersetzt wurde.

sh17 20. Feb 2007 08:50

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
bei TP_Ignore ist die Klasse und der Name des Labels gefragt, also z.B. Label1

ein Blick in die Quellen bringt Klarheit:

Delphi-Quellcode:
procedure TGnuGettextInstance.TP_Ignore(AnObject: TObject;
  const name: string);
begin
  TP_IgnoreList.Add(uppercase(name));
  {$ifdef DXGETTEXTDEBUG}
  DebugWriteln ('On object with class name '+AnObject.ClassName+', ignore is set on '+name);
  {$endif}
end;

DelphiManiac 20. Feb 2007 09:00

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Hi,
ich nutzte GnuGettext von folgender Homepage
http://dybdahl.dk/dxgettext/

die Unit hat leider kein ReTranslateComponent...

bei mir sieht die Methode so aus:

Delphi-Quellcode:
procedure TGnuGettextInstance.TP_Ignore(AnObject: TObject;
  const name: string);
begin
  TP_IgnoreList.Add(uppercase(name));
end;

DelphiManiac 20. Feb 2007 11:22

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Hallo,

anscheinend habe ich eine ganz andere Gettext Version wie alle anderen hier :shock: :shock:

Könnt ihr mir evtl. eine direct Link angeben, damit ich mir auch die Version herunterladen kann?

Danke euch!

sh17 20. Feb 2007 11:57

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Bis auf den DEBUG-Switch sieht Deine Methode doch auch so aus.

Ich hab meine Version per SVN geholt. Den Link findest Du auf der von Dir genannten Seite.

DelphiManiac 20. Feb 2007 15:00

Re: Gettext verhindern, das ein bestimmtes Label übersetzt w
 
Hi,

ja bei der Funktion ja, aber es gibt kein ReTranslateComponent in meiner Version :pale:

Ich hol mir auch mal die aktuellste per SVN.

Danke dir (euch)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz