Re: ASP.NET Internationalization bug?



Juan,

I appreciate your trying to help, but you're wrong, and you are the one who
is confused. :]

I am *not* disputing that when inserted programmatically, the xml:lang
attribute renders to the browser. I did just that as a work around (right
after I discovered this bug); but, I should not have to.

I am *not* confusing html attributes with runat="server" attributes, as you
call them. Using your logic, none of the declarative (html) attributes
should render to the browser after I add the runat="server" in ASP.NET; yet
all of them (xmlns, lang, and dir) do--except xml:lang.

I started with an html element with 4 attributes (xmlns, lang, xml:lang, and
dir) all set declaratively. With *no* 5th attribute of runat="server", all
4 attributes render. If I add the 5th attribute of runat="server", which
does not and should not render, I no longer get all 4 attributes that should
render (xmlns, lang, xml:lang, and dir), I only get 3 (xmlns, lang, and
dir). My logic says I should get 4, your says I should get 3? It would be
4 or 0, and 4 is right. Not 0...and not 3.

When I add runat="server", it does not magically make the xml:lang attribute
a server-side attribute, while keeping the other three attributes as "html"
attributes. All four are still "html" attributes--which should render.

I think the simplification of my example may be confusing you. It is odd
that, in my example, I set runat="server" but do not have any server-side
attributes. (I have all 4 as literal strings, for simplicity of an
example.) Well, in my real-world use, I do have server-side attributes,
which I want set declaratively (no code-beside and no script). I have:

<html runat="server" xmlns="http://www.w3.org/1999/xhtml";
xml:lang="<%$ Resources:GlobalLang, ContentAudienceLanguage %>"
lang="<%$ Resources:GlobalLang, ContentAudienceLanguage %>"
dir="ltr">

Both of those declarative explicit localization expressions should work
without my having to write any more "procedural" (code-beside) code or
script. It actually does work fine for the lang attribute--as it should;
but not for the xml:lang attribute--***which is a bug***.

, Lee

"Juan T. Llibre" <nomailreplies@xxxxxxxxxxx> wrote in message
news:u0WzB9H2IHA.4188@xxxxxxxxxxxxxxxxxxxxxxx
re:
!> I think you are misunderstanding, Juan.

Well, I think you are misunderstanding *me*.

re:
!> I had the xml:lang attribute in the html tag (declaratively), like
this:
...and it renders to the browser, as it should.

Yes, because it's standard html.

re:
!> If I simply add runat="server"

That declares the control to run server side.

For any attribute to be programmed server-side you need a script,
just as you need a script to modify any server control's attributes.

Did you run the sample page I sent ?

It iterates throught the attributes for the html server control,
and shows that the xml:lang attribute *is* added programmatically.

re:
!> If I simply add runat="server", leaving in the xml:lang attribute that
!> renders without runat="server", all of the (declarative) attributes are
!> rendered to the browser--except the xml:lang attribute! That is a bug.

I think you're confusing html attributes with runat="server" attributes.

Html attributes can be inserted in normal html.
Server-side attributes must be inserted in code.

Maybe I'm not explaining this as well as I should.
Try to get someone else's opinion on this matter, if you don't accept
mine.



Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Lee C." <no.spam@xxxxxxxxxxx> wrote in message
news:enam1gH2IHA.4552@xxxxxxxxxxxxxxxxxxxxxxx
I think you are misunderstanding, Juan. I had the xml:lang attribute in
the html tag (declaratively), like this:

<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en-US" lang="en-US"
dir="ltr">

...and it renders to the browser, as it should.

If I simply add runat="server", leaving in the xml:lang attribute that
renders without runat="server", all of the (declarative) attributes are
rendered to the browser--except the xml:lang attribute! That is a bug.

<html runat="server" xmlns="http://www.w3.org/1999/xhtml";
xml:lang="en-US" lang="en-US" dir="ltr">

Cordially,
Lee


"Juan T. Llibre" <nomailreplies@xxxxxxxxxxx> wrote in message
news:eyrwjUH2IHA.3920@xxxxxxxxxxxxxxxxxxxxxxx
Here's a full example which shows that the xml:lang attribute is added
programmatically :

attributes.aspx:
----------------------
<%@ Page Language="C#" AutoEventWireup="True" %>
<html xmlns="http://www.w3.org/1999/xhtml"; runat="server" id="Myid" >
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
Myid.Attributes.Add("xml:lang", "es");
Message.InnerHtml = "<h4>The html control attributes collection
contains:</h4>";
IEnumerator keys = Myid.Attributes.Keys.GetEnumerator();
while (keys.MoveNext())
{
String key = (String)keys.Current;
Message.InnerHtml += key + "=" + Myid.Attributes[key] + "<br />";
}
}
</script>
<head id="Head1" runat="server">
<title>The html control attributes collection</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>HtmlControl Attribute Collection Example</h3>
<br />
<span id="Message" enableviewstate="false" runat="server" />
</form>
</body>
</html>
----------------

I don't think it's a bug to have to add an attribute programmatically,
because the runat="server" tag only *declares* the html control as a
programmable control.

To actually program it, you must use a script.




Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================
"Lee C." <no.spam@xxxxxxxxxxx> wrote in message
news:e0rLaPG2IHA.4772@xxxxxxxxxxxxxxxxxxxxxxx
Thanks, Juan.

I already added similar code to a page event in my masterpage
code-beside.

elHtml.Attributes.Add("xml:lang",
Resources.GlobalLang.ContentAudienceLanguage)

To me, that is a temporary workaround. I still want to understand
whether the "eating" of the attribute I originally
posted about is a bug, or if this is actually happening for a reason.

Cordially,
Lee


"Juan T. Llibre" <nomailreplies@xxxxxxxxxxx> wrote in message
news:%23gBUqSC2IHA.4772@xxxxxxxxxxxxxxxxxxxxxxx
Hi, Lee.

re:
!> <html runat="server" xmlns="http://www.w3.org/1999/xhtml";
xml:lang="en-US" lang="en-US" dir="ltr">
!> no xml:lang attribute is rendered to the browser!
!> Remove the runat="server", and, voila, the xml:lang attribute is
rendered.

Try this :

<html xmlns="http://www.w3.org/1999/xhtml"; runat="server" id="someID">

<script runat="server">
someID.Attributes("xml:lang") = "en-US"
</script>



Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
======================================

"Lee C." <nomail@xxxxxxxx> wrote in message
news:O%23KsAQA2IHA.4572@xxxxxxxxxxxxxxxxxxxxxxx
I think I have discovered a bug in ASP.NET, related to I18N.

In ASP.NET 3.5 I have to set runat="server" on the html element to
use explicit expressions. It appears that
ASP.NET
eats the xml:lang attribute on the html element when it is set to
runat="server".

Of course I want to replace the hardcoded "en-US" values with
(resource) explicit expressions; but, for simplicity,
try this:

<html runat="server" xmlns="http://www.w3.org/1999/xhtml";
xml:lang="en-US" lang="en-US" dir="ltr">

...And you will find that no xml:lang attribute is rendered to the
browser! Remove the runat="server", and, voila,
the
xml:lang attribute is rendered. :[

...Any ideas?

Cordially,
Lee
















.



Relevant Pages

  • Re: ASP.NET Internationalization bug?
    ... Juan. ... html tag, like this: ... ....and it renders to the browser, ... That is a bug. ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Web site maintenance
    ... HTML is HTML. ... Not everyone renders it the same. ... same for young eyes and for old eyes. ... Sander Tekelenburg, ...
    (comp.infosystems.www.authoring.html)
  • Re: Pasting HTML from IE into Word 2007
    ... Thanks, Stefan. ... Is there any way to copy HTML text from the clipboard into Word and have the ... My Paste special options are unicode or unicode text.... ... Once the page renders in IE, if the user uses the mouse to highlight the ...
    (microsoft.public.word.docmanagement)
  • Pasting HTML from IE into Word 2007
    ... Once the page renders in IE, if the user uses the mouse to highlight the ... text is non-rendered HTML. ... unicode or unicode. ...
    (microsoft.public.word.docmanagement)
  • Re: Javascript on the client as an alternative to Perl/PHP/Python on the server
    ... Server generated HTML will never be exposed to that. ... Javascript that is cross-browser compliant is a major pain (this I ... client-side framework. ... find the right server-side framework. ...
    (comp.lang.javascript)

Loading