Comment puis-je internationaliser le texte du bouton du sélecteur de fichiers? Par exemple, ce que ce code présente à l'utilisateur:
<input type="file" .../>
Il est normalement fourni par le navigateur et difficile à modifier, donc le seul moyen de le contourner sera un hack CSS/JavaScript,
Voir les liens suivants pour quelques approches:
Prendre du recul! Tout d'abord, vous supposez que l'utilisateur utilise une langue étrangère sur son appareil, ce qui n'est pas une hypothèse valable pour justifier la prise en charge du texte du bouton du sélecteur de fichiers et lui faire dire quoi vous le souhaitez.
Il est raisonnable de vouloir contrôler chaque élément de langue visible sur votre page. Le contenu du contrôle File Upload ne fait cependant pas partie du HTML. Il y a plus de contenu derrière ce contrôle, par exemple, dans WebKit, il indique également "Aucun fichier choisi" à côté du bouton.
Il existe des solutions de contournement très hacky qui tentent cela (par exemple, comme celles mentionnées dans la réponse de @ ChristopheD), mais aucune ne réussit vraiment:
Dévier des contrôles natifs est toujours une chose risquée, il existe une multitude de différents appareils que vos utilisateurs pourraient utiliser, et quelle que soit la solution de contournement que vous choisirez, vous ne l'avez pas testée sur chacun de ces appareils.
Cependant, il existe une raison encore plus importante pour laquelle toutes les tentatives échouent du point de vue de l'expérience utilisateur: il y a encore plus de contenu non localisé derrière ce contrôle, la boîte de dialogue de sélection de fichier elle-même. Une fois que l'utilisateur est soumis à traverser son système de fichiers ou à ne pas sélectionner un fichier à télécharger, il sera soumis aux paramètres régionaux du système d'exploitation hôte.
Êtes-vous sûr de rendre justice à votre utilisateur en s'écartant du contrôle natif, juste pour localiser le texte, quand dès qu'ils cliquent dessus, ils obtiendront tout de même les paramètres régionaux du système d'exploitation?
Le mieux que vous puissiez faire pour vos utilisateurs est de vous assurer que vous disposez d'un guidage localisé adéquat autour de votre contrôle d'entrée de fichier. (par exemple, étiquette de champ de formulaire, texte de conseil, texte d'infobulle).
Désolé. :-(
-
Cette réponse s'adresse à ceux qui recherchent une justification et non pour localiser le contrôle de téléchargement de fichier.
Vous obtenez la langue de votre navigateur pour votre bouton. Il n'y a aucun moyen de le modifier par programme.
Solution CSS pure:
.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>
source: http://tympanus.net/codrops
Je pourrais réaliser un bouton en utilisant jQueryMobile avec le code suivant:
<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;"/>
Le code ci-dessus crée un bouton "Télécharger" (texte personnalisé). En cliquant sur le bouton de téléchargement, la recherche de fichiers est lancée. Testé avec Chrome 25 & IE9.
Pour créer une solution de "bouton de navigation" personnalisée, essayez simplement de créer un bouton de navigation caché, un bouton ou un élément personnalisé et du Jquery. De cette façon, je ne modifie pas le "bouton de navigation" réel qui dépend de chaque navigateur/version. Voici un exemple.
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());
});
});
beaucoup plus facile à utiliser
<input type="button" id="loadFileXml" value="Custom Button Name"onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>