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)); }
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 })); }
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 })); }
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)); }
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)); }