The locale folder "he" should be called "iw" instead

From the java.util.Locale documentation:
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he")
language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish
("yi") as "ji". This rewriting happens even if you construct your own Locale
object, not just for instances returned by the various lookup methods.

Because of this, if you add your localized resources in for example values-he
they will not be used, since the system will look for values-iw instead.

To work around this, place your resources in a values folder using the
deprecated language code instead.

https://developer.android.com/reference/java/util/Locale.html
The locale folder "id" should be called "in" instead

From the java.util.Locale documentation:
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he")
language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish
("yi") as "ji". This rewriting happens even if you construct your own Locale
object, not just for instances returned by the various lookup methods.

Because of this, if you add your localized resources in for example values-id
they will not be used, since the system will look for values-in instead.

To work around this, place your resources in a values folder using the
deprecated language code instead.

https://developer.android.com/reference/java/util/Locale.html
remove unused strings
ImApp.setNewLocale uses new setLocale() method on >= android-17

Also, set the pref after setting the locale in cause of crash/exception
remove empty translations so they don't show up in the languages list

Soon, the list of available languages will be dynamically generated, so
empty translations would be misleading.
check status of pref.commit() otherwise just use pref.apply()

apply() does it in the background, but does not provide confirmation.
commit() provides confirmation, but is only useful if the return value is
checked.  apply() happens in the background and commit() in the foreground,
so using apply() should keep things more interactive. The SharedPreferences
docs recommend using apply() if the return value of commit() is ignored.
use system names for Languages preferences menu

Instead of maintaining our own list of the names of the languages, use the
Java names by requesting the "display language" of each locale in that
locale.  This makes only one menu item per language, there are no country
variants supported to keep the list short.  The exception is zh_CN and
zh_TW since there is generally no zh language.  We also have to manually
include 'bo' Tibetan since the system often does not support it.
DO NOT MERGE lots of OTR debug statements