VladaHejda / LiveTranslator

LiveTranslator is tool for Nette Framework that enables translation of your texts via panel in debug bar.
14 stars 14 forks source link

translation text longer than ~700 chars bug #9

Open VladaHejda opened 9 years ago

VladaHejda commented 9 years ago

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

patrickkusebauch commented 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

miloslavkostir commented 8 years ago

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 ;