Windows 10에 WSL2를 설치하고 난 후, 리브레오피스의 소프트웨어 번역을 어떻게 설명을 할까 난관에 빠지게 됩니다.

그냥, "CAT(Computer Aided Translation)도구인 weblate에 번역하세요 하면 성의가 없어 보일것 같이 보여서, 원리에 대하여는 GNU Hello 프로젝트의 예를 들어서 이야기할 예정입니다.

GNU Hello는 hello라고 터미널에서 입력하면 문자열로 영어 설정으로는 Hello, World!, 한국어 설정으로는 안녕하세요, 여러분!을 출력해주는 프로그램입니다.

아래는 GNU Hello 홈페이지 링크입니다.

GNU Hello Project - https://www.gnu.org/software/hello/

여기서 WSL2으로 우분투Ubuntu를 사용해보겠습니다 (저는 개인적으로 오픈수세openSUSE를 사용하지만, 많은 한국의 리눅스 사용자들은 우분투Ubuntu를 사용하니, 많은 이들이 리눅스에서 테스트할 수 있게 우분투 기준으로 설명합니다.)

일단, Ubuntu에서 GNU Hello를 설치해봅니다

$ sudo apt -y install hello

설치가 완료되면, GNU Hello를 실행해봅시다.

$ hello
Hello, world!

여기서, WSL2를 최초로 설치하면 기본이 영어로 되어 있습니다.
동아시아(CJK) 문자가 출력된 번역된 문장을 보려면, 언어팩을 설치해야합니다.

참고, 우분투(Ubuntu) 언어 팩 목록

  • 한국어 언어 팩 language-pack-ko
  • 일본어 언어 팩 language-pack-ja
  • 중국어(간체) 언어팩 language-pack-zh-hans
  • 중국어(번체) 언어팩 language-pack-zh-hant
$ sudo apt -y install language-pack-ko language-pack-ja language-pack-zh-hans language-pack-zh-hant

우분투 및 오픈수세 등 리눅스 배포판에서 언어 설정 패키지를 설치후, 터미널에서 언어 별 환경설정을 하고 실행하면 다음과 같이 나옵니다.

$ LANG=en_US.UTF-8 hello
Hello, world!
$ LANG=ko_KR.UTF-8 hello
안녕하세요, 여러분!
$ LANG=ja_JP.UTF-8 hello
こんにちは、世界!
$ LANG=zh_CN.UTF-8 hello
世界你好!
$ LANG=zh_TW.UTF-8 hello
哈囉,大家好!

자유오픈소스 소프트웨어(FLOSS)의 번역은 po파일의 번역(飜譯, Translation)입니다.

GNU의 gettext 라이브러리를 이용하여 po파일에 들어간 번역문을 출력하는 것입니다.

GNU프로젝트의 하나인 hello는 로케일(Locale)설정에 따라서 로케일에 맞는 po파일 내용을 출력하는 것입니다.

그래서, KDE, GNOME, 리브레오피스등 소프트웨어의 번역은 po파일 내용을 번역하여 보여주는 것이라고 보면 됩니다.

상세한 내용은 아래의 슬라이드쉐어 링크 참조하면 됩니다.

오픈소스 번역 기여하기 v3

https://www.slideshare.net/changwoo/v3-114830838

 

오픈소스 번역 기여하기 v3

오픈소스 번역 기여하기 그놈 3.30 번역 모임 류창우 <cwryu@debian.org></cwryu@debian.org>

www.slideshare.net

 

Buy me a coffeeBuy me a coffee


GNU Korea의 윤종민님께서 작성하신 "소프트웨어 저작권과 오픈소스 라이선스(Software Copyright & Open Source Licenses)" 슬라이드 자료입니다.

소프트웨어 저작권에 대한 정보와 오픈소스 라이선스에 대한 내용에 대하여 정리가 잘되어 있습니다.


Buy me a coffeeBuy me a coffee


관련포스트
Inside the C Programming - 아쉽지만 원 저자의 요청으로 비공개가 되었습니다.

관련내용
GNUPro Toolkit Manuals 4. Basic Principles of the Tools


2010년 5월 30일 오후 2시경.

강남구 아무개동 아무개회사에서 GNU Korea의 blueguy님의 세미나가 있었습니다.

제목은 Inside the C Programming 이라는 것이였습니다.

세미나 내용은 Inside the C Programming 의 내용 그대로 진행하였습니다.

Inside the C Programming 의 내용을 보면 학부 3~4학년때 배우는 과목인 System Programming+Operating System+Compiler(앞부분)을 종합하여 넣은 것이라 내공이 상당하게 쌓이지 않은 이상 쉽게 설명하려고 해도 안드로메다로 넘어갈수 있습니다.

학부를 졸업한 사람에게도 내용이 이해되는건 몇개 있고 약간 모르는 내용들이 여러 개씩 나오긴 하지만, 학부생에게 이런 내용 알려주면 거의 상모돌리고 졸아 버릴 위험성이 높겠군요.

Inside the C Programming 에서 다루는 내용을 아래와 같이 압축하여 간단하게 설명하겠습니다.


1. (우선 C언어를 학부때 배웠다는 전제하에서) gcc(the GNU Compiler Collection-GNU C Compiler가 아님.)는 IDE를 가지지 않은 command line compiler이다.

gcc가 하는 일

(1) 사용자에게 옵션과 소스 파일명들의 입력을 받는다.

(2) 소스 파일명의 확장자를 보고 어떤 단계를 처리해야 할지 결정합니다.

(3) 사용자의 옵션을 각각의 단계를 맡고 있는 실행파일의 옵션으로 변경합니다.

(4) 각각의 단계를 맡고 있는 실행파일을 호출(fork와 exec이겠죠?)하여 단계를 수행하도록 한다.

2. gcc는 껍데기이고 내부에서 cpp, as, ld 등에서 처리된다.  (참조: GNUPro Toolkit Manuals 4. Basic Principles of the Tools)

3. 전처리(preprocessing)과정에서는 프로그래밍 컴파일을 하기전 소스코드의 매크로 치환을 합니다. 여기까지는 소스 코드의 parsing을 하지도 않고, 컴파일 과정도 거치지 않으므로 여기까진 어느 플랫폼의 컴파일러가 돌아가던 문제 없이 처리할수 있습니다.
(※ 참고로 전처리 과정은 매크로 치환을 할 뿐이고 에러를 잡을 수 없습니다.)

4. 전처리과정이 끝났으면 C언어 소스의 파싱을 합니다. 여기에서 모든 에러를 걸려줍니다. 전처리과정에선 매크로 치환만 하지 에러는 파싱과정에서 대부분을 잡습니다.

5. 파싱이 끝나고 나선 Assemble 과정을 거칩니다 as(GNU assembler)가 어셈블리 언어로 변환을 해 줍니다.

5. 이후 relocatable object과정을 거칩니다. Assemble과정이 끝나면 Object파일이 생성됩니다. 이 Object파일들을 모아서 어떤 symbol을 참조하는지에 대해서 조사하고 Linking을 하고 메모리상에 Loading을 하게 됩니다. 이를 Linking and Loading이라고 부릅니다.

2시간 동안 진행 되었던 Inside the C Programming (원 저자 요청으로 비공개) 세미나 내용을 매우 압축하여 표현하였으나 여기선 설명이 부족한듯 합니다. -_-;; 상세한 내용은 Inside the C Programming (원 저자 요청으로 비공개)을 보시기 바랍니다.

(참조: GNUPro Toolkit Manuals 4. Basic Principles of the Tools)
Compilation involves up to four stages, always in the following order:

  • preprocessing

  • compiling

  • assembling

  • linking


컴파일러가 컴파일을 하면 preprocessing, compiling, assembling, linking 등의 4단계로 진행된다고 설명할 수 있습니다. 컴파일러가 컴파일하는 것의 내부를 더 뜯어보면 Parsing은 물론이고 컴퓨터 메모리 구조등의 OS 기본지식이 있어야 알수 있는 내용들이 들어있습니다.

역시 컴퓨터공학부 3~4학년 과정 과목인 System Programming, Operating System, Compiler(앞부분) 3과목의 내용을 통틀어 설명하기 때문에 2시간의 세미나가 부족하긴 하더군요. 더 많은 정보를 얻고 싶은 분들은 gcc, cpp, as, ld 등의 manpage와 manual을 참조해야 되는 사실을 보고나선... (한글화가 된 자료는 joinc.co.kr의 내용을 다 읽어보면 빠른 시간내에 이해되실겁니다.)

공부할 것은 많고, 시간은 부족하다.


Buy me a coffeeBuy me a coffee

+ Recent posts