Portál AbcLinuxu, 10. května 2024 11:23


Dotaz: Tvorba vlastních locales

11.2.2004 10:24 Gilhad@seznam.cz
Tvorba vlastních locales
Přečteno: 312×
Odpovědět | Admin
Chtěl bych si definovat vlastní locales, Několik pokusů už jsem podniknul, i úspěchy jsou, ale chybí mi teorie a možná to už někdo udělal lépe ... zatím se pohybuju na úrovni "když zkopíruju tento soubor a něco tam přepíšu tak to většinou funguje" ... a nechodí mi spolehlivě dead háček a vůbec scroll lock :( ... a při přepínání klávesnic za chodu KDE to někdy programy nezvládají správně ...

Je někde jednoduše popsané, jak na to? (Něco jako new-locales-HOWTO jsem nenašel ..)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Stanislav Brabec avatar 11.2.2004 12:26 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Tvorba vlastních locales
Odpovědět | | Sbalit | Link | Blokovat | Admin
Locales nemají nic společného s klávesnicí (to zajišťuje XKB nebo jádro Linuxu) ani fontem (to zajišťuje aplikace nebo její grafické nadstavba).

Definici locale najdete na /usr/share/i18n/locales/cs_CZ. Nevím, co myslíte pod ignorováním mezer.
Gilhad avatar 11.2.2004 13:13 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
ignorovanim mezer myslim to, že české řazení mi už několikrát zařadilo sekvenci "mezera mezera 9" až za sekvenci "mezera 0" ...

v tom /usr/share/i18n/locales/cs_CZ je nějaký složitý algoritmus (například tam i řeší japoské abecedy a tak), který to dělá víceprůchodově, podle ČSN 97 6030 a Pravidel jmeného katalogu ...

já bych to rád tak, že se třídí podle ascii kódu, s tím, že a<á><č><ť><ú><ů><#128<#129<.... jednoprůchodově, jenom jsou písmenka s diakritikou řazena hned za příslušná písmenka bez diakritiky ...

a hlavně mu nerozumím. Takže bych potřeboval postrčit, kde je psáno, jak se to dělá. Tedy analogicky nikoli, kde je zdroják programu, ale kde je popsán programovací jazyk a požadované náležitosti ...

něco jako že ten soubor má následující části: a) b) c), přičemž syntaxe je taková a taková a tohle tam nesmí chybět a tohle je volitelné a má to ten a ten význam.
Gilhad avatar 11.2.2004 13:16 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
(teď jsem zvoral HTML, tak ještě jednou)

ignorovanim mezer myslim to, že české řazení mi už několikrát zařadilo sekvenci "mezera mezera 9" až za sekvenci "mezera 0" ...

v tom /usr/share/i18n/locales/cs_CZ je nějaký složitý algoritmus (například tam i řeší japoské abecedy a tak), který to dělá víceprůchodově, podle ČSN 97 6030 a Pravidel jmeného katalogu ...

já bych to rád tak, že se třídí podle ascii kódu, s tím, že a<á<b<c<č<d ... t<ť<u<ú<ů<v ... <#128<#129<.... jednoprůchodově, jenom jsou písmenka s diakritikou řazena hned za příslušná písmenka bez diakritiky ...

a hlavně mu nerozumím. Takže bych potřeboval postrčit, kde je psáno, jak se to dělá. Tedy analogicky nikoli, kde je zdroják programu, ale kde je popsán programovací jazyk a požadované náležitosti ...

něco jako že ten soubor má následující části: a) b) c), přičemž syntaxe je taková a taková a tohle tam nesmí chybět a tohle je volitelné a má to ten a ten význam.
11.2.2004 13:35 David Jež | skóre: 42 | blog: -djz | Brno
Rozbalit Rozbalit vše Tvorba vlastních locales
hergot! od ceho je tu asi ten nahled :-) stop <B> a jinych ptakovin!
-djz
"Yield to temptation; it may not pass your way again." -- R. A. Heinlein
11.2.2004 13:11 David Jež | skóre: 42 | blog: -djz | Brno
Rozbalit Rozbalit vše Tvorba vlastních locales
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim,
ten dotaz je uplne zmateny. Tak od zacatku Jinak doporucuji precist si czech howto, dale nejaky navod jak pocestit distro, mozna ti to trosku pomuze nebo navede spravnym smerem.
-djz
"Yield to temptation; it may not pass your way again." -- R. A. Heinlein
Gilhad avatar 11.2.2004 13:46 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
V podstatě si chci udělat vlastní balíček se všema potřebnýma změnama, jak klávesnici, tak obrazovku v konzoli i v Xkách , tak vlastní prostředí(třídění, zkratky, formáty) ...

Několik návodů už jsem četl a úspěšně aplikoval, ale není to zcela to co chci ...

Chci mít
  • "pseudo české" řazení, které bude v podstatě ascii, jen písmenka s diakritikou budou hned za těmi bez diakritiky
  • vhodný formát datumu (tedy 31.12.2003 23:59:59 nikoli Wed Dec 31 23:59:59 2003)
  • prompty typu y/n
  • anglické hlášky
  • znak měny $
  • a hlavně vědět, kde a jak a proč se to dělá správně
  • a pokud by to bylo možné, tak to všechno zabalit tak, abych na nově nainstalovaném počítači jen nainstaloval vlastní rpm-ko (to není problém) a nastavil LC_ALL=Gilhad a bylo hotovo
Klávesnici si chci nastavit stejnou v textových konzolích i v Xkách a to tak, že podobně jako CapsLock způsobí, že při psaní obyčejných písmen se generují písmena velká, tak aby ScrollLock způsobil, že horní číselná řada bude generovat znaky nad 128 odpovídající českým písmenům a klávesa += bude generovat mrtvé znaky čárka a háček/kroužek. (Ten ScrollLock se mi dosud nepodařil, ale to předefinování horní číselné řady ano)

Pokud dám cat>soubor.txt a budu psát česká písmena, tak aby v tom souboru byla jako 8-bitové ISO-8859-2 znaky.

Xka i konzoli nastavit tak, aby defaultní font obsahoval česká písmena, aby mi to všechny programy zobrazovaly správně. (Zejména teda textová konzole v Xkách a mc.) A přitom aby ty programy používaly anglické hlášky/menu/tlačítka ... (tedy File,Edit, ... nikoli Soubor, Opravy ...)
11.2.2004 14:49 David Jež | skóre: 42 | blog: -djz | Brno
Rozbalit Rozbalit vše Tvorba vlastních locales
Hm, balicek s tunou podpornych konfiguraci mozna hey. Ale tento kombajn nad LC_ALL=neco takhle proste jednoduse nespravis ani kdyby ses rozsekal.
Ad klavesnice,fonty&spol. uz se radeji nehodlam vyjadrovat protoze to s locales nesouvisi a nastaveni jednoho konfigu to tez neni... (zvlast mc a vstup je mimo - locales s tim sakra vubec nesouvisi! To je zalezitost aplikace (zde input characters coding... v nastaveni)
K tomu zbyku: asi by bylo nejlepsi akorat upravit format data a trizeni z posixu, a pak je nastavit, ale ne LC_ALL... protoze vpodstate az na tyto 2 veci to bude vsechno C (vcetne hlasek...)
Zaverem: ano, pri velke davce cokolady, trpelivosti, nervu a fantazie by to tak nejak asi za urcitych okolnosti mozne bylo, ale ne tak jak si predstavujes. Pujde udelat balicek a skript ktery to vsechno nastavi, ale nepujde to nastavenim jedne promene (zvlaste ne vsechny aplikace typu bash, mc... kde to kazda resi po svem. Linux jako system (nastesti!) jaksi nejsou widle se zaskrtavacim klikos-polem "vsechno cesky a nikdy jinak vsude kde je mozne pro vsechny aplikace az do skonani sveta" :-)
bye,
-djz
"Yield to temptation; it may not pass your way again." -- R. A. Heinlein
Stanislav Brabec avatar 11.2.2004 15:15 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše Tvorba vlastních locales
Větší část vašich požadavků na locales se vám podaří nastavit proměnnými LC_něco.

Pouze to ujeté třídění si budete muset napsat sám a pak nastavit LC_COLLATE=cs_moje. Ale připravte se na nečekané výsledky, které vám rozhodně hlednání neusnadní:

Příklad: upnout < usnout < úděsné
Gilhad avatar 12.2.2004 11:57 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
Ale tak jsem si to přesně představoval ... ;-)
11.2.2004 17:21 Jan Kubik
Rozbalit Rozbalit vše Tvorba vlastních locales
chapu, ze si chcete to trideni udelat sam - to oficialni je silenost. My jsme o tom ve firme take uvazovali, ale nakonec jsme se rozhodli prece jen pro standardtni, protoze pri instalaci naseho software nemuzeme porad dodavat i to trideni a chceme vychazet z toho, ze uzivatel ma standardtni instalaci.

To jak zde nekdo pise, ze budete mit problemy se "spravnym" tridenim je nesmysl - i to oficialni je nelogicke - jak o tom pisete s tema mezerama. Navic je ta rychlost zoufala.

Kdybychom to delali, tak bychom vzali cz_sort program pana Padziory ( na jeho webu) - je to trideni pro mysql, ale da se to pouzit o bez. Z toho programu se da vysledovat, jak na to pan padziora jde - eventuelne ho namailovat - jiste poradi.

preji hodne stesti.
11.2.2004 18:02 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Tvorba vlastních locales
[flame]Člověka, který píše standardní jako ,,standartní`` bych nenechal rozhodovat cokoli, co byť jen vzdáleně souvisí s češtinou.[/flame]

To stadnardní třídění je správné české třídění, je tak třídený každý rejstřík v každé knize, telefonní seznam (jestli ho ještě někdo používá) a vůbec každý český seznam. Ke třídění věcí, jako jsou jména souborů, ho používá jen blázen, co má LC_ALL na češtinu, protože na to je lepší ASCII třídění (a hlavně nedávat do jmen souborů české znaky). Ke třídění seznamů presentovaných v kontextu českých textů ho naopak používá každý, kdo není úplný analfabet.

BTW zmiňované třídění mezer je naprosto logické. Pokud jsou ty mezery součástí jména, tak patří ,,mezera mezera 9`` před ,,mezera 0``. Není se o čem bavit, mezera je zkrátka před nulou. Pokud nejsou součástí jména, tak je do něj sakra necpi, a když je tam cpeš, tak si pak nestěžuj.
11.2.2004 19:32 David Jež | skóre: 42 | blog: -djz | Brno
Rozbalit Rozbalit vše Tvorba vlastních locales
Koukam, ze uz asi pekne silhas na monitor :-). Kdyz se na nej zadivas poradne tak uvidis, ze je tam jeste vetsi perla nez standartni a to sice standardtni jak s d tak t a to na dvou mistech, asi pristup ,,vyber si'' :-).

Jinak co se CSN tyce, to je veci nazoru. Osobne mi ta norma pripadne nepouzitelna, uchylna, perverzni az pitoma. A dokonce i s tim slovnikem a rejstrikem bych se hadal: kdyby byl slovnik podle te zminovane debilni normy tak bych ho asi zahodil, protoze norma napr. plete dohromady pismena s hackem s pismeny bez hacku. Napr. seradi slova cizi, cokolada, cukr, misto cizi, cukr, cokolada. Takze pokud bych hledal slovo zacinajici hackem tak ho asi nenajdu, protoze hledat mezi nehackovanym bordelem fakt odmitam. Nastesti mam slovniky ktere jsou razeny vpodstate podle ASCII bez tech nekolika pruchodovych vyjimek. Nehlede na to, ze napr. u cesko-francouzskeho slovniku by clovek ocekaval, ze bude serazen jednim algoritmem, ale ne ze by byla francouzska cast normalne a cesi opet budou mit neco extra... ne? Pak aby se v tom prase vyznalo...
Nejlepsi by bylo tridit podle ASCII s tim, ze hackovany a carkovany znak je mezi a ze neexistuje znak ch (dalsi silena kravina :-)), tedy cokoliv zacinajici ch bude clovek logicky hledat pod c. Pak by se takove trizeni dalo i uspesne pouzivat :-). Coz se ceske neda a to je hlavni duvod proc kdyz uz musim mit ceske prostredi tak trizeni mam vzdy nastavene na C :-)
-djz

"Yield to temptation; it may not pass your way again." -- R. A. Heinlein
11.2.2004 20:04 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Tvorba vlastních locales
Asi máme každý jinou normu.

Písmena č, ř, š, ž jsou odlišná neháčkovaných kamarádů už na primární úrovni, takže se třídí cizí < cukr < čokoláda. No problem.

Jinak je to s ď, ť, ň, která jsou skutečně odlišná až sekundárně, takže ťuhýk je před tújí -- podívej se do jakéhokoli [papírového] slovníku a je řazený takto. Každému, kdo se narodil v době, kdy se ještě používal papír, to snad přijde normální.

Jak může být francouzská část seřazená ,normálně`? Co to je? Mám rusko-český/česko-ruský slovník. Česko-ruská část je řazená podle pravidel třídění češtiny, zatímco rusko-česká podle pravidel třídění ruštiny (podle čeho asi tak jiného? že by snad ,normálně` ;-) Nevím, co je na tom divného. Taky jsem už viděl čínsko-polský slovník, ale jak ten byl řazený, to mi tedy uniklo ;-)

Když hledám v českém abecedním seznamu chléb, nehledám ho pod C ale pod Ch. Asi je to tím, že jsem se narodil v době, kdy se ještě používal papír a lidi uměli česky... Že je pitomost mít takhle tříděné soubory v mc, to jsem už psal, ale pokud budu psát český abecední seznam do článku, do knihy, na web, ..., budu ho třídit česky, protože ho budou číst lidi, a ne nějací praštění programátoři ;-)
Gilhad avatar 12.2.2004 12:11 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
Pokud budu chtít psát knihu s ČSN českým řazením, tak si na tu chvíli prostě vyexportuju příslušně úchylné LC_COLLATE, ale nevidím důvod, proč by mě to mělo obtěžovat na mém soukromém počítači při běžných každodenních činnostech ... zvláště na Linuxu, který má v tomto ohledu poměrně liberální filosofii ...

Osobně nevidím žádný podstatný rozdíl mezi c->č a d->ď, a rozhodně ne takový rozdíl, který by ospravedlnil různý přístup k řazení.

Ale tohle je vlastně úplně off-topic, protože můj dotaz nezněl "Jak donutit ostatní, aby používali mé úchylárny", ale "Kde seženu informace, jak na svém Linux-boxu vytvořit své vlastní úchylné prostředí"
11.2.2004 20:22 Beda
Rozbalit Rozbalit vše Tvorba vlastních locales
a duvod proc s ceskym collation nedavat v bashi cat prefix* > celysoubor; pokud si prefix* vyrobil splitem.

ch split radi podle asci vzdy. kdezto * v bashi si zaradi ch az za h*.
11.2.2004 20:17 Beda
Rozbalit Rozbalit vše Tvorba vlastních locales
to je uz snad i schiza.

cesta ve fs ma slouzit jako index k datum. v tom je naprosto shodna s chapanim indexu v databazi a v tom je fs shodny tomu tvojemu telefonnimu seznamu.

problem je v tom, ze kdyz clovek okusi jiny, tak vidi kolik je nedomyslenosti v ceskych definicich razeni.

btw. co norma rika o mezere? (a nasobnych mezerach mezi slovy? podle me je mezera logicky prvek, takze by 40 mezer melo porad fungovat jako jedna jedina... to je potom chyba jinde (aplikace/clovek), ze pouziva v indexu redundatni data)
11.2.2004 20:32 Beda
Rozbalit Rozbalit vše Tvorba vlastních locales
flame

koukam, ze si se narodil v dobe, kdy se sice pouzival papir, ale uz se pouzivaly psaci stroje a sazeci stroje.

kdyby si znal nekoho, kdo se narodil v dobe, kdy se pouzival papir a husi brk (nebo inovovana verze), tak bys vedel, ze mezera je prave jedna a po obsahove strance nezalezi na tom, jak je velika.

noflame
Gilhad avatar 12.2.2004 13:57 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
Teď jsi mě odhalil ;-)

Kdybych se narodil v době pouze husích brků, neměl bych problémy, jak rychle setrídit soubor s čísly zarovnanými vpravo (dle jejich hodnoty, ať již dekadických, či hexa), nebo s IDčkama, která mohou, ale nemusí začínat písmenem, resp. číslicí, a v tu samou chvíli pak seřadit jmenný seznam tak, aby se v něm dalo snadno orientovat ....

První a druhý problém skvěle řeší nativní ascii třídění ala C, třetí problém pak vyžaduje trochu češtiny, aby se mi písmenka s diakritikou neshlukla až na samém konci a ještě ve špatném pořadí ... jenže co s tím, když to chci třeba použít na jedné příkazové řádce naráz

Já vím, roztrhnout tu řádku na dvě, a exportovat LC_ každou chvíli jinak, ale to mi přijde jako pěkný opruz, kdyžto jde udělat i pohodlněji.
*****
příklad 1: 
  927 poznamky.txt
 4234 popis.txt
12345 seznam.txt

123ab main()
9abe8 pokus()
dead8 end()


příklad 2: 
123Z84 osa hřídele
33B4XY lak na nehty
9ZA456 sestavení

příklad 3:
Adam
Cecil
Cygwin
Čenda
David
Dynamit
Ďábel
Eva



12.2.2004 17:47 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Tvorba vlastních locales
To je IMHO hlavně lenost, protože stejně jen některá speciální třídění s více klíči lze přechytračit a tvářit se, že je klíč pouze jeden. Když tam budu mít reálná čísla, verze, slovně vypsané priority chyb nebo třeba celá data ve formátu RFC 822, nezbude mi, než to na těch více klíčů rozbít a třídit to podle každého jeho specifickým algoritmem. Je samozřejmě otázkou, proč to netřídím raději v nějaké lépe strojově zpracovatelné fázi...

A logická vs. fyzická mezera: to si musí předně rozhodnout ten, kdo data vytváří. Mám-li např.
pepa         přicházející
pepa         žárlící
pepa z depa  žeroucí párek s křenem
(tj. de facto dva sloupce) chci třídit, jak je uvedeno, ale mám-li
pepa přicházející
pepa z depa žeroucí párek s křenem
pepa žárlící
chci opět třídit, jak je uvedeno, což je jinak než předtím...

Ad ď, ť, ň: tato písmena se v uvedené podobě vyskytují zřídka. Obvykle jsou následována i, í či ě, takže se píšou bez háčku: di, tí, ně. Asi byste se dost divili, kdyby byl dědeček zařazen až po džemu...
Gilhad avatar 12.2.2004 18:10 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
No lenost, já většinou potřebuju pouze jednoho klíče, ale na příkazovém řádku v kombinaci se vším ostatním (sort, sed, grep, find, ls). A aby to bylo aspoň trochu rozumně. Na velké věci jsou speciální nástroje, jako například SQL-databáze. Ale na takové to každodenní - kde je moc souborů, který adresář se rozrůstá, kolik má moje postava v Shadowrunu peněz a kde utratila nejvíc, atd atd atd. tak tam je potřeba třídění které nikdy nebude úplně špatně (ČSN nesplňuje - zahazuje mezery, má ch (takže 0ch > 0dh) a tak podobně) a většinou bude dobře, nebo aspoň skoro dobře (no tak prostě vím, že ch se píše dvěma znaky a vím přesně kde ho hledat ..)

Ale stejně bych byl rád, kdyby mi někdo poradil, kde najdu popis syntaxe a náležitostí těch locales souborů ...

(Tedy, nedávejte mi rybu, naučte mě rybařit ;-)
12.2.2004 18:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Tvorba vlastních locales
Mno, takže vem zdrojáky glibc, tam jsou v localedata/locales zdrojáky jednotlivých locales (nic čitelnějšího pro člověka neexistuje). Jakýsi popis, jak vypadají a co s nimi dělat, je v localedef(1) a locale(5) a v nějakých README okolo. Ve zdrojáku cs_CZ píšou něco i o cs_CZ@-ch (třídění bez Ch), který se z toho snad dá nějak generovat, ale detaily jsem nestudoval...
11.2.2004 21:01 Jan Kubik
Rozbalit Rozbalit vše Tvorba vlastních locales
... standardtni ...

pane Necas, skutecne nemate nic lepsiho na praci. Kdo nakonec bude rozhodovat o cestine ponechme na jinych. Ostatne, kdyz se tak podivam na tu vasi fotografii na vasi homepage ( smite vubec bez propustky na ulici ?), tak bych rekl, ze lide budou duverovat komukoliv jinemu nez vam.

Co se tyce trideni, tak vse potrebne jiz sdelil pan Jez, k jeho argumentaci neni zapotrebi nic dodavat.
12.2.2004 14:52 Yeti
Rozbalit Rozbalit vše Tvorba vlastních locales
Bez propustky na ulici nesmím. Nikdo mi nedůvěřuje. Nikdo mi také neříká ,pane Necas`. Jsem zavřený v ústavu, sedím u počítače a rozhoduji o češtině... ;-)
12.2.2004 14:57 Yeti
Rozbalit Rozbalit vše Tvorba vlastních locales
A koukám, že už jsme klesli pěkně hluboko (přinejmenším tedy někteří ;-) když došlo až na útoky na vzhled, co?
12.2.2004 18:32 venca
Rozbalit Rozbalit vše Tvorba vlastních locales
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nějaké informace možná najdeš na: http://www.opengroup.org/onlinepubs/007908799/xbd/locale.html a na http://www.i18ngurus.com/docs/996709078.html.
Gilhad avatar 12.2.2004 18:48 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Tvorba vlastních locales
Skvělé, TOHLE jsem potřeboval!

Přečtu si to doma a zdá se, že se tím mé problémy s tříděním a datumy definitivně vyřeší.

Až to zvládnu, vrhnu se na klávesnice a fonty ...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.