I believe Raju is speculating here.  Currently, you cannot change your 
stylesheet dynamically at run time.  This is a limitation of the CSS approach.  
I believe Raju was saying that where the CSS approach is used, the app is 
compiled (as a SOLO app) for each possible language and the correct version is 
somehow selected by the app server.

On 2010-02-16, at 06:02, cem sonmez wrote:

> 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


Reply via email to