-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRemoveEmptyEntries2.cs
executable file
·82 lines (72 loc) · 1.78 KB
/
RemoveEmptyEntries2.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/csexec -r:System.Windows.Forms.dll
using System;
using System.IO;
using System.Resources;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.Design;
public static class Program
{
public static void Main (string [] args)
{
try {
var script = new EmptyEntriesRemover () {
PackageName = args [1],
CultureCode = args [2].Replace ("_", "-")
};
script.Run ();
}
catch (Exception ex) {
Console.WriteLine (ex.Message);
}
}
}
internal class EmptyEntriesRemover
{
#region Parameters
public string CultureCode { get; set; }
public string PackageName { get; set; }
#endregion
public void Run ()
{
try {
// get translation files
Directory.SetCurrentDirectory (Path.Combine (PackageName, CultureCode));
var files = Directory.GetFiles (".",
string.Format ("*.{0}.resx", CultureCode), SearchOption.AllDirectories);
foreach (var file in files) {
RemoveEmptyEntries (file);
}
}
catch (Exception ex) {
throw ex;
}
}
private void RemoveEmptyEntries (string file)
{
try {
var newFile = file + ".out";
using (ResXResourceWriter resxWriter = new ResXResourceWriter (newFile)) {
var resxReader = new ResXResourceReader(file);
resxReader.UseResXDataNodes = true;
foreach (DictionaryEntry entry in resxReader) {
var node = (ResXDataNode) entry.Value;
if (!string.IsNullOrEmpty (node.GetValue((ITypeResolutionService) null).ToString ())) {
resxWriter.AddResource (node);
}
}
resxReader.Close ();
}
if (new FileInfo (newFile).Length < new FileInfo (file).Length) {
File.Delete (file);
File.Move (newFile, file);
}
else {
File.Delete (newFile);
}
}
catch (Exception ex) {
Console.WriteLine ("{0}: {1}", file, ex.Message);
}
}
}