在Xamarin中使用资源文件用于字符串

时间:2017-11-22 14:08:51

标签: xamarin xamarin.forms resources resx

我想为我的Xamarin应用程序的所有字符串使用资源文件 - 因为我想要所有3个平台(iOS,Android,UWP)使用相同的字符串,我在Xamarin-Forms项目中创建了一个新的resx文件。但Visual Studio未按预期处理该文件...不会构建资源的匹配.cs文件。但这有必要吗?

我尝试了几种解决方案:

var resourceLoader = new ResourceLoader();
label1.Text = resourceLoader.GetString("String1");

以及

ResourceManager rm =
    new ResourceManager("MyApp.Resources1", typeof(MainPage).GetTypeInfo().Assembly);
label1.Text = rm.GetString("String1");

但是在运行时(UWP)我得到了错误:

Could not find any resources appropriate for the specified culture or the neutral culture.

这应该只是第一步 - 后来我希望将XAML中的资源字符串直接绑定到控件。

但我认为,我的方式完全错误......并且没有平台独立的方式来使用字符串资源......?

2 个答案:

答案 0 :(得分:1)

您需要修改资源上的访问级别为公共

Access Modifier

然后你可以使用

var s1 = Resource1.ResourceManager.GetString("String1");

任何项目中的任何地方

答案 1 :(得分:0)

EvZ指出了正确的答案 - Localizing Xamarin.Forms Apps with RESX Resource Files

我测试了Android示例项目,它在Xamarin Live Player 1.2.80上崩溃了。但是,代码在物理Android设备上运行良好。

要添加shared-RESX文件,项目必须是PCL或.NET Standard。 SAP项目仅添加RESW文件。