minor mod of this line:
<button datapath="languages:/language/string" text="$path{'@name=\'submit\'/@name'}"/>
to this:
<button datapath="languages:/language/stri...@name='submit']" text="$path{'@name'}"/>
cem sonmez wrote:
actually, here my goal is to seek to any node of dataset.
Thinks about this please :S

<canvas debug="true">
    <dataset name="languages">
        <language>
            <string id="1" name="submit">
                <value>submit</value>
            </string>
            <string id="2" name="login">
                <value>login</value>
            </string>
        </language>
    </dataset>
    <simplelayout />
<button datapath="languages:/language/string" text="$path{'@name=\'submit\'/@name'}"/> </canvas>

when i use like that, button text is null(actually buttons). how can i get it work in this way ? Thanks
Cem

2010/2/16 jamesr <[email protected] <mailto:[email protected]>>

    There seems to be an issue using path outside of a datapath
    context being established. try this (tested on SWF8 locally) and
    note that i changed the format of the xml to make the access more
    readable.

    <canvas debug="true">
<dataset name="strings">
            <submit>submittosio</submit>
            <reset>resettosio</reset>
        </dataset>
<button datapath="strings:/submit" text="$path{'text()'}"/> </canvas>


    P T Withington wrote:
    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]> <mailto:[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]> <mailto:[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]> 
<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]> 
<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

Reply via email to