import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core'; import { StickerInfo, StickerFilesInfo, StickerUtil, StickerMap } from '@ucap-webmessenger/core'; import { FormGroup, FormBuilder } from '@angular/forms'; import { MatSlideToggleChange, MatSelectChange } from '@angular/material'; import { TranslationEventJson, MassTranslationEventJson, EventType } from '@ucap-webmessenger/protocol-event'; import { TranslationSaveResponse } from '@ucap-webmessenger/api-common'; @Component({ selector: 'ucap-translation-section', templateUrl: './translation-section.component.html', styleUrls: ['./translation-section.component.scss'] }) export class TranslationSectionComponent implements OnInit { @Input() destLocale: string; @Input() simpleView: boolean; @Input() preView: boolean; @Input() translationPreviewInfo: { previewInfo: TranslationSaveResponse | null; translationType: EventType.Translation | EventType.MassTranslation; }; @Output() changeTranslationSimpleview = new EventEmitter(); @Output() changeTranslationPreview = new EventEmitter(); @Output() changeDestLocale = new EventEmitter(); @Output() cancelTranslation = new EventEmitter(); @Output() sendTranslationMessage = new EventEmitter<{ previewInfo: TranslationSaveResponse | null; translationType: EventType.Translation | EventType.MassTranslation; }>(); isShowTranslationSimpleview = false; isShowTranslationPreview = false; translationDestList: { key: string; text: string; }[] = [ { key: 'af', text: 'Afrikaans' }, { key: 'sq', text: 'Albanian' }, { key: 'am', text: 'Amharic' }, { key: 'ar', text: 'Arabic' }, { key: 'hy', text: 'Armenian' }, { key: 'az', text: 'Azeerbaijani' }, { key: 'eu', text: 'Basque' }, { key: 'be', text: 'Belarusian' }, { key: 'bn', text: 'Bengali' }, { key: 'bs', text: 'Bosnian' }, { key: 'bg', text: 'Bulgarian' }, { key: 'ca', text: 'Catalan' }, { key: 'ceb', text: 'Cebuano' }, { key: 'zh-CN', text: 'Chinese(Simplified)' }, { key: 'zh-TW', text: 'Chinese(Traditional)' }, { key: 'co', text: 'Corsican' }, { key: 'hr', text: 'Croatian' }, { key: 'cs', text: 'Czech' }, { key: 'da', text: 'Danish' }, { key: 'nl', text: 'Dutch' }, { key: 'en', text: 'English' }, { key: 'eo', text: 'Esperanto' }, { key: 'fi', text: 'Finnish' }, { key: 'fr', text: 'French' }, { key: 'fy', text: 'Frisian' }, { key: 'gl', text: 'Galician' }, { key: 'ka', text: 'Georgian' }, { key: 'de', text: 'German' }, { key: 'el', text: 'Greek' }, { key: 'gu', text: 'Gujarati' }, { key: 'ht', text: 'Haitian Creole' }, { key: 'ha', text: 'Hausa' }, { key: 'haw', text: 'Hawaiian' }, { key: 'iw', text: 'Hebrew' }, { key: 'hi', text: 'Hindi' }, { key: 'hmn', text: 'Hmong' }, { key: 'hu', text: 'Hungarian' }, { key: 'is', text: 'Icelandic' }, { key: 'ig', text: 'Igbo' }, { key: 'id', text: 'Indonesian' }, { key: 'ga', text: 'Irish' }, { key: 'it', text: 'Italian' }, { key: 'ja', text: 'Japanese' }, { key: 'jw', text: 'Javanese' }, { key: 'kn', text: 'Kannada' }, { key: 'kk', text: 'Kazakh' }, { key: 'km', text: 'Khmer' }, { key: 'ko', text: 'Korean' }, { key: 'ku', text: 'Kurdish' }, { key: 'ky', text: 'Kyrgyz' }, { key: 'lo', text: 'Lao' }, { key: 'la', text: 'Latin' }, { key: 'lv', text: 'Latvian' }, { key: 'lt', text: 'Lithuanian' }, { key: 'lb', text: 'Luxembourgish' }, { key: 'mk', text: 'Macedonian' }, { key: 'mg', text: 'Malagasy' }, { key: 'ms', text: 'Malay' }, { key: 'ml', text: 'Malayalam' }, { key: 'mi', text: 'Maori' }, { key: 'mr', text: 'Marathi' }, { key: 'mn', text: 'Mongolian' }, { key: 'my', text: 'Myanmar(Burmese)' }, { key: 'ne', text: 'Nepali' }, { key: 'no', text: 'Norwegian' }, { key: 'ny', text: 'Nyanja(Chichewa)' }, { key: 'ps', text: 'Pashto' }, { key: 'fa', text: 'Persian' }, { key: 'pl', text: 'Polish' }, { key: 'pt', text: 'Portuguese' }, { key: 'pa', text: 'Punjabi' }, { key: 'ro', text: 'Romanian' }, { key: 'ru', text: 'Russian' }, { key: 'sm', text: 'Samoan' }, { key: 'gd', text: 'Scots Gaelic' }, { key: 'sr', text: 'Serbian' }, { key: 'st', text: 'Sesotho' }, { key: 'sn', text: 'Shona' }, { key: 'sd', text: 'Sindhi' }, { key: 'si', text: 'Sinhala(Sinhalese)' }, { key: 'sk', text: 'Slovak' }, { key: 'sl', text: 'Slovenian' }, { key: 'so', text: 'Somali' }, { key: 'es', text: 'Spanish' }, { key: 'su', text: 'Sundanese' }, { key: 'sw', text: 'Swahili' }, { key: 'sv', text: 'Swedish' }, { key: 'tl', text: 'Tagalog(Filipino)' }, { key: 'tg', text: 'Tajik' }, { key: 'ta', text: 'Tamil' }, { key: 'te', text: 'Telugu' }, { key: 'th', text: 'Thai' }, { key: 'tr', text: 'Turkish' }, { key: 'uk', text: 'Ukrainian' }, { key: 'ur', text: 'Urdu' }, { key: 'uz', text: 'Uzbek' }, { key: 'vi', text: 'Vietnamese' }, { key: 'cy', text: 'Welsh' }, { key: 'xh', text: 'Xhosa' }, { key: 'yi', text: 'Yiddish' }, { key: 'yo', text: 'Yoruba' }, { key: 'zu', text: 'Zulu' } ]; translationForm: FormGroup; constructor(private formBuilder: FormBuilder) {} ngOnInit() { this.translationForm = this.formBuilder.group({ destType: [this.destLocale] }); } onChangeSelection(event: MatSelectChange) { this.destLocale = event.value; this.changeDestLocale.emit(this.destLocale); } onChangToggleSimpleview(event: MatSlideToggleChange) { this.isShowTranslationSimpleview = event.checked; this.changeTranslationSimpleview.emit(event.checked); } onChangTogglePreview(event: MatSlideToggleChange) { this.isShowTranslationPreview = event.checked; this.changeTranslationPreview.emit(event.checked); } onClickSendTranslationMessage(translationInfo: { previewInfo: TranslationSaveResponse | null; translationType: EventType.Translation | EventType.MassTranslation; }) { this.sendTranslationMessage.emit(translationInfo); } onClickTranslationCancel() { this.cancelTranslation.emit(); } }