Funguje pouze na PHP 7.3+.
Viz. projekty dogtrace (starší admin), dogtracegps (nový admin)
dogtrace commity a1f65aba, 73373a16, b1f5ad60 a cf3b45a0
dogtracegps commity 9c92d631 a 4676f5cc
Překopírujeme
- Adresář app/Utils/DeepL
- javascriptové soubory,
- scss soubory
- zkontrolovat, že tam je incredible select v adminu
- config.neon (cca 4 řádky)
Popřidáváme do presenterů:
- BasePresentery (ZeroAdmin a Admin)
- MenuPresenter
- NastaveniPresenter
- ProductPresenter
- TranslationPresenter
Upravíme šablony:
- @layout.latte v Adminu
- default.latte v Zeroadminu Translations
- edit.latte Product v Adminu
- item.latte Menu v Adminu
- mutace.latte Nastaveni v Adminu
- prave_menu.latte Admin Partials
Přes composer doinstalujeme deeplcom/deepl-php:composer require deeplcom/deepl-php
Dodáme hlášky
INSERT INTO `settings_config` (`id`, `name`, `value`, `hidden`, `type`, `note`, `visible`) VALUES
('DEEPL_API_KEY', 'API klíč pro DeepL překladač', '', 0, 'input', '', 0),
('TRANSLATIONS_SOURCE_LANGUAGE', 'ID zdrojového jazyku pro překlady', '1', 0, 'input', '', 0),
('MENUITEM_SUPPLEMENTS_TO_TRANSLATE', 'Supplementy menuitemu, které se přeloží při DeepL překladu', '1;text\n9;html', 0, 'textarea', 'Každý řádek obsahuje dvojici: <supplement_id> ; text / html', 0),
('PRODUCT_SUPPLEMENTS_TO_TRANSLATE', 'Supplementy produktu, které se přeloží při DeepL překladu', '26;text', 0, 'textarea', 'Každý řádek obsahuje dvojici: <supplement_id> ; text / html', 0);
Přidáme potřebné do kompilace webpack.mix.js
A otestujeme s vlastním API klíčem od DeepL (hlavně překlad produktu a menuitemu, tam bývá nejvíce problémů)
Na jaké chyby si dát pozor (každý web je trochu jiný, takže můžou nastat problémy, i když je vše zkopírováno správně) :
- Je to napojené na edit funkce produktu a menuitemu, což jsou hooodně nepěkné funkce, takže je možné, že bude potřeba přidat nějaké políčko do pole, co se posílá těmto funkcím.
- Pokud se bude kopírovat na jinou verzi PHP (jako bylo třeba poprvé ez 7.4 na 8.1) tak se může stát, že nějaké interní funkce budou vracet např null místo false. Toto se například stalo u nette databází.
- Tohle rozšíření využívá strict types a většina adminu nejsou vůbec striktní, takže se může stát že se místo int posílá do funkce '5' a nastane problém.