Как проверить, что локализация заработала ?
Если у Вас полная реализация POSIX.2
1996, то проще всего воспользоваться утилитой locale.
Применяя можно получить множество полезных сведений :
e.t.c.
e.t.c.
Также можно воспользоваться такой короткой прогрммкой :
/* testlocl.c : Минимальная проверка работоспособности locale, категория LC_CTYPE, "ключевое слово" - alpha */
#include <stdio.h> #include <locale.h> #include main() { unsigned char c=0x0f9; setlocale(LC_ALL, ""); printf("LC_CTYPE\t= %s\n", setlocale(LC_CTYPE, NULL)); printf("isalpha(%c)\t= %s\n", c, isalpha(c) ? "yes" : "no" ); return 0; } |
Для русской локализации в koi8-r согласно , коду 0x0f9
соответствует русская буква "Ы" :
F9 CYRILLIC CAPITAL LETTER YERI
то есть. :
$ cc -o testlocl testlocl.c $ ./testlocl LC_CTYPE = ru_RU.KOI8-R isalpha(Ы) = yes $
Правильность работы категории LC_COLLATE
можно проверить даже не компилируя тестовых программок, предполагая, что утилиты tr и dd работают в соответствии с POSIX :
$ echo ы | tr '[:lower:]' '[:upper:]'
Ы $ echo ы | dd conv=ucase Ы 0+1 records in 0+1 records out $