From a04314597172e9832007fc025439211d44412b77 Mon Sep 17 00:00:00 2001 From: Valentin Stoev Date: Tue, 28 Jan 2020 20:35:30 +0200 Subject: [PATCH] Added Data Annotation Multilingual Error Messages (#56) * Added Multilingual Attributes and data annotations Messages in Register Data Model * Added localization in RegisterConfirmation Model * Added Localization in LoginWithRecoveryCodeModel * Added localization in InputModel in LoginWithRecoveryCodeModel * Added localization in ResetPasswordModel * Added localization in InputModel in ResetPasswordModel * Added Localization in LoginWith2Fa Model * Added localization in LoginWith2fa in InputModel * Added localization in Login Model * Added localization in InputModel in LoginModel * Added localization in InputModel in ForgotPasswordModel * Added localization in ExternalLoginModel * Add localization in ConfirmEmailChangeModel * Add localization in ConfirmEmailModel * Localize Password and Email in LoginModel * Added localiation in ChangedPasswordModel * Added Localization in DeltePersonalDataModel * Add localization in Disable2faModel * Added Localization in DownloadPersonalDataModel * Added localization in Email Model * Added Localization in EnableAuthenticatorModel * Add Localization in ExternalLoginsModel * Added Localization in GenerateRecoveryCodesModel * Add Localization in IndexModel * Added Localization in PersonalDataModel * Add Localization in ResetAuthenticatorModel * Added Localization in SetPasswordModel * Added Localization in TwoFactorAuthenticationModel * Add Localization in RegisterModel * Add Localization in ForgotPasswordModel * Add Localization in Identity Models Data Annotations * Change Identity Layout * Update Index View --- AJS.Web/AJS.Web.csproj | 88 ++++++++++ .../Pages/Account/ConfirmEmail.cshtml.cs | 9 +- .../Account/ConfirmEmailChange.cshtml.cs | 13 +- .../Pages/Account/ExternalLogin.cshtml.cs | 16 +- .../Pages/Account/ForgotPassword.cshtml | 2 +- .../Pages/Account/ForgotPassword.cshtml.cs | 5 +- .../Identity/Pages/Account/Login.cshtml.cs | 20 ++- .../Pages/Account/LoginWith2fa.cshtml.cs | 13 +- .../Account/LoginWithRecoveryCode.cshtml.cs | 11 +- .../Account/Manage/ChangePassword.cshtml.cs | 18 ++- .../Manage/DeletePersonalData.cshtml.cs | 17 +- .../Pages/Account/Manage/Disable2fa.cshtml.cs | 16 +- .../Manage/DownloadPersonalData.cshtml.cs | 8 +- .../Pages/Account/Manage/Email.cshtml.cs | 23 +-- .../Manage/EnableAuthenticator.cshtml.cs | 18 ++- .../Account/Manage/ExternalLogins.cshtml.cs | 22 +-- .../Manage/GenerateRecoveryCodes.cshtml.cs | 16 +- .../Pages/Account/Manage/Index.cshtml.cs | 20 ++- .../Account/Manage/PersonalData.cshtml.cs | 8 +- .../Manage/ResetAuthenticator.cshtml.cs | 12 +- .../Account/Manage/SetPassword.cshtml.cs | 16 +- .../Manage/TwoFactorAuthentication.cshtml | 2 +- .../Manage/TwoFactorAuthentication.cshtml.cs | 12 +- .../Pages/Account/Manage/_Layout.cshtml | 2 +- .../Identity/Pages/Account/Register.cshtml.cs | 8 +- .../Account/RegisterConfirmation.cshtml.cs | 7 +- .../Pages/Account/ResetPassword.cshtml | 2 +- .../Pages/Account/ResetPassword.cshtml.cs | 9 +- .../Account/ConfirmEmailChangeModel.bg.resx | 136 ++++++++++++++++ .../Account/ConfirmEmailChangeModel.en.resx | 136 ++++++++++++++++ .../Pages/Account/ConfirmEmailModel.bg.resx | 132 +++++++++++++++ .../Pages/Account/ConfirmEmailModel.en.resx | 132 +++++++++++++++ .../ExternalLoginModel+InputModel.bg.resx | 128 +++++++++++++++ .../ExternalLoginModel+InputModel.en.resx | 128 +++++++++++++++ .../Pages/Account/ExternalLoginModel.bg.resx | 132 +++++++++++++++ .../Pages/Account/ExternalLoginModel.en.resx | 132 +++++++++++++++ .../Pages/Account/ForgotPassword.bg.resx | 4 + .../Pages/Account/ForgotPassword.en.resx | 4 + .../ForgotPasswordModel+InputModel.bg.resx | 132 +++++++++++++++ .../ForgotPasswordModel+InputModel.en.resx | 132 +++++++++++++++ .../Account/LoginModel+InputModel.bg.resx | 144 +++++++++++++++++ .../Account/LoginModel+InputModel.en.resx | 144 +++++++++++++++++ .../Identity/Pages/Account/LoginModel.bg.resx | 128 +++++++++++++++ .../Identity/Pages/Account/LoginModel.en.resx | 128 +++++++++++++++ .../LoginWith2faModel+InputModel.bg.resx | 132 +++++++++++++++ .../LoginWith2faModel+InputModel.en.resx | 132 +++++++++++++++ .../Pages/Account/LoginWith2faModel.bg.resx | 128 +++++++++++++++ .../Pages/Account/LoginWith2faModel.en.resx | 128 +++++++++++++++ ...inWithRecoveryCodeModel+InputModel.bg.resx | 124 ++++++++++++++ ...inWithRecoveryCodeModel+InputModel.en.resx | 124 ++++++++++++++ .../LoginWithRecoveryCodeModel.bg.resx | 128 +++++++++++++++ .../LoginWithRecoveryCodeModel.en.resx | 128 +++++++++++++++ .../ChangePasswordModel+InputModel.bg.resx | 148 +++++++++++++++++ .../ChangePasswordModel+InputModel.en.resx | 148 +++++++++++++++++ .../Manage/ChangePasswordModel.bg.resx | 128 +++++++++++++++ .../Manage/ChangePasswordModel.en.resx | 128 +++++++++++++++ .../Account/Manage/DeletePersonalData.bg.resx | 2 +- ...DeletePersonalDataModel+InputModel.bg.resx | 128 +++++++++++++++ ...DeletePersonalDataModel+InputModel.en.resx | 128 +++++++++++++++ .../Manage/DeletePersonalDataModel.bg.resx | 132 +++++++++++++++ .../Manage/DeletePersonalDataModel.en.resx | 132 +++++++++++++++ .../Account/Manage/Disable2faModel.bg.resx | 136 ++++++++++++++++ .../Account/Manage/Disable2faModel.en.resx | 136 ++++++++++++++++ .../Manage/DownloadPersonalDataModel.bg.resx | 124 ++++++++++++++ .../Manage/DownloadPersonalDataModel.en.resx | 124 ++++++++++++++ .../Manage/EmailModel+InputModel.bg.resx | 132 +++++++++++++++ .../Manage/EmailModel+InputModel.en.resx | 132 +++++++++++++++ .../Pages/Account/Manage/EmailModel.bg.resx | 140 ++++++++++++++++ .../Pages/Account/Manage/EmailModel.en.resx | 140 ++++++++++++++++ ...nableAuthenticatorModel+InputModel.bg.resx | 132 +++++++++++++++ ...nableAuthenticatorModel+InputModel.en.resx | 132 +++++++++++++++ .../Manage/EnableAuthenticatorModel.bg.resx | 132 +++++++++++++++ .../Manage/EnableAuthenticatorModel.en.resx | 132 +++++++++++++++ .../Manage/ExternalLoginsModel.bg.resx | 144 +++++++++++++++++ .../Manage/ExternalLoginsModel.en.resx | 144 +++++++++++++++++ .../Manage/GenerateRecoveryCodesModel.bg.resx | 132 +++++++++++++++ .../Manage/GenerateRecoveryCodesModel.en.resx | 132 +++++++++++++++ .../Manage/IndexModel+InputModel.bg.resx | 128 +++++++++++++++ .../Manage/IndexModel+InputModel.en.resx | 128 +++++++++++++++ .../Pages/Account/Manage/IndexModel.bg.resx | 136 ++++++++++++++++ .../Pages/Account/Manage/IndexModel.en.resx | 136 ++++++++++++++++ .../Account/Manage/PersonalDataModel.bg.resx | 124 ++++++++++++++ .../Account/Manage/PersonalDataModel.en.resx | 124 ++++++++++++++ .../Manage/ResetAuthenticatorModel.bg.resx | 128 +++++++++++++++ .../Manage/ResetAuthenticatorModel.en.resx | 128 +++++++++++++++ .../SetPasswordModel+InputModel.bg.resx | 140 ++++++++++++++++ .../SetPasswordModel+InputModel.en.resx | 140 ++++++++++++++++ .../Account/Manage/SetPasswordModel.bg.resx | 128 +++++++++++++++ .../Account/Manage/SetPasswordModel.en.resx | 128 +++++++++++++++ .../Manage/TwoFactorAuthentication.bg.resx | 4 + .../Manage/TwoFactorAuthentication.en.resx | 4 + .../TwoFactorAuthenticationModel.bg.resx | 128 +++++++++++++++ .../TwoFactorAuthenticationModel.en.resx | 128 +++++++++++++++ .../Account/RegisterConfirmationModel.bg.resx | 124 ++++++++++++++ .../Account/RegisterConfirmationModel.en.resx | 124 ++++++++++++++ .../Account/RegisterModel+InputModel.bg.resx | 152 ++++++++++++++++++ .../Account/RegisterModel+InputModel.en.resx | 152 ++++++++++++++++++ .../Pages/Account/ResetPassword.bg.resx | 4 + .../Pages/Account/ResetPassword.en.resx | 4 + .../ResetPasswordModel+InputModel.bg.resx | 132 +++++++++++++++ .../ResetPasswordModel+InputModel.en.resx | 132 +++++++++++++++ .../Pages/Account/ResetPasswordModel.bg.resx | 124 ++++++++++++++ .../Pages/Account/ResetPasswordModel.en.resx | 124 ++++++++++++++ .../Views/Shared/_LoginPartial.bg.resx | 4 + .../Views/Shared/_LoginPartial.en.resx | 4 + AJS.Web/Views/Home/Index.cshtml | 2 +- 106 files changed, 9318 insertions(+), 123 deletions(-) create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.en.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.bg.resx create mode 100644 AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.en.resx diff --git a/AJS.Web/AJS.Web.csproj b/AJS.Web/AJS.Web.csproj index 1c5f4c3..b4255e9 100644 --- a/AJS.Web/AJS.Web.csproj +++ b/AJS.Web/AJS.Web.csproj @@ -45,4 +45,92 @@ + + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + + + + + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + + + diff --git a/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmail.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmail.cshtml.cs index 96a5125..58afb72 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmail.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmail.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account { @@ -16,10 +17,12 @@ namespace AJS.Web.Areas.Identity.Pages.Account public class ConfirmEmailModel : PageModel { private readonly UserManager _userManager; + private readonly IStringLocalizer _localizer; - public ConfirmEmailModel(UserManager userManager) + public ConfirmEmailModel(UserManager userManager, IStringLocalizer localizer) { _userManager = userManager; + _localizer = localizer; } [TempData] @@ -35,12 +38,12 @@ public async Task OnGetAsync(string userId, string code) var user = await _userManager.FindByIdAsync(userId); if (user == null) { - return NotFound($"Unable to load user with ID '{userId}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], userId)); } code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code)); var result = await _userManager.ConfirmEmailAsync(user, code); - StatusMessage = result.Succeeded ? "Thank you for confirming your email." : "Error confirming your email."; + StatusMessage = result.Succeeded ? _localizer["Thank you for confirming your email."] : _localizer["Error confirming your email."]; return Page(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmailChange.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmailChange.cshtml.cs index 6be7f3a..3ffc4df 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmailChange.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/ConfirmEmailChange.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account { @@ -17,11 +18,13 @@ public class ConfirmEmailChangeModel : PageModel { private readonly UserManager _userManager; private readonly SignInManager _signInManager; + private readonly IStringLocalizer _localizer; - public ConfirmEmailChangeModel(UserManager userManager, SignInManager signInManager) + public ConfirmEmailChangeModel(UserManager userManager, SignInManager signInManager, IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; + _localizer = localizer; } [TempData] @@ -37,14 +40,14 @@ public async Task OnGetAsync(string userId, string email, string var user = await _userManager.FindByIdAsync(userId); if (user == null) { - return NotFound($"Unable to load user with ID '{userId}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], userId)); } code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code)); var result = await _userManager.ChangeEmailAsync(user, email, code); if (!result.Succeeded) { - StatusMessage = "Error changing email."; + StatusMessage = _localizer["Error changing email."]; return Page(); } @@ -53,12 +56,12 @@ public async Task OnGetAsync(string userId, string email, string var setUserNameResult = await _userManager.SetUserNameAsync(user, email); if (!setUserNameResult.Succeeded) { - StatusMessage = "Error changing user name."; + StatusMessage = _localizer["Error changing user name."]; return Page(); } await _signInManager.RefreshSignInAsync(user); - StatusMessage = "Thank you for confirming your email change."; + StatusMessage = _localizer["Thank you for confirming your email change."]; return Page(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs index 9947474..e97629e 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/ExternalLogin.cshtml.cs @@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account @@ -24,17 +25,20 @@ public class ExternalLoginModel : PageModel private readonly UserManager _userManager; private readonly IEmailSender _emailSender; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public ExternalLoginModel( SignInManager signInManager, UserManager userManager, ILogger logger, - IEmailSender emailSender) + IEmailSender emailSender, + IStringLocalizer localizer) { _signInManager = signInManager; _userManager = userManager; _logger = logger; _emailSender = emailSender; + _localizer = localizer; } [BindProperty] @@ -49,8 +53,8 @@ public ExternalLoginModel( public class InputModel { - [Required] - [EmailAddress] + [Required(ErrorMessage = "Email is required")] + [EmailAddress(ErrorMessage = "Invalid email")] public string Email { get; set; } } @@ -72,13 +76,13 @@ public async Task OnGetCallbackAsync(string returnUrl = null, str returnUrl = returnUrl ?? Url.Content("~/"); if (remoteError != null) { - ErrorMessage = $"Error from external provider: {remoteError}"; + ErrorMessage = string.Format(_localizer[$"Error from external provider: {0}"],remoteError); return RedirectToPage("./Login", new {ReturnUrl = returnUrl }); } var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { - ErrorMessage = "Error loading external login information."; + ErrorMessage = _localizer["Error loading external login information."]; return RedirectToPage("./Login", new { ReturnUrl = returnUrl }); } @@ -116,7 +120,7 @@ public async Task OnPostConfirmationAsync(string returnUrl = null var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { - ErrorMessage = "Error loading external login information during confirmation."; + ErrorMessage = _localizer["Error loading external login information during confirmation."]; return RedirectToPage("./Login", new { ReturnUrl = returnUrl }); } diff --git a/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml b/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml index cb12f5e..b7ee777 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml +++ b/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml @@ -7,7 +7,7 @@ }

@ViewData["Title"]

-

Enter your email.

+

@Localizer["Enter your email."]


diff --git a/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml.cs index f544704..412373a 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/ForgotPassword.cshtml.cs @@ -31,8 +31,9 @@ public ForgotPasswordModel(UserManager userManager, IEmailSender emailSend public class InputModel { - [Required] - [EmailAddress] + [Required(ErrorMessage = "Email is required")] + [EmailAddress(ErrorMessage = "Invalid email")] + [Display(Name = "Email")] public string Email { get; set; } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Login.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Login.cshtml.cs index d044009..6bb3f92 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Login.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Login.cshtml.cs @@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using AJS.Data.Models; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account { @@ -22,16 +23,19 @@ public class LoginModel : PageModel private readonly SignInManager _signInManager; private readonly ILogger _logger; private readonly IEmailSender _emailSender; + private readonly IStringLocalizer _localizer; public LoginModel(SignInManager signInManager, ILogger logger, UserManager userManager, - IEmailSender emailSender) + IEmailSender emailSender, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _emailSender = emailSender; _logger = logger; + _localizer = localizer; } [BindProperty] @@ -46,12 +50,14 @@ public LoginModel(SignInManager signInManager, public class InputModel { - [Required] - [EmailAddress] + [Required(ErrorMessage = "Email is required")] + [EmailAddress(ErrorMessage = "Invalid email")] + [Display(Name = "Email")] public string Email { get; set; } - [Required] + [Required(ErrorMessage = "Password is required")] [DataType(DataType.Password)] + [Display(Name = "Password")] public string Password { get; set; } [Display(Name = "Remember me?")] @@ -100,7 +106,7 @@ public async Task OnPostAsync(string returnUrl = null) } else { - ModelState.AddModelError(string.Empty, "Invalid login attempt."); + ModelState.AddModelError(string.Empty, _localizer["Invalid login attempt."]); return Page(); } } @@ -119,7 +125,7 @@ public async Task OnPostSendVerificationEmailAsync() var user = await _userManager.FindByEmailAsync(Input.Email); if (user == null) { - ModelState.AddModelError(string.Empty, "Verification email sent. Please check your email."); + ModelState.AddModelError(string.Empty, _localizer["Verification email sent. Please check your email."]); } var userId = await _userManager.GetUserIdAsync(user); @@ -134,7 +140,7 @@ await _emailSender.SendEmailAsync( "Confirm your email", $"Please confirm your account by clicking here."); - ModelState.AddModelError(string.Empty, "Verification email sent. Please check your email."); + ModelState.AddModelError(string.Empty, _localizer["Verification email sent. Please check your email."]); return Page(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/LoginWith2fa.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/LoginWith2fa.cshtml.cs index 200d9a1..4f8c9ec 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/LoginWith2fa.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/LoginWith2fa.cshtml.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account @@ -17,11 +18,13 @@ public class LoginWith2faModel : PageModel { private readonly SignInManager _signInManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; - public LoginWith2faModel(SignInManager signInManager, ILogger logger) + public LoginWith2faModel(SignInManager signInManager, ILogger logger, IStringLocalizer localizer) { _signInManager = signInManager; _logger = logger; + _localizer = localizer; } [BindProperty] @@ -34,7 +37,7 @@ public LoginWith2faModel(SignInManager signInManager, ILogger OnGetAsync(bool rememberMe, string returnUrl = if (user == null) { - throw new InvalidOperationException($"Unable to load two-factor authentication user."); + throw new InvalidOperationException(_localizer[$"Unable to load two-factor authentication user."]); } ReturnUrl = returnUrl; @@ -71,7 +74,7 @@ public async Task OnPostAsync(bool rememberMe, string returnUrl = var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { - throw new InvalidOperationException($"Unable to load two-factor authentication user."); + throw new InvalidOperationException(_localizer[$"Unable to load two-factor authentication user."]); } var authenticatorCode = Input.TwoFactorCode.Replace(" ", string.Empty).Replace("-", string.Empty); @@ -91,7 +94,7 @@ public async Task OnPostAsync(bool rememberMe, string returnUrl = else { _logger.LogWarning("Invalid authenticator code entered for user with ID '{UserId}'.", user.Id); - ModelState.AddModelError(string.Empty, "Invalid authenticator code."); + ModelState.AddModelError(string.Empty, _localizer["Invalid authenticator code."]); return Page(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/LoginWithRecoveryCode.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/LoginWithRecoveryCode.cshtml.cs index 639be2c..492edb8 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/LoginWithRecoveryCode.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/LoginWithRecoveryCode.cshtml.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account @@ -17,11 +18,13 @@ public class LoginWithRecoveryCodeModel : PageModel { private readonly SignInManager _signInManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; - public LoginWithRecoveryCodeModel(SignInManager signInManager, ILogger logger) + public LoginWithRecoveryCodeModel(SignInManager signInManager, ILogger logger, IStringLocalizer localizer) { _signInManager = signInManager; _logger = logger; + _localizer = localizer; } [BindProperty] @@ -44,7 +47,7 @@ public async Task OnGetAsync(string returnUrl = null) var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { - throw new InvalidOperationException($"Unable to load two-factor authentication user."); + throw new InvalidOperationException(_localizer[$"Unable to load two-factor authentication user."]); } ReturnUrl = returnUrl; @@ -62,7 +65,7 @@ public async Task OnPostAsync(string returnUrl = null) var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { - throw new InvalidOperationException($"Unable to load two-factor authentication user."); + throw new InvalidOperationException(_localizer[$"Unable to load two-factor authentication user."]); } var recoveryCode = Input.RecoveryCode.Replace(" ", string.Empty); @@ -82,7 +85,7 @@ public async Task OnPostAsync(string returnUrl = null) else { _logger.LogWarning("Invalid recovery code entered for user with ID '{UserId}' ", user.Id); - ModelState.AddModelError(string.Empty, "Invalid recovery code entered."); + ModelState.AddModelError(string.Empty, _localizer["Invalid recovery code entered."]); return Page(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/ChangePassword.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/ChangePassword.cshtml.cs index 46e559c..277f968 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/ChangePassword.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/ChangePassword.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -15,15 +16,18 @@ public class ChangePasswordModel : PageModel private readonly UserManager _userManager; private readonly SignInManager _signInManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public ChangePasswordModel( UserManager userManager, SignInManager signInManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _logger = logger; + _localizer = localizer; } [BindProperty] @@ -34,13 +38,13 @@ public ChangePasswordModel( public class InputModel { - [Required] + [Required(ErrorMessage = "Old Password is required")] [DataType(DataType.Password)] [Display(Name = "Current password")] public string OldPassword { get; set; } - [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [Required(ErrorMessage = "New password is required")] + [StringLength(100, ErrorMessage = "The Password must be at least {2} and at max {1} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "New password")] public string NewPassword { get; set; } @@ -56,7 +60,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var hasPassword = await _userManager.HasPasswordAsync(user); @@ -78,7 +82,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var changePasswordResult = await _userManager.ChangePasswordAsync(user, Input.OldPassword, Input.NewPassword); @@ -93,7 +97,7 @@ public async Task OnPostAsync() await _signInManager.RefreshSignInAsync(user); _logger.LogInformation("User changed their password successfully."); - StatusMessage = "Your password has been changed."; + StatusMessage = _localizer["Your password has been changed."]; return RedirectToPage(); } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/DeletePersonalData.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/DeletePersonalData.cshtml.cs index 645008a..36d7259 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/DeletePersonalData.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/DeletePersonalData.cshtml.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -14,15 +15,18 @@ public class DeletePersonalDataModel : PageModel private readonly UserManager _userManager; private readonly SignInManager _signInManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public DeletePersonalDataModel( UserManager userManager, SignInManager signInManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _logger = logger; + _localizer = localizer; } [BindProperty] @@ -30,7 +34,8 @@ public DeletePersonalDataModel( public class InputModel { - [Required] + [Required(ErrorMessage = "Password is required")] + [Display(Name = "Password")] [DataType(DataType.Password)] public string Password { get; set; } } @@ -42,7 +47,7 @@ public async Task OnGet() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } RequirePassword = await _userManager.HasPasswordAsync(user); @@ -54,7 +59,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } RequirePassword = await _userManager.HasPasswordAsync(user); @@ -62,7 +67,7 @@ public async Task OnPostAsync() { if (!await _userManager.CheckPasswordAsync(user, Input.Password)) { - ModelState.AddModelError(string.Empty, "Incorrect password."); + ModelState.AddModelError(string.Empty, _localizer["Incorrect password."]); return Page(); } } @@ -71,7 +76,7 @@ public async Task OnPostAsync() var userId = await _userManager.GetUserIdAsync(user); if (!result.Succeeded) { - throw new InvalidOperationException($"Unexpected error occurred deleting user with ID '{userId}'."); + throw new InvalidOperationException(string.Format(_localizer[$"Unexpected error occurred deleting user with ID '{0}'."], userId)); } await _signInManager.SignOutAsync(); diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/Disable2fa.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/Disable2fa.cshtml.cs index e727c50..eac47df 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/Disable2fa.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/Disable2fa.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -14,13 +15,16 @@ public class Disable2faModel : PageModel { private readonly UserManager _userManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public Disable2faModel( UserManager userManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _logger = logger; + _localizer = localizer; } [TempData] @@ -31,12 +35,12 @@ public async Task OnGet() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } if (!await _userManager.GetTwoFactorEnabledAsync(user)) { - throw new InvalidOperationException($"Cannot disable 2FA for user with ID '{_userManager.GetUserId(User)}' as it's not currently enabled."); + throw new InvalidOperationException(string.Format(_localizer[$"Cannot disable 2FA for user with ID '{0}' as it's not currently enabled."], _userManager.GetUserId(User))); } return Page(); @@ -47,17 +51,17 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var disable2faResult = await _userManager.SetTwoFactorEnabledAsync(user, false); if (!disable2faResult.Succeeded) { - throw new InvalidOperationException($"Unexpected error occurred disabling 2FA for user with ID '{_userManager.GetUserId(User)}'."); + throw new InvalidOperationException(string.Format(_localizer[$"Unexpected error occurred disabling 2FA for user with ID '{0}'."], _userManager.GetUserId(User))); } _logger.LogInformation("User with ID '{UserId}' has disabled 2fa.", _userManager.GetUserId(User)); - StatusMessage = "2fa has been disabled. You can reenable 2fa when you setup an authenticator app"; + StatusMessage = _localizer["2fa has been disabled. You can reenable 2fa when you setup an authenticator app"]; return RedirectToPage("./TwoFactorAuthentication"); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml.cs index 47b92e6..b1d4829 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/DownloadPersonalData.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Newtonsoft.Json; @@ -16,13 +17,16 @@ public class DownloadPersonalDataModel : PageModel { private readonly UserManager _userManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public DownloadPersonalDataModel( UserManager userManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _logger = logger; + _localizer = localizer; } public async Task OnPostAsync() @@ -30,7 +34,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } _logger.LogInformation("User with ID '{UserId}' asked for their personal data.", _userManager.GetUserId(User)); diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/Email.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/Email.cshtml.cs index 093be6c..0085397 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/Email.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/Email.cshtml.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; using AJS.Data.Models; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -19,19 +20,23 @@ public partial class EmailModel : PageModel private readonly UserManager _userManager; private readonly SignInManager _signInManager; private readonly IEmailSender _emailSender; + private readonly IStringLocalizer _localizer; public EmailModel( UserManager userManager, SignInManager signInManager, - IEmailSender emailSender) + IEmailSender emailSender, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _emailSender = emailSender; + _localizer = localizer; } public string Username { get; set; } + [Display(Name = "Email")] public string Email { get; set; } public bool IsEmailConfirmed { get; set; } @@ -44,8 +49,8 @@ public EmailModel( public class InputModel { - [Required] - [EmailAddress] + [Required(ErrorMessage = "Email is Required")] + [EmailAddress(ErrorMessage = "Invalid Email")] [Display(Name = "New email")] public string NewEmail { get; set; } } @@ -68,7 +73,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } await LoadAsync(user); @@ -80,7 +85,7 @@ public async Task OnPostChangeEmailAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } if (!ModelState.IsValid) @@ -104,11 +109,11 @@ await _emailSender.SendEmailAsync( "Confirm your email", $"Please confirm your account by clicking here."); - StatusMessage = "Confirmation link to change email sent. Please check your email."; + StatusMessage = _localizer["Confirmation link to change email sent. Please check your email."]; return RedirectToPage(); } - StatusMessage = "Your email is unchanged."; + StatusMessage = _localizer["Your email is unchanged."]; return RedirectToPage(); } @@ -117,7 +122,7 @@ public async Task OnPostSendVerificationEmailAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } if (!ModelState.IsValid) @@ -140,7 +145,7 @@ await _emailSender.SendEmailAsync( "Confirm your email", $"Please confirm your account by clicking here."); - StatusMessage = "Verification email sent. Please check your email."; + StatusMessage = _localizer["Verification email sent. Please check your email."]; return RedirectToPage(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml.cs index 580b0f8..fbe3fc0 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using AJS.Data.Models; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -19,17 +20,20 @@ public class EnableAuthenticatorModel : PageModel private readonly UserManager _userManager; private readonly ILogger _logger; private readonly UrlEncoder _urlEncoder; + private readonly IStringLocalizer _localizer; private const string AuthenticatorUriFormat = "otpauth://totp/{0}:{1}?secret={2}&issuer={0}&digits=6"; public EnableAuthenticatorModel( UserManager userManager, ILogger logger, - UrlEncoder urlEncoder) + UrlEncoder urlEncoder, + IStringLocalizer localizer) { _userManager = userManager; _logger = logger; _urlEncoder = urlEncoder; + _localizer = localizer; } public string SharedKey { get; set; } @@ -47,8 +51,8 @@ public EnableAuthenticatorModel( public class InputModel { - [Required] - [StringLength(7, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [Required(ErrorMessage = "Verification Code is required")] + [StringLength(7, ErrorMessage = "The Verification Code must be at least {2} and at max {1} characters long.", MinimumLength = 6)] [DataType(DataType.Text)] [Display(Name = "Verification Code")] public string Code { get; set; } @@ -59,7 +63,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } await LoadSharedKeyAndQrCodeUriAsync(user); @@ -72,7 +76,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } if (!ModelState.IsValid) @@ -89,7 +93,7 @@ public async Task OnPostAsync() if (!is2faTokenValid) { - ModelState.AddModelError("Input.Code", "Verification code is invalid."); + ModelState.AddModelError("Input.Code", _localizer["Verification code is invalid."]); await LoadSharedKeyAndQrCodeUriAsync(user); return Page(); } @@ -98,7 +102,7 @@ public async Task OnPostAsync() var userId = await _userManager.GetUserIdAsync(user); _logger.LogInformation("User with ID '{UserId}' has enabled 2FA with an authenticator app.", userId); - StatusMessage = "Your authenticator app has been verified."; + StatusMessage = _localizer["Your authenticator app has been verified."]; if (await _userManager.CountRecoveryCodesAsync(user) == 0) { diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/ExternalLogins.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/ExternalLogins.cshtml.cs index a7fb0ce..74064ab 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/ExternalLogins.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/ExternalLogins.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -14,13 +15,16 @@ public class ExternalLoginsModel : PageModel { private readonly UserManager _userManager; private readonly SignInManager _signInManager; + private readonly IStringLocalizer _localizer; public ExternalLoginsModel( UserManager userManager, - SignInManager signInManager) + SignInManager signInManager, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; + _localizer = localizer; } public IList CurrentLogins { get; set; } @@ -37,7 +41,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } CurrentLogins = await _userManager.GetLoginsAsync(user); @@ -53,18 +57,18 @@ public async Task OnPostRemoveLoginAsync(string loginProvider, st var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var result = await _userManager.RemoveLoginAsync(user, loginProvider, providerKey); if (!result.Succeeded) { - StatusMessage = "The external login was not removed."; + StatusMessage = _localizer["The external login was not removed."]; return RedirectToPage(); } await _signInManager.RefreshSignInAsync(user); - StatusMessage = "The external login was removed."; + StatusMessage = _localizer["The external login was removed."]; return RedirectToPage(); } @@ -84,26 +88,26 @@ public async Task OnGetLinkLoginCallbackAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var info = await _signInManager.GetExternalLoginInfoAsync(await _userManager.GetUserIdAsync(user)); if (info == null) { - throw new InvalidOperationException($"Unexpected error occurred loading external login info for user with ID '{user.Id}'."); + throw new InvalidOperationException(string.Format(_localizer[$"Unexpected error occurred loading external login info for user with ID '{0}'."], user.Id)); } var result = await _userManager.AddLoginAsync(user, info); if (!result.Succeeded) { - StatusMessage = "The external login was not added. External logins can only be associated with one account."; + StatusMessage = _localizer["The external login was not added. External logins can only be associated with one account."]; return RedirectToPage(); } // Clear the existing external cookie to ensure a clean login process await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme); - StatusMessage = "The external login was added."; + StatusMessage = _localizer["The external login was added."]; return RedirectToPage(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodes.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodes.cshtml.cs index 13074af..335295d 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodes.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodes.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -14,13 +15,16 @@ public class GenerateRecoveryCodesModel : PageModel { private readonly UserManager _userManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public GenerateRecoveryCodesModel( UserManager userManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager)); _logger = logger; + _localizer = localizer; } [TempData] @@ -34,14 +38,14 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var isTwoFactorEnabled = await _userManager.GetTwoFactorEnabledAsync(user); if (!isTwoFactorEnabled) { var userId = await _userManager.GetUserIdAsync(user); - throw new InvalidOperationException($"Cannot generate recovery codes for user with ID '{userId}' because they do not have 2FA enabled."); + throw new InvalidOperationException(string.Format(_localizer[$"Cannot generate recovery codes for user with ID '{0}' because they do not have 2FA enabled."], userId)); } return Page(); @@ -52,21 +56,21 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var isTwoFactorEnabled = await _userManager.GetTwoFactorEnabledAsync(user); var userId = await _userManager.GetUserIdAsync(user); if (!isTwoFactorEnabled) { - throw new InvalidOperationException($"Cannot generate recovery codes for user with ID '{userId}' as they do not have 2FA enabled."); + throw new InvalidOperationException(string.Format(_localizer[$"Cannot generate recovery codes for user with ID '{0}' because they do not have 2FA enabled."], userId)); } var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10); RecoveryCodes = recoveryCodes.ToArray(); _logger.LogInformation("User with ID '{UserId}' has generated new 2FA recovery codes.", userId); - StatusMessage = "You have generated new recovery codes."; + StatusMessage = _localizer["You have generated new recovery codes."]; return RedirectToPage("./ShowRecoveryCodes"); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs index 9353098..beaa3e5 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/Index.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -14,15 +15,18 @@ public partial class IndexModel : PageModel { private readonly UserManager _userManager; private readonly SignInManager _signInManager; + private readonly IStringLocalizer _Localizer; public IndexModel( UserManager userManager, - SignInManager signInManager) + SignInManager signInManager, + IStringLocalizer Localizer) { _userManager = userManager; _signInManager = signInManager; + _Localizer = Localizer; } - + [Display(Name = "User name")] public string Username { get; set; } [TempData] @@ -33,7 +37,7 @@ public IndexModel( public class InputModel { - [Phone] + [Phone(ErrorMessage = "Invalid Phone Number")] [Display(Name = "Phone number")] public string PhoneNumber { get; set; } } @@ -42,7 +46,7 @@ private async Task LoadAsync(User user) { var userName = await _userManager.GetUserNameAsync(user); var phoneNumber = await _userManager.GetPhoneNumberAsync(user); - + Username = userName; Input = new InputModel @@ -56,7 +60,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_Localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } await LoadAsync(user); @@ -68,7 +72,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_Localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } if (!ModelState.IsValid) @@ -84,12 +88,12 @@ public async Task OnPostAsync() if (!setPhoneResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); - throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'."); + throw new InvalidOperationException(string.Format(_Localizer[$"Unexpected error occurred setting phone number for user with ID '{0}'."], userId)); } } await _signInManager.RefreshSignInAsync(user); - StatusMessage = "Your profile has been updated"; + StatusMessage = _Localizer["Your profile has been updated"]; return RedirectToPage(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/PersonalData.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/PersonalData.cshtml.cs index 622d453..950c2ef 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/PersonalData.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/PersonalData.cshtml.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -11,13 +12,16 @@ public class PersonalDataModel : PageModel { private readonly UserManager _userManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public PersonalDataModel( UserManager userManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager ?? throw new System.ArgumentNullException(nameof(userManager)); _logger = logger; + _localizer = localizer; } public async Task OnGet() @@ -25,7 +29,7 @@ public async Task OnGet() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } return Page(); diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/ResetAuthenticator.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/ResetAuthenticator.cshtml.cs index c8c8f79..6c67aa1 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/ResetAuthenticator.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/ResetAuthenticator.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -15,15 +16,18 @@ public class ResetAuthenticatorModel : PageModel UserManager _userManager; private readonly SignInManager _signInManager; ILogger _logger; + private readonly IStringLocalizer _localizer; public ResetAuthenticatorModel( UserManager userManager, SignInManager signInManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _logger = logger; + _localizer = localizer; } [TempData] @@ -34,7 +38,7 @@ public async Task OnGet() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } return Page(); @@ -45,7 +49,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } await _userManager.SetTwoFactorEnabledAsync(user, false); @@ -53,7 +57,7 @@ public async Task OnPostAsync() _logger.LogInformation("User with ID '{UserId}' has reset their authentication app key.", user.Id); await _signInManager.RefreshSignInAsync(user); - StatusMessage = "Your authenticator app key has been reset, you will need to configure your authenticator app using the new key."; + StatusMessage = _localizer["Your authenticator app key has been reset, you will need to configure your authenticator app using the new key."]; return RedirectToPage("./EnableAuthenticator"); } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/SetPassword.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/SetPassword.cshtml.cs index 9398274..5d5b8ae 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/SetPassword.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/SetPassword.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account.Manage { @@ -14,13 +15,16 @@ public class SetPasswordModel : PageModel { private readonly UserManager _userManager; private readonly SignInManager _signInManager; + private readonly IStringLocalizer _localizer; public SetPasswordModel( UserManager userManager, - SignInManager signInManager) + SignInManager signInManager, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; + _localizer = localizer; } [BindProperty] @@ -31,8 +35,8 @@ public SetPasswordModel( public class InputModel { - [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [Required(ErrorMessage = "New Password is Required")] + [StringLength(100, ErrorMessage = "The New Password must be at least {2} and at max {1} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "New password")] public string NewPassword { get; set; } @@ -48,7 +52,7 @@ public async Task OnGetAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var hasPassword = await _userManager.HasPasswordAsync(user); @@ -71,7 +75,7 @@ public async Task OnPostAsync() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } var addPasswordResult = await _userManager.AddPasswordAsync(user, Input.NewPassword); @@ -85,7 +89,7 @@ public async Task OnPostAsync() } await _signInManager.RefreshSignInAsync(user); - StatusMessage = "Your password has been set."; + StatusMessage = _localizer["Your password has been set."]; return RedirectToPage(); } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml b/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml index 665f813..23cc762 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml @@ -43,7 +43,7 @@ @Localizer["Reset recovery codes"] } -
Authenticator app
+
@Localizer["Authenticator app"]
@if (!Model.HasAuthenticator) { @Localizer["Add authenticator app"] diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml.cs index 00a3fcd..77ead31 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; namespace AJS.Web.Areas.Identity.Pages.Account.Manage @@ -17,15 +18,18 @@ public class TwoFactorAuthenticationModel : PageModel private readonly UserManager _userManager; private readonly SignInManager _signInManager; private readonly ILogger _logger; + private readonly IStringLocalizer _localizer; public TwoFactorAuthenticationModel( UserManager userManager, SignInManager signInManager, - ILogger logger) + ILogger logger, + IStringLocalizer localizer) { _userManager = userManager; _signInManager = signInManager; _logger = logger; + _localizer = localizer; } public bool HasAuthenticator { get; set; } @@ -45,7 +49,7 @@ public async Task OnGet() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } HasAuthenticator = await _userManager.GetAuthenticatorKeyAsync(user) != null; @@ -61,11 +65,11 @@ public async Task OnPost() var user = await _userManager.GetUserAsync(User); if (user == null) { - return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with ID '{0}'."], _userManager.GetUserId(User))); } await _signInManager.ForgetTwoFactorClientAsync(); - StatusMessage = "The current browser has been forgotten. When you login again from this browser you will be prompted for your 2fa code."; + StatusMessage = _localizer["The current browser has been forgotten. When you login again from this browser you will be prompted for your 2fa code."]; return RedirectToPage(); } } diff --git a/AJS.Web/Areas/Identity/Pages/Account/Manage/_Layout.cshtml b/AJS.Web/Areas/Identity/Pages/Account/Manage/_Layout.cshtml index efb8e25..0db5183 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Manage/_Layout.cshtml +++ b/AJS.Web/Areas/Identity/Pages/Account/Manage/_Layout.cshtml @@ -1,7 +1,7 @@ @inject IViewLocalizer Localizer @{ - Layout = "/Areas/Identity/Pages/_Layout.cshtml"; + Layout = "~/Views/Shared/_Layout.cshtml"; }

@Localizer["Manage your account"]

diff --git a/AJS.Web/Areas/Identity/Pages/Account/Register.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/Register.cshtml.cs index c946d27..fe86b2b 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/Register.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/Register.cshtml.cs @@ -46,13 +46,13 @@ public RegisterModel( public class InputModel { - [Required] - [EmailAddress] + [Required(ErrorMessage = "Email is required")] + [EmailAddress(ErrorMessage = "Email is not valid")] [Display(Name = "Email")] public string Email { get; set; } - [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [Required(ErrorMessage = "Password is required")] + [StringLength(100, ErrorMessage = "The Password must be at least {2} and at max {1} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } diff --git a/AJS.Web/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml.cs index 0e7e316..e5c3ce8 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/RegisterConfirmation.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; using AJS.Data.Models; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account { @@ -15,11 +16,13 @@ public class RegisterConfirmationModel : PageModel { private readonly UserManager _userManager; private readonly IEmailSender _sender; + private readonly IStringLocalizer _localizer; - public RegisterConfirmationModel(UserManager userManager, IEmailSender sender) + public RegisterConfirmationModel(UserManager userManager, IEmailSender sender, IStringLocalizer localizer) { _userManager = userManager; _sender = sender; + _localizer = localizer; } public string Email { get; set; } @@ -38,7 +41,7 @@ public async Task OnGetAsync(string email) var user = await _userManager.FindByEmailAsync(email); if (user == null) { - return NotFound($"Unable to load user with email '{email}'."); + return NotFound(string.Format(_localizer[$"Unable to load user with email '{0}'."], email)); } Email = email; diff --git a/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml b/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml index d848707..f251722 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml +++ b/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml @@ -7,7 +7,7 @@ }

@ViewData["Title"]

-

Reset your password.

+

@Localizer["Reset your password."]


diff --git a/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml.cs b/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml.cs index d23054b..de63665 100644 --- a/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml.cs +++ b/AJS.Web/Areas/Identity/Pages/Account/ResetPassword.cshtml.cs @@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.WebUtilities; +using Microsoft.Extensions.Localization; namespace AJS.Web.Areas.Identity.Pages.Account { @@ -17,10 +18,12 @@ namespace AJS.Web.Areas.Identity.Pages.Account public class ResetPasswordModel : PageModel { private readonly UserManager _userManager; + private readonly IStringLocalizer _localizer; - public ResetPasswordModel(UserManager userManager) + public ResetPasswordModel(UserManager userManager, IStringLocalizer localizer) { _userManager = userManager; + _localizer = localizer; } [BindProperty] @@ -33,7 +36,7 @@ public class InputModel public string Email { get; set; } [Required] - [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)] + [StringLength(100, ErrorMessage = "The Password must be at least {2} and at max {1} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] public string Password { get; set; } @@ -49,7 +52,7 @@ public IActionResult OnGet(string code = null) { if (code == null) { - return BadRequest("A code must be supplied for password reset."); + return BadRequest(_localizer["A code must be supplied for password reset."]); } else { diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.bg.resx new file mode 100644 index 0000000..ea532bc --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.bg.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Грешка при смяна на имейла. + Error changing email. + + + Грешка при смяна на името на потребитела. + Error changing user name. + + + Благодарим ви, че потвърдихте промяната на имейла си. + Thank you for confirming your email change. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.en.resx new file mode 100644 index 0000000..a8f64a0 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailChangeModel.en.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Error changing email. + Error changing email. + + + Error changing user name. + Error changing user name. + + + Thank you for confirming your email change. + Thank you for confirming your email change. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.bg.resx new file mode 100644 index 0000000..8660131 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Грешка при потвърждаването на имейла ви. + Error confirming your email. + + + Благодарим ви, че потвърдихте имейла си. + Thank you for confirming your email. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.en.resx new file mode 100644 index 0000000..bf4d9bb --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ConfirmEmailModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Error confirming your email. + Error confirming your email. + + + Thank you for confirming your email. + Thank you for confirming your email. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.bg.resx new file mode 100644 index 0000000..8f89f83 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Имейла е задължителен. + Email is required + + + Невалиден имейл. + Invalid email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.en.resx new file mode 100644 index 0000000..0beb9db --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel+InputModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Email is required + Email is required + + + Invalid email + Invalid email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.bg.resx new file mode 100644 index 0000000..f55d467 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Грешка от външен доставчик: {0} + Error from external provider: {0} + + + Грешка при зареждането на външна информация за вход по време на потвърждение. + Error loading external login information during confirmation. + + + Грешка при зареждане на външна информация за вход. + Error loading external login information. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.en.resx new file mode 100644 index 0000000..d96b184 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ExternalLoginModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Error from external provider: {0} + Error from external provider: {0} + + + Error loading external login information during confirmation. + Error loading external login information during confirmation. + + + Error loading external login information. + Error loading external login information. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.bg.resx index 2e6a68a..f2276fa 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.bg.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.bg.resx @@ -117,6 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Въведи имейл + Enter your email. + Забравена парола? Forgot your password? diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.en.resx index 408cb26..a45754b 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.en.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPassword.en.resx @@ -117,6 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Enter your email. + Enter your email. + Forgot your password? Forgot your password? diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.bg.resx new file mode 100644 index 0000000..64c2718 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Имейл + Email + + + Имейла е задължителен. + Email is required + + + Невалиден имейл. + Invalid email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.en.resx new file mode 100644 index 0000000..4f300a1 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ForgotPasswordModel+InputModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Email + Email + + + Email is required + Email is required + + + Invalid email + Invalid email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.bg.resx new file mode 100644 index 0000000..9133bcb --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.bg.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Имейл + Email + + + Имейла е задължителен. + Email is required + + + Невалиден имейл. + Invalid email + + + Парола + Password + + + Паролата е задължителна. + Password is required + + + Запомни ме? + Remember me? + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.en.resx new file mode 100644 index 0000000..a6b78b2 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel+InputModel.en.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Email + Email + + + Email is required + Email is required + + + Invalid email + Invalid email + + + Password + Password + + + Password is required + Password is required + + + Remember me? + Remember me? + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.bg.resx new file mode 100644 index 0000000..5d287f5 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Невалиден опит за влизане. + Invalid login attempt. + + + Изпратен е имейл за потвърждение. Моля, проверете електронната си поща. + Verification email sent. Please check your email. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.en.resx new file mode 100644 index 0000000..25b5764 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Invalid login attempt. + Invalid login attempt. + + + Verification email sent. Please check your email. + Verification email sent. Please check your email. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.bg.resx new file mode 100644 index 0000000..298b20b --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Код за удостоверяване + Authenticator code + + + Запомни тази машина + Remember this machine + + + Кодът за удостоверяване трябва да бъде най-малко {2} и максимум {1} знака. + The authenticator code must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.en.resx new file mode 100644 index 0000000..01fa7fc --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel+InputModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Authenticator code + Authenticator code + + + Remember this machine + Remember this machine + + + The authenticator code must be at least {2} and at max {1} characters long. + The authenticator code must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.bg.resx new file mode 100644 index 0000000..b667683 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Невалиден код за удостоверяване + Invalid authenticator code. + + + Потребителят с дву-факторно удостоверяване не може да се зареди. + Unable to load two-factor authentication user. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.en.resx new file mode 100644 index 0000000..a7b5709 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWith2faModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Invalid authenticator code. + Invalid authenticator code. + + + Unable to load two-factor authentication user. + Unable to load two-factor authentication user. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.bg.resx new file mode 100644 index 0000000..c340e93 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.bg.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Код за въстановяване + Recovery Code + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.en.resx new file mode 100644 index 0000000..f242d8f --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel+InputModel.en.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Recovery Code + Recovery Code + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.bg.resx new file mode 100644 index 0000000..dc33b78 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Въведен е невалиден код за възстановяване. + Invalid recovery code entered. + + + Потребителят за дву-факторно удостоверяване не може да се зареди. + Unable to load two-factor authentication user. InvalidOperationException message + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.en.resx new file mode 100644 index 0000000..44677a2 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/LoginWithRecoveryCodeModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Invalid recovery code entered. + Invalid recovery code entered. + + + Unable to load two-factor authentication user. + Unable to load two-factor authentication user. InvalidOperationException message + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.bg.resx new file mode 100644 index 0000000..61911f0 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.bg.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Потвърждение на новата парола + Confirm new password + + + Текуща парола + Current password + + + Нова парола + New password + + + Новата парола е задължителна + New password is required + + + Старата парола е задължителна + Old Password is required + + + Новата парола и паролата за потвърждение не съвпадат. + The new password and confirmation password do not match. + + + Паролата трябва да бъде най-малко {2} и максимум {1} знака. + The Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.en.resx new file mode 100644 index 0000000..5701259 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel+InputModel.en.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm new password + Confirm new password + + + Current password + Current password + + + New password + New password + + + New password is required + New password is required + + + Old Password is required + Old Password is required + + + The new password and confirmation password do not match. + The new password and confirmation password do not match. + + + The Password must be at least {2} and at max {1} characters long. + The Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.bg.resx new file mode 100644 index 0000000..768e260 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Паролата ви е сменена успешно. + Your password has been changed. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.en.resx new file mode 100644 index 0000000..0f55c77 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ChangePasswordModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Your password has been changed. + Your password has been changed. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalData.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalData.bg.resx index 6682269..75d708c 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalData.bg.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalData.bg.resx @@ -122,7 +122,7 @@ Delete data and close my account - Delete Personal Data + Изтриване на персоналните данни Delete Personal Data diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.bg.resx new file mode 100644 index 0000000..3ca1d44 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Парола + Password + + + Паролата е задължителна + Password is required + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.en.resx new file mode 100644 index 0000000..526bf45 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel+InputModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Password + Password + + + Password is required + Password is required + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.bg.resx new file mode 100644 index 0000000..749ae29 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Грешна парола. + Incorrect password. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Възникна неочаквана грешка при изтриването на потребителя с идентификатор '{0}'. + Unexpected error occurred deleting user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.en.resx new file mode 100644 index 0000000..5e2378c --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DeletePersonalDataModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Incorrect password. + Incorrect password. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Unexpected error occurred deleting user with ID '{0}'. + Unexpected error occurred deleting user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.bg.resx new file mode 100644 index 0000000..e24a66b --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.bg.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2fa е деактивиран. Можете да активирате 2fa, когато настроите приложение за удостоверяване + 2fa has been disabled. You can reenable 2fa when you setup an authenticator app + + + Не може да деактивира 2FA за потребител с идентификатор '{0}', тъй като в момента не е активиран. + Cannot disable 2FA for user with ID '{0}' as it's not currently enabled. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Възникна неочаквана грешка при деактивиране на 2FA за потребител с идентификатор '{0}'. + Unexpected error occurred disabling 2FA for user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.en.resx new file mode 100644 index 0000000..8980239 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/Disable2faModel.en.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2fa has been disabled. You can reenable 2fa when you setup an authenticator app + 2fa has been disabled. You can reenable 2fa when you setup an authenticator app + + + Cannot disable 2FA for user with ID '{0}' as it's not currently enabled. + Cannot disable 2FA for user with ID '{0}' as it's not currently enabled. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Unexpected error occurred disabling 2FA for user with ID '{0}'. + Unexpected error occurred disabling 2FA for user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.bg.resx new file mode 100644 index 0000000..5956c03 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.bg.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.en.resx new file mode 100644 index 0000000..1be11d5 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/DownloadPersonalDataModel.en.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.bg.resx new file mode 100644 index 0000000..f0d0945 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Имейла е задължителен + Email is Required + + + Невалиден имейл + Invalid Email + + + Нов имейл + New email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.en.resx new file mode 100644 index 0000000..f596258 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel+InputModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Email is Required + Email is Required + + + Invalid Email + Invalid Email + + + New email + New email + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.bg.resx new file mode 100644 index 0000000..58501b5 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.bg.resx @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Връзка за потвърждение за промяна на изпратения имейл. Моля, проверете електронната си поща. + Confirmation link to change email sent. Please check your email. + + + Имейл + Email + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Изпратен е имейл за потвърждение. Моля, проверете електронната си поща. + Verification email sent. Please check your email. + + + Вашият имейл е непроменен. + Your email is unchanged. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.en.resx new file mode 100644 index 0000000..79448b3 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EmailModel.en.resx @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirmation link to change email sent. Please check your email. + Confirmation link to change email sent. Please check your email. + + + Email + Email + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Verification email sent. Please check your email. + Verification email sent. Please check your email. + + + Your email is unchanged. + Your email is unchanged. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.bg.resx new file mode 100644 index 0000000..7effa9f --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Кодът за потвърждение трябва да бъде най-малко {2} и максимум {1} знака. + The Verification Code must be at least {2} and at max {1} characters long. + + + Код за потвърждение + Verification Code + + + Изисква се код за потвърждение + Verification Code is required + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.en.resx new file mode 100644 index 0000000..bf0cd1a --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel+InputModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The Verification Code must be at least {2} and at max {1} characters long. + The Verification Code must be at least {2} and at max {1} characters long. + + + Verification Code + Verification Code + + + Verification Code is required + Verification Code is required + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.bg.resx new file mode 100644 index 0000000..61971be --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Кодът за потвърждение е невалиден. + Verification code is invalid. + + + Вашето приложение за удостоверяване е потвърдено. + Your authenticator app has been verified. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.en.resx new file mode 100644 index 0000000..aa6dbab --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/EnableAuthenticatorModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Verification code is invalid. + Verification code is invalid. + + + Your authenticator app has been verified. + Your authenticator app has been verified. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.bg.resx new file mode 100644 index 0000000..844c745 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.bg.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавено е външното влизане. + The external login was added. + + + Външното влизане не беше добавено. Външните влизания могат да бъдат свързани само с един акаунт. + The external login was not added. External logins can only be associated with one account. + + + Външното влизане не беше премахнато. + The external login was not removed. + + + Външното влизане беше премахнато. + The external login was removed. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Възникна неочаквана грешка при зареждането на външна информация за вход за потребител с идентификатор '{0}'. + Unexpected error occurred loading external login info for user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.en.resx new file mode 100644 index 0000000..cba9ed1 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ExternalLoginsModel.en.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The external login was added. + The external login was added. + + + The external login was not added. External logins can only be associated with one account. + The external login was not added. External logins can only be associated with one account. + + + The external login was not removed. + The external login was not removed. + + + The external login was removed. + The external login was removed. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Unexpected error occurred loading external login info for user with ID '{0}'. + Unexpected error occurred loading external login info for user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.bg.resx new file mode 100644 index 0000000..2eed606 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не мога да генерирам кодове за възстановяване за потребител с идентификатор '{0}', тъй като те не са активирани 2FA. + Cannot generate recovery codes for user with ID '{0}' because they do not have 2FA enabled. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Генерирахте нови кодове за възстановяване. + You have generated new recovery codes. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.en.resx new file mode 100644 index 0000000..d2f45be --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/GenerateRecoveryCodesModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cannot generate recovery codes for user with ID '{0}' because they do not have 2FA enabled. + Cannot generate recovery codes for user with ID '{0}' because they do not have 2FA enabled. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + You have generated new recovery codes. + You have generated new recovery codes. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.bg.resx new file mode 100644 index 0000000..0330a19 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Невалиден телефонен номер + Invalid Phone Number + + + Телефонен номер + Phone number + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.en.resx new file mode 100644 index 0000000..8e3aa98 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel+InputModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Invalid Phone Number + Invalid Phone Number + + + Phone number + Phone number + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.bg.resx new file mode 100644 index 0000000..5d198d7 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.bg.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Възникна неочаквана грешка при настройката на телефонен номер за потребител с идентификатор „{0}“. + Unexpected error occurred setting phone number for user with ID '{0}'. + + + Потребителско име + User name + + + Вашият профил е актуализиран + Your profile has been updated + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.en.resx new file mode 100644 index 0000000..ef0373f --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/IndexModel.en.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Unexpected error occurred setting phone number for user with ID '{0}'. + Unexpected error occurred setting phone number for user with ID '{0}'. + + + User name + User name + + + Your profile has been updated + Your profile has been updated + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.bg.resx new file mode 100644 index 0000000..5956c03 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.bg.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.en.resx new file mode 100644 index 0000000..1be11d5 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/PersonalDataModel.en.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.bg.resx new file mode 100644 index 0000000..dd8dbf2 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Ключът за приложението ви за автентификатор е нулиран, ще трябва да конфигурирате приложението си за удостоверяване чрез новия ключ. + Your authenticator app key has been reset, you will need to configure your authenticator app using the new key. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.en.resx new file mode 100644 index 0000000..f43ad4e --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/ResetAuthenticatorModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Your authenticator app key has been reset, you will need to configure your authenticator app using the new key. + Your authenticator app key has been reset, you will need to configure your authenticator app using the new key. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.bg.resx new file mode 100644 index 0000000..e9fb171 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.bg.resx @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Потвърждение на новата парола + Confirm new password + + + Нова парола + New password + + + Новата парола е задължителна + New Password is Required + + + Новата парола и паролата за потвърждение не съвпадат. + The new password and confirmation password do not match. + + + Новата парола трябва да бъде най-малко {2} и максимум {1} знака. + The New Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.en.resx new file mode 100644 index 0000000..b73c0d9 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel+InputModel.en.resx @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm new password + Confirm new password + + + New password + New password + + + New Password is Required + New Password is Required + + + The new password and confirmation password do not match. + The new password and confirmation password do not match. + + + The New Password must be at least {2} and at max {1} characters long. + The New Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.bg.resx new file mode 100644 index 0000000..c29841a --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + + Вашата парола е зададена. + Your password has been set. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.en.resx new file mode 100644 index 0000000..c17295b --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/SetPasswordModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + + Your password has been set. + Your password has been set. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.bg.resx index c700ed1..257a02b 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.bg.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.bg.resx @@ -121,6 +121,10 @@ Добавете приложение за удостоверяване Add authenticator app + + Приложение за удостоверяване + Authenticator app + преди да можете да влезете с код за възстановяване. before you can log in with a recovery code. diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.en.resx index f096721..5f3857c 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.en.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthentication.en.resx @@ -121,6 +121,10 @@ Add authenticator app Add authenticator app + + Authenticator app + Authenticator app + before you can log in with a recovery code. before you can log in with a recovery code. diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.bg.resx new file mode 100644 index 0000000..a6357ff --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.bg.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Настоящият браузър е забравен. Когато влезете отново от този браузър, ще бъдете подканени за вашия 2fa код. + The current browser has been forgotten. When you login again from this browser you will be prompted for your 2fa code. + + + Не може да се зареди потребител с идентификатор „{0}“. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.en.resx new file mode 100644 index 0000000..420713f --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/Manage/TwoFactorAuthenticationModel.en.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The current browser has been forgotten. When you login again from this browser you will be prompted for your 2fa code. + The current browser has been forgotten. When you login again from this browser you will be prompted for your 2fa code. + + + Unable to load user with ID '{0}'. + Unable to load user with ID '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.bg.resx new file mode 100644 index 0000000..9c2055c --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.bg.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Потребител с имейл '{0}' не може да бъде зареден. + Unable to load user with email '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.en.resx new file mode 100644 index 0000000..b899fa2 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterConfirmationModel.en.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Unable to load user with email '{0}'. + Unable to load user with email '{0}'. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.bg.resx new file mode 100644 index 0000000..c49490f --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.bg.resx @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Потвърди парола + Display Confirm password Property + + + Имейл + Display Email Property + + + Невалиден имейл адрес. + Email validation attribute error message + + + Полето "Имейл" е задължително. + Email required attribute error message + + + Парола + Display Password Property + + + Паролата е задължителна + Password required attribute error message + + + Паролата и паролата за потвърждение не съвпадат. + Display password confirmation error message + + + Паролата трябва да бъде най-малко {2} и максимум {1} знака. + Display Password Length error message + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.en.resx new file mode 100644 index 0000000..7d09abb --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/RegisterModel+InputModel.en.resx @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm password + Display Confirm password Property + + + Email + Display Email Property + + + Email is not valid + Email validation attribute error message + + + Email is required + Email required error message + + + Password + Display Password Property + + + Password is required + Password required attribute error message + + + The password and confirmation password do not match. + Display password confirmation error message + + + The Password must be at least {2} and at max {1} characters long. + Display Password Length error message + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.bg.resx index a9d9333..18f1c79 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.bg.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.bg.resx @@ -125,4 +125,8 @@ Нулиране на парола Reset password + + Променете паролата си. + Reset your password. + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.en.resx index c622327..7609bda 100644 --- a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.en.resx +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPassword.en.resx @@ -125,4 +125,8 @@ Reset password Reset password + + Reset your password. + Reset your password. + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.bg.resx new file mode 100644 index 0000000..eab7994 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.bg.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Потвърди парола + Confirm password + + + Паролата и паролата за потвърждение не съвпадат. + The password and confirmation password do not match. + + + Паролата трябва да бъде най-малко {2} и максимум {1} знака. + The Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.en.resx new file mode 100644 index 0000000..c075b2c --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel+InputModel.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm password + Confirm password + + + The password and confirmation password do not match. + The password and confirmation password do not match. + + + The Password must be at least {2} and at max {1} characters long. + The Password must be at least {2} and at max {1} characters long. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.bg.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.bg.resx new file mode 100644 index 0000000..04bf991 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.bg.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Трябва да се предостави код за нулиране на паролата. + A code must be supplied for password reset. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.en.resx b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.en.resx new file mode 100644 index 0000000..504a819 --- /dev/null +++ b/AJS.Web/Resources/Areas/Identity/Pages/Account/ResetPasswordModel.en.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + A code must be supplied for password reset. + A code must be supplied for password reset. + + \ No newline at end of file diff --git a/AJS.Web/Resources/Views/Shared/_LoginPartial.bg.resx b/AJS.Web/Resources/Views/Shared/_LoginPartial.bg.resx index 6a63717..9741f17 100644 --- a/AJS.Web/Resources/Views/Shared/_LoginPartial.bg.resx +++ b/AJS.Web/Resources/Views/Shared/_LoginPartial.bg.resx @@ -125,6 +125,10 @@ Влез Login User + + Излизане + Logout + Регистрация Register User diff --git a/AJS.Web/Resources/Views/Shared/_LoginPartial.en.resx b/AJS.Web/Resources/Views/Shared/_LoginPartial.en.resx index 0c8d5b0..092604c 100644 --- a/AJS.Web/Resources/Views/Shared/_LoginPartial.en.resx +++ b/AJS.Web/Resources/Views/Shared/_LoginPartial.en.resx @@ -125,6 +125,10 @@ Login Login User + + Logout + Logout + Register Register User diff --git a/AJS.Web/Views/Home/Index.cshtml b/AJS.Web/Views/Home/Index.cshtml index 5392222..2208268 100644 --- a/AJS.Web/Views/Home/Index.cshtml +++ b/AJS.Web/Views/Home/Index.cshtml @@ -5,5 +5,5 @@ ViewData["Title"] = Localizer["Home Page"]; }
-

Welcome

+

Welcome User