Até agora, tenho lidado com algumas traduções no Wordpress e tentei ler a documentação oficial do gettext, mas não entendi o que é uma coisa simples: quais são as diferenças entre os inícios como __ (, _e (, etc.? E até mais: quais outros existem ao lado? Agradecemos antecipadamente!
Frank
localization
Circuit Circus
fonte
fonte
Respostas:
__
(sublinhado duplo) é a função de conversão base. Ele traduz uma string e a retorna como uma string._e
faz o mesmo que__
, mas eco é o resultado imediatamente._x
é a função de conversão contextual. Tem uma segunda opção para fornecer contexto às pessoas que fazem a tradução._ex
é o mesmo que_x
, mas eco é o resultado.Exemplo de uso
_x
:Às vezes, a mesma string pode ser diferente em outros idiomas. Fornecer contexto aos tradutores pode ajudá-los a escolher as palavras certas.
Funções de atalho:
esc_attr__
: Equivalente a,__
mas também executa o resultadoesc_attr
.esc_html__
: Equivalente a,__
mas também executa o resultadoesc_html
.esc_attr_e
: Equivalente a,_e
mas também executa o resultadoesc_attr
.esc_html_e
: Equivalente a,_e
mas também executa o resultadoesc_html
.esc_attr_x
: Equivalente a,_x
mas também executa o resultadoesc_attr
.esc_html_x
: Equivalente a,_x
mas também executa o resultadoesc_html
._n
é o manipulador de pluralização. Exemplo:Nesse exemplo, há duas maneiras de dizer o número de tacos, dependendo se é singular ou não. O primeiro uso do número $ informa à
_n
função qual versão usar. O segundo uso do número $ acontece no sprintf, para substituir o% d pelo número real na sequência.Não existe uma função de eco equivalente a
_n
, mas existe uma função denominada_nx
. É uma combinação de_n
e_x
. Pluralização e contexto._n_noop
é especial. É usado para traduzir seqüências de caracteres pluralizadas, mas na verdade não realiza a tradução imediatamente. Isso é útil se você deseja tornar as seqüências centralizadas, mas na verdade faz o trabalho em outro lugar. A função que realmente faz o trabalho em outro lugar étranslate_nooped_plural
.Exemplo:
Isso não é muito usado, mas pode ser útil para organização. Se você colocar todas as suas seqüências de caracteres em um arquivo, por exemplo, referenciá-las em outro lugar, isso não seria possível com apenas
_n
, você precisará de algo como_n_noop
isso._nx_noop
é o mesmo que_n_noop
, mas também pode ter um contexto para os tradutores, o mesmo que_x
.Observe que você pode colocar o domínio na chamada de função noop ou na chamada de função translate_nooped_plural. O que fizer mais sentido para sua organização. Se ambos tiverem um domínio, o que foi passado para a chamada noop vence.
number_format_i18n
é o equivalente a do PHP embutido number_format , mas acrescenta no manuseio para coisas como decimais e assim por diante, que são diferentes em outros locais.date_i18n
é o equivalente a do PHP built-in data , com toda a pertinência manipulação lá também. Nomes de meses, nomes de dias etc.Além disso, nunca viole as leis . Apenas um lembrete. :)
fonte
__ (), _e () e _x (), _ex ()
__()
e_e()
são essencialmente um invólucro detranslate()
(não use diretamente) e quase o mesmo.A diferença está em que
__()
retorna a string traduzida e a_e()
repete. Ambos precisam ser alimentados com uma string como um parâmetro necessário e, geralmente, embora opcional, também como um domínio de texto.Analogamente, existe
_x()
e_ex()
, que permite especificar um contexto que pode descrever onde a string aparece. Se o seu projeto incluir mais do que algumas dezenas de strings traduzíveis, o uso do contexto faz muito sentido.Observe também a existência de
_n()
e_nx()
para plurais.Exemplo de uso comum
Parâmetros
Todos os parâmetros, mas
$number
são cadeias de caracteres. Todos, exceto$domain
são obrigatórios.Maior flexibilidade com variáveis e sprintf ()
Se suas seqüências conterem números ou palavras variáveis, use
sprintf()
:Recursos adicionais
Alguns recursos adicionais para o próximo WordPress I18n Ninja:
fonte
Não sou especialista em traduções, mas a Página de Codex do WordPress tem uma boa documentação e explica o motivo de usar cada instância.
Nas páginas do codex:
__()
É usado quando a mensagem é passada como argumento para outra função;
_e()
é usado para escrever a mensagem diretamente na página. Mais detalhes sobre essas duas funções:__('message')
Procura no módulo de localização a tradução de 'message' e passa a tradução para a instrução de retorno do PHP. Se nenhuma tradução for encontrada para 'message', ela retornará 'message'.
_e('message')
Procura no módulo de localização a tradução de 'message' e passa a tradução para a instrução de eco do PHP. Se nenhuma tradução for encontrada para 'message', apenas ecoará 'message'.
Observe que se você estiver internacionalizando um tema ou plug-in, use a
"Text Domain"
.A estrutura do gettext cuida da maior parte do WordPress. No entanto, existem alguns lugares na distribuição do WordPress em que o gettext não pode ser usado:
Link para a página do Codex
Informações adicionais sobre quando o gettext não funciona
Espero que isso responda à sua pergunta, se não, deixe-nos saber e talvez alguém possa ajudar ou eu possa fazer mais algumas pesquisas.
fonte