Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 80

Автор Π’ΠΈΠΊΡ‚ΠΎΡ€ ΠšΠΎΡΡ‚Ρ€ΠΎΠΌΠΈΠ½

Π‘Π°ΠΌ экранный Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²: Ρ€Π΅ΠΆΠΈΠΌΠ΅ UTF ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅ΠΆΠΈΠΌΠ° опрСдСляСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обращаСтся ΠΊ этому Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ для Π²Ρ‹Π²ΠΎΠ΄Π° символов Π½Π° экран.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ UTF ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚ прилоТСния для отобраТСния Π½Π° экранС консоли, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ UTF Π² ΠΊΠΎΠ΄Ρ‹ UNICODE. ПослС Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ экрана обращаСтся ΠΊ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ экранного ΡˆΡ€ΠΈΡ„Ρ‚Π° (SFM) Π·Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ символа.

Π’ Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ экрана ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ - Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов (Application Charset Map ΠΈΠ»ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ACM) для прСобразования ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΎΡ‚ прилоТСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΊΠΎΠ΄Ρ‹ UNICODE. Π­Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° зависит ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов, примСняСмой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ дальнСйшСм Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ экрана, ΠΊΠ°ΠΊ ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ UTF, обращаСтся ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ экранного ΡˆΡ€ΠΈΡ„Ρ‚Π° (SFM) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π½Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ символа.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ консоль Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ UTF ΠΈΠ»ΠΈ Π² Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ скриптом vt-is-UTF8, Π° для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ консоли слуТат Π΄Π²Π° скрипта: unicode_start ΠΈ unicode_stop.

Π’ ядрС Linux ΠΎΡ‚Π²Π΅Π΄Π΅Π½ΠΎ мСсто для хранСния Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ACM. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ 437 ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ страницу IBM (cp437), Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для Π½Π°Π±ΠΎΡ€Π° символов Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° DEC VT100 (vt100) ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для Π½Π°Π±ΠΎΡ€Π° символов ISO latin1 (iso01). Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ встроСны Π² ядро ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π’ качСствС Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ядрС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записана Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, выбранная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Linux позволяСт для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ консоли ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ charset) Π΄Π²Π΅ ссылки (Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "сокСтами") Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ACM. Π­Ρ‚ΠΈ Π΄Π²Π΅ ссылки ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ G0 ΠΈ G1, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° значСния, присвоСнныС этим ссылкам, Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ нСзависимо. Однако, хотя ссылки G0 ΠΈ G1 Π·Π°Π΄Π°ΡŽΡ‚ΡΡ нСзависимо для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Π²Ρ‹Π±ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, опрСдСляСмой ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ссылкой, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, записанных Π² ядрС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ всС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ACM. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ для tty1 использованиС G0=cp437 ΠΈ G1=vt10 0, Π° для tty2 использованиС G0=iso01 ΠΈ G1=user1 (опрСдСляСмая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°), Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя tty1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ user1, Π° tty2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ user2.

Команда consolechars ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния ACM, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ для задания ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ ассоциированной с Π½ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ SFM. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ consolechars ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ (Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ экранного ΡˆΡ€ΠΈΡ„Ρ‚Π° SFM) 8xH ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ ΡˆΡ€ΠΈΡ„Ρ‚, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚Π° ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° слуТит для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ядро Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ссылки G0 ΠΈ G1.

Π’ качСствС ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ consolechars ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ экранного ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ H. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ H Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°. Однако Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² (Π² частности, Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ символов) Π½Π΅ содСрТат прямого указания Π½Π° этот Ρ€Π°Π·ΠΌΠ΅Ρ€. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ -H вычисляСтся исходя ΠΈΠ· Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ -H 8, -H 14 ΠΈΠ»ΠΈ -H 16). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² настоящСС врСмя Linux Π½Π΅ позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ дисплСя, Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ подходящСго значСния H Π² зависимости ΠΎΡ‚ установлСнного Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ возлагаСтся Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ с экранными ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/lib/kbd/consolefonts/, Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/lib/kbd/consoletrans/ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ† ACM, Ρ‚Π°ΠΊ ΠΈ SFM.

ГрафичСский Ρ€Π΅ΠΆΠΈΠΌ

Π’ графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π΅Ρ‚ разбиСния экрана Π½Π° знакомСста, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ любого символа ΠΌΠΎΠΆΠ½ΠΎ вывСсти практичСски Π² Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ экрана. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ символов для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚. Π¨Ρ€ΠΈΡ„Ρ‚Ρ‹ хранятся Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². Π’Ρ‹Π²ΠΎΠ΄ символов Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π½Π° экран организуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° русификации графичСского Ρ€Π΅ΠΆΠΈΠΌΠ° сводится ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ русифицированного ΡˆΡ€ΠΈΡ„Ρ‚Π°. Вопрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСрвСр ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСн Π½ΠΈΠΆΠ΅ Π² Ρ€Π°Π·Π΄. 11.4.

11.1.2. Локализация

Волько ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ символов Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка Π΅Ρ‰Π΅ нСдостаточно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ примСнСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ странС. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… странах Π² силу ΡΠ»ΠΎΠΆΠΈΠ²ΡˆΠΈΡ…ΡΡ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ различия Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅, Π½ΠΎ ΠΈ Π² способах прСдставлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ касаСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, символов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для обозначСния Π²Π°Π»ΡŽΡ‚Ρ‹, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² прСдставлСния Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π°Π΅Π² записи (чтСния) тСкстов слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈΠ»ΠΈ справа Π½Π°Π»Π΅Π²ΠΎ ΠΈ Ρ‚.Π΄. ΠŸΡ€ΠΈ создании ПО, рассчитанного Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах, приходится ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ мСстныС особСнности. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, большиС трудности Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ вопросы ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ языкС, автоматичСская расстановка пСрСносов ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ тСкста ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ язык всСх мСню ΠΈ слуТСбных сообщСний Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии.

Бпособ проСктирования ПО (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ОБ), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ многоязыковой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ закладываСтся с самого Π½Π°Ρ‡Π°Π»Π°, принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (кстати, Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎΠ΅ i18n - это просто сокращСниС для слова internationalization: i - ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ 18 Π±ΡƒΠΊΠ² - n, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, l10n = localization). ΠŸΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠšΠžΠ” Π½Π΅ зависит ΠΎΡ‚ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… особСнностСй. ВсС языково-зависимыС Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² особых "ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹: ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ локализация - это процСсс настройки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы Π½Π° особСнности ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ страны.

Π’ стандартС POSIX (Portable Operating System) Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ срСдства Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:

β€’ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… (libc) Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (locale API): setlocale(), isalpha(), toupper(), ΠΈ Ρ‚.Π΄;

β€’ ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты описания срСдств Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² Ρ‚ΠΎΠΌ числС Ρ„Π°ΠΉΠ»(Ρ‹) описания ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ (Character Set Definition File);

β€’ Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Linux Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /usr/share/i18n/* ΠΈ /usr/share/locale/*;

β€’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ срСдствах Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: locale;

β€’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для изготовлСния (компиляции) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: localedef;

β€’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния, для управлСния срСдствами Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: LANG, LC_ALL, LC_CTYPE, LC_TIME, LC_COLLATE, LC_NUMERIC ΠΈ LC_MONETARY (ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ катСгориям Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ).

Π’ Ρ‚Π°Π±Π».11.1 ΠΊΡ€Π°Ρ‚ΠΊΠΎ пСрСчислСно, Π½Π° Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ влияСт Ρ‚Π° ΠΈΠ»ΠΈ иная ΠΈΠ· этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ).

Π’Π°Π±Π»ΠΈΡ†Π° 11.1. ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ ОписаниС LC_CTYPE ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° классификации ΠΈ прСобразования ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… символов. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²ΠΈΠ΄ символа: Ρ†ΠΈΡ„Ρ€Π°, Π±ΡƒΠΊΠ²Π°, Π·Π½Π°Ρ‡ΠΎΠΊ, заглавная Π±ΡƒΠΊΠ²Π° ΠΈΠ»ΠΈ прописная ΠΈ Ρ‚.Π΄. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² isalnum(), isalpha(), iscntrl(), isdigit(),… ΠΈ Ρ‚.ΠΏ. для мСстного Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строчных - прописных Π±ΡƒΠΊΠ²: toupper() ΠΈ tolower() LC_COLLATE ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° сравнСния ΠΈ прСобразования строк. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ лСксикографичСский порядок символов (порядок сортировки) Π² мСстном Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ strcoll() ΠΈ strxfrm(). ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ нСпосрСдствСнноС влияниС Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Ρ‚ΠΈΠΏΠ° sort ΠΈ Ρ‚.Π΄. LC_TIME ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°Ρ‚Ρ‹. Π—Π°Π΄Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π½Π΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ, мСсяцСв ΠΈ Ρ‚.ΠΏ. Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ способ написания Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (12/24). HСпосрСдствСнно влияСт Π½Π° strftime(), Π° Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π΅ Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ date ΠΈ Ρ‚.Π΄. LC_NUMERIC ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. ВлияСт Π½Π° strtod() ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ %f ΠΈ %g printf(), scanf() LC_MONETARY ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½

Особая пСрСмСнная LC_ALL слуТит для обращСния ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎ всСм катСгориям.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ срСдств Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ измСняСт Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ поиска, Π² частности, ΠΏΡƒΡ‚ΠΈ поиска ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‰ΠΈ (man-страницам), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° man ΠΈΡ‰Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ man-страницы ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΡ… отсутствии Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° английском.

Подводя ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΈΡ‚ΠΎΠ³ всСму Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° русификации систСмы состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов: