public void LoadAndSaveTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            var bundle = adapter.Load("ResXResourceBundleAdapterTest.Sample.resx");

            Assert.AreEqual(2, bundle.Count);
            Assert.IsTrue(bundle.ContainsCulture("neutral"));
            Assert.IsTrue(bundle.ContainsCulture("el-GR"));

            var baseResourceSet = bundle.NeutralOrFirst();
            var resourceSet = bundle["el-GR"];

            Assert.AreEqual(2, resourceSet.CountTranslatedItems(baseResourceSet));
            Assert.AreEqual(1, resourceSet.CountMarkedForReviewing());
            Assert.AreEqual(ResourceSetStatus.Unaffected, resourceSet.Status);

            // simulate that contents have been updated and save
            bundle["neutral"].Status = ResourceSetStatus.Updated;
            bundle["el-GR"].Status = ResourceSetStatus.Updated;
            adapter.Save("SaveTest.resx", bundle);

            // compare original and new files
            Assert.AreEqual(XmlReader.Create("ResXResourceBundleAdapterTest.Sample.resx").ReadOuterXml(), XmlReader.Create("SaveTest.resx").ReadOuterXml());
            Assert.AreEqual(XmlReader.Create("ResXResourceBundleAdapterTest.Sample.el-GR.resx").ReadOuterXml(), XmlReader.Create("SaveTest.el-GR.resx").ReadOuterXml());
        }
        public void LoadAndSaveTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            var bundle  = adapter.Load("ResXResourceBundleAdapterTest.Sample.resx");

            Assert.AreEqual(2, bundle.Count);
            Assert.IsTrue(bundle.ContainsCulture("neutral"));
            Assert.IsTrue(bundle.ContainsCulture("el-GR"));

            var baseResourceSet = bundle.NeutralOrFirst();
            var resourceSet     = bundle["el-GR"];

            Assert.AreEqual(2, resourceSet.CountTranslatedItems(baseResourceSet));
            Assert.AreEqual(1, resourceSet.CountMarkedForReviewing());
            Assert.AreEqual(ResourceSetStatus.Unaffected, resourceSet.Status);

            // simulate that contents have been updated and save
            bundle["neutral"].Status = ResourceSetStatus.Updated;
            bundle["el-GR"].Status   = ResourceSetStatus.Updated;
            adapter.Save("SaveTest.resx", bundle);

            // compare original and new files
            Assert.AreEqual(XmlReader.Create("ResXResourceBundleAdapterTest.Sample.resx").ReadOuterXml(), XmlReader.Create("SaveTest.resx").ReadOuterXml());
            Assert.AreEqual(XmlReader.Create("ResXResourceBundleAdapterTest.Sample.el-GR.resx").ReadOuterXml(), XmlReader.Create("SaveTest.el-GR.resx").ReadOuterXml());
        }
        public void AddRemoveResourceSetWhenBaseNameDoesNotContainCultureInfoTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            const string fileName = "ResXResourceBundleAdapterTest.Sample.resx";
            var bundle = adapter.Load(fileName);

            var newResourceSet = bundle.Add("hi");
            newResourceSet.Add("s1", new ResourceStringItem { Name = "s1", Value = "test" });

            adapter.Save(fileName, bundle);

            Assert.IsTrue(File.Exists("ResXResourceBundleAdapterTest.Sample.hi.resx"));
        }
示例#4
0
        public void AddRemoveResourceSetWhenBaseNameContainsCultureInfoTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            const string fileName = "CrossLoopStrings.en.xml";
            var bundle = adapter.Load(fileName);

            var newResourceSet = bundle.Add("el");
            newResourceSet.Add("s1", new ResourceStringItem {Name = "s1", Value = "test"});

            adapter.Save(fileName, bundle);

            Assert.IsTrue(File.Exists("CrossLoopStrings.el.xml"));
        }
示例#5
0
        public void Xml2ResourceSetTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            var bundle  = adapter.Load("CrossLoopStrings.en.xml");

            Assert.IsTrue(bundle.ContainsCulture("en"));
            Assert.IsTrue(bundle.ContainsCulture("it"));
            Assert.IsTrue(bundle.ContainsCulture("ja"));

            var resourceSet = bundle["en"];

            Assert.AreEqual(173, resourceSet.Count);
            Assert.AreEqual("Connected to help", resourceSet["s3"].Value);
        }
        public void AddRemoveResourceSetWhenBaseNameDoesNotContainCultureInfoTest()
        {
            var          adapter  = new ResXResourceBundleAdapter(new FileSystem());
            const string fileName = "ResXResourceBundleAdapterTest.Sample.resx";
            var          bundle   = adapter.Load(fileName);

            var newResourceSet = bundle.Add("hi");

            newResourceSet.Add("s1", new ResourceStringItem {
                Name = "s1", Value = "test"
            });

            adapter.Save(fileName, bundle);

            Assert.IsTrue(File.Exists("ResXResourceBundleAdapterTest.Sample.hi.resx"));
        }
示例#7
0
        public void AddRemoveResourceSetWhenBaseNameContainsCultureInfoTest()
        {
            var          adapter  = new ResXResourceBundleAdapter(new FileSystem());
            const string fileName = "CrossLoopStrings.en.xml";
            var          bundle   = adapter.Load(fileName);

            var newResourceSet = bundle.Add("el");

            newResourceSet.Add("s1", new ResourceStringItem {
                Name = "s1", Value = "test"
            });

            adapter.Save(fileName, bundle);

            Assert.IsTrue(File.Exists("CrossLoopStrings.el.xml"));
        }
示例#8
0
        public void Xml2ResourceSetTest()
        {
            var adapter = new ResXResourceBundleAdapter(new FileSystem());
            var bundle = adapter.Load("CrossLoopStrings.en.xml");

            Assert.IsTrue(bundle.ContainsCulture("en"));
            Assert.IsTrue(bundle.ContainsCulture("it"));
            Assert.IsTrue(bundle.ContainsCulture("ja"));

            var resourceSet = bundle["en"];
            Assert.AreEqual(173, resourceSet.Count);
            Assert.AreEqual("Connected to help", resourceSet["s3"].Value);
        }
示例#9
0
        private void ResourceBundle_Save()
        {
            if (this.Context.CurrentProjectIsDirty)
            {
                ResXResourceBundleAdapter resXResourceBundle = new ResXResourceBundleAdapter(new StandardAdapters.Common.FileSystem());
                resXResourceBundle.Save(this.Context.CurrentBaseFile, this.Context.CurrentResourceBundle);
                this.Context.CurrentProjectIsDirty = false;
            }

            this.RefreshButtonState();
        }
示例#10
0
        private void ResourceBundle_Open(string fileName)
        {
            if (this.AskToSave())
            {
                if (string.IsNullOrEmpty(fileName))
                {
                    if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        fileName = OpenFileDialog1.FileName;
                    }
                    else
                    {
                        return;
                    }
                }

                // change current directory to match the files directory
                FileInfo fileInfo = new FileInfo(fileName);

                // unsubscribe to change events of previous base resource set
                if (this.Context.CurrentBaseResourceSet != null)
                {
                    this.Context.CurrentBaseResourceSet.CollectionChanged -= this.CurrentBaseResourceSet_CollectionChanged;
                    this.Context.CurrentBaseResourceSet.ResourceItemChanged -= this.CurrentBaseResourceSet_ResourceItemChanged;
                }

                ResXResourceBundleAdapter resXResourceBundle = new ResXResourceBundleAdapter(new StandardAdapters.Common.FileSystem());
                this.Context.CurrentResourceBundle = resXResourceBundle.Load(fileName);
                this.Context.CurrentBaseFile = fileName;
                this.Context.CurrentBaseResourceSet = this.Context.CurrentResourceBundle.NeutralOrFirst();

                // subscribe to change events of base resource set
                this.Context.CurrentBaseResourceSet.CollectionChanged += this.CurrentBaseResourceSet_CollectionChanged;
                this.Context.CurrentBaseResourceSet.ResourceItemChanged += this.CurrentBaseResourceSet_ResourceItemChanged;

                // load bundle on UI
                this.RefreshCurrentBundle();

                // insert into recent items list
                string fileNameStipped = StringTools.CompactText(fileName, 50);
                RecentItemsManager.PushItem(new RecentItem(fileNameStipped, "file", fileName));

                // show caption
                Text = fileInfo.Name + " - " + Tools.GetAssemblyProduct();

                this.Context.CurrentProjectIsDirty = false;
                this.Context.InvokeCurrentResourceBundleChanged();
                this.RefreshButtonState();

                // if there is only one resource set (the base one) the propose to create a new one
                // to start translation
                if (this.Context.CurrentResourceBundle.Count == 1)
                {
                    this.ResourceSet_Add();
                }
            }
        }