|
Honosítás, és Update csomag
Elég sok idő telt el a harmadik rész óta, remélhetőleg minden érdeklődő ki tudta próbálni az előzőekben leírt dolgokat. Most tehát van néhány kibontott apk fájlunk, egy telefonunk, és magyarítani szeretnénk.
A lokalizáció
Előljáróban néhány szót a res mappa működéséről. A leggyakoribb könyvtárak, amiket itt találhatunk a következők:
drawable: Itt a programcsomag által használt grafikai elemek, és néhány xml fájl található, amelyek a grafikus elemek elhelyezkedését/viselkedését befolyásolják.
layout: Az itt található xml fájlok szabják meg az alkalmazás ablakainak/képernyőinek/widgeteinek/stb. kinézetét, elrendezését.
values: Számunkra ez igen fontos, többek között a nyelvi fájlokat tárolja a mappa, később részletesebben belenézünk.
xml: A program által használt leíró fájlok, különböző adatokat tartalmazhatnak, amik a program működését befolyásolják.
Észrevehettétek, hogy néhány mappából több változat is létezik, és ez számunkra nagyon fontos. Különböző nyelveknek, telefon típusoknak külön mappát tudunk készíteni. Hogy is működik ez? Példának vegyük az 1.6-os Launcher.apk-t. Ebben a csomagban van egy drawable könyvtár, amiben a program képeit találjuk, valamint van egy drawable-land és egy drawable-port mappa. Attól függően, hogy a telefon álló vagy fekvő módban van, a szükséges elemeket a drawable-land és drawable-port mappákból fogja venni. Ehez hasonlóan a values-ben az alapértelmezett angol fájlok találhatóak, míg a values-it az olasz nyelvi fájlokat hordozza. Ha létrehoznánk egy values-it-land mappát, az olasz szövegeket fekvő módban innen töltené be. Ezen a logikán tovább haladva hozzunk létre egy values-hu mappát, és hozzá is foghatunk a magyarításhoz.
A values mappában több xml fájlban van, de nekünk nem lesz mindre szükségünk. ha benézünk a values-it mappába, lekoppinthatjuk, hogy mely fájlokra van szükség a magyar lokalizáció létrehozásához. Másoljuk át a strings.xml-t a values mappából a values-hu mappába.
A nyelvi fájlok az Androidtól megszokott xml formátumban vannak tárolva. Win felhasználók, figyelem: a fájlokat UTF-8 kódolással kell menteni, különben nem fognak működni az ékezetes karakterek. Windows alatt ajánlom az ingyen letölthető notepad2 alkalmazást. Én Linux rendszeren a geditet használom. Nyissuk meg a values-hu mappából a strings.xml-t, és nézzük meg a szerkezetét:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="application_name">Home</string>
<string name="uid_name">Android Core Apps</string>
<string name="folder_name">Folder</string>
<string name="chooser_wallpaper">Select wallpaper from</string>
...
</resources>
Szerintem egyszerű a stringek felépítése: <string name="string_neve">És a szöveg, amit tartalmaz</string>
Fordítsuk is le az angol szöveget:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="application_name">Főképernyő</string>
<string name="uid_name">Android Alkalmazások</string>
<string name="folder_name">Mappa</string>
<string name="chooser_wallpaper">Válasszon hátteret</string>
...
Ennyire egyszerű. Nem kell patchelni a forráskódot, hogy elhelyezzük a magyarítást, nem kell beírogatni a magyar stringeket a kódba, egyszerűen átmásoljuk az angol fájlokat a -hu végű mappákba, és lefordítjuk őket. Van azért néhány dolog, amire figyelni kell:
A \ karakter a backspace. Az android rendszer érzékeny a különböző különleges karakterekre, mert sokat operátorként használ fel (", ~, ', stb.) Ezek előtt a karakterek előtt \ jelet szokás kitenni, így értesítve a rendszert, hogy a következő karakter egy írásjel lesz. Sok helyen fordul elő változó, ami valamilyen adattal, vagy szöveggel lesz felcserélve: <string name="shortcut_installed">Shortcut \"%s\" created.</string>. Itt látszik, hogy az idézőjelek backspacelve vannak, a %s pedig egy változó, ahova a rendszer az ikon nevét fogja behelyettesíteni. Ilyenkor érdemes végiggondolni, hogy nyelvtanilag mennyire lenne helyes a mondat, ha a változót ott hagynánk ahol van, pl.: Ikon "Gmail" létrehozva. vagy inkább "Gmail" ikon létrehozva. Nagyon figyeljünk oda, hogy a string nevét ne írjuk át, ne töröljük ki a <> jeleket, stb.
Ha kész a magyarítás, az előzőekben ismertetett módon fordítsuk újra, írjuk alá, és hozzuk létre az update csomagot.
Maga az update csomag egy zip fájl, és hasonlóan kell kinéznie, mint a romnak, amiből a csomag származik. Az update csomagnak van egy fontos könyvtára: META-INF/com/google/android ahol találunk egy update-script nevű fájlt. Ebben van meghatározva, hogy hogyan történjen az update. Ezt mindíg az adott rom update scriptjéből érdemes értelemszerűen kibogarászni, de a következő parancsok általában működnek:
show_progress 0.5 0
copy_dir PACKAGE:system SYSTEM:
show_progress 0.5 10
Ebből látszik, hogy az update folyamat a system könyvtárat fogja felülírni az általunk mellékelt fájlokkal. Másoljuk be az apk fájlunkat a helyére. (a helyét nézzük meg az eredeti update csomagban, amiből kivettük) Ez nálam a system/app/Launcher.apk
A kevenc archívumkezelőnkkel készítsük el a zip csomagot.
Innentől kezdeve már csak újra kell indítanunk a telefont Recovery módban, csinálni egy backupot, és fel kell flashelni a kapott fájlt.
Sok sikert kívánok, és bombázzatok meg a kérdéseitekkel :) |