Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] App oder Powershell in anderer Sprache starten?

Miine

gehört zum Inventar
Problem: in der Sprachauswahl ist Deutsch im Konto aktiv, US-Englisch installiert.

Entsprechend sind alle Ausgaben in der Powershell etc. auf Deutsch. Was dazu fuehrt das eine GUI-App die Tools wie netsh aufruft und nach englischen Keywords Ausschau haelt nicht funktioniert.

Gibt es eine Moeglichkeit von Windows aus die Sprache einer App festzulegen?

Ich habe verschiedene Sachen versucht, z.B. via powershell script funktion

[System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"

aber das hat keine Auswirkungen.

Was mich aber auch nicht wundert - denn z.B. in C# kann man via Process.StartInfo keine Culture festlegen, eine Environment-Variable ala Unix gibts auch nicht...

Das einzige was ich noch nicht ausprobiert habe ist so ein voellig abgedrehter DLL-"Hack".

Ich frage mich wie Windows-Programme oder Apps Windows-Tools benutzen und diese weltweit funktionieren sollen wenn man jede moegliche Sprache unterstuetzen muss anstatt "intern" in English die Tool-Ausgaben zu verarbeiten…
 
Anzeige
Wenn der Programmierer darüber nicht nachgedacht hat, dann funktioniert das gar nicht. ;)

Normalerweise lässt sich heute fast alles auch direkt über Powershell lösen, ohne dass man externe Tools wie netsh aufrufen und deren Textausgabe parsen muss.

Ansonsten lässt sich die Systemsprache aber auch nicht für eine einzelne Shell umstellen. Wenn du so dämlich programmierte Software verwenden musst, dann wirst du die Systemsprache auf die Sprache ändern müssen, die der Programmierer vorgesehen hat.
 
Das habe ich befuerchtet. Allerdings ist hier nicht der Programmierer "daemlich" sondern das Konzept jenseits der Powershell in Windows. Wie schon erwaehnt gibt es in Unix Environment-Variablen und in Windows haette man die Process API auch so erweitern koennen das man eine Liste der bevorzugten Sprachen uebergibt. Da waere dann in diesem Fall nur English (en-US) drin… .

BTW: man KANN in Windows die Sprache eines Prozesses via Process API aendern. Allerdings geschieht dies auf THREAD Basis - d.h. das Tool laeuft dann schon. Und bei einfachen Tools geht das nicht wirklich zuverlaessig weil dessen Laufzeit so kurz sein kann das die aufrufende App nie auf dessen Threads zugreifen kann...

Nun ja, wenn ich zuviel Zeit habe werde ich mal schauen was dieser lustige DLL Hack macht - eigentlich stellt der ein Kontextmenu im Explorer zur Verfuegung - und wie man ihn in eigene Applikationen (das Teil was netsh benutzt liegt im Sourcecode vor) integrieren kann... . Bis dahin werde ich wohl entweder die Funktionalitaet neu schreiben (es geht darum die Reihenfolge der WLANs festlegen zu koennen) oder die Suchstrings abaendern…
 
Wenn man heute ein Tool schreibt, welches seine Informationen auf diese Art und Weise aus dem System ausliest, dann muss man das schon dem Entwickler ankreiden. Dass sowas wie netsh Altlasten aus historischen Zeiten sind, ist ja nun kein Geheimnis.
Gibt noch eine Menge mehr Befehle, die z.B. sogar Parameter in der jeweils lokalen Sprache erwarten. Das ist gruselig, was man da früher gebaut hat. Aber an sich ist das halt alles Altlast und wurde nach XP schrittweise aufs Altenteil geschoben.

Die Funktionalität von netsh ist mittlerweile an sich direkt über PS erreichbar. Da braucht man keinen Umweg mehr, wie Ausgaben von netsh zu parsen. An sich sollte man in eigenen Applikationen aber doch sowieso über die entsprechenden APIs gehen und nicht Umwege über Scriptsprachen machen. Oder ist das eigene Tool ebenfalls PS-basierend?
 
irgendwie verstehe ich das Problem nicht.

Die "Keywords" sind doch im deutschen und im englischen Powershell absolut gleich. Hier als Beispiel netsh:

Powershell_DeEn.png

Lediglich der Hilfetext ist unterschiedlich. Und der Hilfetext kann sich doch jederzeit mal ändern, wenn z.B. eine bessere Übersetzung gefunden wird oder so. Das wertet doch kein Programm aus.
 
Ja, bei netsh sind die Befehle gleich. Aber das Tool von Miine scheint die Textausgabe von netsh auszuwerten. Und da steht natürlich in der deutschen Version etwas anderes als bei anderen Sprachen. Deswegen macht man sowas ja auch nicht. ;)
 
Wie IngoBingo sagte, netsh ist komplett über die Powershell ersetzbar.
Ansonsten Sprache für eine App W10 einstellen:
Einstellungen-Zeit und Sprache -> Sprache hinzufügen.Windows neu gestartet werden.
In der alten Systemsteuerung den Bereich «Zeit», «Sprache und Region» öffnen und dort die Rubrik «Sprache» aufrufen. Nachdem links auf «Erweiterte Einstellungen» geklickt wurde, den Haken bei «Zulassen, dass für jedes App-Fenster eine andere Eingabemethode festgelegt werden kann»
 
@wori,

gilt Deine Beschreibung auch für das neueste Windows 1803 Build 17137.320?
Ich finde da weder "Zeit" noch "Sprache und Region" und unter "Region" sind diese Einstellungen auch nicht zu finden.

Systemsteuerung_alt.png

In Windows sind die Sprachen Deutsch und Englisch installiert.
 
Was wori beschreibt, bezieht sich auch nur auf die Eingabe. Um die geht es aber gar nicht. Es geht um die Textausgabe. Das ist also sowieso nicht die Lösung, egal ob es so zu finden ist oder nicht.
 
Ich markiere den Thread mal als "geloest" - es geht halt nicht wirklich mit Windows "Bordmitteln"...
 
Anzeige
Oben