13.4.4. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΠΈΡ Π±ΡΡΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌΒ», ΠΈ Π°Π²ΡΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ Π±ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠΈΡ Π·Π½Π°ΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΠΈΡ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² GNU/Linux ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ Π² Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π¨ΡΠ°ΡΠ°Ρ Π»ΠΎΠΊΠ°Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
en_US.UTF-813.5. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
1.Β Π‘, A Reference Manual, 5th edition, by Samuel P. Harbison III and Guy L. Steele, Jr., Prentice-Hall, Upper Saddle River, New Jersey, USA, 2002. ISBN: 0-13-089592-X.
ΠΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ ΡΠ°Π½ΡΡΠ΅. ΠΠ½Π° Π΄Π°Π΅Ρ ΡΠΎΡΠ½ΠΎΠ΅ ΠΈ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠ½ΡΠΌΠΈ ΠΈ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ C99, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΠ»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π‘ 1999 Π³.
2.Β GNU gettext tools, by Ulrich Drepper, Jim Meyering, FranΓ§ois Pinard, and Bruno Haible. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ GNU
gettextinfo gettextftp://ftp.gnu.org/gnu/gettext/13.6. Π Π΅Π·ΡΠΌΠ΅
β’Β ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎΠ΄ ΠΎΠ±ΡΠ΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. Π¨ΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ i18n, l10n ΠΈ NLS. Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΡ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΡΡΠΌΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠ°Π½Π΅ Π½ΠΎΡΠΌΠ°ΠΌΠΈ.
β’Β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
setlocale()β’Β Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Ρ ΡΡΠ΅ΡΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ
strcoll()strxfrm()strcmp()localeconv()nl_langinfo()strfmon()strftime()printf()β’Β ΠΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠΎΠ΄Π΅Π»Ρ
catgets()gettextβ’Β ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
gettext()gettext()textdomain()bindtextdomain()β’Β
gettext()ngettext()printf()β’Β ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ GNU ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΡΠΎΠΊ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»
gettext.h_()N_()β’Β GNU
gettextβ’Β ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠΎΠΈΡ Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. ΠΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Ρ ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1.Β ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π»ΠΎΠΊΠ°Π»ΠΈ? ΠΡΠ»ΠΈ Π΄Π°, ΠΊΠ°ΠΊΠ°Ρ Π»ΠΎΠΊΠ°Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
2.Β ΠΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ locale(1), Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Ρ Π²Π°Ρ Π΅ΡΡΡ. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΡΠΈΡΠ°Π΅ΡΠ΅ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ '
locale -a | wc -l3.Β ΠΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Ρ
ch13-strings.Ρch13-lconv.cch13-strfmon.Ρch13-quoteflag.cch13-times.c4.Β ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π΅Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GNU
gettextbindtextdomain()ΠΠ»Π°Π²Π° 14
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
Π Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ API. ΠΠ½ΠΈ ΡΡ ΠΎΠ΄Π½Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ ΡΠ°Π½Π΅Π΅ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΡΡΠ΄Π½ΠΎ Π±ΡΠ»ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΠΌΡ.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΡ Π³Π»Π°Π² Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ. Π Π΄ΡΡΠ³ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΌΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΡ ΠΎΡΠ²Π΅ΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ: Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ; Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ²; ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄ΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΡΠ½Π΄Ρ; ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²ΠΈΡΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠ΅, Π²ΡΠ΅ API Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡ POSIX.
14.1. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ:
posix_memalign()memalign()ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ β
malloc()realloc()