Closed
Description
Description
Thread.CurrentThread.Current[UI]Culture
is always the invariant culture at launch in macOS and Mac Catalyst (and probably iOS and tvOS as well).
This affects both Mono (on Mac Catalyst) and CoreCLR (no macOS).
Ref: xamarin/xamarin-macios#14740
Ref: dotnet/maui#3962
Reproduction Steps
- Create a new Mac Catalyst app:
dotnet new maccatalyst
- Print out Current[UI]Culture at launch by changing the Main.cs file to:
using System.Globalization;
Console.WriteLine ($"CurrentUICulture: {GetString (Thread.CurrentThread.CurrentUICulture)}");
Console.WriteLine ($"CurrentCulture: {GetString (Thread.CurrentThread.CurrentCulture)}");
Thread.CurrentThread.CurrentUICulture = new CultureInfo ("en-US");
Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
Console.WriteLine ("After setting to 'en-US':");
Console.WriteLine ($"CurrentUICulture: {GetString (Thread.CurrentThread.CurrentUICulture)}");
Console.WriteLine ($"CurrentCulture: {GetString (Thread.CurrentThread.CurrentCulture)}");
static string GetString (CultureInfo ci)
{
return $"Name: {ci.Name} NativeName: '{ci.NativeName}' DisplayName: '{ci.DisplayName}' EnglishName: '{ci.EnglishName}'";
}
- Build
dotnet run
- Run the executable (not the app) to get stdout written to a terminal:
$ ./bin/Debug/net6.0-maccatalyst/maccatalyst-x64/currentculturetest.app/Contents/MacOS/currentculturetest
[...]
CurrentUICulture: Name: NativeName: 'Invariant Language (Invariant Country)' DisplayName: 'Invariant Language (Invariant Country)' EnglishName: 'Invariant Language (Invariant Country)'
CurrentCulture: Name: NativeName: 'Invariant Language (Invariant Country)' DisplayName: 'Invariant Language (Invariant Country)' EnglishName: 'Invariant Language (Invariant Country)'
After setting to 'en-US':
CurrentUICulture: Name: en-US NativeName: 'en (US)' DisplayName: 'en (US)' EnglishName: 'en (US)'
CurrentCulture: Name: en-US NativeName: 'en (US)' DisplayName: 'en (US)' EnglishName: 'en (US)
Complete test project: currentculturetest-d0b7a3f.zip
Expected behavior
CurrentThread.Current[UI]Culture should reflect whatever's configured in the OS.
Actual behavior
Always Invariant culture
Regression?
Don't know
Known Workarounds
No response
Configuration
No response
Other information
No response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment