Установка, настройка и проверка CP1251 локализации Linux/FreeBSD.


              Содержание:

  1. CP1251 locale для FreeBSD
  2. CP1251 locale для Linux
  3. Проверка локализации
  4. Наборы CP1251 фонтов для XFree86

  1. CP1251 locale для FreeBSD

    Все что нужно сделать - это скачать найденую в сети CP1251-locale для FreeBSD и установить в систему:

    Примечание: Забудьте про указанную выше локаль CP1251 и берите родную от FreeBSD, появилась RELENG_4 и в Current, ну или готовую из RELENG_4.

    # tar zxvf FreeBSD-cp1251.tar.gz
    # cd cp1251/
    # less README
    # make install
    
    Замечание: Верхние строчки не актуальны с появлением CP1251 во FreeBSD:

    Использование locale CP1251 на консоли и виртуальных терминалах, вместо KOI8-R

    1) установка locale ru_RU.CP1251
    
      появилась в RELENG_4 (после 4.8-RELEASE) и в HEAD (после 5.1-RELEASE)
    взять можно уже выдранную оттуда(готовую):
    
    a) NewCP1251.tgz
    
    или выдрать готовую из одного из последних снапшотов(live-cd):
    b) ftp://current.freebsd.org/pub/FreeBSD/snapshots/i386/
    
    или через cvsweb:
    c) http://www.freebsd.org/cgi/cvsweb.cgi/src/share/?only_with_tag=RELENG_4
    
    2) настройка
    
     - /etc/login.conf:
    
        russian|Russian Users Accounts:\
            :charset=CP1251:\
            :lang=ru_RU.CP1251:\
            :tc=default:
    
    или можно оставить оригинал для koi8-r поддержки и добавить класс win:
    
    #
    # Russian Users Accounts. Setup proper environment variables.
    #
    russian|Russian Users Accounts:\
            :charset=KOI8-R:\
            :lang=ru_RU.KOI8-R:\
            :tc=default:
    
    win|Russian Windows Users Accounts:\
            :charset=CP1251:\
            :lang=ru_RU.CP1251:\
            :tc=default:
    не забывать что пятое поле в master.passwd (vipw/adduser: man 5 passwd,
    man 5 vipw, man adduser и less /etc/adduser.conf) и есть login_class.
     Если мы хотим чтобы все default настройки были для CP1251, можем сделать:
    
     - /etc/profile (Bourne-Shell/Bash):
    
    ...
    LANG=ru_RU.CP1251; export LANG
    LC_ALL=ru_RU.CP1251; export LC_ALL
    MM_CHARSET=CP1251; export MM_CHARSET
    ...
    
     - /etc/csh.login (Csh/Tcsh):
    
    ...
    setenv LANG ru_RU.CP1251
    setenv MM_CHARSET CP1251
    ...
    
    либо у пользователя в $HOME, в .profile/.bash_profile (shell/bash),
    в .login (csh/tcsh).
    
    3) консоль и виртуальные терминалы (фонты и клавиатура)
    
     - /etc/rc.conf:
    ...
    # клавитурная мапа, найдена в интернете
    # ru.cp1251.kbd
    # положить в /usr/share/syscons/keymaps
    
    keymap=ru.cp1251
    # можно не использовать, by default клавиша "CAPS LOCK"
    #keychange="61 ESC[K"
    
    # послоьку фонты cp866 самые удачные, используем их и скринмапу из cp866 в 1251 
    # найдено в сети win2cpp866.scm
    # положить в /usr/share/syscons/scrnmaps
    scrnmap="win2cpp866"
    font8x16=cp866-8x16
    font8x14=cp866-8x14
    font8x8=cp866-8x8
    ...
    
    прим: в /etc/ttys должно быть
    ttyv0   "/usr/libexec/getty Pc"         cons25r on  secure
    ...
    ttyv5   "/usr/libexec/getty Pc"         cons25r on  secure
    ...
    и так для всех используемых виртуальных экранов
    
    Если верхнее у вас прежде не было сделано, то чтобы изменения в /etc/ttys
    вступили в силу, необходимо выполнить команду:
    
    # kill -HUP 1
    
    Прим: если у вас в каких-то приложениях использующих gettext, вместо русских
    ерунда, то создавайте сами эти хелпы или каких их назвать, в кодировке cp1251,
    уверен что все gettext сделаны в koi8r(возможно с дублем в cp1251), тут уж
    смотрите и делайте сами если нужно.
    

    Для проверки локализации в html/php, смотри пункт Проверка локализации

  2. CP1251 locale для Linux

    Установка CP1251 locale в Linux:

    Чтобы понять что, как и где создает утилита localedef, обязательно прочитайте man localedef, потому что в разных linux'ах locale распологается либо в /usr/share/locale/, либо /usr/lib/locale/. Вся локаль, включая 1251 уже содержится в i18n, необходимо лишь сгенерить из нее LC которая ляжет в /usr/share/locale/ru_RU.CP1251 или в /usr/lib/locale/ru_RU.CP1251 (зависит от типа Linux), достаточно выполнить команду:

    localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
    
    после чего будет создана директория ru_RU.cp1251, как сказано выше:
    
    /usr/share/locale/ru_RU.cp1251
    или
    /usr/lib/locale/ru_RU.cp1251 
    
    Все. Теперь просто переименуйте в ru_RU.CP1251
    и проверьте наличие в системе:
    
    locale -a | grep ru_RU
    

    Для проверки локализации в html/php, смотри пункт Проверка локализации

  3. Проверка локализации

    Можете воспользоваться моими заготовками для проверки html и php:

    необходимо скачать указанные выше файлы .htaccess и winlavr.php3, разместить на WWW или в домашней странице и посмотреть результат.

  4. Наборы CP1251 фонтов для XFree86

    Есть много разных CP1251 фонтов для X11, я таскаю за собой следующие:

    Разворачиваете нужные или подходящие вам в /usr/X11R6/lib/X11/fonts, добавляете их в XF86Config, например:

    ...
    #
        FontPath   "/usr/X11R6/lib/X11/fonts/local/"  
        FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc/"
        FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi/"
    #--lavr Windows-CP1251 fonts
        FontPath   "/usr/X11R6/lib/X11/fonts/win-micex/misc/"
        FontPath   "/usr/X11R6/lib/X11/fonts/win-micex/75dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/win-micex/100dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
        FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
        FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath   "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath   "/usr/X11R6/lib/X11/fonts/PEX/"
        FontPath   "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/"
        FontPath   "/usr/local/share/koi8r-ps/"
    
    # 
    ...
    
    Рестартуете X11 или прямо в сеансе добавляете их в FontPath:
    xset +fp /usr/X11R6/lib/X11/fonts/win-micex/misc
    xset +fp /usr/X11R6/lib/X11/fonts/win-micex/75dpi
    xset +fp /usr/X11R6/lib/X11/fonts/win-micex/100dpi
    
    теперь смело можно смотреть файлы в Windows-CP1251 кодировке, запуская, например xterm с понравившимся фонтом:
    xterm -fn win9x15 &
    
    где win9x15 есть alias фонта: -micex-fixed-medium-r-normal--15-140-75-75-c-90-windows-1251

    для переключения раскладок в X11 можно воспользоваться портами FreeBSD:

    Примечание: необходимо помнить что некоторые коды ascii из CP1251 являются управляющими.


Андрей Лаврентьев: lavr@unix1.jinr.ru