Hlavní navigace

Názor ke článku Sedíte v zlom vlaku (Linux & MS) od Lael Ophir - [61] Chyby lokalizace aktuálních verzí produktů lze hlásit...

  • 3. 9. 2008 21:50

    Lael Ophir (neregistrovaný)

    [61] Chyby lokalizace aktuálních verzí produktů lze hlásit na MS hotline. Ptal jsem se jich, když jsem objevil nějaké chybky. U starších produktů prý již nebudou žádné změny integrovány.
    Lokalizace Windows zdaleka není bez chyb. Ale lokalizace dister Linuxu je o několik řádů horší. Já osobně lokalizace nepoužívám, protože jsem se počítače učil znát anglicky, a čeština mi přijde užitečná jen na klávesnici. Pozor - dobře vím, že lokalizace je pro zbytek uživatelů zásadní, i když mě osobně nezajímá.

    [60] Ano, Win32 API má funkce *W pro Unicode, a *A pro ANSI (ty jsou pro zpětnou kompatibilitu). Pokud jedete nové (Unicode-enabled) aplikace, nic se nepřekládá, protože i struktury na FS jsou v Unicode (na NTFS i VFAT). Pokud jedete staré ne-Unicode aplikace, holt se stringy překládají. Na Linuxu je to přesně opačně: aplikace jedoucí interně v 8859-2 nic nepřekládají, a Unicode-enabled aplikace psané v Qt a Javě překládají každý svůj string (UTF-16) před voláním do UTF-8, a po návratu zpět (to se bohužel týká a navždy bude týkat všech Qt/Java aplikací!). Navíc v Linuxu sice dochází k převodu UTF-16 na UTF-8, ale 8859-* se nijak nepřevádí, a názvy souborů v UTF-8 a 8859-* se tedy mohou volně míchat. Bohužel se celá implementace Unicode příliš nepovedla. Ale upřímně, bez zvedení separátního Unicode-enabled API se jiný výsledek ani nedal čekat. MS měl to štěstí, že zrovna designoval FS. Linus Torvalds nad designem moc nepřemýšlel, a prostě opisoval stařičké unixy jedno volání po druhém, takže to dopadlo jako to dopadlo.

    Pro psaní FS máte k Windows příslušné SDK (IFS Kit), včetně vysvětlení konceptů příkladů. Psát IFS sice není triviální, ale ono se to také nedělá každý den. Na řadu věcí, například na integraci s HSM, vystačíte s NTFS Reparse Points.

    Wildchar matching na úrovni shellu je z hlediska Windows koncepčně špatně. Pokud spustíte aplikaci s parametrem "hi there", má dostat string "hi there". Pokud jí spustíte s parametrem "*.doc", má dostat string "*.doc". Jestli jí chcete spustit s parametrem "a.doc b.doc c.doc", spusťte jí tak. Je to samozřejmě čistě věc konceptu. V tomto případě wildchar matching provádí aplikace, nikoliv FS (pokud máte pravdu, může to v důsledku na ten FS propadnout - nemám tu teď dokumentaci). Na unixech je koncept jiný, a expanzi provádí shell.

    [63] Mám za to, že tabulka by byla zbytečně velká, zvláště u těch exotických jazyků (navíc je v systému těch locale hromada). Jinak linkovaný Locale Builder neumožňuje použít vlastní třídění; možná se dá do Windows dostat jinak, zkoumat se mi to už nechce. Můžete si ho ale vybrat z dostupných MS třídění, takže není problém vzít české locale, a použít US třídění.