From 2aaabaf6bfefe00d7b84f37760bf9bc755da45a9 Mon Sep 17 00:00:00 2001 From: Henning Hall Date: Fri, 6 Mar 2020 22:16:40 +0100 Subject: [PATCH] Fix crash for some default locales --- .../com/henninghall/date_picker/LocaleUtils.java | 16 ++++++++++++---- .../date_picker/props/LocaleProp.java | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/android/src/main/java/com/henninghall/date_picker/LocaleUtils.java b/android/src/main/java/com/henninghall/date_picker/LocaleUtils.java index 9eec73f..48a575b 100644 --- a/android/src/main/java/com/henninghall/date_picker/LocaleUtils.java +++ b/android/src/main/java/com/henninghall/date_picker/LocaleUtils.java @@ -1,12 +1,8 @@ package com.henninghall.date_picker; -import android.os.Build; -import android.util.Log; - import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.Locale; public class LocaleUtils { @@ -38,6 +34,18 @@ public class LocaleUtils { return ((SimpleDateFormat)format).toLocalizedPattern().replace(",", ""); } + public static Locale getLocale(String languageTag){ + Locale locale; + try{ + locale = org.apache.commons.lang3.LocaleUtils.toLocale(languageTag); + } catch (Exception e ){ + // Some locales can only be interpreted from country string (for instance zh_Hans_CN ) + String firstPartOfLanguageTag = languageTag.substring(0, languageTag.indexOf("")); + locale = org.apache.commons.lang3.LocaleUtils.toLocale(firstPartOfLanguageTag); + } + return locale; + } + } diff --git a/android/src/main/java/com/henninghall/date_picker/props/LocaleProp.java b/android/src/main/java/com/henninghall/date_picker/props/LocaleProp.java index 4e4bf7d..0d7b237 100644 --- a/android/src/main/java/com/henninghall/date_picker/props/LocaleProp.java +++ b/android/src/main/java/com/henninghall/date_picker/props/LocaleProp.java @@ -3,8 +3,8 @@ package com.henninghall.date_picker.props; import android.os.Build; import com.facebook.react.bridge.Dynamic; +import com.henninghall.date_picker.LocaleUtils; -import org.apache.commons.lang3.LocaleUtils; import java.util.Locale; @@ -18,7 +18,7 @@ public class LocaleProp extends Prop { } static private Locale getDefaultLocale(){ - return LocaleUtils.toLocale(getDefaultLanguageTag()); + return LocaleUtils.getLocale(getDefaultLanguageTag()); } static private String getDefaultLanguageTag(){ @@ -34,7 +34,7 @@ public class LocaleProp extends Prop { @Override public Locale toValue(Dynamic value){ this.languageTag = value.asString().replace('-','_'); - return LocaleUtils.toLocale(languageTag); + return LocaleUtils.getLocale(languageTag); } }