.DriveType von DriveInfo liefert nur englische Namen - wie lokalisieren?

  • C#

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von diylab.

    .DriveType von DriveInfo liefert nur englische Namen - wie lokalisieren?

    Moin,
    ein .DriveType eines mit DriveInfo geholten Laufwerks, liefert auf meinem deutschen Windows 8.1 nur englische Namen.
    Kann man das irgendwie lokalisieren?
    Also, dass Jeder diese Info in seiner Systemsprache erhält?

    Hier meine Beispiel-Methode zum Füllen eines TreeView mit allen Laufwerken:
    Spoiler anzeigen

    C#-Quellcode

    1. /// <summary>
    2. /// TreeView -> show drives
    3. /// </summary>
    4. private void ShowDrives()
    5. {
    6. // Get all drives
    7. DriveInfo[] drives = DriveInfo.GetDrives();
    8. // Go through the drive array
    9. foreach (var drive in drives)
    10. {
    11. TreeNode rootTreeNode = new TreeNode();
    12. // Drive is ready?
    13. if (drive.IsReady)
    14. {
    15. rootTreeNode.Text = string.Concat((drive.DriveType == DriveType.Network ? string.Concat(drive.DriveType.ToString(), " ") : ""),
    16. (drive.VolumeLabel.Length > 0 ? string.Concat(drive.VolumeLabel, " ") : ""),
    17. "(",
    18. drive.Name.Remove(2),
    19. ")");
    20. }
    21. // Drive is not ready?
    22. else
    23. {
    24. rootTreeNode.Text = string.Concat(drive.DriveType.ToString(),
    25. " (",
    26. drive.Name,
    27. ")");
    28. }
    29. rootTreeNode.Tag = drive.Name;
    30. rootTreeNode.ImageIndex = GetIcon(drive.Name);
    31. rootTreeNode.SelectedImageIndex = rootTreeNode.ImageIndex;
    32. rootTreeNode.Nodes.Add("~~"); // Placeholder to enable expanding (+)
    33. trvFolder.Nodes.Add(rootTreeNode);
    34. }
    35. }


    Hier ein ScreenShot, um das zu verdeutlichen:


    LG,
    Bruno

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „diylab“ ()

    Wie bereits erwähnt, kannst du bei einem Enum-Member nicht einfach ToString() aufrufen und dann erwarten, dass was lokalisiertes rauskommt (wenn das so wäre, wäre das grausam).

    Du kannst es entweder selbst übersetzen, oder Windows/explorer.exe reversen, nachschauen, welche MUI-Datei mit welchen Parametern benutzt wird, und dieses Verhalten dann nachbilden. Ich würde mir den Aufwand von letzterem aber sparen und ersteres nicht machen, weil es sich nicht automatisch auf andere Sprachen anpasst.

    Muss es wirklich ein eigener Explorer sein? Im WindowsAPICodePack findest du ein Control, das einfach nur ein Explorer-Frame (wie aus dem Windows Explorer) ist, das man auf eine Form packen kann. Alles inklusive die Lokalisierung der Datenträger ist damit schon fertig.
    Nicht-Endanwender-User regen sich auch gerne über miserabel selbstimplementierte Explorer auf (z. B. der von Java, der ist ganz schlimm). Ich würde bei sowas immer auf das zurückgreifen, was Windows schon hat - vorausgesetzt es entspricht den Anforderungen. Das gilt aber nicht nur für Explorer-Fenster, sondern auch für alle anderen Controls, da man es nie wirklich schafft, exakt das Verhalten von Windows-nativen Controls nachzubilden. Ein gutes Beispiel ist hier immer eine Textbox, die - wenn sie jemand komplett selber macht, z. B. in einem Spiel - sich nie so verhält wie eine normale Textbox (Beispiele: Pos1/Ende-Tasten gehen nicht/nur halb, Shift+Arrow-Tasten springen nicht über Wörter... oder anders als bei Windows, Textselektion verhält sich anders beim Klicken, nur manche Tastenkombinationen gehen, weil der Entwickler selbst nicht alle kannte und sie deshalb nicht implementiert hat, Lokalisierungsprobleme, Drag&Drop funktioniert nicht, unter bestimmten Windows Themes sieht es anders/doof aus). Sowas kann einen unglaublich nerven - wieder hier als Beispiel der Java-OpenFileDialog.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „nikeee13“ ()