13.3.4. Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
gettext()ΠΡΠ·ΠΎΠ²
gettext()xgettextΠ Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ:
static char *copyrights[] = {Β "Copyright 2004, Jane Programmer",Β "Permission is granted ...",Β /* ... ΠΠ΄Π΅ΡΡ ΠΊΡΡΠ° Π»Π΅Π³Π°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ */Β NULL};void copyright(void) {Β int i;Β for (i = 0; copyrights[i] != NULL, i++)Β printf("%s\n", gettext(copyrights[i]));}ΠΠ΄Π΅ΡΡ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΡΠΎΠΊ ΠΎΠ± Π°Π²ΡΠΎΡΡΠΊΠΈΡ ΠΏΡΠ°Π²Π°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΠ΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
xgettextgettext()/
* ΠΠΠΠ₯ΠΠ ΠΠΠ: Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ */static char *copyrights[] = {Β gettext("Copyright 2004, Jane Programmer"),Β gettext("Permission is granted ..."),Β /* ... ΠΠ΄Π΅ΡΡ ΠΊΡΡΠ° Π»Π΅Π³Π°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ */Β NULL};13.3.4.1. ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: "
gettext.hΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ GNU
gettextΠΠΎΠΌΠ΅ΡΠΊΠ° ΡΡΡΠΎΠΊ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π²Π° ΡΠ°Π³Π°. ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°
gettext.hgettextgettext()#define ENABLELNLS 1 /* ENABLE_NLS Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ true, ΡΡΠΎΠ±Ρ gettext() ΡΠ°Π±ΠΎΡΠ°Π»Π° */#include "gettext.h" /* ΠΠΌΠ΅ΡΡΠΎ <libintl.h> */ΠΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ
ENABLE_NLSgettext.hgettext()gettext()gettext/* ΠΡΠ·ΠΎΠ² ΠΏΡΠ΅Π²Π΄ΠΎΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΡΠΆΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π΄Π»ΡΒ Β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²Β Β gettext(). ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌΒ Β ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ³ΡΠΌΠ΅Π½Ρ String Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ.Β Β Π‘ΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ.Β Β Π Π°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»ΡΒ Β ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
'char[]' ΠΈΠ»ΠΈ 'const char[]'. */#define gettext_noop(String) StringΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ΅Π½. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΠ°Π³Ρ. ΠΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
#define ENABLE_NLS 1#include "gettext.h"static char copyrights[] =Β gettext_noop("Copyright 2004, Jane Programmer\n"Β "Permission is granted ...\n"Β /* ... ΠΠ΄Π΅ΡΡ ΠΊΡΡΠ° Π»Π΅Π³Π°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ */Β "So there.");void copyright(void) {Β printf("%s\n", gettext(copyrights));}ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π΄Π²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ ,
copyrightsgettext_noop()ΠΡΠΎΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²
copyright()Π ΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΡΠΌΠ°Π΅ΡΠ΅: Β«ΠΠΎΡ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½Π°Π±ΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· '
gettext(...)gettext.hgettext_()N_()#define ENABLE_NLS 1#include "gettext.h"#define _(msgid) gettext(msgid)#define N_(msgid) msgidΠ’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
gettext()#include <stdio.h>#define ENABLE_NLS 1#include "gettext.h"