Short: Russian language driver v45 Author: Michael_Malyshev@mail.ru Uploder: Michael_Malyshev@mail.ru Type: util/sys Version: 45.1 (09.05.2014) Requires: AmigaOS 3.x Architecture: m68k-amigaos ---------------------------------------------------------------------------- sys:locale/languages/russian.language v45.1 sys:locale/countries/russia.country v45.1 ---------------------------------------------------------------------------- This is an updated language driver for Russian language in Amiga-1251 codeset for use on Classic 68k AmigaOS 3.x systems IMPORTANT! This is a CRITICAL UPDATE to AmigaOS 3.9 files, please update! Old v44.x files do not work or give bogus results with gcc complied code. eg. MUI 3.9+, newer MCC classes (BetterString, TextEditor...) HISTORY: ======== v45.1 (09.05.2014) Victory Edition - based on original code base of v44.x drivers by Oleg Sergeev - fixed functions to work with gcc code (guaranteed return 0 (FALSE) or 255 (TRUE)) IsAlNum() IsAlpha() IsGraph() IsLower() IsUpper() IsPrint() IsPunct() - function GetCodeSet() now returns 2104 (Amiga-1251 regged IANA MIBenum) - proper language id = rus - SC_COLLATE2 conversion now uses standard GOST 7.79 (ISO 9) Table B and should be able to make backward conversion - now uses RUR for local currency (ISO Standard) - updated character definition table - other minor fixes ---------------------------------------------------------------------------- NOTES: ====== Special additional features of StrCnv(), just add new defines to your code #define SC_NATIVE -1 /* compare 1:1 (case sensitive) */ #define SC_TO_KOI8 -2 /* convert to KOI8 / compare to KOI8 */ #define SC_FROM_KOI8 -3 /* convert from KOI8 / compare to KOI8 */ #define SC_TO_ISO -4 /* convert to ISO / compare to ISO */ #define SC_FROM_ISO -5 /* convert from ISO / compare to ISO */ #define SC_TO_866 -6 /* convert to 866 / compare to 866 */ #define SC_FROM_866 -7 /* convert from 866 / compare to 866 */ #define SC_FROM_LATIN -8 /* convert from latin / compare to latin */ SC_COLLATE2 converts/transliterates Cyrillic to Latin multichar text using GOST 7.79 (ISO 9) Table B as approved standard for Russia since 22.06.2000 SC_FROM_LATIN converts Latin translit text back to Cyrillic Amiga-1251. Backward conversion is not 100% guaranteed, but should work 1:1, if the original text is standard and had not been tweaked to brake the algorithm. All functions that need to return a BOOL (0 or 255) will now always return a perfect 0 (FALSE) or 255 (TRUE) value, hopefully ;-) under all gcc/vbcc/sas compiled code and conditions, so no bogus numbers anymore. ---------------------------------------------------------------------------- ПРИМЕЧАНИЯ: =========== Это КРИТИЧЕСКОЕ обновление для драйвера русского языка для 68k AmigaOS 3.х Исправлен ряд существенных проблем с работой системы и программ собранных компилятором gcc. Если у Вас были проблемы с MUI и странное поведение при выделения текста (даже гуру), то теперь все должно работать как часы. Это касается MUI 3.9+ и многих обновленных MCC классов. Вероятно теперь заработают и другие глючные программы, использующие функции locale.library. ВАЖНО! Для установки нужно скопировать файлы в соответствующие места и обязательно в настройках системы Prefs/Locale сбросить и выбрать языки заново. Это необходимо для установки определенных переменных в системе, которые берутся из установленных драйверов и не меняются при замене драйверов! Функция транслитерации использует принятый в России с 22.06.2000 стандарт ГОСТ 7.79 (ISO 9) по Таблице Б (введена в действие в 2002 году). ГОСТ 7.79-2000 — адаптация ИСО 9, принятая в России и некоторых странах СНГ ИСО 9:1995 — действующий стандарт, принятый Международной организацией по стандартизации. Таблица Б / Система Б — используются лишь сочетания базовых латинских букв при транслитерации кириллицы (часть букв может заменяться на 2 или 3 буквы) Для буквы Ц возможно два варианта транслитерации - латинской буквой С, либо сочетанием CZ. Стандарт рекомендует употреблять С перед буквами I, Е, Y, J, а в остальных случаях — CZ. Текущая версия драйвера использует CZ во всех случаях, но понимает C и CZ как Ц при обратном преобразование. Для стандартных текстов транслитерация должна быть реверсивной 1:1, но алгоритм имеет определенные ограничения и его можно сломать. К примеру последовательность из букв "ЬЪЬЪЬ" при обратном преобразование не даст исходный вариант. Еще алгоритм попытается угадать, когда ставить заглавную букву Ъ или Ь, и когда строчную, отслеживая предыдущие буквы в тексте. В теории ЗАГЛАВНЫЙ текст будет преобразован корректно, если Ъ или Ь не является одиночной или первой буквой в слове. В прочем таких ситуаций не должно быть, если их не создать искусственно. Простые тестовые программы для тестирования прилагаются. Для анализа данных рекомендуется перенаправить вывод в файл >RAM:output.txt Все результаты должны быть 0 или 1, если цифра другая, то у Вас проблемы. В архиве добавлено две дополнительные версии драйвера russian.language_rusmix В этой версии короткие наименования месяцев и дней недели заменены на английские, в остальном функционал идентичный. Может быть полезным, если Вы используете старые программы не учитывающие локализацию (особенно актуально для некоторых сетевых программ типа FTP, которым может сносить крышу или тупят программы при подключению к серверу под управлением AmigaOS, который пытается общаться на русском ;-). russian.language_ruseng В этой версии все текстовые строки соответствуют английским как и в оригинальном english.language, но доступны все дополнительные функции для поддержки Amiga-1251. Для тех, кто не любит локализованные программы, но хочет полноценной поддержки русского языка в системе. Для установки переименовать в russian.language Для программистов, если надо определить версию драйвера, можно проверить описание в $VER: или language id = rusmix и ruseng соответственно Пока language id вроде никто не использовал, но если вдруг потребуется, то в этих специальных версиях, его можно заменить на rus в HEX редакторе, для полной совместимости со стандартом. В прочем начиная с v50 добавлено много дополнительных полей и на новых системах можно использовать их. Можно конечно было использовать название типа russian_mix.language, но классическая система в этом случае будет искать каталоги в директории Locale:russian_mix/ , что не совсем удобно. В v50 это работает немного иначе. Используется международный разделитель целой и дробной части чисел (.) Остается открытым вопрос по определению свойств каждого символа, в данной версии установлены атрибуты аналогичные английскому языку для первой половины таблицы. Символы с 9 по 13 в системе по умолчанию определены как печатаемые, но правильно ли это? И аналогично для символов 128-159 (x80-x9F), сейчас они определены как печатаемые и как пунктуация (если использовать расширенную таблицу Amiga­1251X, то там есть псевдографика, или если использовать шрифты в 866 кодировке, к примеру в терминальной программе, там тоже символы) хотя под системой этот диапазон должен быть определен только как контрольные символы. Ждем Вашего мнения! PS: Если Вы хотите написать мне e-mail пожалуйста укажите тему письма AMIGA PPS: Извиняюсь за задержку с релизом на AmiNET, был очень занят параллельными интересными проектами. - cut - THIS SOFTWARE IS FREEWARE ! YOU ARE NOT ALLOWED TO SELL IT, PERMISSION IS GRANTED TO DISTRIBUTE THIS BY ANY MEANS AS LONG AS ALL THE RULES ARE KEPT. THERE IS NO LIABILITY TO THIS SOFTWARE-PACKAGE, IN REFERENCE TO THE ASSERTED LAWS. THE COPYRIGHT OWNERS, AND/OR A THIRD PARTY, PLACE THIS SOFTWARE PACKAGE AT YOUR DISPOSAL "AS IS" (EXCEPT WHERE THIS IS FIXED ANYWHERE ELSE IN A WRITTEN WAY) WITHOUT ANY GUARANTEE IN ANY FORM (INDIRECT OR DIRECT FORM). THE FULL RISK OF QUALITY AND FUNCTIONALITY OF THIS SOFTWARE IS AT YOUR OWN. IF THIS SOFTWARE HAS A BUG, YOU HAVE TO PAY ALL COSTS OF THE NECESSARY SERVICE-WORKS AND REPAIRS FOR YOURSELF. UNDER NO CIRCUMSTANCES, THE COPYRIGHT OWNERS OR A THIRD PARTY DISTRIBUTING THIS PROGRAM PACKAGE, AS ALLOWED, JUST BEFORE, CAN NOT BE HELD RESPONSIBLE FOR ANY DAMAGE CAUSED IN ANY USUAL, SPECIAL, OR ACCIDENTAL WAY OR BY THE SOFTWARE PACKAGE (SURROUNDING BUT NOT RESTRICTED ARE THE LOSS OF DATA OR NOT CORRECTLY DISPLAYED DATA OR LOSSES CAUSED BY YOU OR A THIRD PARTY OR BY A FAULTY WORK OF THIS SOFTWARE PACKAGE WITH OTHER PROGRAMS), ALSO IF THE OWNER OR A THIRD PARTY HAS BEEN POINTED AT SUCH POSSIBILITIES OF DAMAGE.