Я получил следующий список культур, для которых я хочу получить названия дней, на их соответствующем языке
CultureInfo[] newCultures = {new CultureInfo("de-DE"),
new CultureInfo("en-US"),
new CultureInfo("en-GB"),
new CultureInfo("es-ES"),
new CultureInfo("fr-FR"),
new CultureInfo("nl-NL")};
Я перебираю все их DateTimeFormat.DayNames
и распечатываю их
foreach (CultureInfo culture in newCultures)
{
foreach (string day in culture.DateTimeFormat.DayNames)
{
Debug.Log(culture.Name + ": " + day);
}
Debug.Log("----------------");
}
При запуске в редакторе в Windows 10 с Unity 2019.1.8f1, эквивалентом среды выполнения Mono .NET 4.x, со сценарием IL2CPP он работает как положено и печатает все названия дней от sun -> sat (включительно)) в консоли.
При сборке под Android все становится запутанным.
При запуске одного и того же кода на Android (протестировано как на Android 7.0, так и на Android 9.0) результаты отличаютсяхотя.
Вместо того, чтобы просто печатать дни солнца -> сб (включительно), он имеет восьмую запись для каждого языка.Это пусто.
en-GB: Sunday
en-GB: Monday
en-GB: Tuesday
en-GB: Wednesday
en-GB: Thursday
en-GB: Friday
en-GB: Saturday
en-GB: <blank>
Я попробовал это на нескольких языках (de-DE, en-US, en-EN, es-ES, fr-FR, nl-NL), и все они произвеливосьмой пустой день.
Однако на этом он не заканчивается.Когда я перебираю CultureInfo.CurrentCulture
вместо этого, восьмидневного дня там нет.
foreach (string day in CultureInfo.CurrentCulture.DateTimeFormat.DayNames)
{
Debug.Log(CultureInfo.CurrentCulture.Name + ": " + day);
}
//Results
//en-GB: Sunday
//en-GB: Monday
//en-GB: Tuesday
//en-GB: Wednesday
//en-GB: Thursday
//en-GB: Friday
//en-GB: Saturday
В качестве альтернативы использованию new CultureInfo
Я пробовал использовать CultureInfo.CreateSpecificCulture
, но это дало те же результаты, что идополнительный 8-й, пустой день.
CultureInfo[] createCultures = {CultureInfo.CreateSpecificCulture("de-DE"),
CultureInfo.CreateSpecificCulture("en-US"),
CultureInfo.CreateSpecificCulture("en-GB"),
CultureInfo.CreateSpecificCulture("es-ES"),
CultureInfo.CreateSpecificCulture("fr-FR"),
CultureInfo.CreateSpecificCulture("nl-NL")};
foreach (CultureInfo culture in createCultures)
{
foreach (string day in culture.DateTimeFormat.DayNames)
{
Debug.Log(culture.Name + ": " + day);
}
Debug.Log("----------------");
}
это ожидаемое поведение?если так, то почему этот восьмой пустой день?и есть ли способ не включать этот день, не удаляя его потом?
Кажется, это проблема, которая возникает только с Unity в сочетании с Android (или конкретной версией Mono Unity, но яне могу определить, какую именно версию они используют, и думаю, что это измененная версия).
Я создаю новое пустое приложение Xamarin для Android в Visual Studio, у которого не было проблемы (mono version: --version Mono JIT compiler version 5.18.0 (Visual Studio built mono))
MainActivity.cs:
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
CultureInfo[] newCultures = {new CultureInfo("de-DE"),
new CultureInfo("en-US"),
new CultureInfo("en-GB"),
new CultureInfo("es-ES"),
new CultureInfo("fr-FR"),
new CultureInfo("nl-NL")};
List<string> results = new List<string>();
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
TextView text;
text = FindViewById<TextView>(Resource.Id.textView1);
foreach (CultureInfo culture in newCultures)
{
foreach (string day in culture.DateTimeFormat.DayNames)
{
results.Add(culture.Name + ": " + day + "\n");
text.Text += culture.Name + ": " + day + "\n";
}
text.Text += "--------\n";
}
//text.Text = results.;
}
}
Activity_main.axml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Text"
android:textSize="5sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/textView1" />
</LinearLayout>