Prusa-Firmware/lang
2022-03-09 06:37:15 +01:00
..
po Fix merge issues 2022-02-22 06:57:03 +01:00
Add_new_language.md MK3_3.11.0_Lang fixes (#3404) 2022-02-14 08:39:03 +01:00
config.sh Add SRCDIR for compatibility with build server 2022-02-10 08:27:04 +01:00
fw-build.sh Add some documentation 2022-02-02 17:23:31 +01:00
fw-clean.sh Improve language scripts 2022-02-02 17:23:31 +01:00
iso639-1.txt Lang update, french translation 2018-09-11 03:43:05 +02:00
lang_en_cz.txt Fix MSG in cz and hu as these have been different to other lang_en*.txt files 2022-02-08 14:41:35 +01:00
lang_en_da.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_de.txt Better translation in German for Bed level correct 2022-02-08 10:43:57 +01:00
lang_en_es.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_fr.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_hr.txt Fix MSG in cz and hu as these have been different to other lang_en*.txt files 2022-02-08 14:41:35 +01:00
lang_en_hu.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_it.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_lb.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_lt.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_nl.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_pl.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_ro.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_sk.txt Typo 2022-02-13 08:11:21 +01:00
lang_en_sl.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang_en_sv.txt Fix merge issues 2022-02-22 06:57:03 +01:00
lang_en.txt Change [um] to [μm] 2022-02-08 10:18:27 +01:00
lang-add.sh Update lang scripts using for loop for languages 2022-01-03 11:25:15 +01:00
lang-build.sh Merge branch 'MK3_3.11.0' into MK3_3.11.0 2022-02-12 23:01:02 +01:00
lang-check.py Add SK language 2022-02-10 19:01:04 +01:00
lang-check.sh MK3 3 9 0 missing translations (#2646) 2020-05-12 22:23:40 +02:00
lang-clean.sh MK3_3.11.0_Lang fixes (#3404) 2022-02-14 08:39:03 +01:00
lang-community.sh Update lang scripts using for loop for languages 2022-01-03 11:25:15 +01:00
lang-export.sh Add Swedish to use äöüß 2022-02-22 06:58:37 +01:00
lang-import.sh Replace 'åÅ' with 'aA' 2022-03-09 06:37:15 +01:00
progmem.sh Add new line at end of file 2022-02-03 08:08:28 +01:00
readme.txt New ML support - progmem.sh + readme.txt 2018-05-22 03:33:29 +02:00
textaddr.sh Add new line at end of file 2022-02-03 08:08:28 +01:00
translations.md MK3_3.11.0_Lang fixes (#3404) 2022-02-14 08:39:03 +01:00
update_lang.sh Add some documentation 2022-02-02 17:23:31 +01:00

Nova podpora vice jazyku ve firmware


Zmeny oproti stavajicimu frameworku:
1. Deklarace lokalizovanych textu primo v kodu, neni nutne udrzovat tabulky.
2. Zatim dvoj jazycna verze (en_cz, en_de atd). Moznost rozsirit na vicejazycnou (en_cz_de - pro MK2).
3. Moznost vyberu druheho jazyka ulozeneho v SPI flash (nebude zabirat misto v interni flash, pouze MK3).
5. Bash postbuild proces namisto perloveho skriptu + nastroje na spravu slovniku.

Popis:
Novy framework je trochu podobny jako znamy i18n20, ale sity na miru pro AVR atmega s ohledem na maximalni jednoduchost a usporu interni flashe.
Stringy ktere maji byt prelozene se deklaruji pomoci specialnich maker, zbytek obstara postbuild.
Vsechny lokalizovane texty se nachazi ve specialni sekci, v pripade AVR musi byt stringy umisteny v dolnich 64kB flash - tzv 'progmem'.
Po zbuildovani arduinem bude fungovat pouze anglictina, je treba spustit postbuild ktery na zaklade slovniku doplni data sekundarniho jazka a vytvori modifikovany hexfile.
Jedina data ktera je treba udrzovat jsou slovniky pro preklad. Jsou to textove soubory kde je vzdy sparovan anglicky text s prelozenym textem.
Kazdy text ve slovniku je jeden radek, muze obsahovat specialni znaky v hexadecimalni podobe (e.g. '\x0a'). Nasledujici radek je vzdy prelozeny text.
Tento jednoduchy format je zvolen proto aby bylo mozno slovniky a proces prekladu spravovat jen pomoci gitu a nekolika skriptu.

Pokud pridame nebo zmenime nejaky text v kodu, zmeni se po zbuildovani a spusteni nastroje 'update.sh' soubor lang_en_code.txt.
To je generovany soubor ktery obsahuje vsechny lokalizovane texty pouzite v kodu setridene podle abecedy.
V gitu uvidime zmenu kterou rucne preneseme do slovniku lang_en_xx.txt, zaroven vytvorime pozadavek na preklad ci korekturu pozadovaneho textu.
Pokud pridame nebo zmenime nejaky text ve slovnikach, zmeni se po spusteni nastroje 'update.sh' soubor lang_en_dict.txt.
Ten obsahuje vsechny lokalizovane texty ze slovniku (v anglictine), respektive mnozinu jejich sjednoceni.
V idealnim pripade by soubory lang_en_code.txt a lang_en_dict.txt mely byt totozne.
Pokud se zmeni slovnik, je treba znovu vygenerovat binarni soubory lang_en_xx.bin.


Pouziti v kodu, priklady:

1. deklarace lokalizovaneho textu v kodu - makro '_i':
puts_P(_i("Kill all humans!")); //v cz vypise "Zabit vsechny lidi!"

2. deklarace lokalizovaneho textu jako globalni konstanty - makro 'PROGMEM_I1' a 'ISTR':
const char MSG_PREHEAT[] PROGMEM_I1 = ISTR("Preheat"); //deklarace
puts_P(get_translation(MSG_PREHEAT)); //v cz vypise "Predehrev"

3. fukce get_translation - zkratka makro '_T':
puts_P(_T(MSG_PREHEAT)); //v cz vypise "Predehrev"

4. deklarace lokalizovaneho textu jako lokalni promenne - makro '_I':
const char* text = preheat?_I("Preheat"):_I("Cooldown");
puts_P(_T(text)); //v cz vypise "Predehrev" nebo "Zchlazeni"

5. deklarace nelokalizovaneho textu - makro 'PROGMEM_N1' a '_n' nebo '_N':
const char MSG_MK3[] PROGMEM_N1 = "MK3"; //deklarace
const char* text = _n("MK3");
 nebo
const char* text = _N("MK3");