WP7中非文本资源(图片、音频等)的本地化

关键字:WP7本地化;图片本地化;

【很奇怪编辑的时候明明有图的,发表了之后全没了,而且没有任何提示。貌似CSDN现在不支持直接复制图片,但是好歹提示一下呀!现已经补全所有图!】

今天接触了一下对WP7应用程序进行本地化的方法。网上有关文本资源本地化的帖子非常多,也很有用。但是在我想要对应用程序中的图片资源进行本地化操作的时候却遇到了问题。

具体问题如下:

我试图在资源文件AppResources.resx中上面的3个选项卡中,选择第一个下拉菜单中的“图像”(见下面左图),再将我想要进行本地化的图片拖放进去。AppResources.resx默认处理英文的文本和图片(本文件的“图像”类目下放的是英文的图,见下面中图),我另外新建了AppResources.zh-CN.resx资源文件用来存放中文的文本和图片(本文件的“图像”类目下放的是中文的图,见下面右图)。

     

此时问题出现了:AppResources.Designer.cs中自动生成了下面的一段代码(其中的help是),且提示错误:

命名空间“System”中不存在类型或命名空间名称“Drawing”。是否缺少程序集引用?



经查证,WP7中是不存在System.Drawing这样的命名空间的(这个问题非常困扰我,既然WP7中根本不存在这样的东西,为何自动生成的代码中还会出现它们?渴求大神告知!)。

那么此时应该如何进行图片的本地化呢?

经过摸索实践,我总结出了如下的方法,写出来与大家分享。该方法不仅适用于对图片的本地化,对音频、视频等非文本资源同样适用!


核心思想是:巧妙利用这些文件的名称!将文件名当做字符串来完成本地化的操作。

下面给出对上面的”help“和”帮助“两个图进行本地化的例子。至于其他的细节如:资源文件resx编辑完毕后要先卸载项目,再编辑.csproj添加想要支持的语言,最后重新加载项目等细节不再赘述,可以参考网上已有的文章。


1. 分别在AppResources.resx和AppResources.zh-CN.resx两个资源文件中,增加Name为Image,Value分别为/Image/help.png和/Image/help-ch.png的值。

PS:这里我把help.png和help-ch.png两个图片文件放在了根目录下面的Image文件夹中(下左图)。亲可根据自己的实际情况进行修改并实践。

   


2. 在MainPage.xaml页面中随意放置一个Image控件,对应的xaml代码如下:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Image Height="102" Source="{Binding Path=AppResources.Image, Source={StaticResource LocalizedStrings}}" HorizontalAlignment="Left" Margin="105,141,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="246" />
</Grid>

特别留意Source属性的写法,其实与文本资源本地化是一样一样的,但是要强调的是:第1步骤中的Value值,必须得是图片文件存放位置的完整相对路径!

OK,到此位置就可以运行程序看效果了。由于我的模拟器已经选择了中文语言,因此直接运行显示的是中文的图(下左图);修改语言选项为English,重启模拟器(下中图),再次运行程序,完美实现本地化(下右图)!

       


怎么样,是不是很简单,音频视频也一样哦亲,只需要对文件名做文章即可!祝实践成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值