Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Vcl.Dialogs.InputQuery Button Sprache wechseln (https://www.delphipraxis.net/211715-vcl-dialogs-inputquery-button-sprache-wechseln.html)

MatthiasFehr 25. Okt 2022 22:21

Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Leider ein neues Problem.
Meine Software ist in den Versioninformationen ist English (Vereinigte Staaten) konfiguriert.
Trotzdem ist bei Vcl.Dialogs.InputQuery der Button auf einem Englischen Computer in Deutsch beschriftet mit "Abbrechen".
Was ist der Lösungsansatz?

himitsu 25. Okt 2022 22:28

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Die "Sprache" in den Versions-Infos ist grundsätzlich erstmal nur für diese VersionsInfo-Ressource.
Und eventuell noch für die StringResourcen, aber nur wie die Resourcen markiert sind ... welche Texte in die RTL/VCL-Resourcen kompiliert/gelinkt werden, das ist was Anderes.


Weil dein Programm deutsch kompiliert wurde und DU "nur" die deutsche Sprache (RTL/VCL) mitgegeben hast.

C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\BDSSetLang.exe -> Bibliotheks Sprache

Alternativ kann man zusätzliche Sprach-Resourcen mitgeben.
Diese werden dann anhand der Windows-Sprache ausgewählt.

z.B. wenn man mit Laufzeitpackages kompiliert
vcl280.bpl (englisch drin)
vcl280.de (zusätzliches deutsch)
vcl280.fr
vcl280.ja

bzw. siehe Tools > Translations-Manager


Oder ein fremdes Translation-Tool benutzen, z.B. dxGetText hookt die String-Resourcen und gibt dann seine Übersetzung raus.



Input-Query ist immer eine VCL-Form,
aber z.B. ShowMessage ist entweder ein WinAPI-TaskDialog, oder wenn nicht möglich (uraltes Windows) oder Designs abgeschaltet (TaskDialogAPI fehlt/deaktiviert), ersatzweise eine VCL-Form.

Bei den VCL-Forms ist das somit ein TButton und man könnte sich da selber reinhacken.



Theoretisch kann man Resourcen in unterschiedlichen Sprachen einkompilieren, also z.B. auch mehrere Versionsinfos mit Texten in anderen Sprachen.
Ich weiß aber nicht wie der Sprachloader von Delphi damit umgeht, oder ob das immer in getrennten DLLs liegen muß.

himitsu 26. Okt 2022 00:29

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
PS: aktuelles Thema https://www.delphipraxis.net/211674-...-toolkits.html


Zitat:

Zitat von MatthiasFehr
Das Einbinden von anderen Sprachen in Delphi 11.2 ist mir neu, obwohl ich seit 1983 programmieren :).

Frage: wie kann ich im System das vcl280.bpl einbinden / aktivieren?

Im Prinzip geht das schon seit vielen Jahrzehnten so,
also mit Packages kompilieren und auch Sprachen einbinden.

Delphi selber gibt es aber nur in 4 Sprachen ... Englisch, Deutsch, Französisch und Italienisch.
Ich hatte mich schon immer gefragt, warum nicht auch auf Russisch, Indisch oder Chinesisch, vorallem wo Delphi dort so verbreitet sein soll, bzw. viele Programmierer und Firmen von dort sind. (OK, aktuell will eh keiner mehr das für "Die" übersetzen, falls Delphi (US-Hochtechnologie) nicht sowieso auf der Embargoliste steht)


Vor allem für eigene Ressourcen siehe
https://docwiki.embarcadero.com/RADS...anager_-_Index


Wie gesagt, über BDSSetLang stellt man ein, was für Ressourcen direkt einkompiliert werden sollen. (bzw. das wurde auch einmal beim Installieren ausgewählt)

Wenn andere Sprachen (außer Englisch) installiert wurden, dann gibt es dort überall mehrere Unterverzeichnisse wie "de" (die vorkompilierten DCU/DFM und BPL sind immer englisch, abgesehn von diesen Sprach-Unterverzeichnissen)
C:\Program Files (x86)\Embarcadero\Studio\22.0\source\
C:\Program Files (x86)\Embarcadero\Studio\22.0\lib\

siehe Tools > Optionen > Sprace > Delphi > Bibliothek - Übersetzt
im Vergleich zu ...> Delphi > Bibliothek
$(LANGDIR) entspricht der dort eingestellten Sprache

Und auch für eigene Projekte (Projektoptionen) kann man in den Suchpfaden sowas benutzen
z.B. da in die Suchpfade Dieses vor einem sprachlosen Verzeichnis
...;irgendwas\$(LANGDIR);irgendwas;...




Oder eben einfach mit Laufzeit-Packages kompilieren (Codes und Ressourcen der VCL nicht in die eigene EXE einkompilieren)
Projektoptionen > Packages > Laufzeitpackages
und dort alle genutzten Packages (oder einfach alle Registrierten) angeben
rtl;vcl;...

Dann natürlich nicht vergessen diese Packages auch mitzugeben (ins Verzeichnis der EXE legen)
C:\Program Files (x86)\Embarcadero\Studio\22.0\Redist\
Hier für Win32 entsprechend rtl280.bpl vcl280.bpl und die zugehörgen .de aus dem Win32-Ordner
Ja, alle Dateien in diesem Verzeichnis können und dürfen weitergegeben werden. (zusammen mit einem Kompilat aus Delphi)
Und um auszuprobieren, ob man was vergessen hat, z.B. https://www.delphipraxis.net/207151-...s-sandbox.html (irgendein ein sauberes Windows, wo kein Delphi installiert ist)

MatthiasFehr 26. Okt 2022 00:43

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Vielen Dank für die schnelle und umfassende Antwort - sehr hilfreich!

Ich habe parallel noch einen Lösungsansatz gefunden, einen eigenen Input erzeugen:
https://www.swissdelphicenter.ch/en/...ode.php?id=709

KodeZwerg 26. Okt 2022 00:57

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Alternativ kannst Du auch meine InputQueryEx Methode nutzen.
Geschrieben für CodeTyphon (FreePascal), mit ein paar Modifikationen schnurrt das auch unter Delphi.
Bietet viele optionale features :angel: (wie zum Beispiel "unendlich" viele Abfragen innerhalb einer Query)

himitsu 26. Okt 2022 01:41

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Datei > Neu > Weitere... > Delphi-Projekte > Einzelne Dateien > ...
z.B.
Delphi-Quellcode:
Dialogfeld "Passwort"

TurboMagic 27. Okt 2022 21:48

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Wenn die ganze Anwendung immer komplett Englisch sein soll, kann man im Delphi Installer ja Englisch installieren und mit BdsSetLang aus dem bin Ordner wechseln.

Rolf Frei 28. Okt 2022 14:28

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Das Ganze geht noch viel einfacher:

Unter Tools->Options->IDE->Environment Variables->User System Override eine neue Variable "LANGDIR" definieren un da den Wert leer lassen. So werden alle englischen Resourcen in das Programm kompiliert. Will man wieder deutsche Texte, den LANGDIR Wert auf "DE" setzen. Diese Vorgabe kann man auch mit dem bds\bin\BDSSetLang.exe Tool umstellen. Das mit der Environment Variable geht aber meiner Meinung nach einfacher.

himitsu 28. Okt 2022 15:50

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Nja, ich hatte mir BDSSetLang jetzt mal in Tools eingerichtet, um es darüber schnell öffnen zu können.

Auch wenn es dieses Environment ändert (in der Registry), wird das nicht sofort zur Laufzeit gehen.
Egal, ich muß eh die IDE neu starten, damit es die IDE aktualisiert.

Mal sehn, vielleicht kann Delphi ja irgendwann auch mal besser mit Sprachen umgehn.
Für die IDE mag es OK sein, dass nicht so viel unterstützt wird, aber für RTL/VCL sollte es schon mehr Sprachen geben. (z.B. Sächsisch und Österreichisch)
und https://quality.embarcadero.com/browse/RSP-39676

TurboMagic 28. Okt 2022 19:31

AW: Vcl.Dialogs.InputQuery Button Sprache wechseln
 
Ähm, EMBT wollte mal die mitgelieferte ITE ganz abschaffen... ;-)


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

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