diff --git a/src/com/android/settings/CryptKeeperConfirm.java b/src/com/android/settings/CryptKeeperConfirm.java
index 7641525..4d6f26b 100644
--- a/src/com/android/settings/CryptKeeperConfirm.java
+++ b/src/com/android/settings/CryptKeeperConfirm.java
@@ -35,8 +35,12 @@
 
 import com.android.internal.widget.LockPatternUtils;
 
+import java.util.Locale;
+
 public class CryptKeeperConfirm extends Fragment {
 
+    private static final String TAG = "CryptKeeperConfirm";
+
     public static class Blank extends Activity {
         private Handler mHandler = new Handler();
 
@@ -107,17 +111,26 @@
                is then persisted, and the settings will be there on future
                reboots.
              */
+
+            // 1. The owner info.
             LockPatternUtils utils = new LockPatternUtils(getActivity());
             utils.setVisiblePatternEnabled(utils.isVisiblePatternEnabled());
             if (utils.isOwnerInfoEnabled()) {
                 utils.setOwnerInfo(utils.getOwnerInfo(UserHandle.USER_OWNER),
                                    UserHandle.USER_OWNER);
             }
-
             Intent intent = new Intent(getActivity(), Blank.class);
             intent.putExtras(getArguments());
-
             startActivity(intent);
+
+            // 2. The system locale.
+            try {
+                IBinder service = ServiceManager.getService("mount");
+                IMountService mountService = IMountService.Stub.asInterface(service);
+                mountService.setField("SystemLocale", Locale.getDefault().toLanguageTag());
+            } catch (Exception e) {
+                Log.e(TAG, "Error storing locale for decryption UI", e);
+            }
         }
     };
 
