2010-09-27 63 views
10

我有一个小麻烦本地化的资源文件,在Windows Phone 7在这里工作是我在做什么:本地化的Windows Phone 7应用程序

  1. 创建一个资源文件,说“Strings.resx” (生成操作:编译)
  2. 创建密钥,说“密押”与空字符串
  3. 的默认值在同一文件夹添加英文资源文件,“一些英文字符串”的值:Strings.en- us.resx(构建操作:嵌入式资源)
  4. 在同一个文件夹中添加一个日文资源文件,其值为“som e日文字符串“:Strings.ja-jp.resx(构建行动:嵌入式资源)

在我的PC Silverlight中,WPF应用程序在我更改Thread.CurrentThread.CurrentCulture时正常工作。但在手机中,我似乎总是获取Strings.resx文件中的值 - 一个空字符串。

我已经尝试过使用设计器生成的代码并手工连接资源管理器,它似乎并不重要。这里是我的代码:

  Type t = typeof(Strings); 

      _resourceManager = new ResourceManager(
       t.Namespace + "." + t.Name, 
       t.Assembly); 

      _resourceManager.GetString("TestKey"); 

告诉我手机支持本地化资源......;>我在做什么错了?谢谢!

更新:感谢Olivier转发链接。我也看到了这一点,但错过了重要的一步。我没有将“SupportedCultures”节点添加到我的csproj中。做出了所有的不同 - 希望别人不会像我一样两个小时试图弄清楚这一点。

<SupportedCultures>de-DE;es-ES;</SupportedCultures> 
+1

对'SupportedCultures'属性+1。令人惊讶的是,它没有通过应用程序属性在Visual Studio中公开。 – si618 2011-05-27 02:09:40

回答

4

我写了一篇博客,提供链接到一堆Globalization/Localization guides for WP7.有一个Windows Phone 7 in 7 Training video,帮助我了解的基础知识。经过简单地学习如何做数据绑定的问题,它是:

MSDN文章显示您的文件和如何 设置创建 LocalizedStrings类,但他们随后 假设你知道如何使用 数据绑定类。 Visual Studio的 2010和Silverlight处理数据 结合不同于的WinForms和 它会变得更加混乱,因为XAML 也有它的 资源是不同的,则 .NET资源,我们刚刚创建自己的定义。 Silverlight中还使用术语 资源指使用 “内容”的生成操作文件,因为 这些文件被包裹成类似文件如何与“资源”的 生成操作的 .xap文件得到嵌入到.Dll程序集中的 (例如: 从内容加载图像或 资源文件)。我发现使用Text =“{Binding Path = resourceFile”而不是 。资源名称, 来源= {StaticResource的 Localizedresources}}” XAML语法,它 是更容易使用以下步骤:

  1. 在Visual Studio设计,打开您的主XAML页面(通常MainPage.xaml中)

  2. 打开了的PhoneApplicationPage的属性和设置 的DataContext是 Application.Resources - > LocalizedStrings注意:如果你已经 使用的是DataContext对象,然后。您应该将 LocalizedStrings类整合到该 对象中,以便它具有本地化 支持。

  3. 一旦页面的DataContext的已设置您可以更改数据 在页面上的任何控制由 结合简单的选择属性(例如: 文本,检查等),选择“应用 数据绑定...” ,并将路径 设置为Localizedresources.BtnText或 ,无论所需的 资源值的名称是什么。

+0

这是一个很好的答案,非常感谢您花时间! – will 2010-10-20 19:48:50

相关问题