Ste*_*ald 16 c# xamarin.ios xamarin.android xamarin
无论用户设置如何,如何强制Xamain - Android / iOS在美国英语文化中工作。我在应用程序中面临的问题是,该应用程序仅支持美国/英国英语,但如果用户将语言偏好更改为西班牙语、德语等。数字日期等格式将发生变化。
例如, 2.35将在西班牙语、德语中表示为2,35。
因此,如果用户尝试使用具有相似语言的应用程序,该应用程序将错过行为或崩溃。在我尝试Convert.ToDouble("2,35");或类似的情况下会发生崩溃。
所以我的怀疑是,
在 Xamarin 中是否可以将文化强制设置为 en-US。可能在一个地方,否则我需要在我执行转换的所有地方更改它。
请帮忙。
7vi*_*am7 13
我正在使用一个Xamarin Forms应用程序。
在App课堂上设置文化对我来说很有用。
using System.Globalization;
using System.Threading;
private void SetCultureToUSEnglish()
{
CultureInfo englishUSCulture = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentCulture = englishUSCulture;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下属性设置默认区域性:
CultureInfo.DefaultThreadCurrentCulture
Run Code Online (Sandbox Code Playgroud)
但这在 Android 中不起作用。因此,对于 Android,您需要在每次恢复活动时设置区域性。您可以添加基本活动,例如:
internal class MyBaseActivity : Activity
{
protected override void OnResume ()
{
base.OnResume ();
// Here you would read it from where ever.
var userSelectedCulture = new CultureInfo ("fr-FR");
Thread.CurrentThread.CurrentCulture = userSelectedCulture;
}
}
Run Code Online (Sandbox Code Playgroud)
在xamarin论坛中找到:https://forums.xamarin.com/discussion/9764/how-to-set-a-global-cultureinfo-for-an-app
我尝试了乔尔的方法,但它对我不起作用。我用了这个方法
string cultureName = "es-US";
var locale = new Java.Util.Locale(cultureName);
Java.Util.Locale.Default = locale;
var config = new Android.Content.Res.Configuration { Locale = locale };
BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics);
Run Code Online (Sandbox Code Playgroud)
还创建了一个基础活动
在这里寻找答案:
使用 xamarin 和 c# 更改 android 上的cultureinfo
小智 3
您必须在应用程序中设置当前文化。本地化效果非常好。我就是这样做的:
public void SetLocale(CultureInfo ci)
{
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
Run Code Online (Sandbox Code Playgroud)
在这里你可以从设备中获取文化:
public CultureInfo GetCurrentCultureInfo()
{
var netLanguage = "en";
if (NSLocale.PreferredLanguages.Length > 0)
{
var pref = NSLocale.PreferredLanguages[0];
netLanguage = iOSToDotnetLanguage(pref);
}
// this gets called a lot - try/catch can be expensive so consider caching or something
CultureInfo ci = null;
try
{
ci = new CultureInfo(netLanguage);
}
catch (CultureNotFoundException e1)
{
}
}
private string iOSToDotnetLanguage(string iOSLanguage)
{
// Testing special cases..
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 PCL 项目,请使用抽象。使用PCL中的接口及其在本机项目中的实现。
您可以在此处查看更多信息: https ://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/localization
| 归档时间: |
|
| 查看次数: |
17568 次 |
| 最近记录: |