#include <libintl.h> /* GLIBC */char *gettext(const char *msgid);char *dgettext(const char *domainname, const char *msgid);char *dcgettext(const char *domainname, const char *msgid, int category);ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ , ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
const char *msgidΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ°. ΠΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ².
const char *domainnameΠ’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ ΠΎΡΡ
main()textdomain()int categoryΠΠ΄Π½Π° ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² (
LC_TIMEtextdomain()messagestextdomain()LC_MESSAGESmain()textdomain("killerapp");Π’ΠΎΠ³Π΄Π° '
gettext("my message")dgettext("killerapp", "my message")dcgettext("killerapp", "my message", LC_MESSAGES)Π 99,9% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±ΡΠ²Π°Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
gettext()ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ. Π‘ΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ
msgid/* ΠΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ. */#include <stdio.h>#include <locale.h>#include <libintl.h>int main(void) {Β setlocale(LC_ALL, "");Β printf("%s\n", gettext("hello, world"));Β return 0;}Π₯ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅
printf()%ΠΡΠΊΠΎΡΠ΅, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 13.3.4 Β«Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
gettext()gettext()13.3.3. Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ:
ngettext()ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ. ΠΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
printf("%d word%s misspelled\n", nwords, nwords > 1 ? "s" : "");/* ΠΈΠ»ΠΈ */printf("%d %s misspelled\n", nwords, nwords == 1 ? "word" : "words").ΠΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½ΡΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎΡΡΡΡ, ΠΊΠ°ΠΊ Π² Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΈΠΊΡΠ°
sif (nwords == l)Β printf("one word misspelled\n");elseΒ printf("%d words misspelled\n", nwords);Π Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
#include <libintl.h> /* GLIBC */char *ngettext(const char *msgid, const char *msgid_plural,Β unsigned long int n);char *dngettext(const char *domainname, const char *msgid,Β const char *msgid_plural, unsigned long int n);char *dcngettext(const char *domainname, const char *nmgid,Β const char *msgid_plural, unsigned long int n,Β int category)ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
msgidconst char *msgid_pluralΠ‘ΡΡΠΎΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΡΠΊΠΎΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ.
unsigned long int nΠ§ΠΈΡΠ»ΠΎ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π°. [145] Π€ΡΠ½ΠΊΡΠΈΡ
ngettext()nmsgidmsgidngettext()msgidn == 1msgid_pluralprintf("%s\n", ngettext("%d word misspelled", "%d words misspelled", nwords), nwords);ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ
nwordsngettext()printf()n++ngettext()