Xamarin.ios 表单:如何管理共享弹出窗口的本地化?

Xamarin.ios 表单:如何管理共享弹出窗口的本地化?,xamarin.ios,localization,dialog,xamarin.forms,share,Xamarin.ios,Localization,Dialog,Xamarin.forms,Share,我想在我的Xamarin.Forms项目中使用,但我不知道如何管理本地化。我有Android和iPhone设备,都是用法语配置的 在Android上,共享弹出窗口以法语显示。 但在iOS上,共享弹出窗口以英语显示 我试图在Info.plist中指定语言: <key>CFBundleDevelopmentRegion</key> <string>fr</string> <key>CFBundleLocalizations</ke

我想在我的Xamarin.Forms项目中使用,但我不知道如何管理本地化。我有Android和iPhone设备,都是用法语配置的

在Android上,共享弹出窗口以法语显示。 但在iOS上,共享弹出窗口以英语显示

我试图在
Info.plist
中指定语言:

<key>CFBundleDevelopmentRegion</key>
  <string>fr</string>
<key>CFBundleLocalizations</key>
<array>
  <string>fr</string>
</array>
CbundledDevelopmentRegion
fr
cfbundleLocalization

如果我使用其他应用程序(如Safari或Facebook)的共享对话框,该对话框将以法语显示

Safari中“默认”共享对话框的屏幕截图:

你能解释一下吗?

[编辑]重新打开解决方案后,此操作效果良好。
我想这是因为我在VisualStudio之外编辑了
info.plist
:所以可能没有考虑到这个变化

要显示正确的语言,我们需要查询每个平台上的操作系统,以确定用户选择了哪种语言

我们应该做的是使用依赖项服务在Xamarin.Forms应用程序中公开该信息,并为每个平台实现它

这很简单。在PCL中找到
ILocalize.cs
,在Xamarin.iOS中找到
Localize.cs
,并将它们复制到相应的文件夹中。(不要忘记更改类中的命名空间)

应用程序中的代码

public App()
{
    InitializeComponent();
    if (Device.OS == TargetPlatform.iOS || Device.OS == TargetPlatform.Android)
    {
        // determine the correct, supported .NET culture
        var ci = DependencyService.Get<ILocalize>().GetCurrentCultureInfo();
        DependencyService.Get<ILocalize>().SetLocale(ci); // set the Thread for locale-aware methods
    }
    MainPage = new FormsApp.MainPage();
}
public应用程序()
{
初始化组件();
if(Device.OS==TargetPlatform.iOS | | Device.OS==TargetPlatform.Android)
{
//确定正确的、受支持的.NET区域性
var ci=DependencyService.Get().GetCurrentCultureInfo();
DependencyService.Get().SetLocale(ci);//为区域设置感知方法设置线程
}
MainPage=新表单sp.MainPage();
}
更多详细信息请参阅

我的测试:


您是用iOS设备还是模拟器进行测试?我已经在真实设备上进行了iOS和AndroidThank@Cole Xia的测试。我复制了
ILocalize.cs
Localize.cs
。我还复制了
App.cs
的第18-25行。但我在创业时遇到了一个例外。我忘了什么吗?@Gold.strike什么是异常信息?它是
System.NullReferenceException:Object reference没有设置为对象的实例
。我也需要添加资源文件吗?@Gold.strike不需要。资源文件用于定义不同语言之间的字符串。