Как я могу интернационализировать текст кнопки средства выбора файлов? Например, что этот код представляет пользователю:
<input type="file" .../>
Как я могу интернационализировать текст кнопки средства выбора файлов? Например, что этот код представляет пользователю:
<input type="file" .../>
Решение на чистом 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;
}
<input type="file" name="file" id="file" class="inputfile">
<label for="file">Choose a file (Click me)</label>
источник: http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/
Обычно он предоставляется браузером и его трудно изменить, поэтому единственный способ обойти это - взлом CSS / JavaScript,
См. Следующие ссылки для некоторых подходов:
Сделать шаг назад! Во-первых, вы предполагаете, что пользователь использует на своем устройстве иностранную локаль, что не является разумным предположением для оправдания использования текста кнопки средства выбора файлов и указания того, что вы em > хочу.
Разумно, что вы хотите контролировать каждый элемент языка, отображаемый на вашей странице. Однако содержимое элемента управления загрузкой файла не является частью HTML. За этим элементом управления скрывается больше содержимого, например, в WebKit рядом с кнопкой написано «Файл не выбран».
Есть очень хитрые обходные пути, которые пытаются это сделать (например, те, которые упомянуты в ответе @ChristopheD), но ни один из них действительно не успешен:
Отклонение от встроенных элементов управления всегда является рискованным делом, существует целый ряд различных устройств, которые могут использовать ваши пользователи, и какой бы обходной путь вы ни выбрали, вы не будете тестировать его на каждом из этих устройств.
Однако есть еще более серьезная причина, по которой все попытки терпят неудачу с точки зрения взаимодействия с пользователем: за этим элементом управления скрывается еще больше нелокализованного контента, самого диалогового окна выбора файла. После того, как пользователь подвергнется обходу своей файловой системы или тому, что не следует выбирать файл для загрузки, он будет подчиняться языку операционной системы хоста.
Вы уверены, что оправдываете своего пользователя, отклоняясь от встроенного элемента управления, просто чтобы локализовать текст, когда, как только они щелкнут его, они все равно получат языковой стандарт операционной системы?
Лучшее, что вы можете сделать для своих пользователей, - это убедиться, что у вас есть адекватные локализованные инструкции по управлению вводом файлов. (например, метка поля формы, текст подсказки, текст всплывающей подсказки).
Прости. :-(
--
Этот ответ предназначен для тех, кто ищет какое-либо оправдание не локализации элемента управления загрузкой файлов.
Вы можете указать язык своего браузера для кнопки. Программно изменить это невозможно.
намного проще использовать это
<input type="button" id="loadFileXml" value="Custom Button Name"onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>
Я мог бы получить кнопку с помощью jQueryMobile со следующим кодом:
<label for="ppt" data-role="button" data-inline="true" data-mini="true" data-corners="false">Upload</label>
<input id="ppt" type="file" name="ppt" multiple data-role="button" data-inline="true" data-mini="true" data-corners="false" style="opacity: 0;"/>
Приведенный выше код создает кнопку «Загрузить» (настраиваемый текст). При нажатии кнопки загрузки запускается просмотр файлов. Протестировано с Chrome 25 и IE9.
Чтобы создать собственное решение для «кнопки просмотра», просто попробуйте создать скрытую кнопку просмотра, настраиваемую кнопку или элемент и некоторый JQuery. Таким образом, я не изменяю фактическую «кнопку просмотра», которая зависит от каждого браузера / версии. Вот пример .
HTML:
<div id="import" type="file">My Custom Button</div>
<input id="browser" class="hideMe" type="file"></input>
CSS:
#import {
margin: 0em 0em 0em .2em;
content: 'Import Settings';
display: inline-block;
border: 1px solid;
border-color: #ddd #bbb #999;
border-radius: 3px;
padding: 5px 8px;
outline: none;
white-space: nowrap;
-webkit-user-select: none;
cursor: pointer;
font-weight: 700;
font: bold 12px/1.2 Arial,sans-serif !important;
/* fallback */
background-color: #f9f9f9;
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#C2C1C1), to(#2F2727));
}
.hideMe{
display: none;
}
JS:
$("#import").click(function() {
$("#browser").trigger("click");
$('#browser').change(function() {
alert($("#browser").val());
});
});