Re: gnome-media

From: Göran Uddeborg (goeran_at_uddeborg.pp.se)
Date: 2001-01-10 22:51:49

Christian Rose writes:
> Göran Uddeborg wrote:
> > > Nej, inte i huvudet på en po-fil...
> > 
> > Jaså?  Varför inte?  Finns det några problem med att ha
> > icke-ASCII-tecken där?  Jag brukar ha både "©" och "ö".
> 
> Problemet är väl att huvudet ska läsas av många olika program som kanske
> inte förstår latin1. Programmet kanske antar att huvudet är i utf-8, och
> då blir icke-ASCII-tecken fel. Det är ju först i huvudet som det står
> vilken teckenkodning det används i meddelandena i resten av filen, men
> huvudet i sig 

Men här talar vi inte om det egentliga huvudet, utan om kommentaren
som hör till det.

> > Jag har 33 olika alias för mig själv. :-)  (Administrativa som också
> > går till mig oräknade.)
> 
> Oj, herrejösses, jag har bara sex icke-administrativa alias...

Jo, men du har ju inga svenska tecken som kan gå sönder att ta hand om ...

> Martin Norbäck wrote:
> > Spela in till ett kassettband kan man väl säga?
> 
> Kan man det? Jag har aldrig hört det själv.

Inte jag heller.

> > Problemet med åäö i filnamn är att vissa inte kan visa dem, att vissa
> > använder till exempel UTF-8 för filnamn och att de då blir fel. Bäst att
> > undvika.
> 
> Jag förstår ditt bekymmer men tror samtidigt själv att det är ganska
> säkert att anta att filer eller mappar som heter standardnamnet
> "namnlös" nästan uteslutande bara sprids och förpestar lokala system...
> Iaf hoppas jag det =)

Moderna implementationer av gettext, jag tänker på den i glibc 2.2,
konverterar strängen den hittar i meddelandefilen till den
teckenkodning som är angiven i miljön.  Meddelandefilen innehåller ju
information om vilken kodning den använder.  Så det "ö" som står i
"namnlös", liksom alla andra ö:n, betyder just tecknet "ö", och inte
någon kodning av det.  Om du har angivit en annan teckenkodning än den
som finns i meddelandefilen så översätts det automatiskt på vägen.

Låt mig visa med ett exempel.  (De på listan som inte alls
programmerar kan ju hoppa över detta.)  Jag skriver programmet

    #include <locale.h>
    #include <libintl.h>
    #include <stdio.h>

    int main (int argc, char *argv[])
    {
      setlocale(LC_ALL, "");
      textdomain("libc");
      puts(gettext("Permission denied"));

      return 0;
    }

Det försöker alltså skriva texten "Permission denied" från libc i
enlighet med lokalen.  Om jag kör det med standardlokalen sv_SE,
vilken har ISO-8859-1 som skönsvärde

    22:44 uebn> env LANG=sv_SE ./main
    Åtkomst nekas

Om jag däremot använder lokalen C för teckenkodning så finns det inget
"ö" i den, utan det skrivs ett frågetecken istället.

    22:46 uebn> env LANG=sv_SE LC_CTYPE=C ./main
    ?tkomst nekas

Och om jag tar en lokal med UTF8-tecken så blir det UTF8.

    22:49 uebn> env LANG=sv_SE LC_CTYPE=ko_KR.utf8 ./main | od -c
    0000000   Ã 205   t   k   o   m   s   t       n   e   k   a   s  \n
    0000017

Att jag använder koreanska beror bara på att det råkar vara den enda
färdiga lokal som har utf8-kodning på mitt system.  Hade det funnits
en färdig sv_SE.utf8 så hade jag naturligtvis bara behövt sätta LANG
till det.

Arkiv genererat av hypermail 2.1.1.