private I18N(I18NOption option) { string languageName = Thread.CurrentThread.CurrentCulture.Name; string resourceShortName = null; if (languageName.Equals(option.FirstLanguage)) { resourceShortName = option.FirstLanguageFile; } else if (languageName.Equals(option.SecondLanguage)) { resourceShortName = option.SecondLanguageFile; } else if (UtilityConstants.EnglishName.Equals(option.FirstLanguage) || UtilityConstants.EnglishName.Equals(option.SecondLanguage)) { resourceShortName = UtilityConstants.EnglishResourceName; } else { string msgFormat = GetResourceItem("UnsupportedLanguage"); throw new TestflowRuntimeException(ModuleErrorCode.I18nRuntimeError, string.Format(msgFormat, languageName)); } string resourceFullName = null; // 修改国际化为使用反射获取资源文件配置 foreach (string resourceName in option.Assembly.GetManifestResourceNames()) { if (resourceName.Equals(resourceShortName) || resourceName.Contains($".{resourceShortName}.resx") || resourceName.Contains($".{resourceShortName}.resources") || resourceName.Contains($"_{resourceShortName}.resx") || resourceName.Contains($"_{resourceShortName}.resources")) { resourceFullName = resourceName.Remove(resourceName.LastIndexOf(".")); break; } } if (null == resourceFullName) { string msgFormat = GetResourceItem("ResourceNotExist"); throw new TestflowRuntimeException(ModuleErrorCode.I18nRuntimeError, string.Format(msgFormat, resourceShortName)); } this._resourceManager = new ResourceManager(resourceFullName, option.Assembly); }
/// <summary> /// 判断两个Option实例是否相等 /// </summary> public bool Equals(I18NOption comparer) { return(ReferenceEquals(Assembly, comparer.Assembly) && FirstLanguage.Equals(comparer.FirstLanguage) && SecondLanguage.Equals(comparer.SecondLanguage) && FirstLanguageFile.Equals(comparer.FirstLanguageFile) && SecondLanguageFile.Equals(comparer.SecondLanguageFile)); }