Pergunta de nível 101 novamente. No app.yml, tenho fi como local padrão. Mas isso faz algo mais do que apenas definir padrões para tudo e todos?
E se sim, um usuário verá tudo nesse idioma padrão, agora fi, até que Permitir local do usuário seja alterado?
Mas e quanto a Definir local do cabeçalho de aceitação do idioma? Se alguém tiver en_US, a versão em inglês será oferecida? E isso significa que o local padrão é apenas uma sugestão e será substituído se o Accept-Language for algo diferente?
E o motivo pelo qual estou perguntando isso é meu novo site, que é fortemente direcionado aos EUA e precisa de um fórum. Mas não acho que chame tanta atenção a ponto de valer a pena fazer todo o trabalho que iniciar um fórum exige. Então, eu estava considerando uma solução onde eu guio esses visitantes dos EUA/globais para uma categoria feita para um propósito específico.
Mas meu fórum é, de resto, todo em finlandês, e se o Accept-Language não mudar o local padrão, isso não funcionará.
(E em parte, espero que a coisa do tradutor funcione algum dia ).
Eu sei que esta não é uma pergunta de suporte genuína, mas estou tentando evitar o Geral…
Isso não é algo sobre o qual eu saiba muito, mas na ausência de outras respostas até agora…
Acho que adicionar o locale padrão ao seu app.yml substitui o que você definiu para locale padrão nas configurações do seu site (e também o remove da página de configurações). Mas esse seria apenas o padrão, e você pode permitir que as pessoas escolham (ou deixem seus navegadores escolherem) uma alternativa mais adequada para elas.
Espero que isso seja relevante, caso contrário, isso pode ser apenas um empurrão útil para ver se conseguimos obter uma resposta mais informada.
Existem dois ramos de lógica em ApplicationController#with_resolved_locale: usuários logados e usuários deslogados.
Usuários deslogados (1) definem o idioma a partir da solicitação e, em seguida, (2) usam a configuração do site ‘idioma padrão’ se nenhum for detectado.
A prioridade é ?lang= na URL, depois o cookie locale, depois Accept-Language se cada configuração de site respectiva estiver habilitada.
A lógica para usuários logados é mais simples: preferência do usuário, depois ‘idioma padrão’ se a preferência do usuário for proibida.
Em todos os casos, se o idioma resolvido foi descarregado do servidor Discourse, en é usado. (Isso ocorre principalmente durante testes unitários e de integração, se bem me lembro.)
locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)
Portanto, em resumo, o que ele faz:
É o idioma para solicitações anônimas sem o cabeçalho Accept-Language.
Incluindo, em particular, o processo de registro de conta.
É o idioma que sempre será usado se você não permitiu que os usuários escolhessem seu próprio idioma, ou se o usuário não definiu um idioma preferido.