我在获取本地化资源文件在 Windows Phone 7 上运行时遇到了一些问题。这就是我正在做的:

  1. 创建一个资源文件,例如“Strings.resx”(构建操作:编译)
  2. 创建一个键,例如“TestKey”,默认值为空字符串
  3. 在同一文件夹中添加一个值为“some English string”的英文资源文件:Strings.en-us.resx(构建操作:嵌入式资源)
  4. 在同一文件夹中添加一个值为“some Japanese string”的日语资源文件:Strings.ja-jp.resx(构建操作:嵌入式资源)

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

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

            Type t = typeof(Strings);

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

            _resourceManager.GetString("TestKey");

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

更新:感谢奥利维尔转发链接。我也看到了这一点,但错过了重要的一步。我没有将“SupportedCultures”节点添加到我的 csproj 中。一切都变得不同了——希望其他人不会像我一样花两个小时试图解决这个问题。

<SupportedCultures>de-DE;es-ES;</SupportedCultures>
有帮助吗?

解决方案

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

MSDN 文章介绍了如何 设置文件并创建 LocalizedStrings 类,但它们随后 假设您知道如何使用它 用于数据绑定的类。Visual Studio的 2010 和 Silverlight 处理数据 与 Winforms 的绑定方式不同,并且 自 XAML 以来,它变得更加混乱 也有它自己的定义 与 我们刚刚创建的 .NET 资源。Silverlight 也使用术语 用于引用使用 “content”的构建操作,如 这些文件被包装到 .XAP 文件类似于 how 文件 “Resource”get的构建操作 嵌入到 .Dll 程序集(例如:从内容加载图像或 资源文件)。我发现相反 使用 Text=“{绑定 路径 = resourceFile.resourceName, 源={StaticResource Localizedresources }}“ XAML 语法 使用以下步骤更容易:

  1. 在Visual Studio Designer中打开主XAML页面(通常是mainpage.xaml)

  2. 打开 PhoneApplicationPage 的属性,并将 DataContext 设置为 Application.Resources –> LocalizedStrings。笔记:如果您已经 使用 DataContext 对象,则 您应该集成 LocalizedStrings 类添加到 对象,以便它具有本地化功能 支持。

  3. 设置页面的 DataContext 后,您可以更改数据 绑定页面上的任何控件 只需选择属性(例如:文本、选中等),选择“应用” 数据绑定...“,并设置路径 到 Localizedresources.BtnText 或 无论所需的名称是什么 资源值是。

其他提示

当然,手机上也支持本地化资源:

如何:为 Windows Phone 构建本地化应用程序

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top