本地化Windows Phone 7应用程序

wil*_*ill 10 windows-phone-7

我在使用本地化的资源文件在Windows Phone 7上工作时遇到了一些麻烦.这就是我正在做的事情:

  1. 创建一个资源文件,比如说"Strings.resx"(Build Action:Compile)
  2. 创建一个密钥,说"TestKey",默认值为空字符串
  3. 在同一文件夹中添加一个英文资源文件,其值为"some English string":Strings.en-us.resx(Build Action:Embedded Resource)
  4. 在同一文件夹中添加日语资源文件,其值为"some japanese string":Strings.ja-jp.resx(Build Action:Embedded Resource)

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

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

            Type t = typeof(Strings);

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

            _resourceManager.GetString("TestKey");
Run Code Online (Sandbox Code Playgroud)

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

更新:感谢Olivier转发链接.我也看到了这一点,但错过了一个重要的步骤.我没有将"SupportedCultures"节点添加到我的csproj中.完全不同 - 希望别人不要像我一样试图解决这个问题.

<SupportedCultures>de-DE;es-ES;</SupportedCultures>
Run Code Online (Sandbox Code Playgroud)

Gre*_*ray 4

我写了一篇博客文章,提供了一堆WP7 全球化/本地化指南的链接。有一个Windows Phone 7 in 7 培训视频帮助我了解基础知识。之后,只需学习如何进行数据绑定即可:

\n\n
\n

MSDN 文章向您展示了如何设置文件并创建 LocalizedStrings 类,但他们随后假定您知道如何使用该类进行数据绑定。Visual Studio\n 2010 和 Silverlight 处理数据\n 绑定的方式与 Winforms 不同,\n 这会变得更加混乱,因为 XAML\n 也有 \n 自己的\n 资源定义,这些资源与\n 不同\n我们刚刚创建的 .NET 资源。\n Silverlight 还使用术语\n 资源来指代使用“Content\xe2\x80\x9d 的构建操作”的文件,因为\n 这些文件被打包到\ .XAP 文件类似于“资源\xe2\x80\x9d 构建操作”的文件如何嵌入到 .Dll 程序集中(例如:\n 从内容或资源文件加载图像)。我发现,使用 Text="{Binding\n Path=resourceFile.resourceName,\n Source={StaticResource\n Localizedresources }}" XAML 语法代替\n,使用以下步骤更容易:

\n\n
    \n
  1. 在 Visual\n Studio 设计器中打开主 XAML 页面(通常是 MainPage.xaml)

  2. \n
  3. 打开 PhoneApplicationPage 的属性并将\n DataContext 设置为\n Application.Resources \xe2\x80\x93>\n LocalizedStrings。注意:如果您已在使用 DataContext 对象,则应将 LocalizedStrings 类集成到该对象中,以便它具有本地化支持。

  4. \n
  5. 设置 Page\xe2\x80\x99s DataContext 后,您只需选择属性(例如:\n 文本、选中等),然后选择 \xe2\,即可更改页面上任何控件的数据\n 绑定。 x80\x9cApply\n 数据绑定\xe2\x80\xa6\xe2\x80\x9d,并将 Path\n 设置为 Localizedresources.BtnText 或\n 所需资源值的名称。

  6. \n
\n
\n