Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Как вылечить локализацию в Linux

From: Ales Popov
NM) libc-5.2.18, ld.so-1.7.14...
Вот в этой библиотеке дело ^^^^^^^^^^ !
Можно просто взять ее с CD Linux.Yes или пересобрать эту библиотеку.
Только надо в сырцах исправить, - это вот с того сидюка:


=== Begin 11.r ===

Eugene Shakhtarin


Локализация koi8-r для версии libc 5.2.18 (ELF).
Сделано в Linux kernel 1.3.57, gcc 2.7.2.
  1. Описание механизма генерации locale находится здесь: http://es-sun2.fernuni-hagen.de/public/mirrors/GCC-experimental/Intro
  2. Стандарты charmap и locale находятся здесь: http://www.dkuug.dk/JTC1/SC22/WG15/
  3. В дистрибутиве libc 5.2.18 функция libc/locale/ctype.c неисправна, а именно, в операторе (is_upper ? toupper_done : tolower_done) |= BIT (token); выражение BIT (token) равно 0 вместо необходимой 1 и tolower_done получает значение 0, даже когда tolower таблица сформирована. ctype.c далее принимает решение заменить tolower на умолчание.
    Для починки требуется замена в libc/locale/ctype.c:
    
    /*
    
    static unsigned short toupper_done = 0;
    
    static unsigned short tolower_done = 0;
    
     */
    
    static unsigned toupper_done = 0;
    
    static unsigned tolower_done = 0;
    
    

    Вот соответствующий патч:
    
    *** ctype.c.orig        Tue Jan 16 19:02:43 1996
    
    --- ctype.c     Tue Jan 16 19:03:23 1996
    
    ***************
    
    *** 54,59 ****
    
    --- 54,63 ----
    
      /* Remember which class or conversion is already done.  */
    
      static unsigned short class_done = 0;
    
    + /*
    
      static unsigned short toupper_done = 0;
    
      static unsigned short tolower_done = 0;
    
    +  */
    
    + static unsigned toupper_done = 0;
    
    + static unsigned tolower_done = 0;
    
    
    
      #define SYNTAX_ERROR \
    
    

    Здесь находятся http://eugene.mplik.ru/pub/Linux/utils/nls/locale/libc-5.2.18.fix/:
    ctype.c -- 6534 исправленный вариант ctype.c
    localedef.gz -- 53833 программа, оттранслированная для отладчика с ключем -g
  4. Трансляция localedef.c (и locale.c):
    
    make SHARED= programs
    
    
  5. В libc 5.2.18 поддержка LC_COLLATE не реализована вообще.
  6. Для генерации базы данных locale для koi8-r в депозитарии нет готовых исходных данных.
    http://www.dkuug.dk/JTC1/SC22/WG15/
    Исходные данные для генерации koi8-r находятся здесь:
    http://eugene.mplik.ru/pub/Linux/utils/nls/locale/share/nls/charmap/KOI8-R
    http://eugene.mplik.ru/pub/Linux/utils/nls/locale/share/nls/locale/ru_RU
    Эти данные подготовлены на основе стандартов ISO 10646 (Unicode), RFC-1489 и депозитария http://www.dkuug.dk/JTC1/SC22/WG15/
    Файлы KOI8-R и ru_RU не являются официальными документами и не обладают никаким формальным статусом. Они сделаны для личного употребления, не имеют ограничений на тиражирование, и гарантия их пригодности для каких-либо определенных целей абсолютно отсутствует.
  7. Генерация базы данных locale для koi8-r. 7.1) Создать каталоги
    
    mkdirhier /usr/share/nls/charmap
    
    mkdir /usr/share/nls/locale
    
    mkdir /usr/share/locale
    
    

    7.1) Разместить описания KOI8-R и ru_RU в каталогах
    
    /usr/share/nls/charmap/KOI8-R
    
    /usr/share/nls/locale/ru_RU
    
    

    7.2) Построить описание категорий koi8-r в каталоге /usr/share/locale/koi8-r/ localedef -c -i /usr/share/nls/locale/ru_RU -f KOI8-R koi8-r
    Уже готовый набор описаний категорий koi8-r, полученный описанным методом, находится в http://eugene.mplik.ru/pub/Linux/utils/nls/locale/share/locale/koi8-r/
  8. Использование построенной локализации koi8-r.
    8.1) Определить переменную командной среды export LANG=koi8-r
    После этого программы, созданные на базе libc 5.2.18 с учетом locale, будут локализованы соответствующим образом.
    8.2) Для интернационализации создаваемой программы необходимо применить функцию setlocale (см. man setlocale), например:
    
    #include
    
    #include
    
    main()
    
    {
    
    int c, C;
    
    setlocale(LC_ALL, "");
    
    
    
    c='й';
    
    C=toupper(c);
    
    printf("%c\n", C);
    
    
    
    C='Й';
    
    c=tolower(C);
    
    printf("%c\n", c);
    
    
    
    }
    
    

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...