2012-12-20 3 views
2

나는 번역을 처리하기 위해 Zend_Translate PHP 배열을 사용하는 다국어 사이트를 운영하고 있습니다. 그것은 잘 작동하지만 추가 기능을 제공하므로 gettext를 사용하여 변환하려고합니다.gettext .po 파일에 정렬 된 변수를 지정하는 방법은 무엇입니까?

그러나 PHP 배열 번역에서 내가 좋아하는 기능인 gettext와 동일한 기능을 아직 발견하지 못했습니다. n $ 위치 지정자 (example #4 of PHP sprintf).

나는 내가 원하는 걸의 good example이 (변수의 순서는 영어와 중국어로 어떻게 다른지 알) 발견 :

#: wp-admin/upload.php:96 
#, php-format 
msgid "File %1$s of type %2$s is not allowed." 
msgstr "类型为%2$s的文件%1$s不允许被上传。" 

그러나 나는 나를 위해 일을 못 했어. 내 엔/messages.po 파일이 있습니다

#, php-format 
msgid "Earn X cash" 
msgstr "%1$sEarn 1-30%% cash back%2$s, get money-saving coupons, and find the best price on every purchase at %3$s2,500+ stores%4$s." 

을하고, PHP는 이것이다 (번역의 배열 스타일 일한 적이있는 나는이 변경되어 생각하지 않습니다) :

<?php echo $this->translate('Earn X cash', '<span class="earnCashBack">', '</span>', '<a href="/stores" class="numStores">', '</a>'); ?> 

html로는 다음과 같이 잘못 나오는 :

$sEarn 1-30% cash back$s, get money-saving coupons, and find the best price on every purchase at $s2,500+ stores$s. 

어떻게 일이의와 .po 파일을 편집해야합니다? 또는 .po를 .mo 파일로 컴파일하는 데 php-mo을 사용하지 않아야합니까?

$x = str_replace('$', '\\$', $x);

난 사실 그 이유는 확실하지 않다 : 나는 PHP-mo.php이 라인을 주석 시도 후

+0

다음은 힌트입니다. http://php.net/manual/en/function.sprintf.php#25243 – Ryan

답변

1

내와 .po 및 .mo 파일 작업 (내 웹 페이지가 좋아 보인다) 라인은 전혀 없었지만, 제거하면 내가 아직 발견하지 못한 버그가있을 수 있다는 사실이 불안해집니다. 하지만 최소한 을 볼 수있는 문제를 해결했습니다.

관련 문제