Noen miljøvariabler er nødvendige for morsmål støtte. Å sette dem riktig 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 at 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.
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, opprett /etc/locale.conf
filen:
cat > /etc/locale.conf << "EOF"
LANG=<ll>_<CC>.<charmap><@modifiers>
EOF
Skallprogrammet /bin/bash (her etter referert som
“skallet”)
bruker en samling oppstartsfiler for å hjelpe med å lage miljøet å
kjøre i. Hver fil har en bestemt bruk og kan påvirke pålogging og
interaktive miljøer ulikt. Filene i /etc
mappen gir globale innstillinger. Hvis
tilsvarende filer finnes i hjemmemappen, kan de overstyre de globale
innstillingene.
Et interaktivt påloggingsskall startes etter en vellykket pålogging,
ved hjelp av /bin/login, ved å lese /etc/passwd
filen. Et interaktivt
ikke-påloggingsskall er startet på kommandolinjen (f.eks.
[prompt]$
/bin/bash). Et ikke-interaktivt
skall er vanligvis tilstede når et skallskript kjører. Det er
ikke-interaktivt fordi det behandler et skript og ikke venter for
brukerinndata mellom kommandoer.
Påloggingsskallene er ofte upåvirket av
innstillingene i /etc/locale.conf
. Opprett /etc/profile
for å lese
lokalinnstillinger fra /etc/locale.conf
og eksporter dem, men still inn C.UTF-8
lokalitet i stedet hvis den kjøres i en
Linux konsoll (for å hindre programmer fra å skrive ut tegn som Linux
konsollen ikke kan gjengi):
cat > /etc/profile << "EOF"
# Begin /etc/profile
for i in $(locale); do
unset ${i%=*}
done
if [[ "$TERM" = linux ]]; then
export LANG=C.UTF-8
else
source /etc/locale.conf
for i in $(locale); do
key=${i%=*}
if [[ -v $key ]]; then
export $key
fi
done
fi
# End /etc/profile
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 LANG
, LC_CTYPE
, LC_NUMERIC
eller
noe annen miljøvariabel fra locale utdataen. Bare skill dem med
et mellomrom. Et eksempel hvor LANG
er
satt som en_US.UTF-8 men LC_CTYPE
er satt
som bare en_US er:
localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"
Vennligst merk at localectl kommandoen fungerer ikke i chroot miljøet. Den kan bare brukes etter at LFS systemet er startet opp med systemd.
C
(standard) og en_US
(den anbefalte for engelske brukere i USA) er
annerledes. 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 unknown
8-bit
). Det foreslås at du bruker C
lokalitet kun hvis du er sikker på at du aldri vil
trenge 8-bits tegn.