2. pgday.seoul 2020 2
NLS
●
"National Language Support" or "Native Language Support"
– GNU gettext 패키지로 구현하는 것이 제일 유명함
– 국제화 (I18N), 지역화 (L10N) 두 단어가 주로 나오나 , 소프트웨어에서는
하나의 소스에 사용자의 언어 환경에 따라 보여주는 메시지를 각 언어별로
다르게 보여주는 것을 말하는 것이 일반적
– 한국어 경우는 주로 사용하는 인코딩 문자세트 변화에 따라 완성형 → 확장
완성형 → UTF-8 형태로 계속 그 인코딩이 바뀌면서 여러 시행착오가
있었고 , 요즘은 UTF-8 이 대세
3. pgday.seoul 2020 3
lc_time
postgres=# show lc_
lc_collate lc_ctype lc_messages lc_monetary lc_numeric lc_time
postgres=# show lc_time;
lc_time
---------
C
(1 개 행 )
postgres=# select to_char(current_timestamp, 'TMMonth');
to_char
----------
November
(1 개 행 )
postgres=# set lc_time='ko_KR.UTF-8';
SET
postgres=# select to_char(current_timestamp, 'TMMonth');
to_char
---------
11 월
(1 개 행 )
4. pgday.seoul 2020 4
lc_monetary
postgres=# show lc_monetary ;
lc_monetary
-------------
C
(1 개 행 )
postgres=# select 10000::money;
money
------------
$10,000.00
(1 개 행 )
postgres=# set lc_monetary='ko_KR.UTF-8';
SET
postgres=# select 10000::money;
money
---------
₩10,000
(1 개 행 )
postgres=# select relname, (relpages*8192)::money from pg_class order by 2 desc;
5. pgday.seoul 2020 5
lc_messages
postgres=# show lc_messages;
lc_messages
-------------
C
(1 개 행 )
postgres=# drop table asdf;
ERROR: table "asdf" does not exist
postgres=# set lc_messages = 'ko_KR.UTF-8';
SET
postgres=# drop table asdf;
오류 : "asdf" 테이블 없음
6. pgday.seoul 2020 6
ko.po
●
postgresql-13.1/src/backend/po/ko.po
– 한국어 서버 메시지 일반 텍스트 소스 파일
– 소스를 컴파일 하기 전 빌드 환경을 설정하는 configure 작업에서
--enable-nls 옵션을 지정해서 활성화 함
– msgfmt 명령으로 ko.mo 바이너리 파일로 변환
– .../share/locale/ko/LC_MESSAGES/postgres-13.mo 파일로 설치됨
– 운영체제가 gettext 기반 한국어 메시지를 볼 수 있는 환경이라면
●
locale -a 명령 결과에 ko_KR.utf8 목록이 있고 ,
●
쉘 LANG 환경 변수 값이 ko_KR.utf8 이고 ,
●
사용하는 터미널에서 utf8 문자셋으로 한글이 출력될 때
– postgres –help 명령을 실행하면 도움말이 한국어로 나옴
7. pgday.seoul 2020 7
한국어 번역 역사
●
2002 년 PostgreSQL 7.2 버전에서 gettext 기반 국제화 기능이 도입됨
●
2004 년 이 번역 작업 때문에 한국 커뮤니티 모체가 되는 온라인 모임이
만들어짐 ( 정재익 , 신기배 , 당시 이상호 , 김상기 )
- 그 흔적은 database.sarang.net 홈페이지에서
●
2004 년 연말에 8.0 소스에 반영
●
새 메이저 버전이 발표되면 ko.po 파일은 꾸준히 번역되고 있음 (
중간에 빠진 버전도 있었지만 )
●
2020 년 11 월 최근까지 13.1 버전에 반영
●
postgresql git 저장소 역사 탐방
8. pgday.seoul 2020 8
다국어 번역 현황
●
버전관리를 위해 pgtranslation/messages.git 저장소를 사용함
(log, history, diff)
●
번역 작업자들을 위한 이슈트래커 : redmine.postgresql.org
●
각 언어별 번역 현황 : babel.postgresql.org
9. pgday.seoul 2020 9
한국어 메시지 문제점
●
작업자 모두 IT 비전공자로 시작
●
한국어 표준어와 맞춤법도 깔끔하지 않음 (‘ 반틈’이 표준어로 알고 있었음 )
●
관계형 데이터베이스 확산기에 시작한 일 , 용어 정리도 아직 다 못 함
●
시작 당시 아주 빈약한 PostgreSQL 인터넷 자료
●
영어 독해 시험을 치르는 것같은 공식 설명서
●
그리고 , 어떻게든 모였으니 , 이번에는 마무리짓겠다는 뜨거운 (?) 마음만으로
만든 결과물
●
UTF-8 기반 서버 메시지와 한국어 MS 윈도우즈 949 코드페이지 어울림 문제
●
<qbq>
10. pgday.seoul 2020 10
ko.po 무용론
●
관계형 데이터베이스라는 소프트웨어 특수성 ( 오피스 도구들과
다른 보다 IT 전문가들이 사용하는 소프트웨어 )
●
인공 지능 기반 통번역 서비스의 번역 품질이 좋아지고 있음
●
한국어로 보이는 문장이 오히려 이해하기 힘듦
●
옮겨도 모두 외래어 표기법인 뿐인 것을
– 테이블 칼럼 드랍 커멘드 러닝
그럼에도 불구하고
11. pgday.seoul 2020 11
ko.po 번역 작업 필요성
●
gettext 기반 자국어화의 기본 사상
- 하나의 영어 문장은 반드시 하나의 자국어 문장으로만 번역됨
- hello → 안녕 ( 이것뿐이지 , 어떤 경우는 ‘여보세요’ , 어떤
경우는 ‘안녕’ 이렇게 쓸 수 없음 )
●
영어 독해 실력과 데이터베이스 사용 실력은 다륾
- 자국어화는 초보의 진입장벽을 낮추는 가장 좋은 방법임
●
나름의 재능 기부 - 그저 받았으니 , 그저 주어야
이랬는데
12. pgday.seoul 2020 12
번역 작업 숨은 이야기
●
gettext 기반 새 .mo 파일 만드는 과정
– 소스에서 .pot ( 영어만 있는 po 템플릿 파일 ) 만들고
– 이 .pot 파일을 기반으로 이전 버전에 사용했던 ko.po 파일을 msgmerge 명령을
이용해서 새 ko.po 파일로 만들고 ,
– 새 ko.po 파일을 열어 번역이 안된 부분은 찾아 번역
●
이 과정은 결국 새 버전의 새 기능을 소스를 직접 보면서 살펴보게 되는 기회가
된다 !
●
기존 한국어 메시지를 쓰다 보면 이해가 안되는 부분이 나오면 ( 오역이거나
데이터베이스 이해부족 ) 그 번역을 고치면서 데이터베이스를 더 깊게 들여보게
된다 !
●
실력이 쌓이면 소스 코드 개선 작업을 도와 줄 수도 있다 !
14. pgday.seoul 2020 14
13 버전에서는
●
pg_basebackup: manifest 파일 기반 검증 기능 추가
●
pg_dump: --include-foreign-data 옵션 추가
●
pg_verifybackup.po 새 번역 ( 이 명령어 전체를 살펴보게 됨 )
●
pg_upgrade: 의존성이나 오류 개체 관련 목록을 표준 출력으로 보여주던 것을
파일에 저장함
●
dropdb force 기능 추가
●
online reindex, 병렬 vacuumdb
●
psql g, gx 내장 명령어에 옵션 추가 ,
연산자 클래스 , 연산자 가족 목록 보는 dA* 관련 명령 추가
●
서버 엔진 변경 사항들 ( 새 기능 소개 참조 )
15. pgday.seoul 2020 15
나도 도와줄게요
●
우리가 만드는 한국어 PostgreSQL ( 우리가 안하면 누구도 안하겠죠 )
- ko.po 번역작업은 설명서 변역작업과 달리 대부분 번역되어있기
때문에 , 일량이 그리 많지 않습니다 .
●
오탈자나 오역 보고는 redmine.postgresql.org 를 통해서 일감을
만들기 보다 , postgresql.kr/support 나 facebook postgresql korea
그룹에 알리는 것이 나을 듯
●
번역 안된 것 새로 번역 하는 작업은 babel.postgresql.org 에서 pot
파일을 받아서 merge 해서 po 파일 단위로 보내는 것이 나을 듯
●
번역 작업 참여자들이 많으면 , 그때는 github 에 한국어 작업
저장소를 만들 예정입니다 .
16. pgday.seoul 2020 16
링크들
●
이 발표를 준비 하면서 살펴본 링크들
– https://postgresql.kr/docs/current/functions-formatting.html
– https://postgresql.kr/docs/current/install-procedure.html
– https://postgresql.kr/docs/current/charset.html
– https://postgresql.kr/docs/current/nls.html
– http://wiki.postgresql.org/wiki/NLS