Π’Π°Π±Π»ΠΈΡΠ° 13.4. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΡ
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ '+' ΠΈΠ»ΠΈ '-'. '+' ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠ° ΠΎΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡ ΡΠΈΡΠ»Π΅Π½Π½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π³ΠΎΠ΄Π° ΠΊ ΡΠΈΡΠ»Π΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ Π³ΠΎΠ΄Ρ, Π° '-' ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΠ»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊ Π΄Π°ΡΠ΅ Π½Π°ΡΠ°Π»Π° ΡΡΡ Π³ΠΎΠ΄ ΠΠ°ΡΠ° Π½Π°ΡΠ°Π»Π° ΠΠ°ΡΠ° Π½Π°ΡΠ°Π»Π° ΡΡΡ Π² Π²ΠΈΠ΄Π΅ 'Π³Π³Π³Π³/ΠΌΠΌ/Π΄Π΄'. ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ΄, ΠΌΠ΅ΡΡΡ ΠΈ Π΄Π΅Π½Ρ. ΠΠΎΠ΄Ρ Π΄ΠΎ Π½.Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Π³Π³Π³Π³ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ° ΠΠ°ΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΎΠΏΡΡΡΠΈΠΌΡ Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΈΠ΄Π°: -* ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«Π½Π°ΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ», Π° +* ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΠΊΠΎΠ½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ» ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡ ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ %EC ΡΡΠ½ΠΊΡΠΈΠΈ strftime() Π€ΠΎΡΠΌΠ°Ρ ΡΡΡ Π€ΠΎΡΠΌΠ°Ρ Π³ΠΎΠ΄Π° Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ %EY ΡΡΠ½ΠΊΡΠΈΠΈ strftime()ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ALT_DIGITS ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Β«Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΡΡΡΒ». (Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π°ΡΠ°Π±ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΡΡ 0β9 Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ Π»ΠΎΠΊΠ°Π»Ρ Β«ΠΡΠ΅Π²Π½Π΅Π³ΠΎ Π ΠΈΠΌΠ°Β», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠΌΡΠΊΠΈΠ΅ ΡΠΈΡΡΡ.) ΠΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ %OC Π² ΡΡΠ½ΠΊΡΠΈΠΈ strftime(). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ 'nl_langinfo(ALT_DIGITS)' ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΡΠΎΡΠΊΠ°ΠΌΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠΈΡΡ. ΠΠ΅ΡΠ²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ 0, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π΄Π»Ρ 1 ΠΈ Ρ.Π΄. POSIX ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ Π΄ΠΎ 100 Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π‘ΡΡΠ½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΈΡΡ ASCII, ΠΊΠΎΠ³Π΄Π° Ρ Π»ΠΎΠΊΠ°Π»ΠΈ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, 'nl_langinfo(CRNCYSTR)' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΌΠ΅ΡΡΠ½ΠΎΠΉ Π²Π°Π»ΡΡΡ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ '-', '+' ΠΈΠ»ΠΈ '.', ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»:
- Π‘ΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
+ Π‘ΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
. Π‘ΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ Π΄ΡΠΎΠ±ΠΈ).
13.3. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Ρ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ , ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°ΡΡ, ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΠΎΠΊ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°Π±Π»ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈ Π΄Π°Π½Π½ΡΡ (ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅ΡΡΡΠ΅Π² ΠΈ Π΄Π½Π΅ΠΉ).
ΠΠ΄Π½Π°ΠΊΠΎ, Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ . ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²Π΅ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π² ΠΌΠΈΡΠ΅ GNU ΡΠ²Π»ΡΠ΅ΡΡΡ GNU gettext. (GNU ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ΅Π½Ρ; ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ²ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.)
GNU gettext Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½ΡΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΡΠ°ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π°, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠ»ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (message catalog).
13.3.1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°: textdomain()
ΠΠ°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²: ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Π‘ ΠΈΠ»ΠΈ C++ ΠΈΠ»ΠΈ Π½Π° ΡΠ·ΡΠΊΠ°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ gettext, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ gawk ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Bash ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. (ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Β«gawkΒ» ΠΈΠ»ΠΈ Β«coreutilsΒ»; ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ β ΡΠ΅Π»ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.) Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ textdomain():
#include <libintl.h> /* GLIBC */
char* textdomain(const char *domainname)
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅ΠΉ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½, Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² main(). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ. ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ domainname ΡΠ°Π²Π΅Π½ NULL, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π΄ΠΎΠΌΠ΅Π½; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΠ½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ textdomain(), ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«messagesΒ».
13.3.2. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ: gettext()
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ gettext() (ΠΈΠ»ΠΈ Π΅Π΅ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π°. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ»ΡΠΆΠ±Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°:
#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_TIME ΠΈ Ρ.ΠΏ.). ΠΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°Π½ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ textdomain() (Β«messagesΒ», Π΅ΡΠ»ΠΈ textdomain() Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ). ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ LC_MESSAGES. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, main() Π΄Π΅Π»Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²:
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").
ΠΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½ΡΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎΡΡΡΡ, ΠΊΠ°ΠΊ Π² Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΈΠΊΡΠ° s Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΠΎΠ²). ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΠ²ΡΠΎΠΏΠ΅, ΠΈΠΌΠ΅ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΡΠΌΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ: