From 8571d211df13f219faef6ba377c48de4360f7855 Mon Sep 17 00:00:00 2001 From: Alex Roehm Date: Fri, 18 Aug 2023 22:30:25 +0200 Subject: [PATCH] i18n done --- backend/Controllers/MessageController.cs | 2 - backend/Controllers/ValidationController.cs | 2 +- backend/Models/ValidationRequest.cs | 1 + backend/Services/OneTimeLinkService.cs | 8 +- package.json | 1 + src/App.vue | 2 +- src/components/Header.vue | 103 ++++++++++++++++++-- src/locales/de.json | 40 ++++++++ src/locales/en.json | 40 ++++++++ src/main.ts | 28 +++++- src/router.ts | 32 ++++-- src/views/Contact.vue | 44 ++++----- src/views/EmailForm.vue | 56 +++++------ src/views/Login.vue | 18 ++-- src/views/Templates.vue | 37 ++++--- tsconfig.json | 1 + 16 files changed, 308 insertions(+), 107 deletions(-) create mode 100644 src/locales/de.json create mode 100644 src/locales/en.json diff --git a/backend/Controllers/MessageController.cs b/backend/Controllers/MessageController.cs index 03fdd8d..ce962f5 100644 --- a/backend/Controllers/MessageController.cs +++ b/backend/Controllers/MessageController.cs @@ -25,8 +25,6 @@ public async Task Send( MessageRequest request ) var oneTimeLink = await _oneTimeLinkService.Check(request.Slug); if (oneTimeLink!=null && oneTimeLink is OneTimeLink) { var template = await _templateService.GetByPurpose(oneTimeLink.Purpose); - Console.WriteLine(template); - if (template != null) success = await _emailService.Send( _templateService.To(template), diff --git a/backend/Controllers/ValidationController.cs b/backend/Controllers/ValidationController.cs index 0708b8b..746bb78 100644 --- a/backend/Controllers/ValidationController.cs +++ b/backend/Controllers/ValidationController.cs @@ -23,7 +23,7 @@ public ValidationController( IEmailService emailer, IOneTimeLinkService oneTimeL public async Task Validate( ValidationRequest userInput ) { var link = await _oneTimeLinkService.Get(userInput.Purpose, userInput.Email); - var url = _oneTimeLinkService.GetFullUrl(link.Slug); + var url = _oneTimeLinkService.GetFullUrl(link.Slug, userInput.Language); var message = await _templateService.GetMessageByPurpose(userInput.Purpose,url,userInput.Email); _emailer.Send(userInput.Email,"Link to Calvary Chapel Freiburg Contact Form",message); return Ok(); diff --git a/backend/Models/ValidationRequest.cs b/backend/Models/ValidationRequest.cs index e8f6826..34fea84 100644 --- a/backend/Models/ValidationRequest.cs +++ b/backend/Models/ValidationRequest.cs @@ -9,4 +9,5 @@ public class ValidationRequest [Required] public string Purpose { get; set; } + public string Language { get; set; } } \ No newline at end of file diff --git a/backend/Services/OneTimeLinkService.cs b/backend/Services/OneTimeLinkService.cs index 3cfd43d..31b4943 100644 --- a/backend/Services/OneTimeLinkService.cs +++ b/backend/Services/OneTimeLinkService.cs @@ -16,7 +16,7 @@ public interface IOneTimeLinkService Task Check( string slug ); void Invalidate( string slug ); void InvalidateOld( ); - string GetFullUrl( string slug ); + string GetFullUrl( string slug, string? language ); } @@ -42,7 +42,7 @@ public OneTimeLinkService(AppSettings appSettings, ContRevDb db) _db = db; } - public async Task Get( string purpose, string email ) { + public async Task Get( string purpose, string email) { var entry = new OneTimeLink() { Slug = Protect(purpose+email), @@ -55,8 +55,8 @@ public async Task Get( string purpose, string email ) { return entry; } - public string GetFullUrl( string slug ) { - return _baseUrl+"message/"+slug; + public string GetFullUrl( string slug, string? language ) { + return _baseUrl+(language!=null && language.Length==2?language+"/":"")+"message/"+slug; } public async Task Check( string slug ) { diff --git a/package.json b/package.json index 5080f1d..baa10ee 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "pinia": "^2.1.6", "url": "^0.11.1", "vue": "^3.3.4", + "vue-i18n": "9", "vue-router": "^4.2.4" }, "devDependencies": { diff --git a/src/App.vue b/src/App.vue index 7245548..79d7ac5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,5 @@