Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.10.2017, 19:53
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 31  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Соответственно, получаю в консоль "getXML: Ошибка форматирования файла XML!".
Ну а что ты туда можешь ещё получить, если ты сам написал этот текст? Выведи туда лучше err.message или
err.getStackTrace()
От этого будет больше пользы. По крайней мере узнаешь, что на самом деле провоцирует ошибку.

Скорее всего ты что-то не то передаешь в метод getXML(). Что выдает этот трейс? trace (file.nativePath);





п.с.
Код AS3:
_filestream.position = 0; // эта строчка не нужна
__________________
Ко мне можно и нужно обращаться на ты)

Старый 14.10.2017, 21:19
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 32  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
_filestream.position = 0; // эта строчка не нужна
..если ты загружаешь одним файлстримом один единственный файл.. так будет точнее.
__________________
Reality.getBounds(this);

Старый 16.10.2017, 06:38
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 33  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Код AS3:
_filestream.position = 0; // эта строчка не нужна
..если ты загружаешь одним файлстримом один единственный файл.. так будет точнее.
Да. Но здесь как раз такой случай.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 16.10.2017, 21:41
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 34  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Пожалуй опишу свое видение сабжа...
Обычно создаю один файл с несколькими локалями, с примерной структурой типа:
Код:
<string id="" en='' ru=''/>
или вроде того, чтобы id прописывать только раз. Это дает некоторые плюсы: загрузка только одного файла, сложно перепутать id, можно менять интерфейс в рантайме, удобно видеть все версии переводов в одном месте под одним id.
Для удобства я написал пару классов которые отвечают за локализацию:
1. Отвечает за глобальную поддержку локали (хранит переменную текущей локали, при смене генерирует событие смены языка, видим глобально)
2. Транслятор. Отвечает за смену интефейса и отдает нужную строку в зависимости от глобальной локали.
3. Event локали.

Самый важный компонент - это Транслятор, именно через него проходят все строки... Так же он хранит в себе все, что нужно поменять в интерфейсе в данный момент. Реализовано это примерно так: Чтобы вывести строку в textfield, я предварительно регистрирую этот textfield у транслятора и если в рантайме происходит смена языка и этот зарегистрированный textfield находится в списке отображения, его свойство text меняется на текст соответствующей локали. Впрочем, вместо texfield может быть любой объект DisplayObject с любым именем свойства. Так же можно запросить строку определенного id с нужной локалью.
Собственно такая система решила большинство проблем с локализацией.

Старый 16.10.2017, 22:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 35  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Это дает некоторые плюсы:
Цитата:
загрузка только одного файла,
Загрузка только одного файла с одним языком чем-то отличается? А, ну да, он меньше весит, а надо же напихать туда сразу все сто языков.
PHP код:
сложно перепутать id 
А как его можно перепутать, разделив языки на файлы?
Цитата:
можно менять интерфейс в рантайме
Можно менять интерфейс в рантайме, подгрузив другой язык и отправив событие изменения языка.
ИМХО, при добавлении новых языков ваш код станет нечитаем. Ладно когда языка всего 2, но в наше время этого мало.
Вообще не понимаю, зачем так делать.
Один раз написал XML для русского, потом Сохранить как, и перевёл на инглиш, потом сохранить как, и перевёл на немецкий. Удобно, красиво.
__________________
There is no thing in this world that is not simple.

Старый 17.10.2017, 00:49
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 36  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Загрузка только одного файла с одним языком чем-то отличается? А, ну да, он меньше весит, а надо же напихать туда сразу все сто языков.
PHP код:
сложно перепутать id 
А как его можно перепутать, разделив языки на файлы?
Чтобы "налету" сменить язык, он должен быть уже подгружен, это означает, что вам придется грузить сразу все локали или грузить нужную после смены языка пользователем, а это время. В зависимости от скорости доступа к файлу (тут нужно учесть откуда этот файл грузится, локально или удаленно и конечно скорость доступа к данным), нужно соблюсти баланс между обновлением интерфейса и условиями ТЗ заказчика. На моем опыте было не более трех-четырех языков в приложении. Конечно это не относится к сервисам worldwide типа. Я описал типичный расклад. В случае XML который я указал как пример, тут спорно по объему данных в случае локалей. Структура одного файла может быть компактней 20-ти и наоборот.

Перепутать id даже в трех файлах довольно легко... Переводчик мог просто запариться и перепутать id (он же гуманитарий скорее всего ) и вместо "Привет" на другом языке у вас может быть, к примеру, "Exit"
Код:
RU_file:
<ru>
    <id="01" str="Привет"/>
</ru>

EN_file:
<en>
    <id="O1" str="Exit"/>
</en>
Цитата:
ИМХО, при добавлении новых языков ваш код станет нечитаем. Ладно когда языка всего 2, но в наше время этого мало.
Я привел упрощенный вид XML просто для понимания(хотя и в таком виде использую если точно знаю, что это конечный продукт который дальше меня не пойдет и развития не получит). Структура может быть изменена не нарушая концепции одного id. Благо у XML есть куча возможностей для этого, и все будет читаемо. Намеренно, конечно же, можно любой текст превратить в нечитаемый.
Цитата:
Вообще не понимаю, зачем так делать.
"Ты явно не бывал в Сингапуре..." (с) Pirates of the Caribbean

Старый 17.10.2017, 11:39
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 37  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Чтобы "налету" сменить язык, он должен быть уже подгружен
Не должен. Его можно так же "на лету" подгрузить. Собственно, обычно так и делают. Да и зачем может потребоваться смена языка на лету? Единственное, где я вижу в этом какой-то смысл - это языковое приложение типа разговорника или словаря.
А в теме, очевидно, речь идет об игре, для которой язык можно сразу установить равным языку устройства.
Цитата:
Переводчик мог просто запариться и перепутать id (он же гуманитарий скорее всего ) и
Для этого существуют тесты. Ошибки возможны всегда. И лучше не использовать такие непонятные ID, а использовать человекочитаемые строки, вместо них. Типа
Код AS3:
RU_file:
<ru>
    <id="greeting" str="Привет"/>
    <id="exit" str="Выход"/>
</ru>
 
EN_file:
<en>
    <id="greeting" str="Hi"/>
    <id="exit" str="Exit"/>
</en>
Вероятность ошибки человека в таком случае, сводится к минимуму. Да и дебажить такой код зрительно будет гораздо проще.

п.с. Я тоже переводчик по образованию, но это не мешает мне быть программистом
__________________
Ко мне можно и нужно обращаться на ты)

Старый 17.10.2017, 12:59
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 38  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Код:
Не должен. Его можно так же "на лету" подгрузить. Собственно, обычно так и делают.
Так делают, когда не важно время обновления интерфейса.
Цитата:
Да и зачем может потребоваться смена языка на лету? Единственное, где я вижу в этом какой-то смысл - это языковое приложение типа разговорника или словаря.
На вскидку - навигаторы ТЦ, информационные киоски, анкетные, рекламные приложения...
Цитата:
А в теме, очевидно, речь идет об игре, для которой язык можно сразу установить равным языку устройства.
Я лишь описал реализацию которая может быть полезна как по теме, так и в последующих проектах.
Цитата:
Для этого существуют тесты. Ошибки возможны всегда.
Зачем тогда собственноручно повышать вероятность этих ошибок? Допустим, есть 100 строк, и три языка. Это 100 id в трех файлах... Заметить ошибку перевода будет достаточно сложно, даже если просто перепутать id фразы, она с высокой вероятностью пройдет в продакшн. Куда проще сравнить три-четыре перевода под одним id
Код:
<string id="hello">
    <ru>Привет</ru>
    <en>Hi</en>
    <kz>Cәлем</kz>
    <by>Да пабачэння</by>
</string>
В таком случае ошибку заметить гораздо легче еще на этапе переводов, причем зачастую ее может заметить человек даже не владеющий языком. Это опять же ИМХО и возможно не универсально для абсолютно всех проектов, но мы же тут как раз и собираемся для обсуждения, а реализация остается на усмотрение каждого.

Старый 17.10.2017, 14:16
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 39  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
На вскидку - навигаторы ТЦ, информационные киоски, анкетные, рекламные приложения...
Навигаторы ТЦ и инфо киоски - это не персональное устройство, тут вообще другая сфера применения. Рекламные приложения вполне могут сразу адаптироваться к языку ОС или браузера, так же как и анкетные.
Цитата:
Куда проще сравнить три-четыре перевода под одним id
Что мешает открыть два блокнота / ide с одним и тем же текстом рядом, и точно так же сравнить?
Проверять вот таким образом даже 100 строк в трех языках, тоже совсем не камильфо. Если уж на то пошло, то гораздо лучшим вариантом будет сделать небольшую утилитку, которая будет брать по порядку ID и для каждого языка выводить все переводы на экран рядом, без лишних тегов. Но хранить все переводы в одном файле - плохо, особенно для мобильников. Подгрузка нового файла с переводом, с локального диска, даже на слабом устройстве займет несколько милисекунд. Для человека это будет мгновенно + лишнюю память жрать не будет.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 17.10.2017, 19:07
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 40  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
PHP код:
Чтобы "налету" сменить языкон должен быть уже подгруженэто означаетчто вам придется грузить сразу все локали или грузить нужную после смены языка пользователема это время
Смена языка - это единоразовое действие, скорость обновления интерфейса при котором совершенно не должна быть важна.
К тому же, это загрузка текстового файла, она выполняется за доли секунды даже со слабейшим интернетом(может занять дольше, только если это мобильный инет)
Тут скорее надо переживать за скорость доставания данных из XML документа, которая при включении всех языков в один документ будет ниже.
__________________
There is no thing in this world that is not simple.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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