A tecla de acesso 'n' salta para outro local na navegação da página. Saltar para o início do conteúdo.

Este documento é uma tradução. Se ocorrerem discrepâncias ou erros, o original em inglês mais recente terá precedência. Os direitos autorais originais pertencem ao W3C, como indicado no final da página.

Tradutor: Mauricio Samy Silva

s_gotoW3cHome Internacionalização
 

Estabelecendo as preferências de idiomas no navegador

Público alvo: usuários que queiram configurar seu navegador para mostrar páginas em um determinado idioma quando esta funcionalidade estiver disponível (supondo que o servidor esta configurado para realizar negociação de conteúdo).

Tradução atualizada: 2011-08-12 13:03

Pergunta

Como configurar idiomas no navegador de modo a que o servidor envie a página de acordo com minha preferência?

Informações

Quando o navegador solicita um documento ao servidor, envia uma requisição contendo várias informações. Tal requisição é conhecida como HTTP. Na requisição o navegador envia, entre outras, informações sobre idiomas preferidos. Esta informação diz respeito às preferências do usuário quanto ao idioma em que a página deverá ser servida e não tem nada a ver com o idioma da interface do navegador.

O parâmetro da requisição HTTP que contém a informação sobre idiomas é chamado de Accept-Language. Se o servidor está em condições de enviar a página ou o recurso solicitado em mais de um idioma a informação contida no parâmetro Accept-Language será usada para servir a página no idioma de preferência do usuário, se houver uma. Este processo é conhecido como negociação de conteúdo HTTP. Caso exista apenas uma versão da página no servidor, está versão será servida. Se o idioma que foi requisitado não estiver disponível o servidor deverá servir uma página no idioma padrão.

Os navegadores permitem que você configure suas preferências por idiomas na requisição HTTP. O valor para definir o idioma deve ter sua sintaxe em conformidade com a BCP 47 (Tags para identificação de idiomas). Tipicamente estas tags são constituídas de duas ou três letras identificadoras do idioma (por exemplo: fr para o francês) opcionalmente seguidas por um identificador do país (por exemplo: fr-CA para o francês falado no Canadá).

Na maioria dos casos a configuração inicial do navegador estará de acordo com sua prefência. Por exemplo: se você tem uma versão japonesa do navegador ele assumirá por padrão que o seu idioma preferido é o japonês e enviará esta informação para o servidor. Este artigo mostrará a você como descobrir e alterar as preferências de idioma no seu agente de usuário.

Nota: Em alguns casos o servidor não considera as informações do parâmetro Accept-Language para determinar o idioma a servir a página. Por exemplo: o Google tende a usar o endereço de IP para determinar o idioma a servir. As configurações de idioma feitas no navegador, e aqui explicadas, não afetam a negociação de conteúdos baseada em mecanismo como o adotado pelo Google.

Resposta

Para configurar seu navegador para receber páginas em determinado idioma (admitindo que o servidor possui versões em diferentes idiomas e está apto a proceder negociação de conteúdos), você precisa controlar a informação enviada no parâmentro Accept-Language do cabeçalho HTTP.

A maioria dos navegadores permite que você escolha as opções de idiomas. No sistema Mac OS X você precisa alterar as configurações do sistema OS X.

A maioria dos navegadores permite que você crie uma lista preferencial de idiomas de modo que se o primeiro idioma da lista não estiver disponível seja servido o seguinte e assim por diante. Tipicamente quando há opções de vários idiomas o navegador atribui um fator qvalues para cada idioma da lista. Este fator é uma espécie de peso cuja finalidade é a de instruir o servidor sobre as prioridades de preferência de idioma. Observe a seguir um exemplo no qual vários idiomas foram definidos no parâmetro Accept-Language. Alemão é o idioma preferido. Se não houver uma versão em alemão o inglês da Grã-Bretanha deve ser servido e não havendo esta versão, qualquer tipo de inglês.

Accept-Language: da, en-gb;q=0.8, en;q=0.7

Caso tenha sido definido um idioma com uso de uma subtag do país, assegure-se de que exista logo após, na lista de idiomas, uma tag do mesmo idioma sem a subtag do país (como mostrado no exemplo para o idioma inglês). Ver notas a seguir para mais informações.

Alguns navegadores permitem que você defina tags personalizadas de idiomas em lugar de escolher tags pré-definidas em uma lista. Está opção é útil quando o navegador não prevê, na lista de tags pré-definidas, a tag do idioma da sua preferência.

A seguir veremos mais detalhes sobre os pontos que acabamos de apresentar.

Você pode usar o verificador de internacionalização para descobrir quais são as informações do parâmetro Accept-Language que estão sendo enviadas pelo navegador. Entre o endereço de uma página no verificador e procure no painel Information por Request Headers > Accept-Language. (Ver um exemplo para esta página.)

Alterando preferências

Mostraremos a seguir como alterar as preferências de idioma na maioria dos navegadores recentes nas plataformas Windows e Mac OS X. Salvo explicitamente dito em contrário consideramos a última versão dos navegadores à época que este artigo foi escrito.

Pode haver diferenças nos caminhos mostrados em futuras versões dos navegadores. Os dados estão corretos desde a última vez que os verificamos. Se você encontrar algo desatualizado, por favor, entre em contato e informe.

Internet Explorer. Quando você instala a versão IE7+, as preferências de idioma são estabelecidas automaticamente de acordo com a localização do seu Windows, mas você tem a opção de alterar isto durante a instalação.

Convém notar que se você não personalizou as preferências de idioma no navegador, mas alterou as configurações de localização do Windows as preferências de idioma serão alteradas para contemplar a nova localização. (As configurações de localização do Windows permitem alterar formatos, tais como, que caractere usar como separador decimal, como apresentar datas, etc.)

Por padrão nos navegadores Internet Explerer 7 e posteriores o valor do parâmetro Accept-Language enviado no cabeçalho de requisição ao servidor é do tipo idioma da região. O idioma em seu formato único (sem especificar região) não é enviado. Por exemplo: se você estiver na França o valor do parâmetro Accept-Language a ser enviado ao servidor é fr-FR. Isto, para alguns servidores, pode trazer algumas implicações que devem ser consideradas, principalmente se foram configuradas outra tags de idioma no navegador. Para mais informações ver o título a seguir Níveis de detalhamento das tags de idiomas.

Para configurar preferências de idiomas abra o menu Ferramentas > Opções da Internet > Geral(tab) > Idiomas > Preferência de idioma. No IE é possível definir uma tag de idioma personalizada: clique no botão "Adicionar..." existente na caixa Preferência de idioma e a seguir digite a tag personalizada no campo 'Definido pelo usuário'.

Firefox. Para definir suas preferências neste navegador abra o menu Ferramentas > Opções (Windows) ou Firefox > Preferências (Mac OS X), e selecione Conteúdo (tab) > Idiomas > Selecionar... (botão).

As opções de idioma são apresentadas em uma lista para você escolher e o navegador enviará a requisição para todos os idiomas no parâmetro Accept-Language na ordem em que forem definidos.

Não há a opção de personalização de tag de idioma na interface padrão (contudo você poderá personalizá-la usando o comando about:config e configurando intl.accept_languages se você é geek o suficiente para entender o que isto significa.)

Safari. Para Mac OS X a preferência por idioma é configurada nas Preferências do Sistema do OS X. Para configurá-las vá em System Preferences > Language & text > Language. Você poderá ter uma vasta lista de idiomas nesta caixa de diálogo, mas o Safari enviará ao servidor a requisição somente para o primeiro idioma da lista. Não há como criar tags personalizadas.

Em Windows não é possível configurar o idioma requisitado pelo Safari uma vez que a configuração é feita nas Preferências do Sistema do OS X, como acabamos de mostrar.

Google Chrome. Para configurar as preferências de idioma vá em Opções (Windows) ou Chrome > Preferences (Mac OS X), e selecione Configurações avançadas > Conteúdo Web > Configurações de idiomas e do corretor ortográfico.

Você poderá escolher os idiomas de uma lista pré-definida e eles serão requisitados ao servidor na ordem de preferência em que forem listados. Não há como personalizar tags de idioma.

Opera. Em Windows vá em Menu > Configurações > Preferências > Geral > Idiomas > Detalhes (botão).

Você poderá escolher idiomas de uma lista pré-definida ou personalizar (Escolher) uma tag de idioma. O Opera enviará a requisição para todos os idiomas no parâmetro Accept-Language na ordem em que forem definidos.

Em Mac OS X o Opera envia ao servidor a requisição de idiomas conforme configurada nas Preferências do Sistema do OS X. Para alterar vá em System Preferences > Language & text > Language. Você pode definir uma longa lista de idiomas e ao contrário do Safari o Opera envia todos eles no parâmetro Accept-Language do cabeçalho HTTP.

Não há como definir idiomas personalizados na interface padrão. (contudo você poderá personalizá-los usando o comando opera:config e configurando Network > HTTP Accept Language.)

Para outros navegadores consulte http://www.debian.org/intro/cn#mozilla

Definindo alternativas

Você pode definir alternativas ao idioma preferido listando-as em ordem de preferência. O exemplo a seguir, baseado no navegador Firefox, considera a preferência pelo idioma francês falado na Suiça e como alternativas o francês, alemão e inglês, nesta ordem.

Screenshot da caixa de diálogo para preferência de idioma no Firefox.

Na maioria dos casos o navegador apresenta uma lista de idiomas para escolha. Mas, você também poderá definir idiomas de forma personalizada. Neste caso os valores personalizados devem ser definidos com sintaxe reconhecida pelo navegador, (ver a seguir).

A lista de preferências deve ser definida em ordem decrescente de prioridade. Isto significa que ao usar tags e subtags inclua estas antes daquelas na lista.

Por exemplo: defina fr-CH e a seguir fr. (ver seção a seguir.) Assim, você se assegura que a versão francês da Suiça será a preferida e se esta não estiver disponível a preferência será por francês.

Níveis de detalhamento das tags de idiomas

A regra básica é que se a preferência é por um idioma cuja tag contém hífen, tal como fr-CH (francês falado na Suiça) devemos considerar a inclusão, imediatamente após, da tag sem o hífen fr (francês).

Isto pelo fato de que se o navegador segue literalmente a especificação HTTP 1.1 não encontrando a versão fr-CH ele não servirá automaticamente a versão fr, mesmo que ela esteja disponível.

Na prática isto não acontece, pois um servidor Apache adicionará implicitamente a tag fr na lista de preferências<./p>

Contudo a preferência será adicionada com a mais baixa prioridade. Se a sua lista contém somente um idioma o Apache resolve o problema, contudo para mais de um idioma o problema não estará resolvido. A documentação do Apache explica esta questão assim:

O Apache adiciona implicitamente o idioma-pai à lista de idiomas, atribuindo-lhe a mais baixa prioridade. Notar que se o cliente requisita "en-GB; q=0.9, fr; q=0.8" e o servidor contém as versões "en" e "fr", então a versão "fr" do documento será servida. Este comportamento é para manter aderência às especificações para HTTP/1.1 e contemplar de forma consistente as preferências definidas pelo cliente.

Vejamos um exemplo. A definição das preferências de idioma mostradas na seção anterior sempre retornará um documento em francês de um servidor Apache que tenha a versão fr porque a escolha do francês French [fr] foi explicitamente definida após o idioma francês da Suiça French/Switzerland [fr-ch]. Se removermos French [fr] da lista o servidor adicionará implicitamente a preferência por French [fr] mais com prioridade mais baixa que German [de] e em consequência a versão German do documento será servida caso a versão francês da Suiça não esteja disponível (ainda que exista no servidor a versão em francês).

Screenshot da caixa de diálogo para preferência de idioma no Firefox.

O navegador Internet Explorer apresenta uma lista pré-definida de tags com suas subtags e a definição da tag simples, sem hífen, deverá ser digitada pelo usuário. Outros navegadores apresentam ambas as tags e subtags em uma lista pré-definida.

Identificando e escolhendo tags personalizadas

Normalmente você escolhe as tags de idioma em uma lista pré-definida fornecida pelo navegador. Nesta seção veremos como criar tags personalizadas não existentes na lista.

As informações contidas nesta seção resolvem a grande maioria dos problemas de definição de tags de idioma. Se você quiser saber mais sobre a sintaxe das tags de idioma veja os artigos Language tags in HTML and XML e Choosing a Language Tag.

A tag de idioma deve começar com duas ou três letras, chamadas de subtags, conforme definidas na IANA Language Subtag Registry. Você poderá então adicionar uma segunda subtag indicativa do país ou região. As subtags estão especificadas na IANA Language Subtag Registry. Duas subtags devem ser separadas por um hífen.

Idioma. A IANA Language Subtag Registry é bem extensa. Para localizar uma subtag procure pelo seu nome em inglês. Se você procurar por 'French' encontrará algo como mostrado a seguir:

Type: language
Subtag: fr
Description: French
Added: 2005-10-16
Suppress-Script: Latn

Notar que o tipo de registro é 'language'. Use o código rotulado como 'Subtag', isto é, 'fr'.

Em lugar de usar a IANA Language Subtag Registry talvez você prefira usar a ferramenta desenvolvida por Richard Ishida denominada Language Subtag Lookup Digite o nome do idioma ou região no campo Find e clique o botão de procura.

Região. Se você quiser definir preferência por um específico tipo de francês (French), caso esteja disponível, você poderá adicionar uma subtag, tal como CA para fr-CA (francês falado no Canadá). Para encontrar uma região procure pelo nome do país ou região. Se você procurar por 'Canada' encontrará algo como mostrado a seguir:

Type: region
Subtag: CA
Description: Canada
Added: 2005-10-16

Notar que trata-se de uma subtag tipo 'region' que é aquela pelo qual você procurava. Use a subtag 'CA' (para obter fr-CA).

Subtags a evitar. Você deverá evitar o uso de subtags descritas como 'redundant' ou 'deprecated'. Existem outros tipos de subtags previstos nos registros da IANA, contudo é muito pouco provável que você precise usá-las (porque elas não são usadas para definir versões de idioma no servidor).

Chinese. Os registros da IANA prevêem também subtags para scripts, mas elas não são normalmente necessárias e devem ser evitadas. Uma excessão é a tag de sript para o chinês.

O povo chinês embora fale dialetos ou idiomas diferenciados, tipicamente escrevem de uma forma idêntica diferenciada apenas por caracteres entre chinês simplificado e tradicional. Se você procura por informação em chinês deverá especificar se o texto é em script simplificado ou tradicional em lugar de especificar o idioma.

Uma vez que antigamente não havia como definir subtags para script os servidores tendem a servir o texto em script tradicional se a tag de idioma for zh-TW (chinês falado em Taiwan) e em script simplificado se for zh-CN (chinês falado na China). Se for definido zh-SG (chinês falado em Singapura) ou zh-HK (chinês falado em Hong Kong) não fica claro o retorno como esperado (normalmente chinês simplificado e tradicional respectivamente).

Os registros da IANA agora prevêem subtags para scripts. As tags para script Hans e Hant permitem especificar preferência por zh-Hans (chinês simplificado) ou zh-Hant (chinês tradicional).

É uma boa prática usar estas tags uma vez que as pessoas já começaram a rotular seus documentos no servidor com elas. Contudo é bom prever alternativas para servidores antigos que ainda não suportam tags de script. Por exemplo: se você vive em Taiwan sua lista de preferências deve ser como mostrada a seguir:

zh-Hant
zh-TW
zh

Notar que tags de script devem ser evitadas para outros idiomas que não o chinês especialmente onde a Language Subtag Registry prevê um campo Suppress-Script para o idioma. Se você usar uma tag de script, por exemplo: para Sérvia, deve usá-la como tag alternativa, ou seja, juntamente com a tag de idioma.

A propósito

Um bom exemplo de negociação de conteúdo é o Press Release do W3C Spanish Office’s Standards Tour in 2004, disponível em Spanish, Basque, Catalan, e Galician, bem como em Japanese e French. Para ver a negociação de conteúdo em ação defina, no seu navedor, as preferências de idioma para cada um dos idiomas disponíveis e clique neste link após cada definição de idioma. Os códigos para as tags de idioma são: es (Spanish), eu (Basque), ca (Catalan) and gl (Gallician).

Você pode ainda ver a negociação de conteúdo na página: The CSS2 Press Release (disponível em Dutch, English, German e Japanese).

Dê-nos a sua opinião (em inglês).

Subscreva uma alimentação RSS.

Novos recursos

Notícias na página principal

Twitter (Notícias na página principal)

‎@webi18n

Leitura complementar

Autor: Richard Ishida & Martin Dürst, W3C. Tradutor: Mauricio Samy Silva.

XHTML 1.0 válida!
CSS válido!
Codificado em UTF-8!

Traduzido de conteúdo em inglês datado de 2011-03-22. Última versão traduzida modificada 2011-08-12 13:03 GMT

Para obter o histórico de alterações do documento, faça uma busca por qa-lang-priorities no blog da i18n.