J'ai un webservice international (6 langues) avec environ 1000 personnes par jour qui accèdent depuis n'importe quel appareil, des smartphones aux cybercafés.
Les informations affichées sont un peu scientifiques, par exemple les distances, les montants et les dates, et le format peut affecter le séparateur décimal et la compréhension des valeurs.
Quelquefois 1.000,000
(L'allemand) est correct, parfois 1,000.000
(Anglais) est correct.
Je dois autoriser différents formats, mais que se passe-t-il si l'utilisateur entre 1.000
(mille en format allemand mais un en format anglais)?
Malheureusement, "Don't Make Me Think" n'écrit pas beaucoup sur le formatage; la seule chose suggérée est de laisser les formules vierges pour éviter que l'entreprise ne saisisse des données erronées.
Question: dois-je me fier au formatage de leur appareil ou dois-je laisser l'utilisateur choisir lui-même le format?
Concernant la saisie: vos utilisateurs ont-ils vraiment besoin de taper manuellement des milliers de séparateurs? Si non (ce qui est le cas le plus probable), je traiterais les deux .
et ,
tapé dans le champ comme un point décimal et n'autoriser qu'un seul symbole de ce type pour cette valeur.
En ce qui concerne la sortie des valeurs: à mon humble avis, il est préférable de s'appuyer sur les formats de système d'exploitation par défaut, mais pour fournir la possibilité de changer le format de sortie et donner un indice subtil sur la disponibilité de cette option. L'info-bulle (via l'attribut title
ou tout autre moyen), un message d'information supprimable ou d'autres alternatives peuvent être utilisées pour cela.
Une façon de résoudre ce problème est de ne pas obliger les gens à entrer des périodes décimales. Refusez toute entrée non numérique et laissez les gens choisir l'unité (mètre, centimètre, etc.).
Pour les dates, utilisez un sélecteur de date plutôt qu'une zone de texte.
Le risque d'utiliser les paramètres régionaux de l'utilisateur est que si les gens partagent des informations (par exemple dans le forum de support/wiki) sur la façon d'entrer des entrées fractionnaires, une partie écrira que vous devez utiliser des points et l'autre partie écrira que vous devez utiliser des virgules, confondre les deux. Dans certains cas, cela est inévitable, mais si vous pouvez éviter la saisie décimale, évitez-les.
C # et javascript ont tous deux quelques bons outils pour convertir les formats numériques ... si vous pouvez obtenir le code iso du pays/langue de l'utilisateur ou du site (par exemple "de-DE" pour les Allemands), c'est facile à faire .. .
C #, par exemple, a la classe CultureInfo à cet effet ...
De cette façon, vous pouvez détecter de quelle culture l'utilisateur est issu, mais vous avez toujours le champ libre sur le format que vous souhaitez utiliser pour le stockage et les calculs.
Presque toutes les langues ont une forme de conversion de format numérique intégrée ou disponible en tant qu'extension.
Maintenant, si vous formatez des nombres à l'aide du système d'exploitation de l'utilisateur ou de votre serveur, cela dépend principalement de vos besoins:
tilisation des paramètres du système d'exploitation
facile à faire avec une application cliente, mais il peut être plus difficile de saisir les paramètres du système d'exploitation via un navigateur. (Vous devrez écrire du code pour chaque type de navigateur que vous souhaitez prendre en charge)
La sortie est formatée selon les préférences de l'utilisateur indépendamment de l'emplacement
Utilise des ressources sur la machine du client
en utilisant le serveur
plus facile à faire en toute sécurité dans le navigateur
Peut être facilement étendu pour permettre à l'utilisateur de choisir le format de numérotation si nécessaire
aucune préférence ou information utilisateur n'est requise pour être envoyé
plus facile à coder sur un plus grand nombre de navigateurs
utilise les ressources du serveur pour la conversion et le calcul
Du côté de l'entrée, je laisserais le séparateur de milliers et n'autoriserais que les nombres et le séparateur décimal en fonction des paramètres de langue de l'utilisateur actuel, mais stocker les valeurs de manière unifiée, par exemple:
Côté sortie, vous pouvez à nouveau vous fier aux paramètres de langue. Et peut changer le séparateur comme l'utilisateur l'a choisi.
Cette approche vous permettra de stocker les valeurs entrées uniformément et de laisser les utilisateurs choisir le format d'affichage (via les paramètres de langue).
Cela fonctionnera bien pour toutes sortes d'entrées, y compris les dates.