Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows User Sprache ändern (https://www.delphipraxis.net/159438-windows-user-sprache-aendern.html)

yörsch 28. Mär 2011 12:08

Windows User Sprache ändern
 
Hallo Zusammen,

ich schreibe an userem Setup herrum. Es soll die User-Sprache unter Windows prüfen und wenn nicht ID $407 - Deutsch(Deutschland) eine
Meldung bringen "Bitte die Sprache Deutsch ist einzustellen...."

Mit :
GetLocaleInfoA guck ich nach ob der User in Windows OK ist und mit
ExecAndWait('rundll32.exe shell32.dll,Control_RunDLL intl.cpl', SW_SHOWNORMAL);
kann ich dem Anwender die den Windows Dialog unter die Nase halten. soweit so gut!

Gibt es eine möglichkeit die Einstellungen die im Dialog intl.cpl gemacht werden in Delphi zusetzen?

SetLocaleInfoW(1031, LOCALE_IDEFAULTLANGUAGE , '') führt zu fehlern?!

Mit setLocaleInfo schaffe ich es die einzelen Werte zu FormatSettings zusetzten und verschlimmbessere die aktuelle Sprache
ich will aber die Windows User Sprache verändern!

Danke im Voraus für Infos und Anregungen

Gruß Yörsch

rollstuhlfahrer 28. Mär 2011 12:14

AW: Windows User Sprache ändern
 
Du müsstest dir dann das Fenster suchen und darin dann die richtige Combobox (Fenster-Handle) und dann auf Gut Glück den richtigen Wert einstellen.

ADD: Der Ansatz mit SetLocaleInfo sieht mir aber viel-versprechender aus. Was kommt denn für ein Fehler?

Bernhard

yörsch 28. Mär 2011 12:45

AW: Windows User Sprache ändern
 
Moin Bernhard,

also bei mir wird 1004 (ERROR_INVALID_FLAGS) als FehlerCode zurück gegeben?

ich arbeite mit Windows 7 und Delphi XE

Poste mal dein Test... Vieleich sehe ich, was bei mir Falsch läuft...

Gruß

Jörg

Luckie 28. Mär 2011 13:12

AW: Windows User Sprache ändern
 
Zitat:

Zitat von yörsch (Beitrag 1091510)
Hallo Zusammen,

ich schreibe an userem Setup herrum. Es soll die User-Sprache unter Windows prüfen und wenn nicht ID $407 - Deutsch(Deutschland) eine
Meldung bringen "Bitte die Sprache Deutsch ist einzustellen...."

Und wenn ich das nicht will? Warum braucht dein Programm ein deutsches Windows?

yörsch 28. Mär 2011 13:34

AW: Windows User Sprache ändern
 
Das ist Software nur für den Deutschland!(Steuern und Finanzen)
Da detzt das BMF (BundesMinister für Finanzen) schon mal seltsame Sachen voraus...

Einige Unsere Kunden hatten sich einen neuen Rechner gegauft und alles sah sehr seltsam aus...
Unser Support hat dann heraus geknobelt daß wenn nicht Deutsch (Deutschland) eingestellt ist,
Anzeigen und Berechnungsformulare sehr komisch aussahen...

Also muß Deutsch (Deutschland) eingestellt sein!
von unseren über 5000 Kunden haben über 98% alles sauber eingestellt...

s.h.a.r.k 28. Mär 2011 13:37

AW: Windows User Sprache ändern
 
Da hat Luckie definitiv recht! Würde ein Software so eine Meldung erscheinen lassen, dann würde ich mir echt drei Mal überlegen, ob ich diese installieren will. Mir ist schon klar, dass das keine Lösung für dein Problem ist, aber ich glaube, dass hier eher ein Problem im Konzept vorliegt. Sinnvoller wäre es da -- wenn auch aufwendiger -- die Anwendung multilingual zu gestalten!

Zudem könntest du sehr leicht ein Problem mit den Rechten bekommen! Denn wenn ihr größere Kunden habt, dann werden die definitiv eine Dömäne samt Rechteverwaltung einsetzen. Ich weiß nicht, ob jeder Admin die Meldung dann verstehen würde und dann auch die Sprache entsprechend ändert ;)

Luckie 28. Mär 2011 13:45

AW: Windows User Sprache ändern
 
In wie fern sahen die Formulare komisch aus?

yörsch 28. Mär 2011 14:14

AW: Windows User Sprache ändern
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1091539)
dass hier eher ein Problem im Konzept vorliegt.

Ja da Stimme ich dir Voll und ganz zu, das wird Teil unseres ReDesigns in diesem Jahr sein,
das mit dem setzen der Sprache ist nur eine erste sehr schnelle Reaktion um dem Support die Arbeit zu erleichtern.


Zitat:

Zitat von Luckie (Beitrag 1091544)
In wie fern sahen die Formulare komisch aus?

Die Kunden hatten für das ausgeschriebene Datum 28.Februar 2011 eben February 28/2011 stehn das führte zum zeilen umbruch und alles wurde verschoben...

Aber das alles klärt immer noch nicht meine Frage...

---
Und wir arbeiten mit einigen externen Komponenten zusammen und diese fragen halt die System-Einstellungen für sich ab...

Luckie 28. Mär 2011 14:17

AW: Windows User Sprache ändern
 
Du kannst selber vorgeben, wie das Datum formatiert werden soll. Das sollte nur eine kleine Änderung bei der Ausgabe sein.

yörsch 28. Mär 2011 14:25

AW: Windows User Sprache ändern
 
Zitat:

Zitat von Luckie (Beitrag 1091559)
Du kannst selber vorgeben, wie das Datum formatiert werden soll. Das sollte nur eine kleine Änderung bei der Ausgabe sein.

Alles schön und gut Nur ich rede von Komponenten die ich ohne weiteres nicht beeinflussen kann

- ELSTER versende Datum - das erzeugt das Modul selbst => 31.12.2010 ist halt nicht 12.31.2010!

Unsere Anzeigen kriegen wir bis zum nächsten release in den Griff...

yörsch 28. Mär 2011 16:46

AW: Windows User Sprache ändern
 
SetLocaleInfoW(1031, LOCALE_IDEFAULTLANGUAGE , '') führt bei mir zu fehlern:roll:
Fehler Code 1004

Hat jemand noch ne' Idee oder ein Beispiel mit dem die Windows User Sprache unter
"Region und Sprache" in Delphi verändert werden kann?

uligerhardt 28. Mär 2011 16:52

AW: Windows User Sprache ändern
 
Zitat:

Zitat von yörsch (Beitrag 1091558)
Die Kunden hatten für das ausgeschriebene Datum 28.Februar 2011 eben February 28/2011 stehn das führte zum zeilen umbruch und alles wurde verschoben...

Ich fürchte, nur die eingestellte Sprache abzufragen, wird nicht reichen. Der Benutzer kann ja Deutsch als Sprache einstellen, aber trotzdem noch MM.TT.JJJJ (oder so) als Datum wählen.

s.h.a.r.k 28. Mär 2011 16:56

AW: Windows User Sprache ändern
 
Hab mal schnell im MSDN nachgeschaut und folgendes zum ersten Parameter gefunden:
Zitat:

Zitat von http://msdn.microsoft.com/en-us/library/dd374049%28v=vs.85%29.aspx
For the ANSI version of the function, the locale identifier of the locale with the code page used when interpreting the lpLCData information. For the Unicode version, this parameter is ignored.

Das hier liefert der Fehlercode zu Tage:
Zitat:

Zitat von MSDN
ERROR_INVALID_FLAGS 1004 (0x3EC): Invalid flags.

Ein Beispiel für den Aufruf der Methode habe ich nicht gefunden, aber du solltest dich wohl um die Parameter kümmern, da damit irgendwas nicht passt.

-- EDIT: Was passiert denn wenn du SetLocaleInfoA ausprobierst?

shmia 28. Mär 2011 17:03

AW: Windows User Sprache ändern
 
Wenn dein Problem doch das Datumsformat ist, dann hat das doch nur indirekt mit der Sprache zu tun, oder?
Ich würde das Datumsformat mit GetLocaleInfo() abfragen und wenn es dir spanisch (also "nicht deutsch") vorkommt, den Benutzer darauf hinweisen.
Ich würde die Anwendung nicht eigenmächtig über SetLocaleInfo() etwas ändern lassen.
Dann vielleicht noch eine PDF oder Hilfedatei beilegen, die dem DAU zeigt, was er tun muss.

Man kann GetLocaleStr() verwenden; das ist einfacher:
Delphi-Quellcode:
var
  kurzdatumformat : string;
begin
  kurzdatumformat := GetLocaleStr(DefaultLCID, LOCALE_SSHORTDATE, '');
  if kurzdatumformat <> DEUTSCHES_FORMAT then
     MeckerMecker;

s.h.a.r.k 28. Mär 2011 17:04

AW: Windows User Sprache ändern
 
Zitat:

Zitat von shmia (Beitrag 1091589)
[...] die dem DAU zeigt[...]

[OT] Gibts für den Begriff DAU keinen Hint? [/OT]

yörsch 29. Mär 2011 08:27

AW: Windows User Sprache ändern
 
Zitat:

Sorry, changing this is not supported, actually, by anything except the CPL applet. Quelle
Ist zwar ein VB-Beispiel solte aber auch für Delphi gelten
Und warum :
Nach meinen Suchen gibt es z.Z. keinen Parameter in SystemParametersInfo Quelle

Danke für Eure Unterstützung:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.

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-2025 by Thomas Breitkreuz