Open VladaHejda opened 9 years ago
Při použití datábáze a dodaného skriptu (NetteDatabase.createTable.namespaced.sql) je problém už u textů delších než 255 znaků. Na vině je sloupec localization.translation
a jeho maximální délka. Osobně jsem to vyřešil změnou z varchar
na text
Na vině je kromě sloupce localization.translation
také sloupec localization_text.text
- stejně jako petrickkusebauch jsem oba sloupce změnil na text
, pak ale přijde problém s UNIQUE
indexem v tabulce localization_text
. Vytvořil jsem tedy další sloupec localization_text.hash
, kde se ukládá md5 hash ze sloupců localization_text.ns
a localization_text.text
. Na tento sloupec jsem pak nastavil UNIQUE
index.
Pro vytváření md5 hashe jsem si v DB vytvořil triggery
Tabulka pak vypadá asi takhle:
CREATE TABLE `localization_text` (
`id` int(1) UNSIGNED NOT NULL AUTO_INCREMENT,
`ns` varchar(24) NULL,
`text` text NOT NULL,
`hash` varchar(32) NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE (`hash`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_bin COMMENT='default texts for translations';
DELIMITER ;;
CREATE TRIGGER `LocalizationTextInsertHash` BEFORE INSERT ON `localization_text` FOR EACH ROW
SET NEW.hash = MD5(CONCAT(NEW.ns, NEW.text));;
CREATE TRIGGER `LocalizationTextUpdateHash` BEFORE UPDATE ON `localization_text` FOR EACH ROW
SET NEW.hash = MD5(CONCAT(NEW.ns, NEW.text));;
DELIMITER ;
Ahoj, doufám že ti nevadí že ti rovnou tykám, ale jsem nettař z neťácký komunity, tak snad to nevadí, kdyby jo, řekni si.
via michal.odchazel@litea.cz
Chtěl jsem ti jednak poděkovat za LiveTranslátor, je to super věc, ale ač nerad, objevil jsem jeden bug.
Teď na novém projektu ho využíváme a máme tam Nette 2.2.2 a tvůj LiveTrasnlátor 1.0.0-RC. Chyba nastává, když překládáme text delší než ~700 znaků (nevím úplně přesně). Pak mi to vrátí 101:ERR_CONNECTION_RESET.
Jenom jsem ti o tom chtěl říct, abys o tom věděl. Samozřejmě není problém ten řetězec rozdělit.
Tak ti přeji pěkný den.
Michal Odcházel, jednatel Litea Solution s.r.o. 777030589