Программы в "исходниках"
Если программы доступны в "исходниках", то их можно исправить. Обычно для этого достаточно вставить вызов 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). В некоторых программах могут оказаться "вшитыми" названия шрифтов, которыми эта программа должна отображать вводимые символы.
К сожалению, никаких общих рекомендаций для этого случая я дать не могу. Замечу только, что ...
- если русские буквы "вводятся, но не так" (то есть, вместо русских букв печатаются какие-то "западноевропейские")
- и ни в каких настройках (конфигурационных файлах) исправить "фонт" не удается
- то имеет смысл поискать в "исходниках" - не прописаны ли там полные названия "фонтов".
И наконец, особые проблемы могут возникнуть с "мультиязыковыми" программами ...