Comment localiser ASP.NET Identité nom d'utilisateur et le Mot de passe des messages d'erreur?
Est-il possible de fournir des chaînes localisées pour le "système" ASP.NET l'Identité v1 messages d'erreur comme "Nom XYZ est déjà pris" ou "nom d'Utilisateur XYZ n'est pas valide, ne peut contenir que des lettres ou des chiffres"?
Vous devez vous connecter pour publier un commentaire.
Pas encore, nous avons un suivi de bogues de cet élément de travail pour permettre la spécification d'où viendront les ressources.
De la version 2 de l'identité, qui a publié le 20 mars 2014, vous pouvez maintenant avoir localisé les messages d'erreur.
De la première installation de l'identité localisée paquet.
Puis à la bonne culture doit être mis en ordre pour obtenir les messages de localisation par exemple une manière de définir la culture web.config
ASP NET de Base d'une solution (25.11.2016)
Vous pouvez injecter IStringLocalizer dans des IdentityErrorDescriber
1) Créer des IdentityErrorDescriber (voir Gerardo Grignoli réponse)
2) Inscrivez-vous MultilanguageIdentityErrorDescriber en Démarrage.cs
3) Ajouter des messages d'erreur à SharedResource.de langue.resx.
J'ai rencontré le même problème et a trouvé un quick-and-dirty solution de contournement. J'ai regardé à l'intérieur de la
Microsoft.AspNet.Identity.Core
de montage à l'aide DotPeek (je suppose que C# decompiler fera l'affaire) et a trouvé deux classes qui sont responsables de tels messages:Microsoft.AspNet.Identity.UserValidator<TUser>
(Nom d'utilisateur liés)Microsoft.AspNet.Identity.MinimumLengthValidator
(Mot de passe)Ces classes ne contiennent pas de références externes (autres que les ressources de chaîne que vous souhaitez remplacer de toute façon), donc re-mise en œuvre dans votre propre code devrait être assez simple.
Après cela, n'oubliez pas de les utiliser correctement dans votre
UserManager
:Version allemande pour la Solution de @GerardoGrignoli
1AmirJalali méthode fonctionne parfaitement. Pendant le réglage de la culture dans le web.config fonctionne, il peut être défini de façon dynamique également, si nécessaire, ici, est de savoir comment cela peut être réalisé:
Dans l'exemple de code ci-dessus, cultureName, est le nom de la culture à définir. Une liste de cultures peuvent être trouvés sous la rubrique "Remarques" de la rubrique ici:
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.80%29.aspx
Espère que cette aide.
Je ne veux pas remplacer la logique (c'est à dire, de ré-inventer la roue), je ne veux pour passer en ASP NET de Base. Tout ce que je veux faire est de remplacer les messages d'erreur et d'utiliser plusieurs fichiers de ressources (par langue) afin de personnaliser l'expérience de l'utilisateur de la langue de leur choix.
Voici ma solution:
J'ai créé un " IdentityErrors.resx' fichier de ressources avec les éléments suivants:
J'ai créé un IdentityResultErrorMessages.cs' classe:
J'ai changé le Contrôleur de AddErrors méthode à la suivante:
Maintenant, je peux créer des fichiers de ressources pour les autres contenus de langue je veux le servir sur mon site web.
Ce problème a été me tracasse depuis quelques temps déjà j'ai donc essayé de venir avec quelque chose de générique, parce que la solution de l'installation de l'Identité.De base pour la culture en particulier ne fonctionne que si le paquet est disponible à tous 🙂
Ici sont les étapes de la façon dont j'ai réalisé la bonne localisation:
Microsoft.AspNet.Identity.PasswordValidator
à l'aide de dotPeak qui est utilisé par défaut dansApplicationUserManager
,class CustomPasswordValidator : PasswordValidator
et emportait laValidateAsync
méthode pour ne pas retournerIdentityResult
avec des messages d'erreur, mais plutôt avec les "codes" de ces messages d'erreur tout d'eux avec le préfixe "CustomValidator" de la chaîne.AccountController
j'ai changéAddErrors
qui est appelé à partir deRegister
post pour fournir des messages d'erreur localisée de mes très propres fichiers de ressources basée sur les codes d'erreur.Ici est la
CustomPasswordValidator
et de l'utilité de la classePasswordValidatorCodes
contenant les codes d'erreur et la méthode pour récupérer les messages d'erreur localisée sur la base de ces codes (AccountStrings être un fichier de ressources):Et ici, c'est la modification de
AccountController.AddErrors
méthode. Comme vous pouvez le voir je suis l'ajout d'une erreur du modèle de la propriétéPassword
parce que si lePassword
ne passe pas la validation, puis je veux que le message d'erreur affichés par l'Password
terrain et pas dans le récapitulatif de la validation. C'est la seule raison pourquoi monCustomPasswordValidator
produit des codes d'erreur plutôt que des messages d'erreur directement:Dernier mais non le moindre, n'oubliez pas de modifier le
IdentityConfig
fichier, c'est à dire:Mise à JOUR:
Seulement maintenant, j'ai remarqué que Marselus Chia (voir les autres réponses) a venir avec la solution similaire, mais pour le VB.
Ici est Gerardo Grignoli réponse avec traduction en français
c'est cher en Farsi(persan) haut-parleurs
Salut Voici Ma Solution pour traduire l'identité des erreurs:
Exemple
En plus de @Gerardo Grinolli répondre à cette versions traduites du russe:
Version polonaise
Ma solution est de créer un nouveau mot de passe personnalisé de validation classe hérite de Microsoft.AspNet.L'identité.PasswordValidator, Remplace la ValidateAsync qui est celui qui envoie le message d'erreur.
Personnaliser le message d'erreur ici et ça marche pour moi...
Ces classe supposons que vous disposez d'une ressource mondiale des noms de fichier du programme de validation.
Le script à partir de ces classe et le fichier de ressources de l'échantillon peut être trouvé ici ASP.NET l'Identité Codeplex Exemple de Code
Voici mon exemple de code de travail dans vb.net
N'oubliez pas de mettre à jour le paramètre de votre identityConfig.vb fichier utilisé ces classe.
Ma solution était un peu sale, mais Il fonctionne comme prévu. L'idée est d'attribuer toutes les erreurs que le IdentityResult objet résultat apporte lors de l'enregistrement d'un nouvel utilisateur:
À une nouvelle que nous allons créer. Tout d'abord, nous avons besoin de créer une Liste qui contiendra nos erreurs personnalisées:
Ensuite, nous avons besoin d'itérer à travers les erreurs à l'intérieur résultat et ajouter une nouvelle erreur personnalisé pour chacun d'eux en fonction de ce qui fut la cause de celui-ci (en Double de l'utilisateur, e-mail, etc.):
Donc, après ce que nous venons de créer un nouveau IdentityResult objet:
Et le passer à la AddErrors méthode à la fin de notre Registre d'action:
Ayant rencontré le même problème que l'on peut fournir vos propres fichiers de ressources pour y parvenir. Bien sûr, il nécessite un peu de réflexion de piratage!
D'abord, vous devrez être en cours d'exécution avec une sécurité complète, c'est à dire définir dans votre site web.config:
Suivant dans votre application de démarrage de code:
Travail!
J'ai réussi à trouver une solution pour créer la version localisée de AspNet.D'identité pour les cultures qui n'prêt-à-utiliser le package est disponible pour. Les étapes sont les suivantes:
Resources.aa-BB.resx
quiaa-BB
est la culture, il faut localiser l'assemblée. ex.:Resources.fa-IR.resx
.Resources.resx
à elle.bin
dossier et sous laDebug
ouRelease
répertoire vous pouvez voir un dossier nomméaa-BB
(la culture que vous avez saisi précédemment). Copiez le dossier de labin
répertoire de votre projet.Permettez-moi de partager avec vous ce que j'ai fait pour l'accomplir en espagnol. De là, vous pouvez personnaliser les messages facilement!