Joh*_*ohn 6 localization silverlight-4.0 windows-phone-7 localizable.strings
我使用资源本地化Silverlight应用程序时遇到问题.我想让我的多语言机制成为跨平台,这就是为什么我将所有可本地化的资源放在Portable Class Library类型的项目中.在这个项目中,我创建了两个资源文件Localization.resx和Localization.en.resx,并在两个文件中将public和"access modifier"设置为public.然后我创建了名为"LocalizationProxy"的代理类,它是一个启用绑定的代理类.
public class LocalizationProxy : INotifyPropertyChanged
{
public Localization LocalizationManager { get; private set; }
public LocalizationProxy()
{
LocalizationManager = new Localization();
}
public void ResetResources()
{
OnPropertyChanged(() => LocalizationManager);
}
#region INotifyPropertyChanged region
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged<T>(Expression<Func<T>> selector)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(GetPropertyNameFromExpression(selector)));
}
}
public static string GetPropertyNameFromExpression<T>(Expression<Func<T>> property)
{
var lambda = (LambdaExpression)property;
MemberExpression memberExpression;
if (lambda.Body is UnaryExpression)
{
var unaryExpression = (UnaryExpression)lambda.Body;
memberExpression = (MemberExpression)unaryExpression.Operand;
}
else
{
memberExpression = (MemberExpression)lambda.Body;
}
return memberExpression.Member.Name;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
在下一步中,我修改了Silverlight csproj文件,并为支持的类型添加了"en"文化
<SupportedCultures>en</SupportedCultures>
Run Code Online (Sandbox Code Playgroud)
此外,在我创建的应用程序资源和LocalizationProxy类的实例中
<Application.Resources>
<Localization:LocalizationProxy x:Key="LocalizationProxy"></Localization:LocalizationProxy>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
我还将汇编信息中的"中性语言"改为"波兰语" - 这应该是默认的应用语言.在最后一步中,我从视图到资源中创建了一些值
<TextBlock TextWrapping="Wrap" x:Name="PageTitle" Text="{Binding Source={StaticResource LocalizationProxy},Path=LocalizationManager.Title,Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
不幸的是,尽管Thread.CurrentThread.CurrentCulture是"pl-PL",我的应用程序仍然是英语.但是如果我在Windows Phone应用程序中使用相同的代码一切正常 - 我甚至可以在运行时更改应用程序语言.本地化Silverlight应用程序和本地化Windows Phone应用程序有什么区别吗?
这是我的申请
http://www.fileserve.com/file/TkQkAhV/LocalizationSolution.rar
正如我之前提到的,Windows Phone中的本地化工作正常,但在Silverlight中,应用程序标签不会被翻译
归档时间: |
|
查看次数: |
690 次 |
最近记录: |