---
title: Бүлэг 24. Локалчлал - I18N/L10N-ийн хэрэглээ болон тохируулга
part: хэсэг III. Системийн Удирдлага
prev: books/handbook/virtualization
next: books/handbook/cutting-edge
showBookMenu: true
weight: 28
path: "/books/handbook/l10n/"
---

[[l10n]]
= Локалчлал - I18N/L10N-ийн хэрэглээ болон тохируулга
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 24
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/l10n/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[l10n-synopsis]]
== Ерөнхий агуулга

FreeBSD нь дэлхий даяар байрласан хэрэглэгчид болон хувь нэмэр болгон оруулагчидтай маш тархмал төсөл юм. Энэ бүлэг Англиар ярьдаггүй хэрэглэгчдэд жинхэнэ ажлаа хийх боломж олгох FreeBSD-ийн интернационалчлал болон локалчлалын боломжуудыг хэлэлцэх болно. Систем болон програмын түвшингүүдийн аль алинд нь i18n шийдлийн олон үзэл бодлууд байдаг бөгөөд бид шаардлагатай тохиолдолд илүү тусгайлсан баримтын эхүүдийг хэрэглэгчдэд зааж өгөх болно.

Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:

* Орчин үеийн үйлдлийн системүүд дээр хэлнүүд болон локалууд (locales) нь хэрхэн кодчилогддог талаар.
* Өөрийн нэвтрэх бүрхүүлийн хувьд локалыг хэрхэн тохируулах талаар.
* Англи биш хэлнүүдийн хувьд өөрийн консолыг хэрхэн тохируулах талаар.
* X Цонхны Системийг өөр хэлнүүдтэй хэрхэн үр дүнтэйгээр ашиглах талаар.
* i18n-нийцтэй програмуудыг бичих талаар илүү мэдээллийг хаанаас олох талаар.

Энэ бүлгийг уншихаасаа өмнө, та дараах зүйлсийг мэдэх шаардлагатай:

* Нэмэлт гуравдагч этгээдийн програмуудыг (crossref:ports[ports,Програм суулгах. Багцууд болон портууд]) хэрхэн суулгах талаар.

[[l10n-basics]]
== Үндсүүд

=== I18N/L10N гэж юу вэ?

Хөгжүүлэгчид интернационалчлалыг I18N гэж internationalization гэсэн үгийн эхний болон эцсийн үсгийн хоорондох үсгийн тоог оруулан богиносгосон юм. L10N нь бас адил журмаар "localization"-с улбаалан нэрлэгдсэн юм. Хоёулаа нэгдсэн I18N/L10N аргууд, протоколууд болон програмууд нь хэрэглэгчдэд өөрсдийнх нь сонгосон хэлнүүдийг ашиглах боломжийг олгодог.

I18N програмууд нь сангуудын доорх I18N хэрэгслүүдийг ашиглан програмчлагдсан байдаг. Энэ нь энгийн файлыг бичих болон харуулагдсан цэснүүд, текстүүдийг хэл бүр уруу орчуулах боломжийг хөгжүүлэгчдэд олгоно. Бид энэ дадлыг мөрдөхийг програм зохиогчдоос шаргуу хүсдэг.

=== I18N/L10N-ийг би яагаад ашиглах ёстой гэж?

I18N/L10N нь Англи хэлнээс өөр хэл дээр өгөгдлийг харах, оруулах, эсвэл боловсруулахыг таныг хүсэх үед хэрэглэгддэг.

=== I18N чармайлтад ямар хэлнүүд дэмжигдсэн байдаг вэ?

I18N болон L10N нь зөвхөн FreeBSD зориулагдаагүй. Одоогоор хэрэглэгч дэлхийн гол гол хэлнүүдийн ихэнхийг сонгож болох бөгөөд гэхдээ энэ нь энд байгаа жагсаалтаар хязгаарлагдахгүй: Хятад, Герман, Япон, Солонгос, Франц, Орос, Вьетнам болон бусад хэлнүүдийг дурдаж болно.

[[using-localization]]
== Локалчлалыг ашиглах нь

Өөрийн бүх сүр жавхлангаараа I18N нь зөвхөн FreeBSD-д зориулагдаагүй бөгөөд энэ нь ёс заншил болсон байдаг. Энэ ёс заншлыг дагаж FreeBSD-д туслахыг бид танаас хүсдэг.

Локалчлалын тохируулгууд нь гурван гол ойлголт дээр тулгуурладаг: Хэлний код, Улсын код ба Кодчилол. Локалын нэрс эдгээр хэсгүүдээс дараах маягаар бүрэлдэн тогтоно:

[.programlisting]
....
LanguageCode_CountryCode.Encoding
....

=== Хэл болон Улсын кодууд

FreeBSD системийг тухайн хэл уруу (эсвэл I18N дэмждэг бусад UNIX(R) төст системүүд дээр) локалчлахын тулд хэрэглэгч тухайн улс болон хэлийг (улсын код нь програмд өгөгдсөн хэлний аль хувилбарыг ашиглахыг хэлж өгдөг) заах кодуудыг олж мэдэх хэрэгтэй. Мөн вэб хөтчүүд, SMTP/POP серверүүд зэрэг нь тэдгээр дээр тулгуурлан шийдэл гаргадаг. Дараах нь хэл/улсын кодны жишээнүүд юм:

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Хэл/Улсын код
| Тайлбар

|en_US
|English буюу Англи - Нэгдсэн Улс

|ru_RU
|Орос улсад зориулсан Russian буюу Орос

|zh_TW
|Тайваньд зориулсан Уламжлалт Хятад хэл
|===

Байгаа локалчлалын жагсаалтыг дараах тушаалаар авч болно:

[source,shell]
....
% locale -a
....

=== Кодчилолууд

Зарим хэлнүүд 8-бит, өргөн эсвэл олон байт тэмдэгтүүд зэрэг ASCII биш кодчилолыг ашигладаг. Олон байт тэмдэгтүүдийн талаар илүү дэлгэрэнгүйг man:multibyte[3]-ээс үзнэ үү. Хуучин програмууд тэдгээрийг танидаггүй бөгөөд тэдгээрийг хянах тэмдэгтүүд гэж алддаг. Шинэ програмууд ихэвчлэн 8-бит тэмдэгтүүдийг танидаг. Шийдлээс хамаараад хэрэглэгчид програмыг өргөн эсвэл олон байт тэмдэгтийн дэмжлэгтэйгээр эмхэтгэх эсвэл зөвөөр тохируулах шаардлагатай байж болох юм. Өргөн эсвэл олон тэмдэгтүүдийг оруулж процесс хийж чадахын тулд link:https://www.FreeBSD.org/ports/[FreeBSD портын цуглуулга] хэл бүрийг өөр өөр програмуудтайгаар хангадаг. FreeBSD порт дахь харгалзах I18N баримтжуулалтаас лавлана уу.

Ялангуяа програмыг хэрхэн зөв тохируулах эсвэл зөв утгуудыг configure/Makefile/эмхэтгэгчид дамжуулахыг шийдэхдээ програмын баримтжуулалтаас харах хэрэгтэй болно.

Санаж байх ёстой зарим нэг зүйлүүд нь:

* Тухайн хэлний ганц C chars тэмдэгтийн олонлогууд (man:multibyte[3]-г үзнэ үү), өөрөөр хэлбэл ISO8859-1, ISO8859-15, KOI8-R, CP437.
* Өргөн эсвэл олон байт кодчилол, өөрөөр хэлбэл EUC, Big5.

Та тэмдэгтийн олонлогуудын идэвхтэй жагсаалтыг http://www.iana.org/assignments/character-sets[IANA Registry]-с шалгаж болно.

[NOTE]
====
FreeBSD нь X11-нийцтэй локалын кодчилолуудыг харин ашигладаг.
====

=== I18N програмууд

FreeBSD-ийн портууд болон багцын системд I18N програмууд нь амархан танигдахын тулд нэрэндээ `I18N`-тайгаар нэрлэгддэг. Гэхдээ тэдгээр нь хэрэгтэй хэлийг үргэлж дэмжсэн байдаггүй.

[[setting-locale]]
=== Локалыг тохируулах

Нэвтрэх бүрхүүл дээр локалын нэрний утгыг `LANG` уруу экспорт хийхэд ихэвчлэн хангалттай байдаг. Үүнийг хэрэглэгчийн [.filename]#~/.login_conf# файл эсвэл хэрэглэгчийн бүрхүүлийн эхлүүлэх файлд ([.filename]#~/.profile#, [.filename]#~/.bashrc#, [.filename]#~/.cshrc#) зааж өгч болно. `LC_CTYPE`, `LC_CTIME` зэрэг локал дэд олонлогуудыг тохируулах хэрэггүй. Дэлгэрэнгүй мэдээллийн талаар тухайн хэлний FreeBSD-ийн баримтаас лавлана уу.

Та өөрийн тохиргооны файлууддаа дараах хоёр орчны хувьсагчийг тохируулах хэрэгтэй:

* POSIX(R) man:setlocale[3] төрлийн функцуудад зориулсан `LANG`
* Програмуудын MIME тэмдэгтийн олонлогт зориулсан `MM_CHARSET`

Энэ нь хэрэглэгчийн бүрхүүлийн тохиргоо, тухайн програмын тохиргоо болон X11-ийн тохиргоог агуулдаг.

==== Локал аргуудыг тохируулах

Локалыг тохируулах хоёр арга байдаг бөгөөд хоёуланг доор тайлбарласан байгаа. Эхнийхийг (бидний зөвлөж байгааг) <<login-class,нэвтрэх ангилал>>д орчны хувьсагчуудыг зааж хоёр дахийг системийн бүрхүүлийн <<startup-file,эхлүүлэх файл>>д орчны хувьсагчийн заалтуудыг нэмснээр хийдэг.

[[login-class]]
===== Нэвтрэх ангилалуудын арга

Энэ арга нь бүрхүүл бүрийн эхлүүлэх файлд тухайн бүрхүүлийн заалтуудыг нэмэхийн оронд локалын нэр болон MIME тэмдэгтийн олонлогуудад хэрэгтэй орчны хувьсагчуудыг боломжит бүрхүүл бүрийн хувьд нэг л удаа заах боломжийг олгодог. <<usr-setup,Хэрэглэгчийн түвшний тохируулгыг>> хэрэглэгч өөрөө хийж болох бөгөөд <<adm-setup,Администраторын түвшний тохируулга>> нь супер хэрэглэгчийн зөвшөөрлүүдийг шаарддаг.

[[usr-setup]]
====== Хэрэглэгчийн түвшний тохируулга

Энд хэрэглэгчийн гэр сан дотор байрлах Latin-1 кодчилолын хувьд хоёр хувьсагчийг нь тохируулж өгсөн [.filename]#.login_conf# файлын хамгийн бага жишээ байна:

[.programlisting]
....
me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:
....

Энд BIG-5 кодчилолд Уламжлалт Хятад хэлд зориулан хувьсагчуудыг тохируулж байгаа [.filename]#.login_conf# файлын жишээ байна. Зарим програм хангамжууд нь Хятад, Япон болон Солонгос хэлний хувьд локалын хувьсагчуудыг зөвөөр хүндэлдэггүй учраас илүү олон хувьсагчуудыг тохируулсныг эндээс харж болно.

[.programlisting]
....
#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
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": #Set gcin as the XIM Input Server
....

Илүү дэлгэрэнгүйг <<adm-setup,Администраторын түвшний тохируулга>> болон man:login.conf[5]-с үзнэ үү.

[[adm-setup]]
===== Администраторын түвшний тохируулга

[.filename]#/etc/login.conf# дахь хэрэглэгчийн нэвтрэх ангилал зөв хэл тохируулсныг шалгана. Эдгээр тохируулгууд [.filename]#/etc/login.conf#-д байгаа эсэхийг шалгаарай:

[.programlisting]
....
language_name:Account Type Description:\
	:charset=MIME_charset:\
	:lang=locale_name:\
	:tc=default:
....

Бидний урдны жишээний адил Latin-1-г сонговол энэ нь иймэрхүү харагдана:

[.programlisting]
....
german|German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:
....

Хэрэглэгчийн нэвтрэх ангиллуудыг өөрчлөхөөсөө өмнө дараах тушаалыг ажиллуулж

[source,shell]
....
# cap_mkdb /etc/login.conf
....

шинэ тохиргоог системд харагдуулахаар [.filename]#/etc/login.conf#-д хийнэ.

===== Нэвтрэх ангиллуудыг man:vipw[8] ашиглан солих

Шинэ хэрэглэгчид нэмэхийн тулд `vipw` тушаал ашиглан оруулгыг иймэрхүү болгоно:

[.programlisting]
....
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
....

===== Нэвтрэх ангиллуудыг man:adduser[8] ашиглан солих

Шинэ хэрэглэгчид нэмэхийн тулд `adduser` тушаал ашиглан доор дурдсаныг хийнэ:

* [.filename]#/etc/adduser.conf# файлд `defaultclass = language`-г тохируулна. Та энэ тохиолдолд бусад хэлнүүдийн бүх хэрэглэгчдэд зориулан `анхдагч` ангилалыг оруулах хэрэгтэйг санах хэрэгтэй.
* man:adduser[8]-с гарч ирэх асуулт бүрт 
+
[source,shell]
....
Enter login class: default []: 
....
+
асуултад тухайн хэлийг зааж өгөх бас нэг хувилбар байж болно.

* Өөр нэг арга нь нэмэхээр хүсэж байгаа өөр хэлний хэрэглэгч бүрийн хувьд доор дурдсаныг ашиглах явдал юм:
+
[source,shell]
....
# adduser -class language
....

===== Нэвтрэх ангиллуудыг man:pw[8] ашиглан солих

Хэрэв та man:pw[8]-г шинэ хэрэглэгч нэмэхийн тулд ашиглаж байгаа бол үүнийг иймэрхүү маягаар дуудаарай:

[source,shell]
....
# pw useradd user_name -L language
....

[[startup-file]]
===== Бүрхүүлийн эхлүүлэх файл арга

[NOTE]
====
Энэ аргыг зөвлөдөггүй, учир нь сонгосон боломжит бүрхүүл програм бүрийн хувьд өөр тохируулгыг шаарддаг. Оронд нь <<login-class,Нэвтрэх ангиллын аргыг>> ашиглаарай.
====

Локалын нэр болон MIME тэмдэгтийн олонлогийг нэмэхийн тулд доор үзүүлсэн хоёр орчны хувьсагчийг [.filename]#/etc/profile#-д болон/эсвэл бүрхүүлийн эхлүүлэх файл [.filename]#/etc/csh.login#-д зааж өгнө. Бид Герман хэлийг доор жишээ болгон ашиглах болно:

[.filename]#/etc/profile# файлд:

[.programlisting]
....
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
....

Эсвэл [.filename]#/etc/csh.login# файлд:

[.programlisting]
....
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
....

Өөрөөр та дээрх заавруудыг [.filename]#/usr/shared/skel/dot.profile# файлд (дээрх [.filename]#/etc/profile#-д ашигласантай адил) эсвэл [.filename]#/usr/shared/skel/dot.login# файлд (дээрх [.filename]#/etc/csh.login#-д ашигласантай адил) нэмж болно.

X11-ийн хувьд:

[.filename]#$HOME/.xinitrc# файлд:

[.programlisting]
....
LANG=de_DE.ISO8859-1; export LANG
....

Эсвэл:

[.programlisting]
....
setenv LANG de_DE.ISO8859-1
....

Таны бүрхүүлээс хамаараад (дээр дурдсаныг үзнэ үү).

[[setting-console]]
=== Консол тохируулах

Бүх ганц C chars тэмдэгтийн олонлогуудын хувьд зөв консолын фонтуудыг [.filename]#/etc/rc.conf#-д асуултанд байгаа хэлний хувьд тохируулна:

[.programlisting]
....
font8x16=font_name
font8x14=font_name
font8x8=font_name
....

Эндэх _font_name_-ийг [.filename]#/usr/shared/syscons/fonts# сангаас [.filename]#.fnt# төгсгөлгүйгээр авсан.

Хэрэв шаардлагатай бол keymap болон screenmap-ийг өөрийн ганц C chars тэмдэгтийн олонлогийн хувьд `sysinstall` ашиглан зааж өгнө. sysinstall дотор байхдаа [.guimenuitem]#Configure#-г сонгоод дараа нь [.guimenuitem]#Console#-г сонгоно. Өөрөөр та доор дурдсаныг [.filename]#/etc/rc.conf#-д нэмж болно:

[.programlisting]
....
scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"
....

Эндэх _screenmap_name_-ийг [.filename]#/usr/shared/syscons/scrnmaps# сангаас [.filename]#.scm# төгсгөлгүйгээр авсан. Зохих оноогдсон фонттой screenmap нь псевдографик талбарт VGA адаптерийн фонтын тэмдэгтийн матриц дээр бит 8-ийг бит 9 уруу өргөтгөхөд ихэвчлэн тойрон гарах арга зам болгон хэрэглэгддэг, өөрөөр хэлбэл хэрэв дэлгэцийн фонт бит 8 багана ашиглаж байвал тэр талбараас үсэгнүүдийг шилжүүлэн гаргахын тулд хэрэглэгддэг.

Хэрэв та [.filename]#/etc/rc.conf#-д moused дэмонг идэвхжүүлэхийг дараах байдлаар тохируулсан бол:

[.programlisting]
....
moused_enable="YES"
....

хулганы заагчийн мэдээллийг дараагийн хэсгээс шалгаарай.

Анхдагчаар man:syscons[4] драйверийн хулганы заагч нь тэмдэгтийн олонлогийн 0xd0-0xd3 хэсгийг эзэлдэг. Хэрэв таны хэл энэ хэсгийг ашигладаг бол заагчийн хэсгийг үүнээс гадна шилжүүлэх хэрэгтэй. FreeBSD-ийн хувьд тойрон гарах арга замыг идэвхжүүлэхийн тулд дараах мөрийг [.filename]#/etc/rc.conf#-д нэмнэ:

[.programlisting]
....
mousechar_start=3
....

Эндэх _keymap_name_-ийг [.filename]#/usr/shared/syscons/keymaps# сангаас [.filename]#.kbd# төгсгөлгүй авсан. Хэрэв та аль keymap-ийг ашиглах эсэхдээ эргэлзэж байвал man:kbdmap[1]-г ашиглаж дахин ачаалалгүйгээр keymap-уудыг тест хийж болно.

`keychange` нь функцын товчлууруудыг сонгосон терминалын төрөлтэй тааруулахын тулд програмчлахад ихэвчлэн хэрэгтэй байдаг, учир нь функцын товчлуурын дарааллуудыг товчлууруудын оноолтод тодорхойлж болдоггүй.

Бас консолын терминалын зөв төрлийг бүх `ttyv*` оруулгуудын хувьд [.filename]#/etc/ttys# файлд тохируулсан эсэхээ шалгаарай. Одоогийн урьдчилан тодорхойлсон зохицлууд нь:

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Тэмдэгтийн Олонлог
| Терминалын Төрөл

|ISO8859-1 эсвэл ISO8859-15
|`cons25l1`

|ISO8859-2
|`cons25l2`

|ISO8859-7
|`cons25l7`

|KOI8-R
|`cons25r`

|KOI8-U
|`cons25u`

|CP437 (VGA default)
|`cons25`

|US-ASCII
|`cons25w`
|===

Өргөн эсвэл олон байт тэмдэгтүүд бүхий хэлнүүдийн хувьд өөрийн [.filename]#/usr/ports/language# сангаас зөв FreeBSD портоо ашиглаарай. Зарим портууд консол маягаар байхад түүнийг систем сериал vtty-үүд шигээр хардаг, ийм учраас та X11 болон псевдо-сериал консолын хувьд хангалттай vtty-үүдийг хадгалж байх шаардлагатай. Өөр хэлүүдийг консолд ашиглахын тулд энд програмуудын хэсэгчилсэн жагсаалт байна:

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Хэл
| Байрлал

|Уламжлалт Хятад хэл (BIG-5)
|package:chinese/big5con[]

|Япон хэл
|package:japanese/kon2-16dot[] эсвэл package:japanese/mule-freewnn[]

|Солонгос хэл
|package:korean/han[]
|===

=== X11 тохируулах

X11 нь FreeBSD Төслийн нэг хэсэг биш боловч бид энд FreeBSD хэрэглэгчдэд зориулж зарим мэдээлэл орууллаа. Илүү дэлгэрэнгүйг http://www.x.org/[Xorg вэб хаягаас] эсвэл аль X11 сервер ашиглаж байгаа түүнийхээ вэб хаягаас лавлана уу.

[.filename]#~/.Xresources# файлд та програмуудад зориулсан I18N тохируулгуудыг (өөрөөр хэлбэл фонтууд, цэснүүд, гэх мэт.) тааруулж өгч болно.

==== Фонтуудыг үзүүлэх

Xorg сервер (package:x11-servers/xorg-server[]) суулгаад дараа нь хэлний TrueType(R) фонтуудыг суулгана. Зөв локалыг тохируулах нь танд цэснүүдийг сонгосон хэлээрээ харах зэрэг боломжийг олгоно.

==== Англи биш тэмдэгтүүдийг оруулах нь

X11 оруулах арга (XIM) нь бүх X11 клиентүүдэд зориулсан шинэ стандарт юм. Бүх X11 програмууд нь XIM оруулах серверүүдээс оролт авдаг XIM клиентүүд маягаар бичигдэх ёстой. Өөр өөр хэлнүүдэд зориулагдсан хэд хэдэн XIM серверүүд байдаг.

=== Хэвлэгч тохируулах

Зарим ганц C chars тэмдэгтийн олонлогууд нь ихэвчлэн хэвлэгчүүд дотор хатуугаар бичигдсэн байдаг. Өргөн эсвэл олон байт тэмдэгтийн олонлогууд нь тусгай тохируулга шаарддаг бөгөөд бид apsfilter програмыг хэрэглэхийг зөвлөдөг. Та бас PostScript(R) эсвэл PDF хэлбэрүүд уруу тухайн хэлний хөрвүүлэгчдийг ашиглан баримтыг хөрвүүлж болох юм.

=== Цөм ба файлын системүүд

FreeBSD-ийн хурдан файлын систем (FFS) нь 8-бит цэвэр учир үүнийг ямар ч ганц C chars тэмдэгтийн олонлогтой цуг ашиглаж болно (man:multibyte[3]-г үзнэ үү), гэхдээ тэмдэгтийн олонлогийн нэр файлын системд хадгалагддаггүй; өөрөөр хэлбэл энэ нь түүхий 8-бит бөгөөд кодчилолын дарааллын талаар юу ч мэддэггүй. Албан ёсоор FFS нь өргөн эсвэл олон байт тэмдэгтийн олонлогуудын аль ч хэлбэрийг дэмждэггүй. Гэхдээ зарим өргөн эсвэл олон байт тэмдэгтийн олонлогууд нь FFS-д ийм дэмжлэгийг идэвхжүүлэхэд зориулсан бие биеэсээ ангид засваруудтай байдаг. Тэдгээр нь цорын ганц ийш тийш хөрвүүлэх боломжгүй шийдлүүд буюу hack бөгөөд бид тэдгээрийг эх модонд оруулахгүй гэж шийдэцгээсэн юм. Тохирох хэлнүүдийн вэб хуудаснуудаас илүү дэлгэрэнгүй мэдээлэл болон засвар файлуудын талаар лавлана уу.

FreeBSD MS-DOS(R) файлын систем нь MS-DOS(R), Юникод тэмдэгтийн олонлогууд болон FreeBSD-ийн сонгосон файлын системийн тэмдэгтийн олонлогуудын хооронд хөрвүүлэх тохируулж болох боломж бүхий байдаг. Дэлгэрэнгүйг man:mount_msdosfs[8]-с үзнэ үү.

[[l10n-compiling]]
== I18N програмуудыг эмхэтгэх

FreeBSD-ийн олон портууд I18N дэмжлэгтэйгээр хөрвүүлэгдсэн байдаг. Тэдгээрийн зарим нь портын нэрэндээ -I18N гэж тэмдэглэгдсэн байдаг. Эдгээр болон бусад олон програмууд I18N-д зориулагдсан дэмжлэгтэйгээр бүтээгдсэн байдаг бөгөөд тусгай хэлэлцүүлэг шаардлагагүй юм.

Гэхдээ MySQL зэрэг зарим програмууд тусгайлсан charset бүхий байхаар тохируулагдсан [.filename]#Makefile# файлтай байх шаардлагатай. Үүнийг ихэвчлэн [.filename]#Makefile#-д эсвэл эхэд байх configure програмд утга дамжуулан хийдэг.

[[lang-setup]]
== FreeBSD-г өөр хэлнүүд уруу локалчлах

[[ru-localize]]
=== Орос хэл (KOI8-R Кодчилол)

KOI8-R кодчилолын талаар дэлгэрэнгүй мэдээллийг http://koi8.pp.ru/[KOI8-R Лавлахууд (Russian Net Character Set)]-с үзнэ үү.

==== Локал Тохируулах

Дараах мөрүүдийг өөрийн [.filename]#~/.login_conf# файлд нэмнэ:

[.programlisting]
....
me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:
....

Энэ бүлгийн өмнөхөөс <<setting-locale,локал>> тохируулах жишээнүүдийг үзнэ үү.

==== Консол Тохируулга

* Дараах мөрийг өөрийн [.filename]#/etc/rc.conf# файлд нэмнэ:
+
[.programlisting]
....
mousechar_start=3
....

* Мөн дараах тохируулгуудыг [.filename]#/etc/rc.conf#-д ашиглана:
+
[.programlisting]
....
keymap="ru.utf-8"
scrnmap="utf-82cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
....

* [.filename]#/etc/ttys# файл дахь `ttyv*` оруулга болгоны хувьд `cons25r`-ийг терминалын төрөлд ашиглана.

Энэ бүлгийн өмнөхөөс <<setting-console,консол>> тохируулах жишээнүүдийг үзнэ үү.

==== Хэвлэгчийн Тохируулга

Орос тэмдэгтүүдтэй ихэнх хэвлэгчид CP866 гэсэн тоног төхөөрөмжийн код хуудастай ирдэг бөгөөд KOI8-R-с CP866 уруу хөрвүүлэхийн тулд тусгай гаралтын шүүгч хэрэгтэй болдог. Ийм шүүгч анхдагчаар [.filename]#/usr/libexec/lpr/ru/koi2alt# гэж суугддаг. Орос хэвлэгчийн [.filename]#/etc/printcap# оруулга иймэрхүү харагдах ёстой:

[.programlisting]
....
lp|Russian local line printer:\
	:sh:of=/usr/libexec/lpr/ru/koi2alt:\
	:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
....

Дэлгэрэнгүй тайлбарын талаар man:printcap[5]-с үзнэ үү.

==== MS-DOS(R) FS болон Орос файлын нэрс

Дараах жишээ man:fstab[5] оруулга нь холбогдсон MS-DOS(R) файлын системүүд дээр Орос файлын нэрийн дэмжлэгийг идэвхжүүлдэг:

[.programlisting]
....
/dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0
....

`-L` тохируулга ашиглагдсан локалын нэрийг сонгодог бөгөөд `-W` нь тэмдэгтийн хөрвүүлэлтийн хүснэгтийг заадаг. `-W` тохируулгыг ашиглахын тулд [.filename]#/usr#-г MS-DOS(R) хуваалтаас өмнө холбох хэрэгтэй, учир нь хөрвүүлэлтийн хүснэгтүүд [.filename]#/usr/libdata/msdosfs#-д байрладаг. Дэлгэрэнгүй мэдээллийг man:mount_msdosfs[8] гарын авлагын хуудаснаас үзнэ үү.

==== X11 тохируулга

. Эхлээд <<setting-locale,X биш локалын тохируулгыг>> тайлбарласнаар хийнэ.
. Хэрэв та Xorg-г ашиглаж байгаа бол package:x11-fonts/xorg-fonts-cyrillic[] багцыг суулгана.
+ 
Өөрийн [.filename]#/etc/X11/xorg.conf# файлын `"Files"` хэсгийг шалгаарай. Дараах мөр аль ч `FontPath` оруулгуудаас _өмнө_ нэмэгдсэн байх шаардлагатай:
+
[.programlisting]
....
FontPath   "/usr/local/lib/X11/fonts/cyrillic"
....
+
[NOTE]
====
Өөр илүү олон кирилл фонтуудыг авахыг хүсвэл портуудаас үзнэ үү.
====

. Орос гарыг идэвхжүүлэхийн тулд өөрийн [.filename]#xorg.conf# файлын `"Keyboard"` хэсэгт доор дурдсаныг нэмээрэй:
+
[.programlisting]
....
Option "XkbLayout"   "us,ru"
Option "XkbOptions"  "grp:toggle"
....
+ 
Мөн `XkbDisable`-г хаасан (тайлбар болгосон) эсэхийг тэндээс шалгаарай.
+ 
`grp:toggle`-н хувьд RUS/LAT шилжүүлэгч kbd:[Right Alt] болох бөгөөд `grp:ctrl_shift_toggle` шилжүүлэгчийн хувьд kbd:[Ctrl+Shift] болно. `grp:caps_toggle`-н хувьд RUS/LAT шилжүүлэгч kbd:[CapsLock] байна. Хуучин kbd:[CapsLock] функцын хувьд kbd:[Shift+CapsLock] (зөвхөн LAT горимд) байсаар байна. `grp:caps_toggle` нь Xorg дээр тодорхойгүй шалтгааны улмаас ажилладаггүй.
+ 
Хэрэв та өөрийн гар дээрээ "Windows(R)" товчлууруудтай бол, зарим үсгэн товчлуурууд нь RUS горимд буруугаар тааруулагддагийг анзаарсан байх, өөрийн [.filename]#xorg.conf# файлдаа дараах мөрийг нэмээрэй:
+
[.programlisting]
....
Option "XkbVariant" ",winkeys"
....
+
[NOTE]
====
Орос XKB гар нь локалчлал хийгдээгүй програмуудтай ажиллахгүй байж болох юм.
====

[NOTE]
====
Хамгийн багаар локалчлагдсан програмууд `XtSetLanguageProc (NULL, NULL, NULL);` функцыг програмын эхэнд дуудах ёстой.

X11 програмуудыг локалчлах талаар дэлгэрэнгүй заавруудыг http://koi8.pp.ru/xwin.html[X Цонхны KOI8-R] хаягаас үзнэ үү.
====

=== Тайваньд зориулсан уламжлалт Хятад хэлний локалчлал

FreeBSD-Тайвань Төсөл олон Хятад портуудыг ашиглан FreeBSD-д зориулсан Хятад HOWTO-г http://netlab.cse.yzu.edu.tw/\~statue/freebsd/zh-tut/[http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/] дээр байрлуулсан байдаг. `FreeBSD Хятад HOWTO`-н одоогийн засварлагч нь Чуан-Шинг Шен mailto:statue@freebsd.sinica.edu.tw[statue@freebsd.sinica.edu.tw] юм. 

Чуан-Шинг Шен mailto:statue@freebsd.sinica.edu.tw[statue@freebsd.sinica.edu.tw] нь FreeBSD-Тайваний `zh-L10N-tut` ашиглан http://netlab.cse.yzu.edu.tw/\~statue/cfc/[Хятад FreeBSD Цуглуулга (CFC)] үүсгэсэн байгаа. Багцууд болон скрипт файлууд link:ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/[ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/] дээр байгаа болно.

=== Герман хэлний локалчлал(бүх ISO 8859-1 хэлнүүдэд зориулсан)

Славен Резич mailto:eserte@cs.tu-berlin.de[eserte@cs.tu-berlin.de] нь FreeBSD машин дээр umlaut буюу Герман хэлний авиа өөрчлөгддөгийг тэмдэглэдэг хоёр цэгийг хэрхэн ашиглах талаар заавар бичсэн байгаа. Энэ заавар нь Герман хэл дээр бичигдсэн бөгөөд http://user.cs.tu-berlin.de/\~eserte/FreeBSD/doc/umlaute/umlaute.html[http://user.cs.tu-berlin.de/~eserte/FreeBSD/doc/umlaute/umlaute.html] дээр байгаа болно.

=== Грек хэлний локалчлал

Никос Кокалис mailto:nickkokkalis@gmail.com[nickkokkalis@gmail.com] нь FreeBSD дээрх Грек хэлний дэмжлэгийн талаар бүрэн нийтлэл бичсэн байгаа. Энэ нь FreeBSD-ийн албан ёсны Грек баримтжуулалтын хэсэг болон https://www.FreeBSD.org/doc/el/articles/greek-language-support/[http://www.freebsd.org/doc/el/articles/greek-language-support/] хаягт орсон байдаг. Энэ нь _зөвхөн_ Грек хэл дээр юм.

=== Япон болон Солонгос хэлний локалчлал

Япон хэлний хувьд http://www.jp.FreeBSD.org/[http://www.jp.FreeBSD.org/]-д хандана уу, Солонгос хэлний хувьд http://www.kr.FreeBSD.org/[http://www.kr.FreeBSD.org/]-д хандана уу.

=== Англи биш FreeBSD баримтжуулалт

FreeBSD-ийн зарим хувь нэмэр оруулагчид FreeBSD-ийн баримтжуулалтын зарим хэсгийг орчуулсан байгаа. Тэдгээрийг link:https://www.FreeBSD.org/[эх сайт] дээрх холбоосуудаас эсвэл [.filename]#/usr/shared/doc# сангаас үзэж болох юм.
