1.创建.Resx文件
可以在解决方案下新建一个文件夹存储所有的.Resx文件,这些文件配置了各个地点的设置。
结构如图所示:
右击文件夹选择新增项,添加resources文件,保存后编辑文件。
页面如下:
这边标注了三个string属性,分别为一个按钮的text,和一个label的text,和一个Entry的PlaceHolder
后续在xaml文件中会将他们一一绑定。
如果把resource文件的Access Modifier设置成public或者internal编译器会自动生成对应访问权限的.cs文件。如果设置成No code generation,则不会生成文件。设置为默认的location的文件应该设置成public。
2.标注默认文化(culture)
比如想默认设置为美国或者中国
在 AssemblyInfo.cs 文件中添加以下代码
using System.Resources;
[assembly:NeutralResourcesLanguage("en-US")]
如果系统找不到对应的语言就会使用默认的us。
3.地方化图片
有一些图片会根据地区文化的不同做出不同的展现,比如国旗,地图等等。
要想实现这种功能,需要在各平台下的Resources/Assets中新建对应文化的文件夹:
如图所示
在xaml中根据路径绑定就好了
<Image WidthRequest="100">
<Image.Source>
<OnPlatform x:TypeArguments="ImageSource">
<On Platform="iOS,Andriod" Value="flag.png"/>
<On Platform="UWP" Value="Assets/Images/flag.png"/>
</OnPlatform>
</Image.Source>
</Image>
因为示例使用的是UWP,所以以UWP为例子。
4.Xaml使用Resoucres
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:resources="clr-namespace:May31th.Resx"
mc:Ignorable="d"
Padding="10,40,10,10"
Title="Localized XAML Page"
x:Class="May31th.Views.LocalizedPage">
<ContentPage.Content>
<StackLayout>
<Image WidthRequest="100">
<Image.Source>
<OnPlatform x:TypeArguments="ImageSource">
<On Platform="iOS,Andriod" Value="flag.png"/>
<On Platform="UWP" Value="Assets/Images/flag.png"/>
</OnPlatform>
</Image.Source>
</Image>
<Label Text="{x:Static resources:AppResources.NotesLabel}"
WidthRequest="300"
HorizontalOptions="CenterAndExpand"
VerticalOptions="Start"/>
<Entry Placeholder="{x:Static resources:AppResources.NotesPlaceholder }"
WidthRequest="300"
HorizontalOptions="CenterAndExpand"
VerticalOptions="Start"/>
<Button Text="{x:Static resources:AppResources.AddButton}"
WidthRequest="300"
HorizontalOptions="CenterAndExpand"
VerticalOptions="Start"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Resources即为存储.resx文件的文件夹。至此,系统就会根据当前地区选择对应的文件加载内容。