2009-05-28 4 views
1

우리의 gettext 번역 다음 형식을 사용합니다
Poedit regex 기반 파서? 우리의 JS 파일에서

var str1 = '!t[The text that should be translated]'; 
var str2 = '!t[Some more text]'; 

이 JS 파일이 PHP를 사용하여 분석되고 해석 된 문자열이 젠드 프레임 워크 Zend_Translate을 통해 번역 얻는다. 생성 된 JS는 다음과 같습니다 : 문자열을 추출하기위한

var str1 = 'The text that should be translated'; 
var str2 = 'Some more text'; 

가 번역하고 우리가 Poedit을 사용하는 우리의 PHP 파일을 변환, 그것은 매우 잘 작동합니다.
Poedit을 사용하여 번역 할 문자열을 구문 분석 할 수 있습니까? '!t[...]'?

어떤 문제는 정규식을 기반으로 한 Poedit 파서입니다. 그런 파서가 있습니까?

대안으로 PHP를 매개 변수로 사용하는 xgettext를 기반으로 소스 코드 파서를 정의 할 수 있습니다 (xgettext는 .js 파일에 대해 알지 못하기 때문에 사용자가해야하며 C 파일을 처리합니다). 그리고 우리는 우리의 JS 파일에 다음과 같은 형식을 사용합니다

var str1 = '<?=_t("The text that should be translated")?>'; 
var str2 = '<?=_t("Some more text")?>'; 

없이이 그냥 Poedit로 문자열을 구문 분석 할 수 있도록 사방에 PHP과 같은 코드를 사용하는 것이 정말 쿨의 말을. 당신의 문자열을 일치

답변

0

정규 표현식은

$translated = preg_replace('/[\'"]\!t\[(.+)\][\'"]/e', 'translate_function('\\2')', $str); 

의 \ 2 \ 1 \ 3로 대체해야하는지 모르겠어요, 당신이 솔루션은 PCRE 정규식 엔진이 제공하는 "E"수정입니다 .

+1

미안 파비엥, 내가 무엇을 찾고 있는지 이해하지 못했습니다. 제목에서 알 수 있듯이 번역 할 문자열을 Poedit로 파싱하는 것입니다. JS 파일에서 번역 할 문자열을 자동으로 추출하려면이 코드가 필요합니다. Poedit은 쉽게 지원하는 언어에 대해이 작업을 수행합니다. PHP 파일과 완벽하게 작동하지만 JS를 지원하지 않습니다. 그렇게해도 우리가 사용하는 형식은 기본적으로 지원되지 않습니다. 우리가 정말로 필요로하는 것은 Reedx 기반의 Poedit 용 소스 코드 파서입니다. 추신 : 귀하의 솔루션이 무엇을 해결하는지 정말로 이해하지 못합니다. –

+0

좋아, PHP를 사용하여 javascript 파일을 구문 분석하고 php-gettext를 사용하여 토큰을 변환한다고 생각했습니다. 이 페이지가 당신이 원하는 것을 도울 수 있다고 생각합니다 : http://www.tine20.org/wiki/index.php/Developers/Concepts/Translation_Howto –

0

Poedit 및 xgettext는 JavaScript를 현재 지원합니다 (2009 년에는 사실인지 모르겠지만 생각하지 않았습니다).하지만 사용자 정의 마크 업으로 문자열 리터럴을 지원하지 않습니다. 그래서 당신은 여전히 ​​

var str1 = '!t[The text that should be translated]'; 

에서 추출 할 수 없습니다하지만 당신은 쉽게 도우미 함수를 사용하여 추출 할 수 있습니다 :

var str1 = t('The text that should be translated'); 

을 그냥 Poedit의 키워드로 t를 추가합니다.

관련 문제