Skip to content
Snippets Groups Projects
Commit 91c71f96 authored by Lars Wächter's avatar Lars Wächter
Browse files

Save language detected from LanguageTool

parent f7b31df7
Branches
Tags
No related merge requests found
......@@ -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,
......
......@@ -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 {
......
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;
}
}
......@@ -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'))
......
......@@ -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, {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment