protected override void GetSupportedLanguages() { XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse; settings.ConformanceLevel = ConformanceLevel.Fragment; settings.XmlResolver = new XmlPreloadedResolver(XmlKnownDtds.Xhtml10); string xml = @"<option value=""0"" selected=""selected"" >English</option><option value=""1"">French</option><option value=""2"">Italian</option><option value=""6"">German</option><option value=""5"">Portuguese</option><option value=""3"">Spanish</option><option value=""SEPERATOR"" disabled=""disabled"">--------------</option><option value=""15"">Arabic</option><option value=""99"">Catalan</option><option value=""344"">Castilian</option><option value=""31"">Czech</option><option value=""10"">Chinese (s)</option><option value=""9"">Chinese (t)</option><option value=""43"">Danish</option><option value=""11"">Greek</option><option value=""14"">Hebrew</option><option value=""60"">Hindi</option><option value=""30"">Hungarian</option><option value=""51"">Persian</option><option value=""8"">Japanese</option><option value=""12"">Korean</option><option value=""4"">Dutch</option><option value=""46"">Norwegian</option><option value=""29"">Polish</option><option value=""47"">Romanian</option><option value=""7"">Russian</option><option value=""48"">Swedish</option><option value=""13"">Turkish</option><option value=""16"">Thai</option><option value=""49"">Ukrainian</option><option value=""39"">Urdu</option>"; using (StringReader stringReader = new StringReader(xml)) using (XmlReader reader = XmlReader.Create(stringReader, settings)) { bool read = false; while (true) { if (!read) { if (!reader.Read()) { break; } } read = false; switch (reader.NodeType) { case XmlNodeType.Element: string valueStr = reader.GetAttribute("value"); int value; if (int.TryParse(valueStr, out value)) { string languageName = reader.ReadInnerXml(); read = true; switch (languageName) { case "Castilian": // Some type of spanish break; case "Chinese (s)": languageName = "zh-CN"; //"Chinese (Simplified)"; break; case "Chinese (t)": languageName = "zh-TW"; //"Chinese (Traditional)"; break; } CultureInfo culture; if (!LocaleHelper.TryParseCulture(languageName, out culture)) { break; } if (culture != null) { languageIds[culture.Name] = value; AddSupportedLanguage(culture); } } break; } } } }
public void UpdateSettings() { if (IsDisposed) { return; } if (InvokeRequired) { Invoke((MethodInvoker) delegate { UpdateSettings(); }); return; } isUpdating = true; translatableLanguages.Clear(); ocrableLanguages.Clear(); if (Program.ActiveOcrEngine != null) { if (Program.ActiveOcrEngine.IsInstalled) { foreach (string language in Program.ActiveOcrEngine.SupportedLanguages.Keys) { CultureInfo culture = CultureInfo.GetCultureInfo(language); if (!ocrableLanguages.Contains(culture.DisplayName)) { ocrableLanguages.Add(culture.DisplayName); } } } else { OcrEngineType engineType = OcrEngine.GetType(Program.ActiveOcrEngine.GetType()); foreach (Dictionary <OcrEngineType, List <string> > remoteTypes in OcrNetwork.RemoteTypes.Values) { if (remoteTypes.ContainsKey(engineType)) { List <string> supportedLanguages = remoteTypes[engineType]; foreach (string language in supportedLanguages) { // Remote PC may support different cultures //CultureInfo culture = CultureInfo.GetCultureInfo(language); CultureInfo culture = null; if (LocaleHelper.TryParseCulture(language, out culture) && !ocrableLanguages.Contains(culture.DisplayName)) { ocrableLanguages.Add(culture.DisplayName); } } } } } } if (Program.ActiveTranslator != null) { foreach (string language in Program.ActiveTranslator.SupportedLanguages.Keys) { CultureInfo culture = CultureInfo.GetCultureInfo(language); if (!translatableLanguages.Contains(culture.DisplayName)) { translatableLanguages.Add(culture.DisplayName); } } } availableEngines.Clear(); foreach (var value in Enum.GetValues(typeof(OcrEngineType))) { OcrEngineType type = (OcrEngineType)value; if (RemoteOcr.IsRemote(type) || OcrEngine.Create(type).IsInstalled) { availableEngines.Add(type); } } UpdateLanguageComboBoxStyle(); UpdateEngineComboBoxStyle(); RunOcr(); isUpdating = false; }