Make the system locale available to the decryption UI.

Bug: 17659622
Change-Id: I8f7d1c4d1d04ec483b6a3c9bea742f79374b647a
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);
+            }
         }
     };