Skip to content

Commit

Permalink
- Adjust for nullable reference types
Browse files Browse the repository at this point in the history
- Set version to 1.2.0
  • Loading branch information
Johan Svensson authored and Johan Svensson committed Oct 10, 2023
1 parent ad41f8a commit d9c3c45
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<ApplicationIdGuid>73206c16-0bbf-4382-a442-f90b21cbca3c</ApplicationIdGuid>

<!-- Versions -->
<ApplicationDisplayVersion>1.1.0</ApplicationDisplayVersion>
<ApplicationDisplayVersion>1.2.0</ApplicationDisplayVersion>
<ApplicationVersion>1</ApplicationVersion>

<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
Expand Down
16 changes: 10 additions & 6 deletions LocalizationResourceManager.Maui.Sample/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,15 @@ public partial class MainPage : ContentPage
private int count = 0;
private readonly ILocalizationResourceManager resourceManager;

public int Count => count;
public int Count
{
get => count;
set
{
count = value;
OnPropertyChanged(nameof(Count));
}
}

public LocalizedString HelloWorld { get; }
public LocalizedString CurrentCulture { get; }
Expand All @@ -24,11 +32,7 @@ public MainPage(ILocalizationResourceManager resourceManager)
BindingContext = this;
}

private void OnCounterClicked(object sender, EventArgs e)
{
count++;
OnPropertyChanged(nameof(Count));
}
private void OnCounterClicked(object sender, EventArgs e) => Count++;

private void OnToggleLanguage(object sender, EventArgs e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
<RepositoryUrl>https://github.com/SirJohnK/LocalizationResourceManager.Maui</RepositoryUrl>
<PackageTags>dotnet,dotnetmaui,localization</PackageTags>
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
<AssemblyVersion>1.1.0.0</AssemblyVersion>
<FileVersion>1.1.0.0</FileVersion>
<PackageReleaseNotes>- Update to .NET 7.</PackageReleaseNotes>
<Version>1.1.0</Version>
<AssemblyVersion>1.2.0.0</AssemblyVersion>
<FileVersion>1.2.0.0</FileVersion>
<PackageReleaseNotes>- Add TranslateBindingExtension for custom binding with format and plural support in XAML.</PackageReleaseNotes>
<Version>1.2.0</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
65 changes: 22 additions & 43 deletions LocalizationResourceManager.Maui/TranslateBindingExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,25 @@ public class TranslateBindingExtension : IMarkupExtension<BindingBase>, IMultiVa
public string StringFormat { get; set; } = "{0}";

/// <inheritdoc/>
public IValueConverter Converter { get; set; } = null;
public IValueConverter? Converter { get; set; } = null;

/// <inheritdoc/>
public object ConverterParameter { get; set; } = null;
public object? ConverterParameter { get; set; } = null;

/// <inheritdoc/>
public object Source { get; set; } = null;
public object? Source { get; set; } = null;

/// <inheritdoc/>
public bool TranslateValue { get; set; } = false;

/// <inheritdoc/>
public string TranslateFormat { get; set; }
public string? TranslateFormat { get; set; }

/// <inheritdoc/>
public string TranslateOne { get; set; }
public string? TranslateOne { get; set; }

/// <inheritdoc/>
public string TranslateZero { get; set; }
public string? TranslateZero { get; set; }

/// <inheritdoc/>
public object ProvideValue(IServiceProvider serviceProvider)
Expand All @@ -51,70 +51,49 @@ BindingBase IMarkupExtension<BindingBase>.ProvideValue(IServiceProvider serviceP
Mode = Mode,
Bindings = new Collection<BindingBase>
{
new Binding(Path, Mode, Converter, ConverterParameter, null, Source),
new Binding(nameof(LocalizationResourceManager.CurrentCulture), BindingMode.OneWay, null, null, null, LocalizationResourceManager.Current)
new Binding(Path, Mode, Converter, ConverterParameter, source: Source),
new Binding(nameof(LocalizationResourceManager.CurrentCulture), BindingMode.OneWay, source:LocalizationResourceManager.Current)
}
};
}

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length == 0 || values[0] == null)
var value = values?.FirstOrDefault();
if (value is null)
{
return "";
return string.Empty;
}

if (!string.IsNullOrEmpty(TranslateZero) && IsZero(values[0]))
if (!string.IsNullOrWhiteSpace(TranslateZero) && IsZero(value))
{
return LocalizationResourceManager.Current[TranslateZero, values];
return LocalizationResourceManager.Current[TranslateZero, value];
}

if (!string.IsNullOrEmpty(TranslateOne) && IsOne(values[0]))
if (!string.IsNullOrWhiteSpace(TranslateOne) && IsOne(value))
{
return LocalizationResourceManager.Current[TranslateOne, values];
return LocalizationResourceManager.Current[TranslateOne, value];
}

if (!string.IsNullOrEmpty(TranslateFormat))
if (!string.IsNullOrWhiteSpace(TranslateFormat))
{
return LocalizationResourceManager.Current[TranslateFormat, values];
return LocalizationResourceManager.Current[TranslateFormat, value];
}

if (TranslateValue)
{
return LocalizationResourceManager.Current[values[0].ToString()];
return LocalizationResourceManager.Current[$"{value}"];
}

return values[0];
return value;
}

static bool IsZero(object value)
{
if (value == null)
{
return false;
}
if (value.GetType() == typeof(int) && (int)value == 0)
{
return true;
}
return false;
}
private static bool IsZero(object value) => (value is int number && number == 0);

static bool IsOne(object value)
{
if (value == null)
{
return false;
}
if (value.GetType() == typeof(int) && (int)value == 1)
{
return true;
}
return false;
}
private static bool IsOne(object value) => (value is int number && number == 1);

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

0 comments on commit d9c3c45

Please sign in to comment.