C# Xamarin形式的本地化

C# Xamarin形式的本地化,c#,xamarin.forms,C#,Xamarin.forms,我正在尝试本地化Xamarin表单应用程序。我遵循了此处包含的所有步骤: 但是,在Android Emulator中,更改默认语言后,字符串不会显示,它们仍然是默认语言。在设备上,应用程序甚至不会启动 迄今采取的步骤: 1) 在主启动器中尝试了断点(BP),它跳过了该断点并进入主页 2) 在Localize类上尝试了BP,但没有达到 3) 在设备上尝试BP.OS检查,跳过它 Visual Studio中的资源文件如下所示: AppResources.resx AppResources.fr.re

我正在尝试本地化Xamarin表单应用程序。我遵循了此处包含的所有步骤:

但是,在Android Emulator中,更改默认语言后,字符串不会显示,它们仍然是默认语言。在设备上,应用程序甚至不会启动

迄今采取的步骤: 1) 在主启动器中尝试了断点(BP),它跳过了该断点并进入主页 2) 在Localize类上尝试了BP,但没有达到 3) 在设备上尝试BP.OS检查,跳过它

Visual Studio中的资源文件如下所示:

AppResources.resx
AppResources.fr.resx
AppResources.es.resx
AppResources.resx
AppResources.fr_FR.resx
AppResources.es_ES.resx
以前有人成功本地化过Xamarin表单应用程序吗?我需要一些帮助,因为Visual Studio不会引发任何异常

更新1:

Visual Studio中的资源文件如下所示:

AppResources.resx
AppResources.fr.resx
AppResources.es.resx
AppResources.resx
AppResources.fr_FR.resx
AppResources.es_ES.resx
更新2:

在最近的建议和修改之后,我有以下例外:找不到标记扩展

这是令人不安的,因为标记扩展类就在那里

如果翻译后的字符串在您的Android版本中起作用 但不是在调试时,右键单击Android项目并选择 选项>构建>Android构建并确保快速组装 部署未勾选。此选项会导致加载问题 如果您正在测试本地化应用程序,则不应使用资源和

已解决:

问题在于延期的声明。在PCL项目中,发生了以下情况:

a) TranslateExtension类位于名为Pages的子文件夹中

b) 最初的声明是

xmlns:languages="clr-namespace:MyApp;assembly=MyApp"
c) 以下声明解决了这个问题:

xmlns:languages="clr-namespace:MyApp.Pages;assembly=MyApp"

以及上述.resx文件的语言代码命名约定

2021更新

所有当前答案不再有效!您需要添加资源。右键单击您的xamarin表单项目(不是xamarin android或ios)=>转到项目属性==>资源==>添加资源

这将创建一个“属性”文件夹和一个resources.resx文件,如果需要,可以删除该文件

然后按照创建AppResources.resx和其他语言文件(例如阿拉伯语的AppResources.ar.resx文件)的步骤进行操作。所有这些文件必须位于属性文件夹中

然后,在XAML页面中,将名称空间声明为:

xmlns:res="clr-namespace:YourProject.Properties"
然后简单地使用:

<Label Text="{x:Static res:AppResources.Address}" >

这将根据设备使用的语言使用相应的语言文件。如果不支持该语言,它将使用defulat文件(AppResources.res)


菲恩!!!浪费了一个小时来解决这个问题

在更改设备语言后,是否检查了区域设置是否真的发生了更改?如下所示:
var lang=Resources.Configuration.Locale;//例如,“es_es”
参考Hello Kurt,是的,我做了,结果仍然相同。我将用这个更新问题。由于您使用的是模拟器,我假设您使用的是调试版本?如果选中该页面,则在调试模式下不支持本地化。同时,在更改设备语言后,我认为您需要完全重新启动应用程序(首先完全关闭,然后重新打开)。快速部署不被勾选。然而现在看来,VS不会碰到我设置的任何断点。编辑:修复了调试器,区域性正确返回,但是引发的异常是找不到标记扩展。