FreeSource : Lokalizacija/СитуацияСКавычками

Ситуация с кавычками

Простая задача – получить символы кавычек сообразно с локалью. Оказалось, задача сложная. Из локали эту информацию извлечь очень сложно, хотя она там есть (подозреваю, в виде списка символов punct для LC_CTYPE). Вот для LC_MONETARY целая структура возвращается, описывающая всё касательно символов валюты, разделителей и пр.

Хотя вполне можно было бы получать кавычки через nl_langinfo, наподобие RADIXCHAR из LC_NUMERIC.

Узнать о том, какие кавычки нужны, можно здесь:
http://ru.wikipedia.org/wiki/Кавычки
http://en.wikipedia.org/wiki/Quotation_mark,_non-English_usage

Существует библиотека gnulib, имеющая функции quote и quotearg,
позволяющие заключать строки в кавычки, в зависимости от параметров или локали:
http://www.gnu.org/prep/standards/html_node/Quote-Characters.html
Но библиотека эта не допускает линковку, обычно из неё выдёргивают нужные файлы. Информацию о кавычках она хранит в файле перевода.
http://www.gnu.org/software/gnulib/

Пример использования:

Что нужно сделать


Должна быть разработана функция типа isquote, а также isquotemark(symbol,type), где type позволит указывать битовые флаги «открывающая кавычка, закрывающая кавычка, одинарная кавычка, двойная кавычка». Видимо, isquote в ряду с другими is* должна зависеть от локали, в то время как isquotemark – нет.

Должен быть разработан механизм получения обычных кавычек и вложенных кавычек согласно локали, в том числе альтернативных вариантов (см.
http://en.wikipedia.org/wiki/Quotation_mark,_non-English_usage

Должна быть реализована функция расстановки кавычек наподобие quote из gnulib. Необходимо учитывать, что в некоторых языках (фр.) приняты пробелы внутри кавычек.
Возможно это остаётся на усмотрение различных языков программирования. Хотя я бы делал на C с обёртками в остальные.

Страницы, ссылающиеся на данную: Локализация/ЛокализацияПрограмм