Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Организовать multilanguage (http://www.flasher.ru/forum/showthread.php?t=152249)

willis83 14.03.2011 17:04

Организовать multilanguage
 
Каким способом лучше организовать мультиязычность во флэше? Думал создать на язык по массиву и при переключении просто менять массив языка, выводя значения на нужном языке. Может есть способы поудобней?

Universe 14.03.2011 17:14

Мож просто вынести текст во внешний xml, а потом просто менять путь к нужному xml?

GBee 14.03.2011 17:53

А налету планируется язык менять или только при загрузке?

scarbo 14.03.2011 17:58

Создавайте файлы локализации, при выборе языка грузите нужный и подставляйте нужные значения.

willis83 14.03.2011 17:59

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

Добавлено через 2 минуты
с xml идея тоже ничего, можно даже загнать всё в один файл, один тэг - одна строка, а там уже просто в доп параметрах значения на нужных языках....

GBee 14.03.2011 18:28

Я в хмле делал, загонял все в ресурсМенеджер. Причем хмл структурированный по окнам и страничкам. Правда у меня ощущение, что неправильно его использую, но удобно все равно.

Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<locale language="en_US">
                <test>
                                <message><![CDATA[Это тест!]]></message>
                                <title><![CDATA[Title]]></title>
                </test>
                <system>
                        <date_format><![CDATA[DD/MM/YYYY]]></date_format>
                        <datetime_format><![CDATA[DD/MM/YYYY JJ:NN]]></datetime_format>
                        <datetimesec_format><![CDATA[DD/MM/YYYY JJ:NN:SS]]></datetimesec_format>
                </system>
                <common>
                                <ok><![CDATA[Ok]]></ok>
                                <yes><![CDATA[Yes]]></yes>
                                <no><![CDATA[No]]></no>
                                <cancel><![CDATA[Cancel]]></cancel>
                                <edit><![CDATA[Edit]]></edit>
и т.д.


Bgg 15.03.2011 00:21

Налету: при инциализации приложения собираете все ссылки на ТекстФилды, в которые уже забиты тексты по умолчанию. При переключении языка обходите все ТекстФилды, и меняете у них тексты, согласно таблице языков.

gloomyBrain 15.03.2011 00:33

Цитата:

При переключении языка обходите все ТекстФилды, и меняете у них тексты, согласно таблице языков
Или:
- Пишем класс-контейнер для языков. У класса есть статический массив с текущими словами, которые меняются в зависимости от выбранного языка. LangManager
- Пишем класс языко-зависимое-текстовое-поле. LangField В конструкторе этого класса подписываемся на события от LangManager'а. Менеджер языков нам сообщает об изменении языка и каждое текстовое поле (или еще что-то) само себя обновляет из статического массива

На мой взгляд, вариант с менеджером удобнее

expl 15.03.2011 00:42

Цитата:

Налету: при инциализации приложения собираете все ссылки на ТекстФилды, в которые уже забиты тексты по умолчанию. При переключении языка обходите все ТекстФилды, и меняете у них тексты, согласно таблице языков.
1. Как текст-филды идентифицировать (т.е. ага, вот еще один текстфилд нашли, а ключ локализации то у него какой)? - загонять на месте создания в хеш-справочник, а при удалении убирать отдуда?
2. Как быть, если текст является параметризированным?, ну т.е "У вашего юнита 10 опыта и 1 брони"

Цитата:

Или:
- Пишем класс-контейнер для языков. У класса есть статический массив с текущими словами, которые меняются в зависимости от выбранного языка. LangManager
- Пишем класс языко-зависимое-текстовое-поле. LangField В конструкторе этого класса подписываемся на события от LangManager'а. Менеджер языков нам сообщает об изменении языка и каждое текстовое поле (или еще что-то) само себя обновляет из статического массива

На мой взгляд, вариант с менеджером удобнее
Мне тоже кажется удобнее, только подписываться лучше в onAddedToStage и отписываться не забывать в onRemovedFromStage, по-тому как кто знает сколько когда и чего вы насоздаете и наудаляете.

На практике такое кто-нибудь делал?

Да, бывают же еще текстфилды, которые в зависимости от состояния приложения имеют разный текст, с ними как быть?

dimarik 15.03.2011 00:47

Цитата:

Сообщение от gloomyBrain (Сообщение 980521)
Или:
- Пишем класс-контейнер для языков. У класса есть статический массив с текущими словами, которые меняются в зависимости от выбранного языка. LangManager
- Пишем класс языко-зависимое-текстовое-поле. LangField В конструкторе этого класса подписываемся на события от LangManager'а. Менеджер языков нам сообщает об изменении языка и каждое текстовое поле (или еще что-то) само себя обновляет из статического массива

На мой взгляд, вариант с менеджером удобнее

Я так понимаю, что именно в конструкторе нужно подписаться.


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

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