mko*_*yak 45 html dialog internationalization
如何国际化文件选择器的按钮文本?例如,此代码向用户显示的内容:
<input type="file" .../>
Run Code Online (Sandbox Code Playgroud)
Chr*_*heD 34
它通常由浏览器提供并且难以更改,因此唯一的解决方法是CSS/JavaScript hack,
有关一些方法,请参阅以下链接:
Lee*_*ski 14
退后一步!首先,您假设用户在他们的设备上使用外部区域设置,这不是合理地接管文件选择器的按钮文本并使其说出您想要的内容的合理假设.
您希望控制页面上可见的每种语言都是合理的.但是,文件上载控件的内容不是HTML的一部分.此控件背后有更多内容,例如,在WebKit中,它还在按钮旁边显示"未选择文件".
有很多hacky变种尝试这个(例如@ ChristopheD的答案中提到的那些),但它们都没有真正成功:
偏离本机控件始终是一件危险的事情,您的用户可能会使用大量不同的设备,并且无论您选择哪种解决方法,您都不会在每个设备中对其进行测试.
但是,从用户体验的角度来看,所有尝试都失败的原因还有一个更大的原因:此控件后面还有更多的非本地化内容,即文件选择对话框本身.一旦用户访问其文件系统或不选择要上载的文件,他们将受到主机操作系统区域设置的影响.
您是否确定通过偏离本机控制来为您的用户伸张正义,只是为了本地化文本,当他们单击它时,他们只是要获得操作系统区域设置?
您可以为用户做的最好的事情是确保您有足够的本地化指导来围绕文件输入控件.(例如表单字段标签,提示文本,工具提示文本).
抱歉.:-(
-
这个答案适用于那些寻求不对文件上传控件进行本地化的理由.
mb2*_*b21 13
纯CSS解决方案:
.inputfile {
/* visibility: hidden etc. wont work */
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.inputfile:focus + label {
/* keyboard navigation */
outline: 1px dotted #000;
outline: -webkit-focus-ring-color auto 5px;
}
.inputfile + label * {
pointer-events: none;
}Run Code Online (Sandbox Code Playgroud)
<input type="file" name="file" id="file" class="inputfile">
<label for="file">Choose a file (Click me)</label>Run Code Online (Sandbox Code Playgroud)
来源:http://tympanus.net/codrops
Ria*_*lam 11
更容易使用它
<input type="button" id="loadFileXml" value="Custom Button Name"onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>
Run Code Online (Sandbox Code Playgroud)