private void ExtractSZSButton_Click(object sender, EventArgs e) { string result = "Successfully extracted MSBTs and XLIFFs from SZS file."; SanitizeFolderPath(extractingFolderTextBox, ref extractingDirectory); OpenFile(extractingSZSFilename); try { foreach (MsbtFile file in msbtFiles) { if (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(file.Name))) { Directory.CreateDirectory(Path.GetDirectoryName(file.Name)); } MSBT msbt = new MSBT(file.Content); if (!extractingDirectory.Exists) { Directory.CreateDirectory(extractingDirectory.FullName); } string msbtFilename = Path.GetFileNameWithoutExtension(file.Name); msbt.SaveFile(Path.Combine(extractingDirectory.FullName, Path.GetFileName(file.Name))); msbt.ExportXLIFF(Path.Combine(extractingDirectory.FullName, msbtFilename + ".xliff")); } } catch (Exception ex) { result = ex.Message; } MessageBox.Show(result, "Extracting MSBTs and XLIFFs", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void PackXLIFFSButton_Click(object sender, EventArgs e) { string result = "Successfully packed XLIFFs into SZS file."; SanitizeFolderPath(packingFolderTextBox, ref packingDirectory); try { FileInfo[] msbtFiles = packingDirectory.GetFiles("*.msbt"); FileInfo[] xliffFiles = packingDirectory.GetFiles("*.xliff"); Dictionary <string, FileInfo> matches = new Dictionary <string, FileInfo>(); Dictionary <string, FileInfo> nonMatches = new Dictionary <string, FileInfo>(); foreach (FileInfo msbtFile in msbtFiles) { string msbtName = Path.GetFileNameWithoutExtension(msbtFile.FullName); foreach (FileInfo xliffFile in xliffFiles) { string xliffName = Path.GetFileNameWithoutExtension(xliffFile.FullName); if (msbtName == xliffName) { matches.Add(msbtName, msbtFile); break; } else { if (!matches.ContainsKey(xliffName) && !nonMatches.ContainsKey(msbtName)) { nonMatches.Add(msbtName, msbtFile); } } } } SARC sarc = new SARC { padding = globalPadding, byteOrder = ByteOrder.LittleEndian }; foreach (string file in matches.Keys) { try { MSBT msbt = new MSBT(matches[file].FullName); string filePath = Path.Combine(Path.GetDirectoryName(matches[file].FullName), Path.GetFileNameWithoutExtension(matches[file].FullName) + ".xliff"); msbt.ImportXLIFF(filePath); sarc.files.Add(Path.GetFileName(matches[file].FullName), msbt.ExportFileBytes()); } catch (Exception ex) { result = ex.Message; } } foreach (string file in nonMatches.Keys) { try { MSBT msbt = new MSBT(nonMatches[file].FullName); sarc.files.Add(Path.GetFileName(nonMatches[file].FullName), msbt.ExportFileBytes()); } catch (Exception ex) { result = ex.Message; } } File.WriteAllBytes(packingSZSFilename, YAZ0.Compress(sarc.Rebuild())); } catch (Exception ex) { result = ex.Message; } MessageBox.Show(result, "Packing XLIFFs", MessageBoxButtons.OK, MessageBoxIcon.Information); }