public void WriteRecord_WritesLocations() { var s = new LocalizableString() { Text = "Computer", }; s.Locations.Add(new LocalizableStringLocation() { SourceFile = "File.cs", SourceFileLine = 1, Comment = "Comment 1" }); s.Locations.Add(new LocalizableStringLocation() { SourceFile = "File.cs", SourceFileLine = 2, Comment = "Comment 2" }); using (var writer = new PoWriter(_stream)) { writer.WriteRecord(s); } var result = ReadPoStream(); Assert.Equal($"#: File.cs:1", result[0]); Assert.Equal($"#. Comment 1", result[1]); Assert.Equal($"#: File.cs:2", result[2]); Assert.Equal($"#. Comment 2", result[3]); Assert.Equal($"msgid \"Computer\"", result[4]); Assert.Equal($"msgstr \"\"", result[5]); }
static void Main(string[] args) { if (args.Length < 2) { WriteHelp(); return; } var basePath = args[0]; var outputBasePath = args[1]; string[] projectFiles; if (Directory.Exists(basePath)) { projectFiles = Directory.EnumerateFiles(basePath, $"*{ProjectExtension.CS}", SearchOption.AllDirectories).OrderBy(file => file) .Union(Directory.EnumerateFiles(basePath, $"*{ProjectExtension.VB}", SearchOption.AllDirectories).OrderBy(file => file)).ToArray(); } else { WriteHelp(); return; } var processors = new IProjectProcessor[] { new CSharpProjectProcessor(), new VisualBasicProjectProcessor() }; foreach (var projectFilePath in projectFiles) { var projectPath = Path.GetDirectoryName(projectFilePath); var projectBasePath = Path.GetDirectoryName(projectPath) + Path.DirectorySeparatorChar; var projectRelativePath = projectPath.TrimStart(basePath + Path.DirectorySeparatorChar); var outputPath = Path.Combine(outputBasePath, Path.GetFileNameWithoutExtension(projectFilePath) + PoWriter.PortaleObjectTemplateExtension); var strings = new LocalizableStringCollection(); foreach (var processor in processors) { processor.Process(projectPath, projectBasePath, strings); } if (strings.Values.Any()) { Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); using (var potFile = new PoWriter(outputPath)) { potFile.WriteRecord(strings.Values); } } Console.WriteLine($"{Path.GetFileName(projectPath)}: Found {strings.Values.Count()} strings."); } }
public void WriteRecord_WritesSingularLocalizableString() { var s = new LocalizableString() { Text = "Computer" }; using (var writer = new PoWriter(_stream)) { writer.WriteRecord(s); } var result = ReadPoStream(); Assert.Equal($"msgid \"Computer\"", result[0]); Assert.Equal($"msgstr \"\"", result[1]); }
public void WriteRecord_WritesPluralLocalizableString() { var s = new LocalizableString() { Text = "Computer", TextPlural = "Computers" }; using (var writer = new PoWriter(_stream)) { writer.WriteRecord(s); } var result = ReadPoStream(); Assert.Equal($"msgid \"Computer\"", result[0]); Assert.Equal($"msgid_plural \"Computers\"", result[1]); Assert.Equal($"msgstr[0] \"\"", result[2]); }
static void Main(string[] args) { if (args.Length < 2) { WriteHelp(); return; } var basePath = args[0]; var outputBasePath = args[1]; var parseLiquid = args.Length > 2 && args[2] == "--liquid"; string[] projectFiles; if (Directory.Exists(basePath)) { projectFiles = Directory.EnumerateFiles(basePath, "*.csproj", SearchOption.AllDirectories).ToArray(); } else { WriteHelp(); return; } var processors = new List <IProjectProcessor>(); processors.Add(new CSharpProjectProcessor()); if (parseLiquid) { processors.Add(new LiquidProjectProcessor(ConfigureFluidParser)); } ; foreach (var projectFilePath in projectFiles) { var projectPath = Path.GetDirectoryName(projectFilePath); var projectBasePath = Path.GetDirectoryName(projectPath) + Path.DirectorySeparatorChar; var projectRelativePath = projectPath.TrimStart(basePath + Path.DirectorySeparatorChar); var outputPath = Path.Combine(outputBasePath, Path.GetFileNameWithoutExtension(projectFilePath) + ".pot"); if (ProjectBlacklist.Any(o => projectRelativePath.StartsWith(o))) { continue; } var strings = new LocalizableStringCollection(); foreach (var processor in processors) { processor.Process(projectPath, projectBasePath, strings); } if (strings.Values.Any()) { Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); using (var potFile = new PoWriter(outputPath)) { potFile.WriteRecord(strings.Values); } } Console.WriteLine($"{Path.GetFileName(projectPath)}: Found {strings.Values.Count()} strings."); } }