web-dev-qa-db-fra.com

Comment trouver une direction de langue?

La fonction is_rtl() vérifie la direction de la langue du blog s'il s'agit de LTR ou RTL.

public function is_rtl() {
    return 'rtl' == $this->text_direction;
}

Mais je ne pouvais pas trouver où et qui remplissait les données text_direction. Si je change la langue du blog en arabe, text_direction devient RTL. D'où proviennent les informations de direction linguistique?

Les données de la liste de langues sont extraites de la traduction api https://api.wordpress.org/translations/core/1.0/ mais cela n'inclut pas la direction de la langue!

Existe-t-il une autre API pour cela? Comment puis-je obtenir la direction d'une langue qui n'est pas définie comme la langue du blog?

2
Fahad Alduraibi

La propriété text_direction de la WP_Locale classe est définie par défaut sur 'ltr' selon c'est une déclaration , puis peut être modifiée dans la fonction d'initialisation init() de la classe dans wp-includes/locale.php (près ligne # 207 dans WP 4.5 ) avec la logique suivante:

// Set text direction.
if ( isset( $GLOBALS['text_direction'] ) )
    $this->text_direction = $GLOBALS['text_direction'];
/* translators: 'rtl' or 'ltr'. This sets the text direction for WordPress. */
elseif ( 'rtl' == _x( 'ltr', 'text direction' ) )
  $this->text_direction = 'rtl';

if ( 'rtl' === $this->text_direction && strpos( $GLOBALS['wp_version'], '-src' ) ) {
  $this->text_direction = 'ltr';
  add_action( 'all_admin_notices', array( $this, 'rtl_src_admin_notice' ) );
}

En utilisant la logique d'initialisation ci-dessus, WordPress modifie l'orientation du texte sur la valeur du $text_direction global, s'il existe. A défaut, il applique la fonction _x() pour récupérer la valeur localisée de la chaîne 'ltr' avec le contexte 'text direction'.

Ainsi, le plus souvent, l'orientation du texte est définie par les fichiers de traduction de la langue sélectionnée. Ici vous pouvez voir la traduction du texte en arabe dans l'interface Web pour la traduction principale.

Après avoir déterminé la langue à utiliser, WordPress utilise - la fonction load_default_textdomain() / pour fournir un accès aux données linguistiques des paramètres régionaux configurés par le biais du $l10n global, sur lequel les fonctions de localisation s'appuient ensuite pour les traductions.

Déterminer l'orientation de la langue pour les langues non définies par défaut de la même manière que WordPress nécessite/ une installation multilingue . La plupart des méthodes détaillées dans l'entrée du Codex liée bascule les paramètres régionaux actifs à la volée, de sorte que la direction du texte de la langue active est toujours disponible par _x( 'ltr', 'text-direction' );.

Alternativement, si vous devez obtenir le sens des langues inactives, vous pouvez installer le fichier de traduction pour chaque langue dont vous souhaitez obtenir le sens du texte, puis créer des instances de la classe Mo et appeler import_from_file() pour conserver les données de langue séparées, après quoi un appel à $mo->translate( 'ltr', 'text_direction' ); renverrait la direction du texte de la langue, si défini.

Selon la raison pour laquelle vous devez acquérir la direction de texte des langues non chargées, il serait probablement beaucoup plus efficace et moins gourmand en ressources de compiler une liste statique de directions de langue auparavant.

1
bosco