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 4c59942a4a8dc03160a61a9e33eeb42509382b76..cf293531173d853cff72744b41549cf46685bd1d 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 e9135039b507867e40635f5b5937d4c3a9299c30..bbfb8714bee1759befc7e515173d8319f37151b1 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 31f2711c1bb7d74934ca8e55802fd4aee2fdca20..f2388d55ce963726962f7838dbb878dddde7d270 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 835a6ca0e5063f0eb97e07ed581c225a12d21c96..3dfd86cdbbf122959d4dfbdd43bbd69c5ae1c1eb 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 0305c581109d8a7b1c70634c1919a35ab810854a..5a3fea983bf29a2df95b61759ce242d2f868a177 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, {