Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

1

Share

Download to read offline

[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기

Download to read offline

[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기 - 김상기

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기

  1. 1. 포스트그레스큐엘 자국어화 이야기 김상기
  2. 2. pgday.seoul 2020 2 NLS ● "National Language Support" or "Native Language Support" – GNU gettext 패키지로 구현하는 것이 제일 유명함 – 국제화 (I18N), 지역화 (L10N) 두 단어가 주로 나오나 , 소프트웨어에서는 하나의 소스에 사용자의 언어 환경에 따라 보여주는 메시지를 각 언어별로 다르게 보여주는 것을 말하는 것이 일반적 – 한국어 경우는 주로 사용하는 인코딩 문자세트 변화에 따라 완성형 → 확장 완성형 → UTF-8 형태로 계속 그 인코딩이 바뀌면서 여러 시행착오가 있었고 , 요즘은 UTF-8 이 대세
  3. 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. 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. 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. 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. 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. 8. pgday.seoul 2020 8 다국어 번역 현황 ● 버전관리를 위해 pgtranslation/messages.git 저장소를 사용함 (log, history, diff) ● 번역 작업자들을 위한 이슈트래커 : redmine.postgresql.org ● 각 언어별 번역 현황 : babel.postgresql.org
  9. 9. pgday.seoul 2020 9 한국어 메시지 문제점 ● 작업자 모두 IT 비전공자로 시작 ● 한국어 표준어와 맞춤법도 깔끔하지 않음 (‘ 반틈’이 표준어로 알고 있었음 ) ● 관계형 데이터베이스 확산기에 시작한 일 , 용어 정리도 아직 다 못 함 ● 시작 당시 아주 빈약한 PostgreSQL 인터넷 자료 ● 영어 독해 시험을 치르는 것같은 공식 설명서 ● 그리고 , 어떻게든 모였으니 , 이번에는 마무리짓겠다는 뜨거운 (?) 마음만으로 만든 결과물 ● UTF-8 기반 서버 메시지와 한국어 MS 윈도우즈 949 코드페이지 어울림 문제 ● <qbq>
  10. 10. pgday.seoul 2020 10 ko.po 무용론 ● 관계형 데이터베이스라는 소프트웨어 특수성 ( 오피스 도구들과 다른 보다 IT 전문가들이 사용하는 소프트웨어 ) ● 인공 지능 기반 통번역 서비스의 번역 품질이 좋아지고 있음 ● 한국어로 보이는 문장이 오히려 이해하기 힘듦 ● 옮겨도 모두 외래어 표기법인 뿐인 것을 – 테이블 칼럼 드랍 커멘드 러닝 그럼에도 불구하고
  11. 11. pgday.seoul 2020 11 ko.po 번역 작업 필요성 ● gettext 기반 자국어화의 기본 사상 - 하나의 영어 문장은 반드시 하나의 자국어 문장으로만 번역됨 - hello → 안녕 ( 이것뿐이지 , 어떤 경우는 ‘여보세요’ , 어떤 경우는 ‘안녕’ 이렇게 쓸 수 없음 ) ● 영어 독해 실력과 데이터베이스 사용 실력은 다륾 - 자국어화는 초보의 진입장벽을 낮추는 가장 좋은 방법임 ● 나름의 재능 기부 - 그저 받았으니 , 그저 주어야 이랬는데
  12. 12. pgday.seoul 2020 12 번역 작업 숨은 이야기 ● gettext 기반 새 .mo 파일 만드는 과정 – 소스에서 .pot ( 영어만 있는 po 템플릿 파일 ) 만들고 – 이 .pot 파일을 기반으로 이전 버전에 사용했던 ko.po 파일을 msgmerge 명령을 이용해서 새 ko.po 파일로 만들고 , – 새 ko.po 파일을 열어 번역이 안된 부분은 찾아 번역 ● 이 과정은 결국 새 버전의 새 기능을 소스를 직접 보면서 살펴보게 되는 기회가 된다 ! ● 기존 한국어 메시지를 쓰다 보면 이해가 안되는 부분이 나오면 ( 오역이거나 데이터베이스 이해부족 ) 그 번역을 고치면서 데이터베이스를 더 깊게 들여보게 된다 ! ● 실력이 쌓이면 소스 코드 개선 작업을 도와 줄 수도 있다 !
  13. 13. pgday.seoul 2020 13 번역 작업 시현 ● babel 홈페이지로
  14. 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. 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. 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
  17. 17. pgday.seoul 2020 17
  • ssuser04f967

    Nov. 19, 2020

[Pgday.Seoul 2020] 포스트그레스큐엘 자국어화 이야기 - 김상기

Views

Total views

457

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

15

Shares

0

Comments

0

Likes

1

×