Jak na české formátování čísel ve WordPressu

Rubrika: WordPress

WordPress je výborný publikační systém, a to nemám na mysli jen systém samotný, ale i češtinu, která je pro WordPress k dispozici. Bohužel zde máme jednu maličkost, která k dokonalosti chybí. A tou je formátování čísel, které i při použití češtiny odpovídá anglickým konvencím, tedy desetinná místa odděluje tečka a tisíce odděluje čárka. V češtině to ale má být jinak, desetinným oddělovačem má být čárka, kdežto oddělovačem tisíců má být mezera. (pro hnidopichy, moc dobře vím, že oddělovačem tisíců by neměla být normální, ale tenká mezera, to se ovšem na webu realizuje ještě hůře než normální mezera)

Ono se to snadno napíše, krásná teorie, pokud si ale myslíte, že jen tak vlezete do zdrojáků češtiny pro WordPress a položky si opravíte, okamžitě se vystavíte problému. Totiž webové stránky (stejně jako drtivá většina aplikací pracujících s textem) odstavce zalamují do jednotlivých řádků podle mezer. Což je v pořádku právě do té doby, než Vám mezery začnou oddělovat tisíce v číslech. Protože řádek uprostřed čísla zalomit nechcete. Číslo potřebujete držet pohromadě. Řešení se nazývá tvrdá mezera a tím se řítíme do největších hlubin trapné chyby, se kterou se musíme poprat. (doplnění informace o tenké mezeře z předchozího odstavce: tenká mezera reperezentovaná entitou   je totiž v HTML zlomitelná přes řádek, tak proto ji nemůžeme použít pro formátování čísel)

Ne, chyba se nenachází v češtině pro WordPress. Nenachází se ani ve WordPressu samotném. Je skryta ještě níže, přímo v samotném PHP. Totiž, WordPress naprosto správně pro formátování čísel používá nativní funkci PHP, která se jmenuje number_format(). Potíž je v tom, že tato funkce neumí pracovat s tvrdými mezerami, a to ani s řetězcem   ani s pevnou mezerou zapsanou jako ASCII znak o hodnotě 160. Pokud ji předhodíte, že má použít pro oddělení tisíců tvrdou mezeru, ve výsledku místo ní dostanete čtvereček. To je naprosto nepoužitelné.

A naprosto trapné na celé situaci je, že problém s touto funkcí je reportovaný do PHP již mnoho let (viz velmi dlouhý log u popisu této funkce), netrápí jenom Čechy, ale i mnohé početnější národy používající stejné formátování, jmenujem třeba Francii nebo Rusko. A nikdo s tím nic nedělá.

Rozhodl jsem se, že se se situací nesmířím. Na svém webu chci mít čísla naformátovaná správně česky. Asi bych uměl najít zmíněnou funkci ve zdrojácích PHP a zkompilovat si vlastní modifikaci, bohužel PHP u svého web-hostera nevyměním, takže situaci musím vyřešit o úroveň výše, ve WordPressu. Nejedná se však o situaci, kterou by šlo vyřešit plug-inem, ale musel jsem sáhnout napřímo do střev samotného WordPressu. To ve výsledku znamená, že s každým upgradem WordPressu, byť tím nejmenším, to musím udělat znova.

Vlevo u seznamu souborů ke stažení vidíte, že to vše funguje správně. Velikost souborů má desetinnou část oddělenou čárkou a u počtu stažení je vždy oddělovačem tisíců nedělitelná mezera, takže se nestane, že by se číslo rozdělilo na více řádků. Tak to má být.

Pokud chcete, aby i na Vašem webu byla čísla správně česky naformátována, můžete si stáhnout následující archiv. V něm najdete tři soubory, které nahrajte (do příslušných adresářů) Vaší instalace WordPressu přes ty původní. Pozor: soubory v tomto archivu jsou v této chvíli pro WordPress verze 2.9.2 a pokud máte jinou verzi WordPressu, tak to nedělejte, WordPress by mohl přestat fungovat. Modifikace je určena jen pro verzi 2.9.2, pro žádnou jinou.

Dobrá zpráva na závěr: tento problém jsem již před časem nahlásil vývojovému týmu WordPressu a lze předpokládat, že nějakým způsobem se s ní popasují a v budoucnu bude možné, aby oficiální čeština měla korektní formátování čísel tak, jak má být. Zatím se řeší, jakým způsobem toto zařídit, jestli tak, jak jsem to udělal já, nebo nějakým filtrem, ale to je méně podstatné; nyní je milestone nastavený na verzi 3.0, tzn. vývojový tým by to chtěl mít v této verzi již vyřešené (ale na druhé straně si můžete v logu všimnout, že už se oprava plánovala pro verzi 2.9 a pak se to zrušilo). Tak držme palce, že řešení popsané a nabídnuté ke stažení v tomto článku je pouze dočasným workaroundem.

Optický trackpad funguje, ale jinak BlackBerry 8520 působí lacině

Rubrika: Mobilní telefony

Začátkem prosince mi začalo zlobit mé BlackBerry 8310. Potvora vydržela přesně dva roky plus mínus pár dnů. Těsně před Vánocemi jsem ho zkusil přeformátovat, ale už se nedal znovu aktivovat (přihlásit k centrálnímu serveru pro synchronizaci mailů, kalendáře, kontaktů atd.). Svátky jsem tedy prožil bez e-mailů v telefonu (jaká hrůza ;-)), nicméně z kraje ledna jsem musel pořídit novou bobuli.

Tou dobou měla být u O2 v prodeji již BlackBerry 8520, o kterém jsem se zmiňoval v teoretické úvaze, jak to bude s optickým trackballem. Jenže realita byla jiná, telefon ve skutečnosti ještě skladem nebyl. Já ale potřeboval svou situaci vyřešit a tak jsem se rozhodl pro BlackBerry 8900, které se tou dobou doprodávalo a mělo být nahrazeno právě osmdesátpětadvacítkou. Poslední model s kuličkou.

Nyní se mi již do ruky nové BlackBerry 8520 dostalo, tři kousky ve firmě máme. Nejprve tedy o optickém trackballu (tzv. trackpadu): musím říct, všechna úcta, funguje to pěkně. Stručný popis pro všechny, nejen pro ty, kteří už mají nějaké BlackBerry, ale i pro jiné mobilisty: každý mobil má dnes nějaké směrové ovládání, typicky čtyři kurzorové klávesy (nahoru, dolů, doprava, doleva), někdy ještě navíc s potvrzovacím tlačítkem uprostřed. BB 8520 má místo toho jedno jediné tlačítko, nijak velké, které zastoupí všech pět ovládacích tlačítek najednou. Když ho zmáčknete, tak má samozřejmě funkci toho potvrzení. Pokud ale na něj přiložíte prst a posunete ho některým směrem, telefon to zpracuje jako stisk směrové klávesy. Posunete palec nahoru, jako byste stiskli klávesu nahoru. Je to podobné touchpadu na noteboocích, tak jak se ovládá šipka myši. Je to citlivé a moc příjemné.

Vlevo BlackBerry 8520, vpravo BlackBerry 8900

Mimo to je ale BlackBerry 8520 bohužel zklamáním. Je pravda, že cena telefonu oproti modelu 8900 klesla přibližně na dvě třetiny, ono je ale i skutečně vidět, že se šetřilo. Nejen, že telefon s nižším modelovým číslem je čistě černý (kdežto vyšší model s kombinací černé a stříbrné působí elegatněji), to by byl jen designový prvek. Ale k novému bezkuličkovému stroji nedostanete pouzdro. Nejen, že jakýkoliv mobil bez pouzdra trpí, ale tradičně BlackBerry si umí poznat, když ho do originálního pouzdra vložíte a v pouzdře se pak může chovat jinak (např. v pouzdře zvoní, kdežto vytažené pouze vibruje). A ani tohle ten nový stroj neumí, protože mu chybí senzory, takže i když máte starší pouzdro po svém předchozím přístroji (protože velikost modelů 8310, 8520 i 8900 je stejná), tak tahle funkcionalita bude chybět. Také dodávaná nabíječka má pouze Euro koncovku, kdežto všechny předchozí modely měly také koncovku pro Anglii a USA. Prostě se šetřilo všude, kde to jen trochu šlo.

(Pokračování textu…)

Nová verze gadgetu MeteopressMod (pro notebooky Dell?)

Rubrika: Počítače

Přišel mi mail od kamaráda, kde psal, že viděl můj gadget MeteopressMod, že se mu líbí, a že mi prý dává jedinečnou příležitost odladit ho na Windows 7 x64, na kterých prý nefunguje. Pořídil si totiž nový notebook právě s tímto operačním systémem. Zarazil jsem se, protože jsem kdysi gadget testoval na Release Candidate verzi Windows 7, a vše fungovalo OK. Tak jsem si z Technetu stáhnul instalační image pro ostré Windows 7 x64, nainstaloval to do virtuálního stroje, spustil v nich svůj gadget a vše fungovalo bez jediného zaškobrtnutí.

Kamarád ale bydlí jen asi 200 metrů ode mě a navíc jsme měli další důvody se potkat, tak jsem se k němu stavil a skutečnost byla taková, jakou zmiňoval. Gadget byl slepý, informace o počasí se nezobrazovaly, seznam měst zůstal prázdný. Takto to samozřejmě používat nešlo.

Tak jsem chvilku googlil a hledal a nakonec jsem něco našel. V OEM instalaci Windows 7 od firmy Dell (ta totiž vyrobila zmíněný notebook) chyběla jedna ActiveX komponenta, kterou gadget používá. Přitom výchozí instalace Windows 7 od Microsoftu tuto komponentu obsahuje. Fakt divné.

Naštěstí ve Windows je další komponenta se stejnou funkčností, pouze s jiným jménem. Takže jsem gadget opravil a ten, pokud jednu komponentu nenajde, tak zkusí druhou. A vše nyní funguje i na notebooku mého kamaráda tak, jak má.

Takže je zde nová verze mého gadgetu. Z uživatelského pohledu neumí nic nového a pokud Vám předchozí verze v pořádku funguje, tak vlastně ani není důvod upgradovat na novou. Ale pokud by gadget byl i u Vás slepý, tak můžete zkusit tuhle verzi. Pochopitelně nyní jde z mých stránek stáhnou již pouze nová verze, která umí použít obě dvě komponenty, takže není důvod ponechávat starou. A nic jiného se v gadgetu nezměnilo (teda ještě kromě čísla verze).