Skip to content

Prekladanie webu

Michal Hozza edited this page Jan 24, 2016 · 7 revisions

Ciel: Web a vsetky templaty by mali pouzivat ako default jazyk anglictinu. Vsade kde sa da, by mali byt translation tagy a na vsetko by mal byt preklad do slovenciny.

Aktualny stav: vacsina nasich templatov je poslovensky, obcas mame aj v kode nejake textove konstanty bez prekladu.

Tento manual by mal pomoct prekopat web z aktualneho stavu do cieloveho stavu.

Čo nemusíme prekladať (zatiaľ) -- stačí nám poslovensky

  • administrátorské rozhranie
  • ostatné veci, ktoré vidia iba vedúci
  • url-ky (asi, ak má niekto iný názor, môžme sa pobiť)

Vyrabanie prekladovych suborov

Prekladanie funguje tak, že sa originálne veci sa píšu v angličtine a potom sa vygeneruje prekladový súbor, ktorý obsahuje preklad anglickeho výrazu na slovenský.

Prekladovy subor sa generuje tak, že v adresári trojsten spustíme django-admin makemessages. To vyrobí súbor locale/sk/LC_MESSAGES/django.mo. Toto je ľudsky čitateľný súbor, ktorý zjednodušene obsahuje dvojice originálny text a preklad. Veľa vecí už má podporu prekladania a tak tento súbor ani na začiatku nebude prázdny a obsahuje veľa príkladov, ako generovať preklady.

Potom treba preklady skompilovať, čím sa vyrobí súbor locale/sk/LC_MESSAGES/django.po. Tento súbor je binárny a nie je vhodný na čítanie človekom alebo priamu úpravu, ale django používa práve tento súbor aby zobrazovalo texty správne.
Kompiluje sa to takto: django-admin.py compilemessages, opäť v adresári trojsten.

Na to aby sa dal pozrieť výsledok, je ešte treba reštartovať server. Ak máš spustený development server, môžeš ho ukončiť pomocou Ctrl+C a spustiť nový pomocou ./manage.py runserver v root adresári repozitára.

Templaty

Pre zaciatok by som zacal s prekladom templatov, lebo toho je najviac: Studijny text k tomu je tu: https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#internationalization-in-template-code --- cast o templatoch.

Slovensky text v templatoch treba nahradit anglickym a obalit prislusnymi {% trans %} alebo {% blocktrans %} tagmi.

Text v kóde

Nemalo by ho byť veľa, ale občas sa tomu nedalo vyhnúť. Vačšina takýchto textov by sa mala nachádzať vo views.py alebo forms.py v jednotilvých appkách.

Jednoduché texty

  1. treba pridať riadok: from django.utils.translation import ugettext_lazy as _ do importov, konkretne do sekcie kde su django importy, idealne zachovavajuc abecedne poradie importov.

  2. stringy treba obaliť _( ... ) napríklad ak mám string 'Hello', tak z neho spravím _('Hello').

Pluralizácia

Umožnuje mať rôzne preklady podľa počtu. Máme nastavenú slovenskú pluralizáciu, ktorá umožňuje rôzny tvar pre počet 1, 2-4 a 0, 5+.

  1. Pokial treba pluralizaciu, treba pridať import from django.utils.translation import ungettext_lazy.

  2. Stringy treba strčiť do funkcie ungettext_lazy, ktoeá má 3 parametre: singulár, plurál a počet. napr. ungettext_lazy('%(count)d day', '%(count)d days', count)

pozn.: niekedy máme ungettext_lazy importované ako _ vtedy použijeme podčiarkník ako názov funkcie.

Javascript

Zatiaľ nepodporujeme. Ak bude treba, tak nejak poriešime.

Čo s hotovým prekladom

Ak je preklad, alebo časť hotová, treba vyrobit PR do webu niekto to reviewne a ak to akceptuje, tak sa to moze mergnut. Prekladove PR by mali mat label translation a nemali by obsahovat nic ine okrem prekladania. Ak robíš zmeny v .py súboroch, je treba pre istotu review od vývojára. Pri templatoch stačí ak to reviewne aj iný prekladateľ. Veci je dobré commitovať po malých ucelených častiach. Aj pullrequesty je dobré robiť menšie -- ľahšie sa to reviewuje a urýchľuje to proces. Navyše hlavne zo začiatku, ak ešte s tým nemáš skúsenosti, je dobré začať s malým PR, kde ti reviewer povie čo robíš zle, čo potom prerobíš ľahšie ako keby si urobil ozrutný PR a potom zistil, že je to celé zle a musíš to spraviť od začiatku.

Tipy

  • Pozor na všelijaké whitespace vrámci tagov, objavia sa v prekladových súboroch. Veci treba písať konzistentne.
  • Ak sa niečo dá reusovať, tak je dobré to reusovať.
  • Je dobré používať translation comments aj v kóde, aj v templatoch. Aktuálne to nepoužívame vôbec, ale nové veci by ich mali obsahovať aspoň tam kde je ich aspoň trošku treba.
  • Ak si narazil na niečó čo tu nie je, tak to sem dopíš, aby aj ostatní vedeli. Takisto oprav akúkoľvek chybu tu uvidíš.

Známe problémy

  • Vygenerovanie prekladového súboru zakomentuje niektoré preklady, ktoré boli do súboru dané manuálne. Tieto preklady môžu pre začiatok zostať zakomentované, ale predtým ako sa preklad stane súčasťou ostrého webu, treba ich vrátiť.
Clone this wiki locally