protected virtual async Task Load(Dictionary <string, object> dict, string filename, CultureInfo cultureInfo)
        {
            LocalizationSourceAsset defaultSourceAsset = (LocalizationSourceAsset)await Resources.LoadAsync <LocalizationSourceAsset>(GetDefaultPath(filename));                                                                            //eg:default

            LocalizationSourceAsset twoLetterISOSourceAsset = (LocalizationSourceAsset)await Resources.LoadAsync <LocalizationSourceAsset>(GetPath(cultureInfo.TwoLetterISOLanguageName, filename));                                        //eg:zh  en

            LocalizationSourceAsset sourceAsset = cultureInfo.Name.Equals(cultureInfo.TwoLetterISOLanguageName) ? null : (LocalizationSourceAsset)await Resources.LoadAsync <LocalizationSourceAsset>(GetPath(cultureInfo.Name, filename)); //eg:zh-CN  en-US

            if (defaultSourceAsset == null && twoLetterISOSourceAsset == null && sourceAsset == null)
            {
                if (log.IsWarnEnabled)
                {
                    log.WarnFormat("Not found the localized file \"{0}\".", filename);
                }
                return;
            }

            if (defaultSourceAsset != null)
            {
                FillData(dict, defaultSourceAsset.Source);
            }
            if (twoLetterISOSourceAsset != null)
            {
                FillData(dict, twoLetterISOSourceAsset.Source);
            }
            if (sourceAsset != null)
            {
                FillData(dict, sourceAsset.Source);
            }
        }
示例#2
0
        private void FillData(Dictionary <string, object> dict, AssetBundle bundle, string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return;
            }

            LocalizationSourceAsset sourceAsset = bundle.LoadAsset <LocalizationSourceAsset>(path);

            if (sourceAsset == null)
            {
                return;
            }

            MonolingualSource source = sourceAsset.Source;

            if (source == null)
            {
                return;
            }

            foreach (KeyValuePair <string, object> kv in source.GetData())
            {
                dict[kv.Key] = kv.Value;
            }
        }
示例#3
0
        public virtual void Load(CultureInfo cultureInfo, Action <Dictionary <string, object> > onLoadCompleted)
        {
            Dictionary <string, object> dict = new Dictionary <string, object>();

            try
            {
                foreach (string filename in filenames)
                {
                    try
                    {
                        LocalizationSourceAsset defaultSourceAsset      = Resources.Load <LocalizationSourceAsset>(GetDefaultPath(filename));                                                                                   //eg:default
                        LocalizationSourceAsset twoLetterISOSourceAsset = Resources.Load <LocalizationSourceAsset>(GetPath(cultureInfo.TwoLetterISOLanguageName, filename));                                                    //eg:zh  en
                        LocalizationSourceAsset sourceAsset             = cultureInfo.Name.Equals(cultureInfo.TwoLetterISOLanguageName) ? null : Resources.Load <LocalizationSourceAsset>(GetPath(cultureInfo.Name, filename)); //eg:zh-CN  en-US

                        if (defaultSourceAsset != null)
                        {
                            FillData(dict, defaultSourceAsset.Source);
                        }
                        if (twoLetterISOSourceAsset != null)
                        {
                            FillData(dict, twoLetterISOSourceAsset.Source);
                        }
                        if (sourceAsset != null)
                        {
                            FillData(dict, sourceAsset.Source);
                        }
                    }
                    catch (Exception e)
                    {
                        if (log.IsWarnEnabled)
                        {
                            log.WarnFormat("An error occurred when loading localized data from \"{0}\".Error:{1}", filename, e);
                        }
                    }
                }
            }
            finally
            {
                if (onLoadCompleted != null)
                {
                    onLoadCompleted(dict);
                }
            }
        }