Windows XP ի հայերեն տեղակայում

Քննարկումներ՝ Microsoft Windows XP գործավար համակարգի վերաբերյալ

Մոդերատոր: Մյասնիկ

Re: Windows XP ի հայերեն տեղակայում

գրառում Մյասնիկ » 18 հոկ 2013, 21:18

xp1645 -ը գրել է:Ես էս ֆորումում նոր եմ, կից թեմաները նայել եմ ու փորձեր արել, բայց ոչ մի նորմալ բան չի ստացվել: Էստեղի նշած րէդակտորներով համարյա անհնարին ա : Եթե հնարավոր ա մի քիչ կասեիք ինչը ոնց ա՞:
win17789 -ը գրել է:Իմ մոտ էլ ա նույն վիճակը:
zuk112233 -ը գրել է:Ես էլ կուզեի, բայց մանրամասն՝ դլյա ասոբը ...

Իրոք, ես նույնպես փորձեցի անտեղյակ աչքերով նայել բոլոր թեմաները եւ ինձ համար նույնպես պարզեցի մի շարք անհասկանալի պահեր: Ինչ վերաբերվում է խմբագրիչներին, իհարկե կարելի է նրացով նույնպես աշխատանքը իրականացնել: Սակայն նշեմ, որ ֆորումի օգտվողները օգտվում են նաեւ ուրիշ խմբագրիչներից, բայց այդ մասին թեմաներում չի նշվում, քանի որ նրանք այդ տեղեկություննրը միմյանց հետ փոխանակում են ԱՆ-երի միջոցով:
Ուստի, խնդրում եմ բոլոր օգտվողներին՝ կարեւվոր նշանակություն ունեցող տեղեկությունը անպայման նշել ֆորումում:
QuadCore Intel Core i7-2600, 3800 MHz: Մայրական սալիկ՝ Gigabyte GA-Z68AP-D3: Հիշոշություն՝ 8 ԳԲ (2x DDR3-1333 DDR3 SDRAM): Տեսասալիկ՝ NVIDIA GeForce GTS 450 (1024 ՄԲ): Ցուցարկիչ LG E1941 (Analog) [18.5" LCD]
Մյասնիկ
Կոնֆերանսի վարիչ
 
Գրառում: 77
ԼՈւՍԱՆԿԱՐ: 13
Գրանցված է: 07 հնս 2013, 19:14
Հավանել է: 11 անգամ:
Հավանել են: 47 անգամ:

Re: Windows XP ի հայերեն տեղակայում

գրառում zuk112233 » 19 հոկ 2013, 09:20

Իսկ մանրամասնե՞րը:
zuk112233
Գրանցված օգտվող
 
Գրառում: 3
Գրանցված է: 17 հոկ 2013, 09:43
Հավանել է: 3 անգամ:
Հավանել են: 0 անգամ:

Re: Windows XP ի հայերեն տեղակայում

գրառում Մյասնիկ » 20 հոկ 2013, 10:08

Ինչպես արդեն մի քանի անգամ նշվել է Windows XP-ի տեղակայումը կատարվում է հիմնականում SETUPLDR.BIN եւ SMSS.EXE ծրագրերի միջոցով, որից հետո համակարգիչը վերաբեռնավորվում է, անցնում Windows XP միջավայր եւ տեղակայման ղեկավարումը տրվում է WINNTBBU.DLL (այս մասին հետո) ծրագրին:
Առաջին երկու SETUPLDR.BIN եւ SMSS.EXE ծրագրերը օգտագործում են համապատասխանաբար BOOTFONT.BIN եւ VGA866.fon ռուսական տառատեսակները: Ի տարբերություն ռուսերենի, հայերեն տառերը իրենց կոդային էջը չունեն, ինչի պատճառով մենք օգտվել ենք ռուսերենի կոդային էջերից՝ C_866.NLS C_1251.NLS: Վերոհիշյալ տառատեսակներում տառերի այսպէս ասած ռուսական պատկերները վերափոխվել է հայկականի (նայել այստեղ), որից հետո ծրագրերի էկրանին արտապատկերվող հաղորդումները թարգմանվել են անգլերենից կամ ռուսերենից հայերեն եւ հայերեն բառերը ռուսերեն տառերով խմբագրվել ծրագրերի մեջ՝ պահպանելով հաղորդումների չափը եւ արդյունքում նաեւ ծրագրի չափը, քանի որ ծրագրերի աշխատանքը սկսելիս ստուգվում է նրանց հսկիչ գումարը՝ խախտված լինելու դեպքում ծրագիրը կամ ունենում է վթարային ավարտ կամ ստանում ենք կապույտ էկրան՝ համապատասխան հաղորդումներով:
Բնականաբար հայերեն բառերը ռուսերեն տառերով մուտքագրելը շատ անհարմար կլիներ, այդ իսկ պատճառով փոքրիկ վերակոդավորման ծրագրով հայերեն գրվածքի հայերեն տառերը փոխարինվում են ռուսերենի, իսկ արտապատկերումը էկրանին լինում է հայերեն: Խմբագրման հեշտության համար կարելի է օգտվել Akelpad խմբագրիչից, այն Total Commander նիշքային կառավարչի մեջ կա (Հրանտ Օհանյանի հայերեն թարգմանությամբ կարելի է ներբեռնել այստեղից) :
Այսպես, Akelpad-ով SETUPLDR.BIN-ը խմբագրելիս ուշադրություն դարձրեք ներքեւի խնդրագոտուն՝ այն պետք է լինի` ovr | win | 866 (OEM - Russian) :
Գտնում ենք "Вас приветствует программа установки Windows" արտահայտությունը:

Image 1.png

Պատճենում / սոսնձում նոր նիշքում՝

Image 2.png

Թարգմանում / նշում , աջ կտտոց / скрипты / скрипты...
ընտրում ենք Ansihyru.js java-ով գրված վերակոդավորման սկրիպտից եւ թարգմանում հայերենից-ռուսերեն:
Ուշադրություն դարձրեք, որ գրվածքների չափերը չեն փոխվել:

Image 3.png


Ansihyru.js-անունով java-ով գրված վերակոդավորման սկրիպտը տեղադրում ենք :\Program Files\Total Commander\Plugins\exe\AkelFiles\Plugs\Scripts\ պանակում:
//// Convert keyboard layout or transliterate text.
//
// Arguments:
// -Type=Layout -Convert keyboard layout.
// -Type=Translit -Transliteration.
// -Direction=En->Ru -From English to Russian.
// -Direction=Ru->En -From Russian to English.
//
// Examples:
// -"Convert layout" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout -Direction=En->Ru`)
// -"Transliteration" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit -Direction=Ru->En`)
//
//
//// Исправляет раскладку клавиатуры или транслитерирует текст.
//
// Аргументы:
// -Type=Layout -Исправление раскладки клавиатуры.
// -Type=Translit -Транслитерация.
// -Direction=En->Ru -Из английского в русский.
// -Direction=Ru->En -Из русского в английский.
//
// Примеры:
// -"Исправить набор" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout -Direction=En->Ru`)
// -"Транслитерация" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit -Direction=Ru->En`)

//Arguments
var pType=AkelPad.GetArgValue("Type", "").toLowerCase();
var pDirection=AkelPad.GetArgValue("Direction", "").toLowerCase();

//Variables
var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var hInstanceDLL=AkelPad.GetInstanceDll();
var nSelStart;
var nSelEnd;
var pSelText;

if (hMainWnd)
{
//Show menu
if (pType == "")
{
var hWndHidden;
var hMenu;
var nItem;
var ptPoint=[];

if (hWndHidden=oSys.Call("user32::CreateWindowEx" + _TCHAR, 0, "Static", 0, 0x50000000 /*WS_VISIBLE|WS_CHILD*/, 0, 0, 0, 0, hMainWnd, 0, hInstanceDLL, 0))
{
oSys.Call("user32::SetFocus", hWndHidden);
GetCaretPos(hWndEdit, ptPoint);

if (hMenu=oSys.Call("user32::CreatePopupMenu"))
{
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 1, "Հայերեն->Ռուսերեն");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 2, "Ռուսերեն->Հայերեն");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 3, "Stroka->Строка");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 4, "Строка->Stroka");
nItem=oSys.Call("user32::TrackPopupMenu", hMenu, 0x182 /*TPM_RETURNCMD|TPM_NONOTIFY|TPM_LEFTBUTTON|TPM_RIGHTBUTTON*/, ptPoint.x, ptPoint.y, 0, hWndHidden, 0);

if (nItem == 1)
{
pType="layout";
pDirection="en->ru";
}
else if (nItem == 2)
{
pType="layout";
pDirection="ru->en";
}
else if (nItem == 3)
{
pType="translit";
pDirection="en->ru";
}
else if (nItem == 4)
{
pType="translit";
pDirection="ru->en";
}
oSys.Call("user32::DestroyMenu", hMenu);
}
oSys.Call("user32::DestroyWindow", hWndHidden);
}
}
if (!pType) WScript.Quit();

//Get selection
nSelStart=AkelPad.GetSelStart();
nSelEnd=AkelPad.GetSelEnd();
if (nSelStart == nSelEnd)
AkelPad.SetSel(0, -1);
pSelText=AkelPad.GetSelText();

if (pType == "layout")
{
if (pDirection == "en->ru")
{
// Convert keyboard layout Hy->Ru
var pArraySource=new Array("փ", "շ", "ղ", "Թ", "թ", "Շ", "Ղ", "Փ", "չ", "ջ", "ռ", "Չ", "Ջ", "՜", "Յ", "Ձ", "Ժ", "ժ", "Ծ", "Օ", "ծ", "օ", "Ա", "ա", "Բ", "բ", "Գ", "գ", "Դ", "դ", "Է", "է", "Ֆ", "ֆ", "Ք", "ք", "Հ", "հ", "Ի", "ի", "Ճ", "ճ", "Կ", "կ", "Լ", "լ", "Մ", "մ", "Ն", "ն", "Ո", "ո", "Պ", "պ", "Խ", "խ", "Ր", "ր", "Ս", "ս", "Տ", "տ", "Ը", "ը", "Վ", "վ", "Ւ", "ւ", "Ց", "ց", "Ե", "ե", "Զ", "զ", "Ռ", "ձ", "յ", "՞", "՝");
var pArrayTarget=new Array("°", "ь", "ч", "И", "о", "Ц", "С", "в", "ю", "Ё", "ё", "Ш", "Ъ", "¤", "Ф", "Р", "Й", "п", "Н", "д", "у", "·", "А", "ж", "Б", "з", "В", "и", "Г", "й", "Ж", "м", "е", "~", "г", "^", "П", "х", "К", "р", "Т", "ш", "О", "ф", "Л", "с", "У", "щ", "Х", "ы", "Ч", "э", "Щ", "я", "М", "т", "Я", "ї", "Ь", "Є", "Ю", "Ї", "З", "н", "Э", "є", "б", "ў", "а", "Ў", "Д", "к", "Е", "л", "Ы", "ц", "ъ", "№", "`");

pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
}
else if (pDirection == "ru->en")
{
// Convert keyboard layout Ru->Hy
var pArraySource=new Array("°", "ь", "ч", "И", "о", "Ц", "С", "в", "ю", "Ё", "ё", "Ш", "Ъ", "¤", "Ф", "Р", "Й", "п", "Н", "д", "у", "·", "А", "ж", "Б", "з", "В", "и", "Г", "й", "Ж", "м", "е", "~", "г", "^", "П", "х", "К", "р", "Т", "ш", "О", "ф", "Л", "с", "У", "щ", "Х", "ы", "Ч", "э", "Щ", "я", "М", "т", "Я", "ї", "Ь", "Є", "Ю", "Ї", "З", "н", "Э", "є", "б", "ў", "а", "Ў", "Д", "к", "Е", "л", "Ы", "ц", "ъ", "№", "`");
var pArrayTarget=new Array("փ", "շ", "ղ", "Թ", "թ", "Շ", "Ղ", "Փ", "չ", "ջ", "ռ", "Չ", "Ջ", "՜", "Յ", "Ձ", "Ժ", "ժ", "Ծ", "Օ", "ծ", "օ", "Ա", "ա", "Բ", "բ", "Գ", "գ", "Դ", "դ", "Է", "է", "Ֆ", "ֆ", "Ք", "ք", "Հ", "հ", "Ի", "ի", "Ճ", "ճ", "Կ", "կ", "Լ", "լ", "Մ", "մ", "Ն", "ն", "Ո", "ո", "Պ", "պ", "Խ", "խ", "Ր", "ր", "Ս", "ս", "Տ", "տ", "Ը", "ը", "Վ", "վ", "Ւ", "ւ", "Ց", "ց", "Ե", "ե", "Զ", "զ", "Ռ", "ձ", "յ", "՞", "՝");

pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
}
}
else if (pType == "translit")
{
if (pDirection == "en->ru")
{
// Transliteration Latin->Cyrillic
var pArraySourceMulti=new Array("jo", "yo", "\xF6", "ch", "w", "shh", "sh", "je", "\xE4", "ju", "yu", "\xFC", "ja", "ya", "zh", "ts");
var pArrayTargetMulti=new Array("ё", "ё", "ё", "ч", "щ", "щ", "ш", "э", "э", "ю", "ю", "ю", "я", "я", "ж", "ц");
var pArraySourceSingle=new Array("c", "h", "x", "j", "'", "y", "#", "`", "a", "b", "v", "g", "d", "e", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f");
var pArrayTargetSingle=new Array("ц", "х", "х", "й", "ь", "ы", "ъ", "ъ", "а", "б", "в", "г", "д", "е", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф");

pSelText=Transliterate(pSelText, pArraySourceMulti, pArrayTargetMulti);
pSelText=Transliterate(pSelText, pArraySourceSingle, pArrayTargetSingle);
}
else if (pDirection == "ru->en")
{
// Transliteration Cyrillic->Latin
var pArraySource=new Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я");
var pArrayTarget=new Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "shh", "`", "y", "'", "je", "ju", "ja");

pSelText=Transliterate(pSelText, pArraySource, pArrayTarget);
}
}
AkelPad.ReplaceSel(pSelText, true);
}


//Functions
function ConvertLayout(pText, pArraySource, pArrayTarget)
{
var oPattern;
var i;

for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "g");
pText=pText.replace(oPattern, pArrayTarget[i]);
}
return pText;
}

function Transliterate(pText, pArraySource, pArrayTarget)
{
var oPattern;
var i;

for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "g");
pText=pText.replace(oPattern, pArrayTarget[i]);
}
for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "gi");
pText=pText.replace(oPattern, pArrayTarget[i].substr(0, 1).toUpperCase() + pArrayTarget[i].substr(1));
}
return pText;
}

function PatternToString(pPattern)
{
var pString="";
var pCharCode;
var i;

for (i=0; i < pPattern.length; ++i)
{
pCharCode=pPattern.charCodeAt(i).toString(16);
while (pCharCode.length < 4) pCharCode="0" + pCharCode;
pString=pString + "\\u" + pCharCode;
}
return pString;
}

function GetCaretPos(hWndEdit, ptPoint)
{
var lpPoint;

ptPoint.x=0;
ptPoint.y=0;

if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
{
//Caret position
AkelPad.SendMessage(hWndEdit, 3190 /*AEM_GETCARETPOS*/, lpPoint, 0);
ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
AkelPad.MemFree(lpPoint);

//Caret bottom
ptPoint.y+=AkelPad.SendMessage(hWndEdit, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);

//In screen coordinates
ClientToScreen(hWndEdit, ptPoint);
}
}

function ClientToScreen(hWnd, ptPoint)
{
var lpPoint;

if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
{
AkelPad.MemCopy(lpPoint, ptPoint.x, 3 /*DT_DWORD*/);
AkelPad.MemCopy(lpPoint + 4, ptPoint.y, 3 /*DT_DWORD*/);
oSys.Call("user32::ClientToScreen", hWnd, lpPoint);
ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
AkelPad.MemFree(lpPoint);
}
}


Պատճենում / սոսնձում նոր SETUPLD1.BINնիշքում՝

Image 4.png


Այսպես ամբողջ հաղորդումների գրվածքները:

Ինչ վերաբերվում է SMSS.EXE ծրագրին, այնտեղ հաղորդումների գրվածքների կոդավորումը 1200 (UTF-16LE) -ով է:
Համապատասխան ընտրանքը փոխում ենք 1200 (UTF-16LE) -ի եւ վարվում նույն կերպ՝ Ansihyru.js-փոխարեն օգտագործելով Keybhyru.js վերակոդավորման ծրագիրը:

//// Convert keyboard layout or transliterate text.
//
// Arguments:
// -Type=Layout -Convert keyboard layout.
// -Type=Translit -Transliteration.
// -Direction=En->Ru -From English to Russian.
// -Direction=Ru->En -From Russian to English.
//
// Examples:
// -"Convert layout" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout -Direction=En->Ru`)
// -"Transliteration" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit -Direction=Ru->En`)
//
//
//// Исправляет раскладку клавиатуры или транслитерирует текст.
//
// Аргументы:
// -Type=Layout -Исправление раскладки клавиатуры.
// -Type=Translit -Транслитерация.
// -Direction=En->Ru -Из английского в русский.
// -Direction=Ru->En -Из русского в английский.
//
// Примеры:
// -"Исправить набор" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Layout -Direction=En->Ru`)
// -"Транслитерация" Call("Scripts::Main", 1, "Keyboard.js", `-Type=Translit -Direction=Ru->En`)

//Arguments
var pType=AkelPad.GetArgValue("Type", "").toLowerCase();
var pDirection=AkelPad.GetArgValue("Direction", "").toLowerCase();

//Variables
var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var hInstanceDLL=AkelPad.GetInstanceDll();
var nSelStart;
var nSelEnd;
var pSelText;

if (hMainWnd)
{
//Show menu
if (pType == "")
{
var hWndHidden;
var hMenu;
var nItem;
var ptPoint=[];

if (hWndHidden=oSys.Call("user32::CreateWindowEx" + _TCHAR, 0, "Static", 0, 0x50000000 /*WS_VISIBLE|WS_CHILD*/, 0, 0, 0, 0, hMainWnd, 0, hInstanceDLL, 0))
{
oSys.Call("user32::SetFocus", hWndHidden);
GetCaretPos(hWndEdit, ptPoint);

if (hMenu=oSys.Call("user32::CreatePopupMenu"))
{
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 1, "Հայերեն->Ռուսերեն");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 2, "Ռուսերեն->Հայերեն");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 3, "Stroka->Строка");
oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, 4, "Строка->Stroka");
nItem=oSys.Call("user32::TrackPopupMenu", hMenu, 0x182 /*TPM_RETURNCMD|TPM_NONOTIFY|TPM_LEFTBUTTON|TPM_RIGHTBUTTON*/, ptPoint.x, ptPoint.y, 0, hWndHidden, 0);

if (nItem == 1)
{
pType="layout";
pDirection="en->ru";
}
else if (nItem == 2)
{
pType="layout";
pDirection="ru->en";
}
else if (nItem == 3)
{
pType="translit";
pDirection="en->ru";
}
else if (nItem == 4)
{
pType="translit";
pDirection="ru->en";
}
oSys.Call("user32::DestroyMenu", hMenu);
}
oSys.Call("user32::DestroyWindow", hWndHidden);
}
}
if (!pType) WScript.Quit();

//Get selection
nSelStart=AkelPad.GetSelStart();
nSelEnd=AkelPad.GetSelEnd();
if (nSelStart == nSelEnd)
AkelPad.SetSel(0, -1);
pSelText=AkelPad.GetSelText();

if (pType == "layout")
{
if (pDirection == "en->ru")
{
// Convert keyboard layout Hy->Ru
var pArraySource=new Array("փ", "շ", "ղ", "Թ", "թ", "Շ", "Ղ", "Փ", "չ", "ջ", "ռ", "Չ", "Ջ", "՜", "Յ", "Ձ", "Ժ", "ժ", "Ծ", "Օ", "ծ", "օ", "Ա", "ա", "Բ", "բ", "Գ", "գ", "Դ", "դ", "Է", "է", "Ֆ", "ֆ", "Ք", "ք", "Հ", "հ", "Ի", "ի", "Ճ", "ճ", "Կ", "կ", "Լ", "լ", "Մ", "մ", "Ն", "ն", "Ո", "ո", "Պ", "պ", "Խ", "խ", "Ր", "ր", "Ս", "ս", "Տ", "տ", "Ը", "ը", "Վ", "վ", "Ւ", "ւ", "Ց", "ց", "Ե", "ե", "Զ", "զ", "Ռ", "ձ", "յ", "՞", "՝");
var pArrayTarget=new Array("°", "ь", "ч", "И", "о", "Ц", "С", "в", "ю", "Ё", "ё", "Ш", "Ъ", "¤", "Ф", "Р", "Й", "п", "Н", "д", "у", "·", "А", "ж", "Б", "з", "В", "и", "Г", "й", "Ж", "м", "е", "√", "г", "∙", "П", "х", "К", "р", "Т", "ш", "О", "ф", "Л", "с", "У", "щ", "Х", "ы", "Ч", "э", "Щ", "я", "М", "т", "Я", "ї", "Ь", "Є", "Ю", "Ї", "З", "н", "Э", "є", "б", "ў", "а", "Ў", "Д", "к", "Е", "л", "Ы", "ц", "ъ", "№", "`");

pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
}
else if (pDirection == "ru->en")
{
// Convert keyboard layout Ru->Hy
var pArraySource=new Array("°", "ь", "ч", "И", "о", "Ц", "С", "в", "ю", "Ё", "ё", "Ш", "Ъ", "¤", "Ф", "Р", "Й", "п", "Н", "д", "у", "·", "А", "ж", "Б", "з", "В", "и", "Г", "й", "Ж", "м", "е", "√", "г", "∙", "П", "х", "К", "р", "Т", "ш", "О", "ф", "Л", "с", "У", "щ", "Х", "ы", "Ч", "э", "Щ", "я", "М", "т", "Я", "ї", "Ь", "Є", "Ю", "Ї", "З", "н", "Э", "є", "б", "ў", "а", "Ў", "Д", "к", "Е", "л", "Ы", "ц", "ъ", "№", "`");
var pArrayTarget=new Array("փ", "շ", "ղ", "Թ", "թ", "Շ", "Ղ", "Փ", "չ", "ջ", "ռ", "Չ", "Ջ", "՜", "Յ", "Ձ", "Ժ", "ժ", "Ծ", "Օ", "ծ", "օ", "Ա", "ա", "Բ", "բ", "Գ", "գ", "Դ", "դ", "Է", "է", "Ֆ", "ֆ", "Ք", "ք", "Հ", "հ", "Ի", "ի", "Ճ", "ճ", "Կ", "կ", "Լ", "լ", "Մ", "մ", "Ն", "ն", "Ո", "ո", "Պ", "պ", "Խ", "խ", "Ր", "ր", "Ս", "ս", "Տ", "տ", "Ը", "ը", "Վ", "վ", "Ւ", "ւ", "Ց", "ց", "Ե", "ե", "Զ", "զ", "Ռ", "ձ", "յ", "՞", "՝");

pSelText=ConvertLayout(pSelText, pArraySource, pArrayTarget);
}
}
else if (pType == "translit")
{
if (pDirection == "en->ru")
{
// Transliteration Latin->Cyrillic
var pArraySourceMulti=new Array("jo", "yo", "\xF6", "ch", "w", "shh", "sh", "je", "\xE4", "ju", "yu", "\xFC", "ja", "ya", "zh", "ts");
var pArrayTargetMulti=new Array("ё", "ё", "ё", "ч", "щ", "щ", "ш", "э", "э", "ю", "ю", "ю", "я", "я", "ж", "ц");
var pArraySourceSingle=new Array("c", "h", "x", "j", "'", "y", "#", "`", "a", "b", "v", "g", "d", "e", "z", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f");
var pArrayTargetSingle=new Array("ц", "х", "х", "й", "ь", "ы", "ъ", "ъ", "а", "б", "в", "г", "д", "е", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф");

pSelText=Transliterate(pSelText, pArraySourceMulti, pArrayTargetMulti);
pSelText=Transliterate(pSelText, pArraySourceSingle, pArrayTargetSingle);
}
else if (pDirection == "ru->en")
{
// Transliteration Cyrillic->Latin
var pArraySource=new Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я");
var pArrayTarget=new Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "ts", "ch", "sh", "shh", "`", "y", "'", "je", "ju", "ja");

pSelText=Transliterate(pSelText, pArraySource, pArrayTarget);
}
}
AkelPad.ReplaceSel(pSelText, true);
}


//Functions
function ConvertLayout(pText, pArraySource, pArrayTarget)
{
var oPattern;
var i;

for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "g");
pText=pText.replace(oPattern, pArrayTarget[i]);
}
return pText;
}

function Transliterate(pText, pArraySource, pArrayTarget)
{
var oPattern;
var i;

for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "g");
pText=pText.replace(oPattern, pArrayTarget[i]);
}
for (i=0; i < pArraySource.length; ++i)
{
oPattern=new RegExp(PatternToString(pArraySource[i]), "gi");
pText=pText.replace(oPattern, pArrayTarget[i].substr(0, 1).toUpperCase() + pArrayTarget[i].substr(1));
}
return pText;
}

function PatternToString(pPattern)
{
var pString="";
var pCharCode;
var i;

for (i=0; i < pPattern.length; ++i)
{
pCharCode=pPattern.charCodeAt(i).toString(16);
while (pCharCode.length < 4) pCharCode="0" + pCharCode;
pString=pString + "\\u" + pCharCode;
}
return pString;
}

function GetCaretPos(hWndEdit, ptPoint)
{
var lpPoint;

ptPoint.x=0;
ptPoint.y=0;

if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
{
//Caret position
AkelPad.SendMessage(hWndEdit, 3190 /*AEM_GETCARETPOS*/, lpPoint, 0);
ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
AkelPad.MemFree(lpPoint);

//Caret bottom
ptPoint.y+=AkelPad.SendMessage(hWndEdit, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);

//In screen coordinates
ClientToScreen(hWndEdit, ptPoint);
}
}

function ClientToScreen(hWnd, ptPoint)
{
var lpPoint;

if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
{
AkelPad.MemCopy(lpPoint, ptPoint.x, 3 /*DT_DWORD*/);
AkelPad.MemCopy(lpPoint + 4, ptPoint.y, 3 /*DT_DWORD*/);
oSys.Call("user32::ClientToScreen", hWnd, lpPoint);
ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
AkelPad.MemFree(lpPoint);
}
}
QuadCore Intel Core i7-2600, 3800 MHz: Մայրական սալիկ՝ Gigabyte GA-Z68AP-D3: Հիշոշություն՝ 8 ԳԲ (2x DDR3-1333 DDR3 SDRAM): Տեսասալիկ՝ NVIDIA GeForce GTS 450 (1024 ՄԲ): Ցուցարկիչ LG E1941 (Analog) [18.5" LCD]
Մյասնիկ
Կոնֆերանսի վարիչ
 
Գրառում: 77
ԼՈւՍԱՆԿԱՐ: 13
Գրանցված է: 07 հնս 2013, 19:14
Հավանել է: 11 անգամ:
Հավանել են: 47 անգամ:

Re: Windows XP ի հայերեն տեղակայում

գրառում zuk112233 » 20 հոկ 2013, 13:32

Շատ, շատ ... շնորհակալություն ինձ մատչելի բացատրելու համար: Մի 60%-ով հասկացել եմ, հիմա կսկսեմ փորձերը:
zuk112233
Գրանցված օգտվող
 
Գրառում: 3
Գրանցված է: 17 հոկ 2013, 09:43
Հավանել է: 3 անգամ:
Հավանել են: 0 անգամ:

Նախորդը

Վերադառնալ Microsoft Windows XP

ՈՎՔԵՐ ԵՆ ՀԻՄԱ ԿՈՆՖԵՐԱՆՍՈւՄ

Հիմա այս ֆորումը նայում են: գրանցված օգտվողներ չկան և հյուրեր: 19

cron