Отличие функций setlocale(0,'') и setlocale(LC_ALL,'') в программировании заключается в том, что они выполняют разные действия:
- setlocale(0,''). 1 Если в качестве locale передана пустая строка '', имена локалей будут взяты из соответствующих переменных окружения или переменной с именем 'LANG'. 1 Если в качестве locale передан NULL или '0', локаль изменена не будет, а будет возвращено текущее значение. 1
- setlocale(LCALL,''). 4 Если при вызове функции в качестве locale передана пустая строка, setlocale определяет локаль, используя переменные окружения. 4 Если установлена переменная LCALL, она указывает имя для всех категорий и может переопределить значения других переменных окружения. 4
Таким образом, выбор между этими функциями зависит от того, какие действия нужно выполнить с локалью: получить текущее значение или установить его на основе переменных окружения.