The International Simutrans Forum

Language boards => [CS]Česky (Czech) => Topic started by: jk271 on February 13, 2012, 09:15:34 PM

Title: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on February 13, 2012, 09:15:34 PM
Abstrakt
Kódování utf8 umožňuje použít znaky z různých národních abeced současně (např. Němčina - latin1 a Čeština -latin2) a bez omezení. Odpadají tak problémy jednobajtových znakových sad, jako jsou latin1, latin2, windows-1250 apod. Následující postup slouží k vyzkoušení jak moc je ve hře podporována čeština a kódování utf8.  popisuje, jak převést jazykové soubory kódované v latin2 do utf8. Postup je funkční jak pro češtinu tak pro jakýkoliv jiný jazyk. Platí i pro jazyky kódované v latin1. Tímto postupem si nepokazíte stávající soubory s překladem.




Abstract:
Utf8 uncoding enables to use symbols from different national alphabeths (e.g. German - latin1 and Czech - latin2) concurrently without difficulties. Using uft8 avoid difficulties caused by different code pages like latin1, latin2, windows-1250 etc. Following text describes transformation of language files from latin2 encoding to utf8 encoding. This algorithm works for Czech language files as well as for any other language files. For language files in latin1 too. This approch does not destroy or damage language translation you already have.




úvod
Kódování utf8 je v simutrans již běžně používáno i v jazycích píšících latinkou -  v litevštině a maďarštině. Dále je stejného souboru s fontem, jako u předchozích dvou, užito pro běloruštinu, ruštinu, a řečtinu. Proto neznám důvod, proč by utf8 nemělo být použito pro češtinu nebo jiný jazyk, který je nyní v latin1 nebo latin2.
Současný stav způsobuje občasné ( - stačí i jednou) rozbití překladů u jazyků v latin2, pokud jsou do translatoru importovány jako latin1. Pokud by byly všechny překlady v utf8, problém by odpadl.

Pokud budete postupovat podle tohoto návodu, přidáte si ke stávající češtině v programu (je v latin2) ještě "druhou češtinu" v utf8.
Nebudete-li s češtinou v utf8 spokojeni, snadno se můžete vrátit ke stávajícímu funkčnímu překlad v latin2 - pouze si přepnete zpět jazyk na "cestina".

Stávající čeština má zkratku "cz", u té v utf8 jsem použil "cs", aby se nepřepsala stávající verze. Nové označení jazyka musí být dvoupísmenné. Může to být například dosud nepoužitý kód státu, ve kterém se mluví stejným jazykem - at pro němčinu nebo us pro angličtinu. Stejně tak může posloužit použití následujícího písmena: "fr" --> "fs"



K rozchození češtiny v utf8 potřebujete:
* soubor s fonty ve formátu bdf
    patří do adresáře "simutrans/font/"
* soubor s překlady textů programu
     "simutrans/text/cs.tab"
* překlady nápověd k jednotlivým dialogům programu
    "simutrans/text/cs/*.txt"

Dále jsou třeba překlady textů pro jednotlivé paky a seznam měst. Například pro pak64 jsou to soubory:
    "simutrans/pak/text/cs.tab"
    "simutrans/pak/text/citylist_cs.txt"
    "simutrans/pak/text/streetlist_cs.txt" (bonus, není nutný)

Pod násludujícím odkazem se skrývá archiv s výše uvedenými soubory. Obsahuje nový (testovací) původní font (má však navíc znak "tvrdá mezera", který chyběl),  překlady pro program a pro pak64 a pak128.

http://simutrans-germany.com/files/upload/utf8_text_20130101.zip

V případě smazání výše uvedeného souboru použijte texty přímo z githubu. (Zde je budu možná občas aktualizovat)
Stáhněte celý repozitář z adresy:
https://github.com/jk271/simutrans/tree/texts_in_utf8 (https://github.com/jk271/simutrans/tree/texts_in_utf8)
kliknutím na ikonku s nápisem zip (je vlevom, asi 10 cm odshora)
A pak si z toho vyberte jen texty s nápovědou.

Postup:
1) Archiv stáhnete a rozbalíte soubory do příslušných adresářů.

2) Spustíte hru a vyberete jazyk "Cestina_utf8".

3) Vytvoříte novou hru a hrajete tak jak jste zvyklí.

Poznámka k fontu: Je použit jiný font, protože pro mě bylo jednodušší (méně časově náročné) vytvořit nový, než upravovat stávající font.

Není nutné používat nový font. Po rozbalení souborů změňte hodnotu na 3. řádku v souboru simutrans/text/cs.tab na "cyr.bdf". Použije se čeština v utf8 a stávající font.

Chcete-li převést do utf8 i jiné paky může vám posloužit program enca. Nebo ve vašem textovém editoru pro 21. století zvolte uložit jako a nastavte kódování "utf8". Nezapomeňte pak přidat na začátek souboru znak § - ať simutrans pozná, že je to v utf8.

Známé bugy - co nefunguje a proč:
Dialog stanice: Nejsou zobrazeny smajlíky.
    důvod: Nejsou obsaženy v testovacím fontu. Až zjistím jejich čísla, přidám je do fontu. Nejedná se o chybu v utf8.
    Použijete-li původní font ze souboru "cyr.bdf" (ne ten nový DejavuSansMono10.bdf) vše se zobrazí tak, jak má být.

Diakritika u objektů z pak64: Rozbitá diakritika u některých objektů.
    Diakritika u objektů z pak64 je rozbita už ve stávající verzi (v latin2) souborů z translatoru. Musel bych projít překladový soubor a ručně to opravovat položku po položce. To je přesně ten důvod, proč chtít utf8 všude (u všech jazyků včetně Angličtiny): Ubude případů s rozbitou diakritikou když někdo (člověk i program) myslel, že je to latin1 a ono to bylo latin2 apod.


Edit: Zrovna nedávno (31.12.2012) jsem opravoval nápovědu k železničním mostům naimportovanou do translatoru jako latin1 místo latin2.

Postup byl vyzkoušen v operačním systému Linux (Debian) - kde funguje. Budete-li to někdo zkoušet pod Windows, napište do tohoto vlákna v jakých Win a jak jste dopadli. Přidám to sem.


Edit 18.2.2012:
změna stávající hry v latin2 na utf8

Stávající hra na utf8 změnit jde, chce to jenom mít nějaký program, co umí překódovat soubor z latin2 do utf8. Postup je následující:

1) Otevřít soubor "config/simuconf.tab"

2) Změnit způsob ukládání hry na "xml", tj. zakomentovat stávající řádek
# saveformat = bzip2
a přidat nový řádek
saveformat = xml

3) Načíst uloženou hru a uložit ji pod novým jménem (do xml). Nepřepisuju původní hru, co kdyby se to nepovedlo.

4) Ukončit simutrans

5) Překonvertovat hru (v xml) z latin2 do utf8
  V Linuxu to jde příkazem
recode iso-8859-2..utf8 128_test_utf8.sve
Jak je to ve windows nevím. Ale určitě i tam existuje nějaký program na změnu kódování z latin2 do utf8.
V nejdorším případě to jde oteřít v nějakém textovém editoru (který to zvládne načíst jako latin2) a pak dát "uložit jako" a nastavit kódování na utf8.
Jenom předem upozorňuju, že krok 5  bude chvíli trvat, zvlášť s tím editorem. Taky to zabere spoustu operační paměti (pokud se editor).

6) V souboru "config/simuconf.tab" změnit způsob ukládání hry na původní hodnotu. (Ukládání jako XML trvá déle a zabírá hodně místa.)

7) Spustit simutrans a otevřít zkonvertovaný soubor s uloženou hrou.

8. Změnit jazyk na Cestina_utf8 (nebo cokoliv jiného v utf8).

9) Mělo by to být hotové.





introduction
Encoding utf8 in simutrans is currently being used with two languages using latin alphabet: Hungarian and Lithuanian. The same font file now uses Belarussian, Greek and Russia translation as well. So I do not know any reason for not using of utf8 in Czech or any latin1- or latin2- language translation. Current state causes accidental (and very rare) breaking up of language translations encoded in latin2 (e.g. symbols as ěščž in Czech) by misinterpretation latin2 as latin1. Having all translation files woult avoid/anticipate such a nuissance.

For conversion language texts and making it work is needed:
You need also language files of your's favourite pak:
And you need latin1 to utf8 or latin2 to utf8 converter. I have used programs enca/enconv  or recode on my Debian GNU/Linux.
You can use any text editor, that can read files in latin1 or latin2 correctly and save it as utf8-encoded files. However this approch is much more slower than previous one with command line tools.Algorithm
As there are no pre-prepared language files in utf8 for your's language, you have to make it yourselves. As we do not desire to change current translations, we will make a copy. Instead of "cz" use code of your's language.





Poznámka: Tento text bude editován (upřesňován, odstaňovány přelkepy).

Edit: Přidán obrázek s ukázkami více jazyků najednou.
Důkaz použití utf8 - toto v latin2 nejde.

Edit 18.2.2012: Přidán postup pro úpravu stávající hry v latin2 do utf8.

Edit 8.5.2012: Úpravy a částečný překlad do angličtiny. Čím víc jazyků bude v utf8, tím líp.
Partial English translation. It is my way how to boost utf8 in simutrans.

Edit: 1.1.2013: opraven odkaz, přidán odkaz na github; Zbláznil se mi editor :(
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: Václav on February 18, 2012, 05:32:28 PM
No, ne že by to nevypadalo dobře. To vypadá - i ten font je celkem slušný - otázka je rozlišení velkých a malých písmen opatřených interpunkčními znaménky. To je v základní češtině (s výchozím fontem) trochu problém (protože některá z těchto písmen vypadají téměř stejně) - a proto nerad používám města, jejichž názvy takovými písmeny začínají.

A je škoda, že je nutné kvůli tomu začít úplně novou hru. Zrovna mám jednu hru docela slušně rozjetou.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on February 18, 2012, 09:35:05 PM
Pokud chceš mít původní font, změň si v souboru "simutrans/text/cs.tab" na třetím řádku "DejavuSansMono10.bdf" na "cyr.bdf". Původně jsem nevěděl, že je tom nějaký font pro utf8 (obsahující znaky pro češtinu), tak jsem vygeneroval nový. Ten ale není nutný, jde si vystačit se stávajícím "cyr.bdf".

Doplnil jsem do návodu jak změnit stávající hru z latin2 do utf8.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: VS on February 19, 2012, 04:32:58 PM
Ahoj lidičky, pokud můžete, zkuste prosím stáhnout z translátoru texty pro jazyk "xx" pro program a vyzkoušet ve hře?

Vzal jsem původní češtinu (tedy jenom pro program), vytvořil nový jazyk se stejnými parametry jako současná čeština, naimportoval to tam zpátky, přehodil kóodování a stáhnul. Vypadá to, že konverze byla úspěšná. Teď ještě jestli to bude platit i jinde?

Pokud to bude fungovat i u vás, zřejmě stačí přehodit čudlík v translátoru a basta.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on February 20, 2012, 05:48:26 PM
Stáhl jsem jazyk xx a zatím jsem neobjevil v základních textech něco, co by nefungovalo. Zkoušeno s pak64 a pak128.
Pokud to tahle půjde dál, je to skvělé.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: VS on February 20, 2012, 08:49:20 PM
Je potom možné s verzí SDL psát znaky jako háček plus písmeno? Třeba ť by tím bylo úplně vyřízené...
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on February 20, 2012, 11:33:03 PM
Používám verzi se SDL v Linuxu. Se znaky s háčky ve hře nemám problémy ani se zobrazováním ani s psaním.
Pokud použiju verzi SDL_mixer tak mi to funguje taky.
V allegru se mi nezobrazuje kurzor myši, takže to nemohu vyzkoušet.

Chtělo by to ještě někoho kdo používá SDL ve Windows.

P.S. Znaky ď ť ň fungují taky, jen jsem na ně pozapomněl.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: Václav on February 21, 2012, 05:51:55 AM
UTF 8 jsem ještě nezkoušel. Vím ale, že v původním fungovaly. Jen u některých znaků, které není možné psát rovnou z horního řádku klávesnice, se před nimi objevovaly blbosti. Pokud by tohle odpadlo, bylo by to skvělé.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on May 06, 2012, 03:52:29 PM
Odhalil jsem jeden bug, který se při použití latin2 neprojevoval - u názvů zastávek vytvářených ze jména továrny se objevoval na konci názvu obdélník. Pátral jsem v debuggeru, trasoval program a pořád nic. Pak jsem nakonec zjistil, že je chyba v překladu.

V souboru simutrans/text/cz.tab Jsou následující 2 rádky:

%s factory %s %s
%s - %s %s

Pokud na druhém z nich smažete poslední tři znaky - " %s", tak se obdélník už nebude objevovat.

%s factory %s %s
%s - %s

Inspiroval jsem se anglickou a německou verzí překladu. Tam je %s taky jen dvakrát.
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on December 31, 2012, 04:05:00 PM
Obdélníčky v názvech zastávek jsou způsobeny chybějícím znakem "tvrdá mezera" (160) v souboru s fontem (cyr.bdf).

Proč k tomu dochází?

V současné podobě překladu se u železničních stanic k názvu přidává text "stanice"  (např. Zdiby, východní předměstí stanice) , u zastávek (silniční dopravy) se nic nepřidává. Jenže v souborech ze simutranslatoru je u zastávek přidávána tvrdá mezera. A ta chybí ve fontu, takže vznikne obdélník.

Je to nahlášené, možná se to podaří opravit přímo u zdroje.
http://forum.simutrans.com/index.php?topic=11197.msg109065;topicseen#msg109065 (http://forum.simutrans.com/index.php?topic=11197.msg109065;topicseen#msg109065)

Pokud se vám nechce čekat, vložte si do souboru cyr.bdf toto:

STARTCHAR char160
ENCODING 160
SWIDTH 389 0
DWIDTH 5 0
BBX 5 0 0 0
BITMAP
ENDCHAR


Nejlépe mezi řádky

"ENDCHAR"

a

"STARTCHAR char161"
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: meme on January 01, 2013, 01:50:46 PM
Hlásím rozbitý link na archiv
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on January 01, 2013, 04:17:53 PM
Díky za upozornění. :) Nejpíše se to bylo smazáno.


Nahrál jsem texty na gitbub. Měly by tam vydržet déle a je to pro mě jednodušší na nahrávání.  Je to ve větvi texts_in_utf8. v adresáři simutrans/text/
Označené je to jako jazyk cs (aby se to nepletlo se stávajícím překladem).

Je několik možností, jak to stáhonout

1) pomocí gitu:
git clone https://github.com/jk271/simutrans.git (https://github.com/jk271/simutrans.git)

přepnout se do větve texts_in_utf8
git checkout origin/texts_in_utf8

a pak použít jen soubory s nápovědou z adresáře simutrans/text/

2) Stáhnout celý repozitář z adresy
https://github.com/jk271/simutrans/tree/texts_in_utf8 (https://github.com/jk271/simutrans/tree/texts_in_utf8)
kliknutím na ikonku s nápisem zip (je vlevom, asi 10 cm odshora)

A pak si z toho vybrat jen texty s nápovědou.

3)
Stahovat to po jednom souboru z https://github.com/jk271/simutrans/tree/texts_in_utf8/simutrans/text (https://github.com/jk271/simutrans/tree/texts_in_utf8/simutrans/text)

4) Stáhnout to z opraveného linku. (Až to tam znova nahraju). Nahráno


Doporučuju použít postup 2.

Edit:
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: meme on January 01, 2013, 07:16:58 PM
Díky, konečně  nativní znaková sada pro můj OS ;) 


Edit: Věci v toolbaru jsou v rozsypaném čaji a nejsou přeložené popisky u vozů :(
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: jk271 on January 01, 2013, 08:06:30 PM
Kdyby bylo na mě, tak je český překlad v utf8 rovnou z translatoru
Znakové sady latin1, latin2 apod. ve mě vyvolávají představu 90. let minulého století. :)

Rozsypaný čaj by snad už mohl být opraven. Poslední úpravu jsem na překladech dělal ještě někdy okolo 20:00.
Chyběl mi tam znak § na začátku souboru. To pak simutrans myslí, že to není utf8.

Každopádně dík za hlášení chyb. Čím víc nás bude hrát a mít popisky v utf8, tím dřív se odstraní případné chyby.

Kdyby byla poptávka po popiskách ještě k nějakému paku, můžu je taky převést do utf8. Ale tak nejvýš jeden pak. Chtěl bych se věnovat radši tvorbě nápovědy :)

Nejspíš to bude pak128.cz
Title: Re: Návod - test češtiny a utf8 v simutrans - jak na to
Post by: meme on January 01, 2013, 08:10:41 PM

Díky - Já upřímně nesnáším třeba titulky v CP1250 (Handbrake je neumí ) - Naštěstí na Unix-like systémech máme   iconv -f "muzeální sada z roku 123" -t UTF-8 (takže si myslím, že by na převod celých paků stačilo  iconv -f "muzeální sada z roku 123" -t UTF-8 <soubor.txt >nový_soubor.txt ;)
Nevím, proč se vůbec používá v západním světě jakákoli sada kromě UTF-8 -- Nevidím důvod, proč ji nepoužívat :)
--------
Edit: Funguje, díky!  :police: