Xamarin.Forms地方化(Localization)

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文件的文件夹。至此,系统就会根据当前地区选择对应的文件加载内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值