i18n

소프트웨어 스크린 샷:
i18n
소프트웨어 정보:
버전: 0.1
업로드 날짜: 14 Apr 15
개발자: Antonio Cuni
라이센스: 무료
인기: 17

Rating: 3.0/5 (Total Votes: 1)

.

국제화는 워크 플로우와 국제화 된 응용 프로그램의 개발 및 NBSP을 단순화하려고 패키지입니다, 그것은 특히 gettext를하고 바벨에 주위에 얇은 래퍼 기존 도구입니다.
기본 사용법
# 1 demo.py
#
i18n.translator 수입 번역기에서
supported_languages​​ = [ 'it_IT', 'fr_FR의', 'De_DE 만']
# 이탈리아어 번역을 활성화
TR = 번역기 ( '/ 경로 / / 루트', supported_languages​​을, 'it_IT')
인쇄 TR ._ ( '안녕하세요 세계!')
위치 / 경로 / / 루트 / 프로젝트의 루트 디렉토리입니다. 인스턴스화 할 때, 번역기 클래스는 자동으로 생성라는 디렉토리 / 경로 /에 / 루트 / 번역이 저장되는 언어.
메시지를 추출
실제 번역 작업을 수행하기 전에, 당신은 pybabel 추출물과 pybabel 업데이트 래퍼는 국제화 모듈에서 추출 명령을 호출하여, 소스 파일에서 메시지를 추출해야합니다 :
& NBSP; 파이썬 -m 국제화 --root = / 경로 /에가 / 루트 --languages​​ = it_IT, fr_FR의 경우, De_DE 만 추출
추출물은 내부에 싸여 모든 메시지 호출을 찾습니다에 _ ()에서 gettext () 또는 ngettext ()와 파일이라는 언어 / template.pot을 생산하고 있습니다. 이 응용 프로그램에있는 모든 메시지를 포함하는 표준 gettext를 포 file`입니다.
또한,도 $ 코드는 위의 예에서 supported_languages​​ (it_IT,이 fr_FR와 De_DE 만에 나열된 언어 중 하나입니다 언어 / $ 코드 / LC_MESSAGES / messages.po 같은 지원되는 각 언어에 대한 메시지 카탈로그 파일을 만듭니다) (추출 ).
카탈로그 파일은 예 QT 언어 학자 또는 Poedit을 위해, 지금은 많은 기존 도구 중 하나를 사용하여 번역 할 준비가 된 것입니다. 애플리케이션의 정확한 기능을 위해, 전체 언어 / 계층은 유지 될 필요가있다. 우리는 응용 프로그램에 속하는 다른 파일과 함께 버전 제어 시스템의 다양한 messages.po 파일을 추적하는 것이 좋습니다.
메시지를 업데이트
응용 프로그램의 개발하는 동안, 당신은 분명히 새로운 메시지를 추가 할 것은 번역합니다. 이 (기존의 번역 포함) 기존 카탈로그 파일, 콘텐츠를 발견하면 새로 추출 된 메시지와 함께 병합 : 추출 명령은 자동으로이 사건을 처리 할 수​​ 있습니다.
카탈로그를 컴파일
그것은 gettext를 함께 사용하기 전에 카탈로그 파일을 컴파일 할 필요가있다. 기본적으로, 우리의 번역기 객체는 자동으로 .mo 해당 파일을 생성 언어 /에있는 모든 카탈로그를 컴파일합니다. 컴파일은 카탈로그 파일이 수정 된 경우에만 수행됩니다. 이것은 대부분의 경우는 카탈로그의 컴파일에 대해 걱정할 필요가 없습니다.
이 단계에 대한 자세한 제어 할 원하는 경우 번역기 생성자 거짓 autocompile을 = 전달하고 명령 줄에서 수동으로 컴파일 할 수 있습니다 :
& NBSP; 파이썬 -m 국제화 --root = / 경로 /에가 / 루트 --languages​​ = it_IT, fr_FR의 경우, De_DE 만 컴파일
데이터베이스에 번역을 저장
일부 응용 프로그램은 새로운 번역을 정의 및 / 또는 기본 사람을 대체 할 수있는 사용자를 할 때 유용합니다. 국제화는 번역기의 하위 클래스 인 DBTranslator 클래스,이 사용 케이스를 지원합니다. 번역 할 때, 먼저 DBTranslator 데​​이터베이스에 보인다 : 메세지가 발견되지 않으면, 표준의 gettext 동작에 위임한다.
DBTranslator은 SQLAlchem​​y의 기반으로합니다. 생성자는 추가 엔진 매개 변수를 :
i18n.dbtranslator 수입 DBTranslator에서
SQLAlchem​​y의 수입 create_engine에서
엔진 = create_engine ( 'SQLite는 : ///db.sqlite')
ROOT = '/ 경로 /에 / 루트'
국어 = [ 'it_IT', 'fr_FR의']
DEST_LANGUAGE = 'it_IT'
TR = DBTranslator (ROOT, 언어 DEST_LANGUAGE, 엔진 = 엔진)
인쇄 TR ._ ( "안녕하세요 세계")
DBTranslator 자동으로 DB의 테이블 translation_entries을 만듭니다. 그리고, 표를 조작하는 사용자 인터페이스를 제공하는 애플리케이션에 달려있다. 테스트를 위해, 당신은 DB에 새로운 번역을 삽입 할 add_translation () 메서드를 사용할 수 있습니다 :
tr.add_translation ( "it_IT", "안녕하세요!", "챠오 몬도")
인쇄 TR ._ ( "안녕하세요!") # 인쇄 "챠오 몬도"
글로벌 번역기를 사용하는 방법
디자인으로 국제화는 완전히 전역 상태를 방지하기 위해 시도합니다. 이것은 당신이 원하는만큼 번역기 및 DBTranslator, 다른 디렉토리 및 / 또는 데이터베이스를 참조하여 각각의 하나의 인스턴스를 할 수 있음을 의미합니다. 이 테스트에 특히 유용합니다.
그러나 실제로 대부분의 프로젝트는 프로젝트의 모든 구성 요소의 메시지에 대해 알고 글로벌 번역기를 사용하고 싶습니다. 데모 애플리케이션 translate.py 모듈에 할 수있는 방법을 도시한다 :
수입 평
i18n.translator 수입 번역기에서
#이 파일이있는 디렉토리로 프로젝트의 루트를 설정
ROOT = py.path.local (__ 파일 __). dirpath ()
국어 = [ 'it_IT', 'fr_FR의', 'De_DE 만']
TR = 번역기 (ROOT, 언어 'it_IT')
_ = tr._
ngettext = tr.ngettext
__name__ == '__main__'의 경우 :
& NBSP; tr.cmdline (sys.argv에)
이 방법은 응용 프로그램의 나머지 부분은 단순히 가져 translate.py에서 _ ()와 ngettext ()를 사용할 수 있습니다. 또는, 환경 설정, 수입 직접 TR 객체와 사용 TR ._ ()와 tr.ngettext에서 () 메시지를 번역합니다.
코드의 마지막 두 줄은 수동으로 루트 디렉터리 및 지원되는 언어를 지정하지 않고도 추출물을 호출하고 명령 줄에서 컴파일 할 수있는 편리한 방법을 할 수 있습니다. 그냥 실행
& NBSP; 파이썬 translate.py 추출물 # ... 또는 컴파일

이 요구 사항 :

이 파이썬

유사한 소프트웨어

python-gettext
python-gettext

14 Apr 15

Pytho
Pytho

3 Jun 15

gtranslator
gtranslator

14 Apr 15

translationstring
translationstring

14 Apr 15

개발자의 기타 소프트웨어 Antonio Cuni

pdbpp
pdbpp

11 May 15

코멘트 i18n

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!