1) если используешь c++ то используй лучше std::locale
2) читай внимательно man - там написано, что если аргумент locale (он второй) равен NULL, то возвращается текущая локаль
3) по умолчанию, вполне возможно, что будет установлена сишная локаль, по этому сначала установи какую нужно, а потом получай
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main() {
printf("%s\n", setlocale(LC_ALL, NULL));
printf("%s\n", setlocale(LC_ALL, "ru_RU.UTF-8"));
printf("%s\n", setlocale(LC_ALL, NULL));
return 0;
}
➜ /tmp gcc test.c
➜ /tmp ./a.out
C
ru_RU.UTF-8
ru_RU.UTF-8