This issue seems to be a very recurring and still unsolved problem when dealing with Web internationalization / multi-language Web Apps.<br>I would like to suggest this to be reviewed with an editor comment please.<br><br>
Additionally, it&#39;s important if we could decorate separately the file path text field and the browse button using CSS.<br><br>Best reagards,<br>Samuel Santos<br><br><br><div class="gmail_quote">On Mon, Feb 11, 2008 at 12:11 AM, Samuel Santos &lt;<a href="mailto:samaxes@gmail.com">samaxes@gmail.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;ve already tried to comment on this issue [1] but I think I haven&#39;t achieve to make my point clear.<br>
<br>When developing a web application I can&#39;t usually rely on the languages configured on the user browser (sent through the <span style="font-family: courier new,monospace;">Accept-Language</span>).<br>
Often I need to send e-mail or sms notifications and I need to know the user preferred language, so I need to have it saved on the user profile on the database.<br>The same applies to the application web interface. Not all the users want the default language of the application to be english, but few of them configure the languages in their browser. That causes the user to have a different language configured in their application&#39;s profile and in the browser. In summary, what I mean is that I can only trust the language the user has chosen in his profile and not in the language send by the browser.<br>

<br>This is a problem for the <span style="font-family: courier new,monospace;">input</span> element with <span style="font-family: courier new,monospace;">type=&quot;file&quot;</span>. If the language selected in his profile is, e.g. portuguese, and the language in the browser is english (the default), he will see all the application in portuguese and the input file browse button text value will be in english.<br>

<br>In the section 7. Extensions to the HTML Level 2 DOM interfaces [2] of the Web Forms 2.0 specification the HTMLInputElement interface is defined like this:<br><span style="font-family: courier new,monospace;">interface HTMLInputElement : HTMLElement {</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultValue;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultChecked;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; readonly attribute HTMLFormElement form;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; accept;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; accessKey;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; align;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alt;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checked;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disabled;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxLength;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; readOnly;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute unsigned long&nbsp;&nbsp; size;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; src;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tabIndex;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useMap;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blur();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; focus();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; click();</span><br style="font-family: courier new,monospace;">

<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; // new in this specification:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; readonly attribute NodeList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forms;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pattern;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; required;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autocomplete;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autofocus;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputmode;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enctype;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; replace;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; readonly attribute HTMLElement&nbsp;&nbsp;&nbsp;&nbsp; list;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; readonly attribute HTMLOptionElement selectedOption;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; readonly attribute RepetitionElement htmlTemplate;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; readonly attribute HTMLCollection&nbsp; labels;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMTimeStamp&nbsp;&nbsp;&nbsp; valueAsDate;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueAsNumber;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; void stepUp(in int n);</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; void stepDown(in int n);</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; readonly attribute boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; willValidate;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; readonly attribute ValidityState&nbsp;&nbsp; validity;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; readonly attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; validationMessage;</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkValidity();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setCustomValidity(in DOMString error);</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dispatchChange();</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dispatchFormChange();</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">};</span><br><br>What I propose is to add a new attribute to the input element like this:<br><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attribute DOMString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; browseText;</span><br>

this allows us developers to change the input file browse button text to have it in the same language as the rest of the application and not with the language selected in the browser.<br clear="all"><br>[1] <a href="http://lists.w3.org/Archives/Public/public-html/2008Jan/0104.html" target="_blank">http://lists.w3.org/Archives/Public/public-html/2008Jan/0104.html</a><br>

[2] <a href="http://www.whatwg.org/specs/web-forms/current-work/#dom" target="_blank">http://www.whatwg.org/specs/web-forms/current-work/#dom</a><br><font color="#888888"><br>-- <br>Samuel Santos<br><a href="http://samaxes.com/" target="_blank">http://samaxes.com/</a>
</font></blockquote></div><br><br clear="all"><br>-- <br>Samuel Santos<br><a href="http://www.samaxes.com/">http://www.samaxes.com/</a>