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); } }
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; } }
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); } } }