기존의 ASP.NET으로 된 소스 코드를 일본어로 Localizing 해야 하는 일이 생겼었다.

처음 제작시 부터 I18n 을 고려해서 만들었으련 좋았으련만 그런 프로젝트를 할만한 여건이 안되었나 보다. 결국 소스에서 한글로 작성된 문자열을 찾아서 바꾸어 주어야 하는 데 소스 파일의 규모만 해도 어마어마 하고, 문자열 리소스가 따로 분리된 것이 아니라서 상당한 작업이 예상 되었다.

암튼 서론이 길어지는데..
결론적으로 분량이 꽤 되는 소스 파일에서 한글이 들어가는 부분만 찾는 작업이 필요했다.

이를 위해서 일단은 Ruby로 간단한 Script를 만들어서 한글이 들어간 Line을 모두 추출하는 Script를 만들었다. 물론, 간단히 거를 수 있는 주석 등  불필요한 부분은 제거했다.

다음으로 이를 어떻게 사용할까를 고민하다가 ViM을 이용해서 해당 줄을 탐색하도록 했다.
이 부분이 약간 재미있어서 Posting을 해둔다.

한글만 뽑아내는 스크립트를 돌리면 아래와 같은 결과물이 나온다.
형식은 "파일명 : 줄수 : 한글 내용" 이다.
사용자 삽입 이미지

이를 Excel로 불러 들여서
텍스트를 :로 나누면 간단히 엑셀로 변환할 수 있다.
엑셀로 한글이 들어간 열만 따로 빼면 번역을 수월하게 할 수 있는 환경이 된다.

번역을 하다보면 해당 Line으로 직접 이동하고 싶은 경우가 생길 수 있는데.
이는 Vim에서 불러들이면 아래와 같이 쉽게 해당 줄로 이동할 수 있다.
사용자 삽입 이미지

간단한 설명 첨부하자면..

원래 ViM으로 Coding을 하는 통합환경으로 사용할 수도 있는데.. 여기에서
Compile 메시지 중 Error나 Warning이 일어난 곳으로 바로 이동할 수 있도록 하는 기능을 지원 한다.
위의 결과물이 Compiler가 내보낸 결과물이라고 생각한다면..비슷한 효과를 얻을 수 있다.

Vim에서 아래와 같이 Error Format을 지정해주고, 파일을 읽어온 다음 Error Window를 열면 탐색이 가능 하다.
:set efm=%f\ :\ %l\ :\ %m
:cfile result.txt
:cn / :cp / :cc
:cw


--------------------------------------------
추가.

#1. 일본 Localizing 프로젝트는 무기한 연기 되었다.

#2. ViM에서 grep을 연동하여 사용할 수 있는데 grep, :vimgrep 등을 사용하면 된다.
Posted by U_Seung

사용자 삽입 이미지

SpringNote를 Vim 에서 Markdown 문법으로 사용하는 플러그인 입니다.
위의 참조에 링크된 데모 동영상을 보시면 개략적인 사용법과 내용을 아실 수 있습니다.

데모를 보고 감을 잡으신 분들도 있겠지만 위 프로그램은 다음과 같이 동작합니다.
1. Snote를 시작(:Snote)하면 SpringNote API를 이용하여서 글 목록을 받아온 후 이를 새창에 표시 합니다.
2. 원하는 글을 선택(Enter)하면 해당 글을 SpringNote API를 통해 받아 옵니다.
3. 받아온 글(XHTML)을 Markdown 형식의 포맷으로 변환 합니다.
4. 변환된 파일을 Vim으로 편집합니다.
5. 편집한 파일을 저장(:w)하면 이를 다시 XHTML로 변환합니다.
7. 변환한 파일을 SpringNote API를 이용하여 전송합니다.

제가 만든 부분은 여기에 껍데기를 붙인 Vim Plugin과 3번 XHTML에서 Markdown으로의 Converting부분 입니다. 원래는 다른 방식의 Converting을 썼었는데 속도도 그렇고 품질도 영 마음에 안들어서 직접 만들고야 말았습니다. (왜 그런 삽질을 ㅠ)

* SpringNote가 곧 블로그 내보내기를 지원할 것 같은데..
  이제 Vim으로 블로그 포스팅을 하는 글을 작성하게 될지도 모르겠네요 :)
* 또, SpringNote가 슬라이드 보기를 지원한다고 하면
  이제 Vim으로 Presentation 자료를 만드는 세상이 온 겁니다. ㅎㅎ


문제점이 몇 가지 있는데..
#1. SpringNote 서비스가 불안정 하여서 제대로 데이터 교환이 이루어지지 않을 때도 있습니다.
#2. 에러/예외 처리를 별로 안해서 문제가 발생시 사용자가 원인을 파악하기 힘듭니다.
    ( 죄송합니다.. ㅠㅠ )


추가하고 싶은 기능이 있다면..
#1. 오프라인 기능, 하드 디스크와 싱크 맞추기
#2. 첨부 파일 기능?
#3. 유지보수 안하기기 기능 -_-;;


그럼 즐 편집 하세요 :)

Posted by U_Seung