• Linux code locale
    Вот как настроить локаль? Казалось бы, всё просто: открываешь мануал https://wiki.archlinux.org/index.php/Locale , там написано "вот в этот файлик впишите локаль, какую хотите". Ну открываем и вписываем.
    
    Но есть нюансик:
    $ grep -i 'ru_ru.*utf' /etc/locale.gen
    ru_RU.UTF-8 UTF-8
    $ locale -a | grep -i 'ru_ru.*utf'
    ru_RU.utf8
    
    Для меня естественен подход посмотреть доступные локали и просто из этого списка скопипастить желаемую. Вот только нотация вывода locale -a отличается от нотации, указываемой во всех манах и locale.gen: character set указывается строчными буквами и без дефиса.
    
    После копипастинга получается что-то вроде export LC_ALL=ru_RU.utf8 и всё вроде бы работает так, как предполагалось. Вроде бы. Потому что изредка вылезают странные баги. 6 лет назад из-за копипастинга локали из locale -a у меня не работал ввод кириллицы в приложения, запущенные под wine ( http://ru-ubuntu.livejournal.com/241325.html ). Теперь я внезапно заметил, что lesspipe у меня не отображает содержимое текстовых *.gz.
    
    Логики в этой различной нотации нет, ни в каких манах об этом нюансе не говорится, никаких ISO на запись названия character set я сходу не вижу. Короче, понять и запомнить это невозможно. Я даже не понимаю, кто в этой ситуации не прав: lesspipe, не совсем надёжно разбирающий значение локали, которая должна быть эквивалентна ru_RU.UTF-8, или же я, некорректно настроивший свою систему.
    
    Разбираться, слать ли патч в документацию или в lesspipe я не хочу, боюсь это может занять не один день. В общем просто имейте ввиду, что есть такая ловушка в настройке ваших линуксов.

Replies (7)

  • @Self-Perfection, Заглавными. На крайняк генерирует так в дебиане.
  • @Fangel, Реквестирую ссылку на ман, в котором написано, что локаль надо писать так, а не сяк, и объясняется, какого хрена locale -a выводит по-другому.

    Можно на каждый пункт свою ссылку.
  • @Self-Perfection, в man locale.conf в примерах заглавными
  • @Self-Perfection, а locale -a просто работает как аналог ls /usr/lib/locale
  • @Fangel, Мы как будто на разных языках говорим. Я как бы в курсе, см. 3 абзац поста.

    Почему я не могу скопипастить название локали из locale -a? Для меня кажется логичным напрямую посмотреть список доступных в системе локалей и ровно доступную перенести в конфиг. А ман он фиг знает подо что писался, может в моём дистрибутиве что-нибудь нахимичено.
  • @Fangel, $ ls /usr/lib/locale/
    locale-archive

    И что?

    Если сущности, выводимые locale -a и требуемые для указания в LC_ALL отличаются, то это должно быть как-то помечено в документации. Сейчас судя по докам это одно и то же.
  • @Self-Perfection, из того, что я налистал в манах по локали, то регистр пофик, хоть все пиши строчными. Но бывают кодеры, которые чтут регистр и добавляют геморроя, но традиционно пишут именно ru_RU.UTF-8, прокатывает даже ru_RU.UTF8