From 662476c315c989a14c5921c6d5f6a15c077e59dc Mon Sep 17 00:00:00 2001 From: zoontek Date: Thu, 6 Sep 2018 15:13:33 +0200 Subject: [PATCH] Fix android generating old language code for ISO 639 --- .../rnlanguages/RNLanguagesModule.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/reactcommunity/rnlanguages/RNLanguagesModule.java b/android/src/main/java/com/reactcommunity/rnlanguages/RNLanguagesModule.java index 93c9412..526ade9 100644 --- a/android/src/main/java/com/reactcommunity/rnlanguages/RNLanguagesModule.java +++ b/android/src/main/java/com/reactcommunity/rnlanguages/RNLanguagesModule.java @@ -78,19 +78,30 @@ public class RNLanguagesModule extends ReactContextBaseJavaModule { } private String toLanguageTag(Locale locale) { + String languageTag; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - return locale.toLanguageTag(); + languageTag = locale.toLanguageTag(); + } else { + StringBuilder builder = new StringBuilder(); + builder.append(locale.getLanguage()); + + if (locale.getCountry() != null) { + builder.append("-"); + builder.append(locale.getCountry()); + } + + languageTag = builder.toString(); } - StringBuilder builder = new StringBuilder(); - builder.append(locale.getLanguage()); - - if (locale.getCountry() != null) { - builder.append("-"); - builder.append(locale.getCountry()); + if (languageTag.matches("^(iw|in|ji).*")) { + languageTag = languageTag + .replace("iw","he") + .replace("in","id") + .replace("ji","yi"); } - return builder.toString(); + return languageTag; } private void registerReceiver() {