Autor | Zpráva | ||
---|---|---|---|
alt64 Profil * |
#1 · Zasláno: 25. 1. 2012, 12:39:50
Ahoj, v jedne apliakci vyuzivajici JQM chci pouzit plugin (http://code.google.com/p/jquery-utils/wiki/I18N) pro preklad app do vice jazyku.
Narazil jsme ale na problem, pokud zapisi: <div data-role="header"> <h1><script type="text/javascript">document.write($.i18n('appTranslate', 'footer')); </script></h1> </div> Ale pokud pridam to same do a href tagu <div data-role="content"> <ul data-role="listview"> <li><a href="#registerPage"><script type="text/javascript">document.writeln('footer'); </script></a></li> <li><a href="#loginPage"><script type="text/javascript">document.writeln('footer'); </script></a></li> </ul> </div> Debugger zadnou chybu nehlasi. Otazka je: Jak to ma byt spravne, nebo zda existuje nejakey jiny i18n plugin, ktery funguje dobre? (http://the-m-project.org jsem zkousel). Diky moc za kazdou radu. |
||
_es Profil |
#2 · Zasláno: 25. 1. 2012, 12:49:02
alt64:
„<a href="#registerPage"><script type="text/javascript">document.writeln('footer'); </script></a>“ To bude, pri funkčnom JS, to isté ako: <a href="#registerPage">footer </a> |
||
alt64 Profil * |
#3 · Zasláno: 25. 1. 2012, 13:15:28
Prave to bych cekal , ze by to melo byt to same jako
<a href="#registerPage">footer </a> Ale neni, vypise to jen a pouze text, zadny odkaz. |
||
Alutom Profil |
Tak to nevím, já jsem si ten tvůj kód zkopíroval a funguje mi bez problému.
(tady to mám) |
||
_es Profil |
#5 · Zasláno: 25. 1. 2012, 13:27:39
alt64:
„vypise to jen a pouze text, zadny odkaz.“ Je to odkaz s textom footer na kotvu s názvom registerPage , čo iné by to malo byť?
|
||
Chamurappi Profil |
#6 · Zasláno: 25. 1. 2012, 13:34:11
Reaguji na _es:
Je pravděpodobné, že jQuery Mobile tahá všechno AJAXem, a je asi možné, že oblíbený problém s nevyhodnocováním <script> ů v innerHTML přečůrávají tvůrci frameworku tím, že skripty najdou regulárem a eval ují. Tím by šlo vysvětlit popisované symptomy.
|
||
alt64 Profil * |
#7 · Zasláno: 25. 1. 2012, 14:17:30
Chamurappi
Je nejaky zpusob, jak to osetrit? Nechce se mi smirit s tim ze by aplikace v JQM nemohla byt lokalizovana. |
||
Chamurappi Profil |
#8 · Zasláno: 25. 1. 2012, 14:41:37
Reaguji na alta64:
Je nějaký důvod, proč by se překládání mělo dělat na straně prohlížeče? |
||
alt64 Profil * |
#9 · Zasláno: 25. 1. 2012, 15:14:38
Chamurappi:
Ano, je to mobilni aplikace, nema zadnou serverovou cast. |
||
_es Profil |
#10 · Zasláno: 25. 1. 2012, 16:05:40
Akosi stále nerozumiem, aký má význam dávať do kódu
<script type="text/javascript">document.write('footer'); </script> namiesto obyčajného textu footer .
|
||
alt64 Profil * |
#11 · Zasláno: 25. 1. 2012, 16:39:49
_es:
Pac v realu tam bude neco k prekladu, viz document.write($.i18n('appTranslate', 'string_k_prekladu')); Jde o to , ze s document.write v <a> tagu se to rozsype... |
||
_es Profil |
#12 · Zasláno: 25. 1. 2012, 16:47:26
alt64:
> Pac v realu tam bude neco k prekladu, viz > document.write($.i18n('appTranslate', 'string_k_prekladu')); A ako sa to tam dostane? Ak to nebude normálne v kóde stránky, tak pôjde asi o tento problém, čo už bolo naznačené v [#6]. A ak ide o nejakú dynamickú hodnotu v JS po načítaní stránky, tak to treba do stránky pridať inak. |
||
alt64 Profil * |
#13 · Zasláno: 25. 1. 2012, 17:40:21
Aha, takze jsem v cudu, jelikoz JQM pouziva urcite Ajax na vsechno co de.
|
||
Chamurappi Profil |
#14 · Zasláno: 25. 1. 2012, 17:53:44
Reaguji na alta64:
Můžeš si JQM upravit, ne? Zaveď si vlastní formát zápisu překládaných řetězců, najdi si místo, kde se zpracovává AJAXem stažený vstup, a uprav ho tak, aby se navíc provedl nějaký replace zpracovávající ten tvůj formát.
|
||
alt64 Profil * |
#15 · Zasláno: 25. 1. 2012, 19:24:29
Chamurappi:
Na to se bohuzel necitim. Jen bych chtel podotknout, ze ten zapis : document.write($.i18n('appTranslate', 'string_k_prekladu')); JE natvrdo v kodu. Nedoplnuje se dynamicky, ma to na neco u me vliv? |
||
Chamurappi Profil |
#16 · Zasláno: 25. 1. 2012, 20:09:24
Reaguji na alta64:
„ten zapis […] JE natvrdo v kodu“ Upravit ho můžeš? Nebo už ho máš ve stovkách souborů? Parametr 'appTranslate' tam máš fixně?
To, jestli se kód opravdu načítá AJAXem, bys mohl zjistit přidáním následujícího skriptu do hlavní stránky: var backup = $.ajax; $.ajax = function(param) { alert("AJAX: " + param.url); return backup.apply(this, arguments); }; |
||
alt64 Profil * |
#17 · Zasláno: 25. 1. 2012, 23:24:12
Chamurappi:
Upravit ho muzu, ono v JQM jso uvsechny obrazovky vpodstete soucast jednoho html souboru, misto odkazu page2.html se tam pouziva zapis a href="#page2" Kod jsem vlozil pred jakykoliv predchozi kod a nic se nestalo. |
||
joe Profil |
#18 · Zasláno: 26. 1. 2012, 01:24:07
alt64:
Je to jen nápad a asi bys to musel upravit (pokud bys na to tak šel), ale já bych překlady možná řešil trochu jinak, než s použitím té knihovny, kde je potřeba psát document.write(...) a nebo si napsat zkratku (která je výhodnější). <li><a href="#loginPage" data-i18n="footer">Výchozí text</a></li> Po načtení bych prošel elementy, co používají atribut data-i18n (jeho hodnota je klíč k lokalizované hodnoty) a jim nastavil innerHTML. Jako výhodu vidím v tom, že je možné změnit jazyk v celé aplikaci okamžitě, což si u té knihovny, kterou používáš v tuhle chvíli nedovedu představit, ale třeba to také jde. Navíc není potřeba dalších knihoven a není nutné využívat document.write , tedy pokud tam není nějaký jiný problém. Ještě jsem se příliš s mobily nezabýval, ale pokud tam funguje jQuery, tak by v tom neměl být problém.
|
||
Časová prodleva: 13 let
|
0