/smartformat-korean

Korean extension for SmartFormat-Python

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

SmartFormat-Korean

Build Status Coverage Status

Python 용 SmartFormat에서 쓸 수 있는 한국어 확장입니다. SmartFormat.NET을 쓴다면 C# 구현을 사용해주세요.

설치

$ pip install smartformat-korean

사용법

>>> from smartformat import SmartFormatter
>>> from smartformat.ext.korean import ko
>>> smart = SmartFormatter('ko_KR', [ko])
>>> smart.format(u'{subj:는} {obj:다}.', subj=u'대한민국', obj=u'민주공화국')
대한민국은 민주공화국이다.

자연스러운 조사 선택

, , 만~, 에~, 께~, 뿐~, 하~, 보다~, 밖에~, 같이~, 부터~, 까지~, 마저~, 조차~, 마냥~, 처럼~, 커녕~에는 어떤 단어가 앞서도 형태가 변하지 않습니다:

나오, 모리안, 키홀, 나오, 모리안, 키홀

반면 은(는), 이(가), 을(를), 과(와)~는 앞선 단어의 마지막 음절의 받침 유무에 따라 형태가 달라집니다:

나오, 모리안, 키홀

(으)로~도 비슷한 규칙을 따르지만 앞선 받침이 일 경우엔 받침이 없는 것과 같게 취급합니다:

나오, 모리안으로, 키홀

서술격 조사 (이)다는 어미가 활용되어 다양한 형태로 변형될 수 있습니다:

나오지만, 모리안이지만, 키홀이에요, 나오예요

SmartFormat 한국어 확장은 자동으로 가장 자연스러운 조사 형태를 선택합니다. 만약 어떤 형태가 자연스러운지 알 수 없을 때에는 은(는), (으)로처럼 모든 형태를 병기합니다:

>>> smart.format(u'{name:은} {alt:로} 불린다.', name=u'나오', alt=u'검은사신')
나오는 검은사신으로 불린다.
>>> smart.format(u'바로 {name:이에요}.', name=u'나오')
바로 나오예요.
>>> smart.format(u'{material:로} 만들었다.', material=u'벽돌')
벽돌로 만들었다.
>>> smart.format(u'{material:로} 만들었다.', material=u'짚')
짚으로 만들었다.
>>> smart.format(u'{material:로} 만들었다.', material=u'黃金')
黃金() 만들었다.

단어가 숫자로 끝나더라도 자연스러운 조사 형태가 선택됩니다:

>>> smart.format(u'{level:이} 되었다.', level=u'레벨 10')
레벨 10 되었다.
>>> smart.format(u'{level:이} 되었다.', level=u'레벨 999')
레벨 999 되었다.

괄호 속 단어는 조사 형태를 선택할 때 참고하지 않습니다:

>>> smart.format(u'{item:을} 얻었다.', level=u'나뭇가지(만렙)')
나뭇가지(만렙) 얻었다.

병기 순서

조사의 형태를 모두 병기해야할 때 병기할 순서를 고를 수 있습니다. 가령 대부분의 인자가 일본어 단어일 경우엔 단어가 모음으로 끝날 확률이 높습니다. 이 경우 기본형인 은(는) 스타일보단 는(은) 스타일이 더 자연스러울 수 있습니다:

>>> from smartformat.ext.korean import KoreanExtension
>>> smart = SmartFormatter('ko_KR', [KoreanExtension(u'는(은)')])
>>> smart.format(u'{flower:이} 곱게 피었다.', flower=u'さくら')
さくら가() 곱게 피었다.

은(는), (은)는, 는(은), (는)은 네 가지 스타일 중 프로젝트에 맞는 것을 고르세요.

만든이와 사용권

넥슨 왓 스튜디오이흥섭김찬웅이 만들었고 제3조항을 포함하는 BSD 허가서를 채택했습니다.