У меня проблема с локализацией приложения Silverlight с использованием ресурсов. Я хотел сделать свой многоязычный механизм кроссплатформенным, поэтому я поместил все локализуемые ресурсы в проект типа Portable Class Library. В этом проекте я создал два файла ресурсов Localization.resx и Localization.en.resx и установил "модификатор доступа" на 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(Expression> selector)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(GetPropertyNameFromExpression(selector)));
}
}
public static string GetPropertyNameFromExpression(Expression> 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
}
На следующем этапе я изменил файл Silverlight csproj и добавил культуру "en" к поддерживаемым типам
en
Далее в ресурсах приложения я создал экземпляр класса LocalizationProxy
Я также изменил "Neutral Language" в Assembly Information на "Polish" - это должен быть язык приложения по умолчанию. На последнем этапе я добавил некоторые значения из вида в ресурсы
К сожалению, несмотря на то, что Thread.CurrentThread.CurrentCulture имеет значение "pl-PL", мое приложение все еще на английском языке. Однако если я использую тот же код в приложении Windows Phone, все работает нормально - я даже могу менять язык приложения во время выполнения. Есть ли разница в локализации приложения Silverlight и приложения Windows Phone?
Вот мое приложение
http://www.fileserve.com/file/TkQkAhV/LocalizationSolution.rar
Как я уже говорил, локализация в Windows Phone работает нормально, но в приложении Silverlight ярлыки не переводятся