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