// GET: TranslationLanguages/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TranslationLanguage translationLanguage = UnitOfWork.TranslationManager.GetTranslationLanguage(id.Value); if (translationLanguage == null) { return(HttpNotFound()); } return(PartialView(new TranslationLanguageView { TranslationWords = (from c in translationLanguage.TranslationWords select new TranslationWordView { Code = c.Code, Description = c.Description, TranslationLanguageId = c.TranslationLanguageId, TranslationWordId = c.TranslationWordId }).ToList(), TranslationLanguageId = translationLanguage.TranslationLanguageId, Description = translationLanguage.Description, Code = translationLanguage.Code })); }
public TranslationLanguage DeleteTranslationLanguage(TranslationLanguage translationLanguage) { var result = TranslationLanguageRepository.Remove(translationLanguage); Context.SaveChanges(); return(result); }
public static Expression <Func <Vlog, VlogDetailsViewModel> > FromEntity(TranslationLanguage language) { return(x => new VlogDetailsViewModel() { Id = x.Id, Alias = x.Alias, EmbededVideo = x.EmbededVideo, Thumbnail = new ImageDetailsViewModel() { Id = x.Thumbnail.Id, Name = x.Thumbnail.Name, Url = x.Thumbnail.URL }, DefaultTranslation = new VlogTranslationDetails() { Name = x.Name }, Translation = x.Translations .Where(t => t.Language == language) .Select(t => new VlogTranslationDetails() { Name = t.Name }) .FirstOrDefault() }); }
public TextTranslationResult Adapt(TextTranslationRequest request, TextTranslationResultDto resultDto) { var translations = new List <TranslatedText>(); for (var i = 0; i < resultDto.Translations.Count; i++) { var translationDto = resultDto.Translations.ElementAt(i); var detectedSourceLanguage = TranslationLanguage.CreateByCode(translationDto.Detected_source_language); var textKey = request.TextParts.ElementAt(i).Key; var text = translationDto.Text; request.IgnoreMarkup.Evaluate(markup => { text = text.Replace(IgnoreForTranslationMarkup.IgnoreBeginTag, markup.BeginTag, StringComparison.Ordinal); text = text.Replace(IgnoreForTranslationMarkup.IgnoreEndTag, markup.EndTag, StringComparison.Ordinal); }); var identifiableText = new IdentifiableText(textKey, text); translations.Add(new TranslatedText(detectedSourceLanguage, identifiableText)); } var result = new TextTranslationResult(translations); return(result); }
public TranslationLanguage AddTranslationLanguage(TranslationLanguage translationLanguage) { var result = TranslationLanguageRepository.Add(translationLanguage); Context.SaveChanges(); return(result); }
internal TextTranslation(TranslationLanguage detectedSourceLanguage, TextPart textPart) { Guard.ObjectNotNull(() => detectedSourceLanguage); Guard.ObjectNotNull(() => textPart); DetectedSourceLanguage = detectedSourceLanguage; TextPart = textPart; }
public ActionResult DeleteConfirmed(int id) { TranslationLanguage translationLanguage = UnitOfWork.TranslationManager.GetTranslationLanguage(id); UnitOfWork.TranslationManager.DeleteTranslationLanguage(translationLanguage); return(PartialView(new TranslationLanguageView { Code = translationLanguage.Code, Description = translationLanguage.Description, TranslationLanguageId = translationLanguage.TranslationLanguageId })); }
public ActionResult Edit([Bind(Include = "TranslationLanguageId,Description,Code,IsDeleted")] TranslationLanguageView instance) { TranslationLanguage translationLanguage = UnitOfWork.TranslationManager.GetTranslationLanguage(instance.TranslationLanguageId); if (ModelState.IsValid) { translationLanguage.TranslationLanguageId = instance.TranslationLanguageId; translationLanguage.Description = instance.Description; translationLanguage.Code = instance.Code.ToUpper(); UnitOfWork.TranslationManager.UpdateTranslationLanguage(translationLanguage); return(PartialView(instance)); } return(PartialView(instance)); }
public IReadOnlyCollection <TextTranslationRequest> CreateRequests( string targetLanguageCode, Maybe <string> sourceLanguageCode, Maybe <IgnoreForTranslationMarkup> ignoreMarkup, params IdentifiableText[] textParts) { var targetLanguage = TranslationLanguage.CreateByCode(targetLanguageCode); var sourceLanguage = sourceLanguageCode.Evaluate( code => Maybe.CreateSome(TranslationLanguage.CreateByCode(code)), () => Maybe.CreateNone <TranslationLanguage>()); var textPartChunks = textParts.Chunk(TextTranslationRequest.MaxTextParts); var result = textPartChunks .Select(chunk => new TextTranslationRequest(targetLanguage, sourceLanguage, ignoreMarkup, chunk.ToList())) .ToList(); return(result); }
public ActionResult Create([Bind(Include = "TranslationLanguageId,Description,Code,IsDeleted")] TranslationLanguageView instance) { TranslationLanguage translationLanguage = null; if (ModelState.IsValid) { translationLanguage = new TranslationLanguage { Code = instance.Code.ToUpper(), Description = instance.Description, IsDeleted = false, TranslationLanguageId = instance.TranslationLanguageId }; UnitOfWork.TranslationManager.AddTranslationLanguage(translationLanguage); return(PartialView(instance)); } return(PartialView(instance)); }
// GET: TranslationLanguages/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TranslationLanguage translationLanguage = UnitOfWork.TranslationManager.GetTranslationLanguage(id.Value); if (translationLanguage == null) { return(HttpNotFound()); } return(PartialView(new TranslationLanguageView { Code = translationLanguage.Code, Description = translationLanguage.Description, TranslationLanguageId = translationLanguage.TranslationLanguageId })); }
public TranslationRequest( TranslationLanguage targetLanguage, Maybe <TranslationLanguage> sourceLanguage, Maybe <IgnoreForTranslationMarkup> ignoreMarkup, IReadOnlyCollection <TextPart> textParts) { Guard.ObjectNotNull(() => targetLanguage); Guard.ObjectNotNull(() => sourceLanguage); Guard.ObjectNotNull(() => ignoreMarkup); Guard.ObjectNotNull(() => textParts); Guard.That(() => textParts.Count > 0, "At least one text part to translate is required."); Guard.That(() => textParts.Count <= MaxTextParts, "Only up to 50 text parameters can be submitted in one request."); TargetLanguage = targetLanguage; SourceLanguage = sourceLanguage; IgnoreMarkup = ignoreMarkup; TextParts = textParts; }
public static Expression <Func <Category, CategoryDetailsViewModel> > FromEntity(TranslationLanguage language) { return(x => new CategoryDetailsViewModel() { Id = x.Id, ProductsCount = x.Products.Count, DefaultLanguageTranslation = new CategoryTranslationDetails() { Name = x.Name }, Translation = x.Translations .Where(t => t.Language == language) .Select(t => new CategoryTranslationDetails() { Name = t.Name }) .FirstOrDefault() }); }
public void InitializeTest() { //Language var LanguageDA = new Language() { Country = "Dansk", ISO = "da", }; var LanguageEN = new Language() { Country = "Engelsk", ISO = "en", }; var LanguageDE = new Language() { Country = "Tysk", ISO = "de", }; //Translations transEN = new TranslationLanguage() { Description = "ENGELSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "The Global Goals - The Wadden Sea", Language = LanguageEN, }; transDK = new TranslationLanguage() { Description = "DANSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "Verdensmål ved Vadehavet", Language = LanguageDA, }; transDE = new TranslationLanguage() { Description = "TYSK Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "Welt Ziele eller noget..", Language = LanguageDE, }; transEN1 = new TranslationLanguage() { Description = "ENGELSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "The Global Goals - The Wadden Sea", Language = LanguageEN, }; transDK1 = new TranslationLanguage() { Description = "DANSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "Verdensmål ved Vadehavet", Language = LanguageDA, }; transDE1 = new TranslationLanguage() { Description = "TYSK Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "Welt Ziele", Language = LanguageDE, }; translatedTexts = new Translation() { TranslatedTexts = new List <TranslationLanguage> { transDK, transEN, transDE } }; translatedTexts1 = new Translation() { TranslatedTexts = new List <TranslationLanguage> { transDK1, transEN1, transDE1 } }; //Frontpage _frontPage = new FrontPage() { Id = 1, ImgURL = "http://res.cloudinary.com/bjoernebanden/image/upload/v1509645764/1920-x-1080-nationalpark-vadehavet-kort_arxf8u.jpg", Translation = translatedTexts }; //Artwork var Artwork = new Artwork() { Id = 1, Artist = "Bart 4c", Translation = translatedTexts, ImgUrl = "https://placeimg.com/600/400/nature" }; //Landart var Landart = new LandArt() { Id = 1, Translation = translatedTexts, ImgUrl = "https://placeimg.com/600/400/nature" }; //Childrens Texts var ChildrensTexts = new ChildrensText() { Id = 1, Author = "Pippi 8c", Translation = translatedTexts }; //AudioVideo var audioVideo = new AudioVideo() { Id = 1, AudioURL = "https://www.dropbox.com/s/ewkmod3sbhw71ia/listener%20-%20Wooden%20Heart%20-%2001%20You%20have%20never%20lived%20because%20you%20have%20never%20died.mp3?dl=1", VideoURL = "https://www.youtube.com/embed/RpqVmvMCmp0", SongTitle = "Bum Bum Bla Bla..", SongArtist = "Shakira", Translation = translatedTexts1 }; //Global Goal _globalGoalwithChildren = new GlobalGoal() { Id = 1, Latitude = 55.572044, Longitude = 8.309237, Translation = translatedTexts, ImgURL = "https://placeimg.com/600/400/nature", IsPublished = true, ChildrensTexts = new List <ChildrensText> { ChildrensTexts }, Artworks = new List <Artwork> { Artwork }, LandArts = new List <LandArt> { Landart }, AudioVideo = audioVideo }; _globalGoalNoChildren = new GlobalGoal() { Id = 2, Latitude = 55.572044, Longitude = 8.309237, Translation = translatedTexts1, ImgURL = "https://placeimg.com/600/400/nature", IsPublished = false, ChildrensTexts = new List <ChildrensText> { }, Artworks = new List <Artwork> { }, LandArts = new List <LandArt> { }, AudioVideo = null }; }
private void TranslationLanguageChanged(object sender, RoutedEventArgs e) { ListBoxItem box = (ListBoxItem)sender; SelectLanguageButton.Content = box.Content; SelectLanguageListBox.Visibility = Visibility.Hidden; SelectLanguageButton.Visibility = Visibility.Visible; if (box == modernFrench) { _currentTranslationLanguage = TranslationLanguage.modernFrench; TranslationText.Text = Search.getByTag(_currentPiece.ID, SurfaceWindow1.modFrXml); } else if (box == English) { _currentTranslationLanguage = TranslationLanguage.English; TranslationText.Text = "No translated lyrics for this piece yet"; } else if (box == pickLanguage) { _currentTranslationLanguage = _lastTranslationLanguage; } _lastTranslationLanguage = _currentTranslationLanguage; }
protected override void Seed(GlobalGoalContext context) { var userStore = new UserStore <ApplicationUser>(context); var userManager = new ApplicationUserManager(userStore); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); roleManager.Create(new IdentityRole("Admin")); var admin1 = new ApplicationUser { UserName = "******", Email = "*****@*****.**" }; userManager.Create(admin1, "Admin1234!"); userManager.AddToRole(admin1.Id, "Admin"); //Language var languageDa = new Language() { Country = "Dansk", ISO = "da", }; var languageEn = new Language() { Country = "Engelsk", ISO = "en", }; var languageDe = new Language() { Country = "Tysk", ISO = "de", }; //Translations var transEn = new TranslationLanguage() { Description = "ENGELSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "1# No Poverty", Language = languageEn, }; var transDk = new TranslationLanguage() { Description = "DANSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "1# Afskaf Fattigdom", Language = languageDa, }; var transDe = new TranslationLanguage() { Description = "TYSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "1# Keine Armut", Language = languageDe, }; var transEn1 = new TranslationLanguage() { Description = "ENGELSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "2# Zero Hunger", Language = languageEn, }; var transDk1 = new TranslationLanguage() { Description = "DANSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "2# Stop Sult", Language = languageDa, }; var transDe1 = new TranslationLanguage() { Description = "TYSK: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "2# Kein Hunger", Language = languageDe, }; var fpEn = new TranslationLanguage() { Description = "ENGELSK - forside beskrivelse: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "The Global Goals - for sustainable development", Language = languageEn }; var fpDa = new TranslationLanguage() { Description = "DANSK - forside beskrivelse: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "FN's Verdensmål - for bæredygtig udvikling", Language = languageDa, }; var fpDe = new TranslationLanguage() { Description = "TYSK - forside beskrivelse: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non scelerisque nibh. Vestibulum ante ipsum " + "primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vel purus ultricies mauris fringilla rhoncus." + "Duis a vehicula nunc, a sagittis leo. Etiam tempor faucibus orci ac cursus. Vestibulum ante ipsum primis in faucibus" + "orci luctus et ultrices posuere cubilia Curae; Sed vestibulum neque vitae nisi blandit commodo.Maecenas varius," + " dolor at commodo.", Title = "Die Globalen Ziele - für nachhaltige entwicklung", Language = languageDe, }; var translatedTexts = new Translation() { TranslatedTexts = new List <TranslationLanguage> { transDk, transEn, transDe } }; var translatedTexts1 = new Translation() { TranslatedTexts = new List <TranslationLanguage> { transDk1, transEn1, transDe1 } }; var fpTranslatedTexts = new Translation() { TranslatedTexts = new List <TranslationLanguage> { fpEn, fpDa, fpDe } }; context.Texts.Add(translatedTexts1); context.Texts.Add(translatedTexts); context.Texts.Add(fpTranslatedTexts); //Frontpage var fp = new FrontPage() { Id = 1, ImgURL = "http://res.cloudinary.com/bjoernebanden/image/upload/v1509645764/1920-x-1080-nationalpark-vadehavet-kort_arxf8u.jpg", Translation = fpTranslatedTexts }; //Artwork var artwork = new Artwork() { Id = 1, Artist = "Bart 4c", Translation = translatedTexts, ImgUrl = "https://placeimg.com/600/400/nature" }; //Landart var landart = new LandArt() { Id = 1, Translation = translatedTexts, ImgUrl = "https://placeimg.com/600/400/nature" }; //Childrens Texts var childrensTexts = new ChildrensText() { Id = 1, Author = "Pippi 8c", Translation = translatedTexts }; //AudioVideo var audioVideo = new AudioVideo() { Id = 1, AudioURL = "https://www.dropbox.com/s/ewkmod3sbhw71ia/listener%20-%20Wooden%20Heart%20-%2001%20You%20have%20never%20lived%20because%20you%20have%20never%20died.mp3?dl=1", VideoURL = "https://www.youtube.com/embed/RpqVmvMCmp0", SongTitle = "Bum Bum Bla Bla..", SongArtist = "Shakira", Translation = translatedTexts1 }; //Global Goal var gg = new GlobalGoal() { Id = 1, Latitude = 55.572044, Longitude = 8.309237, Translation = translatedTexts, ImgURL = "https://placeimg.com/600/400/nature", IsPublished = true, ChildrensTexts = new List <ChildrensText> { childrensTexts }, Artworks = new List <Artwork> { artwork }, LandArts = new List <LandArt> { landart }, AudioVideo = audioVideo }; var gg2 = new GlobalGoal() { Id = 2, Latitude = 55.572044, Longitude = 8.309237, Translation = translatedTexts1, ImgURL = "https://placeimg.com/600/400/nature", IsPublished = false, ChildrensTexts = new List <ChildrensText> { }, Artworks = new List <Artwork> { }, LandArts = new List <LandArt> { }, AudioVideo = null }; context.Languages.Add(languageDa); context.Languages.Add(languageEn); context.Languages.Add(languageDe); context.FrontPage.Add(fp); context.Global_Goals.Add(gg); context.Global_Goals.Add(gg2); base.Seed(context); }
public string GetResource(string resourceKey, TranslationLanguage language) { throw new NotImplementedException(); }
public ITranslationRequestBuilder WithSourceLanguage(TranslationLanguage sourceLanguage) { _sourceLanguage = sourceLanguage; return(this); }
public TranslationRequestBuilder(TranslationLanguage targetLanguage) { _targetLanguage = targetLanguage; }