changwoo/ko-po-check — Issue #8: [KLDP.NET#301276] 도움말 출력 오류 [ 7 ]
Author: changwoo
Created: 2011-11-02 11:50:56+00:00
State: open

Resolved 도움말 출력 오류 [ 7 ]

06.07.29-03:22:32

301276

Submitted by 김민식

Assignee Changwoo Ryu

View2

Priority3
Feature Request는 아닙니다만, 따로 버그 보고를 하는 곳이 없는 것 같아 여기에 올립니다. --help 옵션을 주고 ko-po-check을 실행하면 다음과 같이 에러가 납니다.

% ko-po-check --help
Traceback (most recent call last):
File "/Users/minskim/pkg/bin/ko-po-check", line 53, in ?
sys.stdout.writelines(helpmsg)
TypeError: writelines() argument must be a sequence of strings

Mac OS X 10.4.7, Python 2.4를 쓰고 있습니다.

ko-po-check.in.diff (366 bytes)

Show Tracker Items Detailed information(optional)

7 Comments

Changwoo

최근 버전에서 잘 동작하는 것 같습니다. 문제가 있으면 다시 알려주십시오.

07.04.20-07:47:48

김민식

Mac OS X 10.4.9, Python 2.4.3에서도 같은 에러가 납니다.

% ko-po-check --help
Traceback (most recent call last):
File "/Users/msk/pkg/bin/ko-po-check", line 52, in ?
sys.stdout.writelines(helpmsg)
TypeError: writelines() argument must be a sequence of strings

07.06.08-11:53:45

Changwoo

애러가 발생하는 줄번호로 보아 최근 버전은 아닌 것 같은데요. 너무 명백한 부분이라서 파이썬 버전에 따라 다르다고 보기도 힘들구요.

버그가 제출된 이후로 해당 부분이 좀 바뀌었으니 최근 버전의 ko-po-check로 다시 실행해 보시고 문제가 있으면 다시 알려주세요.

07.06.08-13:23:06

Changwoo

"Assigned To" was changed from "Nobody" to "Changwoo"
"State" was changed from "Open" to "Closed"

07.06.08-13:23:06

김민식

다시 올린 것이 ko-po-check 0.8로 테스트한 결과인데요, 저장소를 보니 0.8에 포함된 것이 최신이 맞는 것 같습니다. ko-po-check.in의 52번째 줄이 sys.stdout.writelines(helpmsg)로 에러메시지와 일치합니다.

07.06.08-13:59:13

Changwoo

다른 분들과 상의해 본 결과 원인을 알아냈는데요.

ko-po-check의 도움말 및 애러 출력은 실행하는 환경의 (로케일의) 인코딩에 맞춰 출력하게 되어 있습니다. command line 프로그램이라 일단 많이 사용하는 EUC-KR과 UTF-8 환경 모두에서 동작해야 하니까요. 그런데 맥오에스 환경은 보통 한국어 로케일을 설정 안 하고 사용하는 유저가 많아서 그런 일이 있을 것 같다는 군요. "LANG=ko_KR.UTF-8 ko-po-check --help" 라고 실행해 보세요.

별도 설정 없이 해결할 수 있는 방법을 생각해 봤지만 로케일 정보가 없으면 어떻게 할 방법이 없네요. LANG 변수를 ko_KR.UTF-8로 설정해 보세요.

07.06.08-17:02:15

김민식

기존 결과는 en_US.UTF-8에서 얻은 것이고요, ko_KR_UTF-8에서도 마찬가지입니다.

% echo $LANG
en_US.UTF-8
% ko-po-check --help
Traceback (most recent call last):
File "/Users/msk/pkg/bin/ko-po-check", line 52, in ?
sys.stdout.writelines(helpmsg)
TypeError: writelines() argument must be a sequence of strings
% env LANG=ko_KR.UTF-8 ko-po-check --help
Traceback (most recent call last):
File "/Users/msk/pkg/bin/ko-po-check", line 52, in ?
sys.stdout.writelines(helpmsg)
TypeError: writelines() argument must be a sequence of strings

07.06.08-23:18:18

김민식

File added 381: ko-po-check.in.diff

07.06.09-00:07:27

김민식

소스를 보니 getdefaultlocale()의 차이때문에 생기는 문제같습니다.

% env LANG=ko_KR.UTF-8 python2.4
Python 2.4.3 (#1, Nov 30 2006, 20:43:43)
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
(None, 'mac-roman')

Mac OS X에서는 위와 같이 환경 변수와 무관하게 mac-roman을 돌려줍니다. 첨부한 패치를 적용하면 Mac OS X에서도 에러 메시지가 제대로 나옵니다.