AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GNU Gettext - AV beim Übersetzen

Ein Thema von xZise · begonnen am 1. Mai 2007 · letzter Beitrag vom 2. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

GNU Gettext - AV beim Übersetzen

  Alt 1. Mai 2007, 16:51
Ich benutze das aktuelle GNU Gettext von Dieser Seite...

Problem ist jetzt, dass ich eine AV bekomme, sobald ich das Programm starte... Ich habe schon alles Versucht, also die Überstzung an die Exe anzuhängen oder die in den Ordner zu kopieren... hat nichts gebracht ...

[edit]Ich habe die gnugettext.pas in der uses des Projects und in der uses der Form... Und dann rufe ich im Create auch nur "TranslateComponents(self)" auf...[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: GNU Gettext - AV beim Übersetzen

  Alt 1. Mai 2007, 17:57
Welche Komponenten benutzt du in deinem Projekt?

Bei manchen Komponenten gibts es Probleme und die müssen dann von der Übersetzung ausgeschlossen werden!!

So erzeugt das TMS AdvGrid z.B. intern beim Start einige unsichtbare Controls (z.B. ein TRichEdit) die aber zur Erstellungszeit keinen Parent haben was zu Problemen mit dxGetText führt. dxGetText hat dazu extra Routinen mit denen man diese Controls ausschliessen kann (TP_GlobalIgnore bzw. TP_GlobaIgnoreClass)

Versuch doch mal festzustellen, WELCHE Controls die Probleme verursachen indem du ein Projekt mit dxGetText Schrittweise mit den Komponenten "ausrüstest" die du in deinem Problemprojekt benutzt.

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: GNU Gettext - AV beim Übersetzen

  Alt 1. Mai 2007, 18:02
Ui...
Also ToolBar ( + Buttons/Trenner), TreeView, CheckListBox, Memo, Edit, CheckBox, BitButtons und ein Mainmenu...
Wobei dieser Fehler in der Unit auftritt, wo er
sl.Assgin(s) aufruft... Ich weiß gerade nicht wo er dass macht...

[edit]Ah... Ich habs: In der Funktion "TranslateStrings"
Delphi-Quellcode:
procedure TGnuGettextInstance.TranslateStrings(sl: TStrings;const TextDomain:string);
var
  line: string;
  i: integer;
  s:TStringList;
begin
  if sl.Count > 0 then begin
    sl.BeginUpdate;
    try
      s:=TStringList.Create;
      try
        s.Assign (sl);
        for i:=0 to s.Count-1 do begin
          line:=s.Strings[i];
          if line<>'then
            s.Strings[i]:=dgettext(TextDomain,line);
        end;
        sl.Assign(s); // <!--- Hier kommt die AV... (Wahrscheinlich ist sl nil?)
      finally
        FreeAndNil (s);
      end;
    finally
      sl.EndUpdate;
    end;
  end;
end;
[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: GNU Gettext - AV beim Übersetzen

  Alt 1. Mai 2007, 20:42
Tritt der Fehler bei einem leeren Projekt auf? (wahrscheinlich nicht )

Danach füge dem leeren Projekt einfach mal schrittweise die benutzen Komponenten hinzu. Starte zwischendurch das Projekt und kontrolliere ob der AV auftritt.

Irgendwann wirst du die Komponente bei der dieser Fehler auftritt identifiziert haben. Laut deiner Beschreibung ist es wohl eine die als Property eine Stringlist enthält, ich tippe jetzt einfach mal auf das Memo.

Bleiben wir bei dem Beispiel Memo: Um die Stringlist von der automatischen Übersetzung durch dxGetText auszuschliessen kannst du sie von dxGetText einfach ignorieren lassen. Füge dazu vor dem TranslateComponent() Aufruf noch diese Anweisung hinzu:

TP_IgnoreClass(TMemoStrings); (Ob die Routine wirklich "TP_IgnoreClass" heisst weiss ich im Moment nicht mehr im Kopf und ich habe im Moment hier kein dxGetText installiert, schau bitte in der Doku zu dxGetText nach, es gibt mehrere "Ignore" Routinen für unterschiedliche Zwecke)

Ansonsten musst du noch ein wenig rumprobieren aber meistens handelt es sich um solche (Komponenten-)internen Stringlisten die Probleme machen. Für solche SAchen ist dxGetText ja auh eigentlich nicht gedacht, da sie ja selten statische Texte enthalten die lokalisiert werden müssen.

Hoffe das hilft ein wenig,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: GNU Gettext - AV beim Übersetzen

  Alt 1. Mai 2007, 21:39
Danke... Die waren es Einmal ignorieren und schon funktionierts Danke!

Nur übersetzt er es jetzt nicht ... Ich habe eine Deutsche Oberfläche und englische mo als deutsch deklariert (um nicht um zu stellen)... Habe auch die Übersetzungen eingebettet nur übersetzt er nicht
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: GNU Gettext - AV beim Übersetzen

  Alt 2. Mai 2007, 09:03
Hallo,

ich verwende dxGetText seit Jahren ohne Probleme. Dabei gehe ich so vor:

Ich erstelle die Oberfläche komplett in Englisch (habe auch eine englische delphi-Version. Daher sind auch alle internen Meldungen bzw. Resourcen in Englisch.

Dann übersetze ich die Resourcen mit POEdit in die gewünschte(n) Sprache(n).

Im Programm wird jeweils in OnCreate der folgende Code ausgeführt:

Delphi-Quellcode:
UseLanguage(MeineGewuenschteSprache);
TranslateComponent(Self)
Die Variable "MeineGewuenschteSprache" bezeichnet dabei die sprache auf die umgeschaltet werden soll. Verwendet man "UseLanguage" nicht so richtet sich dxGetText nach der Sprache die auf dem aktuellen System Default ist. Auf einem französischen Windows würde dxGetText also versuchen nach Französisch umzuschalten.

Findet dxGetText keine Übersetzungen im Verzsichnis "<APPLICATIONSVERZEICHNIS>\locale\<SPRACHE>\LC_MES SAGES" so tut es eigentlich nichts und es findet keine Übersetzung statt. In meinem Fall würde also alles in Englisch dargestellt.

In welchen Verzeichnissen hast du denn die jeweiligen DEFAULT.MO Dateien für die unterschiedlichen Sprachen gespeichert?

Wie gesagt: sie gehören nach: "<APPLICATIONSVERZEICHNIS>\locale\<SPRACHE>\LC_MES SAGES". Sprache sollte dabei der 2-Buchstaben ISO code der Sprache sein, also z.B. "de" für deutsch oder "fr" für Französisch. Falls nötig kann man das auch noch genauer machen: z.B. "de_AT" für Östereich.

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: GNU Gettext - AV beim Übersetzen

  Alt 2. Mai 2007, 09:29
Zitat von Alfi001:
Ich erstelle die Oberfläche komplett in Englisch (habe auch eine englische delphi-Version. Daher sind auch alle internen Meldungen bzw. Resourcen in Englisch.
Wenn man mit Packages arbeitet und die .DE-Dateien weg lässt, sind die Meldungen von Delphi auch in Englisch und werden mit der Delphi-Sprachdatei von GetText mit übersetzt. Dann geht's auch mit nem deutschen Delphi
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: GNU Gettext - AV beim Übersetzen

  Alt 2. Mai 2007, 14:43
Aber genau dass ist es ja... Ich habe eine englische Sprachdatei, und um Programmierarbeit zu sparen, habe ich die als deutsch deklariert.
Diese habe ich dann in den Ordner \locale\de_DE\LC_Messages kopiert... Keine Reaktion...

Dann habe ich rechts auf die exe geklickt und "Embed Translations" (o.s.ä.) aufgerufen... Dabei dann beide deutsche Dateien angehängt und ausgeführt => Wieder nichts... Kann es ggf. daran liegen, dass ich die Klasse TStrings (wegen der Memo) ignoriert habe?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: GNU Gettext - AV beim Übersetzen

  Alt 2. Mai 2007, 15:58
Zitat von xZise:
Kann es ggf. daran liegen, dass ich die Klasse TStrings (wegen der Memo) ignoriert habe?
Im allgemeinen sollten nur grafische Komponenten ignoriert werden, TStrings gehört nicht dazu.

Des weiteren muss die automatisch geladene Übersetzungsdatei unterhalb von LC_Messages default.mo heissen.

Weitere Uebersetzungsdateien bekommst Du mit dem Befehl

AddDomainForResourceString ('delphi'); dazu (hier fuer delphi.mo)

//Edit

Beispiele für zu ignorierende Klassen

Delphi-Quellcode:
  TP_GlobalIgnoreClassProperty(TAction,'Category');
  TP_GlobalIgnoreClassProperty(TControl,'HelpKeyword');
  TP_GlobalIgnoreClassProperty(TNotebook,'Pages');
  TP_GlobalIgnoreClass(TFont);
  TP_GlobalIgnoreClass(TPrintFormComboBox);
  TP_GlobalIgnoreClass(TFontComboBox);
  TP_GlobalIgnoreClass (TWebBrowser);
  TP_GlobalIgnoreClassProperty(TDBComboBox,'DataField');
  TP_GlobalIgnoreClassProperty(TDBCheckBox,'DataField');
  TP_GlobalIgnoreClassProperty(TDBEdit,'DataField');
  TP_GlobalIgnoreClassProperty(TDBImage,'DataField');
  TP_GlobalIgnoreClassProperty(TDBListBox,'DataField');
  TP_GlobalIgnoreClassProperty(TDBLookupControl,'DataField');
  TP_GlobalIgnoreClassProperty(TDBLookupControl,'KeyField');
  TP_GlobalIgnoreClassProperty(TDBLookupControl,'ListField');
  TP_GlobalIgnoreClassProperty(TDBMemo,'DataField');
  TP_GlobalIgnoreClassProperty(TDBRadioGroup,'DataField');
  TP_GlobalIgnoreClassProperty(TDBRichEdit,'DataField');
  TP_GlobalIgnoreClassProperty(TDBText,'DataField');
  TP_GlobalIgnoreClassProperty(TTdbStringField,'FieldName');
  TP_GlobalIgnoreClassProperty(TWideStringField,'FieldName');
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: GNU Gettext - AV beim Übersetzen

  Alt 2. Mai 2007, 18:44
1. Heißt die datei default.mo.
2. Wie ist das bei eigebundenen Übersetzungen?
3. Hat das ignorieren der Eigenschaft "Lines" bei TMemo nichts "neues" gebracht...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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