Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mehrsprachige Ressourcen (https://www.delphipraxis.net/52522-mehrsprachige-ressourcen.html)

Luckie 30. Aug 2005 12:31


Mehrsprachige Ressourcen
 
Ich in gerade dabei meinen Usermanager mehrsprachig zu machen. Dafür benutze ich mehrsprachige Ressourcen. Dann kann zwar nur ich Übersetzungen hinzufügen, aber das ist erstmal egal. Im Ressourcen-Editor stellt sich das jetzt folgendermaßen dar:
Code:
Menu
  101
  101 [Englisch (USA)]
  101 [Neutral (Standard)]
Die erste Menü-Ressource, bei der nichts steht, ist deutsch.

Jetzt hatte ich mir das so gedacht: Wenn das System englisch ist, soll er die englische Ressource nehmen, bei einem deutschen System die erste, ohne Angabe, und bei allen anderen Sprachen, die Neutrale. So weit der Gedanke.

Getestet habe ich das folgendermaßen:
Delphi-Quellcode:
SetThreadLocale(DWORD(Word(SORT_DEFAULT) shl 16) or DWORD(Word(LANG_ENGLISH)));
Setze ich so die Sprache auf Englisch, nimmt er auch das englische Menü. Lasse ich diese Zeile weg, nimmt der das deutsche. So weit, so gut. Mache ich aber
Delphi-Quellcode:
SetThreadLocale(DWORD(Word(SORT_DEFAULT) shl 16) or DWORD(Word(SUBLANG_FRENCH)));
setze die Sprache also auf französisch, nimmt er wieder das deutsche Menü und nicht, wie von mir beabsichtigt, das neutrale.

Bei der ersten Menü-Ressource kann ich übrigens nicht explizit Deutsch angeben. Im Eigenschaftsdialog steht zwar 'Deutsch' eingetragen, wird aber nicht angezeigt, wie bei den anderen Menü-Ressourcen.

Was muss ich also machen in der Ressource, damit das so funktioniert, wie ich mir das vorstelle? Denn dafür ist so was ja gedacht oder? Ich will möglichst eine Abfrage im Code vermeiden. Wenn denn mal mehr Sprachen hinzukommen sollten, wäre das eine Katastrophe.

Luckie 1. Sep 2005 09:38

Re: Mehrsprachige Ressourcen
 
Ich dachte, hier würde mir jemand eine Antwort zum Geburtstag schenken. :stupid:

MathiasSimmack 1. Sep 2005 09:52

Re: Mehrsprachige Ressourcen
 
Ich persönlich hätte den Weg gewählt, dass ich das Programm grundsätzlich nur Englisch schreibe. Als Grundversion. Also, englische Ressourcenstrings, englische Menüs, usw. Delphi bietet doch von Haus aus die Unterstützung mit den Sprachressourcen an. Sprich: Ressourcen-DLL mit der Endung ".de" meinetwegen für deutsche Texte, usw.
Zugegeben, bei meinem Help 2.0-Tool brauchte ich keine Dialogvorlagen und Menüs sondern nur Texte, aber das hat trotzdem wunderbar geklappt, und es war nur eine nonVCL/Konsolen-App.

Ich wüsste also keinen Grund, warum das bei deinem UserManager nicht ähnlich klappen soll. Und dann könntest du bspw. den Quellcode der deutschen Ressourcen-DLL mit englischen Texten veröffentlichen, so dass jeder Interessent eine Version für seine Sprache schreiben und dir schicken kann.

Mach einen String für den Autoren rein, der dann als Übersetzer im Info-Dialog angezeigt wird, und du hast auch den Ansporn für andere Leute, sich da zu betätigen. :stupid:

Luckie 1. Sep 2005 10:08

Re: Mehrsprachige Ressourcen
 
Das Problem ist: Die Ressource ist insgesamt schon automatisch Deutsch, da es die deutsche Version des VC ist. Kopiere ich jetzt die Menü-Ressource und gebe Deutsch als Sprache an, schreibt er das nicht in Klammern dahinter. Und ich will ja erreichen, dass es auf einbem deutschen System Deutsch ist, auf einem englischem und allen anderen Englisch. Eigentlich funktioniert das ja aschon. Nur auf nicht deutschen und nicht englischen System ist es leider Deutsch und nicht die neutrale Sprache, wie ich dachte.

Wenn ich jetzt die erste Sprachen Englisch mache, wie bekomme ich denn die Deutsche hin? Noch mal Deutsch auswählen geht ja nicht.

PS: Ich habe nur die Personal Versionen von Delphi, da ist der Spracheditor nicht dabei.

NicoDE 1. Sep 2005 10:28

Re: Mehrsprachige Ressourcen
 
Versuch's mit Xxx_INVARIANT statt Xxx_NEUTRAL.

Luckie 1. Sep 2005 10:32

Re: Mehrsprachige Ressourcen
 
Was soll für die Xxx stehen? Ich habe nur Neutral, Neutral (Standard) und Neutral (Sys.-Standard) im VC zur Auswahl.

Heffalump 5. Sep 2005 22:41

Re: Mehrsprachige Ressourcen
 
Wie wird denn das Menü überhaupt geladen, mit LoadMenu? Wenn ja dann gebe es noch den Weg mit LoadMenuIndirect. Dieser Funktion kann man eine geladene (Menu) Resource als Menü laden und verwenden, welche mit FindResourceEx, LoadResource (usw.) vorher (nach Sprache) geladen wurde. Vieleicht hilft das.

Luckie 6. Sep 2005 00:32

Re: Mehrsprachige Ressourcen
 
Ja es wird geladen, das ist nicht das Problem.

Heffalump 6. Sep 2005 00:46

Re: Mehrsprachige Ressourcen
 
Nun bei mir war das Problem ähnlich. Deswegen nutze ich die Funktion LoadMenu nicht mehr, da sie etweder nicht sprachabhänig bzw. nicht zuverlässog funktioniert. Aber man kann ja festellen welche Sprache das BS verwendet, die passende Resoure laden (nicht mit LoadMenu, sondern mit FindResourceEx (da man hier die zu verwendende Sprache bestimmen kann) und LoadResource. Danach kann man diese Resource mit Hilfe von LoadMenuIndirect als Menu deklarieren und mit SetMenu einem Fenster zuordnen. Vieleicht verstehe ich aber auch Dein Problem nicht.

Luckie 6. Sep 2005 00:53

Re: Mehrsprachige Ressourcen
 
Es ist nicht nur das Menü. Es gibt auch noch String Ressourcen usw. Und deswgen wollte ich um eine Abfrage drumrumkommen, weil das dann wieder sehr aufwändig wird.

Das Problem ist, dass er wenn die Sprache weder Deutsch noch Englisch nicht die neutrale Ressource nimmt, sondern die Hauptsprache und das ist deutsch. Jetzt denke ich mir aber es gibt mehr Menschen, die mit Englisch was anfängen könnten als mit Deutsch. Die neutrale Ressource wäre dan nauch Englisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.
Seite 1 von 2  1 2      

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