2009-12-04 1 views
2

내 현재의 구현, 예 :Gettext : 내부에서 HTML로 문자열 변환? 사전에 배열 기반의 저장 키와 값입니다

$arr = array(
    'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.', 
); 

나는 '만약 내가 아마 이와 같은 문자열의 내부 HTML을 저장하는 나쁜 생각 이었다는 것을 깨닫게하지만, 내 .mo/.po 파일에서 gettext를 사용하여 어떻게 비슷한 문자열을 저장해야합니까? '붙여 넣기 a'와 '아래 URL'및 'flickr'와 같은 단어를 따로 저장해야합니까?

+0

Janek이 "단어의 순서는 항상 같지 않을 것"이라고 언급하면서 이러한 단어를 separetely 저장하지 마십시오. – chelmertz

답변

4

당신은

"Paste a %1 URL below" 

같은 것을 저장하고 모두 교체해야합니다 않는 str_replace ('% 1', $ 링크, $ 메시지) 같은 간단한 것을 사용 '바르';

$ 링크는 또한이 과잉 될 수도 있지만

"<a href="http://flickr.com/">%1</a>" 

번역 할 수 있습니다 (플리커 언어를 번역합니까?)

이 뒤에 이론적 근거는 다른 언어가 서로 다른 문법 구조와의 순서를 가지고있다 단어는 항상 동일하지 않습니다.

업데이트 : 코멘트에 @ 알렉스와 @chelmertz 언급 등

, 바로이 일을 위해 내장 된 sprintf 기능을 사용해보십시오.

+5

'sprintf()'가이 상황을 위해 만들어진다. – chelmertz

+0

'echo sprintf (_ ("%s"), $ url, $ link)'(gettext 형식) (https://www.gnu.org) /software/gettext/manual/html_node/c_002dformat.html) – Alex

0

나는이 가고 싶어 : gettext를 함수 호출 내에서 문자열 리터럴 모든 번역을 갖는

$arr = array(
    'message' => _('Paste a %s URL below.'), 
); 

은 *와 .po 카탈로그를 업데이트 할 표준 도구를 사용할 수 있습니다.