readme.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. Nova podpora vice jazyku ve firmware
  2. Zmeny oproti stavajicimu frameworku:
  3. 1. Deklarace lokalizovanych textu primo v kodu, neni nutne udrzovat tabulky.
  4. 2. Zatim dvoj jazycna verze (en_cz, en_de atd). Moznost rozsirit na vicejazycnou (en_cz_de - pro MK2).
  5. 3. Moznost vyberu druheho jazyka ulozeneho v SPI flash (nebude zabirat misto v interni flash, pouze MK3).
  6. 5. Bash postbuild proces namisto perloveho skriptu + nastroje na spravu slovniku.
  7. Popis:
  8. Novy framework je trochu podobny jako znamy i18n20, ale sity na miru pro AVR atmega s ohledem na maximalni jednoduchost a usporu interni flashe.
  9. Stringy ktere maji byt prelozene se deklaruji pomoci specialnich maker, zbytek obstara postbuild.
  10. Vsechny lokalizovane texty se nachazi ve specialni sekci, v pripade AVR musi byt stringy umisteny v dolnich 64kB flash - tzv 'progmem'.
  11. Po zbuildovani arduinem bude fungovat pouze anglictina, je treba spustit postbuild ktery na zaklade slovniku doplni data sekundarniho jazka a vytvori modifikovany hexfile.
  12. Jedina data ktera je treba udrzovat jsou slovniky pro preklad. Jsou to textove soubory kde je vzdy sparovan anglicky text s prelozenym textem.
  13. Kazdy text ve slovniku je jeden radek, muze obsahovat specialni znaky v hexadecimalni podobe (e.g. '\x0a'). Nasledujici radek je vzdy prelozeny text.
  14. Tento jednoduchy format je zvolen proto aby bylo mozno slovniky a proces prekladu spravovat jen pomoci gitu a nekolika skriptu.
  15. Pokud pridame nebo zmenime nejaky text v kodu, zmeni se po zbuildovani a spusteni nastroje 'update.sh' soubor lang_en_code.txt.
  16. To je generovany soubor ktery obsahuje vsechny lokalizovane texty pouzite v kodu setridene podle abecedy.
  17. V gitu uvidime zmenu kterou rucne preneseme do slovniku lang_en_xx.txt, zaroven vytvorime pozadavek na preklad ci korekturu pozadovaneho textu.
  18. Pokud pridame nebo zmenime nejaky text ve slovnikach, zmeni se po spusteni nastroje 'update.sh' soubor lang_en_dict.txt.
  19. Ten obsahuje vsechny lokalizovane texty ze slovniku (v anglictine), respektive mnozinu jejich sjednoceni.
  20. V idealnim pripade by soubory lang_en_code.txt a lang_en_dict.txt mely byt totozne.
  21. Pokud se zmeni slovnik, je treba znovu vygenerovat binarni soubory lang_en_xx.bin.
  22. Pouziti v kodu, priklady:
  23. 1. deklarace lokalizovaneho textu v kodu - makro '_i':
  24. puts_P(_i("Kill all humans!")); //v cz vypise "Zabit vsechny lidi!"
  25. 2. deklarace lokalizovaneho textu jako globalni konstanty - makro 'PROGMEM_I1' a 'ISTR':
  26. const char MSG_PREHEAT[] PROGMEM_I1 = ISTR("Preheat"); //deklarace
  27. puts_P(get_translation(MSG_PREHEAT)); //v cz vypise "Predehrev"
  28. 3. fukce get_translation - zkratka makro '_T':
  29. puts_P(_T(MSG_PREHEAT)); //v cz vypise "Predehrev"
  30. 4. deklarace lokalizovaneho textu jako lokalni promenne - makro '_I':
  31. const char* text = preheat?_I("Preheat"):_I("Cooldown");
  32. puts_P(_T(text)); //v cz vypise "Predehrev" nebo "Zchlazeni"
  33. 5. deklarace nelokalizovaneho textu - makro 'PROGMEM_N1' a '_n' nebo '_N':
  34. const char MSG_MK3[] PROGMEM_N1 = "MK3"; //deklarace
  35. const char* text = _n("MK3");
  36. nebo
  37. const char* text = _N("MK3");