A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

40 lines
1.5 KiB

using System.Globalization;
using Avalonia.Controls;
using Avalonia.Styling;
namespace Avalonia.Themes.Fluent2.UnitTests;
public class LocalizationTests
{
[AvaloniaFact]
public void Control_strings_localize_to_current_ui_culture()
{
var originalCulture = CultureInfo.CurrentUICulture;
var theme = new Fluent2Theme();
var app = Application.Current!;
app.Styles.Add(theme);
try
{
CultureInfo.CurrentUICulture = new CultureInfo("de-DE");
Assert.True(app.TryGetResource("StringDatePickerYearText", ThemeVariant.Light, out var year));
Assert.Equal("Jahr", year);
Assert.True(app.TryGetResource("StringTextFlyoutPasteText", ThemeVariant.Light, out var paste));
Assert.Equal("Einfügen", paste);
// de-AT has no entry of its own; the culture walk lands on "de".
CultureInfo.CurrentUICulture = new CultureInfo("de-AT");
Assert.True(app.TryGetResource("StringTextFlyoutCutText", ThemeVariant.Light, out var cut));
Assert.Equal("Ausschneiden", cut);
// Untranslated cultures fall back to the invariant English resources.
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
Assert.True(app.TryGetResource("StringDatePickerYearText", ThemeVariant.Light, out var invariantYear));
Assert.Equal("year", invariantYear);
}
finally
{
CultureInfo.CurrentUICulture = originalCulture;
app.Styles.Remove(theme);
}
}
}