Простая задача – получить символы кавычек сообразно с локалью. Оказалось, задача сложная. Из локали эту информацию извлечь очень сложно, хотя она там есть (подозреваю, в виде списка символов punct для LC_CTYPE). Вот для LC_MONETARY целая структура возвращается, описывающая всё касательно символов валюты, разделителей и пр.
Хотя вполне можно было бы получать кавычки через nl_langinfo, наподобие RADIXCHAR из LC_NUMERIC.
Должна быть разработана функция типа isquote, а также isquotemark(symbol,type), где type позволит указывать битовые флаги «открывающая кавычка, закрывающая кавычка, одинарная кавычка, двойная кавычка». Видимо, isquote в ряду с другими is* должна зависеть от локали, в то время как isquotemark – нет.
Должна быть реализована функция расстановки кавычек наподобие quote из gnulib. Необходимо учитывать, что в некоторых языках (фр.) приняты пробелы внутри кавычек.
Возможно это остаётся на усмотрение различных языков программирования. Хотя я бы делал на C с обёртками в остальные.