/etc/locale.conf
filen nedenfor setter
noen miljøvariabler som er nødvendige for morsmålsstøtte. Å sette dem
ordentlig resulterer i:
Utdataene fra programmer blir oversatt til ditt morsmål
Riktig klassifisering av tegn i bokstaver, sifre og andre klasser. Dette er nødvendig for bash å akseptere ordentlig ikke-ASCII-tegn i kommandolinjer i ikke-engelske språk
Riktig alfabetisk sorteringsrekkefølge for landet
Den riktige standard papirstørrelsen
Riktig formatering av penge-, tids- og datoverdier
Erstatt <ll>
nedenfor
med koden på to bokstaver for ønsket språk (f.eks., “en”) og
<CC>
med
tobokstavskoden for det aktuelle land (f.eks., “GB”).
<charmap>
bør
erstattes med den kanoniske tegntabellen for din valgte lokalitet.
Valgfri modifikatorer som f.eks “@euro” kan
også være tilstede.
Listen over alle lokaliteter som støttes av Glibc kan fås ved å kjøre følgende kommando:
locale -a
Tegntabellene kan ha en rekke aliaser, f.eks., “ISO-8859-1” er
også referert til som “iso8859-1” og “iso88591”.
Noen applikasjoner kan ikke håndtere de forskjellige synonymene
riktig (f.eks. krever “UTF-8” er skrevet som “UTF-8”, ikke
“utf8”), så det er det sikreste i de
fleste tilfeller å velge det kanoniske navnet for en bestemt
lokalitet. Å bestemme det kanoniske navnet, kjør følgende kommando,
hvor <locale name>
er
utdataen gitt av locale
-a til din foretrukne lokalitet (“en_GB.iso88591” i vårt eksempel).
LC_ALL=<locale name>
locale charmap
For “en_GB.iso88591” lokalitet, kommandoen over vil skrive ut:
ISO-8859-1
Dette resulterer i en endelig lokaleinnstilling for “en_GB.ISO-8859-1”. Det er viktig at lokaliteten funnet ved hjelp av heuristikken ovenfor testes på forhånd før det legges til Bash oppstartsfilene:
LC_ALL=<locale name> locale language LC_ALL=<locale name> locale charmap LC_ALL=<locale name> locale int_curr_symbol LC_ALL=<locale name> locale int_prefix
Kommandoene ovenfor skal skrive ut språknavnet, tegnkodingen som brukes av lokaliteten, den lokale valutaen og prefikset for å ringe før telefonnummeret for å komme inn i landet. Hvis noen av kommandoene ovenfor mislykkes med en melding som ligner på den som vises nedenfor, betyr dette at lokaliteten din enten ikke ble installert i kapittel 8 eller at det ikke støttes av standardinstallasjonen av Glibc.
locale: Cannot set LC_* to default locale: No such file or directory
Hvis dette skjer, bør du enten installere ønsket lokalitet ved å bruke localedef kommando, eller vurder å velge en annen lokalitet. Ytterligere instruksjoner forutsetter at det ikke er slike feilmeldinger fra Glibc.
Noen pakker utover LFS kan også mangle støtte for din valgte lokalitet. Et eksempel er X-biblioteket (en del av X Window System), som sender ut følgende feilmelding hvis lokaliteten ikke samsvarer nøyaktig med et av tegnkart navn i interne filer:
Warning: locale not supported by Xlib, locale set to C
I flere tilfeller forventer Xlib at karakterkartet vil bli oppført i store bokstaver med kanoniske bindestreker. For eksempel "ISO-8859-1" heller enn "iso88591". Det er også mulig å finne en passende spesifikasjon ved å fjerne tegnkart delen av lokalitetsspesifikasjonen. Dette kan sjekkes ved å kjøre locale charmap kommandoen i begge lokaliteter. For eksempel måtte man endre "de_DE.ISO-8859-15@euro" til "de_DE@euro" for å få denne lokaliteten gjenkjent av Xlib.
Andre pakker kan også fungere feil (men kanskje ikke nødvendigvis vise eventuelle feilmeldinger) hvis lokalenavnet ikke oppfyller deres forventninger. I disse tilfellene, undersøke hvordan andre Linux distribusjoner støtter lokaliteten din kan gi noe nyttig informasjon.
Når de riktige lokale innstillingene er bestemt, oppretter du
/etc/locale.conf
filen:
cat > /etc/locale.conf << "EOF"
LANG=<ll>_<CC>.<charmap><@modifiers>
EOF
Merk at du kan endre /etc/locale.conf
med systemd localectl
verktøyet. For å bruke localectl for eksempelet ovenfor,
kjør:
localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>
"
Du kan også spesifisere andre språkspesifikke miljøvariabler som
f.eks som LANG
, LC_CTYPE
, LC_NUMERIC
eller
enhver annen miljøvariabel fra locale utdata. Bare skille dem med
et mellomrom. Et eksempel hvor LANG
er
satt som en_US.UTF-8 men LC_CTYPE
er satt
som en_US er:
localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"
Vær oppmerksom på at localectl kommandoen fungerer ikke i chroot miljøet. Det kan bare brukes etter at LFS systemet er startet opp med systemd.
“C” (standard) og “en_US” (det anbefalte for engelske brukere i USA) lokalitetene er forskjellige. “C” bruker US-ASCII 7-biters tegnsett, og behandler byte med det høye bitsettet som ugyldige tegn. Det er derfor, f.eks ls kommandoen erstatter dem med spørsmålstegn i det lokalet. Også et forsøk på å sende post med slike tegn fra Mutt eller Pine resulterer i at ikke-RFC-samsvarende meldinger sendes (tegnsettet i den utgående posten er indikert som “ukjent 8-bit”). Det foreslås at du bruker “C” lokalitet kun hvis du er sikker på at du aldri vil trenge 8-bits tegn.