WP7本地化不起作用

时间:2011-10-01 12:59:52

标签: windows-phone-7 localization

我正在尝试对我的应用进行简单的本地化,使其支持英语(默认)和丹麦语。 我已经按照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; } }
}

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

4 个答案:

答案 0 :(得分:4)

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

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

<强>更新

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

答案 1 :(得分:1)

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

.csproj

<SupportedCultures>en;es;</SupportedCultures>&lt; - 我对语言过于具体了

File names

我也有AppResources-es.resx&lt; - 而不是.es

在我的 GamePage.xaml Binding

我犯了错误,在源和路径中都有LocalisedStrings

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

App.xaml

希望在其中一个步骤中出现错误,就像我的情况一样。

答案 2 :(得分:0)

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

因此,如果你删除它(或在此处设置你的文化),它可能会有效。

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

答案 3 :(得分:-1)

您必须更改csproj文件,如下面的示例

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