[addon translator] Translator

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jasir
Člen | 746
+
0
-

Nevím, jestli je to ten správný thread, kdyžtak prosím o smazání, ale mám bug report (alespoň myslím) – v metodě translate je 2× array_shift(), mělo by býť jen 1x:

<?php
	public function translate($message, $count = 1)
	{
		$message = (string)$message;
		if (!empty($message) && isset($this->dictionary[$message])) {
			$word = $this->dictionary[$message];

			$s = preg_replace('/([a-z]+)/', '$$1', "n=$count;" . $this->meta['Plural-Forms']);
			eval($s);
			$message = $word->translate($plural);
		}

		$args = func_get_args();
		if (count($args) > 1) {
			array_shift($args);
			array_shift($args);  /*** BUG ??? ***/
			$message = vsprintf($message, $args);
		}
		return $message;
	}
?>
timbulko
Člen | 85
+
0
-

Myslím si že nepôjde o bug. 2× array_shift() len odstráni z $args prvé dve premenné (message a count), ktoré sú volané priamo.

Ale myslím, že elegantnejšie riešenie by bolo:
array_splice($args, 0, 2);

jasir
Člen | 746
+
0
-

timbulko napsal(a):

Myslím si že nepôjde o bug. 2× array_shift() len odstráni z $args prvé dve premenné (message a count), ktoré sú volané priamo.

Ale myslím, že elegantnejšie riešenie by bolo:
array_splice($args, 0, 2);

Je to bug. Pokud zavolám translate("%d messages",10);, se dvěma array_shift(), spadne to na ‚Script vsprintf(): Too few arguments‘. S jedním to šlape. Koukal jsem se do Datagridu, Roman vlastně tuhle featuru nikde nepoužívá.

Editoval jasir (23. 5. 2009 12:31)

romansklenar
Člen | 655
+
0
-

jasir napsal(a):

Pokud zavolám translate("%d messages", 10)

Dík za report, já to používal v datagridu jinak – druhý parametr byl jen pro předání počtu. Takhle je to lepší a použitelnější, máš pravdu. Ten druhý array_shift si klidně smaž, opravím to v translatoru i datagridu při dalším commitu.

Editoval romansklenar (23. 5. 2009 17:14)

Inza
Člen | 330
+
0
-

Hele já mám dotaz ohledně názvu tohoto addonu – název Translator mi totiž dělá bordel v dokumentaci… Co když někdo do budoucna vytvoří nějaký další který bude využívat třeba jinou technologie než gettext – co takhle to pojmenovat nějak méně obecně a přesněji? třeba GettextTranslator, nebo GTTranslator, nebo jen GTranslator? Nebo nějak zcela jinak, ale jinak než jen Translator?

A ideální by bylo v případě, že byste vymysleli nějaký nový název, abyste ten název změnili i v Nette\Extras dokumentaci a v dokumentaci toho Translatoru;-) – A pak mi sem napsali, že je to done;-) – nebo ještě lépe to napsali do milníků, nebo přímo do diskuze k té stránce což je vlastně tato stránka… – jo ale vlastně když to přejmenujete, tak to bude jiná stránka.. nějak jsem se do toho zamotal… prostě to nějak polaďte;-)

romansklenar
Člen | 655
+
0
-

Je to přesunuto na https://componette.org/search/?q=gettext-translator.

Mělo by stačit, aby autor prvního příspěvku přejmenoval thread na: [page extras/gettext-translator] Gettext Translator a ono by se to mělo IMHO propojit. Ale myslím, že se vůbec nic nestane, když se celý thread smaže a začne nový.

Inza
Člen | 330
+
0
-

Ok perfektní práce Romane, díky moc. Já jdu už spát… tak přeju dobrou noc. Tomik udělal RC Nettecastu – je to nice…