Windows Vista ani česky, ani anglicky – co s tím?
Posted on: Pátek, Led 2, 2009
Jednoho dne jsem si všiml, že se některé složky v rámci standardní adresářové struktury mého uživatelského profilu ve Windows jmenují anglicky a jiné česky. Čeština byla vzhledem k tomu, že se jednalo o českou verzi Windows Vista (resp. o verzi Windows Vista s českým lokalizačním balíčkem, kde byl ten anglický zakázaný) poněkud více preferovaná, nicméně mi nebylo zcela jasné, co se kde přihodilo a co mám udělat, abych tento drobný nedostatek odstranil. V první řadě mi poměrně vadilo, že mi v systému řádí nějaký šotek, který zpřehazuje jména systémem předdefinovaných složek, podstatně důležitější však bylo, že některým uživatelům počítače by mohlo poměrně dost vadit, že na ně počítač nemluví česky nebo alespoň rusky :-).
Velmi rychle jsem však přišel na to, že systém si zahrává pouze se mnou samotným a ostatní uživatelské profily tímto problémem netrpí. Nicméně řešení bylo stále v nedohlednu a já proklínal MUI architekturu systému Windows Vista. A jak už tomu často bývá, největší objevy učiní člověk čirou náhodou. Nejinak tomu bylo v tomto případě – Windows Media Player si ukládal do mezipaměti ID3Tagy skladeb, což se mi ani trochu nelíbilo a v zoufalství jsem promazal všechny skryté soubory ve složce Hudba, včetně souboru desktop.ini. A to byl ten okamžik, kdy mi svitlo, protože místo položky Hudba jsem měl nabídce Start a všude jinde v rámci celého systému odkaz na složku Music.
Začal jsem tedy pátrat v jiných podobných složkách, například v nejproblémovější složce Stažené soubory, kde jsem v souboru desktop.ini spatřil poměrně nevinný řádek
1 | LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798 |
V tu chvíli už je každému zcela jasné, o co tady jde. Při načítání uživatelského profilu se pro podsložky %SystemRoot%/Users/{jméno_profilu}/ načtou lokalizované názvy z dynamické knihovny shell32.dll. Příčina je tedy jasná. Ne příliš chytrý uživatel nebo příliš aktivní aplikace přepíšou nebo smažou soubor desktop.ini a problém je rázem na světě. Řešení je také naprosto jasné – updatovat obsah daných souborů na správné hodnoty, čímž obnovíme “odkazy” na lokalizované názvy složek, stejně jako “odkazy” na speciální ikony těchto adresářů. O ty je postaráno řádkem
1 | IconResource=%SystemRoot%\system32\imageres.dll,-184 |
Inu, to je sice hezké, že je to takto jednoduché, ale kde má člověk vzít ta čísla, která ukazují na správný lokalizovaný název nebo na správnou ikonu. Technicky více založení se ujmou patřičných utilit a začnou zkoumat příslušné dynamické knihovny, případně si napíšou dávkový soubor, skript nebo malinký konzolový prográmek na udržování souborů desktop.ini. Já se prozatím spokojím s tím, že vše opravím ručně pomocí informací získaných z neporušených složek:
Kontakty/Contacts:
1 2 3 | [.ShellClassInfo]LocalizedResourceName=@%CommonProgramFiles%\system\wab32res.dll,-10100 InfoTip=@%CommonProgramFiles%\system\wab32res.dll,-10200 IconResource=%SystemRoot%\system32\imageres.dll,-181 |
Plocha/Desktop:
1 2 3 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 IconResource=%SystemRoot%\system32\imageres.dll,-183 |
Dokumenty/Documents:
1 2 3 4 5 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770 IconResource=%SystemRoot%\system32\imageres.dll,-112 IconFile=%SystemRoot%\system32\shell32.dll IconIndex=-235 |
Stažené soubory/Downloads:
1 2 3 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798 IconResource=%SystemRoot%\system32\imageres.dll,-184 |
Oblíbené položky/Favorities:
1 2 3 4 5 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21796 IconResource=%SystemRoot%\system32\imageres.dll,-115 IconFile=%SystemRoot%\system32\shell32.dll IconIndex=-173 |
Odkazy/Links:
1 2 3 4 5 6 7 8 9 10 11 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21810 IconResource=%SystemRoot%\system32\imageres.dll,-185 DefaultDropEffect=4 [LocalizedFileNames] Public.lnk=@shell32.dll,-21816 Searches.lnk=@shell32.dll,-9031 Recently Changed.lnk=@shell32.dll,-32813 Music.lnk=@shell32.dll,-21790 Pictures.lnk=@shell32.dll,-21779 Documents.lnk=@shell32.dll,-21770 |
Hudba/Music:
1 2 3 4 5 6 7 8 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790 InfoTip=@%SystemRoot%\system32\shell32.dll,-12689 IconResource=%SystemRoot%\system32\imageres.dll,-108 IconFile=%SystemRoot%\system32\shell32.dll IconIndex=-237 [LocalizedFileNames] Sample Music.lnk=@%SystemRoot%\system32\shell32.dll,-21806 |
Obrázky/Pictures:
1 2 3 4 5 6 7 8 | [.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 [LocalizedFileNames] Sample Pictures.lnk=@%SystemRoot%\system32\shell32.dll,-21805 |
Uložené hry/Saved games:
1 2 3 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21814 IconResource=%SystemRoot%\system32\imageres.dll,-186 |
Hledání/Searches:
1 2 3 4 5 6 7 8 9 10 11 12 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-9031 IconResource=%SystemRoot%\system32\imageres.dll,-18 [LocalizedFileNames] Indexed Locations.search-ms=@shell32.dll,-32811 Everywhere.search-ms=@shell32.dll,-32814 Shared By Me.search-ms=@shell32.dll,-32802 Recent Music.search-ms=@shell32.dll,-32803 Recent Documents.search-ms=@shell32.dll,-32804 Recent Pictures and Videos.search-ms=@shell32.dll,-32806 Recent E-mail.search-ms=@shell32.dll,-32807 Recently Changed.search-ms=@shell32.dll,-32813 |
Videa/Videos:
1 2 3 4 5 6 7 8 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21791 InfoTip=@%SystemRoot%\system32\shell32.dll,-12690 IconResource=%SystemRoot%\system32\imageres.dll,-189 IconFile=%SystemRoot%\system32\shell32.dll IconIndex=-238 [LocalizedFileNames] Sample Videos.lnk=@%SystemRoot%\system32\shell32.dll,-21807 |
Jak vidíte, u některých složek je to podstatně složitější – definují se zde také popisné texty pro bublinovou nápovědu, přepisují se ikonky jinými z dynamické knihovny shell32.dll, definují se lokalizované názvy pro symlinky na složky s ukázkovými obrázky, skladbami, atd. U složky Hledání se také definují názvy pro skupiny vyhledávání jako např. “Naposledy otevřené dokumenty” nebo “Nedávno změněné”.
Bohužel, toto není všechno. Takzvaná veřejná složka totiž má vlastní sadu souborů desktop.ini, které vypadají lehce odlišně. Pokud tedy na svém počítači takovou složku využíváte, asi byste ji také chtěli dát do pořádku:
Veřejné/Public:
Tady legrace začíná už o patro výš, sama složka Public má lokalizovaný název. U uživatelského profilu je to jednoduché, tam je to vaše uživatelské jméno.
1 2 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21816 |
Veřejná plocha/Desktop:
1 2 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21799 |
Veřejné dokumenty/Documents:
1 2 3 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21801 IconResource=%SystemRoot%\system32\shell32.dll,-235 |
Veřejné stažené soubory/Downloads:
1 2 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21808 |
Veřejná hudba/Music:
1 2 3 4 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21803 InfoTip=@%SystemRoot%\system32\shell32.dll,-12689 IconResource=%SystemRoot%\system32\shell32.dll,-237 |
Veřejné obrázky/Pictures:
1 2 3 4 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21802 InfoTip=@%SystemRoot%\system32\shell32.dll,-12688 IconResource=%SystemRoot%\system32\shell32.dll,-236 |
Veřejná videa/Videos:
1 2 3 4 | [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21804 InfoTip=@%SystemRoot%\system32\shell32.dll,-12690 IconResource=%SystemRoot%\system32\shell32.dll,-238 |
Na diskusních fórech Microsoftu a v Knowledge Base jsem objevil problém se souborem desktop.ini související, nicméně odlišný – některým uživatelům se po spuštění systému samovolně spustil Poznámkový blok s otevřeným souborem typu desktop.ini. Příčina i řešení jsou opět celkem nasnadě – složka Po spuštění obsahuje soubor desktop.ini. Tudíž se pro něj provede při spuštění systému standardní akce jako pro všechny ostatní soubory v této složce, standardně je to editace pomocí Poznámkového bloku.
Řešení obou problémů je tedy naprosto triviální a mě by jen nezbývalo nic jiného, než se drze dotázat, proč Microsoft s ničím takovým nepočítal a systém toto nekontroluje automaticky. Nicméně za těch pár let strávených s Windows už vím, že překvapení číhá na každém rohu a člověk nikdy nemůže nic vědět stoprocentně, už jen kvůli tomu množství informací. Pokud tedy víte o nějakém nastavení systému, který zapíná kontrolu těchto souborů nebo snad o nějakém oficiálním nástroji, který Microsoft vydal, neváhejte a dejte mi o něm vědět!
- Tags: lokalizace, MUI, problém, Windows Vista
- 1 Comment
honza
Leden 10th, 2009 at 0.13
Permalink this comment
1
no ja to prave resim, mam D620 s 100GB hdd po instalaci bezi vse cesky, koupil jsem vetsi hdd 200gb a na nem mam ty vyse popsane slozky po instalaci anglicky, uz jsem to zkousel asi 5x instalovat vzdy na zformatovany hdd a vzdy stejny vysledek na 100gb cestina na 200gb anglina – vubec to nechapu