public Dictionary <string, XliffTranslationFiles> GetXliffFilesPerLocale() { var files = new Dictionary <string, XliffTranslationFiles>(); foreach (var document in xlfDocuments) { string xliffFilePath = XliffFileHelpers.GetRelativeFilePathTo(baseDirectory, document.FileName); string plainFileName = XliffFileHelpers.GetPlainFileName(baseDirectory, xliffFilePath); foreach (var xlfFile in document.Files) { string storageLocation = XliffFileHelpers.GetStorageLocation(plainFileName, xlfFile.Original); string locale = XliffFileHelpers.ExtractLocaleFromFileName(xliffFilePath); if (!files.TryGetValue(storageLocation, out XliffTranslationFiles translationFiles)) { translationFiles = new XliffTranslationFiles(storageLocation); files.Add(storageLocation, translationFiles); } translationFiles.AddXliffFile(locale, xlfFile); } } return(files); }
public ICollection <StringResource> Import() { var matchedXlfFile = false; xliffDocumentProvider.LoadXlfDocuments(); foreach (var doc in xliffDocumentProvider.XlfDocuments) { string plainFileName = XliffFileHelpers.GetPlainFileName(baseDirectory, doc.FileName); foreach (var xlfFile in doc.Files) { if (!FileMatchesProjectInvariantLocale(xlfFile)) { continue; } matchedXlfFile = true; string storageLocation = XliffFileHelpers.GetStorageLocation(plainFileName, xlfFile.Original); string locale = GetLocale(doc.FileName, xlfFile); Dictionary <string, StringResource> fileStringResources = GetStringResourcesForFile(storageLocation); foreach (var transUnit in xlfFile.TransUnits) { StringResource stringResource = GetOrCreateStringResource(fileStringResources, storageLocation, transUnit); if (ShouldWriteTargetLanguage(locale, transUnit)) { stringResource.SetLocaleText(locale, transUnit.Target); } } } } ValidateXlfFilesFound(matchedXlfFile, xliffDocumentProvider.XlfDocuments.Count); return(resourcesPerFile.SelectMany(t => t.Value.Select(x => x.Value)).ToList()); }