![]() |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
Sorry, something went wrong |
Цитата:
|
Я сильно сомневаюсь, что пользователь вдруг в данный момент решит поменять язык, когда терминал отрублен от сети и данные только лишь в кеше.
Ну и раз это так важно, не храните их в сети, а если так уж важно, сделайте утилиту для обновления файлов приложения из сети, которая будет стягивать новые версии файлов когда они доступны. |
Цитата:
Что касается "терминала".... Пользователь вообще не должен знать о проблемах сети, энергообеспечения или службы уборки... Он должен использовать сервис на уровне ожидания т.е. на все 100%. И даже больше. Остальное ваши заботы - или это очень хреновый сервис... |
Ну, если под терминалом имеется в виду терминал оплаты, то без сети он не сможет ничего сделать в любом случае, очевидно. Если вдруг связь оборвётся после выполнения операции, вот в этом случае он уже закончил свои дела, он уже вряд ли решит поменять язык. Он может захотеть поменять язык перед этим, что он сможет сделать изи, если будет сеть.
|
Цитата:
Цитата:
Отклоняемся от темы... |
Цитата:
|
Цитата:
|
Ну а как он может что-либо оплатить, не вводя своих данных?
Ну, допустим, он вводит деньги на WebMoney, нужно же проверить валидность данных его аккаунта, верно, прежде чем принимать транзакцию? Без сети этого сделать нельзя, значит, сеть перед транзакцией была. Без сети транзакцию выполнить нельзя. Значит, событие, когда нет сети и транзакция уже выполнена может произойти только когда сеть была и исчезла. Если терминал без сети, то мы отказываем не только в смене языка, а во всём, что требует сети. |
На самом деле, у Партизана вариант вполне рабочий, но он более ресурсоемкий. Там, где каждый килобайт памяти и каждая секунда процессорного времени не имеет значения, можно им воспользоваться. Тут уже личное предпочтение. Но в общемировой практике, так мало кто делает. Особенно если речь идет о приложении / игре, предназначенном для личного пользования (на счет терминальных не знаю, но почему-то почти уверен, что с ними всё точно так же). Стоит посмотреть код большинства доступных в сети пакетов локализаций на разных платформах, и сразу станет понятным, что там везде используются отдельные файлы для разных языков, которые подгружаются по требованию. Нет никакой нужды тянуть все языки сразу в оперативку. Что если фраз там не 100, а, скажем, 20000, а языков не 3, а 50, к примеру, + добавь сюда кучу XML тегов, отъедающих добрую половину веса всего файла. Довольно увесистый файлик получится. И оперативки много сожрет и читаться будет с тормозами.
А вот возможные ошибки переводчика - это, как по мне, за уши притянутый аргумент. Переводчик легко может ошибиться и в случае, если все переводы размещаются в одном теге, errare humanium est. Наверняка переводом будет заниматься не один человек. |
Цитата:
|
тут скорее общепринятой является практика отдавать переводчику xml со всеми текстами в виде одного xml, напортачить там практически нереально, а вот переводить портянку со всеми языками чревато.
|
Тут уже пару страниц обсуждений, выложу для разнообразия код, может кому пригодится... Как видите, кода меньше чем обсуждений, был написан хз когда, под мультиязычный проект с рантаймом, с тех пор мало что меняю.
Код AS3:
Код AS3:
Код AS3:
|
Цитата:
Цитата:
Цитата:
Цитата:
Пара вопросов по этому коду, на вскидку: 1) В чем смысл использования XML, если он все равно жестко вшивается в код? Можно было бы легко обойтись нативным Object 2) Для чего там добавляется stage и вообще фигурируют какие-то дисплей объекты? Что мешает сделать Translator синглтоном и использовать его в качестве диспетчера событий? Посылать события от имени stage - это моветон и может легко перерасти в дикий гемор по поиску багов. Выкладывая подобный код, про опыт лучше вообще не упоминать) |
Аккуратней. На личности не переходим!
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
В правильной схеме во вьюшках должно быть что-то вроде: Код AS3:
Если речь идет об экономии процессорного времени на вычисление атласов растровых шрифтов, то в этом случае, можно обновлять текст только в переменной, а прорисовывать уже при добавлении вьюшки в дисплей лист, но это все равно должна делать сама вьюшка. Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Код AS3:
Цитата:
1. Присвоить текст на стадии создания tf. 2. Создать слушатель LocalizationEvent. 3. При изменении языка, заново запросить строку... (здесь дублировать ID) А теперь я вам расскажу что вам еще нужно будет сделать: 4. этот пункт перед третьим будем считать. Загрузить нужную локаль... У вас же все должно быть отдельно) 5. Не забыть удалить все слушатели с tf в случае удаления его со сцены. Это еще один слушатель, еще одна функция и перечисление всех tf в ней... Не слишком ли много действий и кода для одной строки? (для каждой к тому же).... И все это еще нужно будет заставить работать, если это отдельный подгружаемый swf... (к вопросу о stage). Мне достаточно первого пункта. Код выше. З.Ы. Остальные ваши скучно-нудные умозаключения могли бы оставить в месте, коим их придумали... |
Цитата:
Цитата:
Цитата:
Цитата:
1) Программа запускается и грузит ту локаль, которая соответствует выбранной в операционной системе. Это называется локаль "по умолчанию" (раз уже не понятно) 2) После инициализации вьюшки (без присвоения какого-либо текста текстовым полям), там же в методе инициализации вызывается метод onLocaleChange и передается аргумент null. Открою секрет, метод, при этом нормально вызывается) При этом меняются тексты сразу для всех полей вьюшки, в которых они должны поменяться. Легко и быстро. Цитата:
Цитата:
Да хоть десять подгруженных swf, все будет работать точно так же. Мне не приходится ничего "заставлять" работать. Всё просто работает, потому что написано без костылей. |
| Часовой пояс GMT +4, время: 15:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.