【问题标题】:Localizing Windows Phone 7 App本地化 Windows Phone 7 应用程序
【发布时间】:2011-11-16 07:04:44
【问题描述】:

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

  1. 创建一个资源文件,比如“Strings.resx”(构建操作:编译)
  2. 创建一个键,比如“TestKey”,默认值为空字符串
  3. 在同一文件夹中添加一个值为“some English string”的英文资源文件:Strings.en-us.resx (Build Action: Embedded Resource)
  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");

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

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

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

【问题讨论】:

  • +1 表示SupportedCultures 属性。令人惊讶的是,它没有通过应用程序属性在 Visual Studio 中公开。

标签: windows-phone-7


【解决方案1】:

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

How to: Build a Localized Application for Windows Phone

【讨论】:

    【解决方案2】:

    我写了一篇博文,提供了指向一堆Globalization / Localization guides for WP7. 的链接。有一个Windows Phone 7 in 7 Training video 帮助我了解了基础知识。之后,只需学习如何进行数据绑定:

    MSDN 文章向您展示了如何 设置文件并创建 LocalizedStrings 类,但他们随后 假设您知道如何使用它 数据绑定类。视觉工作室 2010 和 Silverlight 处理数据 与 Winforms 不同的绑定方式,以及 自 XAML 以来,它变得更加混乱 也有自己的定义 与之前不同的资源 我们刚刚创建的 .NET 资源。 Silverlight 也使用该术语 引用使用的文件的资源 “内容”的构建动作,如 这些文件被包装到 .XAP 文件类似于如何使用文件 “资源”的构建动作得到 嵌入到 .Dll 程序集中(例如: 从内容加载图像或 资源文件)。我发现相反 使用 Text="{Binding 路径=resourceFile.resourceName, 源={静态资源 Localizedresources }}" XAML 语法吧 更容易使用以下步骤:

    1. 在 Visual 中打开您的主 XAML 页面(通常是 MainPage.xaml) 工作室设计师

    2. 打开 PhoneApplicationPage 的属性并设置 数据上下文是 应用程序.资源-> 本地化字符串。注意:如果您已经 正在使用 DataContext 对象,然后 你应该整合 LocalizedStrings 类到那个 对象,使其具有本地化 支持。

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

    【讨论】:

    • 这是一个很好的答案,非常感谢您抽出宝贵的时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多