Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [SL] сменить язык интерфейса на лету 
:(
    Опции темы
dazy
Дата 5.2.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Сделал глобализацию приложения по опыту: http://jachman.wordpress.com/2009/06/10/ho...-the-smart-way/
С небольшими правками, но в целом, то же самое.

Вопрос, как реализовать смену интерфейса на лету?

Люди, если есть опыт переключения языка интерфейса подскажите, как это сделать. Возможно опыт WPF тоже подойдет, но не уверен.

Везде советуют INotifyPropertyChanged реализовать. И примеры даже есть. Но что то не получается у меня, не переключается язык.

Любая помощь пригодиться.
PM MAIL   Вверх
tol05
Дата 6.2.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



я бы сделал так


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
dazy
Дата 6.2.2010, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Я так понял, автор хранит слабые ссылки на все объекты которые запрашивали локализированные строки. 
А потом по сигналу проходит по списку со слабыми ссылками и если те живы, заставляет их взять новый контент.
Что-то сильно прям, наворочено так.

Боюсь не смогу это в сильверлайт засунуть.  Я тут INotifyPropertyChanged осилить не могу, а этот подход, вообще монстрообразный.

Может есть способ, в силверлайте заставить все контролы сделать рефреш? Чтобы они в принудительном порядке запросили новое значение контента? 
  
PM MAIL   Вверх
tol05
Дата 7.2.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



Да нет, внутри все гораздо проще. )
Просто все свойства контролов, подлежащие локализации (текстовые, скажем) соединены через биндинг с определенным объектом. Объект при стартапе считывает из ресурсов значения, а контролы через биндинг их вытягивают. Каждый - свое значение.

При поступлении команды сменить локализацию объект инициализирует себя значениями новых ресурсов, при этом контролы через биндинги подтягивают себе эти новые значения.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
dazy
Дата 7.2.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Цитата

при этом контролы через биндинги подтягивают себе эти новые значения. 


C вот этой вот частью проблема.  Все остальное вроде работает, а как заставить контролы забрать новое значение - не могу понять.
PM MAIL   Вверх
Partizan
Дата 8.2.2010, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



а вариант с хранением всех строк в определённом ResourceDictionary и последующим референсом через DynamicResource не прокатывает для SL?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
dazy
Дата 8.2.2010, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Как хранить строки это не принципиально. Можно хоть в текстовом файле, хоть в БД. У меня хранятся в ресурсах, но на самом деле это не так важно.

Есть главное приложение, и ряд окошек ChildWindow. Когда делаю смену языка, то главное окно не рефрешится. Но вот если вызвать дочернее окно, то оно уже будет на другом языке. Т.е. не порядок. 
После того как закрыли приложение и снова запустили - главное окно тоже на новом языке. 

Тут проблема не столько с локализацией сколько с тем чтобы принудительно заставить контролы главного окна запросить новые данные локализованных строк. 

Пока же приходится при смене языка делать рестарт приложения. 
PM MAIL   Вверх
Partizan
Дата 8.2.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



dazy, ну вот я и спрашиваю - чем DynamicResource не подходит? в WPF на лету меняется всё. стоит только подменить ResourceDictionary.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
dazy
Дата 8.2.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



DynamicResource  в силверлайте нет. Есть реализация функционала через INotifyPropertyChanged. С ним у меня как раз проблемы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.