private bool MatchLanguageByCurrentCulture(InstallationLanguage language) { var curCulture = CultureInfo.GetCultureInfoByIetfLanguageTag("tr-TR"); // Thread.CurrentThread.CurrentCulture; if (language.Code.IsCaseInsensitiveEqual(curCulture.IetfLanguageTag)) return true; curCulture = curCulture.Parent; if (curCulture != null) { return language.Code.IsCaseInsensitiveEqual(curCulture.IetfLanguageTag); } return false; }
private bool MatchLanguageByCurrentCulture(InstallationLanguage language) { var curCulture = Thread.CurrentThread.CurrentUICulture; if (language.Code.IsCaseInsensitiveEqual(curCulture.IetfLanguageTag)) { return(true); } curCulture = curCulture.Parent; if (curCulture != null) { return(language.Code.IsCaseInsensitiveEqual(curCulture.IetfLanguageTag)); } return(false); }
public virtual IList<InstallationLanguage> GetAvailableLanguages() { if (_availableLanguages == null) { _availableLanguages = new List<InstallationLanguage>(); var webHelper = EngineContext.Current.Resolve<IWebHelper>(); foreach (var filePath in Directory.EnumerateFiles(webHelper.MapPath("~/App_Data/Localization/Installation/"), "*.xml")) { var xmlDocument = new XmlDocument(); xmlDocument.Load(filePath); //get language code var languageCode = ""; //we file name format: installation.{languagecode}.xml var r = new Regex(Regex.Escape("installation.") + "(.*?)" + Regex.Escape(".xml")); var matches = r.Matches(Path.GetFileName(filePath)); foreach (Match match in matches) languageCode = match.Groups[1].Value; //get language friendly name var languageName = xmlDocument.SelectSingleNode(@"//Language").Attributes["Name"].InnerText.Trim(); //is default var isDefaultAttribute = xmlDocument.SelectSingleNode(@"//Language").Attributes["IsDefault"]; var isDefault = isDefaultAttribute != null ? Convert.ToBoolean(isDefaultAttribute.InnerText.Trim()) : false; //is default var isRightToLeftAttribute = xmlDocument.SelectSingleNode(@"//Language").Attributes["IsRightToLeft"]; var isRightToLeft = isRightToLeftAttribute != null ? Convert.ToBoolean(isRightToLeftAttribute.InnerText.Trim()) : false; //create language var language = new InstallationLanguage { Code = languageCode, Name = languageName, IsDefault = isDefault, IsRightToLeft = isRightToLeft, }; //load resources foreach (XmlNode resNode in xmlDocument.SelectNodes(@"//Language/LocaleResource")) { var resNameAttribute = resNode.Attributes["Name"]; var resValueNode = resNode.SelectSingleNode("Value"); if (resNameAttribute == null) throw new SmartException("All installation resources must have an attribute Name=\"Value\"."); var resourceName = resNameAttribute.Value.Trim(); if (string.IsNullOrEmpty(resourceName)) throw new SmartException("All installation resource attributes 'Name' must have a value.'"); if (resValueNode == null) throw new SmartException("All installation resources must have an element \"Value\"."); var resourceValue = resValueNode.InnerText.Trim(); language.Resources.Add(new InstallationLocaleResource() { Name = resourceName, Value = resourceValue }); } _availableLanguages.Add(language); _availableLanguages = _availableLanguages.OrderBy(l => l.Name).ToList(); } } return _availableLanguages; }
public virtual IList <InstallationLanguage> GetAvailableLanguages() { if (_availableLanguages == null) { _availableLanguages = new List <InstallationLanguage>(); var webHelper = EngineContext.Current.Resolve <IWebHelper>(); foreach (var filePath in Directory.EnumerateFiles(webHelper.MapPath("~/App_Data/Localization/Installation/"), "*.xml")) { var xmlDocument = new XmlDocument(); xmlDocument.Load(filePath); //get language code var languageCode = ""; //we file name format: installation.{languagecode}.xml var r = new Regex(Regex.Escape("installation.") + "(.*?)" + Regex.Escape(".xml")); var matches = r.Matches(Path.GetFileName(filePath)); foreach (Match match in matches) { languageCode = match.Groups[1].Value; } //get language friendly name var languageName = xmlDocument.SelectSingleNode(@"//Language").Attributes["Name"].InnerText.Trim(); //is default var isDefaultAttribute = xmlDocument.SelectSingleNode(@"//Language").Attributes["IsDefault"]; var isDefault = isDefaultAttribute != null?Convert.ToBoolean(isDefaultAttribute.InnerText.Trim()) : false; //is default var isRightToLeftAttribute = xmlDocument.SelectSingleNode(@"//Language").Attributes["IsRightToLeft"]; var isRightToLeft = isRightToLeftAttribute != null?Convert.ToBoolean(isRightToLeftAttribute.InnerText.Trim()) : false; //create language var language = new InstallationLanguage { Code = languageCode, Name = languageName, IsDefault = isDefault, IsRightToLeft = isRightToLeft, }; //load resources foreach (XmlNode resNode in xmlDocument.SelectNodes(@"//Language/LocaleResource")) { var resNameAttribute = resNode.Attributes["Name"]; var resValueNode = resNode.SelectSingleNode("Value"); if (resNameAttribute == null) { throw new SmartException("All installation resources must have an attribute Name=\"Value\"."); } var resourceName = resNameAttribute.Value.Trim(); if (string.IsNullOrEmpty(resourceName)) { throw new SmartException("All installation resource attributes 'Name' must have a value.'"); } if (resValueNode == null) { throw new SmartException("All installation resources must have an element \"Value\"."); } var resourceValue = resValueNode.InnerText.Trim(); language.Resources.Add(new InstallationLocaleResource() { Name = resourceName, Value = resourceValue }); } _availableLanguages.Add(language); _availableLanguages = _availableLanguages.OrderBy(l => l.Name).ToList(); } } return(_availableLanguages); }