title: .Net Core Identity Password does not recognize Turkish Characters as UpperCase or LowerCase
body: <p>I defined a class called TurkishIdentityErrorDescriber which inherited from Microsoft.AspNetCore.Identity IdentityErrorDescriber to translate Identity error descriptions to Turkish language. When I try to register userManager's CreateAsync with a password include turkish upper case letters &quot;ÇÇÇÇÇÇ1&quot; password, it returns PasswordRequiresLower and PasswordRequiresUpper IdentityError. How can I define turkish characters to identity password without getting an error?</p>
  <p>Here is my Identity Error Describer Class</p>
  <pre><code>   public class TurkishIdentityErrorDescriber : IdentityErrorDescriber
      {
          public override IdentityError DefaultError() { return new IdentityError { Code = nameof(DefaultError), Description = $&quot;Some turkish error definitions bla bla bla.&quot; }; }
          public override IdentityError PasswordRequiresLower() { return new IdentityError { Code = nameof(PasswordRequiresLower), Description = &quot;Some turkish error definitions bla bla bla.&quot; }; }
          public override IdentityError PasswordRequiresUpper() { return new IdentityError { Code = nameof(PasswordRequiresUpper), Description = &quot;Some turkish error definitions bla bla bla.&quot; }; }
                  .
                  .
                  .
                  .
      }
  </code></pre>
  <p>I get IdentityErrors from this CreateAsync method when use &quot;ÇÇÇÇÇÇ1&quot; as Input.Password.</p>
  <pre><code>IdentityResult result = await _userManager.CreateAsync(user, Input.Password);
  </code></pre>
  <p>Here is my startup.cs</p>
  <pre><code>            services.AddIdentity&lt;User, Role&gt;(options =&gt;
              {
                  options.Stores.MaxLengthForKeys = 128;
                  options.SignIn.RequireConfirmedEmail = true;
              })
              .AddRoles&lt;Role&gt;()
              .AddRoleManager&lt;RoleManager&lt;Role&gt;&gt;()
              .AddErrorDescriber&lt;TurkishIdentityErrorDescriber&gt;()
  </code></pre>
  <p>Solving Edit:</p>
  <p>Solution is overriding PasswordValidator class.(dont't forget to add it startup.cs) Here is my class</p>
  <pre><code>    public class TurkishIdentityPasswordValidator : PasswordValidator&lt;User&gt;
      {
  
          /// &lt;summary&gt;
          ///     Returns true if the character is between 'a' and 'z' plus turkish characters
          /// &lt;/summary&gt;
          /// &lt;param name=&quot;c&quot;&gt;&lt;/param&gt;
          /// &lt;returns&gt;&lt;/returns&gt;
          public override bool IsLower(char c)
          {
              if (c == 'ğ' || c == 'ü' || c == 'ş' || c == 'ı' || c == 'ş' || c == 'ö' || c == 'ç')
                  return true;
              else if (c &gt;= 'a' &amp;&amp; c &lt;= 'z')
                  return true;
              else
                  return false;
          }
  
          /// &lt;summary&gt;
          ///     Returns true if the character is between 'A' and 'Z' plus turkish characters
          /// &lt;/summary&gt;
          /// &lt;param name=&quot;c&quot;&gt;&lt;/param&gt;
          /// &lt;returns&gt;&lt;/returns&gt;
          public override bool IsUpper(char c)
          {
              if (c == 'Ğ' || c == 'Ü' || c == 'Ş' || c == 'İ' || c == 'Ş' || c == 'Ö' || c == 'Ç')
                  return true;
              else if (c &gt;= 'A' &amp;&amp; c &lt;= 'Z')
                  return true;
              else
                  return false;
          }
  
      }
  </code></pre>