예제 #1
0
        /// <summary>
        /// Add a new resource key
        /// </summary>
        /// <param name="newLocaleResourceKey"></param>
        public LocaleResourceKey Add(LocaleResourceKey newLocaleResourceKey)
        {
            // Trim name to stop any issues
            newLocaleResourceKey.Name = newLocaleResourceKey.Name.Trim();

            // Check to see if a respource key of this name already exists
            var existingResourceKey = _localizationRepository.GetResourceKey(newLocaleResourceKey.Name);

            if (existingResourceKey != null)
            {
                throw new ApplicationException(string.Format("The resource key with name '{0}' already exists.", newLocaleResourceKey.Name));
            }

            newLocaleResourceKey.DateAdded = DateTime.UtcNow;

            // Now add an empty value for each language
            newLocaleResourceKey.LocaleStringResources = new List <LocaleStringResource>();
            foreach (var language in _localizationRepository.GetAll())
            {
                var resourceValue = new LocaleStringResource
                {
                    Language          = language,
                    LocaleResourceKey = newLocaleResourceKey,
                    ResourceValue     = string.Empty
                };

                language.LocaleStringResources.Add(resourceValue);
            }

            //Sanitze
            newLocaleResourceKey = SanitizeLocaleResourceKey(newLocaleResourceKey);

            // Add the key
            return(_localizationRepository.Add(newLocaleResourceKey));
        }
예제 #2
0
        public void ImportLanguage()
        {
            // Ensure language does not exist
            _localizationRepositorySub.GetLanguageByLanguageCulture(Arg.Any <string>()).Returns(x => null);

            var resourceKey1 = new LocaleResourceKey
            {
                DateAdded = DateTime.UtcNow,
                Id        = Guid.NewGuid(),
                Name      = "testKey1",
                Notes     = "test notes"
            };

            var resourceValue1 = new LocaleStringResource
            {
                LocaleResourceKey = resourceKey1,
                ResourceValue     = "testValue1"
            };

            var resourceKey2 = new LocaleResourceKey
            {
                DateAdded = DateTime.UtcNow,
                Id        = Guid.NewGuid(),
                Name      = "testKey2",
                Notes     = "test notes"
            };

            var resourceValue2 = new LocaleStringResource
            {
                LocaleResourceKey = resourceKey1,
                ResourceValue     = "testValue2"
            };

            var newLanguage = new Language
            {
                LanguageCulture       = "fr-FR",
                Name                  = "French",
                LocaleStringResources = new List <LocaleStringResource> {
                    resourceValue1, resourceValue2
                },
            };

            _localizationRepositorySub.GetAllResourceKeys().Returns(new List <LocaleResourceKey> {
                resourceKey1, resourceKey2
            });

            _localizationRepositorySub.GetResourceKey("testKey1").Returns(resourceKey1);

            _localizationRepositorySub.GetResourceKey("testKey2").Returns(resourceKey2);

            _localizationRepositorySub.GetResourceKey("testKeyNew").Returns(x => null);

            _localizationRepositorySub.GetAll().Returns(new List <Language> {
                newLanguage
            });

            var testData = new List <string>
            {
                "testKey1,testValue1",
                "testKey2,testValue2",
                ",should not import",                     // Test for ignore of empty key
                "testKeyNew,testValueNew"
            };


            var report = _localizationService.FromCsv("fr-FR", testData);

            Assert.AreEqual(report.Warnings.Count, 1);
            Assert.AreEqual(report.Warnings[0].ErrorWarningType, CsvErrorWarningType.NewKeyCreated);
            Assert.AreEqual(report.Errors.Count, 0);
        }