Translated dates based on display language. (#567)
* Updating the app's culture based on the display language and making sure that dates/times are properly translated.
This commit is contained in:
@@ -36,9 +36,6 @@ public static class XamlHelpers
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static Visibility ReverseBoolToVisibilityConverter(bool value) => value ? Visibility.Collapsed : Visibility.Visible;
|
||||
public static Visibility ReverseVisibilityConverter(Visibility visibility) => visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
|
||||
public static bool ReverseBoolConverter(bool value) => !value;
|
||||
@@ -125,7 +122,7 @@ public static class XamlHelpers
|
||||
public static string GetCreationDateString(DateTime date, bool prefer24HourTime)
|
||||
{
|
||||
var localTime = date.ToLocalTime();
|
||||
return $"{localTime.ToLongDateString()} {(prefer24HourTime ? localTime.ToString(TwentyFourHourTimeFormat) : localTime.ToString(TwelveHourTimeFormat))}";
|
||||
return $"{localTime.ToString("D", CultureInfo.DefaultThreadCurrentUICulture)} {(prefer24HourTime ? localTime.ToString(TwentyFourHourTimeFormat) : localTime.ToString(TwelveHourTimeFormat))}";
|
||||
}
|
||||
public static string GetMailGroupDateString(object groupObject)
|
||||
{
|
||||
@@ -152,7 +149,10 @@ public static class XamlHelpers
|
||||
else if (dateTimeValue == DateTime.Today.AddDays(-1))
|
||||
return Translator.Yesterday;
|
||||
else
|
||||
return dateTimeValue.ToLongDateString();
|
||||
{
|
||||
return dateTimeValue.ToString("D", CultureInfo.DefaultThreadCurrentUICulture);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
return dateObject.ToString();
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Nito.AsyncEx;
|
||||
using Serilog;
|
||||
@@ -11,6 +13,7 @@ using Windows.ApplicationModel.Activation;
|
||||
using Windows.ApplicationModel.AppService;
|
||||
using Windows.ApplicationModel.Core;
|
||||
using Windows.Foundation.Metadata;
|
||||
using Windows.Globalization;
|
||||
using Windows.Storage;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Core.Preview;
|
||||
@@ -20,11 +23,13 @@ using Windows.UI.Xaml.Controls;
|
||||
using Wino.Activation;
|
||||
using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Translations;
|
||||
using Wino.Messaging.Client.Shell;
|
||||
using Wino.Services;
|
||||
|
||||
namespace Wino.Core.UWP;
|
||||
|
||||
public abstract class WinoApplication : Application
|
||||
public abstract class WinoApplication : Application, IRecipient<LanguageChanged>
|
||||
{
|
||||
public new static WinoApplication Current => (WinoApplication)Application.Current;
|
||||
public const string WinoLaunchLogPrefix = "[Wino Launch] ";
|
||||
@@ -215,8 +220,6 @@ public abstract class WinoApplication : Application
|
||||
CoreApplication.EnablePrelaunch(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public virtual async void OnResuming(object sender, object e)
|
||||
{
|
||||
// App Service connection was lost on suspension.
|
||||
@@ -245,4 +248,16 @@ public abstract class WinoApplication : Application
|
||||
string logFilePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, Constants.ClientLogFile);
|
||||
LogInitializer.SetupLogger(logFilePath);
|
||||
}
|
||||
|
||||
public virtual void OnLanguageChanged(AppLanguageModel languageModel)
|
||||
{
|
||||
var newCulture = new CultureInfo(languageModel.Code);
|
||||
|
||||
ApplicationLanguages.PrimaryLanguageOverride = languageModel.Code;
|
||||
|
||||
CultureInfo.DefaultThreadCurrentCulture = newCulture;
|
||||
CultureInfo.DefaultThreadCurrentUICulture = newCulture;
|
||||
}
|
||||
|
||||
public void Receive(LanguageChanged message) => OnLanguageChanged(TranslationService.CurrentLanguageModel);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user