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
        private string GetLocale(string fileName, XlfFile xlfFile)
        {
            if (!string.IsNullOrWhiteSpace(xlfFile.Optional.TargetLang))
            {
                return(xlfFile.Optional.TargetLang);
            }

            return(XliffFileHelpers.ExtractLocaleFromFileName(fileName));
        }
        public void SaveDocuments(IEnumerable <string> localesToSave)
        {
            foreach (var document in xlfDocuments)
            {
                string xliffFilePath = XliffFileHelpers.GetRelativeFilePathTo(baseDirectory, document.FileName);
                string plainFileName = XliffFileHelpers.GetPlainFileName(baseDirectory, xliffFilePath);
                string locale        = XliffFileHelpers.ExtractLocaleFromFileName(xliffFilePath);

                if (!localesToSave.Contains(locale))
                {
                    continue;
                }

                try
                {
                    document.Save();
                    savedXlfDocuments.Add(document);
                }
                catch (Exception ex)
                {
                    fileSaveErrors.Add(new XliffFileError(document.FileName, ex));
                }
            }
        }