/// <summary> /// 按优先级枚举所有符合要求的语言包; /// </summary> private IEnumerable <LanguagePackInfo> EnumerateLanguagePask(LocalizationConfig?config, IEnumerable <LanguagePackInfo> languagePacks) { //语言优先级排列顺序 string[] spareLanguages; if (config.HasValue) { //匹配语言包信息,并且返回; LocalizationConfig _config = config.Value; foreach (var info in languagePacks) { if (_config.Language == info.Description.Language && _config.Name == info.Description.Name) { yield return(info); } } spareLanguages = new string[] { _config.Language, SystemLanguage.ToString(), defaultLanguage.ToString(), }; } else { spareLanguages = new string[] { SystemLanguage.ToString(), defaultLanguage.ToString(), }; } //按语言优先级返回合适的语言包; for (int i = 0; i < spareLanguages.Length; i++) { string language = spareLanguages[i]; foreach (var fileInfo in LanguagePacks) { if (fileInfo.Description.Language == language) { yield return(fileInfo); } } } //若之前都未成功,则再次返回所有语言包; foreach (var fileInfo in LanguagePacks) { yield return(fileInfo); } }
private void DeserializeConfig(LocalizationConfigSerializer configSerializer, LanguagePackDescription description) { try { LocalizationConfig config = new LocalizationConfig() { Name = description.Name, Language = description.Language, }; using (Resource.ConfigContent.BeginUpdateAuto()) { configSerializer.Serialize(Resource.ConfigContent, config); } } catch (Exception ex) { Debug.LogWarning("输出语言配置失败:" + ex); } }