Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: SuperOscar - 15.01.09 - klo:18.07

Otsikko: Ubuntun lokaalissa bugi, miten korjata? [Ratkaistu]
Kirjoitti: SuperOscar - 15.01.09 - klo:18.07
Huomasin vasta nyt, että Ubuntun fi_FI.utf8-lokaalissa on pieni bugi: se aakkostaa w:n v:n jälkeen eikä pidäkään kirjaimia samanarvoisina.

Mitenkähän tämän voisi korjata – löytyisikö esim. jostain valmiina oikeampaa suomalaista lokaalia? ”sudo dpkg-reconfigure locales” -komennon löysin foorumin haulla, mutta se yksinkertaisesti vain tarkistaa, onko lokaali ajan tasalla.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: harrykaa - 15.01.09 - klo:18.19
Mutta eikös tuo aakkosjärjestys mene juuri tuolla tavalla suomeksikin:
siis ...t, u, v, w, ...
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 15.01.09 - klo:18.29
Ei mene. V ja W ovat saman arvoiset samaan tapaan kuin Y ja Ü, eli aakkosjärjestyksessä esim. tyyli, tüüli, vanha, wanha, vene, wene...
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: Vikatikki - 15.01.09 - klo:19.45
Mitenhän tuon nyt ottais? "viime aikoihin"?
http://fi.wikipedia.org/wiki/W (http://fi.wikipedia.org/wiki/W)
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 15.01.09 - klo:20.49
Mitenhän tuon nyt ottais? "viime aikoihin"?
http://fi.wikipedia.org/wiki/W (http://fi.wikipedia.org/wiki/W)

Wikipedia on normikysymyksissä heikko lähde: tuon jutun kirjoittaja ei ehkä vain tiedä, että aakkostus on oikeasti määritelty suomen oikeinkirjoituksessa niin, että V ja W ovat samanarvoiset – kyse ei ole vain siitä, että näin olisi tavattu tehdä.

Ks. esim. Jukka Korpelan Nykyajan kielenopasta (http://www.cs.tut.fi/~jkorpela/kielenopas/4.15.html).

Mutta jos palataan asiaan ;D Olen saanut selville, että virhe on tiedostossa /usr/lib/locale/fi_FI.utf8/LC_COLLATE. Se vain on binaarimuotoinen eikä minulla ole harmainta hajua, miten oikeanlainen versio generoidaan...
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: zafner - 15.01.09 - klo:21.07
Suomalainen aakkostus määritellään SFS 4600 -standardissa. Tuon voisi ajatella olevan se "oikea" tapa, miten aakkostus tehdään.

http://www.cs.tut.fi/~jkorpela/abc.html
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 15.01.09 - klo:21.18
Suomalainen aakkostus määritellään SFS 4600 -standardissa.

Joo joo joo... Minä tiedän sen. Kysymys kuuluukin, miten Ubuntun aakkostus korjataan standardia vastaavaksi.

Hmh, /usr/share/i18n/locale/fi_FI väittää aakkostusta standardinmukaiseksi:

Koodia: [Valitse]
% Finnish language locale for Finland
% sorting according to SFS 4600 (1986-06-09)

Tiedostossa on myös aimo nivaska V:hen ja W:hen liittyviä rivejä:

Koodia: [Valitse]
reorder-after <U016B>
<U0076> <v>;<U0056>;<BAS>;<MIN>
<U1E7D> <v>;<U0056>;<TIL>;<MIN>
<U0077> <w>;<U0057>;<BAS>;<MIN>
<U1E83> <w>;<U0057>;<ACA>;<MIN>
<U1E81> <w>;<U0057>;<GRA>;<MIN>
<U0175> <w>;<U0057>;<CIR>;<MIN>
<U1E85> <w>;<U0057>;<REU>;<MIN>
<U1E87> <w>;<U0057>;<PCT>;<MIN>
reorder-after <U016A>
<U0056> <v>;<U0056>;<BAS>;<CAP>
<U1E7C> <v>;<U0056>;<TIL>;<CAP>
<U0057> <w>;<U0057>;<BAS>;<CAP>
<U1E82> <w>;<U0057>;<ACA>;<CAP>
<U1E80> <w>;<U0057>;<GRA>;<CAP>
<U0174> <w>;<U0057>;<CIR>;<CAP>
<U1E84> <w>;<U0057>;<REU>;<CAP>
<U1E86> <w>;<U0057>;<PCT>;<CAP>

Valitettavasti vain puuttuu tieto, miten tuota luetaan :) Ja jos tuo on oikein, miksi lokaali generoituu lopulta väärin?
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 15.01.09 - klo:23.21
Kokeilin lajittelua myös openSUSEssa, ja hämmästyttävää kyllä sitä vaivaa sama ongelma. Onkohan /usr/share/i18n/locales/fi_FI oikeasti ollut rikki vuodesta 1996 (!!!) kenenkään kiinnittämättä asiaan huomiota?! Ainakin tuollainen päivämäärä tiedostosta löytyy.

Tosin tiedostosta löytyy myös maininta, että merkistö on Latin-1. Vastaavasti fi_FI@euro-tiedosto kertoo olevansa Latin-15. UTF-8-määritelmätiedostoa ei löydy laisinkaan; onko ongelma itse asiassa siinä?
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: juyli - 15.01.09 - klo:23.52
Huomasin vasta nyt, että Ubuntun fi_FI.utf8-lokaalissa on pieni bugi: se aakkostaa w:n v:n jälkeen eikä pidäkään kirjaimia samanarvoisina.
Onpa hieno havainto! Tuo perustuu jo vuosikymmenien takaa, sillä ASCII koodistossa nuo ovat eri merkkejä.
Hienoa, että olet tuonkin "bugin" löytänyt.
Yksinkertaisinkin puusilmä huomaa, ettei merkit w ole sama kuin v.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 16.01.09 - klo:00.03
Tuo perustuu jo vuosikymmenien takaa, sillä ASCII koodistossa nuo ovat eri merkkejä.

Ovathan ne eri merkkejä, mutta se ei liity aakkostukseen.

Lainaus
Tosin suomenkielessä ja suomenkielen aakkostuksessa noilla merkeillä ei ole merkitystä,

(”Suomen kielessä”, ”suomen kielen”, toim. huom.) Kyllä on. Vilkaisepa vaikka mitä tahansa tietosanakirjaa, niin huomaat ”Wellingtonin” tulevan aakkostetuksi ennen ”velvollisuutta”.

Muoks: Oivoi, parjattu Windows (XP) osaa tämän oikein.

Testitiedosto:

Koodia: [Valitse]
Welho
velho
Wellington
vanha
velvollisuus
wanhus

Ja tulos sort-käskystä:

Koodia: [Valitse]
[C:\Tilap] sort koe.txt
vanha
wanhus
velho
welho
Wellington
velvollisuus
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: juyli - 16.01.09 - klo:00.15
Lainaus
Tosin suomenkielessä ja suomenkielen aakkostuksessa noilla merkeillä ei ole merkitystä,

(”Suomen kielessä”, ”suomen kielen”, toim. huom.) Kyllä on. Vilkaisepa vaikka mitä tahansa tietosanakirjaa, niin huomaat ”Wellingtonin” tulevan aakkostetuksi ennen ”velvollisuutta”.

Yhä hienoa, että alan ammattilaisena olet huomannut lopultakin tuon eron.
Tietokoneet yhä käyttävät ASCII-merkistöä, joten nuo merkit w <-> v ovat eri merkkejä, kuten oikeastikin aakkosia luetellessa ..tuVxyzWäö. Kyseessä on se lukuarvo, joka ko. ASCII-merkistössä noille eri merkeille on annettu.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 16.01.09 - klo:00.17
Tietokoneet yhä käyttävät ASCII-merkistöä,

Näytä minulle ASCII-merkistöä käyttävä tietokone, niin rupean polttamaan piippua ja tanssimaan kansantanhuja... ASCII meni meinaan muodista hippiliikkeen myötä. Kielten oikeinkirjoitusten aakkostus ei myöskään ole mitenkään liity siihen, miten tietokoneet merkistön koodaavat.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: anttimr - 16.01.09 - klo:00.33
olikos tuossa edellä sellainen kannanotto, että ruotsalainen-å on poistettava suomen aakkosista?  :P

Lainaus
Mitenkähän tämän voisi korjata – löytyisikö esim. jostain valmiina oikeampaa suomalaista lokaalia?
Jos korjausta ei itse löydy tai vaikka löytyykin, raportoi joka tapauksessa bugi järkeväksesi katsomaan paikkaan, että saadaan muiltakin joskus kuntoon.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 16.01.09 - klo:00.35
olikos tuossa edellä sellainen kannanotto, että ruotsalainen-å on poistettava suomen aakkosista?  :P

Ei sunkka. Mistäs semmoisia luet?

Lainaus
Jos korjausta ei itse löydy ja vaikka löytyykin, raportoi joka tapauksessa bugi järkeväksesi katsomaan paikkaan, että saadaan muiltakin joskus kuntoon.

Jees. Panin sfnet.atk.linuxiinkin asiasta kyselyn. Äkkiseltään tulee sellainen olo, että tuo lokaalin generointitiedosto on oikea, mutta sitä jostain syystä ei käytetä. Tosin jos generointitiedostoa muuttaa, ”sudo dpkg-reconfigure locales” muutoksen äkkää ja generoi lokaalin uudelleen... Mutta mene tiedä. Hämmentävää.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: anttimr - 16.01.09 - klo:00.44
Millä ohjelmilla olet kokeillut lajittelua? Äkkiä Xandroksella testattuna sort lajittelee esimerkkilistasi väärin, mutta OO.o Writer oikein.

Jos sort ei vain kunnioita localea.
muoks. Heikko ehdotus tuo edellinen, kyllä vika piilee jossain muualla...
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: harrykaa - 16.01.09 - klo:00.48
Tässä lainausta tuolta sivustolta:
http://www.cs.tut.fi/~jkorpela/abc.html (http://www.cs.tut.fi/~jkorpela/abc.html)

Perussääntöjä

Kirjainten perusjärjestys on tuttu:
a b c d e f g h i j k l m n o p q r s t u v x y z å ä ö.
Mutta sen lisäksi standardi määrittelee:

    * v ja w käsitetään aakkostuksessa samaksi kirjaimeksi (esimerkki järjestyksestä: Valta, Waltari, Virta), toisin kuin esim. englannin aakkostussäännöissä; standardin mukaan kuitenkin monikielisessä aineistossa voidaan v ja w aakkostaa erikseen, ja tätä noudatetaan varsin yleisesti (ja tulkiten monikielisyyden ehtoa väljästi)
    * useimmat tarkemerkit (diakriittiset merkit) kuten aksentti jätetään huomiotta, eli esim. é käsitellään aakkostuksessa kuten e; tämä koskee myös hattu-s:ää ja hattu-z:aa (š ja ž), mutta merkit å, ä ja ö toki kuuluvat vakiintuneille paikoilleen
    * isot ja pienet kirjaimet ovat samanarvoisia.

Syynä w:n käsittämiseen vain v:n muunnelmaksi lienee lähinnä se, että suomen kielessä w on ollut vanhastaan käytössä v-äänteen merkkinä. Vaikka 1900-luvulla v vakiintui, jäi w-kirjain moniin nimiin. Siltä kannalta on luonnollista esim. puhelinluettelossa aakkostaa Virtanen ja Wirtanen samoin. Toisaalta jos esimerkiksi amerikkalainen etsii nimeä suomalaisesta puhelinluettelosta, hän tuskin osaa ennalta odottaa, että v:llä ja w:llä alkavat sanat ovat sekaisin. Suuntaus on kohti w:n aakkostamista erikseen, ja tätä voidaan muodollisestikin perustella sillä, että miltei mikä tahansa luettelo on ymmärrettävissä ”monikieliseksi”. Se, miten w on aakkostettu, on usein hyvä joka tapauksessa mainita erikseen luettelon käyttöohjeessa.

Siis huomatkaa tämä: "Suuntaus on kohti w:n aakkostamista erikseen".
Kieli elää ja suuntaus (siis käytännön puhekieli) määrittää myös tulevat kielisäännöt.
Onhan nyt aivan selvää, ettei enää kirjoiteta "wanha".
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: snifi - 16.01.09 - klo:11.51
Tarkalleen ottaen sort-komennon käyttö kuuluu tuohon luokkaan "monikielisen aineiston lajittelu". Keskimääräinen suomalaisen tietokonekäyttäjän suorittama sort-komennolla tapahtuva lajittelu on nimittäin monikielisen tekstin lajittelemista (yleensä ohjelmointitarkoituksessa). Siksi v ja w tulisi sort-komennon yhteydessä myös standardin mukaan käsittää erillisinä merkkeinä. Komentorivityökaluista varmaankin löytyisi myös keino muuttaa lajittelutapaa jos oletuslajittelu tuntuu väärältä. Esimerkiksi sort-komennon manuaalisivulta löytyy teksti:

Koodia: [Valitse]
*** WARNING *** The locale specified by the  environment  affects  sort
       order.  Set LC_ALL=C to get the traditional sort order that uses native
       byte values.

Josko tätä voisi soveltaa sitten tarvittaessa toiseenkin suuntaan?
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 16.01.09 - klo:12.19
Keskustelu velloo nyt kummallisesti sen ympärillä, onko suomalainen aakkostusstandardi ”oikea” vai ”väärä” :) mutta olipa niin tai näin, standardi on standardi ja normi on normi, ja niiden mukaisesti pitäisi toimia.

Nimenomaan sort-komentoa kokeilin. Kyllä se lokaaleja kunnioittaa niin Linuxissa kuin Windowsissakin (jälkimmäisessä siis jopa paremmin). C-lokaali on nimenomaan olemassa niitä varten, jotka haluavat lajitella kuten kone, eivät kuten ihminen.

Muoks: Voisin muuten lisätä, että tuo tendenssi tai jopa tarve aakkostuksen muuttamiseen, josta Korpela puhuu, on yksi niitä asioita, joista olen hänen kanssaan vahvasti eri mieltä. Varmastikaan amerikkalainen ei tajua suomalaisessa puhelinluettelossa V:n ja W:n olevan sama kirjain, jos hänelle ei sitä kerrota. Ei samainen amerikkalainen myöskään tajuaisi, että unkarissa SZ on oma kirjaimensa, joka aakkostetaan kokonaisuudessaan erilleen S:stä (missä lisäongelmana on vielä se, että pitkä SZ kirjoitetaan SSZ, jolloin aakkoset kulkevat esim. asa < asta < asza < assza). Kielten ortografiat nyt vain ovat mutkikkaita.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: snifi - 16.01.09 - klo:13.36
Standardin mukaan monikielistä tekstiä sisältävä aineisto lajitellaan myös suomen kielessä v ja w erillisinä kirjaimina. Sort-komennon todennäköisen syöte on monikielinen teksti, joten sort-komento aakkostaa tekstin täysin standardinmukaisesti.

Korpelan esimerkki amerikkalaisturistista on keinotekoinen, eikä se kuulu standardiin vaan on hänen oma tuotoksensa.

Tarkistin mikä tilanne on uusimmassa puhelinluettelossa. Siellä V ja W on aakkostettu erillisinä kirjaimina. Osasyy siihen saattaa olla, että asun kaksikielisellä alueella, ja puhelinluettelon nimistä suuri osa on siten automaattisesti luokkaa "monikielinen teksti", jolloin v ja w tuleekin standardin mukaan aakkostaa erillisinä kirjaimina.

Open Officen Writer aakkostaa tekstin v ja w samoina kirjaimina, joten käytä sitä, jos sinulla on tarvetta aakkostaa aineistoa perinteisen tavan mukaisesti.
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 16.01.09 - klo:15.11
Standardin mukaan monikielistä tekstiä sisältävä aineisto lajitellaan myös suomen kielessä v ja w erillisinä kirjaimina.

Puhutko nyt SFS:n standardista vai suomen kirjakielen normista vai kummastakin?

Käsite ”monikielinen teksti” pitäisi minusta joka tapauksessa määritellä. Pelkkä erilähtöisten nimien läsnäolo kuten puhelinluettelossa ei tee tekstistä monikielistä missään järkevässä mielessä; tämänhän tajuaa selvimmin vertaamalla puhelinluetteloa tietosanakirjaan, jossa myös on nimiä ja jopa sanoja monista kielistä, mutta selitykset ovat kaikki yhdellä ja samalla kielellä.

Lainaus
Sort-komennon todennäköisen syöte on monikielinen teksti, joten sort-komento aakkostaa tekstin täysin standardinmukaisesti.

Päättelysi on jokseenkin nurinkurista. Lajittelujärjestyksen määrittää lokaali, jonka pitää toimia lokaalia koskevien sääntöjen mukaan, ei se, mistä ohjelmasta on kyse ja millaista syötettä sille ”todennäköisesti” lähetetään. Eri ohjelmat saavat sitten tiedon lajittelusäännöistä lokaalilta eikä jokaisen tarvitse keksiä pyörää uudelleen.

Ja jos minun OpenOfficessa (tai nyttemmin useimmin Kilessä) käsittelemistäni teksteistä puhutaan, on todennäköistä, että ne ovat monikielisiä paljon relevantimmassakin mielessä kuin puhelinluettelo: teksti kulkee joko suomeksi tai englanniksi ja sisältää vähän väliä sitaatteja joko suomeksi, englanniksi tai jollakin muulla kielellä. Lähdeluettelon aakkostus tapahtuu kuitenkin tekstin pääkielellä, ja jos se on suomi, aakkostuksessa pitää noudattaa suomen normia, että V ja W aakkostetaan yhteen.

Lainaus
Tarkistin mikä tilanne on uusimmassa puhelinluettelossa.

Vaikka puhelinluettelosi aakkostaisi W:n ennen A:ta, se ei muuta normia eikä standardia.

Muoks: Mutta asiaan taas. Kun tuosta /usr/share/i18n/locales/fi_FI-tiedostosta laventaa merkkikoodit, homma selviää vähän. Ensin nähtävästi kerrotaan, että makronillisen u:n jälkeen (lienee järjestyksessä viimeinen u:n muoto) järjestetään V ja W sekä samat merkit kaikenlaisin tarkkein varustettuna:

Koodia: [Valitse]
reorder-after ū
v <v>;V;<BAS>;<MIN>
...
w <w>;W;<BAS>;<MIN>
...

Järjestys näyttäisi tuon perusteella kuitenkin olevan juuri että ensin V, sitten W. Mutta kai täytyy olla myös jokin tapa kertoa, että V ja W pitäisi ensisijaisesti lajitella samana merkkinä ja vasta toissijaisesti (jos sama jono esiintyy sekä V:llisenä että W:llisenä) erikseen?
Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: snifi - 16.01.09 - klo:15.47
Puhutko nyt SFS:n standardista vai suomen kirjakielen normista vai kummastakin?

Puhun standardista SFS 4600.

Pelkkä erilähtöisten nimien läsnäolo kuten puhelinluettelossa ei tee tekstistä monikielistä missään järkevässä mielessä; tämänhän tajuaa selvimmin vertaamalla puhelinluetteloa tietosanakirjaan, jossa myös on nimiä ja jopa sanoja monista kielistä, mutta selitykset ovat kaikki yhdellä ja samalla kielellä.

SFS:n standardi ei ota kantaa siihen mikä tekee mistäkin monikielisen. Se jää luettelon laatijan päätettäväksi. Hänellä on siten standardin puitteissa mahdollisuus valita vaihtoehtoisista aakkostustavoista toinen.

Lajittelujärjestyksen määrittää lokaali, jonka pitää toimia lokaalia koskevien sääntöjen mukaan, ei se, mistä ohjelmasta on kyse ja millaista syötettä sille ”todennäköisesti” lähetetään. Eri ohjelmat saavat sitten tiedon lajittelusäännöistä lokaalilta eikä jokaisen tarvitse keksiä pyörää uudelleen.

Sort-komennon lajittelutapa on SFS 4600 -standardin mukainen, ja oletuksena sen tulee aakkostaa v ja w erillisinä kirjaimina.

Lähdeluettelon aakkostus tapahtuu kuitenkin tekstin pääkielellä, ja jos se on suomi, aakkostuksessa pitää noudattaa suomen normia, että V ja W aakkostetaan yhteen.

Ei vaan suomen normi on SFS 4600 -standardissa määritelty aakkostustapa, joka mahdollistaa tekstin standardinmukaisen aakkostamisen joko v ja w erillisinä kirjaimina tai v ja w samoina kirjaimina. Vierasperäiseen tekstiin standardi suosittaa kirjainten aakkostamista erillisinä.

Otsikko: Vs: Ubuntun lokaalissa bugi, miten korjata?
Kirjoitti: SuperOscar - 18.01.09 - klo:17.30
Toistaiseksi on selvinnyt (sfnet.atk.linux-ryhmässä), että kaikki nykyiset Linuxit näyttävät noudattavan standardinvastaista aakkostusta, samoin OpenSolaris, mutta Windowsin lisäksi oikein aakkostaa ainakin Solaris. Olisikohan Solaritsasta napattu fi_FI-tiedosto yhteensopiva Linuxin lokaalijärjestelmän kanssa (edes muutoksin), vai ovatko systeemit täysin yhteensopimattomat?

Muoks: Hups, luin huolimattomasti... Kalle Olavi Niemitalohan antoi oikean vastauksen. Ruotsalainen lokaali nimittäin käyttäytyy oikein, joten ei muuta kuin kopioimaan.

Edellä mainittu reorder-after-pätkä pitää korvata tällä (jätin kommentit näkyviin, auttavat ymmärtämään mitä tapahtuu):

Koodia: [Valitse]
% The letter w is normally not present in the Swedish alphabet. It
% exists in some names in Swedish and foreign words, but is accounted
% for as a variant of 'v'.  Words and names with 'w' are in Swedish
% ordered alphabetically among the words and names with 'v'. If two
% words or names are only to be distinguished by 'v' or % 'w', 'v' is
% placed before 'w'.
reorder-after <U0056>
<U0057> <v>;<BAS>;<CAP>;<w> % W
reorder-after <U0076>
<U0077> <v>;<BAS>;<MIN>;<w> % w

Sen jälkeen päivitetään lokaalit:

Koodia: [Valitse]
sudo dpkg-reconfigure locales
Ja a vot!, aakkostus toimii oikein.