2012-04-28 3 views
1

제 질문은 gettext 자체에 관한 것입니다. gettext_noop 함수를 사용하지 않습니다. 나는 그것이 무엇을하는지 알지만 이점은 무엇입니까?PHP에서 gettext_noop 함수를 어떻게 사용합니까?

예를 들어. gettext_noop()는 변환되지 않지만 xgettext는이를 인식 할 수 있고 문자열을 변수로 출력 할 때 번역이 수행됩니다.

메모리 사용량 때문입니까? PHP로 사용하는 것이 더 좋습니까 아니면 그냥 _() (또는 gettext())를 사용하는 것이 더 낫습니까?

$options = array(gettext_noop("one string"), 
      gettext_noop("another string") ,); 
echo _($options[0]); 

그것은 완벽하게되어야한다 : C로 프로그래밍 할 때

답변

1

Gettext manual

는 PHP 그러나, 그것은 어떻게 이해하지 않는 것 방법 gettext_noop이 유용 할 수 있습니다 잘 커버 PHP는 동적으로 입력 된 언어이기 때문에

$options = array(_("one string") , 
      _("another string"),); 
echo $options[0]; 

, 우리는,344에 대한 좋은 사용을 찾기 위해 더 많은 창조적 일 필요 것

: 할 확인. 대부분 PHP에서는 필요하지 않습니다.

아마 gettext_noop가 바닐라 설치에 존재하지 않고 PHP's manual에 표시되지 않는 이유 일 수 있습니다.

+0

에있을 수없는 아주 좋은 이유가 아니다 :

function gettext_noop($string) { return $string; } 

그리고 명령 줄에 xgettext 당신의 호출에

는이 --keyword 인수를 포함 PHP 매뉴얼, 지금 그것입니까? –

+0

@TimoHuovinen 좋은 이유가 무엇입니까?아마 당신은 내가 바닐라 설치에서도 존재하지 않는다는 것을 강조해야한다는 것을 의미할까요? – Roflo

+0

오, 예, 말씨는 그 기능이 실제로 바닐라 PHP 내에 존재하는 것처럼 보이게하지만, 당신이 그것을 수정 볼 :) –

0

gettext_noop

에 대한 사용의 경우는 특정 상황에서 유용 할 수 있습니다. 예를 들어, 당신이 형태의 드롭 다운에 대한 허용 값의 배열있어 가정 해 봅시다 :

$allowed_values = ["red", "orange", "blue"]; 

형태를, 사용자가 번역 된 값을 확인해야하지만 요청 제출 번역되지 않은 값은 :가 표시되지 않았기 때문에

<select name="color"> 
<?php foreach ($allowed_values as $allowed_value) : ?> 
    <option value="<?= htmlspecialchars($allowed_value) ?>"> 
     <?= htmlspecialchars(_($allowed_value)) ?> 
    </option> 
<?php endforeach ?> 
</select> 

불행하게도, xgettext는 번역 문자열을 찾을 수 없습니다.

$allowed_values = [_("red"), _("orange"), _("blue")]; 

을하지만 지금은 나중에 번역되지 않은 값을 검색 할 수 없습니다 :이처럼 표시 할 수 있습니다.

대신, 당신은 할 수 :만큼 당신이이 답변의 나머지 부분을 구현할 때 의도 한대로

$allowed_values = [gettext_noop("red"), gettext_noop("orange"), gettext_noop("blue")]; 

이제 모든 작업을 수행 할 수 있습니다. gettext_noop

PHP를 구현하는 방법을

실제로 기본적으로 gettext_noop 포함되지 않습니다. 스스로를 구현하려면,이 PHP를 추가 :

xgettext --keyword=gettext_noop ... 

관련 문제