2014-09-09 9 views
2

ICU 메시지 포맷팅이 저에게 효과적이지 않습니다. 여기에 예제 :작동 시키십시오 : ICU/php-intl 니모닉 태그 "plural"pluralization formatting

$n = 22; 
$f = MessageFormatter::create('ru', '{n, plural, one{корова} few{коровы} many{коров} other{коров}}'); 
echo $n.' '.$f->format(['n' => $n])."\n"; 

내가 출력 22 коров 얻을 수 있지만, 분명히 22 коровы을 얻어야한다. 여러 우분투 서버에서 시도했습니다.

언어 : 러시아어

PHP - 국제 버전 1.1.0

ICU 버전 내가 붙어 원인 어떤 도움이 appriciated됩니다 52.1

.

답변

3

그건 하나의 불쾌한 버그입니다. 그 중 하나는 내가 거의 알아 낸 시간입니다. 2-4, 22-24 등의 그래서 http://source.icu-project.org/repos/icu/icu/tags/release-52-1/source/data/misc/plurals.txt

, 케이스 (22 коровы를)

set34{ 
    many{ 
     "v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100" 
     " = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …" 
    } 
    one{ 
     "v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 6" 
     "1, 71, 81, 101, 1001, …" 
    } 
    other{ 
     " @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal" 
     " 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" 
    } 
} 

출처 : 글쎄, 우리는 다음이 (도 아마 전) ICU 52.1에서 밝혀 other 수정 자 아래에 있으므로 올바른 구문의 경우는 {n, plural, one{корова} few{коровы} many{коров} other{коровы}}이됩니다. 더 새로운 버전과의 호환성을 위해 few을 남겨 둡니다 (실제로이 경우 few 수정 자 사용).