Re: ASP.NET Internationalization bug?
- From: "Lee C." <no.spam@xxxxxxxxxxx>
- Date: Fri, 27 Jun 2008 14:41:53 -0400
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
.
- Follow-Ups:
- Re: ASP.NET Internationalization bug?
- From: Lee C.
- Re: ASP.NET Internationalization bug?
- References:
- ASP.NET Internationalization bug?
- From: Lee C.
- Re: ASP.NET Internationalization bug?
- From: Juan T. Llibre
- Re: ASP.NET Internationalization bug?
- From: Lee C.
- Re: ASP.NET Internationalization bug?
- From: Juan T. Llibre
- Re: ASP.NET Internationalization bug?
- From: Lee C.
- Re: ASP.NET Internationalization bug?
- From: Juan T. Llibre
- ASP.NET Internationalization bug?
- Prev by Date: Re: ASP.NET Internationalization bug?
- Next by Date: Re: ASP.NET Internationalization bug?
- Previous by thread: Re: ASP.NET Internationalization bug?
- Next by thread: Re: ASP.NET Internationalization bug?
- Index(es):
Relevant Pages
|
Loading