----------------------------------------------------------------------------
sys:locale/languages/russian.language v45.2
sys:locale/countries/russia.country v45.2
----------------------------------------------------------------------------
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.2+ (02.04.2015) International compliance
- changed the country currency from RUR to RUB according to latest ISO 4217
specification and recommendations from Central Bank
v45.2 (14.03.2015) Upcoming 70th anniversary of WWII edition
- added some workarounds for compilers and bad code that feeds signed
chars to locale. (Signed negative char values are converted back to
unsigned, so it should make some software that failed before with
Russian chars (in fact any chars above ASCII 127) finally work).
But it is still highly recommended to fix the software and send char
queries to locale in proper 0-255 range.
- added some sample example code on how to use some of locale functions
- added preliminary UTF support, please note the following:
The following functions will report TRUE for chars above 0x000000ff
This is usually true since most of them are usually native chars.
IsAlNum()
IsAlpha()
IsGraph()
IsPrint()
The following functions will report FALSE for chars above 0x000000ff
This is not always correct, but without a big table of chars it's the
best choice at the moment, can be expanded if and when required.
IsLower()
IsUpper()
IsPunct()
The following functions are managed by system locale library and will
usually report TRUE for chars above 0x000000ff, this is usually wrong
and will require a major overhaul but currently as far a I know these
functions are not used anywhere, besides, it might be better to use
codesets.library for these and for proper UTF support if required.
IsCntrl()
IsSpace()
IsDigit()
IsXDigit()
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), ñåé÷àñ
îíè îïðåäåëåíû êàê ïå÷àòàåìûå è êàê
ïóíêòóàöèÿ (åñëè èñïîëüçîâàòü ðàñøèðåííóþ
òàáëèöó Amiga1251X, òî òàì åñòü ïñåâäîãðàôèêà,
èëè åñëè èñïîëüçîâàòü øðèôòû
â 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.
|