மார்ச் 21, 2010

மென்பொருளை உள்ளூர்மயமாக்கலும் உலகமயமாக்கலும்

Localization and Internationalization in Tamil

Localization, Internationalization, Unicode, Tamil keyboard layouts, Tamil encoding schemes, IME-Input Method Editor போன்ற குறிப்பு சொற்களைக் கொண்டு தேடுபொறியில் தேடவும்.

Localizationஐ சுருக்கமாக L10N என்றும் Internationalizationஐ I18N என்றும் சுருக்கமாக குறிக்கலாம். Lக்கும் Nக்கு இடையில் உள்ள எழுத்துக்களின் எண்ணிக்கை 10. அதேபோல் Internationalization வார்த்தையில் Iக்கும் Nக்கும் இடையிலுள்ள எழுத்துக்களை எண்ணிப் பார்க்கவும்.

L10Nஐ உள்ளூர்மயமாக்குதல் என்றும் I18Nஐ உலகமயமாக்குதல் எனவும் தமிழில் அறிந்து கொள்வோம்.


L10N என்பது மென்பொருளை ஒரு குறிப்பிட்ட பகுதி மக்களுக்குகாக (இனம்,மொழி,கலாச்சாரம்) அவர்களுக்கேற்ற இடைமுகப்பில்(GUI) உருவாக்குவது. மெனுக்கள், டயலாக் பாக்ஸ்கள், ஐகான்கள் எல்லாம் அவர்களுடைய இரசனைக்கேற்ப அமைந்திருக்கும்.

 I18N என்பது ஒன்றிற்கு மேற்பட்ட பகுதி(மொழி..) மக்களுக்கேற்ப மென்பொருளை வடிவமைப்பது. நிறைய மொழிகள் பட்டியலில் இருக்கும், அவரவர்க்கு தேவையான மொழி இடைமுகப்பை தேர்வு செய்து கொள்ளலாம்.

இன்று மென்பொருள் துறையில் இது போன்ற மென்பொருளுக்கான தேவை அறியப் பட்டு வருகின்றது.
முன் எப்போதும் இல்லாத அளவிற்கு பிராந்திய மொழிகளில் வலைதளங்கள், வலைப்பூக்கள், மென்பொருள்கள் அதிகரித்து வருவதை கண்கூடாகக் காணலாம். இன்று வர்த்தகம் உலகளவில் நடக்கிறது. ஜப்பானிலிருந்தோ, சீனாவிலிருந்தோ, பிரான்சிலிருந்தோ வரும் ஒரு வாடிக்கையாளர் அவர்கள் மொழிக்குத்தான் முக்கியத்துவம் கொடுப்பார்கள்.

ஆகவே பண்ணாட்டு நிறுவனங்களிலும் இது போன்ற மென்பொருளை உருவாக்குபவர்களுக்கு நல்ல தேவை இருக்கிறது. தற்போதே அதற்கான தொழில்நுட்பங்களை அறிந்து கொண்டு தனித்து அடையாளம் காணுங்கள்.



இது நான் எழுதிய முதல் தமிழ் நிரல்.  விபி6.0 யில் உருவாக்கினேன்.  ஒரு சோதனை முயற்சியாக செய்து பார்த்தேன்.  எதிர்பார்த்ததைவிட நன்றாகவே வேலை செய்கிறது.  இதனை பதிவிறக்கி இயக்கும் முன்னர் தங்கள் விண்டோஸ் இயங்கு தளத்தில் Regional Settings and Language மூலம் தமிழ் ஆதரவு செய்யப் பட்டிருக்கிறதா என உறுதி செய்து கொள்ளவும்.

இதன் மூல நிரலை Tamil Unicode in VB example.zip பதிவிறக்கிக் கொள்ளவும்.  http://groups.google.com/group/tamilcpu    or
http://groups.google.com/group/freetamilcomputing

இதேபோல பிற நிரல் மொழிகளில் செய்து பார்க்கவும்.  நீங்கள் எழுதிய தமிழ் நிரலையோ அல்லது தங்களுக்கு தெரிந்த தமிழ் நிரலாக்க தளங்களையோ பின்னூட்டத்தில்(comment) தெரிவிக்கவும்.

மார்ச் 09, 2010

தமிழ் குறியீட்டு முறைகளில் எழுத்துக்களுக்கு உள்ள எண்கள்

Code points of characters in different Tamil encodings


எண்ணென்ப ஏனை எழுத்தென்ப இவ்விரண்டும்
கண்ணென்ப வாழும் உயிர்க்கு.
                                                                     -குறள், 392

தாங்கள் தமிழுக்கு குறியீட்டு மாற்றியோ(encoding coverter), விசைப்பலகை செயலியோ(keyboard driver) உருவாக்க எண்ணம் கொண்டிருந்தால் முதலில் ஒவ்வொரு தமிழ் எழுத்திற்கும் அந்தந்த குறியீட்டு முறையில் எந்த எண்களை(code point/ASCII value) ஒதுக்கியிருக்கிறார்கள் என்பதைத் தெரிந்து கொள்ள வேண்டும். டாம், ஒருங்குறியில்(unicode) தமிழ் எழுத்துக்களுக்கு ஒதுக்கப்பட்ட எண்களை ஒரு விரிதாள் கோப்பாக (spreadsheet) http://groups.google.com/group/freetamilcomputing குழுமத்தில் பதிவிட்டுள்ளேன். தங்களுக்குத் தேவைப்படும் மற்ற குறியீட்டு முறைமைகளுக்கு(எடு: பாமினி) தாங்களே அதனை விரிவுபடுத்திப் பயன்படுத்துங்கள். அதனைப் பதிவிறக்கி பயன்பெறவும்.



விசைப்பலகை செயலி உருவாக்குவதற்கு கீழ்காணுமாறு நிரலெழுதலாம்
if(keypressed == 'a')
print('அ');-----------------------------வழி 1

இதையே if(keypressed.value == 97) // 97 என்பது 'a'வின் ASCII மதிப்பு
print((char)\x0B85);---------------------வழி 2


குறியீட்டு மாற்றிக்கு ஒரு துளி
string tamTxt = "îI›" // TAMல் எழுதப்பட்ட "தமிழ்" ஆங்கில எழுத்தில் இவ்வாறு தோன்றும்
string unicodeTxt;
for (i=0 to i=tamTxt.length())
{
switch(tamTxt[i].AscVal) {
case 220: // TAMல் 'அ'விற்கான எண்
unicodeTxt[i] = (char)2949 // யுனிகோடில் ‘அ'விற்கு ஒதுக்கப்பட்ட எண்
.
.
.
தாங்கள் ஒரு நிரலில் 0B85, 2949... போன்ற எண்களைப் பார்க்கும் போது அவை எந்த எழுத்தைக் குறிக்கின்றன என்பது புரியாமல் போக வாய்ப்பிருக்கின்றது. ஜாவா, ஜாவா ஸ்க்ரிப்ட் போன்ற மொழிகளில் வழி ஒன்றில் உள்ளதுபோல் ஒருங்குறி(யுனிகோட்) எழுத்துகளை நேரடியாகவே நிரலில் உள்ளிணைக்க முடியும். அனைத்து நிரலாக்க மொழிகளிலும்(எடு:விபி) இது சாத்தியமில்லை. ஒவ்வொரு நிரல் மொழியிலும் தமிழை எவ்வாறு பயன்படுத்த வேண்டுமெனத் தெரிந்திருந்தாலே போதுமானது, அழகான தமிழ் மென்பொருளை நாமாகவே உருவாக்கிடலாம்.

பொனடிக்(ஒலியியல்) முறையில் தமிழ் தட்டச்சிடும் ஜாவா மூல நிரல்

பொனடிக்(ஒலியியல்) முறையில் தட்டச்சு செய்வதற்கான ஜாவா நிரலை http://groups.google.com/group/freetamilcomputingலிருந்து பதிவிறக்கி சோதிக்கவும். தங்களிடம் JRE இருந்தால் போதுமானது. நிரலில் மாற்றம் செய்து அதனை மேம்படுத்த jdk 1.2 அல்லது அதற்கு பிந்தைய பதிப்பு வேண்டும். தங்கள் கணினியில் Latha (அ) Lohit Tamil யுனிகோட் எழுத்துரு இருக்க வேண்டும். அல்லது தங்களுக்கு விருப்பமான யுனிகோட் எழுத்துருவை நிரலில் சுட்டவும்.
நிரலை இயக்க           java TamilPad
compile செய்ய         javac encoding -utf16 TamilPad.java
நிரல்முழுதும் வெறும் if conditionனும், switch statementதான் நிறைந்திருக்கிருக்கும். நீங்கள் ஜாவா புலியாக இல்லாமல் என்னைப்போன்று ஜாவா எலியாகயிருந்தாலும் எளிமையாகக் கற்றுக் கொள்ளலாம். a அ aa A ஆ i இ ii I ஈ e எ ee E ஏ ai ஐ o ஒ
oo O ஓ au ஔ Q ஃ க் k g ... ன் n. nj ஞ்ச் ng ங்க் ndh nth ந்த் (Relative consonants) ka ga க gna; ங ca sa cha ச gna ஞ da ta ட Na n;a na; ண tha dha d;a t;a ta; da; த na qna ந pa ba ப ma ம ya ய ra ர la ல va wa வ za zha ழ La la; l;a ள r;a ra; Ra ற na ன ki கி கீ kii kI கு ku கூ kuu ...... ha ஹ sha ஷ Sa c;a s;a sa; ஸ க்ஷ ksha ja ஜ sri ஸ்ரீ
ஒருங்குறியில் ஸ்ரீ என்பது தனி எழுத்தல்ல. நான்கு குறியீடுகளால் ஆனது.
+ + + --->; ஸ்ரீ   Ligature எனப்படுகிறது (complex symbol).
என்னக் கொடும சரவணன். இதற்குத்தான் தமிழுக்கு ஒவ்வோர் எழுத்திற்கும் தனியிடம்(யுனிகோடில் TUNE, TACE16) கேட்கிறோம்.
தமிழில் ள,ற,ண,ந,த,ஸ ஆகிய வரிசையிலுள்ள எழுத்துக்களை ஒலியியல் (phonetic) முறையில் தட்டச்சு செய்யும் போது மிகுந்த சிரமத்திற்கு உள்ளாகிறோம். இதற்கு எளிய மாற்றாக TAM99 விசைப்பலகை வடிவமைப்பை பரிந்துரைப்பதும் உண்டு. குறுஞ்செய்திகளில் eppadi macchi irukka என்பதுபோல் ஆங்கில எழுத்திலேயே தாய்மொழியில் நலம் விசாரிக்கும் பாசாக்கார பிள்ளைகளுக்கு நிச்சயம் ஒலியியல் தட்டச்சுதான் பிடித்து போகும். ஓரளவிற்கு ஒலியியல் முறையிலேயே வேகமாக தட்டச்சு செய்ய ஷிப்ட் விசையை கொஞ்சம் தவிர்த்தாலே போதுமானது.   நான் எழுதிய ஜாவா நிரலில் ';' விசையை எழுத்துக்களை மாற்றுவதற்கு பயன் படுத்தியிருக்கிறேன். 
'ள்' தட்டச்சு செய்ய L என்று உள்ளிடுவதைவிட l; என உள்ளீடு செய்வது எளிமையாக இருக்குமெனக் கருதுகிறேன். இப்படி உள்ளீடு செய்து சோதிக்கவும்: "பள்ளம்" வார்த்தையை pal;lam pall;am என உள்ளிடலாம். கண்ணன் kann;an kan;nan மஞ்சள் manjaL manjal; நானாக நானில்லை தாயே naanAga naanillai thaayee nAnAka nAnillai t;AyE இந்நிலையில் iqnqnilaiyil q என்பது பழைய மதிப்பை(prevkey) அழிக்க வைத்திருக்கின்றேன். நினைவோ ஒரு பறவை ninaivoo oru par;avai gangai kangai sangu nungu pangu vaangu vankam thangam thangai kur;inji kaanjipuram banaaras; பனாரஸ் pattu kungumam
''கரத்திற்கு முன்னர் ''கரம்தான் வரும் 'ன'கரம் வராது.
எடு: உண்டு, வண்டு, கண்டு, உண்டியல், பண்டிகை, கொண்டான், கொண்டை, காண்டீபன்... ஆகவே இதுபோன்று உள்ளீடு செய்ய uNdu, un;du என உள்ளிடுவதற்கு பதில் undu, kondai, mandu.. என உள்ளிட்டாலே போதுமானது.
அதேபோல் ''கரத்திற்கு முன்'கரம்தான் வரும்.
எடு: கன்று, தின்றான், ஒன்று, பன்றி, மன்றம், தென்றல், ஊன்றுகோல், ஏனென்றால்...
indru இன்று inru இதுவும் இன்று எனச் சரியாக வரும்.
ஆகவே onRu என்பதற்கு பதில் onru என உள்ளிடுவது எவ்வளவு சுலபம் பாருங்கள்.
காற்று kaaRRu kaatru kaar;ru karru
rr அழுத்தினாலே "ற்ற்" என உள்ளீடு செய்து விடலாம்.
இவை இரண்டு ற்ற் வரும் எல்லா எழுத்துக்களுக்கும் பொருந்துமா என்றால் நிச்சயம் பொருந்தும். நீங்கள் என்னை சந்தேகிக்கலாம், நம் மொழியின் இலக்கணத்தை எவர் மறுத்து பேச இயலும்.  ர்ர் ர்ரு ர்ரி ர்ரா ர்ரை... என வரவே வராது.
     மெய்ந்நிலை  சுட்டின்  எல்லா  எழுத்தும்
    தம்முன்  தாம்  வரூஉம்  ர, ழ  அலங்கடையே
                                                                               
                                                                               -(30வது பாடல்), தொல்காப்பியம்.
ர, ழ இந்த இரண்டு எழுத்துக்களைத் தவிர எல்லா உயிர்மை எழுத்துக்களும்(க,கா,கி,கீ,கை..) தனக்கு முன்னர் அதே மெய்யெழுத்தை பெற்று வரும்(க்). ச்சா, ச்சி, க்கை, ட்டு ... ழ்ழா, ர்ரா, ழ்ழி... என வந்தால் தமிழிலணக்கனத்தில் நீங்கள்தான் நூற்றுக்கு நூறு. orrai என்பதை "ஒற்றை" என வரவழைப்பதில் என்ன சிக்கல். மாற்று marru நேற்று neerru nEtru tr என்பதற்கு ற்ற் போட்டாலும் எளிமைதானே. குற்றாலம் kutraalam kurraalam
நம் மொழியின் தொன்மையான இலக்கணம் அனைத்தையும் நிரலாக்கப் படுத்தினால் எப்படியிருக்கும் என எண்ணிப் பாருங்கள், விழிகள் விரியும்.
ஐந்து aindhu ஷர்மிளா sharmil;aa sharmilaa; நாதஸ்வரம் naathaswaram சுஜாதா sujaathaa ஹரிணி harini; tth த்த் முத்தம் muttham சொத்து sotthu murugan ஞானப் பழம் gnaanap pazam.
        லினக்சில் executable jar கோப்பை திறக்க                                                                                                                 
right click ---> open with java   
or      use a custom command             java -jar