【问题标题】:WP7 localization does not workWP7 本地化不起作用
【发布时间】:2011-10-01 12:59:52
【问题描述】:

我正在尝试对我的应用进行简单的本地化,使其支持英语(默认)和丹麦语。 我遵循了 MS 教程,并且查看了一些示例,但由于某种原因,当我选择丹麦语作为模拟器语言时,模拟器没有显示丹麦语版本。

这是我所做的:

添加了支持的文化:dk-DK;

将程序集信息更改为默认使用“英语”。

将资源添加到 app.xaml:

<Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:LåneRegnskab" x:Key="LocalizedStrings" />
</Application.Resources>

添加了“AppResources.resx”和“AppResources.dk-DK.resx”以使用字符串进行项目。

使用我写的字符串:

"{Binding Path=LocalizedResources.Title, Source={StaticResource LocalizedStrings}}" 

LocalizedStrings 类:

public class LocalizedStrings
{
    public LocalizedStrings()
    {
    }
    private static AppResources localizedResources = new AppResources();
    public AppResources LocalizedResources { get { return localizedResources; } }
}

这一切都适用于英文字符串,但当我处于丹麦模式时它们不会改变。我在这里想念什么? :(

【问题讨论】:

  • 您使用的是模拟器还是真机?我注意到并非所有设备都可以切换到所有语言。
  • *模拟器(模拟是别的东西)

标签: windows-phone-7 localization


【解决方案1】:

您的代码没有明显错误。尝试在App.xaml.cs 中使用InitializePhoneApplication 方法中的代码强制改变文化。

private void InitializePhoneApplication()
{
    Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

更新

还要确保将 ProjectName.csproj 文件中的 SupportedCultures 设置为支持两种语言,如下所示:&lt;SupportedCultures&gt;en;da-DK&lt;/SupportedCultures&gt;

【讨论】:

  • 验证输出文件夹中是否存在da-DK 文件夹。
  • 嗯在我的 bin -> 调试和 bin -> 发布那里有一个 dk-DK 文件夹是的。里面是一些广告的 dll:“Microsoft.Advertising.Mobile.resources”。还有所有其他语言的文件夹,都以该文件作为唯一内容。
  • 它意味着包含一个&lt;ProjectName&gt;.appresources.dll 文件。所以这表明您的资源文件没有正确编译。这也可以解释为什么强迫一种文化没有效果。
  • 验证资源文件的编译设置如下所示:dl.dropbox.com/u/1744224/vs_danish_resources.png
  • 它仍然没有正确编译你的AppResources.da-DK.resx。默认(英文)资源已正确编译。验证AppResources.da-DK.Designer.cs 是否为(它根本不应该包含任何代码)
【解决方案2】:

感谢克劳斯,我解决了我的问题(我似乎犯了所有的错误)但这里的所有设置都对我有用。 我支持英语和西班牙语,并更改模拟器的区域以使其正常工作。

.csproj

&lt;SupportedCultures&gt;en;es;&lt;/SupportedCultures&gt;

我也有AppResources-es.resx

在我的 GamePage.xaml

我在这里犯了一个错误,在源代码和路径中都有LocalisedStrings

App.xaml 中我没有内联添加命名空间,但其他方面相同。

希望这是其中一个步骤的错误,就像我的情况一样。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我刚刚找到了解决方案。在 csproj 文件中,节点是默认定义的,但我没有注意到,我在第一行创建了另一个...

    因此,如果您删除它(或在此处设置您的文化),它可能会起作用。

    <SilverlightApplication>true</SilverlightApplication>
    <SupportedCultures>
    </SupportedCultures>
    <XapOutputs>true</XapOutputs>
    

    【讨论】:

      【解决方案4】:

      您必须按照下面的示例更改 csproj 文件

      http://msdn.microsoft.com/en-us/library/dd941931%28v=vs.95%29.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-20
        • 2012-12-11
        • 2012-12-30
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-04
        相关资源
        最近更新 更多