i18n/getText: Configuração Setlocale em aplicativos da Web
-
18-09-2019 - |
Pergunta
Então eu comecei a brincar com gettext
Mas ainda estou intrigado com certas coisas, seria ótimo se alguém pudesse me ajudar e preencher as lacunas para mim.
Geralmente a maioria das implementações apenas invoca
setlocale
com base em um parâmetro de idioma. Existe algum caso em que eu preciso usarputenv
, talvez para casos de borda nas configurações do Windows?O idioma padrão da minha estrutura PHP é inglês, UTF -8 - então eu definiria
LC_ALL
paraen_US.utf-8
, desdeen_US
A ISO-8859-1/Latin1 e, obviamente, isso não é tão favorável quanto o UTF-8?Há algum gotchas que eu deveria saber depois de invocar
setlocale(LC_ALL, 'en_US.utf-8')
? Já que muda tudo isso:LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES
- Terei que atualizar algum script, por exemplo, que geram tempo ou algo assim?Digamos, por exemplo, um servidor recém -configurado não teve
es_ES.utf-8
Locale Configurado, eu sei como gerar a localidade, mas se não estiver disponível, devo fornecer backups em uma matriz? Seria ótimo se alguém pudesse fornecer um exemplo prático, como:setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )
Existe algum tipo de site que oferece exemplos como esse, ou as pessoas geralmente criam a prioridade pedindo?
Eu li em algum lugar que a estrutura usual do
locale
oui18n
Pasta é algo como abaixo.A estrutura realmente importa? Parece que tudo o que está acontecendo é quando você faz
bindtextdomain('messages', 'locale')
Ele pesquisa recursivamente esse diretório paramessages.mo
, Talvez eu não esteja percebendo, mas pode estar levando em consideração os diretórios.
Quão rigoroso devo ser com a estrutura?
locale
en_US
LC_MESSAGES
messages.po
es_ES
LC_MESSAGES
messages.po
6. Devo me preocupar em tentar testar se o sistema realmente suporta o local ou não? Porque, por exemplo, se um servidor não tivesse um local e eu tentei defini -lo com setlocale
Não seria um erro nem nada, apenas o deixaria passar.
Solução
Isto é não Uma resposta qualificada para sua pergunta, e não estou dizendo que usar getText é ruim - nunca trabalhei o suficiente com ela para ter uma opinião realmente profunda - mas decidi deixar o GetText em paz por causa de sua complexidade e grande imprevisibilidade em diferentes plataformas com locais diferentes. Eu postei uma pergunta procurando alternativas aqui E embora não exista muito, o pacote Zend_Translate parece valer a pena dar uma olhada. Ainda não cheguei a isso.
Se você trabalha com o getText, não deixe de conferir o Usuário do Manual PHP Notas contribuídas no getText.