Хорошо.Я ходил по сети, пытаясь найти способ сделать интернационализацию без головной боли;и я наконец нашел средства.Включение локали в ваши параметры сборки и выполнение этой операции -locale locale/{locale}
, чтобы сделать их файлами свойств для менеджера ресурсов (то есть: locale/en_GB/lang.properties
в папке src.)
Проблема: Кажется, я не могуустановить локаль пользователя при запуске.Я получаю сообщение об ошибке «Индекс LocaleID вне диапазона» (что странно, поскольку LocaleID основан на строке ..?)
Эта часть работает нормально:
<fx:Script>
<![CDATA[
// Shorthand resource management.
private function getLang(key:String):String
{ return resourceManager.getString(key, 'lang'); }
]]>
</fx:Script>
Эта часть не работает:
protected function creationCompleteHandler(event:FlexEvent):void
{
var locale:LocaleID = new LocaleID("en_GB");
trace(locale.getLanguage()); // en
trace(locale.getRegion()); // GB
trace(locale.name); // en-GB
if (!empty(saveData.data.lang)) // empty checks if str == null or trim(str).length == 0
locale = new LocaleID(saveData.data.lang);
this.setStyle("locale", locale);
}
Фактическая ошибка не выдается, когда я устанавливаю локаль, но когда объекты в пользовательском интерфейсе пытаются получить свои значения.Полное сообщение об ошибке ниже:
RangeError: Property locale value [object LocaleID] is out of range
at flashx.textLayout.property::Property$/defaultErrorHandler()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\property\Property.as:31]
at flashx.textLayout.property::Property/setHelper()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\property\Property.as:230]
at flashx.textLayout.formats::TextLayoutFormat/setStyleByProperty()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\formats\TextLayoutFormat.as:628]
at flashx.textLayout.formats::TextLayoutFormat/set locale()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\formats\TextLayoutFormat.as:1271]
at spark.core::CSSTextLayoutFormat()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\core\CSSTextLayoutFormat.as:75]
at spark.components::RichEditableText/updateStylesIfChanged()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\components\RichEditableText.as:3619]
at spark.components::RichEditableText/commitProperties()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\components\RichEditableText.as:2491]
at mx.core::UIComponent/validateProperties()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:8209]
at mx.managers::LayoutManager/validateProperties()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:813]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]
Интересные факты : 1. Меня зовут не Веллум (?) 2. Мой SDK не находится в E:\dev\4.5.1
... этов C:\Program Files\Adobe\Adobe Flash Builder 4.5.1\sdks\4.5.1
.Хорошие сообщения об ошибках работы!Используя оригинальные пути сборки и все ...