static void Main(string[] args) { try { var arguements = Args.Parse<Arguements>(args); var resources = new LanguageFileParser().DeserializeLanguagesFile(arguements.InputFile); foreach (var language in resources) { var languageDirectory = new DirectoryInfo(Path.Combine(arguements.OutputDirectory, language.First.LanguageCulture)); if(!languageDirectory.Exists) languageDirectory.Create(); if (arguements.CleanOutputDirectory) { foreach (var file in languageDirectory.GetFiles()) file.Delete(); foreach (var dir in languageDirectory.GetDirectories()) dir.Delete(true); } foreach (var resource in language.Second) { var destination = Path.Combine(languageDirectory.FullName, resource.ResourceName + ".mp3"); if(File.Exists(destination)) File.Delete(destination); DownloadGoogleVoice(language.First.LanguageCulture, resource.ResourceValue, destination); } } Console.WriteLine("The audio has been generate for {0} to the directory {1}", arguements.InputFile, arguements.OutputDirectory); } catch (ArgException ex) { Console.WriteLine(ArgUsage.GetUsage<Arguements>()); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); } }
/// <summary> /// Import an xml file /// </summary> private void Import() { try { var ofd = new OpenFileDialog(); ofd.FileOk += (sender, args) => args.Cancel = string.IsNullOrEmpty(ofd.FileName) || !Path.GetExtension(ofd.FileName.ToLower()).Equals(".xml"); var result = ofd.ShowDialog(); if (result.Value) { var deserializedLanguages = new LanguageFileParser().DeserializeLanguagesFile(ofd.FileName); _languages.Clear(); _possibleValues.Clear(); foreach (var possibleValue in deserializedLanguages.SelectMany(x => x.Second).Select(x => x.ResourceName).Distinct().ToList()) { _possibleValues.Add(possibleValue); } foreach (var pair in deserializedLanguages) { var language = new Pair<Language, ObservableCollection<LocaleStringResourceModel>>(); language.First = pair.First; language.Second = new ObservableCollection<LocaleStringResourceModel>(); foreach (var possibleValue in _possibleValues) { var resourceModel = new LocaleStringResourceModel(pair.Second.FirstOrDefault(x => x.ResourceName == possibleValue)); if (resourceModel.IsMissing) resourceModel.ResourceName = possibleValue; language.Second.Add(resourceModel); } _languages.Add(language); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } }