Настройка и работа в Linux
adb5321d

Программы в "исходниках"


Если программы доступны в "исходниках", то их можно исправить. Обычно для этого достаточно вставить вызов setlocale()

где нибудь в самом начале программы (и уговорить авторов или maintainer'ов - включить этот вызов в официальный дистрибутив).

Не забудьте при этом о "иксовой заглушке" setlocale().
Если у вас Xlib собрана с X_LOCALE, то ...

  • Самое правильное - "выкинуть" ваши "иксы" и поставить "нормальные".
  • Если же этого сделать нельзя, то и программы "лечить" с помощью "иксовой" setlocale() (что для этого нужно делать - я уже написал).

Надо также отметить, что не всегда для "лечения" требуется именно setlocale(...). В некоторых библиотеках-"тулкитах" (toolkits) существуют свои функции, которые выполняют те же действия. В конечном счете они вызывают ту же setlocale(), но могут выполнять и какие-то дополнительные настройки, необходимые для работы остальных подпрограмм своего "тулкита".

Естественно, программы использующие эти "тулкиты" лучше исправлять с помощью "родной" подпрограммы настройки locale.

Например. Своя собственная процедура для установки locale в приложении имеется в библиотеке Xt, которая работает "поверх" Xlib

и, в свою очередь, является основой для популярных "тулкитов" Xaw*

и Motif (lesstif).

Поэтому, как сказано в документации Андрея Чернова (о "коификации" всего и вся):

Если программа использует один из перечисленных "тулкитов" (Xt, Xaw*, Motif/lesstif), то для ее исправления лучше вставить вызов процедуры XtSetLanguageProc, например в таком виде

XtSetLanguageProc(NULL, NULL, NULL);

Также своя процедура имеется и в библиотеке GTK - gtk_set_locale() (без аргументов). Хотя она делает практически то же, что и обычная setlocale(...), но по крайней мере еще и выдает разнообразную диагностику, "если что не так".

Еще одна проблема, на которую надо обратить внимание при "исправлении" программ - шрифты (fonts). В некоторых программах могут оказаться "вшитыми" названия шрифтов, которыми эта программа должна отображать вводимые символы.

К сожалению, никаких общих рекомендаций для этого случая я дать не могу. Замечу только, что ...

  • если русские буквы "вводятся, но не так" (то есть, вместо русских букв печатаются какие-то "западноевропейские")
  • и ни в каких настройках (конфигурационных файлах) исправить "фонт" не удается
  • то имеет смысл поискать в "исходниках" - не прописаны ли там полные названия "фонтов".

И наконец, особые проблемы могут возникнуть с "мультиязыковыми" программами ...



Содержание раздела