Exemplo n.º 1
0
        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;
                        }
                    }
                }
        }
Exemplo n.º 2
0
        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;
        }