Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Многоязыковая поддержка (http://www.flasher.ru/forum/showthread.php?t=96628)

student-uni 04.06.2007 01:33

Многоязыковая поддержка
 
Готового решения не прошу
Подскажите лишь каков принцип и какие есть инструменты?
Вот например в АСП.НЕТ 2.0 (простите за сравнение)
есть т.н. локализация, можно создавать файлы ресурсов для каждого
языка и при выборе соответствующей культуры к элементам управления
будет прицеплено слово на правильном языке.
Например два текстбокса Имя и Фамилия, я говорю этим текстбоксам брать значение свойства текст из сотответствующего файла ресурсов
создаю к примеру два файла ресурсов Русский и английский
в руском указываю ТекстБоксу1 "Имя", ТекстБоксу2 "Фамилия"
а в Английском соотвественно "Vorname" и "Name"
и при переключении культур у меня будут правильные надписи.

В АС я видел такое решение:
Создаются массивы для каждого элемента
напр для текстбокса Фамилия :

myArrayFamilia[0]="Фамилия"
myArrayFamilia[1]="Name"
myArrayFamilia[2]="Призвыще" ;)
... ну и так далее

и в зависимости от культуры берётся
соответствующий элемент, так например для
русского берётся элемент 0 во всех массивах
и присваивается
в свойство текст текстбокса Фамилия

Вопрос:
есть ли какое либо объектно ориентирванное решение
Форма образец - не важно на каком языке
а Формы с выбранным языком наследуют от неё

Спасибо.

miramax 04.06.2007 02:18

незнаю как такая проблема решается на других платформах...
Если мне нужна мультиязычность, я юзаю свой класс MultilanguageProperty.
Думаю из примера кода будет ясна идея:
Код:

var  txt:TextField = new TextField();
addChild(txt);
//    есть некий объект txt, в нём есть строковое свойство text
//    это свойство должно иметь
//    разные значения в зависимости от настроек языка
//    создадим некий объект, который будет
//    контролировать переменную txt.text

var lang:MultilanguageProperty = new MultilanguageProperty(txt, 'text');

//    добавляем переводы для каждого языка
land.setTranslation('russian', 'кнопка');
land.setTranslation('english', 'button');
land.setTranslation('superRussian', 'баттон !');

//      статическое свойство MultilanguageProperty.language, меняет 
//      перевод свойств во всех объектах  MultilanguageProperty

MultilanguageProperty.language = 'russian'; 
// объект lang исполняет код txt.text = 'кнопка';

MultilanguageProperty.language = 'english';
// объект lang исполняет код txt.text = 'button';


DarkLight 04.06.2007 02:38

Хм...а не удобнее ли сделать так:
1. Сделать один класс и регистрировать на него все объекты
2. Передавать не каждый перевод в отдельности, а дефолтный перевод+ объект типа {english:'english', russian:'русский'}
а затем ставить язык всем элементам выражением вида LangManager.language = 'russian' ?

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

__i 04.06.2007 13:12

http://www.flasher.ru/forum/showthread.php?t=95370


Часовой пояс GMT +4, время: 08:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.