Aktuelle Zeit: 31.05.2020 00:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: System-Dialogtext in Englisch
BeitragVerfasst: 15.12.2019 18:05 
Offline

Registriert: 15.12.2019 16:59
Hallo zusammen,

ich habe mit SaveFileRequester() einen Dialog erzeugt. Leider sind die Buttons und der System-Dialogtext (beispielsweise, wenn eine Datei schon existiert) in Englisch. Die Systemsprache ist aber Deutsch. Soweit ich verstanden habe, sollte die System-Dialoge in der User-Sprache sein, die im OS eingestellt sind. Das ist zumindest beim SaveFileRequester() nicht der Fall. Habe ich etwas übersehen oder kann man die Sprache der Systemdialoge irgendwo anpassen?

Beim Betriebsystem handelt es sich um Mac OSX (Catalina). Wenn ich versuche, die Systemsprache für PB in den Systemeinstellungen von OSX anzupassen wird mir angezeigt, dass PB nur die Systemsprache Englisch unterstütz. Sieht so aus, als ob es ein Problem zwischen dem OS und PB ist. Das würde bedeuten, dass der Systemdialog bei einer "deutschen" Anwendung dennoch in Englisch ist. Das wäre dann nicht besonders benutzerfreundlich.

Hat jemand noch ein Idee?

Existiert das Problem auch bei Windows oder Linux?

Grüße
Istvan42


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 15.12.2019 19:21 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Istvan42,

wie das Ändern der Sprache beim Debuggen/ Ausführen mit der IDE geht weis ich nicht.

Aber du kannst die Sprache im Nachhinein ändern.

Anleitung:

1. Erstelle deine Anwendung (Compiler -> Executable erstellen)
2. Dein erstelltes Programm mit der rechten Maustaste anklicken
-> Ein Kontextmenü erscheint.
-> Dort wählst du: "Paketinhalt zeigen"
-> Danach öffnest du den Ordner "Contents"
-> Darin befindet sich die Datei: "Info.plist"
-> Diese Datei musst du jetzt editieren.
In diesem Feld: "Localization native development region" musst du jetzt "Germany" auswählen.
3. Alles Speichern
4. Dein Programm öffnen
5. Freuen das deine Dateidialoge jetzt in Deutsch angezeigt werden.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 15.12.2019 20:56 
Offline

Registriert: 15.12.2019 16:59
Hallo ccode_new,

vielen Dank für die schnelle Antwort. Ich werde es morgen mal testen. Hört sich aber für mich nach einer guten Lösung an. Wenn es im Debugger bzw. in der IDE auf Englisch ist, dann kann ich damit leben.

Gruß
Istvan42

_________________
--
Mac OS Catalina, PureBasic 5.71 LTS (MacOS X - x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 27.12.2019 19:01 
Offline

Registriert: 15.12.2019 16:59
Hallo,

ich habe den empfohlenen Kniff ausprobiert. Bei den Datei-Dialogen funktioniert es. Bei einem MessageRequeseter leider nicht.

Code:
MessageRequester("Warnung", "Wollen Sie das Programm wirklich beenden?",
                   #PB_MessageRequester_Warning | #PB_MessageRequester_YesNoCancel)


Die Buttons sind dann in Englisch (yes, no, Cancel).

Gibt es da noch einen Trick oder muss ich mir ein eigenes Dialog-Fenster bauen?

Grüße
Istvan42

_________________
--
Mac OS Catalina, PureBasic 5.71 LTS (MacOS X - x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 27.12.2019 22:40 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hier:

Code:
EnableExplicit

ImportC ""
  GetIconRef(vRefNum.w, creator.i, iconType.i, *theIconRef)
  ReleaseIconRef(theIconRef.i) ;Deprecated
EndImport

Procedure.i German_MessageRequester(title.s, info.s, flags.i = #PB_MessageRequester_Ok)
  Protected.i alert, nimage, icon, picon
  Protected.i rtype
 
  alert = CocoaMessage(0, CocoaMessage(0, 0, "NSAlert new"), "autorelease")
  CocoaMessage(0, alert, "setMessageText:$", @title)
  CocoaMessage(0, alert, "setInformativeText:$", @info)
 
  Select flags
    Case 0, 4, 8, 16
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Ok")
    Case 1, 5, 9, 17
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Ja")
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Nein")
    Case 2, 6, 10, 18
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Ja")
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Nein")
      CocoaMessage(0, Alert, "addButtonWithTitle:$", @"Abbrechen")
  EndSelect
 
  Select flags
    Case 4, 5, 6
      icon = $6E6F7465
    Case 8, 9, 10
      icon = $73746F70
    Case 16, 17, 18
      icon = $63617574
    Default
      icon = $4150504C
  EndSelect
 
  If GetIconRef(-32768, $6D616373, icon, @picon) = 0
    CocoaMessage(@nimage, 0, "NSImage alloc")
    CocoaMessage(0, nimage, "initWithIconRef:", picon)
    CocoaMessage(0, alert, "setIcon:@", @nimage)
    rtype = CocoaMessage(0, alert, "runModal")
    CocoaMessage(0, nimage, "release")
    ReleaseIconRef(picon)
  EndIf
 
  If rtype = 1000 And (flags = 0 Or flags = 4 Or flags = 8 Or flags = 16)
    ProcedureReturn 0
  ElseIf rtype = 1000
    ProcedureReturn #PB_MessageRequester_Yes
  ElseIf rtype = 1001
    ProcedureReturn #PB_MessageRequester_No
  ElseIf rtype = 1002
    ProcedureReturn #PB_MessageRequester_Cancel
  ElseIf rtype = 0
    ProcedureReturn -1
  EndIf
 
EndProcedure

Debug German_MessageRequester("Meldung", "Dies ist ein Infotext", #PB_MessageRequester_Info|#PB_MessageRequester_YesNo)



Viel Spaß beim Ausprobieren.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 30.12.2019 14:13 
Offline

Registriert: 15.12.2019 16:59
Hallo ccode_new,


vielen Dank für Deinen Workaround. Funktioniert so weit. Da ich gerne plattformunabhängig programmieren möchte, wäre das nicht meine erste Option. Natürlich kann ich die Lösung mit entsprechenden Compiler-Anweisungen auch so verwenden. Leider habe ich vom OS X Framework keine Ahnung. Grundsätzlich verstehe ich, was Du da machst, aber im Detail tappe ich im Halbdunkeln.

Ich habe mit Hilfe von Google auch festgestellt, dass z. B. der Aufruf ReleaseIconRef() veraltet ist und nicht mehr supportet ist. Man soll stattdessen NSWorkspace und NSImage verwenden.

Bei Bedarf werde ich versuchen einen MessageRequester mit PureBasic ohne API-Aufrufe ans OS erstellen.

Gruß
Istvan42

_________________
--
Mac OS Catalina, PureBasic 5.71 LTS (MacOS X - x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 30.12.2019 14:50 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Dafür gibt es Compiler Direktiven...
Code:
CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
   
  CompilerCase #PB_OS_Linux
   
  CompilerCase #PB_OS_MacOS
    ; Code her for macOS
   
    ImportC ""
      GetIconRef(vRefNum.w, creator.i, iconType.i, *theIconRef)
      ReleaseIconRef(theIconRef.i) ;Deprecated
    EndImport
   
    Procedure.i German_MessageRequester(title.s, info.s, flags.i = #PB_MessageRequester_Ok)
      ...
     
     
    Macro MessageRequester(Title, Text, Flags = #PB_MessageRequester_Ok)
      German_MessageRequester(Title, Text, Flags)
    EndMacro
   
CompilerEndSelect

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 30.12.2019 15:33 
Offline

Registriert: 15.12.2019 16:59
mk-soft hat geschrieben:
Dafür gibt es Compiler Direktiven...


Zitat:
Natürlich kann ich die Lösung mit entsprechenden Compiler-Anweisungen auch so verwenden.


Sorry, ist mir bekannt. Habe ich mich wohl nicht ganz klar ausgedrückt.

Bevor ich aber von einer "reinen" PureBasic Lösung abweiche, möchte ich gerne andere Möglichkeiten nutzen (sofern vorhanden), zumal ich mich nicht mit den OS APIs auskenne.

Gruß
Istvan42

_________________
--
Mac OS Catalina, PureBasic 5.71 LTS (MacOS X - x64)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: System-Dialogtext in Englisch
BeitragVerfasst: 30.12.2019 16:50 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Istvan42 hat geschrieben:
Bevor ich aber von einer "reinen" PureBasic Lösung abweiche, möchte ich gerne andere Möglichkeiten nutzen (sofern vorhanden), zumal ich mich nicht mit den OS APIs auskenne.


Es macht aber durchaus Sinn sich mit den entsprechenden Betriebssystem-Anwendungs-Programmier-Schnittstellen zu befassen.

PureBasic bietet natürlich schon ein schönes kleines Framework, aber selbst dieses hat Lücken und Ausnahmen auf den Drei unterstützen Plattformen.

Oftmals benötigt man eben dann doch Funktionen die das PureBasic-"Framework" nicht bieten kann.

Da ist man dann mit Programmiersprachen die auf das Java- oder .Net - Framework setzen zum Beispiel schon besser bedient.
Dort gibt es eine größere Vielfalt.

Umso mehr ist dann die Community um PureBasic gefragt, oder man bürdet alles wenigen Personen (Fred, Timo, etc.) auf.

Aber dafür ist PureBasic echt gut geworden.

Zu MacOS:
Die Dokumentation ist eigentlich sehr gut. (Alles so schöne tolle Frameworks und so Kompakt (weniger zerstreut))
Außerdem ist auch der PureBasic - Befehl "CocoaMessage" echt supi.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye