Complete C++ i18n gettext() “hello world” example имеет код C++, который работает для простой фиксированной строки. Теперь я ищу примерную программу, которая работает с множественными числами. Этот пример кода отображает шесть строк. На английском только один правильный. Он не обрабатывает множественные числа правильно.I18n C++ hello world with multipleals
cat >helloplurals.cxx <<EOF
// hellopurals.cxx
#include <libintl.h>
#include <locale.h>
#include <iostream>
#include <stdio.h>
int main(){
setlocale(LC_ALL, "");
bindtextdomain("helloplurals", ".");
textdomain("helloplurals");
for (int ii=0; ii<5; ii++)
printf (gettext("Hello world with %d moon.\n"), ii);
}
EOF
g++ -o helloplurals helloplurals.cxx
./helloplurals
GNU gettext() for plural forms описывает различные способы, которыми языки обработка множественном, например:
- корейских - нет pluals
- английского - две формы, единственное число используемого для одного только
- французских - две формы, особый используется для нулевого и одного
- Polish - три формы, специальный чехол для одного и некоторых номеров, заканчивающийся на 2, 3 или 4
Мое предположение, что код сможет работать (с учетом каталогов сообщений) специально для всех вышеперечисленных случаев и еще нескольких вариантов, не указанных здесь. Правильный выход, когда он выполняется с английским будет:
Hello world with 0 moons.
Hello world with 1 moon.
Hello world with 2 moons.
Hello world with 3 moons.
Hello world with 4 moons.
Цитата JS: «Downvoters: просьба предоставить комментарии. - Jon Skeet May 8 at 9:25» –