本地化Xamarin表格

时间:2015-12-24 12:31:35

标签: c# xamarin.forms

我正在尝试本地化Xamarin Forms应用。我按照此处包含的所有步骤操作:https://developer.xamarin.com/guides/xamarin-forms/localization/

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

目前采取的步骤: 1)在主启动器中尝试断点(BP),它跳过BP并进入主页面 2)在Localize类上尝试了BP,它没有达到它 3)在Device.OS上检查BP,跳过它。

Visual Studio中的资源文件如下:

AppResources.resx
AppResources.fr_FR.resx
AppResources.es_ES.resx

以前有人成功地将Xamarin Forms应用程序本地化了吗?我需要一些帮助,因为Visual Studio不会引发任何异常......

更新1:

Visual Studio中的资源文件如下:

RewriteCond %{HTTP_HOST} ^order.mywebsite.com/location

更新2:

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

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

3 个答案:

答案 0 :(得分:1)

  

Doesn't work in DEBUG mode (Android only)

     

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

答案 1 :(得分:0)

解决:

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

a)TranslateExtension类位于名为Pages

的子文件夹中

b)初始声明是

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

c)以下声明解决了这个问题:

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

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

答案 2 :(得分:0)

2021 年更新

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

这将创建一个“属性”文件夹和一个 resources.resx 文件,您可以根据需要将其删除。

然后按照 official microsoft documentation 创建 AppResources.resx 和其他语言文件(例如阿拉伯语的 AppResources.ar.resx 文件)。所有这些文件必须在属性文件夹中。

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

xmlns:res="clr-namespace:YourProject.Properties"

然后只需使用:

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

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

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