Depois de algum trabalho inicial de configuração, o aplicativo chama o método Localizer.setLocale() para criar objetos formatadores para a localidade padrão. O método setLocale() também é chamado a cada vez que o usuário seleciona um novo valor da caixa combinada de Localidade.
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);
}
}
Primeiro o método setLocale() cria um objeto LocaleID. Isto faz com que seja mais fácil obter detalhes sobre a localidade real posteriormente, se necessário.
Em seguida ele cria novos objetos NumberFormatter, CurrencyFormatter e DateTimeFormatte para a localidade. Após criar cada objeto formatador, o método traceError() é chamado. Este método exibe erros e mensagens de avisos no consolte, caso exista um problema na localidade solicitada. (Um aplicativo real deve executar ações com base nestes erros, em vez de somente rastreá-los).
Depois de criar o objeto CurrencyFormatter, o método setLocale() define o código ISO de moeda do formatador, símbolo de moeda e propriedades fractionalDigits para valores préviamente determinados. (Estes valores são definidos cada vez que o usuário seleciona um novo mercado da caixa combinada Mercados).
Depois de criar o objeto DateTimeFormatter, o método setLocale() também obtém uma matriz de abreviações de nomes de meses localizados.