понедельник, 7 февраля 2011 г.

Загрузка параметров приложения в зависимости от языковых настроек (ActionScript)

Преамбула:
Для мультиязыкового приложения наверняка многие пользовались классом fl.lang.Locale с помощью которого в приложение подгружаются строковые ресурсы на нужном языке. Возникла необходимость аналогично строковым, сохранять и в последствии подгружать койкакие настройки приложения в зависимости от языка, например: имя дефолтного шрифта или имя метки кадра для фона главного экрана.

Проблема:
Использование различных настроек приложения в зависимости от языка.

Решение:
За основу взят все тот же класс fl.lang.Locale, т.к. обладает всем необходимым функционалом. Более того его можно было использовать для решения данной проблемы, но я отказался от него по 2-м причинам: 1. в проекте уже используется этот класс для подгрузки строковых, 2. модель ключ-значение превращает xml-"конфиг" в одну сплошную кучу.
И так, немного поработав напильником, появился класс (не претендующий на оригинальность или что то еще в этом духе) LocaleSettings (заранее прошу прощения за мусор в комментариях, остались от Locale).

Пример xml-я который кушает этот класс:


      
         Arial
       

      
         bg_en
       

      
         BTN_ACCEPT;BTN_OK;BTN_CANCEL
       

      
         BTN_BUY;BTN_CANCEL
       


Пример использования:
const DEFAULT_LANG:String = "ru";

LocaleSettings.setDefaultLang(DEFAULT_LANG);
LocaleSettings.addXMLPath(DEFAULT_LANG, "settings/set_" + DEFAULT_LANG + ".xml"); // связываем язык с путем xml-файла

var language:String = (loaderInfo.parameters.lang ? loaderInfo.parameters.lang : DEFAULT_LANG);

LocaleSettings.addXMLPath(language, "settings/set_" + language + ".xml");
LocaleSettings.loadSettingsXML(language, languageXMLLoaded); // запускаем загрузку файла с настройками

...

private function languageXMLLoaded(success:Boolean):void
{
   if (LocaleSettings.checkXMLStatus())
   {
      // пользуем загруженные настройки
      mainScreen.setBg(LocaleSettings.loadSetting("client", "bg_frame_label");
   }
}

Примечания:
  1. Файл с настройкам для языка по умолчанию 100% должен быть (на то он и по умолчанию)
  2. В случае если для заданного языка не нашлось настоечного файла (как по причине его фактического отсутствия так и в случае ошибки в именовании языкового кода), будет загружен файл для языка по умолчанию.

Комментариев нет:

Отправить комментарий