private ResourceFileData ParseFile(FileInfo file, string variableRegex) { ResourceFileData result = new ResourceFileData(); result.ResourceFileDirectory = GetPathFromProjectRoot(file); //if (SkipExistingResourceFiles && File.Exists(filePath)) // return; result.FileName = file.Name.Replace(file.Extension, ""); var text = File.ReadAllText(file.FullName); var localizerVariable = Regex.Match(text, variableRegex); if (String.IsNullOrWhiteSpace(localizerVariable.Value)) { return(null); } var localizedMatch = Regex.Match(text, $"(?<={localizerVariable}\\[\")[\\w ]+"); result.ResourceKeys = GetLocalizedStringKeys(localizedMatch); return(result); }
private ResourceFileData ParseModel(FileInfo file) { ResourceFileData result = new ResourceFileData(); result.ResourceFileDirectory = GetPathFromProjectRoot(file); result.FileName = file.Name.Replace(file.Extension, ""); var text = File.ReadAllText(file.FullName); var localizedMatch = Regex.Match(text, $"(?<=Display\\( *Name *= *\")[\\w ]+|(?<=Required\\( *ErrorMessage *= *\")[\\w ]+|(?<=ValidationResult\\((\\r?\\n?\\t* *\\$?)\")[\\w ]+"); result.ResourceKeys = GetLocalizedStringKeys(localizedMatch); return(result); }
private List <ResXDataNode> GenerateResourceFile( ResourceFileData resourceFile , ResourceFileLanguage language , List <ResXDataNode> primaryEntries = null) { var fileName = $"{resourceFile.FileName}.{language.Encoding}.resx"; var filePath = Path.Combine(ResourcesDirectory, resourceFile.ResourceFileDirectory, fileName); string prefix = language.IsPrimary ? null : language.NonPrimaryResourceValuePrefix; string suffix = language.IsPrimary ? null : language.NonPrimaryResourceValueSuffix; var resourceEntries = GenerateEntriesFromKeys( resourceFile.ResourceKeys, prefix, suffix); if (!language.IsPrimary && primaryEntries != null) { resourceEntries.RemoveAll(x => primaryEntries.Exists(p => p.Name == x.Name)); #pragma warning disable CS0219 // Variable is assigned but its value is never used System.ComponentModel.Design.ITypeResolutionService typeres = null; #pragma warning restore CS0219 // Variable is assigned but its value is never used resourceEntries.AddRange( primaryEntries.Select(x => new ResXDataNode(x.Name, $"{prefix}{x.GetValue(typeres)}{suffix}") { Comment = "AUTO" }) ); } if (File.Exists(filePath)) { return(MergeResourceFile(filePath, resourceEntries, language)); } else { var directory = new DirectoryInfo(Path.Combine(ResourcesDirectory, resourceFile.ResourceFileDirectory)); if (!directory.Exists) { directory.Create(); } return(CreateResourceFile(filePath, resourceEntries)); } }
private List <ResourceFileData> ParseFiles(string subDirectory, string fileSearchPattern, Func <FileInfo, ResourceFileData> parseFileFunc) { List <ResourceFileData> results = new List <ResourceFileData>(); System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(ProjectDirectory); var viewsPath = Path.Combine(ProjectDirectory, subDirectory); if (System.IO.Directory.Exists(viewsPath)) { var files = new System.IO.DirectoryInfo(viewsPath).GetFiles(fileSearchPattern, SearchOption.AllDirectories); foreach (var file in files) { ResourceFileData result = parseFileFunc(file); if (result != null && result.ResourceKeys.Count > 0) { results.Add(result); } } } return(results); }