예제 #1
0
        public void SaveAsResX(string fileName, ResXSaveOption options)
        {
            var entries = new List <ResXEntry>();

            foreach (var f in Files)
            {
                foreach (var u in f.TransUnits)
                {
                    var entry = new ResXEntry()
                    {
                        Id = u.GetId(Dialect), Value = u.Target
                    };

                    if (options.HasFlag(ResXSaveOption.IncludeComments) && u.Optional.Notes.Count() > 0)
                    {
                        entry.Comment = u.Optional.Notes.First().Value;
                    }

                    entries.Add(entry);
                }
            }

            if (options.HasFlag(ResXSaveOption.SortEntries))
            {
                entries.Sort();
            }

            ResXFile.Write(fileName, entries, options.HasFlag(ResXSaveOption.IncludeComments) ? ResXFile.Option.None : ResXFile.Option.SkipComments);
        }
예제 #2
0
        public void ExportResX(string filename, string language, SaveOptions options)
        {
            if (!GetLanguages().Contains(language))
            {
                throw new ArgumentException($"'{language}' is not a configured language.");
            }

            var entries = new List <ResXEntry>();

            foreach (var item in Items)
            {
                var      entry = new ResXEntry();
                TextItem text;
                if (!item.Texts.TryGetValue(language, out text) && !item.Texts.TryGetValue(NeutralLanguage, out text))
                {
                    throw new MissingTranslationsException(new List <string>()
                    {
                        $"{item.Id};{language}"
                    });
                }

                entry.Id    = item.Id;
                entry.Value = text.Value;

                if (!options.HasFlag(SaveOptions.SkipComments))
                {
                    string comment;
                    if (item.Comments.TryGetValue(language, out comment) || item.Comments.TryGetValue(NeutralLanguage, out comment))
                    {
                        entry.Comment = comment;
                    }
                }

                entries.Add(entry);
            }

            if (options.HasFlag(SaveOptions.SortEntries))
            {
                entries.Sort();
            }

            ResXFile.Write(filename, entries);
        }