Xamarin.Forms: 如何管理分享弹窗的本地化?

Xamarin.Forms: how to manage localization of the Share pop-up?

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

在 Android 上,共享弹出窗口可以很好地以法语显示。 但是在 iOS 上,共享弹出窗口显示为英文。

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

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

但这并没有改变任何东西。

SharePlugin共享对话框的屏幕截图:

如果我使用其他应用程序(如 Safari 或 Facebook)的“共享”对话框,该对话框会以法语很好地显示。

来自 Safari"default" 共享对话框 的屏幕截图:

你能解释一下吗?

[Edit] 重新打开解决方案后,效果很好。 我认为那是因为我在 Visual Studio 之外编辑了 info.plist:所以可能没有考虑到更改。

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

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

Here 官方简单。在PCL中找到ILocalize.cs,在Xamarin.iOS中找到Localize.cs,复制到相应的文件夹中。(不要忘记更改class中的命名空间)

应用程序中的代码

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();
}

更多细节参考here

我的测试: