Raju has mentioned it before about how to do this. as far as i understand, i think he says that generate swf's for each stylesheet and then use the related swf depend on the language selection, is it right ? If it is, isnT this so laborious, bec. in this case i need to change the stylesheet src in each lzx on my application. Thanks Cem
2010/2/16 cem sonmez <[email protected]> > Today, I have looked at the css page of developer doc [1] and decided to > use the css style:) Bec. it looks more lucid than using dataset. > > my css' are : > *turkish.css* > --------------------- > [text_id="1"] { > string: "giriş"; > } > [text_id="2"] { > string: "kaydol"; > } > [text_id="3"] { > string: "gönder"; > } > *english.css* > --------------------- > [text_id="1"] { > string: "login"; > } > [text_id="2"] { > string: "register"; > } > [text_id="3"] { > string: "submit"; > } > > and i use one of it in my class like > > <canvas debug="true"> > <stylesheet src="turkish.css"/> > <simplelayout /> > <button>change css > <handler name="onclick"> > * <!--how to change the stylesheet here during runtime-->* > </handler> > </button> > <button text="$style{'string'}"> > <attribute name="text_id" value="3"/> > </button> > </canvas> > > as i commented in the canvas code, is it possible to change the stylesheet > src during runtime? > Thanks in advance > > [1] - http://www.openlaszlo.org/lps4.7/docs/developers/css.html > > > Cem > > 2010/2/16 P T Withington <[email protected]> > >> I never get datasets myself. Just to verify that the CSS way works, I did >> test the following: >> >> <canvas layout="axis: y; spacing: 5"> >> <stylesheet> >> i18nbutton[name='submit'] { text: "gönder"; } >> i18nbutton[name="reset"] { text: "reset"; } >> </stylesheet> >> >> <class name="i18nbutton" extends="button"> >> <attribute name="text" style="text" /> >> </class> >> >> <i18nbutton name="submit" /> >> <i18nbutton name="reset" /> >> >> </canvas> >> >> and it works for me. >> >> On 2010-02-15, at 19:01, cem sonmez wrote: >> >> > i am sorry, maybe this thread has become so long bec. of me but donT >> > understand why this happens >> > >> > <canvas> >> > <dataset name="localized"> >> > <string name="submit" value="gönder"/> >> > <string name="reset" value="reset"/> >> > </dataset> >> > >> > <button text="$path{'localized:/stri...@name=\'submit\']/@value'}" /> >> > >> > </canvas> >> > >> > I am just trying this code and see nothing. >> > >> > Cem >> > >> > 2010/2/16 P T Withington <[email protected]> >> > >> >> The value of the expression in the $path{} statement needs to be a >> string, >> >> so I think you would need to say: >> >> >> >> <button text="$path{'localized:/stri...@name=\'submit\']/@value'}" >> >> >> >> but I have not tested this. >> >> >> >> On 2010-02-15, at 18:38, cem sonmez wrote: >> >> >> >>> jamesr, I have used your same notation, but i m getting error >> >>> *Syntax error: the token ":" was not expected at this position.* >> >>> I have made lots of changes at the $path expression. Still nothing >> >> happens >> >>> Another error that i m getting >> >>> *Lexical error. The source location is for the element that contains >> the >> >>> erroneous script. The error may come from an unterminated comment.* >> >>> Do you have an idea why this happens? Did you used this code snippet >> >> before >> >>> you post it? >> >>> And also does anyone have an idea about this issue? >> >>> >> >>> Regards >> >>> Cem >> >>> >> >>> 2010/2/15 cem sonmez <[email protected]> >> >>>> >> >>>> Yes i have seen $path before, but i have never used it for any >> >> constraint. >> >>> $path usage has been explained well at [1]. >> >>>> I will take a look at it again and try this form. >> >>>> Thanks a lot >> >>>> Cem >> >>>> >> >>>> [1] - >> >>> >> >> >> http://www.openlaszlo.org/lps4.7/docs/developers/databinding.html#d0e96468 >> >>>> >> >>>>> 2010/2/15 jamesr <[email protected]> >> >>>>>> >> >>>>>> Sure! as PT mentioned, there may be overhead for using the $path >> >> method >> >>> i'll direct you toward, for very large applications. There are a few >> >>> manager/registry based ways around this overhead, no problem, but the >> >>> conversation is out of scope to your direct question to get into -- in >> >> this >> >>> email. >> >>>>>> >> >>>>>> Have you ever used the $path{} form of constraints? they take a >> >>> dataset:datapath pair and bind to a specific location in a dataset, >> which >> >>> will update when the dataset changes. From your code snippets i'm >> >> guessing >> >>> you haven't seen them. >> >>>>>> >> >>>>>> if you have a dataset thus, >> >>>>>> >> >>>>>> <dataset name="localized"> >> >>>>>> <string name="submit" value="(submit in another language)"/> >> >>>>>> <string name="resest" value="(reset in another language)"/> >> >>>>>> </dataset> >> >>>>>> >> >>>>>> then you can set up a path constraint by saying, >> >>>>>> >> >>>>>> <button text="$path{localized:/stri...@name='submit']/@value}" >> >>>>>> >> >>>>>> and this will *find* the string node with name "submit" (be sure to >> >> have >> >>> unique names or you'll get mulitple nodes back and the expression will >> be >> >>> invalid) and use its value attribute as the text for the button. >> >>>>>> >> >>>>>> more info is in the laszlo docs... i don't have a link to it handy, >> >>> sorry >> >>>>>> >> >>>>>> -j >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> cem sonmez wrote: >> >>>>>>> >> >>>>>>> Thanks all for your replies. >> >>>>>>> But i just can say that i am inexperienced about css. So all along >> i >> >>> have thought to use dataset. The problem is to change the texts >> >> dynamically >> >>> when i set the datapath's src attribute during runtime. >> >>>>>>> But as you said ptw, itS more about skinning, css is more >> convenient >> >> to >> >>> use. I will look at it as well. >> >>>>>>> For the dataset usage. It may looks like : >> >>>>>>> >> >>>>>>> <dataset name="dset" src="words.xml" /> >> >>>>>>> <datapointer id="dpointer" xpath="dset:/language"> >> >>>>>>> <method name="getMessage" args="textId"> >> >>>>>>> this.setAttribute('xpath', 'dset:/language'); >> >>>>>>> this.selectChild(); >> >>>>>>> do { >> >>>>>>> if (this.xpathQuery('@id') == textId) { >> >>>>>>> var message = this.xpathQuery('value/text()'); >> >>>>>>> if ($debug) >> >>>>>>> Debug.write("datapointer : " + message); >> >>>>>>> return message; >> >>>>>>> } >> >>>>>>> } while (this.selectNext()); >> >>>>>>> </method> >> >>>>>>> </datapointer> >> >>>>>>> >> >>>>>>> and i also can use it >> >>>>>>> <button name="button1" text="${dpointer.getMessage(1)}" /> >> >>>>>>> >> >>>>>>> I havenT just tried, but the problem is going to occur when i want >> to >> >>> change the dataset src at runtime. jamesr, the way that u mentioned >> likes >> >>> mine. Can you instruct a bit more please. >> >>>>>>> >> >>>>>>> thanks all again . >> >>>>>>> Kind regards >> >>>>>>> Cem >> >>>>>>> >> >>>>>>> 2010/2/15 P T Withington <[email protected] <mailto:[email protected]>> >> >>>>>>> >> >>>>>>> Using a dataset is an equally valid approach, but I think it was >> >>>>>>> tried and found to require too much overhead. Of course, if CSS >> >>>>>>> is made dynamic, perhaps it will have equivalent overhead. >> >>>>>>> >> >>>>>>> Perhaps the reason some people think of CSS first is because it >> >>>>>>> seems i18n is like "skinning" or styling your app. >> >>>>>>> >> >>>>>>> On 2010-02-15, at 12:09, jamesr wrote: >> >>>>>>> >> >>>>>>>> Would it not be more expedient to write a class, called perhaps >> >>>>>>> localtext, that takes a single field to index inside of a dataset >> >>>>>>> wherein a given real-world language sentence is kept, so that by >> >>>>>>> changing datasets you change all displayed localized text? >> >>>>>>>> >> >>>>>>>> Why use CSS? >> >>>>>>>> >> >>>>>>>> P T Withington wrote: >> >>>>>>>>> There are two improvements targeted for 5.0 that will help this >> >>>>>>> situation: >> >>>>>>>>> >> >>>>>>>>> LPP-8556 Add default CSS style properties to <view> >> >>>>>>>>> LPP-7359 Make CSS attribute selectors dynamic >> >>>>>>>>> >> >>>>>>>>> There should also be one to make it so you can load a >> >>>>>>> stylesheet at runtime, but I can't seem to find that. Maybe Max >> >>>>>>> and I only talked about it... >> >>>>>>>>> >> >>>>>>>>> With all three of those, it should be possible to have a single >> >>>>>>> app that will be localized when it is loaded. For now, you are >> >>>>>>> correct, you need to compile your app for each language. >> >>>>>>>>> >> >>>>>>>>> --- >> >>>>>>>>> >> >>>>>>>>> With LPP-7184 Binary libraries don't work in swf9 resolved (and >> >>>>>>> integrated to 4.7), we believe that LZO's are now fully supported >> >>>>>>> in swf9 for 4.7.1 (soon to be released) and 5.0.x (in >> >>>>>>> development). We'd welcome testing by anyone who needs this >> >>>>>>> feature. Grab the latest 4.7.1 here: >> >>>>>>>>> >> >>>>>>>>> http://download.openlaszlo.org/nightly/4.7/ >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> On 2010-02-15, at 11:39, Raju Bitter wrote: >> >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>>> All the internationalization based on CSS for Webtop (at least >> >>>>>>> with >> >>>>>>>>>> the version I've used) requires you to recompile the app for a >> >>>>>>>>>> different language. That's not too much of a problem, just >> >>>>>>> generate >> >>>>>>>>>> different versions of the app for different languages. >> >>>>>>>>>> >> >>>>>>>>>> It would be good to have dynamic CSS support at runtime, but a >> >>>>>>>>>> workaround could be to put all the strings into an LZO, with >> >>>>>>> different >> >>>>>>>>>> LZOs for different languages. That should work, shouldn't it? >> Of >> >>>>>>>>>> course you are limited to SWF8 and DHTML then, since there's >> >>>>>>> still no >> >>>>>>>>>> support for LZOs with AS3 based runtimes, as far as I know. >> >>>>>>>>>> >> >>>>>>>>>> 2010/2/15 P T Withington <[email protected] <mailto:[email protected] >> >>: >> >>>>>>>>>> >> >>>>>>>>>>> I believe some use CSS styles to achieve >> >>>>>>> internationalization, although currently LZX does not support >> >>>>>>> dynamically changing styles, so I'm not sure exactly how this is >> >>>>>>> handled. Currently, styles need to be pre-processed by the >> >>>>>>> compiler. Ideally, you would have your application server >> looking >> >>>>>>> at the browser request language preference and serve up different >> >>>>>>> style sheets based on that. It may be that people are using a >> >>>>>>> .jsp to do this kind of dispatching. >> >>>>>>>>>>> >> >>>>>>>>>>> In theory, you would write something like: >> >>>>>>>>>>> >> >>>>>>>>>>> <!-- supply style sheet based on browser language --> >> >>>>>>>>>>> <stylesheet> >> >>>>>>>>>>> i18ntext [label="hi"] { text: "hello" } >> >>>>>>>>>>> </stylesheet> >> >>>>>>>>>>> >> >>>>>>>>>>> <class name="i18ntext" extends="text"> >> >>>>>>>>>>> <attribute name="label" type="string" /> >> >>>>>>>>>>> <attribute name="text" style="text" /> >> >>>>>>>>>>> </class> >> >>>>>>>>>>> >> >>>>>>>>>>> <i18ntext label="hi" /> >> >>>>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> [...] >> >>>>>>>>> >> >>>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> -- >> >>>>>>> Cem SONMEZ >> >>>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> -- >> >>>>> Cem SONMEZ >> >>>> >> >>>> >> >>>> >> >>>> -- >> >>>> Cem SONMEZ >> >>> >> >>> >> >>> >> >>> -- >> >>> Cem SONMEZ >> >> >> >> >> > >> > >> > -- >> > Cem SONMEZ >> >> > > > -- > Cem SONMEZ > -- Cem SONMEZ
