![]() |
Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Bekanntlich übersetzt der Explorer die englischen Bezeichnungen für die special folder.
"C:\Users\Anwendername\Pictures\" wird als "C:\Users\Anwendername\Eigene Bilder\" angezeigt. Gibt es eine Funktion, die mir die lokalisierten Namen für solche Verzeichnisse liefert? |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Zitat:
![]() ;) |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Vielen Dank, Sir Rufo.
Ich hatte gesucht, aber nicht die richtigen Suchbegriffe gefunden. Hast du sowas im Kopf? Der Link hat mir sehr weitergeholfen, aber bei ShGetFileInfo() bin ich natürlich auch auf die beiden dort ungelösten Probleme gestoßen, nämlich dass die Funktion nicht den vollen Pfad, sondern nur das letzte Verzeichnis zurückgibt, und dass es keinen Weg zurück gibt (deutsch -> englisch). Das erste Problem habe ich gelöst, indem ich jedes einzelne Teilverzeichnis des Pfades durch die Funktion jage:
Delphi-Quellcode:
Da wird unseren Experten noch einiges an Verbesserungspotenzial einfallen :stupid:, aber es funktioniert und vielleicht hilft es ja jemandem.
uses ShellApi;
function ErmittleDtVerznamen(Verzname:string):string; var FileInfo: SHFILEINFO; p1,p2:integer; Verz,Teilverz:string; const Tz = '\'; begin Result := ''; If DirectoryExists(Verzname) then begin Verz := IncludeTrailingBackSlash(Verzname); Result := Copy(Verzname,1,3); p1 := 3; p2 := PosEx(Tz,Verz,p1 + 1); While p2 > 0 do begin Teilverz := IncludeTrailingBackSlash(Copy(Verz,1,p2 - 1)); If SHGetFileInfo(PChar(Teilverz), 0, FileInfo,SizeOf(FileInfo),SHGFI_DISPLAYNAME) <> 0 then Result := Result + IncludeTrailingBackSlash(FileInfo.szDisplayName) else exit; p1 := p2 + 1; p2 := PosEx(Tz,Verz,p1 + 1); end; end; end; Das zweite Problem habe ich nur proprietär gelöst, indem ich eine Liste aller eingedeutschten Namen anlege, was unter meinen Gegebenheiten lückenlos möglich ist. |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Nein im Kopf habe ich das nicht, aber es hilft die Suchbegriffe in englisch bei Tante Google einzutippen ;)
|
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Vielleicht noch ein Tipp für die, die hier mal landen. Die obige Funktion schlägt manchmal scheinbar (ja wirklich: scheinbar (!)) fehl und liefert zum Beispiel "pictures" statt "Eigene Bilder".
Ein Blick in den Dateimanager zeigt dann aber, dass dort auch die englische Bezeichnung angezeigt wird. Es kann ohne Weiteres zu einem wilden Durcheinander von deutschen und englischen Bezeichnungen kommen. Grund hierfür ist die desktop.ini, die für die deutschen Bezeichnungen in jedem Verzeichnis vorhanden sein und (im Falle von "Pictures"!) folgenden Inhalt haben muss:
Delphi-Quellcode:
Der entscheidende Punkt ist "LocalizedResourceName=@%SystemRoot%\system32\shel l32.dll" mit der richtigen Nummer.
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779 InfoTip=@%SystemRoot%\system32\shell32.dll,-12688 IconResource=%SystemRoot%\system32\imageres.dll,-113 IconFile=%SystemRoot%\system32\shell32.dll IconIndex=-236 ABER - und jetzt kommt die ganz große Fußangel - diese Desktop.ini funktioniert nur, wenn das entsprechende Verzeichnis das Attribut "Schreibgeschützt" hat. Da muss man erstmal drauf kommen. Gibt man bei korrekter Desktop.ini in einer Konsole den Befehl "attrib +r C:\Users\Anwendername\Pictures" ein, so kann man zusehen, wie im Dateimanager die Anzeige von "Pictures" plötzlich auf "Eigene Dateien" umspringt. Eine Reihe von Desktop.ini-Dateiinhalten bei den verschiedenen Verzeichnissen findet man dankenswerter Weise ![]() |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Schreibschutz:
Wobei das Absicht ist, denn so braucht der Explorer nur nach der Desktop.ini zu suchen, wenn das Verzeichnis entsprechend markiert ist. |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Absicht ist das sicher, aber ob das eine der glücklicheren Lösungen von Microsoft ist, wage ich doch zu bezweifeln.
Ich kanns ja leider nicht mehr editieren, aber die Anzeige springt im Falle von "Pictures" natürlich auf "Eigene Bilder" um. |
AW: Deutsche Übersetzung für CSIDL_MYDOCUMENTS und Konsorten?
Damals, als das eingeführt erfunden wurde, waren Computer noch nicht so leistungsstark (RAM, CPU usw.) und da war das schon eine gute Idee.
Und selbst jetzt hat das immernoch vorteile, auch wenn die Verzeichnisstruktur immer mehr aus den Explorerfenstern verdrengt wird. (b.z. wo sich sie nicht mehr ordentlich nutzen lässt, seitdem sie sich "standardmäßig" nicht mehr synchronisiert) Unglücklich ist nur, daß man über den Explorer solche "System"-Properties nicht ändern kann (System, Schreibschutz bei Verzeichnissen), außer man verwendet die Experten dafür. (z.B. Verzeichnis-Eigenschaften > Anpassen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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 by Thomas Breitkreuz