Kerberos: Add properly translated error codes

Error codes were hard coded to English so far. This CL uses i18n
translated strings.

BUG=chromium:952238
TEST=Tested by manually changing error codes in Javascript.

Change-Id: I74c81293aafd51bd46c0e5e960ed6b0483808cf3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1608706
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Commit-Queue: Lutz Justen <ljusten@chromium.org>
Cr-Commit-Position: refs/heads/master@{#662080}
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index 2d5880aa..978f568 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1638,7 +1638,28 @@
     <message name="IDS_SETTINGS_KERBEROS_PASSWORD" desc="Title for the input that lets users specify their password for a Kerberos account.">
       Password
     </message>
-    <message name="IDS_SETTINGS_KERBEROS_GENERAL_ERROR_MESSAGE" desc="Fallback error message displayed in the Add Kerberos.">
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_NETWORK_PROBLEM" desc="Error message displayed in the Add Kerberos Account dialog when the user has no network connection or enters a bad realm.">
+      Network problem or bad realm
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_USERNAME_INVALID" desc="Error message displayed in the Add Kerberos Account dialog when the user enters a badly formatted username.">
+      Username invalid (should be user@realm.com)
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_USERNAME_UNKNOWN" desc="Error message displayed in the Add Kerberos Account dialog when the user enters a username that is not known to the Kerberos realm.">
+      Username not known to server
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_CONTACTING_SERVER" desc="Error message displayed in the Add Kerberos Account dialog when the OS is not able to contact the server for the given realm.">
+      Contacting server for realm failed
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_PASSWORD_INVALID" desc="Error message displayed in the Add Kerberos Account dialog when the user enters the wrong password.">
+      Password invalid
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_PASSWORD_EXPIRED" desc="Error message displayed in the Add Kerberos Account dialog when the user's password is expired.">
+      Password expired
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_KDC_ENC_TYPE" desc="Error message displayed in the Add Kerberos Account dialog when the KDC does not support the encryption types specified in the Kerberos configuration (KDC = Key Distribution Center, part of Kerberos infrastructure).">
+      KDC does not support encryption type
+    </message>
+    <message name="IDS_SETTINGS_KERBEROS_ERROR_GENERAL" desc="Fallback error message displayed in the Add Kerberos dialog.">
       Oops! Something went wrong (error code <ph name="ERROR_CODE">$1<ex>123</ex></ph>).
     </message>
   </if>
diff --git a/chrome/browser/resources/settings/people_page/kerberos_add_account_dialog.js b/chrome/browser/resources/settings/people_page/kerberos_add_account_dialog.js
index 2b139099..df260a3 100644
--- a/chrome/browser/resources/settings/people_page/kerberos_add_account_dialog.js
+++ b/chrome/browser/resources/settings/people_page/kerberos_add_account_dialog.js
@@ -105,36 +105,35 @@
     this.passwordErrorText_ = '';
 
     switch (error) {
-      // TODO(ljusten): Proper errors
       case settings.KerberosErrorType.kNone:
         break;
 
       case settings.KerberosErrorType.kNetworkProblem:
-        this.generalErrorText_ = 'Network problem or bad realm';
+        this.generalErrorText_ = this.i18n('kerberosErrorNetworkProblem');
         break;
       case settings.KerberosErrorType.kParsePrincipalFailed:
-        this.usernameErrorText_ = 'Username invalid (should be user@realm.com)';
+        this.usernameErrorText_ = this.i18n('kerberosErrorUsernameInvalid');
         break;
       case settings.KerberosErrorType.kBadPrincipal:
-        this.usernameErrorText_ = 'Username not known to server';
+        this.usernameErrorText_ = this.i18n('kerberosErrorUsernameUnknown');
         break;
       case settings.KerberosErrorType.kContactingKdcFailed:
-        this.usernameErrorText_ = 'Contacting server for realm failed';
+        this.usernameErrorText_ = this.i18n('kerberosErrorContactingServer');
         break;
 
       case settings.KerberosErrorType.kBadPassword:
-        this.passwordErrorText_ = 'Password invalid';
+        this.passwordErrorText_ = this.i18n('kerberosErrorPasswordInvalid');
         break;
       case settings.KerberosErrorType.kPasswordExpired:
-        this.passwordErrorText_ = 'Password expired';
+        this.passwordErrorText_ = this.i18n('kerberosErrorPasswordExpired');
         break;
 
       case settings.KerberosErrorType.kKdcDoesNotSupportEncryptionType:
-        this.generalErrorText_ = 'KDC does not support encryption type';
+        this.generalErrorText_ = this.i18n('kerberosErrorKdcEncType');
         break;
       default:
-        this.generalErrorText_ = this.i18nDynamic(
-            this.locale, 'kerberosGeneralErrorMessage', String(error));
+        this.generalErrorText_ =
+            this.i18n('kerberosErrorGeneral', String(error));
     }
   },
 
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index 179d032..a2f4b55a 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1702,8 +1702,20 @@
     {"addKerberosAccount", IDS_SETTINGS_ADD_KERBEROS_ACCOUNT},
     {"kerberosUsername", IDS_SETTINGS_KERBEROS_USERNAME},
     {"kerberosPassword", IDS_SETTINGS_KERBEROS_PASSWORD},
-    {"kerberosGeneralErrorMessage",
-     IDS_SETTINGS_KERBEROS_GENERAL_ERROR_MESSAGE},
+    {"kerberosErrorNetworkProblem",
+     IDS_SETTINGS_KERBEROS_ERROR_NETWORK_PROBLEM},
+    {"kerberosErrorUsernameInvalid",
+     IDS_SETTINGS_KERBEROS_ERROR_USERNAME_INVALID},
+    {"kerberosErrorUsernameUnknown",
+     IDS_SETTINGS_KERBEROS_ERROR_USERNAME_UNKNOWN},
+    {"kerberosErrorContactingServer",
+     IDS_SETTINGS_KERBEROS_ERROR_CONTACTING_SERVER},
+    {"kerberosErrorPasswordInvalid",
+     IDS_SETTINGS_KERBEROS_ERROR_PASSWORD_INVALID},
+    {"kerberosErrorPasswordExpired",
+     IDS_SETTINGS_KERBEROS_ERROR_PASSWORD_EXPIRED},
+    {"kerberosErrorKdcEncType", IDS_SETTINGS_KERBEROS_ERROR_KDC_ENC_TYPE},
+    {"kerberosErrorGeneral", IDS_SETTINGS_KERBEROS_ERROR_GENERAL},
     {"lockScreenAddFingerprint",
      IDS_SETTINGS_PEOPLE_LOCK_SCREEN_ADD_FINGERPRINT_BUTTON},
     {"lockScreenChangePinButton",