Локализация Silverlight приложения с помощью ресурсов

У меня проблема с локализацией приложения 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 ярлыки не переводятся

6
задан John 20 January 2012 в 08:19
поделиться