Локализация уровня приложения в wp7

Мне нужно сделать поддержку нескольких языков для моего приложения в wp7. Пользователь может установить язык внутри приложения. Поэтому всякий раз, когда язык меняется, мне нужно изменить используемые строки. Как поддерживать файлы ресурсов и лучше выполнять локализацию приложения? Нет никакой зависимости от языка дисплея устройства.


person Shilpa    schedule 07.10.2013    source источник


Ответы (1)


В сценарии локализации по умолчанию у вас есть класс Localized со свойством для файла ресурсов. Вы привязываетесь в .xaml к свойствам этого свойства. То есть для ваших файлов Labels.resx у вас есть:

public class Localized
{
    private static Labels labels = new Labels();

    public Labels Labels { get { return labels; } }
}

Чтобы сохранить ваши .xamls, простое изменение будет выглядеть примерно так:

public class Localized : INotifyPropertyChanged
{
    public ILabels Labels { ... }
}

// defines all the keys that you use in your .resx files
public interface ILabels
{
    string MainWindowHeader { get; }
    string OkLabel { get; }
    ...
}

EnglishLabels : ILabels;
GermanLabels: ILabels;

ILabels определяет все доступные тексты. При переключении языка Localized устанавливает новое значение свойства Labels и вызывает PropertyChanged.

Однако у меня есть сомнения, что такое приложение пройдет сертификацию. Зачем кому-то вообще нужно переключение языка в приложении вместо поведения по умолчанию?

person lisp    schedule 07.10.2013
comment
Не могли бы вы рассказать, как использовать ILabels? Вероятно, в некоторых образцах кодов. - person Shilpa; 08.10.2013
comment
@Shilpa некоторые правки. Это решение основано на стандартном способе локализации Windows Phone. Если вы спрашиваете, как это делается, см., например, msdn.microsoft.com/en-us/library/windowsphone/develop/ . Команде ChangeLanguageCommand нужно просто получить ссылку на Localized из App ResourceDictionary. - person lisp; 08.10.2013
comment
Правильная ли локализация на уровне устройства по умолчанию? Мне нужна локализация приложения. В любом случае спасибо. - person Shilpa; 09.10.2013
comment
@SHILPA это решение для локализации в приложении, но оно основано на способе локализации по умолчанию, потому что я предполагаю, что когда вы выбираете нестандартный способ, вы уже знаете основной. - person lisp; 09.10.2013