In al zijn pracht is I18N niet FreeBSD specifiek maar een conventie. Het FreeBSD Project moedigt iedereen aan FreeBSD te helpen deze conventie te gebruiken.
Lokalisatie-instellingen zijn gebaseerd op drie hoofdtermen: Taalcode, Landcode en Codering. Localenamen zijn als volgt opgebouwd:
Taalcode
_Landcode
.Codering
Om een FreeBSD-systeem (of een ander I18N-ondersteunend UNIX® achtig systeem) te lokaliseren naar een bepaalde taal, moet de gebruiker de codes voor het specifieke land en taal achterhalen. Landcodes geven applicaties aan welke variatie van de gegeven taal gebruikt moet worden. Ook webbrowsers, SMTP/POP-servers, webservers, enzovoorts maken beslissingen gebaseerd op die codes. Hieronder staan voorbeelden van taal- en landcodes:
Taal- en landcode | Omschrijving |
---|---|
en_US | Engels - Verenigde Staten |
ru_RU | Russisch voor Rusland |
zh_TW | Traditioneel Chinees voor Taiwan |
Een complete lijst van beschikbare locales is beschikbaar via:
%
locale -a
Sommige talen gebruiken andere ASCII-coderingen dan 8-bit, wijde of multibyte karakters, zie multibyte(3). Oudere programma's herkennen die niet en interpreteren ze foutief als controlekarakters aan. Afhankelijk van de implementatie moeten gebruikers eventueel een applicatie met wijde of multibyte karakterondersteuning compileren, of hem correct instellen. Om wijde of multibyte karakters in te kunnen voeren en te kunnen verwerken levert de FreeBSD Portscollectie voor elke taal programma's. Hiervoor staat I18N-documentatie in de respectievelijke FreeBSD Port.
Voor het bouwen van een gewenste applicatie met lokalisatie is het verstandig de applicatiedocumentatie te bekijken om te bepalen hoe de juiste waarden doorgegeven kunnen worden naar configure, Makefile of de compiler.
Houd rekening met:
Taalspecifieke enkele C-karakters karakterverzamelingen (zie multibyte(3)), bijvoorbeeld ISO8859-1, ISO-8859-15, KOI8-R of CP437.
Wijde of multibyte coderingen, bijvoorbeeld EUC of Big5.
Een lijst met actieve karakterverzamelingen staat bij de IANA Registry.
FreeBSD gebruikt in plaats hiervan X11-compatible locale-coderingen.
In het FreeBSD Ports en Package systeem hebben
I18N-applicaties I18N
in hun naam zodat ze
eenvoudig herkend kunnen worden. Toch ondersteunen ze niet
altijd iedere mogelijk gewenste taal.
Meestal is het voldoende om de waarde van de localenaam
te exporteren als LANG
in de login-shell. Dit
kan door die waarde in ~/.login_conf
van
de gebruiker of in ~/.profile
,
~/.bashrc
of
~/.cshrc
) van de gebruiker te zetten.
Het is niet nodig om localedeelverzamelingen als
LC_CTYPE
of LC_CTIME
in te
stellen. Bij de taalspecifieke FreeBSD documentatie staat vaak
nog informatie.
De twee volgende omgevingsvariabelen moeten in de instellingenbestanden ingesteld worden:
LANG
voor de POSIX® setlocale(3)
functies.
Dit is inclusief het instellen van de gebruikers-shell, het instellen van de specifieke applicatie en de instellingen voor X11.
Er zijn twee methoden om de locale in te stellen en beiden worden hieronder beschreven. De eerste (aanbevolen) methode is door middel van het toekennen van omgevingsvariabelen in de loginklasse en de tweede is mogelijk door middel van het toevoegen van de omgevingsvariabelen aan het opstartbestand van de systeem-shell.
Deze methode biedt de mogelijkheid om omgevingsvariabelen die nodig zijn voor de localenaam en MIME karakterverzamelingen éénmalig voor elke mogelijke shell toe te kennen in plaats van door toekenning via het opstartbestand van elke shell. Gebruikersinstellingen kunnen door de gebruiker zelf worden gemaakt en voor Beheerdersinstellingen zijn superuser-rechten nodig.
Hieronder staat een minimaal voorbeeld van een
.login_conf
bestand in de thuismap
van een gebruiker die beide variabelen heeft ingesteld op
Latin-1 codering:
me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:
Hieronder staat is een voorbeeld van een
.login_conf
die variabelen instelt
voor traditioneel Chinees in BIG-5 codering. Er zijn
veel andere variabelen ingesteld zijn omdat sommige
software localevariabelen niet correct respecteert voor
Chinees, Japans, en Koreaans.
# Gebruikers die geen valuta eenheden of tijdformaten voor Taiwan # willen gebruiken kunnen handmatig elke variabele wijzigen. me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": # Stel gcin in als XIM invoerserver
Zie Beheerdersinstellingen en login.conf(5) voor meer details.
Er dient gecontroleerd te worden of loginklasse voor
gebruikers, /etc/login.conf
, de
juiste taal instelt door de volgende instellingen in
/etc/login.conf
:
taalnaam
|accountstitel
:\ :charset=MIME_karakterverzameling
: :lang=localenaam
:\ :tc=default:
Voor het bovenstaande voorbeeld dat gebruik maakt van Latin-1 ziet dat er als hieronder uit:
german|Duitse gebruikersaccounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default:
Voer voordat de gebruikers login class wordt gewijzigd het volgende uit:
#
cap_mkdb /etc/login.conf
om de nieuwe configuratie in
/etc/login.conf
zichtbaar te maken
voor het systeem.
Met vipw
kunnen nieuwe gebruikers
toegevoegd worden en de instellingen dienen ongeveer als
volgt uit te zien:
gebruiker:wachtwoord:1111:11:taal
:0:0:Gebruikersnaam:/home/gebruiker:/bin/sh
Met adduser
kunnen nieuwe
gebruikers toegevoegd worden. Hierna dient
één van de volgende stappen uitgevoerd te
worden:
defaultclass =
taal
instellen
in /etc/adduser.conf
. In dit
geval dient er voor alle gebruikers van andere talen
een default
klasse ingevoerd te
worden.
Er kan ook gekozen worden voor een antwoord op de vraag over taal vanuit adduser(8):
Enter login class: default []:
Ook kan het volgende gebruikt worden voor elke gebruiker die een andere taal gebruikt:
#
adduser -class taal
Als pw(8) wordt gebruikt om nieuwe gebruikers toe te voegen:
#
pw useradd gebruikersnaam -L taal
Deze methode wordt niet aanbevolen omdat er instellingenen nodig zijn voor elke mogelijke shell. Het advies is de Methode Loginklasse te gebruiken.
Om de localenaam en MIME karakterverzameling toe te
voegen kunnen gewoon twee omgevingsvariabelen ingesteld
worden, zoals hieronder te zien is, in
/etc/profile
en/of
/etc/csh.login
opstartbestanden voor
shells. Hier wordt de Duitse taal als voorbeeld
gebruikt:
In /etc/profile
:
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
Of in /etc/csh.login
:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
Het is ook mogelijk de bovenstaande instructies toe te
toevoegen /usr/share/skel/dot.profile
(ongeveer gelijk aan wat hierboven in
/etc/profile
is gebruikt) of aan
/usr/share/skel/dot.login
(ongeveer gelijk aan wat hierboven in
/etc/csh.login
is gebruikt).
Voor X11:
In $HOME/.xinitrc
:
LANG=de_DE.ISO8859-1; export LANG
Of:
setenv LANG de_DE.ISO8859-1
Afhankelijk van de shell (zie boven).
Voor alle enkele C-karakters karakterverzamelingen worden
de juiste lettertypen voor het console ingesteld in
/etc/rc.conf
voor de taal in kwestie
met:
font8x16=lettertypenaam
font8x14=fontnaam
font8x8=fontnaam
De lettertypenaam
komt uit de
map /usr/share/syscons/fonts
zonder het
achtervoegsel .fnt
.
De gebruiker dient ervoor te zorgen dat indien nodig de juiste
enkele C-karakters karakterverzameling wordt ingesteld met
/stand/sysinstall
. In
sysinstall kan
en
gekozen worden. Het is ook
mogelijk het volgende aan /etc/rc.conf
toe te voegen:
scrnmap=schermmappingnaam
keymap=toetsenmappingnaam
keychange="fkey_nummer sequentie
"
schermmappingnaam
komt uit de
map /usr/share/syscons/scrnmaps
zonder het
achtervoegsel .scm
. Meestal is een
schermmapping met een overeenkomstig gemapt lettertype nodig
als workaround om bit 8 naar bit 9 uit te breiden op een
lettertype–karaktermatrix van een VGA-adapter in
pseudografische gebieden, dat wil zeggen om letters uit dat
gebied te halen als het schermlettertype een bit 8 kolom
gebruikt.
Als de moused daemon is
ingeschakeld met de onderstaande regel in
/etc/rc.conf
, dan wordt aangeraden de
muiscursorinformatie in de volgende paragraaf te
bekijken.
moused_enable="YES"
Standaard neemt de muiscursor van het syscons(4)
stuurprogramma het bereik 0xd0-0xd3 van de tekenverzameling in
beslag. Als een ingestelde taal dit bereik gebruikt, moet het
cursorbereik hierbuiten gehaald worden. Om de workaround voor
FreeBSD aan te zetten kan de volgende regel aan
/etc/rc.conf
toegevoegd worden:
mousechar_start=3
De toetsenmappingnaam
komt uit
de map /usr/share/syscons/keymaps
zonder
het achtervoegsel .kbd
. Als niet precies
duidelijk is welke toetsenmapping te gebruiken, kan de
toetsenmapping getest worden met kbdmap(1) zonder opnieuw
op te starten.
keychange
is nodig om functietoetsen zo
te programmeren dat ze overeenkomen met het geselecteerde
terminaltype omdat functietoetssequenties niet in de
toetsenmapping gedefinieerd kunnen worden.
Er dient ook een controle te zijn op een juiste instelling
van het juiste terminaltype voor het console in
/etc/ttys
voor alle
ttyv*
regels. De huidige instellingen
zijn:
Karakterverzameling | Terminaltype |
---|---|
ISO8859-1 of ISO-8859-15 | cons25l1 |
ISO8859-2 | cons25l2 |
ISO8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (VGA standaardinstelling) | cons25 |
US-ASCII | cons25w |
Voor wijde of multibyte karaktertalen kan je juiste
FreeBSD port in de map
/usr/ports/taal
gebruikt worden. Sommige ports verschijnen als console terwijl
het systeem ze als serieële vtty ziet. Er dienen dus
voldoende vtty's gereserveerd te zijn voor zowel X11 als de
pseudo-serieële console. Hier is een gedeeltelijke lijst
van applicaties voor het gebruik van andere talen in
console:
Taal | Locatie |
---|---|
traditioneel Chinees (BIG-5) | chinese/big5con |
Japans | japanese/kon2-16dot of japanese/mule-freewnn |
Koreaans | korean/han |
Hoewel X11 geen deel is van het FreeBSD Project wordt het hier wel besproken voor FreeBSD gebruikers. Meer details zijn te vinden op de Xorg website of op de website van een andere X11 server die gebruikt wordt.
In ~/.Xresources
kunnen
applicatiespecifieke I18N instellingen gemaakt worden als
lettertypen, menu's, enzovoort.
Eerst moet Xorg server (x11-servers/xorg-server), geïnstalleerd worden en daarna de TrueType® lettertypen van de taal. Door de gewenste locale in te stellen worden de menu's en dergelijke in de gekozen taal weergegeven.
Sommige enkele C-karakters karakterverzamelingen zijn standaard hardware-gecodeerd in printers. Voor wijde of multibyte karakterverzamelingen is een speciale installatie nodig en het gebruik van apsfilter wordt dan aangeraden. Een document kan ook naar PostScript® of PDF formaat omgezet worden door gebruik te maken van taalspecifieke conversieprogramma's.
Het FreeBSD Snelle Bestandssysteem (FFS) is 8-bit schoon, dus het kan gebruikt worden met elke enkele C-karakters karakterverzameling (zie multibyte(3)), maar er is geen karakterverzamelingnaam opgeslagen in het bestandssysteem. Het is dus rauw 8-bit en het weet niets van coderingsbevelen. Officieel ondersteunt FFS nog geen enkele vorm van wijde of multibyte karakterverzamelingen. Toch hebben sommige wijde of multibyte karakterverzamelingen onafhankelijke patches voor FFS die ondersteuning inschakelen. Dit zijn tijdelijke oplossingen of hacks die niet overdraagbaar zijn en daarom is besloten ze niet in de source tree op te nemen. Op de websites van de talen staan de patchbestanden en meer informatie.
Voor het FreeBSD MS-DOS® bestandssysteem kan geschakeld worden tussen MS-DOS®, Unicode karakterverzamelingen en gekozen FreeBSD bestandssysteem-karakterverzamelingen. mount_msdosfs(8) beschijft de details.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.