Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Lingus (Übersetzungswerkzeug) (https://www.delphipraxis.net/146618-lingus-uebersetzungswerkzeug.html)

wicht 23. Jan 2010 23:01


Lingus (Übersetzungswerkzeug)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Nabend.

Hier möchte ich mal den Lingus, ein kleines Übersetzungswerkzeug für Delphi-Projekte, vorstellen. Über die Weihnachtszeit habe ich etwas rumgebastelt und dabei ist eben Lingus herausgekommen (kA ob der Name Sinn ergibt, mein Latein ist lange her). Die letzte Zeit habe ich in etwas Feinschliff investiert und ich denke, das Teil läuft schon ganz gut :-D .


Was macht dieser Lingus?
  • Ihr habt ein Delphi-Projekt
  • Ihr importiert das Delphi-Projekt in Lingus, übersetzt es und speichert das Lingus-Projekt, wobei in den Ordner, der die neu erstellte Lingus-Projektdatei beinhaltet, auch eine Resourcendatei geschrieben wird
  • Ihr fügt dem Suchpfad eures Projektes die LanguageObjects.pas hinzu (In der Zip und im Setup enthalten, im Quelltext sowieso)
  • Ihr fügt den Units, die Forms oder Strings beinhalten, "uses LanguageObjects" hinzu
  • Ihr ersetzt in diesem Delphi-Projekt alle Strings, z.B. wird 'EinString' zu _('EinString') (gettext-ähnlich)
  • Ins OnCreate oder den Konstruktor der Formulare kommt ein Language.Translate(Self);
  • In der Projektdatei eures Projektes muss nun noch ein {$R PfadZurLanguageRes.res} hinzugefügt werden, damit die Übersetzungen geladen werden können

Habe es hier mit Delphi 7 und 2010 getestet - Die Projekte, die die LanguageObjects.pas am Ende einbinden, benutzen dann die Units "Windows, SysUtils, Classes, StrUtils, TypInfo, Controls" - also noch nicht ganz Non-VCL kompatibel, aber wäre noch ein interessantes Feature. Ich vermute, alles über NT4 oder 2000 funktioniert als Betriebssystem. Daten speichert der Lingus in der Registry unter HKEY_CURRENT_USER\Software\mistake.ws\Lingus.

Also, ich kann keine Garantie dafür übernehmen, dass es überall direkt ohne Probleme läuft, aber Lingus hat sich quasi selbst übersetzt und der streamWriter wurde auch mit Hilfe von Lingus "lokalisiert".
Bevor jetzt kommt, dass Lingus überflüssig ist: Ich habe vorher gettext benutzt, aber fand es irgendwie nicht ganz so schön. Möchte ich hier auch nicht näher drauf eingehen, jedenfalls ist das der Grund, weshalb ich Lingus gebaut habe.

Würde mich natürlich sehr freuen, wenn das irgendjemand ausprobiert und Feedback gibt.. Verbesserungsvorschläge, Fehlerberichte, Lob und so sind auf jedenfall erwünscht.
Danke schonmal.

Achja, im Anhang natürlich Zip, Source und Screenshots.
Weitere Infos, wenn z.Z. auch nicht mehr als hier gepostet: Lingus-Webseite

wicht 18. Mär 2010 19:57

Re: Lingus (Übersetzungswerkzeug)
 
Nabend.

Es gibt eine neue Version. Geändert hat sich folgendes (Version im ersten Post aktualisiert):

- Verbesserter Import von Quellen
- Suchfunktion wie bei Firefox mit so einer Leiste unten
- Speichern und Laden aus .exe oder Linugs-.res Dateien ist jetzt möglich
- Viele Kleinigkeiten...

Für die nächste Version ist geplant, dass die LanguageObjects.pas aufgeteilt wird, so dass weniger Code bei Anwendungen, die die Übersetzungen nutzen, mitgegeben werden muss.

Würde mich sehr über irgendeinen Kommentar freuen... auch wenn ich befürchte, dass auf diesen Post niemand antwortet :mrgreen:
Bitte teste es doch mal irgendwer.. :P

wicht 18. Apr 2010 15:35

Re: Lingus (Übersetzungswerkzeug)
 
Und der längste Monolog des Forums geht weiter :-D

In der letzten Zeit sind ein paar Dinge passiert, hier mal das wichtigste aufgelistet:
  • .lpf-Dateien können jetzt mit Lingus verknüpft werden
  • Aktive Sprache kann jetzt zur Laufzeit festgelegt werden
  • Eine .exe/.dll, die Lingus nutzt, kann jetzt mehrere .res-Dateien mit Übersetzungen beinhalten.
    Nützlich, wenn mehrere Teilprojekte in einer Ausgabedatei stecken.
  • Neue Unit LanguageIcons.pas hinzugefügt
Ausserdem wurde die Hilfe-Seite stark überarbeitet, siehe http://mistake.ws/projekte/lingushelp/.
Downloads im ersten Post wurden aktualisiert, Setup-Download gibt es auf der Webseite.

Schönen Sonntag noch :P

hathor 18. Apr 2010 19:57

Re: Lingus (Übersetzungswerkzeug)
 
Wegen Feedback:

Du darfst nicht glauben, dass viele Leute so etwas brauchen: Die Doofies, die so etwas brauchen, weil sie kein Englisch können, geben das Programmieren bald wieder auf...

mkinzler 18. Apr 2010 20:01

Re: Lingus (Übersetzungswerkzeug)
 
Und weil der Programmierer englisch kann muss man das Programm nicht lokalisieren? :gruebel:

wicht 18. Apr 2010 21:58

Re: Lingus (Übersetzungswerkzeug)
 
Immerhin zwei Antworten.. :mrgreen:
Nein, ich habe mich damit schon abgefunden und kein so großes Problem mehr damit.
Solange es mir keiner verbietet werde ich den Thread trotzdem bei (für mich interessanten) neuen Features aktualisieren..

mkinzler 18. Apr 2010 22:01

Re: Lingus (Übersetzungswerkzeug)
 
Wir werden dir das bestimmt nicht verbieten.

TRON 27. Apr 2010 16:22

Re: Lingus (Übersetzungswerkzeug)
 
Hallo :hi:

Hab die aktuelle Version mal an einem keinen Test Projekt ausprobiert und es hat nun problemlos funktioniert.

Die Lizenz (GNU Lesser GPL) der Source Dateien (LanguageObjects.pas, ...) ist aber nicht gerade optimal für Delphi Projekte. Besser wäre hier wohl die MPL.

Gruß
tron

wicht 27. Apr 2010 18:40

Re: Lingus (Übersetzungswerkzeug)
 
Hi,

danke, besonders für das
Zitat:

...und es hat nun problemlos funktioniert.
:-D
Auch danke für den Kommentar zu der Lizenz - ich habe nur irgendwas gesucht und dachte mir "die LGPL passt bestimmt schon irgendwie" - werde mich da bei Zeiten nochmal informieren und das dann vermutlich anpassen...

himitsu 26. Mai 2010 11:56

Re: Lingus (Übersetzungswerkzeug)
 
Rechts die vielen (vorallem bei mehreren Sprachen) Memos würde ich in eine ScrollBox verfrachten,
denn aktuell kommt man an die unteren Memos nicht richtig ran.

DeddyH 26. Mai 2010 12:22

Re: Lingus (Übersetzungswerkzeug)
 
Zitat:

Zitat von himitsu
Rechts die vielen (vorallem bei mehreren Sprachen) Memos würde ich in eine ScrollBox verfrachten,
denn aktuell kommt man an die unteren Memos nicht richtig ran.

Dann schmeiß endlich Deinen ollen 15-Zöller weg :lol:

himitsu 26. Mai 2010 12:26

Re: Lingus (Übersetzungswerkzeug)
 
Zitat:

Zitat von DeddyH
Dann schmeiß endlich Deinen ollen 15-Zöller weg :lol:

Dann mach du mal im Sprachmenü überall ein Häkchen und besorg dir dazu passend einen 200-Zöller.
(nächsten Monat kommt erstmal 'ne neue Brille und dann mal gucken was übrig bleibt)

PS: Ich komm ja an die Memos ran ... ich seh nur nich, was ich da machen würde :zwinker:

wicht 26. Mai 2010 12:27

Re: Lingus (Übersetzungswerkzeug)
 
:mrgreen: ... ich kann halt nicht mehr als Deutsch und Englisch!
Werde das aber irgendwann am Wochenende realisieren, danke für den Tipp :thumb:

himitsu 26. Mai 2010 12:38

Re: Lingus (Übersetzungswerkzeug)
 
Zitat:

Zitat von TRON
Die Lizenz (GNU Lesser GPL) der Source Dateien (LanguageObjects.pas, ...) ist aber nicht gerade optimal für Delphi Projekte. Besser wäre hier wohl die MPL.

PS: Hier gibt es ja schon mehrere Threads zu Lizenzen ... ich bin seit 'ner Weile auf eine Multilizenz umgestiegen. (irgendwo düfte man auch mehrere Threads und Fragen finden :) )

MPL 1.1 , GPL 3.0 und LGPL 3.0 (hatte mir die aktuelleren Lizenzen kombiniert)

Und es gibt auch Einige, welche schon lange "erfolgreich" hiemit laufen:
MPL 1.0 , GPL 2.0 und LGPL 2.0

Multilizenzen haben den Vorteil, daß sich jeder die zu seinem Programm passende Lizenz aussuchen und verwenden kann (solange nicht grob fahrlässig gegen die Anderen verstoßen wird).

Denn z.B. dein GPL-Projekt macht sich in einem Programm mit einer MPL-freundlicheren Lizenz oftmals sehr schlecht.
Und diese 3 Lizenzen vertragen sich recht gut und bieten insgesamt ein sehr großes Spektrum an Verträglichkeit.

wicht 26. Mai 2010 12:53

Re: Lingus (Übersetzungswerkzeug)
 
Ich habe mich für eine BSD-Lizenz entschieden, wobei ich die Punkte 2 und 3 entfernt habe. Sieht man in den Quellen. Ich hoffe, dass das so passt...?
Und wenn sich immer noch irgendwer beschwert kommt die Datei halt unter Public Domain, und dann will ich nix mehr hören :mrgreen: ...

mkinzler 26. Mai 2010 13:08

Re: Lingus (Übersetzungswerkzeug)
 
Hast du dir das gut überlegt? Bei BSD gibst du deine Rechte weitgehenst ab. Jemand könnte an leicht geänderten Code verdienen und sich diese Änderungen auch patentieren lassen (siehe MS-Kerberos <-> Kerberos)

wicht 26. Mai 2010 13:17

Re: Lingus (Übersetzungswerkzeug)
 
Ich habe nur die zwei Dateien, die andere Menschen in ihre Applikation mit hineinkompilieren müssen/können, unter diese Lizenz gestellt (Übersetzungen aus .exe auslesen, Übersetzungen auf Komponenten anwenden und die _()-Funktion - nichts weltbewegendes). Darum kann ich damit gerade noch leben. Der Lingus als Programm steht weiterhin unter der GPL. So denke ich jedenfalls, dass Lingus für jegliche Art von Programm, egal unter welcher Lizenz es später steht, benutzt werden kann. Das liegt eben daran, dass ich mich freuen würde, nicht für immer der einzige User meines Programms zu sein :-D

himitsu 26. Mai 2010 13:18

Re: Lingus (Übersetzungswerkzeug)
 
Zitat:

Zitat von wicht
Der Lingus als Programm steht weiterhin unter der GPL. So denke ich jedenfalls, dass Lingus für jegliche Art von Programm, egal unter welcher Lizenz es später steht, benutzt werden kann.

Jupp, da der Lingus eh extern (nicht im auszuliefernden Programm) liegt, geht das so schon.

@mkinzler: Keine Sorge.
Zitat:

Zitat von wicht
wobei ich die Punkte 2 und 3 entfernt habe.

Durch ein paar unbedachte Änderungen ist diese BSD-Lizenz eh ungültig und es muß sich sowieso keiner an diese halten. :stupid:

Auch Lizenzen liegen unter irgendeiner Lizenz und dürfen garnicht oder nur in bestimmten/wenigen Dingen geändert werden, damit sie gültig sind.

(theoretisch ist nichtmal ein simples eigenmächtiges Übersetzen erlaubt :wall: )

wicht 26. Mai 2010 13:31

Re: Lingus (Übersetzungswerkzeug)
 
Ihr macht mich fertig. Wie wär's hiermit?

2-clause license ("Simplified BSD License" or "FreeBSD License")

Verträglich? Weil da dann eben Punkt zwei mit bei ist. Wenn das immer noch nicht passt mache ich Public Domain und will hier nichts mehr hören... :wall: :mrgreen:

Edit: Was spricht denn dagegen, Punkt zwei zu entfernen, und das ding dann mistake.ws-Lizenz zu nennen? Das ist doch nicht verboten?

himitsu 26. Mai 2010 16:36

Re: Lingus (Übersetzungswerkzeug)
 
Zitat:

Zitat von wicht
Edit: Was spricht denn dagegen, Punkt zwei zu entfernen, und das ding dann mistake.ws-Lizenz zu nennen? Das ist doch nicht verboten?

Sowas geht nur, wenn die Original-Lizenz einem Copyleft unterliegt und das Kopieren und Verändern erlaubt. (sowas ist aber fast nie der Fall)


PS: Was spricht dagegen ein "Heer der Ringe"-Buch zu nehmen, Frodo in Frank umzubenennen, noch'n paar andere kleine Dinge zu ändern und das Ergebnis "Heer der Freundschaftsbänder" zu nennen?

wicht 26. Mai 2010 17:40

Re: Lingus (Übersetzungswerkzeug)
 
Naja, 10 Zeilen Lizenz und HDR ... aber im Kern hast du wohl Recht.
Dann muss ich mal rausfinden, unter welcher Lizenz die Lizenz steht :stupid: sowas doofes... und am besten noch gucken, dass die Lizenz, unter der die Lizenz steht, nicht von irgendetwas anderem Lizenziert ist.

Larsi 26. Mai 2010 17:44

Re: Lingus (Übersetzungswerkzeug)
 
Du könntest ja eine Funktion einbauen welche automatisch übersetzt zum Beispiel mit dem Google Online Übersetzer, die Ergebnisse muss man zwar in den meißten Fällen noch überarbeiten aber eine optinale Funktion fänd ich nicht schlecht. Zum Thema Übersetzung hab ich mal eine kleine Anwendung progammiert welche "Quick und Dirty" mit dem Google Service übersetzt. Klick! Was hälst du von der Idee?

MfG Lars Wiltfang

RWarnecke 28. Mai 2010 21:51

Re: Lingus (Übersetzungswerkzeug)
 
Hallo,

wenn ich vom Programm die Anzeige eines Labels ändere, wird die Anzeige des Labels wieder auf die ursprüngliche Anzeige bei einer Übersetzung zurückgesetzt. Konkretes Beispiel :
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  Label1.Caption := 'Der Testbutton wurde noch nicht angeklcikt';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := 'Test des Button 1';
end;

procedure TForm1.Translate;
begin
  {Wie im Beispiel beschrieben}
end;
Der String vom Event FormShow steht in der Resourcedatei von Lingus, der String von Button 1 nicht. Wenn ich jetzt Button 1 anklicke, dann ändert sich die Anzeige in Label1. Wenn ich danach jetzt über eine Auswahl von einer Combobox die Sprache auswähle und damit die Procedure Translate aufrufe, dann ändert sich die Anzeige von Label 1 in den übersetzten String aus dem FormShow-Event.

Mache ich da irgendwas falsch oder habe ich da einen Fehler gefunden ?

wicht 2. Jul 2010 09:18

AW: Lingus (Übersetzungswerkzeug)
 
Hallo,

es gibt eine neue Version. Anhang des ersten Posts ist aktualisiert.

Neuerungen:
  • Unterstützung für TStrings (TMemo, TComboBox, ...)
  • LoadFromFile()-Methode hinzugefügt, um Übersetzungen zur Laufzeit aus Datei zu laden

Lars: Ich denke das mache ich nicht. Ich glaube, wenn man es automatisieren würde, müsste man danach trotzdem noch per Hand an jedem String rumfummeln.. falls das irgendwer machen möchte, die Quellen gibts ja zum Download :-D

Rolf: Das könnte in der Tat ein Fehler sein. Beim ersten Aufruf von Language.Translate() für die Form werden Instanzen von TTranslationMarker erstellt (Owner ist dann die Form). In diesem Objekten wird der ursprüngliche Text des Labels gespeichert, bevor Translate() es übersetzt. Dieser muss bekannt sein, um bei einer Sprachänderung (und anschließendem Aufruf von Translate()) zu wissen, was da mal stand (Originaltext), um das passende Äquivalent in der neu ausgewählten Sprache zu finden. Ich werde mich später drum kümmern und mich dann hier nochmal melden.

Sorry dass ich mir soviel Zeit zum Antworten gelassen habe. Zuviel zu tun.. :stupid:

RWarnecke 2. Jul 2010 10:48

AW: Lingus (Übersetzungswerkzeug)
 
Hallo Alexander,

das sieht ja schonmal nicht schlecht aus. Werde das die nächsten Tage ausprobieren. Was macht die Übersetzung der Einträge in einem TTreeView ?

wicht 2. Jul 2010 11:02

AW: Lingus (Übersetzungswerkzeug)
 
Ich denke das wird nichts. In der dfm-Datei wird das TListItem wohl irgendwie serialisiert.. ich wüsste nicht, wie ich das machen soll :?

wicht 7. Jul 2010 17:52

AW: Lingus (Übersetzungswerkzeug)
 
Rolf, das von dir oben beschriebene Problem ist nun behoben.

drschubi 19. Jul 2010 18:23

AW: Lingus (Übersetzungswerkzeug)
 
Hallo, erstmal vielen Dank für dieses tolle Projekt.
Schade dass hier mehr über die Lizenz als über das Projekt an sich diskutiert wird.
Ich möchte die Sprache aus der pf-Datei laden mit
Delphi-Quellcode:
Language.LoadFromFile('lang.pf');
Aber wie sage ich denn welche Sprache ich haben will?

Komme da nicht weiter.

Danke Renê

Sorry, ich habs
z.Bsp. Language.SetLanguage('fr');

wicht 19. Jul 2010 18:59

AW: Lingus (Übersetzungswerkzeug)
 
Hi,

schön, dass du das Ding benutzt. Das hier nicht viel über Lingus geredet wird ist völlig okay, dann kann ich mich nämlich um wichtigeres kümmern :-D ...

drschubi 19. Jul 2010 19:07

AW: Lingus (Übersetzungswerkzeug)
 
Hallo Wicht, so richtig will es bei mir nicht, schade das es keine demo gibt.
Nach mehrmaligem Aendern der Auswahl in der ComboBox wird nichts mehr übersetzt. Was mache ich denn falsch?

Danke im voraus Renê


Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Combobox1.Items.Add('Deutsch');
  Combobox1.Items.Add('Englisch');
  Combobox1.Items.Add('Französisch');
  ComboBox1.ItemIndex:=0;
  Language.LoadFromFile(ProgDir + 'lang.lpf'); Language.SetLanguage('de'); Language.Translate(Self);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  case combobox1.ItemIndex of
    0: begin Language.LoadFromFile(ProgDir + 'lang.lpf'); Language.SetLanguage('de'); Language.Translate(Self); end;
    1: begin Language.LoadFromFile(ProgDir + 'lang.lpf'); Language.SetLanguage('en'); Language.Translate(Self);end;
    2: begin Language.LoadFromFile(ProgDir + 'lang.lpf'); Language.SetLanguage('fr'); Language.Translate(Self);end;
  end;
end;

initialization
  ProgDir := ExtractFilePath(Paramstr(0));
end.

drschubi 19. Jul 2010 19:55

AW: Lingus (Übersetzungswerkzeug)
 
Ich nochmal,
die Einträge der Combobox werden leider auch nicht geändert.
Uebersetzt habe ich sie aber.Ich find den Fehler nicht, leider, :(
wicht, kannst du bitte helfen, wenn du Zeit hast?
Danke Renê

wicht 19. Jul 2010 21:17

AW: Lingus (Übersetzungswerkzeug)
 
Hi,

du hast auf dem Formular eine TComboBox, die mit Text befüllt ist. Du rufst Language.Translate(Self) im Formular auf. Der Text bleibt der selbe wie vorher? Und vor Language.Translate() wurde er nicht angepackt, so dass er mit den Daten aus der Sprach-Datei nicht mehr "synchron" ist? Ganz sicher, dass er korrekt übersetzt ist? Richtige Datei geladen? Ich habe es gerade selbst nocheinmal getestet und hier hat es geklappt.
Wenn das nicht weiterhilft könntest du mir ein kleines Testprojekt bauen und zuschicken, was nichts macht, ausser diesen Fehler zu zeigen, hätte ich auch kein Problem mit. :)

EDIT: Der "zum letzte Post" Button oder wie das heißt hat mich direkt auf dein letztes Posting geworfen, obwohl ich das davor noch gar nicht gelesen hatte? Ist hier was faul oder bin ich verwirrt? Schaue nochmal über das andere Posting von dir...

Liebe Grüße,

Alexander

wicht 19. Jul 2010 21:22

AW: Lingus (Übersetzungswerkzeug)
 
Versuch mal,
Delphi-Quellcode:
Language.LoadFromFile(ProgDir + 'lang.lpf');
nur am Anfang im FormCreate() zu machen, und zwar, bevor du das erste Mal Translate() aufrufst. Ansonsten sieht das glaube ich okay aus, und ich meine, ein mehrmaliges LoadFromFile() nicht wirklich getestet zu haben, weil es meiner Meinung nach irgendwie "überflüssig" ist...
Vielleicht hilfts, ansonsten schaue ich mir das heute Nacht oder morgen Abend mal an...

Noch ein Edit: Die Idee mit der Demo-Applikation ist super, da werde ich mal bei Zeiten was schustern...

wicht 21. Jul 2010 21:49

AW: Lingus (Übersetzungswerkzeug)
 
Fehler behoben und im Subversion, irgendwann in naher Zukunft im ersten Post und auf der Webseite.

wicht 9. Okt 2010 17:56

AW: Lingus (Übersetzungswerkzeug)
 
Nabend,

es gibt eine neue Lingusversion zum Download auf der Webseite, die im ersten Post steht. Hinzugekommen sind Ignore-Listen für bestimmte Dateien oder Strings, so dass man beim Synchronisieren die Übersicht behält :-D
Achja, und eine kleine Demo-Applikation ist jetzt auch dabei.


Liebe Grüße

mjohn 10. Okt 2010 11:39

AW: Lingus (Übersetzungswerkzeug)
 
Hallo Alex,

du hast da mit Lingus ein tolles Tool geschaffen. Kompliment! Ich entwickle unter Delphi7 ein größeres Projekt und möchte es mit Lingus auf Mehrsprachigkeit umstellen. Zum Test habe ich ein kleineres Projekt erstellt und damit etwas experimentiert. Die Beschriftungen werden bis auf eine Ausnahme auch beim Sprachenwechsel alle fein geändert. Nur die Menüs und Untermenüs wollen nicht. Muss ich bei Menüs irgend eine Besonderheit beachten oder ist die Implementation noch nicht so weit?

Grüße, Mano

wicht 10. Okt 2010 12:50

AW: Lingus (Übersetzungswerkzeug)
 
Hi,

mit den Menüs gibt es keine (mir bekannten:-D) Probleme und das müsste einfach nur funktionieren. Kannst du mir das Test-Programm, wo es bei dir nicht klappt, einfach zu senden oder hier anhängen? Ich glaube, so kommen wir am schnellsten zur Lösung des Problems.


Liebe Grüße,

Alexander

mjohn 10. Okt 2010 13:37

AW: Lingus (Übersetzungswerkzeug)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein "Minimalbeispiel" mit drei Sprachen:

Delphi-Quellcode:
unit Lingusdemo;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, LanguageObjects, LanguageIcons, StdCtrls, Menus, ImgList;
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    speichern1: TMenuItem;
    laden1: TMenuItem;
    Einstellungen1: TMenuItem;
    Sprache1: TMenuItem;
    Deutsch1: TMenuItem;
    Englisch1: TMenuItem;
    Franzsisch1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Englisch1Click(Sender: TObject);
    procedure Deutsch1Click(Sender: TObject);
    procedure Franzsisch1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Language.Translate(Self);
end;

procedure TForm1.Englisch1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to LanguageList.Count - 1 do
  if LanguageList[i].Available then
  begin
    if LanguageList[i].ID = 'en' then
    begin
      Language.CurrentLanguage := LanguageList[i];
      Break;
    end;
  end;
Language.Translate(Self);
end;

procedure TForm1.Deutsch1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to LanguageList.Count - 1 do
  if LanguageList[i].Available then
  begin
    if LanguageList[i].ID = 'de' then
    begin
      Language.CurrentLanguage := LanguageList[i];
      Break;
    end;
  end;
Language.Translate(Self);
end;

procedure TForm1.Franzsisch1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to LanguageList.Count - 1 do
  if LanguageList[i].Available then
  begin
    if LanguageList[i].ID = 'fr' then
    begin
      Language.CurrentLanguage := LanguageList[i];
      Break;
    end;
  end;
Language.Translate(Self);
end;
end.
Bei der Wahl von Englisch wird auch das Untermenü korrekt übersetzt. Eine weitere Wahl französich oder deutsch hat keinen Effekt mehr.

Grüße, Mano

wicht 10. Okt 2010 14:31

AW: Lingus (Übersetzungswerkzeug)
 
Hi,

Problem ist erkannt. Du hast beim MainMenu1 AutoHotKeys auf maAutomatic gestellt. Ich wusste gar nicht, dass es diese interessante Eigenschaft gibt, demnach mache ich das immer per Hand.
Die Sache dabei ist, dass Delphi in die .dfm den von Lingus eingelesenen String packt, z.B. "Datei", und dass das Menü dann daraus "&Datei" macht - Lingus kennt "&Datei" aber nicht, weil aus der .dfm nur "Datei" eingelesen wurde, demnach kann das Menü nicht übersetzt werden. Als schnelle Lösung müsstest du AutoHotKeys wohl auf maManual stellen und dir die Arbeit mit den HotKeys selbst machen...
Vielleicht könnte Lingus das irgendwann auch selbst regeln, aber bis ich da dran weiter machen kann, werden noch ein paar Monate vergehen, das hier ist meiner Meinung nach nur ein kleines Problem.

BTW: Du kannst die Sprache auch mit Language.SetLanguage('en') auf Englisch setzen, das Argument, was mitgegeben wird, ist einfach die Sprach-ID. Dann kann man sich die Schleifen sparen. Warum das auf der Hilfe-Seite und vielleicht sogar im Demo-Projekt von mir so kompliziert gemacht ist, fällt mir gerade nicht ein :-D


Liebe Grüße,

Alexander

mjohn 10. Okt 2010 15:15

AW: Lingus (Übersetzungswerkzeug)
 
Hallo Alex,

ich wusste bis jetzt auch nichts von dieser Eigenschaft :P. Bei Delphi7 scheint das die Standardeinstellung zu sein. Auf diese Option kann ich locker verzichten. Vielen Dank für die schnelle Hilfe! Jetzt funktioniert ja alles perfekt.

Danke und Grüße, Mano


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Seite 1 von 2  1 2      

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