2013-03-11 4 views
5

. poedit를 사용하는 것은 고통이며 모든 고객에게 보여줄 수 없습니다.하기 Gettext 또는 데이터베이스 번역

사용자 지정 기능을 사용하면 간단한 번역 인터페이스가 가능합니다. 하지만 PHP/db 사용량에 무거울 수 있습니다.

언제 사용하겠습니까?

답변

14

현지화가 어렵습니다. 정말 어렵습니다. 단지 "pairs of words" => "Wortpaare" 일뿐만 아니라 그보다 훨씬 복잡합니다. 대부분의 사람들은 gettext를보고 "Ugh, 못 생겼습니다"이라는 로컬 화는 프로세스 인이 구현의 기술적 세부 사항보다 훨씬 중요하다는 것을 사람들이 잊어 버립니다. 왜냐하면 실제 번역자는 일반적으로 프로그래머가 아니기 때문에 심지어 사내에서도 번역되지 않기 때문입니다. 이것은 생각보다 많은 두통을 일으 킵니다. gettext는 정말 오래되었고, 전투 테스트를 거쳤으며,이 프로세스를 지원하기 위해 조정 된 거대한 툴체인을 가지고 있습니다. i18n 및 l10n을 올바르게 수행하려면 강력한 시스템이 필요합니다. gettext는 다양한 도구를 지원합니다. 귀하의 Homebrewed Translation System ™은 그렇지 않습니다.

우선, 에 강력한 시스템이 있어야 개의 번역 가능한 문자열을 추출 할 수 있습니다. 소스 코드에서 번역 가능한 문자열을 자동으로 그리고 재현 적으로 추출 할 수 없다면, 번역하려는 각각의 새로운 문자열에 대해 작업 할 수 있습니다. gettext에서는 xgettext을 사용합니다.

다음으로 번역이 손실되지 않고 가능한 경우 약간만 변경된 번역 만 유지되는 방식으로 추출 된 문자열을 이미 존재하는 번역과 동기화하는 도구가 필요합니다. gettext에서는 msgmerge이 이에 해당합니다.

다음으로 추가 정보를 문자열에 추가하고자합니다. 카테고리, "도메인"및 컨텍스트로 그룹화 할 수 있기를 원하면 번역기에 대한 주석을 소스 코드에 추가하고 번역자가 번역에 주석을 추가 할 수있게 할 수 있습니다. gettext는 모든 것을 지원합니다.

다음으로 다양한 도구의 지원이 좋은 파일 형식이 필요합니다. 중국으로 파일을 보내어 번역 할 수 있기 때문입니다. 외부 번역자에게 보낼 수있는 이유는 변경 사항을 병합하기 위해 좋은 동기화 도구가 필요하기 때문입니다. 이는 매우 비동기적인 과정 일 수 있기 때문입니다. PO 파일은 gettext가 너무 오래 되었기 때문에 아주 잘 지원됩니다. 특정 요구에 따라 다양한 수준의 현지화 프로세스를 지원하는 많은 오픈 소스 및 상용 도구가 있습니다.

현지화 작업을 과소 평가하지 말고 프로세스에 적합한 도구를 선택하고 학습하십시오. gettext는 훌륭한 도구입니다.

여기에 my gettext extension for Twig이 있습니다. PHP에 대한 gettext가 훨씬 개선되었습니다.

+2

위대한 답변 - 자체 개발 솔루션으로 자르는 작은 문제를 지적 해 주셔서 감사합니다. 커스텀 솔루션이 처음에는 대부분 작동하지만, 프로젝트가 복잡해 지거나 지원되는 언어가 늘어남에 따라 맞춤형 솔루션이 전체 gettext 구현을 위해 버려지게 될 것입니다. – rinogo

2

어쩌면 당신은 Memcached을보고 MySQL과 함께 사용할 수 있습니다. 번역과 같이 자주 변경하지 않는 데이터를 가져 오는 데 매우 유용합니다.