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.

CC BY-SA 4.0 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude