이 멋진, 국제화(i18n)는 FreeBSD 에만 해당되는 것이 아닌, 일종의 규정입니다. 여러분들은 FreeBSD 가 이 규정을 따르는것을 도와주시기 바랍니다.
지역화 설정들은 세가지 주요 용어에 기반하고 있습니다. 그것은 언어 코드, 국가 코드, 인코딩 입니다. 로케일 이름은 이 세가지로부터 다음과같이 만들어 집니다. :
언어코드_국가코드.인코딩
FreeBSD 시스템, 혹은 다른 국제화(i18n) 지원 유닉스 시스템을 특정 언어로 지역화 하기 위해서는, 사용자가 국가와 언어를 지정하기위한 코드를 알아내야 합니다.(국가 코드는 응용 프로그램들에게 어떤 다른 언어를 사용해야 할 것인가를 알려줍니다.) 게다가, 웹 브라우저들과, SMTP/POP 서버, 웹 서버등은 그것에 기반해 동작이 결정됩니다. 다음은 언어/국가 코드의 예제입니다. :
어떤 언어들은 비 아스키 인코딩을 사용하며, 그것은 8 비트, 와이드 바이트(widebyte) 혹은 멀티 바이트(multibyte) 문자들입니다. 자세한 것은 multibyte(3) 맨페이지를 참고하십시오. 옛 응용 프로그램들은 이것들을 제대로 인식하지 못하고 제어 문자로 착각합니다. 하지만, 최근의 응용 프로그램들은 보통 8 비트 문자들을 제대로 인식합니다. 프로그램에 따라서, 사용자들은 해당 응용 프로그램이 와이드, 멀티 바이트를 지원하도록 컴파일 하거나, 그에 맞게 설정해야 할 것입니다. 와이드, 멀티 바이트 문자를 입력 가능, 그리고 처리 가능하도록 하기 위해 FreeBSD 포트 콜렉션 은 서로 다른 프로그램들에대한 각각의 언어 카테고리를 제공하고 있습니다. 각 FreeBSD 포트의 국제화(i18n) 문서를 참고하십시오.
사용자들이 그것을 정확하게 설정하려면 어떻게 해야 하는지, 또는 configure/Makefile/compiler 에 정확한 값을 넘겨주기 위해서는 어떻게 해야 하는지에 대해서는, 해당 응용 프로그램들의 문서를 보셔야 합니다.
기억해 두어야할 사항들 :
각 언어마다의 단일 C chars 문자셋 (multibyte(3) 맨페이지 참고), 예를들면, ISO_8859-1, KOI8-R, CP437.
와이드, 멀티 바이트 인코딩, 예를들면 EUC, Big5.
여러분들은 IANA 등록 에서 이용 가능한 문자셋을 확인하실 수 있습니다.
FreeBSD 의 포트와 패키지 시스템에서, 국제화(i18n)된 응용 프로그램들은 쉽게 구분할 수 있도록 하기 위해 그 이름에 i18n 이 붙어 있습니다. 그렇다고해서 그것들이 항상 필요한 모든 언어를 지원하는 것은 아닙니다.
이론적으로는, 여러분들은 자신의 로케일 이름을 로그인 쉘에서 LANG 값으로 지정해 주기만 하면 됩니다. 그리고 이것은 보통, 여러분들의 ~/.login_conf, 혹은 로그인 쉘 설정 파일(~/.profile, ~/.bashrc, ~/.cshrc) 에서 지정해 줄 수 있습니다. 이것은 로케일의 모든 하위 설정값(예, LC_CTYPE, LC_CTIME, 기타.)들도 지정하게 됩니다. 좀더 자세한 사항은 그 언어에 해당하는 FreeBSD 문서를 참고하십시오.
여러분의 설정 파일들에서 다음 두 값을 설정하셔야 합니다. :
POSIX setlocale(3) 류 함수를 위한 LANG 값
응용 프로그램들의 MIME 문자셋을 위한 MM_CHARSET 값
이것은 사용자의 쉘 설정, 특정 응용 프로그램 설정, 그리고 X11 설정을 포함합니다.
로케일을 설정하는 방법은 두가지가 있으며, 그 두가지를 아래에서 설명할 것입니다. 추천할만한 방법인 첫번째는 로그인 클래스 에 환경 변수를 할당하는 것이며, 두번째 방법은 시스템 쉘의 시작 파일 에 환경변수 할당을 추가하는 것입니다.
이 방법은 환경 변수들, 각각의 쉘 시작 파일에 특정 쉘 할당으로 추가하는 대신에, 모든 쉘에 로케일 이름과 MIME 문자셋에 필요한 환경 변수들을 한번에 할당하는 것입니다. 일반 사용자 수준의 설정 은 사용자 스스로에의해 이루어질 수 있으며, 관리자 수준의 설정 은 수퍼유저의 권한이 필요합니다.
이것은 Latin-1 인코딩을 위한 두가지 값이 설정되어 있는, 사용자 홈 디렉토리의 최소한의 .login_conf 예제 파일 입니다. :
me:My Account:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO_8859-1:좀더 자세한 사항은 관리자 수준의 설정 과 login.conf(5) 맨페이지을 보십시오.
/etc/login.conf 파일에 사용자 클래스와 정확한 언어설정이 되어 있는지 확인해 보십시오. 아래의 설정들이 /etc/login.conf 에 포함되어 있어야 합니다. :
언어이름:계정제목:\
:charset=MIME 문자셋:\
:lang=로케일 이름:\
:tc=default:위 예제를 Latin-1 인코딩을 이용해 적용해 보면, 다음과 같습니다. :
german:German Users Accounts:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO_8859-1:\
:tc=default:vipw(8) 로 로그인 클래스 변경하기
새로운 사용자를 추가하기 위해서는 vipw 를 사용하십시오. 다음과 같은 형식으로 넣으시면 됩니다. :
user:password:1111:11:언어:0:0:User Name:/home/user:/bin/sh
adduser(8) 로 로그인 클래스 변경하기
새로운 사용자를 추가하기 위해서는 adduser 명령을 이용하십시오. 다음과같이 하시면 됩니다. :
/etc/adduser.conf 에 defaultclass = 언어 를 설정하십시오. 단, 이경우엔 다른 언어를 사용하고 있는 사용자들에게도 해당되는 말 그대로의 기본 클래스를 넣어야 한다는점을 염두해 두십시오.
또다른 방법은 매번 질문에 특정 언어를 넣어주는 것입니다.
Enter login class: default []:adduser(8) 맨페이지에 나와 있습니다.
또다른 방법은 여러분이 서로 다른 언어환경의 사용자를 추가할때, 다음과같이 하는 것입니다. :
# adduser -class 언어
pw(8) 로 로그인 클래스 변경하기
여러분이 새로운 유저를 추가하는데 pw(8) 를 사용하신다면, 다음과같은 형식으로 하십시오. :
# pw useradd user_name -L 언어
Note: 이 방법은 좋은 방법이 아닙니다. 왜냐하면, 각각의 선택된 로그인 프로그램마다 서로 다른 설정이 필요하기 때문입니다. 대신 로그인 클래스 이용 방법 을 사용하십시오.
로케일 이름과 MIME 문자셋을 추가하기 위해서는 /etc/profile, 그리고/혹은 /etc/csh.login 같은 쉘 시작 파일에 아래 보이는 두가지 환경 변수를 설정하십시오. 우리는 아래 예제에서 독일어를 사용하겠습니다. :
/etc/profile 에서 :
LANG=de_DE.ISO_8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET또는 /etc/csh.login 에서 :
setenv LANG de_DE.ISO_8859-1
setenv MM_CHARSET ISO-8859-1다른 방법으로, 여러분은 위 사항들을 /usr/share/skel/dot.profile 에(위의 /etc/profile 에 사용된것과 유사하게), 혹은 /usr/share/skel/dot.login 에(위의 /etc/csh.login 에 사용된것과 유사하게) 적어 넣을 수도 있습니다.
X11 을 위해서는 :
$HOME/.xinitrc 에서 :
LANG=de_DE.ISO_8859-1; export LANG
또는 :
setenv LANG de_DE.ISO_8859-1
여러분의 쉘에 따라 다릅니다(위를 보십시오).
모든 단일 C chars 문자셋에서, 확실치 않은 언어에 대해서는 /etc/rc.conf 에 다음과같이 정확한 콘솔 글꼴을 설정하십시오. :
font8x16=글꼴이름
font8x14=글꼴이름
font8x8=글꼴이름글꼴이름 은 /usr/share/syscons/fonts 디렉토리에서 .fnt 확장자를 빼고 가져옵니다.
또한 /stand/sysinstall 을 통해, 단일 C chars 문자셋에대해 정확한 키맵(keymap)과 스크린맵(screenmap)을 설정하도록 하십시오. 일단 sysintall 안에서, Configure 를 선택하시고, 그다음 Console 을 선택하십시오. 또다른 방법으로, /etc/rc.conf 에 아래 내용을 추가할 수도 있습니다. :
scrnmap=스크린맵 이름(screenmap_name)
keymap=키맵 이름(keymap_name)
keychange="기능키 기본값"스크린맵 이름 은 /usr/share/syscons/scrnmaps 디렉토리에서 가져오며, 확장자 .scm 은 제외합니다. 스크린맵과 그에 상응하는 폰트 매핑(mapped font)은 보통 VGA 장치의 가상 그래픽 영역에서 글꼴 자형을 8 비트에서 9 비트로 확장하는데 필요합니다. 예를들면, 화면 글꼴이 8 비트 칼럼(column)을 사용할때, 글자들을 그 영역 밖으로 이동시키는 것입니다.
여러분이 다음 설정을 가지고 있다면, 커널 설정에 이 리스트 다음 단락에 명시되어 있는 설정을 넣으십시오.
콘솔이 8 비트 칼럼 글꼴 부호를 이용하는 화면 글꼴을 사용합니다.
moused 데몬이 여러분의 /etc/rc.conf 에 다음과같이 설정함으로써 활성화 됩니다. :
moused_enable="YES"
VGA 장치에서 8 비트를 9 비트로 확장하는데는 보통 위의 설정들이 필요합니다. 이것은 마우스 커서 sc0 콘솔 드라이버에서 글꼴 부호가 8 비트에서 9 비트로 확장되는 것을 끄는 것입니다. 이것을 켜기 위해서는 다음 줄을 커널 설정에 넣으십시오.
options SC_MOUSE_CHAR=0x03
여기에서 키맵 이름 은 /usr/share/syscons/keymaps 디렉토리에서 확장자 .kbd 를 빼고 가져옵니다.
keychange 는 보통 프로그램 기능 키들을 선택된 터미널 형태와 일치시키기 위해 필요합니다. 왜냐하면 기능키의 결과들은 키맵에서 정의할수 없기 때문입니다.
또한 /etc/ttys 에 모든 ttyv* 항목에 대한 정확한 콘솔 터미널 형태를 설정하십시오. 현재 정의되어 있는 항목은 다음과 같습니다. :
와이드 혹은 멀티 바이트 문자 언어들에 대해서는, /usr/ports/언어 디렉토리의 FreeBSD 포트를 이용하십시오. 몇몇 포트들은, 시스템은 그것을 씨리얼 vtty's 로 보고 있는데도, 콘솔로 나타나기도 합니다. 그러므로 여러분은 X11 과 가상 씨리얼 콘솔 모두에 충분한 vtty's 를 할당해야 합니다. 여기에 콘솔에서 다른 언어를 사용하기 위한 프로그램들중 일부가 있습니다. :
비록 X11 이 FreeBSD 프로젝트의 일부분은 아니지만, 여기에 FreeBSD 사용자들을 위해 몇가지 정보를 포함하도록 하겠습니다. 좀더 자세한 것을 알기 위해서는, XFree86 웹 사이트 나, 여러분이 사용하는 X11 서버의 웹 사이트를 참고하시기 바랍니다.
여러분은 ~/.Xresources 파일에서, 추가로 특정 프로그램에 맞게 국제화(i18n) 설정을 하실수 있습니다(예를들면, 글꼴, 메뉴, 기타등등).
X11 True Type-Common 서버(XTT-common) 를 설치하십시오. 그리고 해당 언어의 truetype 글꼴을 설치하십시오. 로케일을 정확하게 설정하시면 메뉴나 그외의 것들에서 여러분이 선택하신 언어를 보실수 있을 것입니다.
X11 입력 방식(X11 Input Method : XIM) 프로토콜은 모든 X11 클라이언트들의 새로운 표준입니다. 모든 X11 응용 프로그램들은 XIM 입력 서버로부터 입력을 받아들이는 XIM 클라이언트로 작성되어야 합니다. 서로 다른 언어들에서 이용 가능한 XIM 서버들이 여러개 있습니다.
보통은 몇몇 단일 C chars 문자셋이 프린터에 하드웨어적으로 코딩되어 들어가 있습니다. 와이드 혹은 멀티바이트 문자셋은 특별한 설정을 필요로 합니다. 여러분들에게 apsfilter 라는 프로그램을 추천합니다. 여러분은 또한 문서를 해당 언어의 변환기(converter)를 이용해서 Postscript 나 PDF 포맷으로 변환시킬수도 있습니다.
FreeBSD 의 FFS 파일 시스템은 8 비트를 깨끗하게 처리합니다. 따라서 어떤 단일 C chars 문자셋과도 사용될수 있습니다 (multibyte(3) 맨페이지를 보십시오.). 하지만 파일 시스템 자체에 문자셋 이름이 저장되어 있지는 않습니다.; 예를들면, 그것은 가공하지 않은(raw) 상태의 8 비트이며, 인코딩 순서에 대해서는 알지 못합니다. 공식적으로, FFS 파일 시스템은 어떤 형태의 와이드/멀티바이트 문자셋도 아직은 지원하지 않습니다. 그러나, 몇몇 와이드/멀티바이트 문자셋들은 FFS 파일 시스템이 그런 지원을 할 수 있도록 하는 자체적인 패치를 가지고 있기도 합니다. 그것들은 단지 임시적인 해결책, 혹은 해킹에 불과하며, 따라서 우리는 그것들을 소스 트리(source tree)에 포함하지 않기로 결정했습니다. 좀더 자세한 정보나 패치 파일을 위해서는 해당 언어의 웹 사이트를 참고하시기 바랍니다.
FreeBSD 의 MS-DOS 파일 시스템은 MS-DOS 와 유니코드(Unicode) 문자셋, 그리고 FreeBSD 파일 시스템 문자셋을 서로 변환할수 있게 설정 가능합니다. 좀더 자세한 것을 위해서는 mount_msdos(8) 맨페이지를 참고하십시오.