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">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">http://www.whatwg.org/specs/web-forms/current-work/#dom</a><br><br>-- <br>Samuel Santos<br><a href="http://samaxes.com/">http://samaxes.com/</a>