diff --git a/Library/Library.csproj b/Library/Library.csproj index 30456d7..7328b1b 100644 --- a/Library/Library.csproj +++ b/Library/Library.csproj @@ -13,6 +13,8 @@ + + @@ -22,7 +24,7 @@ - + diff --git a/Library/Pages/CreateStructuredLearningOutcome.razor b/Library/Pages/CreateStructuredLearningOutcome.razor new file mode 100644 index 0000000..a794375 --- /dev/null +++ b/Library/Pages/CreateStructuredLearningOutcome.razor @@ -0,0 +1,383 @@ +@using Microsoft.Extensions.Localization +@using System.Diagnostics.CodeAnalysis +@using System.Globalization +@using System.Resources +@using System.Text.RegularExpressions +@using LearningOutcomesGenerator.Pages +@using LearningOutcomesGenerator.Shared.LearningOutcomes +@using Library.Shared.LearningOutcomes +@inject ClipBoardService ClipBoardService +@inject ISnackbar Snackbar +@page "/" + +
+
+

+ @GetLocalizerString("CreateStructuredLearningOutcome.Title.Part1")@GetLocalizerString("CreateStructuredLearningOutcome.Title.Part2") +

+ + + +
+ + +
Deutsch/German
+
+ +
Englisch/English
+
+
+ CurrentCulture: @CultureInfo.CurrentCulture.Name ; Culture: @Culture.Name ; +
+ +
+ + @GetLocalizerString("CreateStructuredLearningOutcome.Text") + +
+
+ +
+ @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel") + + + +
+ + + + +
+
@GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.NotSpecified")
+
+
+ + +
+
@TaxonomyLevelNames.ElementAt(1).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Remember") +
+
+ + +
+
@TaxonomyLevelNames.ElementAt(2).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Understand") +
+
+ +
+
@TaxonomyLevelNames.ElementAt(3).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Apply") +
+
+ + +
+
@TaxonomyLevelNames.ElementAt(4).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Analyse") +
+
+ + +
+
@TaxonomyLevelNames.ElementAt(5).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Evaluate") +
+
+ + +
+
@TaxonomyLevelNames.ElementAt(6).Value
+ + @GetLocalizerString("CreateStructuredLearningOutcome.TaxonomyLevel.Create") +
+
+
+
+ + @IntroText + + + +
+
+ @GetLocalizerString("CreateStructuredLearningOutcome.What") + + + +
+ + + +
+
+ + +
+
+ @GetLocalizerString("CreateStructuredLearningOutcome.VerbOfVisibility") + + + +
+ + +
+
+
+ +
+
+ @GetLocalizerString("CreateStructuredLearningOutcome.Whereby") + + + +
+ @WherebyText + + +
+ +
+
+ @GetLocalizerString("CreateStructuredLearningOutcome.WhatFor") + + + +
+ @WhatForText + + +
+ @GetLocalizerString("CreateStructuredLearningOutcome.Required") +
+
+ +
+ + + @GetLocalizerString("CreateStructuredLearningOutcome.Reset") + +
+ +
+ @GetLocalizerString("CreateStructuredLearningOutcome.Preview") +
+ @GetMarkDownFormattedOutcome() +
+
+ + In die Zwischenablage kopieren + + + +
+ +@code { + private LearningOutcomesVerbManager _learningOutcomesVerbManager = new(); + + private Dictionary TaxonomyLevelNames { get; set; } = null!; + + [Inject, AllowNull] //can never be null, DI will throw exception on unresolved types + internal IStringLocalizer Localizer { get; set; } + + private string IntroText => Culture.Name == "de-DE" ? "Sie können..." : "You will be able to..."; + + private string WherebyText => Culture.Name == "de-DE" ? "indem Sie..." : "by..."; + + private string WhatForText => Culture.Name == "de-DE" ? "um..." : "to..."; + + private static ResourceManager _resourceManager = new ResourceManager("Library.Resources.Pages.CreateStructuredLearningOutcome", typeof(CreateStructuredLearningOutcome).Assembly); + + private string GetLocalizerString(string key) => _resourceManager.GetString(key, Culture) ?? "String not found"; + + private CultureInfo _culture = null!; + + [Parameter] + public CultureInfo Culture + { + get => _culture ?? new CultureInfo("de-DE"); + set + { + if (Equals(_culture, value)) return; + _culture = value; + CultureInfo.CurrentCulture = value; + CultureInfo.CurrentUICulture = value; + CultureInfo.DefaultThreadCurrentCulture = value; + CultureInfo.DefaultThreadCurrentUICulture = value; + OnCultureChange(); + } + } + + private string GetLearningOutcomeExampleImage() + { + @switch (CultureInfo.CurrentCulture.Name) + { + case "de-DE": + return "/CustomIcons/Beispiel-Lernziel_AT-de_LO-de.png"; + + case "en-DE": + return "/CustomIcons/Beispiel-Lernziel_AT-en_LO-en.png"; + } + + return ""; + } + + [CascadingParameter, AllowNull] //injected by MudDialog + public MudDialogInstance DialogInstance { get; set; } + + private TaxonomyLevel _selectedTaxonomyLevel; + + private string _currentWhat = ""; + + private string _currentVerbOfVisibility = null!; + + private string _currentVerbOfVisibilityText = ""; + + private string _currentWhereby = ""; + + private string _currentWhatFor = ""; + + private MudForm _form = null!; + + private MarkupString GetMarkDownFormattedOutcome() + { + var formattedText = ""; + switch (Culture) + { + case { Name: "de-DE" }: + formattedText = $"Sie können {FormatWithPlaceholder(_currentWhat, "[Was?]")} {FormatWithPlaceholder(_currentVerbOfVisibilityText, "[Verb]")}, \n indem Sie {FormatWithPlaceholder(_currentWhereby, "[Womit?]")},\n um {FormatWithPlaceholder(_currentWhatFor, "[Wozu?]")}."; + break; + case { Name: "en-DE" }: + formattedText = $"You will be able to {FormatWithPlaceholder(_currentVerbOfVisibilityText, "[Verb]")} {FormatWithPlaceholder(_currentWhat, "[What?]")} \n by {FormatWithPlaceholder(_currentWhereby, "[Whereby?]")}\n to {FormatWithPlaceholder(_currentWhatFor, "[What for?]")}."; + break; + } + + var html = MarkdownToHtml(formattedText); + return new MarkupString(html); + } + + private string GetUnformattedOutcome() + { + switch (Culture) + { + case { Name: "de-DE" }: + return $"Sie können {_currentWhat} {_currentVerbOfVisibility} {FormatWithPlaceholder(_currentVerbOfVisibilityText, "[Verb]")}, \n indem Sie {_currentWhereby},\n um {_currentWhatFor}."; + case { Name: "en-DE" }: + return $"You will be able to {_currentVerbOfVisibility} {_currentWhat} \n by {_currentWhereby}\n to {_currentWhatFor}."; + default: return ""; + } + } + + private static string FormatWithPlaceholder(string value, string placeholder = "[ ... ]") + { + return string.IsNullOrWhiteSpace(value) ? $"*{placeholder}*" : $"**{value.Trim()}**"; + } + + private string MarkdownToHtml(string markdown) + { + markdown = Regex.Replace(markdown, @"\*\*(.*?)\*\*", "$1"); + markdown = Regex.Replace(markdown, @"\*(.*?)\*", "$1"); + markdown = markdown.Replace("\n", "
"); + + return markdown; + } + + protected override void OnParametersSet() + { + base.OnParametersSet(); + TaxonomyLevelNames = _learningOutcomesVerbManager.GetTaxonomyLevelNames(Culture); + } + + private void OnCultureChange() + { + _currentVerbOfVisibility = ""; + _currentVerbOfVisibilityText = ""; + TaxonomyLevelNames = _learningOutcomesVerbManager.GetTaxonomyLevelNames(Culture); + } + + private async Task> SearchVerbOfVisibility(string value) + { + var results = new List(); + + results.AddRange(_learningOutcomesVerbManager.GetVerbsOfVisibility(_selectedTaxonomyLevel, Culture) + .Where(verb => verb.ToString().Contains(value, StringComparison.InvariantCultureIgnoreCase)) + .Select(verb => verb.ToString().Replace("_", " "))); + + if (!string.IsNullOrEmpty(value) && !results.Contains(value)) + { + results.Insert(0, value); + } + + return await Task.FromResult(results); + } + + private void OnBlurVerbOfVisibility() + { + _currentVerbOfVisibility = _currentVerbOfVisibilityText; + } + + private void ResetInputFields() + { + _selectedTaxonomyLevel = TaxonomyLevel.None; + _currentWhat = ""; + _currentVerbOfVisibility = ""; + _currentVerbOfVisibilityText = ""; + _currentWhereby = ""; + _currentWhatFor = ""; + } + + private bool LearningOutcomeIsCopyable() => + !IsNullOrEmpty(_currentWhat) && !IsNullOrEmpty(_currentVerbOfVisibility); + + private bool IsNullOrEmpty(string value) => + string.IsNullOrWhiteSpace(value); + + private async void CopyToClickBoard() + { + try + { + await ClipBoardService.SetTextAsync(GetUnformattedOutcome()); + Snackbar.Add(GetLocalizerString("CreateStructuredLearningOutcome.CopyToClipboard.Success"), Severity.Success); + } + catch + { + // ignored + Snackbar.Add(GetLocalizerString("CreateStructuredLearningOutcome.CopyToClipboard.Failure"), Severity.Error); + } + } +} \ No newline at end of file diff --git a/Library/Pages/GrammarOrder.razor b/Library/Pages/GrammarOrder.razor new file mode 100644 index 0000000..988ea2f --- /dev/null +++ b/Library/Pages/GrammarOrder.razor @@ -0,0 +1,23 @@ +@using System.Diagnostics.CodeAnalysis +@using System.Globalization +@switch (Culture.Name) +{ + case "de-DE": + @WhatContent + @VerbContent + break; + case "en-DE": + @VerbContent + @WhatContent + break; +} + +@code { + + [Parameter, AllowNull, EditorRequired] public RenderFragment WhatContent { get; set; } + + [Parameter, AllowNull, EditorRequired] public RenderFragment VerbContent { get; set; } + + [Parameter, AllowNull, EditorRequired] public CultureInfo Culture { get; set; } + +} \ No newline at end of file diff --git a/Library/Pages/LearningOutcomesForm.razor b/Library/Pages/LearningOutcomesForm.razor index 48451a9..abadfd9 100644 --- a/Library/Pages/LearningOutcomesForm.razor +++ b/Library/Pages/LearningOutcomesForm.razor @@ -2,7 +2,7 @@ @using LearningOutcomesGenerator.Pages @inject ClipBoardService ClipBoardService @inject ISnackbar Snackbar -@page "/" +
diff --git a/Library/Resources/Pages/CreateStructuredLearningOutcome.de.resx b/Library/Resources/Pages/CreateStructuredLearningOutcome.de.resx new file mode 100644 index 0000000..e15574d --- /dev/null +++ b/Library/Resources/Pages/CreateStructuredLearningOutcome.de.resx @@ -0,0 +1,135 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Lernziel-Formulierung: + + + Eingabeunterstützung + + + Im Zusammenhang mit der kompetenzorientierten Hochschullehre und dem damit verbundenen Perspektivwechsel „Shift from Teaching to Learning“, wurden auch Lernziele in den Fokus gerückt. Lernziele beschreiben, was Studierende am Ende eines Lernabschnitts wissen und können sollen sowie welche Einstellungen von ihnen erwartet werden. Lernziele sind damit die möglichst exakte Beschreibung der angestrebten Lernergebnisse (engl. Learning Outcomes). Sie werden in schriftlicher Form festgehalten und situationsgerecht kommuniziert. Hilfestellungen dafür sind die Was-Womit-Wozu-Struktur und Lernzieltaxonomien (z.B. nach Anderson/Krathwohl), welche auf Basis von verschiedenen Kompetenzstufen passende Verben für die Formulierung von Lernzielen vorschlagen. + + + Erstellen + + + Keine Angabe + + + Taxonomiestufe + + + Die Formulierung eines Lernziels/Lernergebnisses fokussiert die Beschreibung von entsprechenden Fähigkeiten, Fertigkeiten oder Kompetenzen des intendierten Lernprozesses der Studierenden. Diese lassen sich aufgrund ihrer Komplexität der kognitiven Prozesse einer Taxonomiestufe zuordnen. Die Festlegung einer Taxonomiestufe (nach Anderson & Krathwohl) dient in den weiteren Bearbeitungsschritten der Lernziel/Lernergebnis-Formulierung zum Finden eines passenden Verbes der Sichtbarkeit. + + + Sie können... + + + Verb der Sichtbarkeit* + + + Das Lernziel beschreibt gewünschte Verhaltensdispositionen und welche Fähigkeiten, Fertigkeiten oder Kompetenzen die Studierenden am Ende des Lernprozesses entwickelt haben werden. Es beschreibt also Handlungen, welche mit Hilfe von Verben der äußeren Sichtbarkeit formuliert werden. Diese stellen ein Tun an oder mit einem äußeren Objekt dar. Verben wie „verstehen“ oder „erkennen“ sind deshalb nicht geeignet. Die Verben der äußeren Sichtbarkeit lassen sich einer Taxonomiestufe zuordnen. + + + Formulieren oder auswählen + + + Angabe des Verbes ist notwendig + + + Angabe von „Was" ist notwendig + + + Textfeld + + + Was? (Thema)* + + + Das „Was“ sagt aus, welcher Lerninhalt (inhaltliches Thema) im Rahmen des Kompetenzerwerbs der Studierenden adressiert werden soll. Dieser wird in den folgenden Schritten mit Hilfe einer Taxonomiestufe und einem Verb der Sichtbarkeit zu einer entsprechenden Fähigkeit, Fertigkeit oder Kompetenz weiterformuliert. + + + Textfeld + + + indem Sie... + + + Womit? + + + Das „Womit“ beschreibt, mit Hilfe welcher theoretischen oder praktischen Werkzeuge Studierende ihre Handlungen ausführen. Hierbei handelt es sich beispielsweise um Formeln, Modelle, Pläne, Begriffe, Tools etc., die im Verlauf der Lehrveranstaltung vermittelt werden und deren Anwendung geübt wird. Die Verwendung und Verknüpfung dieser Werkzeuge stellt die Grundlage für kompetentes Handeln dar. Eine hilfreiche Fragestellung bei der Formulierung ist: „Womit erreichen die Studierenden die Fähigkeit, Fertigkeit oder Kompetenz?“. + + + Textfeld + + + um... + + + Das „Wozu“ gibt einen Ausblick auf den Sinn und Zweck, für den die Lerneinheit konzipiert wurde. Dabei steht nicht die Prüfung im Fokus. Vielmehr veranschaulicht das „Wozu“ die Handlungsmöglichkeiten der Studierenden, wenn sie das Gelernte sicher beherrschen. Oftmals findet die Handlung oder die Situation des „Wozu“ in einer komplexeren Umgebung und unter schwierigeren Bedingungen als in der Lernsituation statt. Hilfreiche Fragestellungen bei der Formulierung sind: „Für welchen (konkreten und/oder langfristigen) Zweck sollen die Kompetenzen erworben werden?“ und/oder „Wozu benötigen die Studierenden die erworbenen Fähigkeiten, Fertigkeiten oder Kompetenzen nach der Lehrveranstaltung?“. + + + Wozu? + + + Machen Sie sich zunächst Gedanken dazu, auf welcher Taxonomiestufe Sie Ihr Lernziel formulieren möchten. + + + Vorschau des formulierten Lernziels: + + + Eingaben zurücksetzen + + + * Erforderliche Angabe + + + Auf relevantes Wissen im Langzeitgedächtnis zugreifen + + + Beispiel für eine Lernziel-Formulierung + + + Elemente zu einer zusammenhängenden Struktur oder zu einem zusammenhängenden Muster zusammenfügen + + + Informationen (mündlich, schriftlich oder grafisch) in der Lerneinheit Bedeutung zuordnen + + + Einen Handlungsablauf oder eine Methode in einer bestimmten Situation anwenden + + + Lerninhalte in ihre Elemente zerlegen und ihre Verbindung zu einer übergreifenden Struktur oder einem übergreifenden Zweck bestimmen + + + Urteile aufgrund von Kriterien oder Standards abgeben + + + Aktualisieren + + + Ihr formuliertes Lernziel/Lernergebnis wurde erfolgreich in die Zwischenablage kopiert. + + + Fehler beim Kopieren in die Zwischenablage. Markieren und kopieren Sie alternativ Ihr formuliertes Lernziel/Lernergebnis im Vorschaufenster. + + \ No newline at end of file diff --git a/Library/Resources/Pages/CreateStructuredLearningOutcome.en.resx b/Library/Resources/Pages/CreateStructuredLearningOutcome.en.resx new file mode 100644 index 0000000..c1baede --- /dev/null +++ b/Library/Resources/Pages/CreateStructuredLearningOutcome.en.resx @@ -0,0 +1,135 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Learning outcome formulation: + + + Input support + + + In the context of competency-based higher education and the associated shift in perspective from "teaching to learning", learning objectives have also come into focus. Learning objectives are also the most precise description of the desired learning outcomes. Learning outcomes describe what students should know and be able to do at the end of a learning section and what attitudes are expected of them. They are recorded in writing and communicated in a situational manner. The what-whereby-what-for-structure and taxonomy of learning objectives (e.g. according to Anderson/Krathwohl) are helpful in this context, to select appropriate verbs for formulating learning outcomes on the basis of different levels of competence. + + + Create + + + Not specified + + + Taxonomy level + + + The formulation of a learning outcome focuses on the description of corresponding abilities, skills or competencies of the intended learning process of the students. These can be assigned to a taxonomy level based on the complexity of the cognitive processes. The definition of a taxonomy level (according to Anderson & Krathwohl) serves to find a suitable verb of visibility in the further processing steps of the learning outcome formulation. + + + You are able to... + + + Verb of visibility* + + + The learning outcome describes desired behavioral dispositions and which abilities, skills or competencies the students will have developed at the end of the learning process. It therefore describes actions that are formulated with the help of verbs of external visibility. These represent an action on or with an external object. Verbs such as "understand" or "recognize" are therefore not suitable. The verbs of external visibility can be assigned to a taxonomy level. + + + Formulate or select + + + Specification of the verb is necessary + + + Specification of "What" is necessary + + + Text field + + + What? (Topic)* + + + The "What" states which learning content (content-related topic) is to be addressed as part of the students' competence acquisition. In the following steps, this is further formulated into a corresponding ability, skill or competence with the help of a taxonomy level and a verb of visibility. + + + Text field + + + by... + + + Whereby? + + + The "with what" describes the theoretical or practical tools students use to carry out their actions. These are, for example, formulas, models, plans, concepts, tools, etc., which are taught during the course and whose application is practiced. The use and linking of these tools forms the basis for competent action. A helpful question when formulating this is: "How do students achieve the ability, skill or competence?". + + + Text field + + + to... + + + The "What for" provides an outlook on the purpose for which the learning unit was designed. The focus is not on the exam. Rather, the "What for" illustrates the students' options for action once they have mastered what they have learned. The action or situation of the "what for" often takes place in a more complex environment and under more difficult conditions than in the learning situation. Helpful questions when formulating this are: "For what (concrete and/or long-term) purpose should the competencies be acquired?" and/or "What do students need the acquired skills, abilities or competencies for after the course?". + + + What for? + + + First, think about the taxonomy level at which you want to formulate your learning outcome. + + + Preview of the formulated learning outcome: + + + Reset entries + + + * Required + + + Accessing relevant knowledge in long-term memory + + + Example of a learning outcome formulation + + + Assemble elements into a coherent structure or pattern + + + Assign meaning to information (oral, written or graphic) in the learning unit + + + Apply a course of action or a method in a specific situation + + + Break down learning content into its elements and determine their connection to an overarching structure or purpose + + + Make judgments based on criteria or standards + + + Update + + + Your formulated learning objective/learning outcome has been successfully copied to the clipboard. + + + Error when copying to the clipboard. Alternatively, select and copy your formulated learning objective/learning outcome in the preview window. + + \ No newline at end of file diff --git a/Library/Shared/LearningOutcomes/LearningOutcomesVerbManager.cs b/Library/Shared/LearningOutcomes/LearningOutcomesVerbManager.cs new file mode 100644 index 0000000..40ae850 --- /dev/null +++ b/Library/Shared/LearningOutcomes/LearningOutcomesVerbManager.cs @@ -0,0 +1,1581 @@ +using System.Globalization; +using Library.Shared.LearningOutcomes; + +namespace LearningOutcomesGenerator.Shared.LearningOutcomes; + +public class LearningOutcomesVerbManager +{ + private readonly Dictionary> _languageToTaxonomyLevel = new() + { + { + new CultureInfo("de-DE"), new Dictionary() + { + { TaxonomyLevel.None, "" }, + { TaxonomyLevel.Level1, "Erinnern" }, + { TaxonomyLevel.Level2, "Verstehen" }, + { TaxonomyLevel.Level3, "Anwenden" }, + { TaxonomyLevel.Level4, "Analysieren" }, + { TaxonomyLevel.Level5, "Beurteilen" }, + { TaxonomyLevel.Level6, "Erschaffen" }, + } + }, + { + new CultureInfo("en-DE"), new Dictionary() + { + { TaxonomyLevel.None, "" }, + { TaxonomyLevel.Level1, "Remember" }, + { TaxonomyLevel.Level2, "Understand" }, + { TaxonomyLevel.Level3, "Apply" }, + { TaxonomyLevel.Level4, "Analyse" }, + { TaxonomyLevel.Level5, "Evaluate" }, + { TaxonomyLevel.Level6, "Create" }, + } + } + }; + + private readonly Dictionary> _taxonomyLevelToVerbsOfVisibilityDe = + new() + { + { + TaxonomyLevel.None, + new List() + { + "abgrenzen", + "ableiten", + "abschätzen", + "abwägen", + "analysieren", + "ändern", + "anführen", + "angeben", + "anknüpfen", + "annehmen", + "anordnen", + "anpassen", + "anwenden", + "argumentieren", + "arrangieren", + "aufbauen", + "aufdecken", + "auflisten", + "auflösen", + "aufsagen", + "aufschlüsseln", + "aufschreiben", + "aufstellen", + "aufteilen", + "aufzählen", + "aufzeichnen", + "aufzeigen", + "ausarbeiten", + "ausdrücken", + "ausführen", + "ausfüllen", + "ausrechnen", + "aussagen", + "äussern", + "auswählen", + "auswerten", + "bearbeiten", + "bedienen", + "beeinflussen", + "begründen", + "benennen", + "benoten", + "benutzen", + "berechnen", + "berichten", + "beschreiben", + "bestimmen", + "beurteilen", + "beweisen", + "bewerten", + "bezeichnen", + "bilden", + "charakterisieren", + "darlegen", + "darstellen", + "definieren", + "demonstrieren", + "designen", + "deuten", + "diagnostizieren", + "differenzieren", + "diskutieren", + "durchführen", + "einordnen", + "einrichten", + "einschätzen", + "einsetzen", + "einstufen", + "einteilen", + "eintragen", + "entdecken", + "entnehmen", + "entscheiden", + "entwerfen", + "entwickeln", + "erarbeiten", + "erfinden", + "erheben", + "erklären", + "erläutern", + "ermitteln", + "erproben", + "errechnen", + "erschaffen", + "erstellen", + "erweitern", + "erzählen", + "erzeugen", + "evaluieren", + "extrapolieren", + "falsifizieren", + "fertigen", + "fokussieren", + "folgern", + "formatieren", + "formulieren", + "gegenüberstellen", + "generalisieren", + "generieren", + "gestalten", + "gewichten", + "gliedern", + "herausstellen", + "herstellen", + "hervorbringen", + "hinterfragen", + "identfizieren", + "identifizieren", + "illustrieren", + "implementieren", + "in Beziehung setzen", + "integrieren", + "interpretieren", + "isolieren", + "kategorisieren", + "kennzeichnen", + "klassifizieren", + "kombinieren", + "konfigurieren", + "konstruieren", + "kontrastieren", + "kontrastrieren", + "konzipieren", + "koordinieren", + "kreieren", + "kritisch vergleichen", + "kritisieren", + "lokalisieren", + "lösen", + "messen", + "modifizieren", + "nachweisen", + "nennen", + "nutzen", + "optimieren", + "ordnen", + "organisieren", + "planen", + "praktizieren", + "präparieren", + "präsentieren", + "präzisieren", + "priorisieren", + "produzieren", + "prüfen", + "quantifizieren", + "realisieren", + "rechnen", + "rechtfertigen", + "relativieren", + "repräsentieren", + "reproduzieren", + "sammeln", + "schätzen", + "schildern", + "schlussfolgern", + "schreiben", + "setzen", + "skizzieren", + "sortieren", + "strukturieren", + "subsumieren", + "synthetisieren", + "tabellieren", + "testen", + "transferieren", + "trennen", + "überprüfen", + "übersetzen", + "übertragen", + "überzeugen", + "umreißen", + "umschreiben", + "umsetzen", + "umwandeln", + "untergliedern", + "unterscheiden", + "unterstützen", + "untersuchen", + "unterteilen", + "urteilen", + "validieren", + "verallgemeinern", + "verändern", + "veranschaulichen", + "verbinden", + "verdeutlichen", + "vereinfachen", + "verfassen", + "vergleichen", + "verifizieren", + "verifzieren", + "verknüpfen", + "verteidigen", + "vertreten", + "vervollständigen", + "verwenden", + "verwerfen", + "voraussagen", + "vorführen", + "vorraussagen", + "vorschlagen", + "wählen", + "werten", + "widerlegen", + "wiedergeben", + "wiederholen", + "zeichnen", + "zeigen", + "zergliedern", + "zerlegen", + "zitieren", + "zuordnen", + "zusammenfassen", + "zusammenfügen", + "zusammensetzen", + "zusammenstellen", + } + }, + { + TaxonomyLevel.Level1, + new List() + { + "anführen", + "angeben", + "auflisten", + "aufsagen", + "aufschreiben", + "aufzählen", + "aufzeichnen", + "ausdrücken", + "ausführen", + "aussagen", + "benennen", + "berichten", + "bezeichnen", + "darstellen", + "definieren", + "erzählen", + "gliedern", + "identfizieren", + "kennzeichnen", + "nennen", + "präsentieren", + "reproduzieren", + "schildern", + "schreiben", + "skizzieren", + "umreißen", + "vervollständigen", + "wiedergeben", + "wiederholen", + "zeichnen", + "zeigen", + "zitieren", + "zuordnen", + "zusammenstellen", + } + }, + { + TaxonomyLevel.Level2, + new List() + { + "abgrenzen", + "ableiten", + "anordnen", + "ausdrücken", + "auswählen", + "begründen", + "beschreiben", + "bestimmen", + "charakterisieren", + "darlegen", + "darstellen", + "definieren", + "deuten", + "diskutieren", + "einordnen", + "erklären", + "erläutern", + "extrapolieren", + "folgern", + "formulieren", + "generalisieren", + "herausstellen", + "identifizieren", + "interpretieren", + "klassifizieren", + "kontrastrieren", + "lokalisieren", + "ordnen", + "präzisieren", + "repräsentieren", + "schätzen", + "schildern", + "skizzieren", + "subsumieren", + "übersetzen", + "übertragen", + "umschreiben", + "untergliedern", + "unterscheiden", + "verallgemeinern", + "veranschaulichen", + "verdeutlichen", + "vergleichen", + "wiedergeben", + "zuordnen", + "zusammenfassen", + } + }, + { + TaxonomyLevel.Level3, + new List() + { + "abschätzen", + "ändern", + "anknüpfen", + "anpassen", + "anwenden", + "aufstellen", + "aufzeigen", + "ausführen", + "ausfüllen", + "ausrechnen", + "auswählen", + "bearbeiten", + "bedienen", + "beeinflussen", + "begründen", + "benutzen", + "berechnen", + "bestimmen", + "beweisen", + "darstellen", + "demonstrieren", + "durchführen", + "einordnen", + "einrichten", + "einsetzen", + "eintragen", + "entdecken", + "entwickeln", + "erarbeiten", + "ermitteln", + "erproben", + "errechnen", + "erstellen", + "fertigen", + "formatieren", + "formulieren", + "gestalten", + "herstellen", + "illustrieren", + "implementieren", + "interpretieren", + "konfigurieren", + "lösen", + "modifizieren", + "nutzen", + "organisieren", + "planen", + "praktizieren", + "quantifizieren", + "realisieren", + "rechnen", + "transferieren", + "übersetzen", + "umschreiben", + "umsetzen", + "unterscheiden", + "untersuchen", + "veranschaulichen", + "verdeutlichen", + "verifizieren", + "vervollständigen", + "verwenden", + "vorführen", + "wählen", + "zeigen", + } + }, + { + TaxonomyLevel.Level4, + new List() + { + "abgrenzen", + "ableiten", + "abschätzen", + "analysieren", + "aufdecken", + "auflösen", + "aufschlüsseln", + "aufteilen", + "aufzeigen", + "auswählen", + "auswerten", + "beschreiben", + "bestimmen", + "darlegen", + "darstellen", + "diagnostizieren", + "differenzieren", + "einordnen", + "einschätzen", + "einteilen", + "entnehmen", + "ermitteln", + "fokussieren", + "folgern", + "gegenüberstellen", + "gliedern", + "herausstellen", + "identifizieren", + "integrieren", + "isolieren", + "kategorisieren", + "klassifizieren", + "kontrastieren", + "kritisieren", + "lösen", + "nachweisen", + "organisieren", + "prüfen", + "rechtfertigen", + "schlussfolgern", + "sortieren", + "strukturieren", + "testen", + "trennen", + "umreißen", + "umwandeln", + "unterscheiden", + "untersuchen", + "unterteilen", + "vergleichen", + "verknüpfen", + "voraussagen", + "zergliedern", + "zerlegen", + "zuordnen", + } + }, + { + TaxonomyLevel.Level5, + new List() + { + "abschätzen", + "abwägen", + "annehmen", + "argumentieren", + "äussern", + "auswählen", + "auswerten", + "begründen", + "benoten", + "bestimmen", + "beurteilen", + "bewerten", + "differenzieren", + "diskutieren", + "einschätzen", + "einstufen", + "entscheiden", + "erheben", + "evaluieren", + "falsifizieren", + "folgern", + "gegenüberstellen", + "gewichten", + "hinterfragen", + "in Beziehung setzen", + "interpretieren", + "klassifizieren", + "kritisch vergleichen", + "kritisieren", + "messen", + "ordnen", + "planen", + "priorisieren", + "prüfen", + "rechtfertigen", + "relativieren", + "schätzen", + "setzen", + "sortieren", + "strukturieren", + "synthetisieren", + "testen", + "überprüfen", + "überzeugen", + "urteilen", + "validieren", + "vereinfachen", + "vergleichen", + "verifzieren", + "verteidigen", + "vertreten", + "verwerfen", + "vorraussagen", + "vorschlagen", + "wählen", + "werten", + "widerlegen", + } + }, + { + TaxonomyLevel.Level6, + new List() + { + "ableiten", + "anknüpfen", + "arrangieren", + "aufbauen", + "aufstellen", + "ausarbeiten", + "bilden", + "definieren", + "designen", + "diagnostizieren", + "entdecken", + "entwerfen", + "entwickeln", + "erarbeiten", + "erfinden", + "erläutern", + "erschaffen", + "erstellen", + "erweitern", + "erzeugen", + "generieren", + "gestalten", + "hervorbringen", + "integrieren", + "kombinieren", + "konstruieren", + "konzipieren", + "koordinieren", + "kreieren", + "lösen", + "modifizieren", + "optimieren", + "ordnen", + "organisieren", + "planen", + "präparieren", + "produzieren", + "sammeln", + "schlussfolgern", + "schreiben", + "tabellieren", + "unterstützen", + "verändern", + "verbinden", + "verfassen", + "verteidigen", + "zuordnen", + "zusammenfassen", + "zusammenfügen", + "zusammensetzen", + "zusammenstellen", + } + } + }; + + private readonly Dictionary> _taxonomyLevelToVerbsOfVisibilityEn = + new() + { + { + TaxonomyLevel.None, + new List() + { + "abstract", + "accumulate", + "acquire", + "actualize", + "adapt", + "adjust", + "align", + "allocate", + "alter", + "amend", + "amplify", + "analyze", + "apply", + "apportion", + "appraise", + "argue", + "arrange", + "ascertain", + "assemble", + "assess", + "assign", + "assort", + "assume", + "assure", + "attach", + "attest", + "augment", + "balance", + "benchmark", + "break down", + "build", + "build up", + "calculate", + "carry out", + "categorize", + "challenge", + "change", + "characterize", + "check", + "choose", + "cite", + "clarify", + "collect", + "combine", + "comment", + "compare", + "compartmentalize", + "compile", + "complete", + "compose", + "compound", + "compute", + "conceptualize", + "conclude", + "conduct", + "configure", + "connect", + "consider", + "constitute", + "construct", + "construe", + "contextualize", + "contrast", + "contrive", + "control", + "convert", + "convey", + "convince", + "coordinate", + "correlate", + "craft", + "create", + "critically compare", + "criticize", + "cumulate", + "customize", + "debate", + "decide", + "declare", + "decode", + "decompose", + "deconstruct", + "deduce", + "defend", + "define", + "deliberate", + "delineate", + "demonstrate", + "denominate", + "denote", + "depict", + "deploy", + "deputize", + "derive", + "describe", + "descry", + "designate", + "detect", + "determine", + "develop", + "devise", + "diagnose", + "differentiate", + "disassemble", + "discard", + "design", + "discern", + "disclose", + "discover", + "discuss", + "dismantle", + "disprove", + "dissect", + "dissolve", + "distinguish", + "divide", + "draft", + "draw", + "draw up", + "elaborate", + "elucidate", + "emphasize", + "employ", + "engineer", + "enhance", + "enlarge", + "enter", + "enumerate", + "establish", + "estimate", + "evaluate", + "examine", + "execute", + "exemplify", + "expand", + "expect", + "explain", + "explicate", + "express", + "extend", + "extract", + "extrapolate", + "fabricate", + "falsify", + "fill in", + "finalize", + "flesh out", + "focus", + "forecast", + "form", + "format", + "formulate", + "fractionize", + "fragment", + "frame", + "generalize", + "generate", + "grade", + "group", + "handle", + "highlight", + "identify", + "illustrate", + "impact", + "implement", + "indicate", + "induce", + "infer", + "influence", + "inquire", + "install", + "instantiate", + "institute", + "integrate", + "interconnect", + "interpret", + "invent", + "investigate", + "isolate", + "itemize", + "judge", + "justify", + "label", + "link", + "list", + "localize", + "maintain", + "make", + "manipulate", + "manufacture", + "mark", + "match", + "measure", + "mention", + "merge", + "modify", + "modulate", + "monitor", + "name", + "narrate", + "neglect", + "note down", + "observe", + "operate", + "optimize", + "order", + "organize", + "outline", + "paraphrase", + "perform", + "persuade", + "phrase", + "pinpoint", + "place", + "plan", + "plot", + "ponder", + "practise", + "predict", + "prepare", + "present", + "presume", + "prioritize", + "process", + "produce", + "project", + "propose", + "portray", + "prove", + "put in relation", + "put together", + "quantify", + "question", + "quote", + "rank", + "rate", + "readjust", + "realign", + "realize", + "reason", + "recap", + "recapitulate", + "recite", + "recommend", + "record", + "recount", + "recreate", + "refer", + "reflect", + "reformat", + "refute", + "register", + "reinforce", + "reject", + "relate", + "relativise", + "remove", + "repeat", + "replicate", + "report", + "represent", + "reproduce", + "research", + "resolve", + "reveal", + "review", + "revise", + "scan", + "score", + "scrutinize", + "section", + "segregate", + "select", + "separate", + "set up", + "shape", + "show", + "showcase", + "simplify", + "singularize", + "sketch", + "solve", + "sort", + "specify", + "split", + "state", + "structure", + "style", + "subclassify", + "subdivide", + "substantiate", + "subsume", + "suggest", + "sum up", + "summarize", + "support", + "suppose", + "synthesize", + "tabulate", + "tell", + "test", + "trace", + "transfer", + "transform", + "transmit", + "transmute", + "uncover", + "unitize", + "universalize", + "upgrade", + "use", + "utilize", + "validate", + "verify", + "vindicate", + "visualize", + "weigh up", + "weight", + "work on", + "write", + "write down", + } + }, + { + TaxonomyLevel.Level1, + new List() + { + "allocate", + "assign", + "assort", + "characterize", + "cite", + "compile", + "complete", + "convey", + "declare", + "define", + "delineate", + "demonstrate", + "denominate", + "denote", + "depict", + "describe", + "designate", + "divide", + "draw", + "enumerate", + "explicate", + "express", + "identify", + "indicate", + "itemize", + "label", + "list", + "mark", + "mention", + "name", + "narrate", + "note down", + "observe", + "order", + "organize", + "outline", + "perform", + "plot", + "present", + "portray", + "quote", + "recap", + "recapitulate", + "recite", + "record", + "recount", + "refer", + "reflect", + "register", + "relate", + "repeat", + "replicate", + "report", + "represent", + "reproduce", + "show", + "showcase", + "sketch", + "specify", + "state", + "structure", + "subdivide", + "tell", + "trace", + "write", + "write down", + } + }, + { + TaxonomyLevel.Level2, + new List() + { + "abstract", + "allocate", + "argue", + "arrange", + "ascertain", + "assign", + "categorize", + "characterize", + "choose", + "clarify", + "comment", + "compare", + "compile", + "conclude", + "constitute", + "construe", + "contextualize", + "contrast", + "convert", + "convey", + "debate", + "declare", + "decode", + "deduce", + "define", + "delineate", + "demonstrate", + "depict", + "derive", + "describe", + "determine", + "differentiate", + "discern", + "discuss", + "distinguish", + "elaborate", + "elucidate", + "emphasize", + "estimate", + "exemplify", + "explain", + "explicate", + "express", + "extract", + "extrapolate", + "formulate", + "generalize", + "group", + "highlight", + "illustrate", + "infer", + "interpret", + "justify", + "localize", + "match", + "merge", + "narrate", + "order", + "organize", + "outline", + "paraphrase", + "phrase", + "pinpoint", + "present", + "portray", + "prove", + "rank", + "reflect", + "reinforce", + "relate", + "represent", + "reproduce", + "select", + "singularize", + "sketch", + "sort", + "specify", + "state", + "subdivide", + "substantiate", + "subsume", + "sum up", + "summarize", + "transfer", + "transmit", + "universalize", + "visualize", + } + }, + { + TaxonomyLevel.Level3, + new List() + { + "acquire", + "actualize", + "adapt", + "adjust", + "align", + "alter", + "amend", + "analyze", + "apply", + "appraise", + "arrange", + "ascertain", + "assemble", + "assess", + "attach", + "attest", + "calculate", + "carry out", + "categorize", + "change", + "choose", + "clarify", + "compile", + "complete", + "compute", + "conduct", + "configure", + "constitute", + "construct", + "construe", + "contextualize", + "control", + "craft", + "create", + "customize", + "decode", + "define", + "delineate", + "demonstrate", + "depict", + "deploy", + "descry", + "detect", + "determine", + "develop", + "devise", + "disassemble", + "design", + "discern", + "discover", + "distinguish", + "draw up", + "employ", + "enter", + "establish", + "estimate", + "evaluate", + "examine", + "execute", + "exemplify", + "explicate", + "express", + "extract", + "fill in", + "format", + "formulate", + "handle", + "highlight", + "identify", + "illustrate", + "impact", + "implement", + "influence", + "inquire", + "install", + "instantiate", + "institute", + "interpret", + "investigate", + "justify", + "maintain", + "make", + "manipulate", + "manufacture", + "measure", + "modify", + "modulate", + "operate", + "organize", + "paraphrase", + "perform", + "phrase", + "plan", + "practise", + "process", + "produce", + "project", + "prove", + "quantify", + "readjust", + "realign", + "realize", + "reformat", + "register", + "reinforce", + "represent", + "research", + "revise", + "scan", + "select", + "set up", + "shape", + "show", + "solve", + "substantiate", + "test", + "transfer", + "transmit", + "use", + "utilize", + "verify", + "visualize", + "work on", + } + }, + { + TaxonomyLevel.Level4, + new List() + { + "allocate", + "analyze", + "apportion", + "appraise", + "argue", + "ascertain", + "assess", + "assign", + "benchmark", + "break down", + "calculate", + "categorize", + "change", + "characterize", + "check", + "choose", + "compare", + "compartmentalize", + "conclude", + "connect", + "consider", + "construe", + "contextualize", + "contrast", + "convert", + "criticize", + "decompose", + "deconstruct", + "deduce", + "delineate", + "demonstrate", + "depict", + "derive", + "describe", + "detect", + "determine", + "diagnose", + "differentiate", + "disassemble", + "discern", + "disclose", + "discover", + "dismantle", + "dissect", + "dissolve", + "distinguish", + "divide", + "emphasize", + "establish", + "estimate", + "evaluate", + "examine", + "explain", + "extract", + "focus", + "forecast", + "fractionize", + "fragment", + "grade", + "group", + "highlight", + "identify", + "illustrate", + "infer", + "inquire", + "integrate", + "interconnect", + "interpret", + "investigate", + "isolate", + "itemize", + "justify", + "link", + "match", + "measure", + "order", + "organize", + "outline", + "present", + "prove", + "question", + "rank", + "rate", + "reason", + "remove", + "represent", + "research", + "resolve", + "resolve", + "reveal", + "review", + "scan", + "scrutinize", + "section", + "segregate", + "select", + "separate", + "singularize", + "solve", + "sort", + "split", + "state", + "structure", + "subclassify", + "subdivide", + "substantiate", + "sum up", + "test", + "transform", + "transmute", + "uncover", + "unitize", + "verify", + "vindicate", + } + }, + { + TaxonomyLevel.Level5, + new List() + { + "analyze", + "appraise", + "argue", + "arrange", + "ascertain", + "assess", + "assume", + "assure", + "balance", + "benchmark", + "calculate", + "categorize", + "challenge", + "check", + "choose", + "collect", + "comment", + "compare", + "conclude", + "consider", + "constitute", + "construe", + "contrast", + "convince", + "correlate", + "critically compare", + "criticize", + "debate", + "decide", + "deduce", + "defend", + "deliberate", + "deputize", + "detect", + "determine", + "diagnose", + "differentiate", + "discard", + "discuss", + "disprove", + "distinguish", + "estimate", + "evaluate", + "examine", + "expect", + "express", + "extract", + "falsify", + "grade", + "interpret", + "investigate", + "judge", + "justify", + "mark", + "match", + "measure", + "modify", + "monitor", + "neglect", + "order", + "organize", + "persuade", + "place", + "plan", + "ponder", + "predict", + "presume", + "prioritize", + "project", + "propose", + "prove", + "put in relation", + "quantify", + "question", + "rank", + "rate", + "reason", + "recommend", + "refute", + "reject", + "relativise", + "resolve", + "review", + "scan", + "score", + "scrutinize", + "select", + "separate", + "simplify", + "sort", + "structure", + "substantiate", + "suggest", + "suppose", + "synthesize", + "test", + "validate", + "verify", + "vindicate", + "weigh up", + "weight", + } + }, + { + TaxonomyLevel.Level6, + new List() + { + "abstract", + "accumulate", + "acquire", + "adapt", + "adjust", + "alter", + "amend", + "amplify", + "arrange", + "assemble", + "assort", + "attach", + "augment", + "build", + "build up", + "change", + "collect", + "combine", + "compile", + "compose", + "compound", + "conceptualize", + "configure", + "connect", + "constitute", + "construct", + "construe", + "contrive", + "convert", + "coordinate", + "craft", + "create", + "cumulate", + "customize", + "deduce", + "define", + "deploy", + "derive", + "descry", + "develop", + "devise", + "design", + "discover", + "dissect", + "draft", + "draw up", + "engineer", + "enhance", + "enlarge", + "establish", + "exemplify", + "expand", + "extend", + "fabricate", + "finalize", + "flesh out", + "form", + "frame", + "generate", + "illustrate", + "induce", + "infer", + "integrate", + "invent", + "link", + "maintain", + "make", + "manufacture", + "merge", + "modify", + "optimize", + "order", + "organize", + "plan", + "prepare", + "produce", + "project", + "put together", + "realign", + "realize", + "recreate", + "relate", + "revise", + "shape", + "solve", + "specify", + "style", + "summarize", + "support", + "tabulate", + "transform", + "transmute", + "upgrade", + "write", + } + } + }; + + public List GetVerbsOfVisibility(TaxonomyLevel taxonomyLevel, CultureInfo language) + { + List verbOfVisibilities = new(); + switch (language) + { + case { Name: "de-DE" }: + verbOfVisibilities = _taxonomyLevelToVerbsOfVisibilityDe[taxonomyLevel]; + break; + case { Name: "en-DE" }: + verbOfVisibilities = _taxonomyLevelToVerbsOfVisibilityEn[taxonomyLevel]; + break; + } + + return verbOfVisibilities; + } + + public Dictionary GetTaxonomyLevelNames(CultureInfo culture) + { + return _languageToTaxonomyLevel[culture]; + } +} \ No newline at end of file diff --git a/Library/Shared/LearningOutcomes/StruturedLearningOutcome.cs b/Library/Shared/LearningOutcomes/StruturedLearningOutcome.cs new file mode 100644 index 0000000..1895d65 --- /dev/null +++ b/Library/Shared/LearningOutcomes/StruturedLearningOutcome.cs @@ -0,0 +1,86 @@ +using System.Globalization; +using System.Text; +using LearningOutcomesGenerator.Shared.LearningOutcomes; + +namespace Library.Shared.LearningOutcomes; + +public class StructuredLearningOutcome +{ + public StructuredLearningOutcome(TaxonomyLevel taxonomyLevel, string what, string whereby, string whatFor, + string verbOfVisibility, + CultureInfo language) + { + TaxonomyLevel = taxonomyLevel; + What = what; + Whereby = whereby; + WhatFor = whatFor; + VerbOfVisibility = verbOfVisibility; + Language = language; + Id = Guid.NewGuid(); + } + + public TaxonomyLevel TaxonomyLevel { get; set; } + public string What { get; set; } + public string Whereby { get; set; } + public string WhatFor { get; set; } + public string VerbOfVisibility { get; set; } + public CultureInfo Language { get; set; } + + public Guid Id { get; set; } + + public string GetOutcome() + { + switch (Language) + { + case { Name: "de-DE" }: + return GetOutcomeDe(); + case { Name: "en-DE" }: + return GetOutcomeEn(); + default: + throw new NotSupportedException("Language not supported"); + } + } + + private string GetOutcomeEn() + { + var sb = new StringBuilder("You will be able to "); + sb.Append(VerbOfVisibility).Append(" ").Append(What); + + if (!IsNullOrEmpty(Whereby)) + { + sb.Append(" \n by ").Append(Whereby); + } + + if (!IsNullOrEmpty(WhatFor)) + { + sb.Append(" \n to ").Append(WhatFor); + } + + sb.Append("."); + + return sb.ToString(); + } + + private string GetOutcomeDe() + { + var sb = new StringBuilder("Sie können "); + sb.Append(What).Append(" ").Append(VerbOfVisibility); + + if (!IsNullOrEmpty(Whereby)) + { + sb.Append(", \n indem Sie ").Append(Whereby); + } + + if (!IsNullOrEmpty(WhatFor)) + { + sb.Append(",\n um ").Append(WhatFor); + } + + sb.Append("."); + + return sb.ToString(); + } + + private static bool IsNullOrEmpty(string value) => + string.IsNullOrWhiteSpace(value); +} \ No newline at end of file diff --git a/Library/Shared/LearningOutcomes/TaxonomyLevel.cs b/Library/Shared/LearningOutcomes/TaxonomyLevel.cs new file mode 100644 index 0000000..54a98f9 --- /dev/null +++ b/Library/Shared/LearningOutcomes/TaxonomyLevel.cs @@ -0,0 +1,12 @@ +namespace Library.Shared.LearningOutcomes; + +public enum TaxonomyLevel +{ + None, + Level1, + Level2, + Level3, + Level4, + Level5, + Level6, +} \ No newline at end of file diff --git a/Server/App.razor b/Server/App.razor index d48fb08..be778d9 100644 --- a/Server/App.razor +++ b/Server/App.razor @@ -1,5 +1,5 @@  + AdditionalAssemblies="new []{typeof(CreateStructuredLearningOutcome).Assembly}"> diff --git a/Server/Program.cs b/Server/Program.cs index db59229..6184fa1 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -1,7 +1,10 @@ using LearningOutcomesGenerator; using LearningOutcomesGenerator.Pages; +using Library.Pages; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Localization; +using Microsoft.Extensions.Localization; using MudBlazor; using MudBlazor.Services; using Tailwind; @@ -15,6 +18,8 @@ builder.Services.AddMudMarkdownServices(); builder.Services.AddScoped(); +builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + var app = builder.Build(); // Configure the HTTP request pipeline. @@ -31,6 +36,14 @@ app.UseRouting(); +var supportedCultures = new[] { "de-DE", "en-DE" }; +var localizationOptions = new RequestLocalizationOptions() + .AddSupportedCultures(supportedCultures); +localizationOptions.RequestCultureProviders.Clear(); +localizationOptions.AddInitialRequestCultureProvider(new CookieRequestCultureProvider()); +app.UseRequestLocalization(localizationOptions); + + /* app.RunTailwind("tailwind"); */ diff --git a/Server/Server.csproj b/Server/Server.csproj index 7f1fc63..ffe2913 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -8,6 +8,7 @@ + @@ -20,7 +21,7 @@ <_ContentIncludedByDefault Remove="Pages\_Host.cshtml" /> <_ContentIncludedByDefault Remove="Pages\Counter.razor" /> <_ContentIncludedByDefault Remove="Pages\Index.razor" /> - <_ContentIncludedByDefault Remove="Pages\LearningOutcomesForm.razor" /> + <_ContentIncludedByDefault Remove="Pages\CreateStructuredLearningOutcome.razor" /> <_ContentIncludedByDefault Remove="Shared\MainLayout.razor" /> <_ContentIncludedByDefault Remove="wwwroot\CustomIcons\AdLer_Logo.png" /> <_ContentIncludedByDefault Remove="wwwroot\CustomIcons\Beispiel_Learning_Outcome.png" /> @@ -30,8 +31,4 @@ - - - - diff --git a/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-de_LO-de.png b/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-de_LO-de.png new file mode 100644 index 0000000..f5e4d36 Binary files /dev/null and b/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-de_LO-de.png differ diff --git a/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-en_LO-en.png b/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-en_LO-en.png new file mode 100644 index 0000000..1d584f8 Binary files /dev/null and b/Server/wwwroot/CustomIcons/Beispiel-Lernziel_AT-en_LO-en.png differ