public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var doc = await db.GetByIdAsync(id);

            if (doc == null)
            {
                return(HttpNotFound());
            }

            var translations = doc.Translations
                               .Select(dt => dt.LanguageCode)
                               .ToList();

            if (translations.Count() == LanguageDefinitions.Languages.Count)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var model = new DocumentTranslation
            {
                DocumentId = doc.Id
            };

            ViewBag.Languages =
                LanguageDefinitions.GenerateAvailableLanguageDDL(doc.Translations.Select(t => t.LanguageCode).ToList());

            return(View(model));
        }
Beispiel #2
0
        public async Task <ActionResult> AddTranslation(ClassificationTranslation translation)
        {
            if (DoesClassificationExist(translation))
            {
                ModelState.AddModelError("Value", ClassificationStrings.ValError_AlreadyExists);
            }

            if (ModelState.IsValid)
            {
                db.AddTranslation(translation);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            var c = await db.GetByIdAsync(translation.ClassificationId);

            if (c != null)
            {
                ViewBag.Languages = LanguageDefinitions
                                    .GenerateAvailableLanguageDDL(c.Translations.Select(t => t.LanguageCode).ToList());
            }

            return(View(translation));
        }
        public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var e = await db.GetByIdAsync(id);

            if (e == null)
            {
                return(HttpNotFound());
            }

            if (e.Translations.Count == LanguageDefinitions.Languages.Count)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            ViewBag.Languages = LanguageDefinitions.GenerateAvailableLanguageDDL(
                e.Translations.Select(t => t.LanguageCode).ToArray());

            return(View(new EventTranslation
            {
                EventId = e.Id
            }));
        }
Beispiel #4
0
        public Dictionary <Languages, LanguageDefinitions> LoadFiles()
        {
            Dictionary <Languages, LanguageDefinitions> result = new Dictionary <Languages, LanguageDefinitions>();

            foreach (Languages l in Enum.GetValues(typeof(Languages)))
            {
                string filename = GetFilename(l);
                string path     = Path.Combine(saveDirectory, filename);
                if (File.Exists(path))
                {
                    string contents = File.ReadAllText(path);
                    bool   loaded   = file.FromXML(contents);
                    if (loaded)
                    {
                        result[l] = new LanguageDefinitions(l, file.Data);
                    }
                }
                else
                {
                    errorLogger.LogError(new Error(ErrorCode.MissingLanguageFile, ErrorSeverity.Warning, path));
                }
            }

            return(result);
        }
        /// <summary>
        /// Gets a handler that redirects the request
        /// to an url that has the default language for the
        /// application.
        /// </summary>
        private static IHttpHandler GetDefaultLocaleRedirectHandler(RequestContext requestContext)
        {
            var routeValues = requestContext.RouteData.Values;

            routeValues["culture"] =
                LanguageDefinitions.GetClosestLanguageCode(requestContext.HttpContext.Request.UserLanguages);

            return(new RedirectHandler(new UrlHelper(requestContext).RouteUrl(routeValues)));
        }
        //public async Task<ActionResult> AddTranslation()
        public ActionResult AddTranslation()
        {
            var archive = db.Set <Archive>().FirstOrDefault();

            var t = new ArchiveTranslation
            {
                ArchiveId = archive.Id
            };

            ViewBag.Languages =
                LanguageDefinitions.GenerateAvailableLanguageDDL(archive.Translations.Select(tr => tr.LanguageCode));

            return(View(t));
        }
        public async Task <ActionResult> AddTranslation(EventTranslation translation)
        {
            var author = await db.GetByIdAsync(translation.EventId);

            if (ModelState.IsValid)
            {
                author.Translations.Add(translation);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.Languages = LanguageDefinitions.GenerateAvailableLanguageDDL(
                author.Translations.Select(t => t.LanguageCode).ToArray());

            return(View(translation));
        }
        public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var c = await db.GetByIdAsync(id);

            if (c == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Languages =
                LanguageDefinitions.GenerateAvailableLanguageDDL(c.Translations.Select(t => t.LanguageCode).ToList());

            return(View(new CollectionTranslation
            {
                CollectionId = c.Id
            }));
        }
Beispiel #9
0
        public async Task <ActionResult> AddTranslation(KeywordTranslation translation)
        {
            if (DoesKeywordExist(translation))
            {
                ModelState.AddModelError("Value", KeywordStrings.Validation_AlreadyExists);
            }

            if (ModelState.IsValid)
            {
                db.AddTranslation(translation);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewBag.Languages =
                LanguageDefinitions.GenerateAvailableLanguageDDL(
                    (await db.GetByIdAsync(translation.KeywordId)).Translations.Select(t => t.LanguageCode));

            return(View(translation));
        }
        public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var referencedLink = await db.GetByIdAsync(id);

            if (referencedLink == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Languages = LanguageDefinitions.GenerateAvailableLanguageDDL(
                referencedLink.Translations.Select(t => t.LanguageCode).ToArray());

            return(View(new ReferencedLinkTranslation
            {
                Id = referencedLink.Id
            }));
        }
        public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var image = await db.GetByIdAsync(id);

            if (image == null)
            {
                return(HttpNotFound());
            }

            var model = new SpecimenTranslation
            {
                SpecimenId = image.Id
            };

            ViewBag.Languages = LanguageDefinitions.GenerateAvailableLanguageDDL(image.Translations.Select(t => t.LanguageCode));

            return(View(model));
        }
Beispiel #12
0
        public async Task <ActionResult> AddTranslation(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var k = await db.GetByIdAsync(id);

            if (k == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Languages =
                LanguageDefinitions.GenerateAvailableLanguageDDL(k.Translations.Select(t => t.LanguageCode));

            var model = new KeywordTranslation
            {
                KeywordId = k.Id
            };

            return(View(model));
        }
        public void LanguageResolver_GetsLanguage_IfExactMatch()
        {
            var cultureCode = "en";

            Assert.AreEqual("en", LanguageDefinitions.GetClosestLanguageCode(cultureCode));
        }
 public void LanguageResolver_DoesntMatchDifferentCodes()
 {
     Assert.AreEqual(false, LanguageDefinitions.AreCodesEquivalent("en", "de-DE"));
     Assert.AreEqual(false, LanguageDefinitions.AreCodesEquivalent("de-DE", "fr-CA"));
 }
 public void LanguageResolver_MatchesSimilarCodes()
 {
     Assert.AreEqual(true, LanguageDefinitions.AreCodesEquivalent("en-US", "en-GB"));
     Assert.AreEqual(true, LanguageDefinitions.AreCodesEquivalent("pt", "pt-BR"));
 }
 public void LanguageResolver_MatchesExactCodes()
 {
     Assert.AreEqual(true, LanguageDefinitions.AreCodesEquivalent("pt", "pt"));
     Assert.AreEqual(true, LanguageDefinitions.AreCodesEquivalent("pt-pt", "pt-PT"));
 }
 public void LanguageResolver_GetsDefaultLanguage_IfNoneSupplied()
 {
     Assert.AreEqual("pt", LanguageDefinitions.GetClosestLanguageCode(null));
 }
        public void LanguageResolver_GetsDefaultLanguage_IfFallbacksAreNotSupported()
        {
            var otherLanguages = new string[] { "de-DE", "de", "fr-FR" };

            Assert.AreEqual("pt", LanguageDefinitions.GetClosestLanguageCode(otherLanguages));
        }
        public void LanguageResolver_GetsFallbackLanguage_IfFallbacksAreAccepted()
        {
            var otherLanguages = new string[] { "de-DE", "de", "fr", "en-US", "en", "pt" };

            Assert.AreEqual("en", LanguageDefinitions.GetClosestLanguageCode(otherLanguages));
        }
        public void LanguageResolver_GetsDefaultLanguage_IfNoneMatch()
        {
            var cultureCode = "de-DE";

            Assert.AreEqual("pt", LanguageDefinitions.GetClosestLanguageCode(cultureCode));
        }
        public void LanguageResolver_GetsClosestLanguage_IfItDoesntExist()
        {
            var cultureCode = "en-US";

            Assert.AreEqual("en", LanguageDefinitions.GetClosestLanguageCode(cultureCode));
        }
        protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            // Get the language from the url -- most prioritary.
            var urlLocale = requestContext.RouteData.Values["culture"] as string ?? "";

            var culturesToTest = new List <string>();

            if (!string.IsNullOrEmpty(urlLocale))
            {
                culturesToTest.Add(urlLocale);
            }


            // Get the language from the cookie, if it exists -- 2nd priority.
            var cookieLocale = requestContext.HttpContext.Request.Cookies["locale"];

            if (cookieLocale != null)
            {
                culturesToTest.Add(cookieLocale.Value);
            }

            // Add all the user's requested languages from the Accept-Language header -- 3rd priority.
            culturesToTest.AddRange(requestContext
                                    .HttpContext
                                    .Request
                                    .UserLanguages
                                    .Select(l => l.Split(';')[0])
                                    .ToList());

            var chosenLanguage = LanguageDefinitions.GetClosestLanguageCode(culturesToTest.ToArray());
            var localeCookie   = new HttpCookie("locale", chosenLanguage);

            localeCookie.Expires = DateTime.Now.AddYears(2);

            requestContext.HttpContext.Response.SetCookie(localeCookie);

            // Redirect if the url locale doesn't match the culture name.
            if (!LanguageDefinitions.AreCodesEquivalent(chosenLanguage, urlLocale))
            {
                var routeValues = requestContext.RouteData.Values;
                routeValues["culture"] =
                    LanguageDefinitions.GetClosestLanguageCode(chosenLanguage);

                return(new RedirectHandler(new UrlHelper(requestContext).RouteUrl(routeValues)));
            }

            try
            {
                // Set the thread's language.
                var culture = CultureInfo.GetCultureInfo(chosenLanguage);
                Thread.CurrentThread.CurrentCulture   = culture;
                Thread.CurrentThread.CurrentUICulture = culture;
            }
            catch (CultureNotFoundException)
            {
                // if CultureInfo.GetCultureInfo throws exception
                // we should redirect with default locale
                return(GetDefaultLocaleRedirectHandler(requestContext));
            }

            return(base.GetHttpHandler(requestContext));
        }