Xem ví dụ này _n();
function (http://codex.wordpress.org/Function_Reference/_n):Nhiều hình thức số nhiều trong gettext()
sprintf(_n('%d comment.', '%d comments.', $number, 'text-domain'), $number);
bằng tiếng Anh:
1 Comment
2 Comments
bằng các ngôn ngữ như Ba Lan có một mô hình khác nhau và nhiều dạng số nhiều:
1 Komentarz
2 Komentarze
3 Komentarze
4 Komentarze
5 Komentarzy
6 Komentarzy
...
21 Komentarzy
22 Komentarze
23 Komentarze
24 Komentarze
25 Komentarzy
...
31 Komentarzy
32 Komentarze
...
91 Komentarzy
92 Komentarze
...
111 Komentarzy
112 Komentarzy (!)
...
121 Komentarzy
122 Komentarze
Tôi đang tìm một số cách để cho phép người dịch thiết lập mẫu riêng của họ nếu ngôn ngữ của họ hỗ trợ nhiều dạng số nhiều. Bạn có thể nghĩ ra bất kỳ cách tiếp cận PHP sáng tạo nào để làm điều này không?
Một số giải pháp tôi có thể nghĩ đến (nhưng vẫn dịch sẽ không thể đặt bất kỳ mẫu):
if($number == 1){
$message = __(‘1 Komentarz’ , ‘text-domain’);
}else if($number == 2){
$message = __(‘2 Komentarze’ , ‘text-domain’);
}else if($number == 3){
$message = __(‘3 Komentarze’ , ‘text-domain’);
}
EDIT: Tôi thấy điều này trong tập tin PO cho Ba Lan: "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
nhưng tôi vẫn không nhận được cách chuẩn bị chức năng _n();
để hỗ trợ điều đó.
câu trả lời của bạn là một phần lớn chính xác (ngoại trừ việc bạn không cần phải cho() -. nó sẽ làm việc chỉ với '_n();' ngay cả khi về mặt lý thuyết nó chỉ hỗ trợ hai dạng số nhiều). Tôi tìm thấy nó ra ngày hôm qua :) Cảm ơn! – Atadj
Vòng lặp for chỉ để hiển thị các văn bản được tạo với nhiều số hơn. – akky