From 91c71f968a02640f6d30be97d63aa4fc1e6477c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20W=C3=A4chter?= <lars.waechter@mni.thm.de> Date: Wed, 23 Jun 2021 21:19:02 +0200 Subject: [PATCH] Save language detected from LanguageTool --- .../create-comment.component.ts | 4 +++ .../spacy-dialog/spacy-dialog.component.ts | 6 ++-- src/app/models/comment.ts | 6 +++- src/app/services/http/comment.service.ts | 3 +- src/app/services/http/languagetool.service.ts | 34 +++++++++++++++++-- 5 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts index 4c59942a4..cf2935311 100644 --- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts +++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts @@ -121,6 +121,10 @@ export class CreateCommentComponent implements OnInit, OnDestroy { .subscribe((result) => { if (result.isAcceptable) { const commentLang = this.languagetoolService.mapLanguageToSpacyModel(result.result.language.code as Language); + // Store language if it was auto-detected + if(this.selectedLang === 'auto') { + comment.language = commentLang; + } const dialogRef = this.dialog.open(SpacyDialogComponent, { data: { comment, diff --git a/src/app/components/shared/_dialogs/spacy-dialog/spacy-dialog.component.ts b/src/app/components/shared/_dialogs/spacy-dialog/spacy-dialog.component.ts index e9135039b..bbfb8714b 100644 --- a/src/app/components/shared/_dialogs/spacy-dialog/spacy-dialog.component.ts +++ b/src/app/components/shared/_dialogs/spacy-dialog/spacy-dialog.component.ts @@ -4,7 +4,7 @@ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { CleaningFunctionService} from '../../../../services/util/cleaning-function.service'; import { CreateCommentComponent } from '../create-comment/create-comment.component'; import { SpacyService, Model } from '../../../../services/http/spacy.service'; -import { LanguageService } from '../../../../services/util/language.service'; +import { LanguagetoolService } from '../../../..//services/http/languagetool.service'; import { Comment } from '../../../../models/comment'; import { map } from 'rxjs/operators'; @@ -32,7 +32,7 @@ export class SpacyDialogComponent implements OnInit, AfterContentInit { manualKeywords = ''; constructor( - protected langService: LanguageService, + protected langService: LanguagetoolService, private spacyService: SpacyService, private cleaningService: CleaningFunctionService, public dialogRef: MatDialogRef<CreateCommentComponent>, @@ -43,7 +43,7 @@ export class SpacyDialogComponent implements OnInit, AfterContentInit { this.comment = this.data.comment; this.commentLang = this.data.commentLang; this.commentBodyChecked = this.data.commentBodyChecked; - this.langSupported = this.commentLang !== 'auto'; + this.langSupported = this.langService.isSupportedLanguage(this.data.commentLang); } ngAfterContentInit(): void { diff --git a/src/app/models/comment.ts b/src/app/models/comment.ts index 31f2711c1..f2388d55c 100644 --- a/src/app/models/comment.ts +++ b/src/app/models/comment.ts @@ -1,4 +1,5 @@ import { dashCaseToCamelCase } from '@angular/compiler/src/util'; +import { Model } from '../services/http/spacy.service'; import { CorrectWrong } from './correct-wrong.enum'; export class Comment { @@ -24,6 +25,7 @@ export class Comment { keywordsFromSpacy: string[]; upvotes: number; downvotes: number; + language: Model; constructor(roomId: string = '', creatorId: string = '', @@ -43,7 +45,8 @@ export class Comment { keywordsFromQuestioner: string[] = [], keywordsFromSpacy: string[] = [], upvotes = 0, - downvotes = 0) { + downvotes = 0, + language: Model = 'auto') { this.id = ''; this.roomId = roomId; this.creatorId = creatorId; @@ -65,5 +68,6 @@ export class Comment { this.keywordsFromSpacy = keywordsFromSpacy; this.upvotes = upvotes; this.downvotes = downvotes; + this.language = language; } } diff --git a/src/app/services/http/comment.service.ts b/src/app/services/http/comment.service.ts index 835a6ca0e..3dfd86cdb 100644 --- a/src/app/services/http/comment.service.ts +++ b/src/app/services/http/comment.service.ts @@ -86,7 +86,8 @@ export class CommentService extends BaseHttpService { roomId: comment.roomId, body: comment.body, read: comment.read, creationTimestamp: comment.timestamp, tag: comment.tag, keywordsFromSpacy: JSON.stringify(comment.keywordsFromSpacy), - keywordsFromQuestioner: JSON.stringify(comment.keywordsFromQuestioner) + keywordsFromQuestioner: JSON.stringify(comment.keywordsFromQuestioner), + language: comment.language }, httpOptions).pipe( tap(_ => ''), catchError(this.handleError<Comment>('addComment')) diff --git a/src/app/services/http/languagetool.service.ts b/src/app/services/http/languagetool.service.ts index 0305c5811..5a3fea983 100644 --- a/src/app/services/http/languagetool.service.ts +++ b/src/app/services/http/languagetool.service.ts @@ -5,7 +5,14 @@ import { catchError } from 'rxjs/operators'; import { Model } from './spacy.service'; import { Observable } from 'rxjs'; -export type Language = 'de-DE' | 'en-US' | 'fr' | 'auto'; +export type Language = 'de' | 'de-AT' | 'de-CH' | 'de-DE' | + 'en' | 'en-AU' | 'en-CA' | 'en-GB' | 'en-US' | + 'fr' | + 'es' | + 'it' | + 'nl' | 'nl-BE' | + 'pt' | 'pt-BR' | 'pt-PT' | + 'auto'; export interface LanguagetoolResult { software: { @@ -75,17 +82,40 @@ export class LanguagetoolService extends BaseHttpService { mapLanguageToSpacyModel(language: Language): Model { switch (language) { + case 'de': + case 'de-AT': + case 'de-CH': case 'de-DE': return 'de'; + case 'en': + case 'en-AU': + case 'en-CA': + case 'en-GB': case 'en-US': return 'en'; + case 'es': + return 'es'; case 'fr': - return 'fr'; + return 'fr'; + case 'it': + return 'it'; + case 'nl': + case 'nl-BE': + return 'nl'; + case 'pt': + case 'pt-BR': + case 'pt-PT': + return 'pt'; default: return 'auto'; } } + isSupportedLanguage(language: Language) { + const supportedLanguages: Model[] = ['de', 'en', 'fr']; + return supportedLanguages.includes(this.mapLanguageToSpacyModel(language)); + } + checkSpellings(text: string, language: Language): Observable<LanguagetoolResult> { const url = '/languagetool'; return this.http.get<LanguagetoolResult>(url, { -- GitLab