load in resx file info for all known languages
This commit is contained in:
parent
93f0ee18d7
commit
737ee16718
@ -8,14 +8,22 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Collections;
|
||||||
|
using System.ComponentModel.Design;
|
||||||
|
|
||||||
|
|
||||||
namespace EduNetworkBuilder
|
namespace EduNetworkBuilder
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public partial class TranslationWindow : Form
|
public partial class TranslationWindow : Form
|
||||||
{
|
{
|
||||||
Network myNet = null;
|
Network myNet = null;
|
||||||
string[,] LanguageChoices = { { NB.Translate("NB_NBEn"), "en" }, { NB.Translate("NB_NBFr"), "fr" } };
|
string[,] LanguageChoices = { { NB.Translate("NB_NBEn"), "en" }, { NB.Translate("NB_NBFr"), "fr" } };
|
||||||
string FormChosenDir = "";
|
string FormChosenDir = "";
|
||||||
|
List<TranslationResxFile> TranslationResxFiles = new List<TranslationResxFile>();
|
||||||
|
|
||||||
public TranslationWindow(Network ToEdit)
|
public TranslationWindow(Network ToEdit)
|
||||||
{
|
{
|
||||||
@ -247,6 +255,7 @@ namespace EduNetworkBuilder
|
|||||||
if (toCheck == targetfile)
|
if (toCheck == targetfile)
|
||||||
{
|
{
|
||||||
FormChosenDir = Path.GetDirectoryName(Choice);
|
FormChosenDir = Path.GetDirectoryName(Choice);
|
||||||
|
LoadResxFiles();
|
||||||
panelTranslateFormItems.Enabled = true;
|
panelTranslateFormItems.Enabled = true;
|
||||||
lblFormDir.Text = "Dir: " + FormChosenDir;
|
lblFormDir.Text = "Dir: " + FormChosenDir;
|
||||||
lblFormDir.AutoSize = true;
|
lblFormDir.AutoSize = true;
|
||||||
@ -270,6 +279,19 @@ namespace EduNetworkBuilder
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LoadResxFiles()
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(FormChosenDir)) return;
|
||||||
|
var resxFiles = Directory.EnumerateFiles(FormChosenDir, "*.resx", SearchOption.AllDirectories);
|
||||||
|
TranslationResxFiles.Clear();
|
||||||
|
|
||||||
|
foreach (string currentFile in resxFiles)
|
||||||
|
{
|
||||||
|
TranslationResxFile TRF = new TranslationResxFile(currentFile);
|
||||||
|
TranslationResxFiles.Add(TRF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void btnChooseDir_Click(object sender, EventArgs e)
|
private void btnChooseDir_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string startingDir = FormChosenDir;
|
string startingDir = FormChosenDir;
|
||||||
@ -288,4 +310,65 @@ namespace EduNetworkBuilder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region TranslationClasses
|
||||||
|
public class TranslationItem
|
||||||
|
{
|
||||||
|
public string Key = "";
|
||||||
|
public string Value = "";
|
||||||
|
public string Comment = "";
|
||||||
|
public bool translated = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TranslationResxFile
|
||||||
|
{
|
||||||
|
public string filename;
|
||||||
|
List<TranslationItem> Items = new List<TranslationItem>();
|
||||||
|
|
||||||
|
public TranslationResxFile(string File)
|
||||||
|
{
|
||||||
|
filename = File;
|
||||||
|
Load();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Load()
|
||||||
|
{
|
||||||
|
Items.Clear();
|
||||||
|
ResXResourceReader InResx = new ResXResourceReader(filename);
|
||||||
|
InResx.UseResXDataNodes = true;
|
||||||
|
System.Reflection.Assembly currentAssembly = System.Reflection.Assembly.GetExecutingAssembly();
|
||||||
|
|
||||||
|
foreach (DictionaryEntry d in InResx)
|
||||||
|
{
|
||||||
|
ResXDataNode rdn = (ResXDataNode)d.Value;
|
||||||
|
TranslationItem TI = new TranslationItem();
|
||||||
|
TI.Comment = rdn.Comment;
|
||||||
|
TI.Key = rdn.Name;
|
||||||
|
TI.Value = (string)rdn.GetValue(new System.Reflection.AssemblyName[] { currentAssembly.GetName() });
|
||||||
|
Items.Add(TI);
|
||||||
|
}
|
||||||
|
InResx.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
{
|
||||||
|
string tmpfile = Path.Combine(Path.GetDirectoryName(filename), Path.GetFileNameWithoutExtension(filename) + "-tmp" + Path.GetExtension(filename));
|
||||||
|
ResXResourceWriter WriteResx = new ResXResourceWriter(tmpfile);
|
||||||
|
|
||||||
|
foreach (TranslationItem d in Items)
|
||||||
|
{
|
||||||
|
ResXDataNode rdn = new ResXDataNode(d.Key, d.Value);
|
||||||
|
rdn.Comment = d.Comment;
|
||||||
|
WriteResx.AddResource(rdn);
|
||||||
|
//Console.WriteLine("Adding " + toWrite.Name);
|
||||||
|
}
|
||||||
|
WriteResx.Generate();
|
||||||
|
WriteResx.Close();
|
||||||
|
//If we have an error, we should have exited and gone to "catch."
|
||||||
|
//Proceed to put the new file
|
||||||
|
File.Delete(filename);
|
||||||
|
File.Move(tmpfile, filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user