localisation
This commit is contained in:
58
Yavsc/Attributes/Validation/RequiredAttribute.cs
Normal file
58
Yavsc/Attributes/Validation/RequiredAttribute.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
|
||||
namespace Yavsc.Attributes.Validation
|
||||
{
|
||||
public class YaValidationAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
|
||||
{
|
||||
public YaValidationAttribute() : base(()=> Startup.GlobalLocalizer["validationError"])
|
||||
{
|
||||
|
||||
}
|
||||
public override string FormatErrorMessage(string name)
|
||||
{
|
||||
return Startup.GlobalLocalizer[name];
|
||||
}
|
||||
}
|
||||
|
||||
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
|
||||
public class YaRequiredAttribute : YaValidationAttribute
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a flag indicating whether the attribute should allow empty strings.
|
||||
/// </summary>
|
||||
public bool AllowEmptyStrings { get; set; }
|
||||
public YaRequiredAttribute (string msg) : base()
|
||||
{
|
||||
ErrorMessage = msg;
|
||||
}
|
||||
public YaRequiredAttribute ()
|
||||
{
|
||||
this.ErrorMessage = Startup.GlobalLocalizer["RequiredField"];
|
||||
|
||||
}
|
||||
public override bool IsValid(object value) {
|
||||
if (value == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// only check string length if empty strings are not allowed
|
||||
var stringValue = value as string;
|
||||
if (stringValue != null && !AllowEmptyStrings) {
|
||||
return stringValue.Trim().Length != 0;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public class YaRegularExpression : System.ComponentModel.DataAnnotations.RegularExpressionAttribute {
|
||||
public YaRegularExpression(string pattern): base (pattern)
|
||||
{
|
||||
this.ErrorMessage = pattern;
|
||||
}
|
||||
public override string FormatErrorMessage(string name)
|
||||
{
|
||||
return Startup.GlobalLocalizer[name];
|
||||
}
|
||||
}
|
||||
}
|
@ -626,7 +626,7 @@ namespace Yavsc.Controllers
|
||||
{
|
||||
foreach (var error in result.Errors)
|
||||
{
|
||||
ModelState.AddModelError(string.Empty, error.Description);
|
||||
ModelState.AddModelError(string.Empty, _localizer[ error.Code ]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -341,4 +341,10 @@ contact a performer</value></data>
|
||||
<data name="Longueur de cheveux"><value>Hair Length</value></data>
|
||||
<data name="Français"><value>French</value></data>
|
||||
<data name="Anglais"><value>English</value></data>
|
||||
<data name="RequiredField"><value>This field is required.</value></data>
|
||||
<data name="PasswordTooShort"><value>Passwords must be at least {0} characters.</value></data>
|
||||
<data name="PasswordRequiresNonLetterAndDigit"><value>Passwords must have at least one non letter and non digit character.</value></data>
|
||||
<data name="PasswordRequiresDigit"><value>Passwords must have at least one digit ('0'-'9').</value></data>
|
||||
<data name="PasswordRequiresUpper"><value>Passwords must have at least one uppercase ('A'-'Z').</value></data>
|
||||
|
||||
</root>
|
||||
|
@ -437,4 +437,13 @@
|
||||
<data name="UnsetActivity"><value>Supprimer mon profil professionel</value></data>
|
||||
<data name="Français"><value>Français</value></data>
|
||||
<data name="Anglais"><value>Anglais</value></data>
|
||||
<data name="invalidUserName"><value>Nom d'utilisateur invalide.
|
||||
Les valides sont: le souligné '_', le titret '-', de 'a' à 'z', de 'A' à 'Z', de 0 à 9, l'espace et le point.</value></data>
|
||||
<data name="RequiredField"><value>Ce champ est obligatoire.</value></data>
|
||||
<data name="validationError"><value>Champ invalide ...</value></data>
|
||||
<data name="PasswordTooShort"><value>Le Mot de passe doit contenir au moins 6 caractères.</value></data>
|
||||
<data name="PasswordRequiresNonLetterAndDigit"><value>Mot de passe doit contenir au moins a caractère spécial (ni un chiffre, ni une lettre).</value></data>
|
||||
<data name="PasswordRequiresDigit"><value>Les mots de passe doivent contenir au moins un chiffre ('0' à '9').</value></data>
|
||||
<data name="PasswordRequiresUpper"><value>Les mots de passe doivent contenir au moins une lettre majuscule ('A' à 'Z').</value></data>
|
||||
|
||||
</root>
|
||||
|
@ -1,24 +1,32 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Yavsc.Attributes.Validation;
|
||||
|
||||
namespace Yavsc.ViewModels.Account
|
||||
{
|
||||
public class RegisterViewModel
|
||||
{
|
||||
[Required][Display(Name = "Nom d'utilisateur")]
|
||||
// ErrorMessage = "",
|
||||
|
||||
|
||||
[Display(Name = "Nom d'utilisateur")]
|
||||
[StringLength(102)]
|
||||
[YaRegularExpression(@"[a-zA-Z0-9 ._-]+",
|
||||
ErrorMessage = "Caratères autorisés: lettres, chiffres, espace point tiret et souligné.")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Required]
|
||||
[EmailAddress]
|
||||
[YaRequired("Ce champ est requis.")]
|
||||
// [EmailAddress]
|
||||
[Display(Name = "Email")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[Required]
|
||||
[StringLength(100, ErrorMessage = "Le {0} doit être long d'au moins {2} caractères.", MinimumLength = 6)]
|
||||
[DataType(DataType.Password, ErrorMessage="Les mots de passe doivent contenir au moins un caractère spécial, qui ne soit ni une lettre ni un chiffre.")]
|
||||
[YaRequired(ErrorMessage="Spécifiez un mot de passe.")]
|
||||
// [StringLength(100, ErrorMessage = "Le {0} doit être long d'au moins {1} caractères.", MinimumLength = 6)]
|
||||
[DataType(DataType.Password,
|
||||
ErrorMessage = "Les mots de passe doivent contenir au moins un caractère spécial, qui ne soit ni une lettre ni un chiffre.")]
|
||||
|
||||
[Display(Name = "Mot de passe")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[DataType(DataType.Password)]
|
||||
[Display(Name = "Confirmer le mot de passe")]
|
||||
[Compare("Password", ErrorMessage = "Le mot de passe et sa confirmation ne sont pas les mêmes.")]
|
||||
public string ConfirmPassword { get; set; }
|
||||
|
@ -17,14 +17,14 @@
|
||||
<div class="form-group">
|
||||
<label asp-for="UserName" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="UserName" class="form-control" placeholder="Your Name" required/>
|
||||
<input asp-for="UserName" class="form-control" placeholder="Your Name" />
|
||||
<span asp-validation-for="UserName" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="Email" class="form-control" placeholder="Your@@email" required/>
|
||||
<input asp-for="Email" class="form-control" placeholder="Your@@email" />
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
54
Yavsc/Views/Account/Register.fr.cshtml
Executable file
54
Yavsc/Views/Account/Register.fr.cshtml
Executable file
@ -0,0 +1,54 @@
|
||||
@model RegisterViewModel
|
||||
@{
|
||||
ViewData["Title"] = @SR["Register"];
|
||||
}
|
||||
|
||||
@section header{
|
||||
<script src="~/lib/jquery-validation/jquery.validate.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
}
|
||||
|
||||
<h2>@ViewData["Title"].</h2>
|
||||
|
||||
<form asp-controller="Account" asp-action="Register" data-toggle="validator" method="post" class="form-horizontal" role="form">
|
||||
<h4>@SR["Create a new account"].</h4>
|
||||
<hr />
|
||||
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
|
||||
<div class="form-group">
|
||||
<label asp-for="UserName" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="UserName" class="form-control" placeholder="Votre nom"/>
|
||||
<span asp-validation-for="UserName" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="Email" class="form-control" placeholder="votre@@email" />
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Password" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="Password" class="form-control" />
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword" class="col-md-2 control-label"></label>
|
||||
<div class="col-md-10">
|
||||
<input asp-for="ConfirmPassword" class="form-control" />
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<button type="submit" class="btn btn-default">@SR["Register"]</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@section Scripts {
|
||||
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
|
||||
}
|
@ -100,8 +100,6 @@ h6 {
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
@await Html.PartialAsync("_LoginPartial")
|
||||
</div>
|
||||
</div>
|
||||
@ -112,8 +110,7 @@ h6 {
|
||||
<h2 markdown="@n.title"></h2>
|
||||
<a class="close" data-dismiss="alert" aria-label="close" onclick="notifClick(@n.Id)">@((n.click_action==null)?SR["Fermer"]:SR[n.click_action])</a>
|
||||
<markdown>@n.body</markdown>
|
||||
</div>
|
||||
}
|
||||
</div>}
|
||||
}
|
||||
@RenderSection("subbanner", required: false)
|
||||
<main class="container body-content" role="main">
|
||||
|
Reference in New Issue
Block a user