Как вылечить локализацию в 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.
- Описание механизма генерации locale находится здесь:
http://es-sun2.fernuni-hagen.de/public/mirrors/GCC-experimental/Intro
- Стандарты charmap и locale находятся здесь: http://www.dkuug.dk/JTC1/SC22/WG15/
- В дистрибутиве 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
- Трансляция localedef.c (и locale.c):
make SHARED= programs
- В libc 5.2.18 поддержка LC_COLLATE не реализована вообще.
- Для генерации базы данных 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 не являются официальными документами и не обладают никаким формальным статусом. Они сделаны для личного употребления, не имеют ограничений на тиражирование, и гарантия их пригодности для каких-либо определенных целей абсолютно
отсутствует.
- Генерация базы данных 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/
- Использование построенной локализации 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);
}
|
|
|
|
|
|
|
|
Новости мира IT:
- 25.07 - В России выросла популярность отечественных облачных хранилищ, хотя молодёжь предпочитает иностранные
- 25.07 - Microsoft добавила сгенерированные ИИ сводки в результаты поиска Bing
- 25.07 - Apple выпустила веб-версию своего картографического сервиса
- 23.07 - Google передумала отказываться от сторонних cookie в Chrome, но обещает повысить конфиденциальность
- 23.07 - Аудитория Telegram достигла 950 миллионов пользователей в месяц
- 23.07 - Alphabet провалила сделку по поглощению Wiz за $23 млрд — стартап счёл предложенные условия унизительными
- 23.07 - Intel признала вину в нестабильности Raptor Lake, но уже знает как всё исправить
- 18.07 - Еврокомиссия выяснит, не мешает ли конкурентам Samsung наличие ИИ-модели Gemini Nano в Galaxy S24
- 18.07 - Huawei будет внедрять искусственный интеллект в тяжёлое машиностроение
- 18.07 - В Китае создали сверхлёгкий дрон, который будет летать, пока светит Солнце
- 18.07 - Дефицит ИИ-чипов сохранится до 2026 года, прогнозируют в TSMC
- 18.07 - Google стала показывать меньше ответов ИИ в поиске после серии «странных» ответов
- 16.07 - Oppo и Ericsson подписали соглашение о перекрёстном лицензировании в сфере сетей 5G
- 16.07 - Акции Apple достигли исторического максимума благодаря ИИ
- 16.07 - Nvidia столкнулась с антимонопольным расследованием во Франции — компании грозит крупный штраф
- 16.07 - ИИ и глобальные амбиции: Аркадий Волож рассказал, чем займётся зарубежная часть «Яндекса» после разделения
- 16.07 - Разработку российской консоли оценили всего в 1 млрд рублей, но в целом денег понадобится куда больше
- 16.07 - Yandex закрыл сделку по продаже «Яндекса»
- 10.07 - Представлен релиз Firefox 128
- 10.07 - Доступна платформа OpenSilver 3.0, продолжающая развитие технологии Silverlight
Архив новостей
|
|
|
|
|
|
|
|
|
|
|
|
|