我正在尝试对我的应用进行简单的本地化,使其支持英语(默认)和丹麦语。 我已经按照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; } }
}
这一切都适用于英语字符串,但是当我处于丹麦模式时它们不会改变。我在这里错过了什么? :(
答案 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; - 我对语言过于具体了
我也有AppResources-es.resx
&lt; - 而不是.es
在我的 GamePage.xaml 中
我犯了错误,在源和路径中都有LocalisedStrings
。
在 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