diff --git a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
index 2c9e3b1..3c632bb 100644
--- a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
+++ b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
@@ -30,25 +30,23 @@
      * Execute {@link #job(Resources)} method in specified system locale exclusively.
      *
      * @param res the resources to use.
-     * @param newLocale the locale to change to.
+     * @param newLocale the locale to change to. Run in system locale if null.
      * @return the value returned from {@link #job(Resources)}.
      */
     public T runInLocale(final Resources res, final Locale newLocale) {
         synchronized (sLockForRunInLocale) {
-            final Configuration conf = res.getConfiguration();
-            final Locale oldLocale = conf.locale;
-            final boolean needsChange = (newLocale != null && !newLocale.equals(oldLocale));
+            final Configuration savedConf = res.getConfiguration();
+            if (newLocale == null || newLocale.equals(savedConf.locale)) {
+                return job(res);
+            }
+            final Configuration newConf = new Configuration();
+            newConf.setTo(savedConf);
+            newConf.setLocale(newLocale);
             try {
-                if (needsChange) {
-                    conf.locale = newLocale;
-                    res.updateConfiguration(conf, null);
-                }
+                res.updateConfiguration(newConf, null);
                 return job(res);
             } finally {
-                if (needsChange) {
-                    conf.locale = oldLocale;
-                    res.updateConfiguration(conf, null);
-                }
+                res.updateConfiguration(savedConf, null);
             }
         }
     }
