[NUI.Gadget] Modify NUIGadgetResourceManager (#5302)
authorhjhun <36876573+hjhun@users.noreply.github.com>
Thu, 25 May 2023 06:17:59 +0000 (15:17 +0900)
committerGitHub <noreply@github.com>
Thu, 25 May 2023 06:17:59 +0000 (15:17 +0900)
If getting string is failed, the resource manager should try to get
string from the default satelite assembly.

Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
Co-authored-by: pjh9216 <jh9216.park@samsung.com>
src/Tizen.NUI.Gadget/Tizen.NUI/NUIGadgetResourceManager.cs

index b2728a6..d9e3470 100755 (executable)
@@ -20,6 +20,7 @@ using System.Collections.Generic;
 using System.Reflection;
 using System.IO;
 using System.ComponentModel;
+using System.Resources;
 
 namespace Tizen.NUI
 {
@@ -88,50 +89,49 @@ namespace Tizen.NUI
                 cultureInfo = CultureInfo.CurrentUICulture;
             }
 
-            var resourceManager = GetResourceManager(cultureInfo.Name);
-            if (resourceManager == null)
+            string result = string.Empty;
+            try
             {
-                resourceManager = GetResourceManager("default");
+                var resourceManager = GetResourceManager(cultureInfo.Name);
                 if (resourceManager != null)
                 {
-#pragma warning disable CA1304
-                    return resourceManager.GetString(name);
-#pragma warning restore CA1304
+                    result = resourceManager.GetString(name, cultureInfo);
                 }
 
-                if (cultureInfo.Name != "en")
+                if (string.IsNullOrEmpty(result))
                 {
-                    resourceManager = GetResourceManager("en");
+                    resourceManager = GetResourceManager("default");
                     if (resourceManager != null)
                     {
 #pragma warning disable CA1304
-                        return resourceManager.GetString(name);
+                        result = resourceManager.GetString(name);
 #pragma warning restore CA1304
                     }
                 }
-
-                return string.Empty;
+            }
+            catch (InvalidOperationException e)
+            {
+                Log.Error("InvalidOperationException occurs. " + e.Message);
+            }
+            catch (MissingManifestResourceException e)
+            {
+                Log.Error("MissingManifestResourceException occurs. " + e.Message);
+            }
+            catch (MissingSatelliteAssemblyException e)
+            {
+                Log.Error("MissingSateliteAssemblyException occurs. " + e.Message);
             }
 
-            return resourceManager.GetString(name, cultureInfo);
+            return result;
         }
 
-        private global::System.Resources.ResourceManager GetResourceManager(string locale)
+        private global::System.Resources.ResourceManager GetResourceManager(string path, string baseName)
         {
-            global::System.Resources.ResourceManager resourceManager;
-            if (_resourceMap.TryGetValue(locale, out resourceManager))
-            {
-                return resourceManager;
-            }
+            global::System.Resources.ResourceManager resourceManager = null;
 
-            string path = string.Empty;
-            if (locale == "default")
-            {
-                path = _resourcePath + _resourceDll;
-            }
-            else
+            if (string.IsNullOrEmpty(path))
             {
-                path = _resourcePath + locale + "/" + _resourceDll;
+                return null;
             }
 
             if (!File.Exists(path))
@@ -146,20 +146,11 @@ namespace Tizen.NUI
                 Assembly assembly = Assembly.Load(File.ReadAllBytes(path));
                 if (assembly != null)
                 {
-                    string baseName = _resourceClassName;
-                    if (locale != "default")
-                    {
-                        baseName += "." + locale;
-                    }
-
                     resourceManager = new global::System.Resources.ResourceManager(baseName, assembly);
                     if (resourceManager == null)
                     {
                         Log.Error("Failed to create ResourceManager");
-                    }
-                    else
-                    {
-                        _resourceMap.Add(locale, resourceManager);
+                        return null;
                     }
                 }
             }
@@ -179,5 +170,36 @@ namespace Tizen.NUI
 
             return resourceManager;
         }
+
+
+        private global::System.Resources.ResourceManager GetResourceManager(string locale)
+        {
+            global::System.Resources.ResourceManager resourceManager;
+
+            if (_resourceMap.TryGetValue(locale, out resourceManager))
+            {
+                return resourceManager;
+            }
+
+            string baseName = _resourceClassName;
+            string path;
+            if (locale == "default")
+            {
+                path = _resourcePath + _resourceDll;
+            }
+            else
+            {
+                path = _resourcePath + locale + "/" + _resourceDll;
+                baseName += "." + locale;
+            }
+
+            resourceManager = GetResourceManager(path, baseName);
+            if (resourceManager != null)
+            {
+                _resourceMap.Add(locale, resourceManager);
+            }
+
+            return resourceManager;
+        }
     }
 }