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);
        }
Example #2
0
        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());
        }