File size: 2,515 Bytes
3dd5c9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
@using TaskTrackingSystem.Shared.Localization

@if (CanGenerate)
{
    <button type="button" @onclick="GenerateAsync" disabled="@isBusy" class="mt-2 inline-flex items-center rounded-md border border-violet-200 bg-violet-50 px-2.5 py-1.5 text-xs font-semibold text-violet-700 hover:bg-violet-100 disabled:opacity-50">
        @if (isBusy)
        {
            <span>@AppLocalization.Text("common.generating", "Generating...")</span>
        }
        else
        {
            <span>@ButtonLabel</span>
        }
    </button>
}

@if (!string.IsNullOrWhiteSpace(errorMessage))
{
    <p class="mt-1 text-xs text-rose-600">@errorMessage</p>
}

@code {
    [Parameter] public string? SourceText { get; set; }
    [Parameter] public string SourceLanguage { get; set; } = "my";
    [Parameter] public string TargetLanguage { get; set; } = "en";
    [Parameter] public bool IsName { get; set; }
    [Parameter] public bool TargetHasText { get; set; }
    [Parameter] public EventCallback<TranslationResult> Generated { get; set; }

    [Inject] private IContentTranslationService TranslationService { get; set; } = null!;

    private bool isBusy;
    private string? errorMessage;

    private bool CanGenerate => !TargetHasText && !string.IsNullOrWhiteSpace(SourceText);
    private string ButtonLabel => IsName
        ? (TargetLanguage == "en" ? AppLocalization.Text("translation.generateEnglishSpelling", "Generate English spelling") : AppLocalization.Text("translation.generateBurmeseName", "α€™α€Όα€”α€Ία€™α€¬α€‘α€™α€Šα€Ί α€›α€±α€Έα€žα€¬α€Έα€•α€±α€Έα€›α€”α€Ί"))
        : (TargetLanguage == "en" ? AppLocalization.Text("translation.generateEnglish", "Generate English") : AppLocalization.Text("translation.generateBurmese", "α€™α€Όα€”α€Ία€™α€¬α€˜α€¬α€žα€¬ ပြန်ဆိုရန်"));

    private async Task GenerateAsync()
    {
        if (!CanGenerate) return;
        isBusy = true;
        errorMessage = null;
        var result = IsName
            ? await TranslationService.TransliterateNameAsync(SourceText!.Trim(), SourceLanguage, TargetLanguage)
            : await TranslationService.TranslateAsync(SourceText!.Trim(), SourceLanguage, TargetLanguage);
        isBusy = false;

        if (!result.Success || string.IsNullOrWhiteSpace(result.TranslatedText))
        {
            errorMessage = result.ErrorMessage ?? AppLocalization.Text("common.translationNotConfigured", "Translation is not configured.");
            return;
        }

        await Generated.InvokeAsync(result);
    }
}