Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm in mehrere Sprachen? (https://www.delphipraxis.net/52017-programm-mehrere-sprachen.html)

smart 22. Aug 2005 19:05


Programm in mehrere Sprachen?
 
Ich habe ein Programm geschrieben und möchte die Beschriftungen für mehrere Sprachen zu Verfügung stellen. Ich habe gelesen, dass dies Delphi direkt unterstützt. Habe leider keine genauen Information darüber gefunden, wie genau diese Unterstützung aussieht. Ich würde z.B. alle Wörter in eine Datei speichern und beim laden des Programms die Datei in eine Stringliste laden und dann aus der Stringliste die entsprechenden Caption’s zuweisen.

GnuText habe ich mir auch schon angesehen, ist aber, meiner Meinung nach, zu kopliziert.

Wie würdet Ihr das machen?

mirage228 22. Aug 2005 19:09

Re: Programm in mehrere Sprachen?
 
Hallo,

Delphi 6 und 7 ab Enterprise und Delphi 2005 ab Professional haben den Translation Manager von Borland mit dabei.

Zur Mehrsprachigkeit findet Du mittels der Forumsuche noch ne ganze Menge Thread über das Thema.

Bisher habe ich kleinere Projekte mit INI-Dateien übersetzt, wo die Sektion dem Form-Namen entsprach und die Werte den Captions der Controls auf der Form. Die Hints werden auf die selbe Weise geladen, nur die Strings, die erst zur Laufzeit zusammengebaut werden, muss ich "manuell" laden.

mfG
mirage228

czapie 22. Aug 2005 19:35

Re: Programm in mehrere Sprachen?
 
Mach dich doch mal ein bißchen schlauer über Ressourcen-Dateien.

RavenIV 23. Aug 2005 07:22

Re: Programm in mehrere Sprachen?
 
Zitat:

Zitat von smart
GnuText habe ich mir auch schon angesehen, ist aber, meiner Meinung nach, zu kopliziert.

Wie würdet Ihr das machen?

such mal nach dem stichwort multilizer hier im forum...

Bernhard Geyer 23. Aug 2005 07:29

Re: Programm in mehrere Sprachen?
 
Zitat:

Zitat von smart
GnuText habe ich mir auch schon angesehen, ist aber, meiner Meinung nach, zu kopliziert.
Wie würdet Ihr das machen?

Wir verwenden ein ähnliches System wie GNU GetText for Delphi (Verwenden ein eigen gestricktes System mit Excel-Dokumenten) für die Übersetzungen und sind sehr zufrieden damit:
- Keine Verstrickung Entwicklung <-> Übersetzungsprozess
- Kunde könnte fast selbständig 100% eigene übersetzung einbauen
- Unicode-Supoort.

Alfons_G 23. Aug 2005 10:13

Re: Programm in mehrere Sprachen?
 
Ich pflege seit einigen Jahren ein Delphi 5-Projekt, bei dem der Anwender zur Laufzeit beliebig zwischen mehreren Sprachen umschalten kann.
Alle Texte im Programm sind in Variablen mit selbsterklärenden (englischen) Bezeichnungen untergebracht. Eine Umschaltprozedur weist diesen Variablen die Werte zu. Die Übersetzungen selbst sind in je einer Unit pro Sprache untergebracht, da der Kunde nicht von sich aus neue Sprachen hinzufügen können muß (und soll).
Wenn der Kunde eine zusätzliche Sprache aufnehmen will, dann erhält er eine Kopie der Text-Unit, damit sein Übersetzer die Texte auf der rechten Seite der Zuweisungen eintragen kann. Ich binde dann die Unit ein und füge den Menüpunkt im Sprachmenü hinzu.

Da hat bis jetzt gut geklappt - hoffe ich zumindest, den außer in Deutsch, Englisch, und notfalls Französisch, Italienisch und Spanisch muß ich mich schon darauf verlassen, dass der Übersetzer des Kunden keinen Mist gebaut hat. Meine Kenntnisse z.B. von Türkisch, Polnisch und Tagalog reichen garantiert nicht so weit, dass ich in diesen Sprachen die Beschriftungen meies Programms lesen könnte ;).

:coder:

Marcel Gascoyne 23. Aug 2005 10:57

Re: Programm in mehrere Sprachen?
 
Zitat:

Zitat von smart
GnuText habe ich mir auch schon angesehen, ist aber, meiner Meinung nach, zu kopliziert.

Was ist daran denn bitte kompliziert ? Du brauchst doch nur gnugettext in Deine Unit's einzubinden. In Deiner Projektdatei machst Du dann Deine Übersetzungsdomain bekannt:
Delphi-Quellcode:
begin
  textdomain('myapp');
  AddDomainForResourceString('myapp');
 
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.
In jedem Formular rufst Du im OnCreate Event die Übersetzung auf:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  TranslateComponent(self);
end;
Einzelne Strings kannst mit der Funktion _() übersetzen, wie z.b. hier:

Delphi-Quellcode:
Label1.Caption := _('This is the translated string.');
Gruß,
Marcel


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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