கணிமொழி - வைகாசி - மே 2008

Gettext - தனை பயன்படுத்தி பல மொழிகளை கையாளும் நிரல்

பாரதி சுப்ரமணியம், மிடாஸ் கம்யூனிகேஷன்ஸ், சென்னை

குறிப்பு: இக்கட்டுரையை வாசிக்க நிரலாக்க முன்னனுபவம் இருப்பது நல்லது.

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

குனு லினக்ஸில் உள்ள பெரும்பாலான செய்நிரல்கள் ஆங்கில மொழி அல்லாத மற்ற மொழிகளையும் கையாளும் விதத்தில் எழுதப்பட்டவை. அதனால் மிக எளிதில் மற்ற மொழிக்கு மொழிபெயர்த்து விடலாம்.

இந்த பகுதியில் எவ்வாறு ஒரு நிரலை பல மொழிகளை கையாளும் விதத்தில் எழுதுவது என்று பார்ப்போம்.

முதலில் உங்கள் குனு லினக்ஸ் கணிபொறியில் இருக்க வேண்டிய மென்பொருள்கள்:

  • சி மொழியாக்கி/தொகுப்பி
  • Gettext
  • தமிழ் எழுத்துரு
  • இப்போது நாம் செய்ய வேண்டியவற்றை படிப்படியாக பார்ப்போம்

    சி மொழியில் Gettext தனைப் பயன்படுத்தி ஒரு நிரல்

    /* கோப்பின் பெயர்: sample.c */
    #include <stdio.h>
    #include <stdlib.h>
    #include <locale.h>
    #include <libintl.h>
    /* gettext-க்கு உதவ */
    #define _(String) gettext(String)
    #define gettext_noop(String) (String)

    main(){

    char message[] = gettext_noop("Language");

    /* பழைய குறிப்பை நீக்கு */
    setlocale(LC_ALL, "");
    setlocale(LC_TIME, "" );
    setlocale(LC_MESSAGES, "");

    /* MO கோப்பின் பெயர் */
    bindtextdomain( "sample", "/usr/share/locale/" );
    textdomain( "sample" ) ;

    printf("\n Output: %s \n", _(message) );
    }

    இந்த சி நிரலை கம்பைல் செய்து sample என்ற கோப்பில் காக்கவும்.

    $ gcc sample.c -o sample

    நிரலில் இருந்து வார்த்தை பிரித்து எடு

    $ xgettext -o sample.po sample.c

    இந்த கட்டளை நிரலில் உள்ள வார்த்தை பிரித்து எடுத்து தனியாக sample.po என்ற கோப்பாக சேமிக்கும். இது சாதாரண கோப்பு அதனால் இதை எந்த ஒரு எடிடரிலும் திறக்கலாம்.

    #: sample.c:11 -- கோப்பின் பெயர், வரி எண்
    msgid "Language" -- இது ஆங்கில சொல்
    msgstr "" -- இங்கு மேலே உள்ள சொல்லுக்கு இணையான தமிழ் வார்த்தையை நுழைக்க வேண்டும்.

    #: sample.c:11
    msgid "Language"
    msgstr "தமிழ்"

    MO கோப்பாக மாற்று

    நிரல்கள் வேலை செய்யும் பொது தேடுதலை எளிமையாக்க PO கோப்பை MO கோப்பாக மற்ற வேண்டும்.

    $ msgfmt -o sample.mo sample.po

    MO கோப்பை அதற்கான இடத்தில் வைக்க வேண்டும். இந்த இடத்தில் வைக்க ரூட் அனுமதி தேவை.

    # cp sample.mo /usr/share/locale/ta_IN/LC_MESSAGES/
    அல்லது
    # cp sample.mo /usr/share/locale/ta/LC_MESSAGES/

    நிரலை இயக்கு

    $ ./sample

    Output: Language

    மொழியை மாற்று

    $ export LANG=ta_IN

    மறுபடியும் நிரலை இயக்கு

    $ ./sample

    Output: தமிழ்

    இப்படி தான் ஒரு நிரலை பல மொழிகளை கையாளும் விதத்தில் எழுத வேண்டும். இது ஒரு சிறிய பகுதியே இ தைப் பற்றி மேலும் அறிய கீழ்கண்ட இணையதளத்தை பார்க்கவும்.
    http://www.gnu.org/software/gettext/manual/gettext.html