Nola eduki webguneak hainbat hizkuntzetan gettext erabiliz
Orain pare bat hile nire ‘webgunea‘ edo aurkezpen gunea sortu nuen, eta hainbat hizkuntzetan edukitzea bururatu zitzaidan. Hau egiteko hainbat bide daude, adibidez:
- Fitxategia hainbat hizkuntzetan eduki
- Fitxategiko testuak aldagai definitu moduan erabili
- Gettext erabili
Lehendabizikoa da proiektu txikientzat (eta hau horrela da) errexena, baina proiektu handietan edo aldaketa asko dauden tokietan, fitxategia behin da berriz aldatu beharra lan handia bihurtu daiteke. Bigarrena ere ez da batere zaila, baina behin erabili nuen eta primeran zebilen arren, nahiagoko nuke gehiago ez erabili. Beraz, azkena geratzen zait, eta ondorioz, nola dabilen ikasi beharra.
Gettext sistemaren ezaguna naiz hainbat urtetan softwarea itzultzen ibili ondoren, eta ondorioz ezagutzen ditut sistema hau erabiltzeko moduak eta herramientak, baina sekula ez nituen webgune batean aplikatu.
Gehiegi bilatu gabe google-n, gune hau topatu nuen. Bertan ongi azaltzen du nola hasi erabiltzen gettext sitema webguneei aplikatuta. Baina nik beste modu bat erabili dut po/pot fitxategiak generatzeko. Berak xgettext erabiltzen duen bitartean, nik intltool-update, amaieran azalduko dudan arrazoi bategatik.
Lehen pausua itzuli nahi ditugun kateak prestatzea da. Hortarako nahikoa da gure kateak aldatzea.
echo "kaixo";
Honegatk
echo gettext("kaixo");
Edo
echo _("kaixo");
Modu honetara, kate hauek gettext-ek kudeatuko dituela adierazten dugu.
Ondoren proiektuaren erroan, po karpeta sortu. Bertan POTFILES.in fitxategia sortu, eta idatzi itzuli nahi diren fitxategien izenak, nire kasuan index.php Ondoren, po karpetan bertan intltool-update -p exekutatu (intltool paketea behar da), eta honek .pot fitxategi bat sortuko digu, txantiloia.
Fitxategi hau kopiatu hizkuntza.po fitxategi izenarekin, en.po adibidez. Fitxategi hau itzuli beharreko guztia da, eta hau burutzeko poedit, kbabel edo gtranslator erabil daiteke gure lanak errazteko (gomendagarriak gettext sistema erabili ez dutenentzat).
Itzulitakoan msgfmt -cv en.po exekutatu, eta honek erroreez gain, messages.mo fitxategia sortuko du. Fitxategi hau da behar duguna gure webgunearen hizkuntza aldatzeko. Fitxategi hauek erroan sortu behar dugun karpeta estruktura berri batean kokatuko ditugu: erroa/locale/HIZKUNTZA/LC_MESSAGES/, non kasu hontan HIZKUNTZA “en” da. Kopiatu bertan messages.mo fitxategia.
Orain nahikoa da gure index.php-ean edo gunea kargatzeko erabiltzen dugun fitxategian kode hau txertatzea:
$language = 'en';
putenv("LANG=$language");
setlocale(LC_ALL, $language);
$domain = 'messages';
bindtextdomain($domain, "/www/guneak/adibidea.com/locale");
textdomain($domain);
Eta honekin arazorik ez bada, gure testu kateak itzulitako hizkuntzan agertuko beharko lukete. Hau da, kaixo beharrean hello esango liguke
Ala ere badira kontutan hartzeko kontu batzu:
- Erabili nahi ditugun ‘locale’ak makinan existitu behar dira. Hau da, ezin dugu fr bat erabili, makinan hizkuntza horrek ez badu existitzen
- Localeak hizkuntza_HERRIALDEA izan hoi dira, hau da: eu_ES, eu_FR, es_ES
- Gaztelania bezelako hizkuntzetan tildeak eta eƱeak erabili ahal izateko, po fitxategiko charset-a aldatu beharko da UTF-8ra normalean, edo ISO-8859-1era bestela.
Oinarrizko hizkuntza nire webgunean euskera da, eta oinarrizko hizkuntzarentzat ez da sortu behar locale barruan estruktura karpeta edo po fitxategirik, nahikoa da $language aldagaia C-gatik aldatzea, eta ondorioz kate originalak erakutsiko ditu.
Goian komentatutako artikuluan pot fitxategia sortzeko xgettext erabiltzen dute, baina kasi hontan intltool-update gomendatzen dut nik honakoagatik: kate berriak jartzen baditugu, intltool-update en (non en hizkuntza den) komandoarekin, kate berriak sartuko dizkigu automatikoki en fitxategian.

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 3.0 License.
This entry was posted on Igandea, azaroa 26th, 2006 at 20:55 and is filed under Teknologia.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
Have your say
Fields in bold are required. Email addresses are never published or distributed.
Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>URIs must be fully qualified (eg: http://www.domainname.com) and all tags must be properly closed.
Line breaks and paragraphs are automatically converted.
Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.