Čeština pro Kindle - firmware 3.1

Čeština pro Kindle s firmwarem 3.1 je zde.

Postup instalace je shodný jako u předchozích verzí, jen připomínám že musíte nejdříve nainstalovat jailbreak pro firmware 3.1.
Jediný rozdíl je v tom, že není nutné současně nahrávat i .keyb soubor se symboly pro ALT-SYM dialog. Čeština 3.1 v sobě již obsahuje nabídku českých/slovenských/německých znaků:
Á á Č č Ď ď É é Ě ě Í í
Ň ň Ó ó Ř ř Š š Ť ť Ú ú
Ů ů Ý ý Ž ž Ä ä Ľ ľ Ĺ ĺ
Ô ô Ŕ ŕ Ë ë Ö ö Ü ü ß €
, . " : ; ! ? / @ % ( )
[ ] { } - + = _ * | # $
^ ~ ' ` \ &

Svůj vlastní .keyb soubor tedy použijte jen v případě, že nejste s touto vestavěnou nabídkou spokojeni.
Pro pohodlnější zadávání českých/slovenských znaků doporučuji rozšíření physkeyb.

Překlad jako takový samozřejmě není mým dílem, tady patří poděkování především autorům předchozích verzí, konkrétně Petru Vytlačilovi, Josefu Čečerlemu, Janu Urbánkovi a Liboru Krayzlovi.
Má práce spočívala v rozluštění postupu, jaký používá Sir Alex (Alexej Charlanov, autor ruské lokalizace) pro generování překladových katalogů a pro injektáž překladu do kódu Kindlu. Dále bylo třeba konvertovat stávající překlad pro novou strukturu firmwaru 3.1. Pak už zbývalo jen doplnit překlad nových textů a opravit několik drobností.
Pro testování byla klíčová hlavně pomoc Jana Otruby (Hanes69), jemuž patří mé díky.

(pokud vás nezajímají implementační detaily, dále už číst nemusíte)


Snažil jsem se postupovat tak, aby adaptace české lokalizace na příští verze firmwaru byla už snadná a rychlá. Vytvořil jsem katalog překladu v podobě sqlite datábáze, obsahující jak překlad pro fw 3.0.x, tak i nový překlad pro 3.1. Mám BASH skripty, které umožňují jednak použít informace z této databáze společně s novým vzorem (translation.jar z ruské lokalizace nebo i jen odpovídající katalog frází bez překladu) pro vytvoření nového překladu, tak i opačný proces, tj. naplnit sqlite databázi aktuálním překladem. Proces generování překladu se snaží vyhledat a navrhnout překlad fráze i tehdy, pokud pro daný kontext/verzi fw v databázi zatím překlad neexistuje. Dosud nepřeložené fráze jsou přehledně označeny.
Tyto skripty vznikaly za běhu a nejsou tak vzorem dokonalosti, nicméně svůj účel plní. Mimo jiné umožňují zbavit se závislosti na Siru Alexovi - už se nemusíme spoléhat na jeho pomoc při vytváření translation.jaru / poskytnutí vzorového katalogu. Pokud má o ně někdo zájem (a vhodné prostředí pro jejich běh, tj. Linux + JDK), stáhněte si vše potřebné zde.

Obsah archívu:

/framework_loc_3.1
/loc_hack
  +--- /src
/root_3.1
/strings_3.1
/translation_3.1
  +--- /translation
  +--- /translation_unfinished
  +--- /source
  +--- /translation_jar
@K3Translator.jar
Translator.java
@bcel-5.2.jar
*build-hack
config
@default.keyb
translation_3.1.jar
*extract_strings
kindle_loc.sqlite
kindle_loc.sqlite.3.0
schema.sql
*sqlite2translation
*transjar2framework
*transjar2sqlite
@translation.jar
*translation2transjar


Položky s / na začátku jsou adresáře, ty s @ jsou symlinky, hvězdičkou jsou označeny spustitelné skripty.
Překladové soubory určené k editaci jsou v adresáři translation_3.1/translation.
Skript translation2transjar z nich vytvoří translation.jar, umístěný v loc_hack/src.
Skriptem build-hack se z něj vytvoří zip archív s hackem (loc_hack/loc_cz_3.1r8.zip). Číslo releasu se dá měnit v souboru config.
Definice výchozího obsahu pro ALT-SYM dialog je v souboru loc_hack/src/default.keyb .

Překlad se dá uložit i do sqlite databáze, což se může hodit později po vydání nového fw. K tomu slouží skript transjar2sqlite, který zpracuje translation_3.1/translation_jar (meziprodukt spuštění translation2transjar, v podstatě rozbalený translation.jar) a vygeneruje sqlite databázi s překladem. Schéma tabulky viz schema.sql. Jako základ se použije kindle_loc.sqlite.3.0, takže výsledná DB obsahuje jak originální překlad pro fw 3.0.x, tak i nově vygenerovaný překlad pro fw 3.1.

Opačný proces se provede skriptem sqlite2translation. Ten vezme aktuální datábazi kindle_loc.sqlite + translation_3.1/source, což je strom .translation a .properties souborů, který vůbec nemusí obsahovat překlady (ty se ignorují), slouží jak vzor struktury frameworku + seznam anglických frází. Z databáze se k nim dohledají české překlady (pokud pro daný kontext překlad v DB neexistuje, zkusí skript najít frázi i jinde). Výsledkem je strom translation_3.1/translation (před spuštěním skriptu musí být prázdný). Nepřeložené nebo nejednoznačně přeložené fráze (varianty překladu jsou odděleny značkou '#or#') jsou také zkopírovány do stromu translation_3.1/translation_unfinished, který slouží jako vodítko pro to, co je ještě třeba dopřeložit/zkontrolovat.

Skript transjar2framework vytvoří tarball s kompletně přeloženým frameworkem (v adresáři framework_loc_3.1), to se hodí pro rychlé testování změn na Kindlu bez nutnosti instalace hacku.

extract_strings proskenuje originální strom frameworku (root_3.1) a do adresáře strings_3.1 vygeneruje strom .strings souborů obsahující VŠECHNY řetězce vyskytující se v Kindlu. Drtivá většina z nich je interní balast, nicméně je to jediné místo, kde se dá najít chybějící nepřeložený text pro přidání do translation_3.1/source popř. translation_3.1/translation . Velkým pomocníkem se tady ukázal být Midnight Commander (někdy jsem musel použít i find + grep).

Všechny skripty musí být spouštěny ze svého umístění. Nejsou zrovna ukázkou koncepčnosti a správného skriptování, ale svou práci odvedou. Skript translation2transjar potřebuje pro svou práci utilitu native2ascii z JDK, skripty sqlite2translation a transjar2sqlite potřebují sqlite3.

David Šmíd