![]() |
Организовать multilanguage
Каким способом лучше организовать мультиязычность во флэше? Думал создать на язык по массиву и при переключении просто менять массив языка, выводя значения на нужном языке. Может есть способы поудобней?
|
Мож просто вынести текст во внешний xml, а потом просто менять путь к нужному xml?
|
А налету планируется язык менять или только при загрузке?
|
Создавайте файлы локализации, при выборе языка грузите нужный и подставляйте нужные значения.
|
налету, хочу сделать где-нибудь в углу кнопочки в виде флагов стран, выбераешь нужный флаг, переинизиализируется сцена с нужным языком
Добавлено через 2 минуты с xml идея тоже ничего, можно даже загнать всё в один файл, один тэг - одна строка, а там уже просто в доп параметрах значения на нужных языках.... |
Я в хмле делал, загонял все в ресурсМенеджер. Причем хмл структурированный по окнам и страничкам. Правда у меня ощущение, что неправильно его использую, но удобно все равно.
Код AS3:
|
Налету: при инциализации приложения собираете все ссылки на ТекстФилды, в которые уже забиты тексты по умолчанию. При переключении языка обходите все ТекстФилды, и меняете у них тексты, согласно таблице языков.
|
Цитата:
- Пишем класс-контейнер для языков. У класса есть статический массив с текущими словами, которые меняются в зависимости от выбранного языка. LangManager - Пишем класс языко-зависимое-текстовое-поле. LangField В конструкторе этого класса подписываемся на события от LangManager'а. Менеджер языков нам сообщает об изменении языка и каждое текстовое поле (или еще что-то) само себя обновляет из статического массива На мой взгляд, вариант с менеджером удобнее |
Цитата:
2. Как быть, если текст является параметризированным?, ну т.е "У вашего юнита 10 опыта и 1 брони" Цитата:
На практике такое кто-нибудь делал? Да, бывают же еще текстфилды, которые в зависимости от состояния приложения имеют разный текст, с ними как быть? |
Цитата:
|
А чем плох существующий ResourceManager? При переключении языков генерит change.
|
Остальным. У него в конструкторе не подпишешься.
|
Хм, не понял :о( Почему не подпишешся, чем он хуже самописного?
|
Цитата:
|
Цитата:
И ResourceManager — это тот, что из Flex framework? |
Понятно, что подписаться и запросить данные можно не только таким образом, но я стараюсь придерживаться pull модели работы с событиями
А как это видится гн. dimarik? |
Цитата:
|
Гн. Dimarik это уже видел не раз. Ему все параллельно =). Спасибо, что посочувствовали, гн. googleBrain.
|
Цитата:
И еще. Есть например галерея картинок, к каждой подпись. А на одном из языков её нет, что с ней делать? Я предлагал что бы в таком случае выбирал русский, но со мной не согласились. Сказали что картинка должна удалятся. При чем это может произойти в момент когда картинки твинятся... |
С переинизиализацией я решил не мучаться, и выбор языка будет при старте флэшки, таким образом отваливается много проблем, не надо расширять базовый класс текстфилда, делать мэнеджеры. А те кто во время просмотра флэшки вдруг будет осознавать что лучше было бы на другом языке... его проблемы )
|
Цитата:
|
Я для подобной задачи использовал подход, при котором языкозависимые компоненты имеют некий метод setLanguage. Каждый такой компонент знает все о своих детях, отслеживает их состояния, знает кто из них текстовые поля, а кто - дочерние компоненты. Для полей берется новое значение из словаря на нужном языке, а у дочерних компонентов, соответственно, вызывается тот же setLanguage, чтобы они сами парились со своими детьми.
Т.е. юзер нажимает на кнопочку смены языка, событие доходит до Объекта, Принимающего Решения, и он вызывает setLanguage у Самого Главного Контейнера, откуда вызовы передаются вниз по иерархии дисплейлиста. |
Цитата:
|
| Часовой пояс GMT +4, время: 17:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.