Tras cierto trabajo inicial de configuración, la aplicación llama al método Localizer.setLocale() para crear objetos de formato para la configuración regional predeterminada. También se llama al método setLocale() cada vez que el usuario selecciona un nuevo valor en el cuadro combinado de configuración regional.
public function setLocale(newLocale:String):void
{
locale = new LocaleID(newLocale);
nf = new NumberFormatter(locale.name);
traceError(nf.lastOperationStatus, "NumberFormatter", nf.actualLocaleIDName);
cf = new CurrencyFormatter(locale.name);
traceError(cf.lastOperationStatus, "CurrencyFormatter", cf.actualLocaleIDName);
symbolIsSafe = cf.formattingWithCurrencySymbolIsSafe(currentCurrency);
cf.setCurrency(currentCurrency, currentSymbol);
cf.fractionalDigits = currentFraction;
df = new DateTimeFormatter(locale.name, DateTimeStyle.LONG, DateTimeStyle.SHORT);
traceError(df.lastOperationStatus, "DateTimeFormatter", df.actualLocaleIDName);
monthNames = df.getMonthNames(DateTimeNameStyle.LONG_ABBREVIATION);
}
public function traceError(status:String, serviceName:String, localeID:String) :void
{
if(status != LastOperationStatus.NO_ERROR)
{
if(status == LastOperationStatus.USING_FALLBACK_WARNING)
{
trace("Warning - Fallback locale ID used by "
+ serviceName + ": " + localeID);
}
else if (status == LastOperationStatus.UNSUPPORTED_ERROR)
{
trace("Error in " + serviceName + ": " + status);
//abort application
throw(new Error("Fatal error", 0));
}
else
{
trace("Error in " + serviceName + ": " + status);
}
}
else
{
trace(serviceName + " created for locale ID: " + localeID);
}
}
Primero, el método setLocale() crea un objeto LocaleID. Este objeto facilita la obtención de detalles sobre la configuración regional real más adelante, si fuera necesario.
A continuación, crea nuevos objetos NumberFormatter, CurrencyFormatter y DateTimeFormatter para la configuración regional. Tras crear cada objeto formatter, llama al método traceError(). Este método muestra mensajes de error y de advertencia en la consola si se detecta un problema con la configuración regional solicitada. (Una aplicación real iniciaría alguna acción a partir de estos errores, no se limitaría a detectarlos).
Una vez creado el objeto CurrencyFormatter, el método setLocale() define el código ISO de divisa de formato, el símbolo de divisa y las propiedades fractionalDigits en valores determinados previamente. (Estos valores se establecen cada vez que el usuario selecciona un mercado en el cuadro combinado de mercados).
Tras crear el objeto DateTimeFormatter, el método setLocale() también recupera un conjunto de abreviaturas de nombres de meses localizados.