const char *dirname);ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ '
./tmpchar *td_dir;setlocale(LC_ALL, "");textdomain("killerapp");if ((td_dir = getenv("KILLERAPP_TD_DIR")) != NULL)Β bindtextdomain("killerapp", td_dir);bindtextdomain()gettext()13.3.7. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. ΠΠ°Π½Π½ΡΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ ΠΈΡΠΎΠ³ΠΈ.
1.Β ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»
gettext.h_()N_()ENABLE_NLS2.Β ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
setlocale()setlocale(LC_ALL, "")3.Β ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
textdomain()4.Β ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ
bindtextdomain()5.Β ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
strfmon()strftime()'nl_langinfo()strftime()6.Β ΠΠΎΠΌΠ΅ΡΡΡΠ΅ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ
_()N_()Π₯ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΠΊ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅
getopt_long()%d %d\n7.Β Π Π½ΡΠΆΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
ngettext()8.Β Π£ΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΆΠΈΠ·Π½Ρ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠ»Π½ΡΠΌΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ
%s?:if (/* <i>Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°</i> */) { /* ΠΠΠ ΠΠ */Β /* ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°. */Β if (input_type == INPUT_FILE)Β fprintf(stderr, _("%s: cannot read file: %s\n"),Β Β argv[0], strerror(errno));Β elseΒ fprintf(stderr, _("%s: cannot read pipe: %s\n"),Β Β argv[0], strerror(errno));ΠΡΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ
if (/* <i>Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°</i> */) { /* ΠΠΠΠΠ ΠΠ */Β fprintf(stderr, _("%s: cannot read %s: %s\n"), argv[0],Β input_type == INPUT_FILE ? _("file") : _("pipe"),Β strerror(errno));}ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΌΡΡΠ»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠ΅Π³ΠΎ ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
13.3.8. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ²
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ. ΠΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠΎΠ²Π½Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
ch06-echodate.ctime_t/* ch13-echodate.c --- Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² */#include <stdio.h>#include <time.h>#include <locale.h>#define ENABLE_NLS 1#include "gettext.h"#define _(msgid) gettext(msgid)#define N_(msgid) msgidint main (void) {Β struct tm tm;Β time_t then;Β setlocale(LC_ALL, "");Β bindtextdomain("echodate", ".");Β textdomain("echodate");Β printf("%s", _("Enter a Date/time as YYYY/MM/DD HH:MM:SS : "));Β scanf("%d/%d/%d %d:%d:%d",Β &tm.tm_year, &tm.tm_mon, &tm.tm_mday,Β &tm.tm_hour, &tm.tm_min, &tm.tm_sec);Β /* ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π΄Π»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΠΎΠΏΡΡΠ΅Π½Π°. */Β tm.tm_year -= 1900;Β tm.tm_mon -= 1;Β tm.tm_isdst = -1; /* Π Π»Π΅ΡΠ½Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ */Β then = mktime(&tm);Β printf(_("Got: %s"), ctime(&then));Β exit(0);}ΠΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ
"gettext.h"<gettext.h>gettext"gettext.h"gettext