ქართული კლავიატურის სკრიპტი

ესე იგი მინდოდა თუ არ მინდოდა ირაკლი ნადარეიშვილმა მიბიძგა და ქართული კლავიატურის სკრიპტი დავწერე…

სკრიპტი ძალიან მარტივია, და მისი მიბმა შეგიძლიათ ნებისმიერ ტექსტურ ველზე, ასევე მას აქვს ქართული კლავიატურის ჩართვისა და გამორთვის მხარდაჭერა. სიმბოლოების ტრანსლირებისათვის გამოვიყენე ირაკლის მიერ წლების წინ შემუშავებული ალგორითმი (ორიგინალი შეგიძლიათ იხილოთ აქ)

სკრიპტის მუშა მაგალითი შეგიძლიათ იხილოთ ამ მისამართზე
სკრიპტის უახლესი ვერსიის გადმოწერა შეგიძლიათ ამ მისამართიდან

რა უპირატესობები აქვს ამ სკრიპტს? იგი არის პატარა, კოდი არის ძალიან მარტივი და გასაგები, არ აბინძურებს ვებ აპლიკაციის სკოუპს რადგან იგი მთლიანად არის ენკაპსულირებული თავისსავე სკოუპში რაც არის იმის გარანტია რომ მისი გამოყენება შეგიძლია მარტივად და უსაფრთხოდ თუნდაც სხვა ანალოგიური დანიშნულების სკრიპტებთან ერთად.

ასევე საგულისხმოა ის რომ String ობიექტს ემატება ორი მეთოდი ესენია:

  1. translateToKA() – მეთოდი რომელსაც შეუძლია ნებისმიერი სტრიქონის პირდაპირ გადაყვანა ქართულ უნიკოდში. რაც ნიშნავს იმას რომ ამ მეთოდის გამოყენება თამამად შეგიძლიათ თქვენს სკრიპტებში.

    მეთოდის გამოყენება შეგიძლიათ შემდეგნაირად:

    var str = "es aris nebismieri teqsti";
    alert(str.translateToKA());
    
    //ან პირდაპირ ასე
    alert("es aris text literali".translateToKA());
    
  2. pasteTo([html form element]) – რომელსაც პარამეტრად გადაეცემა ფორმის ელემენტი. ეს მეთოდი ტექსტის კოპირებას ახდენს ან პირდაპირ თუ ელემენტის მნიშვნელობა ცარიელია, ან იმ ადგილას სადაც ზის კურსორი, ან ჩაანაცვლებს მონიშნულ ტექსტს ახალი ტექსტით.

    მეთოდის გამოყენება შეგიძლიათ შემდეგნაირად:

    var str = "es aris nebismieri teqsti";
    str.translateToKA().pasteTo(document.forms['my-form-name']['my-field-name']);
    

კოდი ვრცელდება MIT ლიცენზიით

        /*
	 * GeoKBD 0.1 - Georgian keyboard and text convertation library
	 *
	 * Copyright (c) 2007 Ioseb Dzmanashvili (http://www.code.ge)
	 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
	 */

გამოყენების მაგალითი

HTML კოდი:
[html]





[/html]

JavaScript კოდი:
[javascript]
GeoKBD.map(‘my-form’, ‘post’);
GeoKBD.map(‘another-form’, ‘frm’, ‘geo1′);
[/javascript]

ამ კოდის შესრულების შემდეგ ორივე ფორმაში შესაძლებელი იქნება ქართულად ბეჭდვა, კლავიატურის გადართვის გარეშე.

სკრიპტის მუშაობის პრინციპი მარტივია, GeoKBD ობიექტის map მეთოდს გადავცემთ სამ პარამეტრს:

  1. HTML ფორმის სახელი ან თავად HTML ფორმა
  2. იმ ველის სახელი რომელშიც შესაძლებელი უნდა იყოს ქართულად ბეჭდვა ან თუ გსურთ რომ ფორმის ყველა ველში იყოს შესაძლებელი ქართულად ბეჭდვა, მაშინ ამ პარამეტრის გადაცემა არ არის აუცილებელი
  3. კლავიატურის გადამრთველი ველის(checkbox) სახელი (არ არის აუცილებელი პარამეტრი, თუ ამ პარამეტრს არ გადავცმეთ გამოყენებული იქნება სახელი ‘geo’)


პროგრამის სრული კოდი:

[javascript]
(function() {

/*
* GeoKBD 0.1 – Georgian keyboard and text convertation library
*
* Copyright (c) 2007 Ioseb Dzmanashvili (http://www.code.ge)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
*/

String.prototype.pasteTo = function(field) {
field.focus();
if (document.selection) {
var selection = document.selection;
var range = selection.createRange();
range.colapse;
if (range) {
range.text = this;
}
} else if (field.selectionStart || field.selectionEnd) {
var scrollTop = field.scrollTop;
var start = field.selectionStart;
var end = field.selectionEnd;
var value = field.value.substring(0, start) + this + field.value.substring(end, field.value.length);
field.value = value;
field.scrollTop = scrollTop;
field.selectionStart = start + this.length;
field.selectionEnd = start + this.length;
} else {
field.value += this;
}
},

String.prototype.translateToKA = function() {

/**
* Original idea by Irakli Nadareishvili
* http://www.sapikhvno.org/viewtopic.php?t=47&postdays=0&postorder=asc&start=10
*/
var index, chr, text = [], symbols = “abgdevzTiklmnopJrstufqRySCcZwWxjh”;

for (var i = 0; i < this.length; i++) {
chr = this.substr(i, 1);
if ((index = symbols.indexOf(chr)) >= 0) {
text.push(String.fromCharCode(index + 4304));
} else {
text.push(chr);
}
}

return text.join(”);

},

GeoKBD = {

event: {

get: function(e) {
return e || window.event;
},

getKeyCode: function(e) {
e = this.get(e);
return e.keyCode || e.which;
},

targetIs: function(e, tagName) {
e = this.get(e);
var t = e.target || e.srcElement;
return t.tagName.toLowerCase() == tagName ? t : null;
}

},

map: function(form, contentFieldName, switcher) {

var self = this;

form = (typeof form == ‘string’) ? document.forms[form] : form;
switcher = switcher || ‘geo’;

form.onkeypress = function(e) {

e = self.event.get(e);
if (e.altKey || e.ctrlKey) return;

var target, fieldName = contentFieldName, _switcher = switcher, keyCode = self.event.getKeyCode(e);

if (keyCode == 96) {
this[_switcher].checked = !this[_switcher].checked;
return false;
}

if (!this[_switcher].checked) return;

if ((target = (self.event.targetIs(e, ‘textarea’) || self.event.targetIs(e, ‘input’)))) {
if (fieldName && (target.name != fieldName)) return;
text = String.fromCharCode(keyCode);
kaText = text.translateToKA();
if (kaText != text) {
kaText.pasteTo(target);
return false;
}
}
}

form = null;

}

};

window.GeoKBD = GeoKBD;

})();
[/javascript]

ტეგები: , ,

26 Responses to “ქართული კლავიატურის სკრიპტი”

  1. Alex ამბობს:

    Mogesalmebi,

    vapireb web gverdis gaketebas, samwuxarod ar vici qarTuli SriFtiT rogor unda aisaxos, ikneb gamiwio daxmareba da miTxra raime martivi xerxi saitis qarTulad gakeTebis, rac qarTul inetSi vnaxe kvelaze sufTad da lamazad fontebi am saitzea asaxuli,vapireb WP an DLE – s gamokenebas. winaswar gixdi madlobas.

  2. იოსები ამბობს:

    გამარჯობა ალექს,

    ვერ მივხვდი რას ნიშნავს საიტის ქართულად გაკეთება… თუ HTML ფორმაში ქართულად წერაზეა ლაპარაკი, მაშინ თავად ეს პოსტი და ასევე ეს პოსტი: http://www.code.ge/javascript/geokbd-first-update დაგეხმაროს ეგება?

  3. Alex ამბობს:

    gamarjoba Ioseb,

    madloba gamoxmaurebisTvis. HTML is araferi ar mesmis samtsuxarod, makvs dvijoki joomla, sakmaod cnobilia,aseve Sesabamisi skini (skini dasaxvetsia, vgulisxmob vizualurad da funkcionalurad) minda kartuli saitis gakedeba (tematikas shegnebulad ar utiteb), vgulisxmob imas rom, frontendi ikos qartuli, ai rogorc es saitia an tundac gol.ge,avoe.ge da ase shemdeg. mainteresebs aris tu ara HTML – is codnis gareshe amis gaketeba shesadzlebeli, tu ara ikneb gautsio rekomendacia vinmes vinc damexmareba, ra tkma unda garkveuli anazgaurebis safasurad. me am saqmis profesionalebs (saqartveloshi) ar vicnob. tu dainteresdebi ikneb momtsero, ak am dialogis gagrdzeleba ar mimachnia mizanshetsonilad.

  4. იოსები ამბობს:

    ალექს,

    ნამდვილად არ მაქვს იმის დრო, რომ რაიმე პროექტით დავინტერესდე ეხლა :)

    რეკომენდაციას რაც შეეხება ამ მომენტისათვის არ მყავს გარშემო არავინ ისეთი ვინც მაგისთვის დროს გამონახავს…

    თავად ქართულს რაც შეეხება, მაგისათვის საკმარისია ჩვეულებრივი ქართული კლავიატურის დაყენება ვინდოუსში და შემდეგ უკვე ტექსტების ქართულად აკრეფა… სულ ეს არის და ეს :)

    ხო სკინს რაც შეეხება ჯუმლას აქვს ენების პაკეტი(language pack) და თავისუფლად შესაძლებელია მისი გადათარგმნა. დოკუმენტაცია და დეტალები თავად ჯუმლას საიტზე იქნება.

    წარმატებები :)

  5. Alex ამბობს:

    didi madloba ioseb, vecdebi gaverkvio :)

  6. -=ინფესტ=- ამბობს:

    ვბულლეტინ-ის ფორუმზე როგორ გავაკეთო ეგეთი რომ ქართულად ვწერო?

  7. იოსები ამბობს:

    1) ადმინ პანელში მარცხენა მენიუში აირჩიე Styles & Templates
    2) მერე Search in Templates
    3) გვერდზე Search in Style მიუთითე სასურველი სტილი, “Search for Text” ველში ჩაწერე textarea და Find
    4)მოგიძებნის ყველა შაბლონს სადაცაა textarea

    თუ გინდა რომ WYSIWYG ედიტორშ ჩართო ქართულად წერა
    აირჩიე editor_ toolbar_on შაბლოდნი და კოდს რომ გამოგიტანს ბოლოში ჩაამატე ეს:

    <script type="text/javascript" src="geokbd.js"></script>
    <script type="text/javascript">
      GeoKBD.mapIFrame('{$editorid}_iframe');
    </script>
    

    geokbd.js შეგიძლია გადმოწერო აქედან: http://geokbd.googlecode.com/svn/trunk/geokbd/geokbd.js

    თუ უბრალოდ ნებისმიერი ფორმაში გინდა რომ იწერებოდეს ქართულად, მაშინ საკმარისია მხოლოდ ასეთი რამ:

    <script type="text/javascript" src="geokbd.js"></script>
    <script type="text/javascript">
      GeoKBD.map();
    </script>
    

    თუმცა WYSIWYG ედიტორისთვის ცალკე მაინც საჭირო იქნება ის კოდი რაც პირველად დავწერე…

  8. ბპგ ამბობს:

    წარმატებით ვიყენებ მთელს საითზე — ფორმით GeoKBD.map(); — მაგრამ ვერ მივხვდი როგორ შეიძლება გამოვიყენო DotNetNuke-ს FCK WYSIWIG რედაქტორში.

    თუ არსებობს გამოცდილი გზა FCK-თვის?

  9. იოსები ამბობს:

    ბპგ,

    სამწუხაროდ რაიმე სპეციფიური FckEditor – ისთვის არაფერი გამიკეთებია :( ნამდვილად ძალიან მიჭირს დროის მხრივ… მაგრამ გარკვეული ცდა ჩატარებული მაქვს აი ამ პოსტში შეგიძლიათ ნახოთ:

    http://www.code.ge/geokbd/geokbd-022-rich-editor-support-improvements

    კოდი ასე გამოიყურება:

    GeoKBD.mapIFrame(function() {
       var _el = null;
       if (_el = document.getElementById('FCKeditor1___Frame')) {
           return _el.contentDocument.getElementsByTagName('iframe')[0];
       }
    });
    

    FckEditor – ში ოდნავ განსხვავებულად არის რეალიზაცია და ასეთი შემოვლითი გზა არის საჭირო…

    FCKeditor1___Frame ამ იდენტიფიკატორის ნაცვლად, საჭირო იქნება თქვენი ედიტორის კონკრეტული იდენტიფიკატორის მითითება… სხვა გზა ამ ეტაპისთვის სამწუხაროდ არ არის…

  10. ბერო ამბობს:

    კარგი რამე აღმოვაჩინე თქვენი საიტის სახით.

    ჰო, გამოვწერე სკრიპტი გუგლის რეპოზიტორიდან. რომლის ზომა იყო 10054. ასევე სადემონსტაციო მაგალითის მიხედვით გადავაკეთე ჩემს ფორუმზე ფორმა. მიუხედავად იმისა, ჩეკბოქსი ჩართული იყო თუ გამორთული მხოლოდ ქართულად ხდებოდა აკრეფვა. საცდელად თქვენივე საცდელის კოდი გადავიტასე ჩემს სერვერზე და იმანაც იგივე შედეგი მომცა, ანუ არ აქცევდა ჩეკბოქსს ყურადღებას. ამიტომ ავდექი და გადმოწერე სკრიპიტი დემოს მისამართიდან http://www.code.ge/samples/geokbd.js რომლის ზომაა 8537, ესკრიტი ავტვირთე საიტზე და ყველაფერი ამუშავდა. მადლობა სკრიპტისათვის.

  11. იოსები ამბობს:

    ბერო,

    დიდი მადლობა :)

    ძალიან უყურადღებოდ დამრჩა ეს სკრიპტი სამწუყხაროდ :( და ვერ ვუთმობ შესაბამის დროს… თუმცა მაქვს ახალი ვერსია რომელსაც პატარა დახვეწა სჭირდება და გამოვაქვეყნებ უახლოვეს მომავალში :)

  12. დათო ამბობს:

    გამარჯობათ. ვიცი ახლა ამ ქართული კლავიატურის გარჩევის დრო არ არის მაგრამ აქადმე ვიყენებდი ამ ქართულ კლავიატურის სკრიპტს:

    http://www.code.ge/geokbd

    დღეს კი სასწაული აღმოვაჩინე opera და IE6 ში არ მუსაობს იმ შემთხვევაში თუ ნაიმში გაქვს პარამეტრი length ანუ

    length-ს მაგივრად სხვა სახელი რომ მივანიჭოთ მუშაობს ვირივით ხოლო ეგრე არა და არ უნდა მუშაობა … ნეტავ რაშია საქმე :(

  13. დათო ამბობს:

    გამარჯობათ. ვიცი ახლა ამ ქართული კლავიატურის გარჩევის დრო არ არის მაგრამ აქადმე ვიყენებდი ამ ქართულ კლავიატურის სკრიპტს:

    http://www.code.ge/geokbd

    დღეს კი სასწაული აღმოვაჩინე opera და IE6 ში არ მუსაობს იმ შემთხვევაში თუ ნაიმში გაქვს პარამეტრი length ანუ

    1
     

    length-ს მაგივრად სხვა სახელი რომ მივანიჭოთ მუშაობს ვირივით ხოლო ეგრე არა და არ უნდა მუშაობა … ნეტავ რაშია საქმე

  14. NEXUშ ამბობს:

    შეგიძლიათ მითხრათ ეს ქართული კლავიატურის სკრიპტი როგორ გადავიტანო IPB 2.2.2. ფორუმში ??? ipb_geo.js რომ დავაყენე და ყველაფერი იდეალური სიზუსტით გადავამოწმე მაინც არ წერდა ეგება თქვენმა სკრიპტმა დამეხმაროს ამ საკითხში. წინასწარ დიდი მადლობა.

  15. Flanger ამბობს:

    მეც ძალიან მაინტერესებს IP.Board-ში როგორ ხდება ამის ინტეგრაცია, ვერანაირად ვერ გავაქართულე.

    v2.3.6

  16. SNooPI ამბობს:

    Ucoz-ზე შეიძლება ქართული კლავიატურის დაყენება? :)

  17. იოსები ამბობს:

    @SNooPI

    თვალით არ მინახავს Ucoz ვერაფერს გეტყვი.. თუ სკრიპტების ატვირთვა და HTML კოდის მოდიფიკაცია დაშვებულია რატომაც არა? :)

  18. SNooPI ამბობს:

    HTML-ი აქვს მარტო PHP-ი არ ჯდება იმიტო რომ Ucoz-ს თავისი კოდები აქ! და მაგითო ვერ ვსვავ :( და მარტო HTML-ი ვერაფერს გახდება ? რამე სქრიპტი ან რამე რო მომცე იქნებ ჩაჯდეს :)

    დიდი მადლობა წინასწარ! :)

  19. ალეკო ამბობს:

    @SNooPI

    PHP რა შუაშია საერთოდ აქ?
    საუბარია ჯავასცრიპტზე, გადახედე ზემოთ პოსტს, კაცმა ამდენი წერა :) არის მხოლოდ ჯავასკრიპტი, და ნახე თუ შეგიძლია ჯავასკრიპტის ატვირთვა და თუ არა მაშინ html-ით ვერაფერს გახდები სამწუხაროდ :)

  20. SNooPI ამბობს:

    ალეკო
    ჯავასკრიფტი მიდის მარა ეხა არ გაუშვა იქ რო ვსვავ ნაწერებათ აჩვენებს :( და მე იმიტო მოეგონა PHP-ი და იქნებ რამეში დამეხმაროთ…. :)

  21. რიჩი ამბობს:

    მაიინერესებს DLE დაყენება როგორ გავაკეთო თავიდან ბოლომდე თუკი შეგილიათ რომ დამეხმაროთ

  22. თორნიკე ამბობს:

    ძალიან გთხოვთ როგორმე მასწავლეთ dle-ს სიახლის დამატებისას ქართულად წერა. ან addnews.tpl-ში რა კოდი უნდა ჩავაგდო http://up.jeje.ge/download.php?id=90A0CBC720 წინასწარ მადლობა

  23. aleko205 ამბობს:

    @თორნიკე

    1
    2
    3
    GeoKBD.map({
          fields: ['title','short_story','full_story']
      });

    ეს გაუწერე მაგ ფაილს ბოლოში და წესით უნდა იმუშაოს. ისე მარტივია და ცოტას თუ დააკვირდები თითონაც გაუწერ :)

  24. aleko205 ამბობს:

    ვა -ში ჩავსვი და გამიფუჭა კომენტარი, მოკლედ ეგ უნდა გაუწერო და თავში და ბოლოში < s c r i p t t y p e . . . . და როგორც არის :)

  25. სანდრიკა ამბობს:

    ხალხო მისმინეთ დლეზე ვერ დავაყენე რა ვერაფრით და იქნებ ამიხსნათ თვითონ geokb.js სად ჩავაგდო?

  26. WebMaster ამბობს:

    ადმინ, მოკლედ ეს ქართული წერა მაქვს დაყენებული კომენტარებში DLE ზე და მინდა რომ სიახლის დამატებაშიც მქონდეს და ვერ გავაკეთე და იქნებ დამეხმარო ? გთხოვ სკაიპში დამიმატე: gadmowera.com მადლობა წინასწარ

დატოვე კომენტარი:

ქართული კლავიატურა, ჩართვა/გამორთვა კლავიშით "~"