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.