2008-01-10
Ранее я уже писала про рантайм локализацию в посте Легкая локализация во Flex. А будет ли runtime локализация? И с выходом третьей беты Flex 3 можно с уверенностью сказать, что рантайм локализация не только будет, но уже и есть. И вообще, радуют изменения которые произойдут в третьей версии Adobe Flex в области локализации приложений.
Мало того, что вы можете запросто сделать кнопочку переключения языков у себя в приложении, так еще и при этом переключении менять не только надписи GUI, но и картинки, звуки и например размер шрифта. Кстати, изменение размера шрифта для некоторых языков прямо таки жизненно необходимо, на мой взгляд. Более того, locale, загружаемую по умолчанию, можно определить в параметрах HTML обертки. А это говорит о том, что вы можете доставлять один swf файл со всеми языками и только в html в параметрах определять, какой язык сейчас увидит пользователь. А теперь о менее приятном - о том, что вам придется переписать в своих существующих приложениях для перевода их на Flex 3 SDK и использования выше обозначенных бонусов. Установив третью бету 3-его Flex, сразу же бросились в глаза варнинги по поводу устаревшего применения ResourceBundle с помощью соответствующего метатега.
Примечательно, что использование директивы @Resource не изменилось. Однако в доках недвусмысленно намекается на то, что лучше не использовать этот способ, так как например, он не позволяет использовать переключение locale в рантайме. Почему же так не нравится компилятору применение метатега ResourceBundle? Потому что при таком способе, вы лишаетесь удовольствия компилить приложение сразу с несколькими локалиями. Новый способ взаимодействия с resource bundle - это использование ResourceManager. А скорее всего, вы будете использовать свойство resourceManager, которое теперь есть у всех потомков от UIComponent, Formatter или Validator. Еще одной приятной вещью станет то, что не обязательно теперь файлы ресурсов делать полностью копиями друг друга. Можно забыть при экспшены при обращении к ресурсу, так как в localeChain можно задать массив locale-ей. Тут и произойдет чудо. Например, ваш язык приложения русский, но недостающие строки могут автоматически цепляться из английских ресурсов. Все эти радости можно увидеть уже на существующей Flex 3 SDK 3 beta 3. Например, в дополнительных параметрах компиляции прописываете -locale=US,RU,GE. В общем, поздравляю нас всех - локализация приложений станет удобнее! Трекбек адрес этой записиURL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку) 10 комментариев, 1 Трекбек
хорошая статья, мне даже захотелось что нибудь локализовать
2008-01-11 @ 11:04
Адобовцы наконец-то написали ресурсменеджер, прогресс не стоит на месте ) Я даже догадываюсь, почем у они до сих пор тормозили с такими простыми, но жизненно необходимыми фичами - фреймворк тяжелый и плохо масштабируемый, для внедрения глобальной, хоть и простой фичи, но не предусмотренной в базовой версии фреймворка, приходится переписывать бОльшую часть классиков, что занимает и время.
2008-01-11 @ 13:29
хорошая статья, мне даже захотелось что нибудь локализовать Так надо срочно что-нибудь локализовать.
2008-01-11 @ 13:45
Я даже догадываюсь, почем у они до сих пор тормозили с такими простыми, но жизненно необходимыми фичами - фреймворк тяжелый и плохо масштабируемый, для внедрения глобальной, хоть и простой фичи, но не предусмотренной в базовой версии фреймворка, приходится переписывать бОльшую часть классиков, что занимает и время. На мой взгляд разработка фрейворков как раз и является настолько трудоемкой, из-за необходимости выдерживать шаткий баланс между такими взаимно влияющими вещами как широта функционала, стабильность, расширяемость и т.д. и т.п. По поводу жизненной необходимости этих фич, то, например, нашему проекту это не было жизненно важно. Да. Что-то станет удобнее, но не критично.
2008-01-11 @ 14:22
Кстати, не забудьте, произвести операции описанные в статье Flex 3:Feature Introductions: Runtime Localization, а иначе не избежать вам ошибок компиляции вида Unable to resolve resource bundle “collections” for locale. Я нашел грубый, некрасивый, но работающий способ _обойти_ эти ошибки. Так не нужно делать, и я хочу публично раскаяться в содеянном. В опциях компилятора я написал "-locale=" (т.е. пустая локаль) и мой Флекс Билдер 3 Бета 3 перестал сыпать ошибку "Unable to resolve resource bundle "Strings" for locale "en_US".", возникшую после переноса проекта из Flex 2 во Flex 3. Вот, исповедался, стало легче
2008-01-24 @ 00:18
В опциях компилятора я написал "-locale=" (т.е. пустая локаль) и мой Флекс Билдер 3 Бета 3 перестал сыпать ошибку "Unable to resolve resource bundle "Strings" for locale "en_US".", возникшую после переноса проекта из Flex 2 во Flex 3. А вот это не спортивно. Во-первых, это тебе не позволит компилить swf с разными локалиями. А во-вторых, у Кости был пост по этому поводу, там описано еще одно решения именно твоей проблемы. Надо в properties ярлыка для запуска эклипса дописать -nl "en_US" к Target.
2008-01-24 @ 11:28
Спасибо! Я исправил свой старый код.
2008-01-25 @ 14:29
Кстати, что интересно, эта конструкция — "-locale=" упоминается в той самой официальной доке со словами:
"change the -locale option to — это из описания процедуры определения ресурсов, реально используемых приложением
2008-02-02 @ 18:11
Комментарий от: Acid [Посетитель]
Что то я не понял. Все отлично загрузил я 2 языка. А как их переключать в RunTime?
2008-04-03 @ 09:22
![]() Что то я не понял. Все отлично загрузил я 2 языка. А как их переключать в RunTime? Существует свойство ресурс-менеджера localeChain. Подробнее можно почитать тут: http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_4.html.
2008-04-03 @ 11:06
Трекбек от: Constantiner's blog [Посетитель]
Лучшие посты на Riapriority.com за уходящий год
По уже сложившейся традиции в последние дни уходящего года в первые дни нового года хочу подвести некоторые итоги по части того, что пол
2009-01-01 @ 22:29
Оставить комментарий |