Merge pull request #2703 from sbwalker/dev

fix #2700 - translation installation
This commit is contained in:
Shaun Walker 2023-03-28 15:49:54 -04:00 committed by GitHub
commit 696c63c6d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 57 deletions

View File

@ -20,15 +20,6 @@ else
<form @ref="form" class="@(validated ? "was-validated" : "needs-validation")" novalidate> <form @ref="form" class="@(validated ? "was-validated" : "needs-validation")" novalidate>
<div class="container"> <div class="container">
<div class="row mb-1 align-items-center"> <div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="translated" HelpText="Specify If You Wish To Select Languages That Have Translations Installed" ResourceKey="Translated">Translated?</Label>
<div class="col-sm-9">
<select id="translated" class="form-select" value="@_translated" @onchange="(e => TranslatedChanged(e))" required>
<option value="True">@SharedLocalizer["Yes"]</option>
<option value="False">@SharedLocalizer["No"]</option>
</select>
</div>
</div>
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="name" HelpText="Name Of The Language" ResourceKey="Name">Name:</Label> <Label Class="col-sm-3" For="name" HelpText="Name Of The Language" ResourceKey="Name">Name:</Label>
<div class="col-sm-9"> <div class="col-sm-9">
<select id="_code" class="form-select" @bind="@_code" required> <select id="_code" class="form-select" @bind="@_code" required>
@ -73,7 +64,6 @@ else
private ElementReference form; private ElementReference form;
private bool validated = false; private bool validated = false;
private string _translated = "True";
private string _code = "-"; private string _code = "-";
private string _default = "False"; private string _default = "False";
private List<string> _languages; private List<string> _languages;
@ -91,18 +81,11 @@ else
private async Task LoadCultures() private async Task LoadCultures()
{ {
_cultures = await LocalizationService.GetCulturesAsync(bool.Parse(_translated)); _cultures = await LocalizationService.GetCulturesAsync(false);
_cultures = _cultures.Where(c => !c.Name.Equals(Constants.DefaultCulture) && !_languages.Contains(c.Name)); _cultures = _cultures.Where(c => !c.Name.Equals(Constants.DefaultCulture) && !_languages.Contains(c.Name));
_code = "-"; _code = "-";
} }
private async void TranslatedChanged(ChangeEventArgs e)
{
_translated = (string)e.Value;
await LoadCultures();
StateHasChanged();
}
private async Task SaveLanguage() private async Task SaveLanguage()
{ {
validated = true; validated = true;

View File

@ -35,14 +35,22 @@ else
{ {
<td>@((string.IsNullOrEmpty(context.Version)) ? "---" : context.Version)</td> <td>@((string.IsNullOrEmpty(context.Version)) ? "---" : context.Version)</td>
<td> <td>
@switch (TranslationAvailable(context.Code, context.Version)) @{
var translation = TranslationAvailable(context.Code, context.Version);
}
@if (translation != null)
{ {
case "install": if (string.IsNullOrEmpty(context.Version))
<button type="button" class="btn btn-success" @onclick=@(async () => await GetPackage(context.Code))>@SharedLocalizer["Download"]</button> {
break; <button type="button" class="btn btn-success" @onclick=@(async () => await GetPackage(context.Code, translation.Version))>@SharedLocalizer["Download"]</button>
case "upgrade": }
<button type="button" class="btn btn-success" @onclick=@(async () => await GetPackage(context.Code))>@SharedLocalizer["Upgrade"]</button> else
break; {
if (Version.Parse(translation.Version).CompareTo(Version.Parse(context.Version)) > 0)
{
<button type="button" class="btn btn-success" @onclick=@(async () => await GetPackage(context.Code, translation.Version))>@SharedLocalizer["Upgrade"]</button>
}
}
} }
</td> </td>
} }
@ -134,38 +142,16 @@ else
} }
} }
private string TranslationAvailable(string code, string version) private Package TranslationAvailable(string code, string version)
{ {
if (_packages != null) return _packages?.FirstOrDefault(item => item.PackageId == (Constants.PackageId + "." + code));
{
var package = _packages.Where(item => item.PackageId == (Constants.PackageId + "." + code)).FirstOrDefault();
if (package != null)
{
// package version needs to match current framework version
if (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) == 0)
{
if (string.IsNullOrEmpty(version))
{
return "install";
}
else
{
if (Version.Parse(package.Version).CompareTo(Version.Parse(version)) > 0)
{
return "upgrade";
}
}
}
}
}
return "";
} }
private async Task GetPackage(string code) private async Task GetPackage(string code, string version)
{ {
try try
{ {
_package = await PackageService.GetPackageAsync(Constants.PackageId + "." + code, Constants.Version); _package = await PackageService.GetPackageAsync(Constants.PackageId + "." + code, version);
StateHasChanged(); StateHasChanged();
} }
catch (Exception ex) catch (Exception ex)

View File

@ -120,18 +120,12 @@
<data name="Error.Language.Add" xml:space="preserve"> <data name="Error.Language.Add" xml:space="preserve">
<value>Error Adding Language</value> <value>Error Adding Language</value>
</data> </data>
<data name="Translated.HelpText" xml:space="preserve">
<value>Specify If You Wish To Select Languages That Have Translations Installed</value>
</data>
<data name="Name.HelpText" xml:space="preserve"> <data name="Name.HelpText" xml:space="preserve">
<value>Name Of The Langauage</value> <value>Name Of The Langauage</value>
</data> </data>
<data name="IsDefault.HelpText" xml:space="preserve"> <data name="IsDefault.HelpText" xml:space="preserve">
<value>Indicates Whether Or Not This Language Is The Default For The Site</value> <value>Indicates Whether Or Not This Language Is The Default For The Site</value>
</data> </data>
<data name="Translated.Text" xml:space="preserve">
<value>Translated?</value>
</data>
<data name="Name.Text" xml:space="preserve"> <data name="Name.Text" xml:space="preserve">
<value>Name:</value> <value>Name:</value>
</data> </data>

View File

@ -132,6 +132,9 @@
<data name="DeleteLanguage.Header" xml:space="preserve"> <data name="DeleteLanguage.Header" xml:space="preserve">
<value>Delete Language</value> <value>Delete Language</value>
</data> </data>
<data name="Success.Language.Download" xml:space="preserve">
<value>Translation Downloaded Successfully. Click Install To Complete Installation.</value>
</data>
<data name="Error.Language.Download" xml:space="preserve"> <data name="Error.Language.Download" xml:space="preserve">
<value>Error Downloading Translation</value> <value>Error Downloading Translation</value>
</data> </data>