jazyková proměnná v javascriptu

Ernst
28. dub 2021 00:22 #144258
zobrazuji jazykovou proměnnou v js takto:
Joomla.JText._( 'MOJE_PROMENNA')

lze do toho zahrnout proměnnou, tedy udělat to obdobně jako v php
 JText::sprintf( 'MOJE_PROMENNA',$prom)

Lze to vůbec?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
28. dub 2021 02:40 #144259
Javascript ani Joomla.JText nic jako sprintf nezná. Nejjednodušší řešení je použít replace
Joomla.JText._( 'MOJE_PROMENNA').replace('%s', promenna);
popř. pokud to je jazyková konstanta jen pro javascript a ne pro PHP, použít něco jiného než %s.

Případně existuje JS verze sprintf , ale to mi přijde trochu s kanónem na vrabce...
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
28. dub 2021 07:21 - 28. dub 2021 07:21 #144260
Pro zobrazení Jazykové proměnné v JS existují Joomla pravidla dle dokumentace (včetně %s characters):
docs.joomla.org/J3.x:Adding_JavaScript_and_CSS_to_the_page

Passing language strings to Javascript
There are cases when you may want to output an error message in your JavaScript code and want to use the Joomla mechanism of language strings. You could manage this by using addScriptOptions to pass down each language string you need, but Joomla provides a more succint solution. To pass a language string to JavaScript do in your PHP code, for example,

JText::script('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'); Then in your JavaScript code you can do:

var message = Joomla.JText._('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'); to obtain in the user's language the text message associated with the language constant. Obviously certain language strings have embedded %s characters, so in your JavaScript code you will have to handle that, eg using an external JavaScript sprintf library or string replace, etc.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
28. dub 2021 09:56 #144261
díky moc, zkoušel jsem také js funkci sprintf, ale jinou a asi nebyla funkční a to replace mě nenapadlo.

Fakt se to řešení nedalo ani vygooglit :) :)

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
28. dub 2021 10:13 #144262

eg using an external JavaScript sprintf library or string replace, etc.


Google joomla language constant in javascript
4 odkaz

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
28. dub 2021 10:39 - 28. dub 2021 10:52 #144263
Možná trochu jiné řešení, ale já občas používám i pro jazyk stejný systém jako pro všechny proměnné.

Tedy v případě, že proměnnou mám v PHP a potřebuji dostat do JS PHP proměnnou.

Příklad:

PHP:
JFactory::getDocument()->addScriptOptions('phLang', array(
			'COM_PHOCACART_CLOSE' => JText::_('COM_PHOCACART_CLOSE') . $klidneNejakaPromenAtd)
		);
JFactory::getDocument()->addScriptOptions('phVars', array('url' => JURI::base(true).'/index.php?option=com_phocacart&format=json&'. JSession::getFormToken().'=1'));

Javascript:
function nejakaJSFunkce() {
   
   var phVars = Joomla.getOptions('phVars');
   var phLang = Joomla.getOptions('phLang');

V PHP si jazykovou proměnnou nebo normální proměnnou sestavím dynamicky podle potřeb a tímto způsobem přesunu z PHP do Javascriptu, pak k ní normálně přistupuju
alert(phVars['url']);
alert(phLang['COM_PHOCACART_CLOSE']);

Tedy snažím se vyhnout sestavování v JS a pokud to jde sestavit v PHP, sestavím v PHP a pošlu do JS jako kompletní sestavený string. Samozřejmě použitelné jen, pokud proměnná není vyloženě JS proměnná sestavovaná v JS.

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
28. dub 2021 13:57 #144265

Tedy snažím se vyhnout sestavování v JS a pokud to jde sestavit v PHP, sestavím v PHP a pošlu do JS jako kompletní sestavený string. Samozřejmě použitelné jen, pokud proměnná není vyloženě JS proměnná sestavovaná v JS.


Tady jde o proměnnou v js, ale i tak děkuji za tenhle návod

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.