Keresés

Új hozzászólás Aktív témák

  • Raqueia

    tag

    válasz Thrawn #57268 üzenetére

    Öröm látni, hogy lehet felnőttként is zárni egy vitát. De apeelme tényleg leirhatná mi is a rossz a Jbartos módszerben, ez egy szakmai topik, még ha nem is értjük egyesek, azért hátha, érdekelni meg szerintem sokakat érdekel, lehet érdekesebb része lenne a topicnak, mint a "melyik boltbol mit rendeljek" beírások.

    [ Szerkesztve ]

    voltak: Defy Plus>Amoi N821>Amoi N828>Zopo zp810>Vowney V5>Huawei G700>Xiaomi Redmi Note>Jiayu G4S, van LG L90 dual, meg nyugi :)

  • tvamos

    nagyúr

    válasz Thrawn #57268 üzenetére

    Probalok nem irkalni ilyes fajta vitakhoz kapcsolodva. Csak most nem allom meg... ket okbol.
    1. Bant, ha sertegetik egymast az emberek! Nem is tudom eldonteni, ki kezdte, meg ertelme sincs elemezni.
    2. Orultem volna, ha nem letorlod a ROM-od, hanem esetleg egyutt bele neztek, hogy lehet javitani. Abbol esetleg mi is tanulun.
    Engem sosem erdekeltek a magyar ROM-ok, de most megis azt kell mondjam, jo dolog a Magyaritott ROM, es minden allitasom visszavonom a feleslegessegevel kapcsolatban! (Ujfent koszonet a ket szakerto /Cappa72, es Apeelme/ munkajaert!)
    Jah, es Boldog Uj Evet!

    [ Szerkesztve ]

    "Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

  • apeelme

    addikt

    válasz Thrawn #57268 üzenetére

    Nagy vonalakban leírom mi a gond neked és mindenkinek akit érdekel, és leszögezném hogy nem áll(t) szándékomban senkit sem megbántani. A leírás sok helyen felületes, nem minden részt említ mert hatalmas a téma, természetesen lehetnek benne hibák, kérem nézzétek el nekem! :R

    Hol is találhatóak a lokalizációhoz szükséges erőforrások? Ha valaki érez ingerenciát pl. apktool-al fordítson vissza egy tetszőleges rendszer APK-t annak könnyebb érthetőségéért, ha nincs kedve elmondom hogy minden egyes APK-ban a res/values és esetünkben a magyar nyelvi fájlok a res/values-hu és res/values-hu-rHU könyvtárakban találja általában egy arrays.xml és egy strings.xml fájlokban szigorú szabályok közt felsorolva. (található még a raw-ban is de most mellőzük a könnyebb érthetőség kedvéért) Ha "kínából érkező" készüléket fordítanánk akkor nagyon valószínű hogy legalább az alapértelmezett angol nyelv (nem az alapértelmezetten beállítottról van szó) teljes, erre kínai barátaink az esetek többségében figyelnek. Ez az alapértelmezett angol a res/values mappában található pár dologgal kiegészítve. (kínai barátainknál természetesen sokszor az angol kínait jelent :DDD )
    Ha valaki manuálisan lokalizál (magyarra) akkor a legtöbbet a strings.xml-el fog foglalkozni azaz a values-hu könyvtárban lévő fájlokban fog kutakodni, nézzük meg egynek a tartalmát hogyan is néz ki:

    Settings.apk (strings.xml) magyar JB repo-ból(140-es sor) azaz a Beállítások alkalmazás:

    <string name="outdoor_settings_title">Kültéri</string>

    Egy string name van definiálva (outdoor_settings_title) ami egy konkrét egyedi azonosító a rendszerben, amit akkor hív elő amikor az adott pl. lista vagy menüelemet, címet, bármit ami egy string name-el van ellátva meg kell jeleníteni, ha a rendszer beállított nyelve magyar, akkor esetünkben ebből a values-hu könyvtárban lévő strings.xml-ből veszi elő (mert tudja hogy a nyelv beállítása miatt abban kell keresnie). Ha nem talál ebben a fájlban ilyen outdoor_settings_title string név definíciót (tehát hiányzik ez a sor ebből a fájlból) akkor az alapértelmezett values/strings.xml fájlba kukkant bele és onnan húzza be. Ezt látjátok amikor a pl. Beállításokban egy-egy menüpont hol magyar, hol angol nyelven jelenik meg. Azt jelenti hogy a magyar nyelvi fájlokban nem szerepel az a string name definíció így kénytelen a values-ból szedni.
    A feladat egyszerű ha valami angol akkor a values-hu -esetünkben- strings.xml fájljába fel kell venni egy olyan sort és lefordítani magyarra majd elmenteni a fájlt, összecsomagolni, bizonyos esetben szignózni és felpakolni a készülékre. Előfordulhat olyan is hogy egy APK-ban teljesen hiányzik az -esetünkben- values-hu könyvtár, ilyenkor nincs más teendő mint manuálisan létrehozni a benne lévő fájlokkal együtt. (ennek függvénye és nagyon fontos hogy a rom-ban választhatónak kell lennie Beállításokból annak a nyelvnek!)
    1db(!!!) Beállítások(Settings.apk) alkalmazás (pl. JB esetén) ~2000-2500(!) sort, azaz ennyi nyelvi definíciót tartalmaz MINDEN nyelven! (nyelvenként ~200-300kB)

    Nézzük meg ugyanezt a definíciót a korábban általam is emlegetett Lenovo P770 esetében. Néznénk...mert bár szerepel az angol nyelvi fájlban azt lefordítva magyarra a fent leírt módon mégis angol marad. Miért lehet ez? A válasz egyszerű a Lenovo remek mérnökei új string name definíciót használnak ahhoz a menüponthoz (ugye emlékszünk hogy egyedi azonosítóról van szó?):

    <string name="audio_profile_outdoor_title">Kültéri</string>

    Látszik hogy az egyedi name definíció a outdoor_settings_title-ról audio_profile_outdoor_title-ra változott, azaz az adott elem meghívásakor ez utóbbit keresi a nyelvi fájlok között, ha a rendszer nyelve magyarra van állítva és megtalálja a magyar fájlokban akkor úgy jeleníti meg, ha nem találja akkor az alapértelmezett values-ban lévő fájlokból húzza be.
    Ha megpróbáluk megkeresni a korábban is linkelt magyar JB repóban, akkor sajnos konstatálnunk kell hogy nincs ilyen definíció, viszont ha jobban szemügyrevesszük akkor egy csomó olyan viszont van ami nekünk nem is kell, mert pl. nem szerepelnek azok a beállítások a készülékben hardver hiányában.

    Minden egyes APK-ban -rendszer szinten is-, Böngésző, Kamera, Üzenetek, Beállítások stb., még a Play-ből telepítettekben is vannak ilyen könyvtárak és fájlok. Egy teljes rom alap alkalmazásokkal és erős becsléssel (JB esetén) közel 100.000 minket érintő definícióval van ellátva...lássuk be ez még gombócból is sok. Az én tapasztalatom az hogy a kínából érkező készülékek kb. 60-70%-osan fedik le a magyar nyelvet a többi angol (esetleg kínai). Legfőképp a dual-sim támogatás miatt, hiszen azt "ők" találták ki, "ők" fejlesztették...google a mai napig nem támogatja hivatalosan a két sim kártyás üzemmódot, így az nem szerepel a hivatalos mindenki által elérhető Android forrásban sem...csak a "kínaiknál" van jelen. De megemlíthetném a Lenovo egyedi megoldásait is....és még sorolhatnám.

    Most tegyük fel hogy rengeteg ilyen le nem fordított definíciót találtunk hisz most érkezett a készülékünk kínából és megvan a gyári rom is, próbáljuk megoldani jBart-al. Mit is csinál ő pontosan?
    A jBart ú.n. repokkal dolgozik, amiknek tartalma a fent taglalt nyelvi fájlok, befoglaló mappáival együtt...jó esetben minden egyes APK szerepel benne ami a gyári rom-ban...vagy mégsem?
    A művelet amit végrehajt szimplán annyi hogy fogja egyesével az APK-kat, kibontja, a repóban lévő -magyar nyelvi fordítás esetében- values-hu könyvtárat annak teljes tartalmát a többi közé bemásolja és vagy felülírja, majd visszacsomagolja az egészet APK-ba. Így sorban végigmegy minden egyes elérhető APK-n....bármiféle vizsgálat nélkül. Fontos megjegyezni hogy természetesen az összképen mindenképpen javít, tehát tuti hogy jobb lesz mint azelőtt volt de korántsem tökéletes, sőt lehet olyan is hogy ami eddig magyar volt az többé már nem az.
    Így tehát ha a repo-ban lévő nyelvi fájlokban szerepel minden olyan definíció ami nekünk szükséges akkor nyertünk. Sajnos viszont nem ez a helyzet, rengeteg olyan definíció van ami tök feleslegesen van benne a repo-ban, és rengeteg van ami nincs benne pedig kellene.
    Az nem megoldás hogy egy olyan repo-t csinálunk ami az eddig fellelhető összes készülék összefésült nyelvi fájljait tartalmazza, mert olyan mennyiségű adathalmazról van szó amivel nem szabad(na) dolgozni.
    Akkor mi a megoldás? Ha valakinek ez megfelel lelke rajta, és köszönet :R azoknak a munkájáért akik ezt elérhetővé tették (én tudom hogy mekkora meló), viszont a tökéletességért sajnos a manuális megoldáshoz kell folyamodni, és minden rendszerösszetevőt egyesével átnézni, megkeresni a hiányzó részeket, és pótolni őket majd ellenőrízni, és még így is marad(hat) olyan rész ami lefordíthatatlan mert hardcoded (ami egyébként tilos lenne pontosan a lokalizáció miatt), és egy kész APK-ban csak smali-ból módosítható (visszafordított java osztályok - gépi kódban), ami egy nem hétköznapi embernek is a kínaival egyenlő.
    Ez nagyon nagy munka, de egyszer kell csak megcsinálni, viszont ahány gyártó, készülék, rendszer, annyi féle. Jómagam természetesen mindig ez utóbbit preferálom...és ezért is nem értek azzal egyet amikor azt mondja valaki hogy tökéletesen magyar lesz úgy hogy megnyom ~2 gombot, és egy menüpont egyik fele magyar, másik fele meg angol marad...számomra ez nem megfelelő ahogy sok másnak sem (én sem szeretem a fércmunkát).

    Elég hosszú lett, elnézést érte. Remélem egy picit világosabb lett annak akit érdekelt a téma, bár tudom hogy hamar elvész a süllyesztőben, és minden visszatér a régi kerékvágásba...

Új hozzászólás Aktív témák