2013/11/07

String fitxategia eta App hizkuntza eleanitzak sortzeko aukera

Eclipsen Android proiektu bat sortzen den aldiro Hello world! testua erakusten duen interfaze grafikoa gehitzen du automatikoki I. Ilustrazioan ikus daitekeen moduan.

I. Ilustrazioa: Hello word!




Java natiboan programatuz gero App-aren GUI-a xml lengoaian definitzen da, I. Ilustrazioan ikusten den editore grafikoa erabiliz edota zuzenean xml ikuspegia aukeratuz kodigoa idatziz (Ikus II. Ilustrazioa).

II. Ilustrazioa: GUI-a eratzeko 2 aukerak, grafikoa eta xml kodea
Kasu honetan App hizkuntza eleanitzetaz hitz egin behar dugunez III. Ilustrazioak erakusten duen kodearen zatian zentratuko gara:

III. Ilustrazioa: Textview baten xml kodea

I. Ilustrazioan ikusi dugunez App-ak soilik Hello world! testua erakusten du. Horretarako GUI-an TextView motako objektua erabiltzen da, zabalera (width) eta altuera (height) bat ematen zaio, kasu honetan jarriko zaion testuaren tamainera egokitu direnak (wrap_content) eta azkenik testua bera adierazten zaio android:text parametroaren bidez. Bi modu daude Textview-ari xml bitartez testua pasatzeko:
  1. Testua bera android:text parametroari hardcodeatuz, adibidez android:text="Hello world!" eginez. Hau ez da aukera gomendagarriena, erakutsi behar dugun testua behin baino gehiagotan erabili beharko bagenu aldaketak egiteko garaian lana asko zailtzen delako.
  2. Edota III. Ilustrazioan egiten den moduan string.xml fitxeroa erabiltzea.
string.xml fitxategia res>values karpetaren azpian aurkitzen da (Ikus I. Ilustrazioa) eta IV. Ilustrazioak erakusten duen itxura du.

IV. Ilustrazioa: strings.xml fitxategia

Eclipseko xml artxibo guztien antzera, string.xml fitxategiak bi ikuspegi ditu baita ere: grafikoa eta xml kodearena. string fitxategian erakutsi nahi dugun testua definitzeko, string-ari izena (name, urdin kolorez dagoena) eman behar zaio eta ondoren testua idatzi (beltz kolorez agertzen dena):

<string name="string_izena">Erakutsi nahi dugun testua</string>

Behin string-a definiturik dugunean pantaila edo GUI-aren xml ikuspegian TextView-ak erabili behar duen string-a adierazi behar zaio, definituriko string_izena pasaz:

android:text="@string/string_izena"

Android App hizkuntz eleanitz bat garatu nahi bada, hau da, erabiltzaileak bere gailuko hizkuntza aldatzen duenean App-an azaltzen diren testuak ere hizkuntzez aldatzea nahi bagenu, hizkuntza bakoitzeko strings.xml fitxategi bat sortu beharko da. Adibidez ingelerazko eta gaztelerazko App bat programatzea bada helburua, res karpetaren barnean values-es karpeta sortu beharko da (Ikus V. Ilustrazioa), bertan values karpetako strings.xml artxiboa kopiatuko da eta string guztien testua gazteleratu bukatzeko (soilik string-en testuak aldatu, izenak ez!).

V. Ilustrazioa: Gaztelerako string-a definitzen
Hizkuntza guztietan errepikatzen diren testuetarako nahikoa litzateke values karpetako strings.xml-ean behin definitzea. Aipatu ez den arren hizkuntza bat baino gehiago definitzen den unetik aurrera values karpeta ingelerako hizkuntzarentzako defektuzko karpeta bihurtzen da, ez genuke values-en karpeta sortu beharrik edukiko.

Hizkuntza bakoitzari dagokion atzizkia honako estekan kontsulta daiteke: ISO 639-1 Code