About gamabhana

General Overview:

Need for phonetic editing has its roots in different keyboard layouts developed and used by different users and multiple fonts which in combination failed to produce unique easy to use compatible typing/editing solution. The problem is more in the area of software solutions being developed for different Indic Languages. Web based Direct editing or phonetic editing is an implementation which allows user to type in the context using phonetic key patterns across different keyboards, browsers and different Indic scripts.

What is gamabhana?

gamabhana is an open source implementation that uses purely client side java script to enable phonetics in editable html tags such as div (not editable in mozilla firefox) , iframe, input, textarea, document so that you can type in the context phonetically in the selected Indic script with transliteration capabilities that support unicode fonts with the help of  pre-designed gamabhana maps.

With gamabhana library and gamabhana phonetic maps you can:

  • Attach phonetics to editable html tags such as iframe and/or input (single line) and/or textarea and/or document.
  • Design your own transliteration maps for any language/script.
  • Achieve Unicode support across browsers, applications, platforms.
  • Type in the context phonetically ( direct input method) in IE ( V 5 above) and Firefox Mozilla.




How does gamabhan work?

gamabhana
- High Level Design:

+======================+
 |       Transliteration Map          |
+======================+

      key-        ^          unicode   
  sequence        v      sequence

+-------------------------------------------+
 |  gamabhana phonetic parser  |
+-------------------------------------------+

      key        ^   v      result-key
+----------------------------------------------------------------------------+                          unicode phonem                         ___________________
 |            customizable Special  Editing Engine           |------------------------------------------------------------------------->|             E                 |
+----------------------------------------------------------------------------+                                                                          |             d                  |
        keyboard event     ^  v    [return-event]                                                                                            |              i                  |
+=================================+                        phonems that require no parsing              |              t                 |
 |            gamabhana keyboard handler            |  - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >|              b                 |
+=================================+                                                                                    |              l                  |
        keyboard event ^ v [return-event]                                                                                                    |              e                 |
+=================================+                            
event handling                                    |                                |
 |            gamabhana event listener                  |<========================================= |              t                 |
+=================================+        object binding: gamabhanaPhoneticHandler              |              a                |
                                                                                                                                                          |              g                |

gamabhana is easy to customize if you are aware of keyboard event handling capabilities of each browser.
Currently it supports Internet Explorer ( V. 5 onwards) and mozilla Firefox.

The new version uses hybrid approach that leads to object oriented paradigm with prototyping.
New prototype facilitates developer to use, extend and expand JavaScript class to suit different variations.

Release notes, bug reports on versions prior to 07.10.14 are available here.


Function purpose Version
gamabhanaPhoneticHandler
( GivEleId, GivLang, GivSecLang, GivLayout )

usage:
gphObj= new gamabhanaPhoneticHandler('wysiwygtextarea1','__devanagari__','__roman__','#gamabhana#');

Create object for gamabhana phonetic handler.

It attaches phonetics to input editable html element along with specified primary, secondary languages and keyboard layout.
This function accepts four parameters (all are mandatory)
GivEleId: id of the editable html tag
GivLang: Valid value for primary script/language
GivSecLang: Valid value for secondary script/language
GivLayout: valid value for Keyboard layout

07.10.14
 

MapMyLayOut( gphObj,GivLayOutName,GivMapPtr)

usage:
gphObj.
MapMyLayOut(gphObj,'#myLayOut#',__MYL00);
Relates User defined keyboard layout for specific gphObject to array by name (userdefined transliteration-map) 07.10.14

SetLayOut(GivLayOut)

usage:
gphObj.SetLayOut('#gamabhana#');

Sets keyboard Layout for use 07.10.14
SetSecLanguage(GivLang)

usage:
gphObj.SetSecLanguage('__telugu__');
Sets secondary language 07.10.14
SetPriLanguage(GivLang)

usage:
gphObj.SetPriLanguage('__gujarati__');
Sets primary language 07.10.14

SwapLanguage()

usage:
gphObj.SwapLanguage();

Swaps through primary and secondary language 07.10.14
GphRegisterForMasterUpdates(gphObj)

usage:
GphRegisterForMasterUpdates(gphObj1);
GphRegisterForMasterUpdates(gphObj2);
Register the gphObject for master updates ( These are the updates on primary, seondary languages, language swapping, keyboard layout, refreshing states for registered objects) 07.10.14
GphUnRegisterForMasterUpdates(gphObj)

usage:
GphUnRegisterForMasterUpdates(gphObj1);
GphUnRegisterForMasterUpdates(gphObj2);
Unregisters the gphObject that was earlier registered for master updates  07.10.14
GphMasterStateRefresh()

usage:
GphMasterStateRefresh();
Refreshes states for registered gphObjects 07.10.14
GphMasterPriLangUpdate(GivLang)

usage:
GphMasterPriLangUpdate('__urdu__');
Sets primary language provided in input for all registered objects for master update services 07.10.14
GphMasterSecLangUpdate(GivLang)

usage:
GphMaterSecLangUpdate('__bengoli__');
Sets secondary language provided in input for all registered objects for master update services 07.10.14
GphMasterLayoutUpdate(GivLayOut)

usage:
GphMasterLayoutUpdate('#fontfreedom#');
Sets keyboard layout provided in input for all registered objects for master update services 07.10.14

GphMasterSwapLang()

usage:
GphMasterSwapLang();

Swaps through primary and secondary languages for all registered objects for master update services 07.10.14
UpdateAjaxSpellCheck(GivMode)

usage:
UpdateAjaxSpellCheck(true);

This service enables/disables ajax based spell check feature available under shabdasampada

For more details please view demo and its source code.
Developers would need to include 3 javascripts from shabdasampada and then call ajaxed javascript function with mouse even as input.
Enable/Disable ajax based spell check for marathi 07.12.16
Technical Upgrade Fixed table creation issue for firefox, enhanced GUI 08.02.20
gamabhana Pro and Lite updates
technical upgrades for gamabhana Lite and Pro
08.11.29
How can I use gamabhana in my web based applications?
  1. Download the latest package. Locate gamabhana_js folder therein for your use.Place it along with your html page.
  2. Embed script tags in your page:
    <script language="JavaScript" type="text/javascript" src="./gamabhana_js/GA1000.js"></script>
    <script language="JavaScript" type="text/javascript" src="./gamabhana_js/GA0010.js"></script>
    <script language="JavaScript" type="text/javascript" src="./gamabhana_js/gamabhanaLib.js"></script>
  3. Attach phonetics by creating new object in script tag as follows :
    gphObj1 = new gamabhanaPhoneticHandler (Id of editable html tag, primaryLanguageString, secondaryLanguageString, KBLayOutString);
  4. Current LanguageStrings are:
    '__devanagari__'
    '__bengoli__'
    '__gurumukhi__'
    '__gujarati__'
    '__kannada__'        
    '__malayalam__'     
    '__telugu__'           
    '__urdu__'           
    '__roman__'
  5. Current KBLayOutStrings:
    '#gamabhana#'
  6. Show me a working Demo

How do I enhance gamabhana for new languages/scripts?

  1. In order to availa the source code please write to josh9383@gmail.com
  2. You can define your own language/script transliteration map defining it in javascriptfile   by adding new array:
    e.g.
    var
    GgaNepaliMap=new Array();

    // phonetic Nepali equivalents
    GgaNepaliMap['
    k'] = "\uhexunicode";
    GgaNepaliMap['
    ka'] = "\uhexunicode\uhexunicode";
    e.t.c. an so on...
     
  3. Defining a parsing logic is bit complex. In order to attach your own parsing logic you need to understand the prototyping of the existing framework.After defining your own new transliteration map you would need to define the languageString,languageShifts, preparsing function,post parsing function and special case function(if any).
  4. Currently there is no technical documentation available and developers aer encouraged to come up with the same if they happen to able to extend,enhance the framework.
  5. This library is open source software released under the LGPL. Please see source code for more details. This package and its contents are Copyright (C) 2006 Omkar Milind Joshi, All Rights Reserved.   

For More Details:
josh9383@gmail.com
or contact : 09869184o6o