Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Anwendungen lokalisieren Mehrsprachiges Programm (https://www.delphipraxis.net/163654-anwendungen-lokalisieren-mehrsprachiges-programm.html)

Gintama 9. Okt 2011 11:34

Anwendungen lokalisieren Mehrsprachiges Programm
 
Hi Leute!

Ich habe eine einfaches VCL-Formular erstellt welches die Sprache auf Knopfdruck ändern soll.

Ich habe mich hierzu an die Anleitung von http://docwiki.embarcadero.com/RADSt...n_lokalisieren gehalten.

Kurz zusammengefasst waren die Arbeitsschritte hierzu:
- VLC-Form fertig erstellen
- Über XE2-Studio Menü Projekt->Sprache->Sprache hinzufügen
Dabei werden für jede Sprache neue Unterordner im Projekt angelegt mit den jeweiligen Sprachen, wo sich die jeweilige *.dfm befindet.
Wenn man diese über Doppelklick auswählt erscheint dann der dementsprechende Übersetzungseditor wo schon die bestehenden Strings und Komponent.Caption generiert sind und nur über der Übersetzungstext einzufügen ist.
- Neues Wörterbuch über Ansicht->Translation Manager anlegen und vom Übersetzungseditor die Übersetzungen übernehmen.
- Prozedure die den Registry-Schlüssel für die Anwendung ändert, um festzulegen mit welcher Sprache die Anwendung geladen wird.
- Übersetzungsarbeiten fertig, erstellen der Ressourcen-DLL über Projekt->Neu->Weitere und auswahl Ressourcen-DLL-Experte, beim Wizard die Resourcendatein angeführt.

Leider ist das Ergebnis nicht wie gewünscht. Die Sprache wird zwar umgestellt, aber man muss dazu das Programm beenden und neu starten.

Ich will aber, dass es noch in der selben Instance geändert oder automatisch eine korregierte Instance erstellt wird, wobei die 2 Variante eher eine Notlösung darstellt.

Meine Lösungsansätze hierfür, die nicht geklappt haben, waren:
1) Form-Prozeduren/Funktionen wie BSP refresh, update, updateUIControls, reinitalizecomponent usw.
2) Über exclude/include die Resourcendatei dynamische zu linken
3) Über die ShellAPI das Programm selber aufzurufen und die alte Application Terminieren.

Da ich seit kurzen mich mit Delphi Pascal beschäfftige, gehe ich davon aus, dass die Antwort ganz leicht ist. Deshalb bitte ich euch Unterstützung.

Danke im voraus und ich hoffe meine Schilderung hilft euch, falls Ihr selber mal vor diesem Problem stehts.

Union 9. Okt 2011 11:51

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Hallo und Herzlich willkommen in der DP.
Eine einfache Lösung gibt es da nicht. Du solltest nach externen Tools suchen, die Dir ein On-The-Fly Umschalten ermöglichen.

delphinia 9. Okt 2011 12:04

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
das thema interessiert mich auch hast Du da kostenlose kostengünstige ideen?

wicht 9. Okt 2011 12:09

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
gettext ist sehr verbreitet - wer es ein bisschen komfortabler möchte (meine Meinung), kann Lingus ausprobieren. Alles was ich so gemacht habe, habe ich damit übersetzt.

delphinia 9. Okt 2011 12:12

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
gettext ist grauenvoll! die tausend ordner im Ordner - also das System wie die Sprachen verwaltet werden isst einfach unwirtschaftlich!


Lingus schaue ich mir gleich mal an - ist das auch für XE2

Union 9. Okt 2011 12:13

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Ich benutze Localizer - XE2 befindet sich gerade in der Beta.

wicht 9. Okt 2011 12:16

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Ich vermute Lingus funktioniert auch mit XE2, ich selber benutze es mit XE.

himitsu 9. Okt 2011 12:34

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Da gibt es im XE2 irgendsoein TLang...-Ding oder TTranslate..-Teil (meine Trial ist grade abgelaufen, kann nimmer nachsehn), das kannst du auf die Form ziehen und die GUI-Sprache auch zur Laufzeit umschalten, bzw. du kannst dort für Komponenen eine Übersetzung angeben, welche man zur Laufzeit neu laden/umschalten kann.

Gintama 9. Okt 2011 12:48

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Danke für die zahlreichen Antwort. Ich werde eine sauberes Projekt in 3 Stunden hier reinhängen. Momentan muss ich die meine IDE neuinstallieren, hab durchs ganze ausprobieren mir die anderne Projekte versaut.

Mit gnugettext habe ich es schon geschafft gehabt eine funktionierente Überseztung zu machen, jedoch möchte ich beim Standard bleiben der in der IDE vorgegen ist. Erwähnenswert dazu ist, dass man die richtige Quelltext-Datei verwendet (Eine die zu XE2 kompatible ist). Die ursprüngliche funktioniert nur bei Kilix und für andere Delphi Versionen gibt es auch eigene.

Ich bin leider Anfänger in Delphi und ein paar Konzepte sind mir nicht klar, deshalb denke ich, dass die Lösung ganz einfach ist. Wie Bsp. Application.Reinitalize oder nochmaliges linken der Resource-Datei. Oder das angeben in der {$R.dfm} mit den Suchpfad in den jeweiligen Sprach dfm. Oder bei den Projektoptionen den Pfad anführen.

Leider bin ich momentan wegen IDE Problemen selber lahmgelegt. Darum bitte ich um 2-3 Std geduld bis ich meine Beispielprojekt reinhänge.

Danke für eure Antworten

Gintama 9. Okt 2011 12:50

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Himitsu! Danke für den Tip ich werde es dann gleich ausprobieren!

Jens01 9. Okt 2011 12:56

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Das könnte auch eine gute Alternative sein: http://www.delphiarea.com/products/d...packages/i18n/

Union 9. Okt 2011 13:30

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Zitat:

Zitat von himitsu (Beitrag 1129448)
Da gibt es im XE2 irgendsoein TLang...-Ding oder TTranslate..-Teil

Ja, aber das ist nur für He-Who-Must-Not-Be-Named.

Gintama 9. Okt 2011 16:00

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei habe ich mein Übersetzungsprogram beigehängt. Leider hänge ich noch immer beim dynamischen Wechseln der Sprache. Leider konnte ich diese TLang.. oder TTrans... Komponente ausmachen.

Bin für jeden Tip offen, vorrausgesetzt diese sind in Delphi XE2 standardmässig(also mit den Standard-Werkzeugen der IDE) umsetzbar.

delphinia 9. Okt 2011 16:02

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Zitat:

Zitat von Union (Beitrag 1129459)
Zitat:

Zitat von himitsu (Beitrag 1129448)
Da gibt es im XE2 irgendsoein TLang...-Ding oder TTranslate..-Teil

Ja, aber das ist nur für He-Who-Must-Not-Be-Named.

He-Who-Must-Not-Be-Named bitte was?

FredlFesl 9. Okt 2011 17:06

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
TSiLang ist für mich immer noch allererste Wahl.

Namenloser 9. Okt 2011 20:05

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Zitat:

Zitat von delphinia (Beitrag 1129438)
gettext ist grauenvoll! die tausend ordner im Ordner - also das System wie die Sprachen verwaltet werden isst einfach unwirtschaftlich!

Man kann die Lokalisierungen auch direkt in die Exe einbetten.

Uwe Raabe 9. Okt 2011 21:00

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Zitat:

Zitat von Gintama (Beitrag 1129475)
Bin für jeden Tip offen, vorrausgesetzt diese sind in Delphi XE2 standardmässig(also mit den Standard-Werkzeugen der IDE) umsetzbar.

Ich verstehe diese Einschränkung nicht. Mit bordeigenen Mitteln geht es nur, wenn du die Exe neu startest - das hast du selbst auch schon bemerkt. Alles andere was dir hier genannt wurde, sind Bibliotheken von Drittanbietern. Manche davon sind kostenlos, andere nicht.

Union 9. Okt 2011 21:06

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Ich finde auch die Forderung nach einer On-The-Fly Umschaltung etwas übertrieben. Unser Programme bieten das zwar, wird aber so gut wie nie genutzt. Ein Türke will kein Bulgarisches Programm sehen und der Ungar kein Tschechisches. Einzige Ausnahme ist bei Schulungen, wenn man auf Kunden-PCy arbeiten muss. Dann hilft das Umschalten, falls man einen Button oder Menüpunkt nicht mehr findet, oder die alphabetisch sortierten Konfigurationseinträge einer Combobox nicht identifizieren kann.

himitsu 9. Okt 2011 22:02

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Wie gesagt, die Möglichkeiten in XE2 sind auch zur Umschaltung im Betrieb vorgesehn (auch wenn das Umschalten für einen Button, ein Label und eine Groupbox mit 3 Sekunden etwas übertreiben waren, bei meinem Test)

Aber ich finde nichts verwerflich daran sich auch mal nur auf Boardmittel zu beschränken,
vorallem für weitergegebene Komponenten ist es doch schön, wenn sie keine großen Abhängigkeiten vorweisen können.
Und auch für längerlebende Kleinprojekte versuche ich möglichst auf Fremdkomponenten zu versichten.

Union 9. Okt 2011 22:09

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Eine Möglichkeit findest Du unter Samples\Delphi\VCL\RichEdit.

Gintama 10. Okt 2011 13:28

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1129502)
Zitat:

Zitat von Gintama (Beitrag 1129475)
Bin für jeden Tip offen, vorrausgesetzt diese sind in Delphi XE2 standardmässig(also mit den Standard-Werkzeugen der IDE) umsetzbar.

Ich verstehe diese Einschränkung nicht. Mit bordeigenen Mitteln geht es nur, wenn du die Exe neu startest - das hast du selbst auch schon bemerkt. Alles andere was dir hier genannt wurde, sind Bibliotheken von Drittanbietern. Manche davon sind kostenlos, andere nicht.

Danke Uwe. Du hast absolut recht, ich wollte es schöner habe als es möglich ist. Ein Tip möchte ich noch allgemein der Runde geben, wenn man den Registry Schlüsselwert ändert, damit die Sprache gewechselt wird, dann muss man dies vor der Application.Initialize Anweisung machen. Andernfalls funktioniert die Übersetzung nicht richtig und für zu einen seltsamen Runtime-Verhalten. Bsp Sprache bleibt immer die selbe auch wenn Registry-Schlüssel geändert wurde, oder dauerhafter Programmaufruf (obwohl keine Schleife und kein rekursiver Funktionsaufruf erfolgt) oder man macht sich den Übersetzungseditor in der IDE kaput. Ist mir alles leider in den letzten 3 Tagen passiert. Für die zündete Idee (die Registry vor dem Application.Initialize aufzurufen) möchte ich herzlich den Daniel danken.

Epilog, damit man on-the-run die Sprache wechseln kann muss man mit dem THandler arbeiten. Wollte ich mir aber nicht antun.

Danke an alle für Ihre Mithilfe!

Steku 10. Okt 2011 13:52

AW: Anwendungen lokalisieren Mehrsprachiges Programm
 
Hi,

anbei noch zwei Links zu Lokalisierungskompos für Delphi.
Bin da vor einiger Zeit drauf gestoßen, habe Sie aber nie getestet.
Die eine steht glaube ich komplett zur freien Verfügung, die andere
ist glaube ich frei zur persönlichen Nutzung....

Kannst sie dir bei Bedarf ja mal anschauen....

http://sites.google.com/site/kryvich/localizer

http://www.regulace.org/product_info...products_id=46

Gruß,
Steku


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