Determinando a localidade

Flash Player 10.1 e posterior, Adobe AIR 2.0 e posterior

Uma localidade identifica uma combinação especifica de linguagem e convenções culturais para um país ou região.

Um identificador de localidade pode ser gerenciado de forma segura como uma string. Mas você pode utilizar a classe LocaleID para obter informações adicionais relacionadas à localidade.

Você pode criar um objeto LocaleID da seguinte forma:

var locale:LocaleID = new LocaleID("es-MX");

Após o objeto LocaleID ser criado, você pode recuperar os dados do ID de localidade. Utilize os métodos getKeysAndValues() , getLanguage() , getRegion() , getScript() , getVariant() e isRightToLeft() e a propriedade name .

Os valores obtidos destes métodos e propriedades podem refletir informações adicionais sobre a localidade, que não podem ser extraídas diretamente do identificador de localidade.

Quando um aplicativo cria um serviço de informações sobre localidade, como um formatador de data, a localidade tem que ser especificada. A lista de localidades que possuem suporte pode variar conforme o sistema operacional, portanto, a localidade solicitada pode não estar disponível.

Primeiro o Flash Player tenta combinar o código de linguagem solicitado. Então ele tenta refinar a localidade procurando um sistema de escrita e região correspondentes (script) Por exemplo:

var loc:LocaleID = new LocaleID("es"); 
trace(loc.getLanguage()); // es 
trace(loc.getScript()); // Latn 
trace(loc.getRegion()); // ES

Neste exemplo o construtor LocaleID() obteve dados sobre a localidade que corresponde melhor ao código de linguagem "es" para o usuário.

Definindo o ID de localidade

Existem algumas maneiras de definir a localidade atual para um aplicativo, incluindo:

  • Codificando um ID de localidade no aplicativo. Esta é uma abordagem comum, mas não suporta a internacionalização do aplicativo.

  • Utilizar as preferências de ID de localidade do sistema operacional do usuário, ou do navegador, ou de outras preferências de usuário. Isto geralmente resulta nas melhores configurações de localidade para o usuário, mas nem sempre possui precisão. Existe um risco de que as configurações do sistema operacional não reflitam as preferências em uso do usuário. Por exemplo, o usuário pode estar utilizando um computador compartilhado e ser capaz de mudar as localidades preferidas do sistema operacional.

  • Depois de definir o ID de localidade com base nas preferências do usuário, permita ao usuário selecionar em uma lista de localidades suportadas. Geralmente, esta estratégia é a melhor opção caso o seu aplicativo possa suportar mais de uma localidade.

Você pode implementar esta terceira opção da seguinte forma:

  1. Obtenha uma lista das localidades ou linguagens preferidas pelo usuário de um perfil de usuário, configurações de navegador, configurações de sistema operacional ou de um cookie. (Seu aplicativo deverá implementar sua esta lógica por si. A biblioteca flash.globalization não suporta leitura direta de tais preferências).

  2. Determine quais dessas localidades são suportadas por seu aplicativo e selecione a melhor por padrão. Utilize o método LocaleID.determinePreferredLocales() para encontrar as melhores localidades para um usuário com base em suas localidades preferidas e as localidades suportadas pelo sistema operacional

  3. Forneça ao usuário uma maneira de alterar a configuração de localidade padrão no caso da localidade padrão não seja satisfatória.

Limitações de outras classes de localidade e idioma

A classe fl.lang.Locale permite que você substitua strings de texto com base em uma localidade, utilizando pacotes de recursos contendo valores de string. No entanto, esta classe não suporta outros recursos de internacionalização como número, moeda ou formatação de data, classificação e comparação, e assim por diante. Além disso esta classe está disponível apenas no Flash Professional.

Você também pode obter a configuração atual do código de linguagem do sistema operacional utilizando a propriedade flash.system.Capabilities.language . No entanto, essa propriedade recupera somente códigos de idioma ISO 639-1 de caracteres duplos - e não o ID de localidade completo — e somente possui suporte a um conjunto específico de localidades.

No AIR 1.5, é possível utilizar a propriedade flash.system.Capabilities.languages . Essa propriedade fornece um conjunto de idiomas de interface preferidos dos usuário. Portanto, não possui as limitações de Capabilities.language .