Existem várias melhorias de internacionalização (i18n) no WordPress 6.7Vamos analisar estas melhorias em conjunto.
Determine se existe uma tradução
Por vezes é útil saber se uma tradução já existe na memória sem ter de carregar primeiro a tradução para um determinado campo de texto. Novohas_translation()
As funções podem fazer exatamente isso.
Para obter informações mais pormenorizadas, consulte#52696 / [59029].
Correio eletrónico no ambiente linguístico do administrador
Na versão 4.7, o WordPress adicionou a opçãoFuncionalidade que permite aos utilizadores definir o seu ambiente linguístico preferido. Quando envia uma mensagem de correio eletrónico a um utilizador, a mensagem é sempre enviada nessa localidade e todos os outros recebem a mensagem na localidade do site.
Agora.WordPress 6.7 Mais um passo em frente: sempre que enviar uma mensagem para o endereço de correio eletrónico do administrador ( email_administrador
) Ao enviar um e-mail, o WordPress verifica se existe um utilizador com o mesmo endereço de e-mail. Se houver, o e-mail é enviado na localidade desse utilizador.
Para obter informações mais pormenorizadas, consulte#61518 / [59128].
Aviso se a tradução for carregada demasiado cedo
O WordPress avisa agora os programadores se carregarem traduções demasiado cedo num plugin ou tema (antes de o utilizador atual ter conhecimento disso). As funcionalidades existentes (tais comoload_plugin_textdomain()
e )load_theme_textdomain()
foi atualizado para atrasar o carregamento efetivo até que oLógica de tradução instantânea. Isto reduz a probabilidade de disparar avisos e até melhora o desempenho em alguns casos, evitando carregar traduções que não são necessárias numa determinada página.
after_setup_theme
Ao tentar carregar uma tradução em ou antes deinicial
Se o WordPress não estiver a carregar o utilizador atual mais cedo do que o habitual, não dará a outros plugins a oportunidade de participarem potencialmente no processo. Também impedirá que qualquer plugin filtre as chamadas de tradução, como a mudança de localidade ou de localização do ficheiro. Este aviso é, portanto, adicionado para chamar a atenção para este comportamento inesperado.
Para obter informações mais pormenorizadas, consulte#44937,[59127]responder com cânticos[59157].
_doing_it_wrong()
Por exemplo, se chamar a funçãoget_plugin_data()
(que por defeito tenta carregar as traduções) ou__()
Sem esperar pelo gancho, o plugin pode ter o seguinte aspetoinicial
. Abaixo está um exemplo comum encontrado em plugins fixos reais:
/**
* Nome do plugin: Awesome Plugin
*/
função myplugin_get_version() {
require_once ABSPATH . 'wp-admin/includes/plugin.php'; // Evite uma chamada de tradução antecipada definindo $translate.
// Evite a chamada de tradução antecipada definindo $translate como falso.
$plugin_data = get_plugin_data( __FILE__, false, /* $translate */ false ); return $plugin_data; /* $translate */ false; /* $translate */ false
devolva $plugin_data['Versão'];
}
define( 'MYPLUGIN_VERSION', myplugin_get_version() );
Se não definir explicitamente o$translate
é, então a função traduz os metadados do plugin por defeito. Uma vez que este plugin apenas necessita do número da versão, não há necessidade de traduzir quaisquer outros campos.falso
get_plugin_data()
Outro exemplo:
/**
* Nome do plugin: Awesome Plugin
*/
class My_Awesome_Plugin {
public $name.
função pública __construct() {
// Isto ativa o carregamento da tradução just-in-time.
$this->name = __( 'My Awesome Plugin', 'my-awesome-plugin' );
// ... faça alguma coisa
}
}
// Isso imediatamente instancia a classe, bem antes do `init`.
$myplugin = new My_Awesome_Plugin();
Aqui, a classe é instanciada imediatamente no ficheiro principal do plugin e o código no construtor da classe utiliza a função de conversão. A instanciação da classe pode ser adiada para mais tarde através deinicial
Ou evite-o, adiando a chamada de conversão até que seja efetivamente necessária.
Se o plugin for afetado por este aviso, pode utilizar o seguinte código para descobrir o caminho do código que desencadeou o aviso:
add_action(
'doing_it_wrong_run',
static function ( $function_name ) {
if ( '_load_textdomain_just_in_time' === $function_name ) {
debug_print_backtrace();
}
}
).
Neste caso.Monitor de consultasFerramentas de desenvolvimento como estas também são úteis.