Tcl 8.1부터 국제화 지원이 가능합니다. 내부 코드로 유니코드(UTF-8)를 채택하여, 한글 조작도 ASCII 문자처럼 처리할 수 있습니다. 한글 입력 및 표시도 가능합니다. 여기서는 국제화된 커맨드의 예를 소개합니다.
변수명
변수명에도 한글을 사용할 수 있습니다.
set 모두들 안녕하세요
=>안녕하세요
puts $모두들
=>안녕하세요
string
한글 문자열도 ASCII 문자열과 마찬가지로 처리할 수 있습니다.
string length "abc"
=>3
string length "모두들"
=>3
정규 표현식
한글 문자열도 ASCII 문자열과 마찬가지로 처리할 수 있습니다.
# 유니코드 이스케이프 시퀀스
$ set code "\uAC00"
가
# 한글 문자열 교체
$ regsub {일} {오일은 좋은 날씨네요} {늘} var
1
$ puts $var
오늘은 좋은 날씨네요
# 정규 표현식을 사용한 한글 비교
$ switch -regexp {김치} {
김치|한복|원화 {puts 한국}
기본값 {puts 외국}
}
한국
font
한글 폰트를 사용할 수 있습니다. 폰트 종류는 시스템에 따라 다릅니다. 아래는 사용할 수 있는 폰트를 표시합니다.
$ font families
System @System Terminal @Terminal Fixedsys @Fixedsys Modern Roman Script Courier
{MS Serif} {MS Sans Serif} {Small Fonts} Marlett Arial {Arabic Transparent} {Arial Baltic}
{Arial CE} {Arial CYR} {Arial Greek} {Arial TUR} {Arial Black} {Bahnschrift Light} ...
{나눔스퀘어라운드 Regular} {@나눔스퀘어라운드 Regular} {둥근모꼴 일반체} {@둥근모꼴 일반체}
KCC-안중근체 @KCC-안중근체 한글재민2.0 @한글재민2.0 IHIYAGI_SYS @IHIYAGI_SYS HBIOS-SYS
@HBIOS-SYS
아래는 기본 폰트를 설정하는 방법입니다. 참고로 Windows 버전의 기본 폰트는 {{MS Sans Serif} 8}로 설정되어 있습니다.
option add *Font {{나눔바른고딕} 10}
encoding
사용 가능한 인코딩을 표시합니다.
cp860 cp861 cp862 cp863 tis-620 cp864 cp865 cp866 gb12345 gb2312-raw cp949 cp950
cp869 dingbats ksc5601 macCentEuro cp874 macUkraine jis0201 gb2312 euc-cn euc-jp
macThai iso8859-10 jis0208 iso8859-11 iso2022-jp macIceland iso2022 iso8859-13
jis0212 iso8859-14 iso8859-15 cp737 iso8859-16 big5 euc-kr macRomania macTurkish
gb1988 iso2022-kr macGreek ascii cp437 macRoman iso8859-1 iso8859-2 iso8859-3
macCroatian koi8-r iso8859-4 ebcdic iso8859-5 cp1250 macCyrillic koi8-t iso8859-6
cp1251 macDingbats koi8-u iso8859-7 cp1252 iso8859-8 cp1253 koi8-ru iso8859-9 cp1254
cp1255 cp850 cp1256 cp932 identity cp1257 cp852 macJapan cns11643 cp1258 shiftjis
utf-8 cp855 cp936 symbol cp775 unicode cp857
인코딩을 지정하여 코드 변환을 수행합니다.
# 한글 EUC 코드를 유니코드(UNICODE)로 변환합니다.
$ encoding convertfrom euc-kr "\xb0\xa1"
가
# 유니코드를 한글 EUC 코드로 변환합니다.
$ encoding convertto euc-kr "\uAC00"
°¡
fconfigure
파일 입출력 시 인코딩을 지정 가능합니다.
# 한글 cp949 코드의 파일을 읽고 euc-kr 코드의 파일을 작성합니다.
set fd1 [open "foo.txt" r]
set fd2 [open "bar.txt" w]
fconfigure $fd1 -translation crlf -encoding cp949
fconfigure $fd2 -translation lf -encoding euc-kr
while {[gets $fd1 line] > 0} {
puts $fd2 $line
}
close $fd1
close $fd2
format
한국어와 영어 메시지를 전환합니다.
$ format "We produced %1\$d units in location %2\$s" $num $city
We produced 10 units in location seoul
$ format "우리는 %2\$s 에서 %1\$d 대를 생산했습니다." $num $city
우리는 seoul 에서 10 대를 생산했습니다.
msgcat
메시지 카탈로그 패키지를 사용하면, 각국의 메시지를 .msg 파일별로 저장해 두고, 로케일을 지정하여 해당 메시지를 추출할 수 있습니다.
# sample.tcl
package require msgcat 1.0
namespace import msgcat::*
msgcat::mcload [file join [file dirname [info script]] msg]
set env(LANG) ko_KR
pack [button .b -text [mc "Push Me"]]
# msg/ko_KR.msg
mcset ko_KR "Push Me" "눌러주세요"