2009-09-18 3 views
3

내 웹 사이트 번역에 .po.mo 파일을 사용하고 있습니다. 내 질문은 .po translation file의 번역 된 문장에 매개 변수를 전달할 수 있습니까? 예를 들어.po 번역 파일의 번역 된 문장에 매개 변수를 전달할 수 있습니까?

: 엉 -> 안녕하세요, 제 이름은 사라이다, 나는 알콜 내가 두 PARAMS, 이름 (사라)와 직업 (알콜)를 사용하여 해당 문장을 번역 할입니다.

미리 감사드립니다.

답변

9

언어에 따라 다르지만 기본적으로 항상 가능합니다.

printf(_("Hi, my name is %s and I am %s"), name, prof); 

c.

echo sprintf(_("Hi, my name is %s and I am %s"), $name, $prof); 

(PHP) 당신이 자리에 가지고 올 수

alert(_('Hi, my name is %1 and I am %2') 
    .replace('%1',name).replace('%2',prof)); 

이든 : 같은

alert(_('Hi, my name is %s and I am %s') 
    .replace('%s',name).replace('%s',prof)); 
자바 스크립트

또는 더 나은 뭔가. Javascript 구현은 물론 사전 처리 시간이나 런타임 언더 스코어 기능으로 변환 메커니즘을 제공해야합니다.

등.

+0

Reaaally 오래된 주제 , 잠재적 인 버그를 말해야했다 : "Hola, soy un Francisco llamado alcoholico"("안녕하세요, 나는 Francisco라는 알코올 중독자입니다."). 문장을 번역하는 방법은 여러 가지가 있으며 올바른 번역의 증거이지만 gettext의 잘못된 결과입니다. –

+0

정확하게 말하려고하는 것이 확실하지 않습니다. 확실히, gettext는 잘못된 방법을 사용하면 잘못된 결과를 산출 할 수 있습니다. 단순히 원본을 잘못 번역하거나, 문법 (케이스, 성별 등)에 많은주의를 기울이지 않고 원본을 번역 할 수 있으며, 상황에 따라 다르게 번역되어야하는 원본이 하나있을 수 있습니다 (이 방법은 해결하기 쉽습니다) . 내가 얻지 못하는 것은 왜 번역 할 많은 방법이 올바른 번역이 아니라 왜곡 된 결과인지를 증명하는 것입니다. –

+0

Lol 나는 대답을 기대하지 않았다. 방금 한 언어에 대해 두 개의 매개 변수가있는 텍스트 문자열을 다른 언어의 다른 순서로 매개 변수가있는 문자열로 변환 할 수 있다는 것을 의미했습니다. 첫 번째는 이름이고 두 번째는 영어 직업 인 반면, 첫 번째 직업은 직업이고 두 번째 직업은 스페인어 이름입니다. javascript의 두 번째 경우를 제외하고는 제대로 작동합니다. –

0

이 오래된 주제이지만, 단지 언급 ... 당신은 또한 어떤 인수가 (PHP에서)과 같이 사용할 나타낼 수 많은 언어에서

:

$name = 'Agustinus'; 
printf(_("Hi %1$s.\n The owner of this page is: %1$s. Today is %s.", 
    $name, date('d-m-Y')); 
+0

'% 1 $ s' ('% $ 1s'는 아닙니다)는 모든 플랫폼에서 php로 지원 될 수 있지만, 근원은 gnu libc입니다. 주의 할 점은, 만약 당신이'% 1 $ s'을 사용한다면 당신은 같은 문자열에서'% s'를 사용할 수없고 번호 매기기에 간격이있을 수 없다는 것입니다. –