如何根据Xamarin.Forms xaml中的本地化语言显示选择器项
使用xaml创建选择器的标准方法如下如何根据Xamarin.Forms xaml中的本地化语言显示选择器项,xaml,xamarin,xamarin.forms,picker,itemsource,Xaml,Xamarin,Xamarin.forms,Picker,Itemsource,使用xaml创建选择器的标准方法如下 狒狒 卷尾猴 蓝猴 松鼠猴 金狮狨 吼猴 日本猕猴 我希望使用本地化字符串作为扩展标记(x:Static),而不是使用硬代码文本作为“Baboon”、“capuchinmonkey”等 如何实现这一点?您可以将.resx绑定到ViewModel,然后为选择器绑定ViewModel以实现这一点 创建两个.resx文件,一个是英文文件 <data name="Baboon" xml:space="preserve"> <valu
狒狒
卷尾猴
蓝猴
松鼠猴
金狮狨
吼猴
日本猕猴
我希望使用本地化字符串作为扩展标记(x:Static),而不是使用硬代码文本作为“Baboon”、“capuchinmonkey”等
如何实现这一点?您可以将
.resx
绑定到ViewModel,然后为选择器绑定ViewModel以实现这一点
创建两个.resx
文件,一个是英文文件
<data name="Baboon" xml:space="preserve">
<value>Baboon</value>
</data>
<data name="Blue" xml:space="preserve">
<value>Blue Monkey</value>
</data>
<data name="Capuchin" xml:space="preserve">
<value>Capuchin Monkey</value>
</data>
<data name="Golden" xml:space="preserve">
<value>Golden Lion Tamarin</value>
</data>
<data name="Howler" xml:space="preserve">
<value>Howler Monkey</value>
</data>
<data name="Japanese" xml:space="preserve">
<value>Japanese Monkey</value>
</data>
<data name="Squirrel" xml:space="preserve">
<value>Squirrel Monkey</value>
</data>
创建MonkeyModel类:
public class MonkeyModel
{
public List<Monkey> Monkeys { set; get; }
public MonkeyModel()
{
Monkeys = new List<Monkey>();
Monkeys.Add(new Monkey() { Name = AppResources.Blue });
Monkeys.Add(new Monkey() { Name = AppResources.Capuchin });
Monkeys.Add(new Monkey() { Name = AppResources.Baboon });
Monkeys.Add(new Monkey() { Name = AppResources.Squirrel });
Monkeys.Add(new Monkey() { Name = AppResources.Golden });
Monkeys.Add(new Monkey() { Name = AppResources.Howler });
Monkeys.Add(new Monkey() { Name = AppResources.Japanese });
}
}
西班牙语环境中的效果:
默认语言设置:
您可以将.resx
绑定到ViewModel,然后为选择器绑定ViewModel以实现此目的
创建两个.resx
文件,一个是英文文件
<data name="Baboon" xml:space="preserve">
<value>Baboon</value>
</data>
<data name="Blue" xml:space="preserve">
<value>Blue Monkey</value>
</data>
<data name="Capuchin" xml:space="preserve">
<value>Capuchin Monkey</value>
</data>
<data name="Golden" xml:space="preserve">
<value>Golden Lion Tamarin</value>
</data>
<data name="Howler" xml:space="preserve">
<value>Howler Monkey</value>
</data>
<data name="Japanese" xml:space="preserve">
<value>Japanese Monkey</value>
</data>
<data name="Squirrel" xml:space="preserve">
<value>Squirrel Monkey</value>
</data>
创建MonkeyModel类:
public class MonkeyModel
{
public List<Monkey> Monkeys { set; get; }
public MonkeyModel()
{
Monkeys = new List<Monkey>();
Monkeys.Add(new Monkey() { Name = AppResources.Blue });
Monkeys.Add(new Monkey() { Name = AppResources.Capuchin });
Monkeys.Add(new Monkey() { Name = AppResources.Baboon });
Monkeys.Add(new Monkey() { Name = AppResources.Squirrel });
Monkeys.Add(new Monkey() { Name = AppResources.Golden });
Monkeys.Add(new Monkey() { Name = AppResources.Howler });
Monkeys.Add(new Monkey() { Name = AppResources.Japanese });
}
}
西班牙语环境中的效果:
默认语言设置:
一种解决方法是在实例化视图时直接将项目添加到选择器中
1-)正常本地化资源
2-)
3-)
结果:
一种解决方法是在实例化视图时直接将项目添加到选择器中
1-)正常本地化资源
2-)
3-)
结果:
@Junior Jiang-MSFT的答案几乎涵盖了它,如果您想将其用于视图模型绑定的话
但是,您仍然可以将其直接用于XAML
基本上,您会有2个或更多带有翻译的资源文件,您可以直接在XAML中调用翻译后的字符串,如下所示:
<ContentPage ...
xmlns:resources="clr-namespace:LocalizationDemo.Resx">
<Label Text="{x:Static resources:AppResources.NotesLabel}" />
<Entry Placeholder="{x:Static resources:AppResources.NotesPlaceholder}" />
<Button Text="{x:Static resources:AppResources.AddButton}" />
</ContentPage>
@Junior Jiang-MSFT的答案几乎涵盖了它,如果您想将其用于视图模型绑定的话
但是,您仍然可以将其直接用于XAML
基本上,您会有2个或更多带有翻译的资源文件,您可以直接在XAML中调用翻译后的字符串,如下所示:
<ContentPage ...
xmlns:resources="clr-namespace:LocalizationDemo.Resx">
<Label Text="{x:Static resources:AppResources.NotesLabel}" />
<Entry Placeholder="{x:Static resources:AppResources.NotesPlaceholder}" />
<Button Text="{x:Static resources:AppResources.AddButton}" />
</ContentPage>
非常感谢您的帮助,这很有意义。在阅读你的答案之前,我已经用一种简单的方式做到了这一点。我只是在视图实例化时直接将项目(添加默认资源字符串)添加到选择器中。@humbertropolis好的,如果答案有帮助,请记住投票:-)非常感谢您的帮助,这很有意义。在阅读你的答案之前,我已经用一种简单的方式做到了这一点。我只是在实例化视图时直接将项目(添加默认资源字符串)添加到选择器中。@humbertropolis好的,如果答案有帮助,请记住投票支持:-)
MonkeyModel monkeyModel = new MonkeyModel();
picker.ItemsSource = monkeyModel.Monkeys;
<ContentPage ...
xmlns:resources="clr-namespace:LocalizationDemo.Resx">
<Label Text="{x:Static resources:AppResources.NotesLabel}" />
<Entry Placeholder="{x:Static resources:AppResources.NotesPlaceholder}" />
<Button Text="{x:Static resources:AppResources.AddButton}" />
</ContentPage>