0
문자열이 변수를 포함하지 않는 한 지금까지는 gettext
으로 문자열을 지역화하는 데 문제가 없었습니다. 이 excellent tutorial의 단계를 따랐지만이 함수에이 함수를 적용하려고 할 때마다 문제가 발생합니다. 이처럼 내 messages.po
모습에서PHP : 변수가 포함 된 문자열 현지화
/**
* @ http://us.php.net/manual/en/function.time.php#71342
*/
function time_ago($timestamp, $recursive = 0)
{
$current_time = time();
$difference = $current_time - $timestamp;
$periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
$lengths = array(1, 60, 3600, 86400, 604800, 2630880, 31570560, 315705600);
for ($val = sizeof($lengths) - 1; ($val >= 0) && (($number = $difference/$lengths[$val]) <= 1); $val--);
if ($val < 0) $val = 0;
$new_time = $current_time - ($difference % $lengths[$val]);
$number = floor($number);
if($number != 1)
{
$periods[$val] .= "s";
}
$text = sprintf(_("%d %s ago"), $number, $periods[$val]);
if (($recursive == 1) && ($val >= 1) && (($current_time - $new_time) > 0))
{
$text .= time_ago($new_time);
}
return $text;
}
문자열 :
msgid "%d second ago"
msgid_plural "%d seconds ago"
msgstr[0] "Vor einer Sekunde"
msgstr[1] "Vor %d Sekunden"
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Vor einer Minute"
msgstr[1] "Vor %d Minuten"
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Vor einer Stunde"
msgstr[1] "Vor %d Stunden"
# and so forth…
불행히도, 이러한 문자열은 다른 모든 반면 (변수없이), 번역되지 않는 완벽하게 작동합니다. 여기서 내가 뭘 잘못하고 있니?
$text = sprintf(_("%d %s ago", $number, $periods[$val]));
가 ....해야한다 :
$text = sprintf(_("%d %s ago"), $number, $periods[$val]);
그렇지 않으면 카탈로그에 3 days ago
을 찾기 위해 노력하고있다
이 질문을 위해이 글을 쓰는 동안 저도 오타였습니다. 아직 번역되지 않았습니다. – idleberg