Bitte überprüfen Sie Ihr Email Postfach inklusive Spam-Ordner. Sie können auch den Absender bitten, Ihnen den Code auf anderem Wege zukommen zu lassen.
+ @_localizer[WebKey.LockedFooterTitle]
+
@_localizer[WebKey.LockedFooterBody]
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml b/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml
index 40a6853f..7baa0247 100644
--- a/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml
+++ b/EnvelopeGenerator.Web/Views/Shared/_Layout.cshtml
@@ -8,6 +8,7 @@
+
diff --git a/EnvelopeGenerator.Web/Views/_ViewImports.cshtml b/EnvelopeGenerator.Web/Views/_ViewImports.cshtml
index a7b4fc62..67a39c0c 100644
--- a/EnvelopeGenerator.Web/Views/_ViewImports.cshtml
+++ b/EnvelopeGenerator.Web/Views/_ViewImports.cshtml
@@ -1,9 +1,10 @@
@using EnvelopeGenerator.Web
@using EnvelopeGenerator.Web.Models
-@using Microsoft.Extensions.Localization;
-@using EnvelopeGenerator.Application.Resources;
-@inject IStringLocalizer _localizer;
+@using Microsoft.Extensions.Localization
+@using EnvelopeGenerator.Application
+@inject IStringLocalizer _localizer
@inject System.Text.Encodings.Web.UrlEncoder _encoder
@inject Ganss.Xss.HtmlSanitizer _sanitizer
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor _accessor
+@inject Cultures _cultures
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/WebKey.cs b/EnvelopeGenerator.Web/WebKey.cs
new file mode 100644
index 00000000..f65aeeee
--- /dev/null
+++ b/EnvelopeGenerator.Web/WebKey.cs
@@ -0,0 +1,20 @@
+namespace EnvelopeGenerator.Web
+{
+ public static class WebKey
+ {
+ public static readonly string ServiceOutputNullError = nameof(ServiceOutputNullError);
+ public static readonly string UnexpectedError = nameof(UnexpectedError);
+ public static readonly string FailedToSendAccessCode = nameof(FailedToSendAccessCode);
+ public static readonly string WrongEnvelopeReceiverId = nameof(WrongEnvelopeReceiverId);
+ public static readonly string DataIntegrityError = nameof(DataIntegrityError);
+ public static readonly string NonDecodableEnvelopeReceiverId = nameof(NonDecodableEnvelopeReceiverId);
+ public static readonly string de_DE = nameof(de_DE).Replace("_", "-");
+ public static readonly string en_US = nameof(en_US).Replace("_", "-");
+ public static readonly string LockedTitle = nameof(LockedTitle);
+ public static readonly string LockedBody = nameof(LockedBody);
+ public static readonly string LocakedOpen = nameof(LocakedOpen);
+ public static readonly string LockedAccessCode = nameof(LockedAccessCode);
+ public static readonly string LockedFooterTitle = nameof(LockedFooterTitle);
+ public static readonly string LockedFooterBody = nameof(LockedFooterBody);
+ }
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/appsettings.json b/EnvelopeGenerator.Web/appsettings.json
index 11b6d4d4..27287230 100644
--- a/EnvelopeGenerator.Web/appsettings.json
+++ b/EnvelopeGenerator.Web/appsettings.json
@@ -12,6 +12,7 @@
},
"PSPDFKitLicenseKey": null,
/* The first format parameter {0} will be replaced by the nonce value. */
+ "TestCSP": false,
"Content-Security-Policy": [
"default-src 'self'",
"script-src 'self' 'nonce-{0}'",
@@ -94,6 +95,15 @@
/* Resx naming format is -> Resource.language.resx (eg: Resource.de_DE.resx).
To add a new language, first you should write the required resx file.
first is the default culture name. */
- "Languages": [ "de_DE", "en_US" ],
- "DisableMultiLanguage": true
+ "Cultures": [
+ {
+ "Language": "en-US",
+ "FIClass": "fi-us"
+ },
+ {
+ "Language": "de-DE",
+ "FIClass": "fi-de"
+ }
+ ],
+ "DisableMultiLanguage": false
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/wwwroot/css/site.css b/EnvelopeGenerator.Web/wwwroot/css/site.css
index fa8ab370..1fb08ec5 100644
--- a/EnvelopeGenerator.Web/wwwroot/css/site.css
+++ b/EnvelopeGenerator.Web/wwwroot/css/site.css
@@ -209,4 +209,8 @@ footer#page-footer a:focus {
.lang-item {
font-size: 0.85rem;
+}
+
+#langDropdownMenuButton{
+ min-width: 4vw;
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/wwwroot/js/network.js b/EnvelopeGenerator.Web/wwwroot/js/network.js
index c74b837a..8153c853 100644
--- a/EnvelopeGenerator.Web/wwwroot/js/network.js
+++ b/EnvelopeGenerator.Web/wwwroot/js/network.js
@@ -159,3 +159,39 @@ class WrappedResponse {
this.fatal = (data === null && error === null)
}
}
+
+async function setLangAsync(language, flagCode) {
+ document.getElementById('selectedFlag').className = 'fi ' + flagCode + ' me-2';
+
+ await fetch(`/lang/${language}`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ })
+}
+
+async function setLanguage(language) {
+
+ const hasLang = await fetch('/lang', {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ })
+ .then(res => res.json())
+ .then(langs => langs.includes(language))
+ .catch(err => false);
+
+ if(hasLang)
+ return await fetch(`/lang/${language}`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' }
+ })
+ .then(response => {
+ if (response.redirected)
+ window.location.href = response.url;
+ else if (!response.ok)
+ return Promise.reject('Failed to set language');
+ });
+}
\ No newline at end of file