Maison >Tutoriel CMS >WordPresse >WordPress I18N: préparez votre traduction au plugin

WordPress I18N: préparez votre traduction au plugin

Jennifer Aniston
Jennifer Anistonoriginal
2025-02-19 12:37:11304parcourir

WordPress I18N: préparez votre traduction au plugin

Dans un article précédent, j'ai couvert les principes fondamentaux de l'internationalisation de WordPress (abrégée comme i18n); Comment installer une version localisée de WordPress et comment un site WordPress existant peut être facilement converti en une version localisée.

Dans cet article, je vais vous guider à travers le processus d'internationalisation des plugins WordPress. Le processus n'est pas difficile et une fois les connaissances acquises, vous pouvez faire en sorte que vos plugins WordPress se traduisent facilement dans d'autres langues.

Les plats clés

  • L'internationalisation (I18N) est le processus de développement d'un plugin à être facilement traduit dans d'autres langues, tandis que la localisation (L10N) est le processus ultérieur de traduire le plugin internationalisé en une nouvelle langue.
  • Faire un plugin WordPress-Plugin-Traduction est crucial pour atteindre un public mondial, améliorer l'expérience utilisateur et augmenter la base d'utilisateurs en le rendant accessible aux utilisateurs qui parlent différents langages.
  • Le processus de préparation d'un plugin pour la traduction consiste à définir des en-têtes de traduction (domaine texte et un chemin de domaine), de chargement du domaine de texte et d'internationalisation de divers éléments tels que des chaînes, des espaces réservé >
  • WordPress I18n utilise le cadre de localisation GNU GetText, qui fournit des outils pour traduire le texte. Cela implique d'envelopper toutes les chaînes de texte dans la fonction __ () ou _e () et de créer un fichier .pot (modèle d'objet portable) qui contient toutes les chaînes traduites du plugin.
Différence entre l'internationalisation et la localisation

Au fil des ans, les développeurs ont tendance à mal interpréter le sens de ces termes - internationalisation et localisation.

    L'internationalisation est le processus de développement de votre plugin afin qu'il puisse facilement être traduit dans d'autres langues.
  • La localisation décrit le processus ultérieur de traduction d'un plugin internationalisé en une nouvelle langue.
Il convient de noter que l'internationalisation est souvent abrégée comme i18n (car il y a 18 lettres entre le «i» et le «n») et la localisation est abrégée en L10n (car il y a 10 lettres entre le «L» et le 'n'.)

Pourquoi internationaliser?

La réponse est simple; WordPress est utilisé dans le monde entier dans de nombreuses langues différentes. Lorsque les plugins sont internationalisés, ils attirent un public plus large d'autres parties du monde qui bénéficieraient évidemment en utilisant le plugin dans leur propre langue.

En tant que développeur, vous n'avez peut-être pas le temps de fournir des versions localisées de votre plugin parce que vous ne parlez pas d'autres langues. Cependant, lorsque vous internationalisez votre plugin, vous laissez la porte ouverte aux autres pour créer une localisation sans nécessairement modifier le code source.

Internationalisation du plugin

Maintenant que nous connaissons le concept d'internationalisation et de localisation des plugins, plongeons-nous dans le processus de préparation des plugins pour la traduction.

Définir les en-têtes de traduction

La première étape à faire pour rendre un plugin traduisible consiste à inclure les en-têtes de traduction parmi les en-têtes de plugin.

Les en-têtes de traduction sont le domaine texte et le chemin du domaine.

Le domaine du texte est utilisé pour désigner tout le texte appartenant à un plugin. Il s'agit d'un identifiant unique qui garantit que WordPress peut faire la distinction entre toutes les traductions chargées. Cela augmente la portabilité et joue mieux avec les outils WordPress déjà existants.

Le domaine texte doit correspondre à la limace du plugin. Par exemple, si votre plugin est un seul fichier appelé sample-plugin.php ou il est contenu dans un dossier appelé exemple d'échantillon le domaine de texte devrait être un échantillon-plugin.

Une note sur le domaine texte

Le nom de domaine du texte doit utiliser des tirets et non des soulignements.

Rappelez-vous que j'ai dit que le domaine texte devait correspondre à la limace du plugin? Ce n'est peut-être pas vrai après tout. J'ai effectué une expérience rapide avec l'un de mes plugins, au lieu de la limace du plugin, j'ai utilisé un texte unique et cela a fonctionné sans aucun problème.

moral: assurez-vous que le domaine texte est unique afin qu'il ne se heurte pas à celui des autres plugins.

Le chemin de domaine est le dossier que WordPress recherche les fichiers de traduction .mo.

Par défaut, WordPress recherche dans le répertoire du plugin pour les fichiers de traduction à utiliser. Avoir le fichier de traduction dans le dossier racine de votre plugin pourrait désorganiser votre structure de plugin.

Si vous souhaitez conserver les fichiers de traduction dans un dossier, par exemple; / Langues, vous devez en informer WordPress à ce sujet en utilisant l'en-tête de chemin de domaine.

Vous trouverez ci-dessous un en-tête typique d'un plugin WordPress comprenant celui de la traduction.

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>

Chargez le domaine du texte

Maintenant, nous utiliserions la fonction load_plugin_textDomain () pour dire à WordPress de charger un fichier de traduction s'il existe pour la langue de l'utilisateur.

Vous trouverez ci-dessous la fonction Synopsis.

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>

Le premier domaine de paramètre $ doit être le domaine texte; Le $ ABS_REL_PATH a été obsolète et doit être défini sur False; Enfin, $ plugin_rel_path est le chemin d'accès relatif aux fichiers de traduction.

Si les fichiers de traduction MO se trouvent dans le propre répertoire du plugin, utilisez comme suit:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>

Si les fichiers MO de traduction se trouvent dans le sous-répertoire des langues du plugin. Utiliser comme suit:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>

Vous n'appelez pas seulement la fonction LOAD_PLUGIN_TextDomain, il doit être appelé dans votre plugin dès l'action Plugins_loaded comme ceci:

<span>function load_plugin_textdomain() {
</span>  <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
</span><span>}
</span>
<span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>

plongeon profonde dans le plugin i18n

Maintenant que le domaine texte et l'en-tête de chemin de domaine sont définis, il est temps d'apprendre à internationaliser un plugin.

Ce segment du tutoriel sera divisé en ce qui suit:

  1. Traduction des chaînes
  2. en utilisant les espaces réservés
  3. Traduction HTML
  4. traitant des pluriels
  5. Disambiguation par contexte
  6. Échappement des chaînes de traduction

Veuillez noter: la chaîne ESPW-Plugin sera utilisée comme domaine texte dans ce tutoriel.

1. Traduction de cordes

Pour rendre une chaîne traduisible dans votre plugin, enveloppez la chaîne d'origine dans un appel de fonction __ () comme suit:

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>

Si vous souhaitez faire écho à la chaîne au navigateur, au lieu de la construction du langage Echo, utilisez la fonction _e:

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>

2. Utilisation des espaces réservés

En tant que développeurs PHP et WordPress, je suppose que vous savez ce que sont les espaces réservés. Vous pouvez rapidement parcourir la documentation Sprintf et printf () PHP pour plus d'informations.

Si vous utilisez des variables dans des chaînes comme l'exemple ci-dessous, vous devez utiliser les espaces réservés.

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>

La bonne façon est d'utiliser la fonction printf () comme suit:

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>

En parcourant le code de certains plugins hébergés dans le référentiel de plugin WordPress, je vois des choses comme ceci:

<span>function load_plugin_textdomain() {
</span>  <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
</span><span>}
</span>
<span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
<span>$text =  __( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>

Bien que les chaînes soient désormais traduites, la variable PHP $ City devient également traduisible.

C'est une mauvaise pratique car un traducteur pourrait modifier par erreur la variable ou injecter du code malveillant dans la base de code du plugin, et cela fera finalement le dysfonctionnement du plugin.

La fonction sprintf est similaire à la printf en ce qu'ils formatent la chaîne en utilisant des espaces réservés tandis que printf sort une chaîne formatée, le sprintf renvoie la chaîne.

Exemple: le code suivant affecte une chaîne formatée au texte de la variable $.

<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>

3. Traduction html

y compris le HTML dans les chaînes traduisibles dépend du contexte.

Un exemple est un lien (séparé du texte qui l'entoure):

<span>echo 'Your city is $city.'</span>
Un autre exemple est un lien dans un paragraphe (non séparé du texte qui l'entoure):
<span>printf(
</span>    <span>__( 'Your city is %s.', 'espw-plugin' ),
</span>    <span>$city
</span><span>);</span>

4. Faire face aux pluriels

Une chaîne qui change lorsque le nombre de modifications d'éléments peut être internationalisé à l'aide de la fonction _n ().

Cette fonction accepte 4 arguments, à savoir:

  • singulier - la forme singulière de la chaîne
  • pluriel - la forme plurielle de la chaîne
  • Nombre - Le nombre d'objets, qui déterminera si la forme singulière ou plurielle doit être renvoyée
  • Domaine texte - Le domaine texte des plugins

Voyons quelques exemples pour comprendre comment fonctionne la fonction _n ().

En anglais, vous avez "un commentaire" et "deux commentaires". Dans d'autres langues, vous pouvez avoir plusieurs formes plurielles.

Le code ci-dessous montre comment gérer un tel scénario à l'aide de la fonction _n ().

<span>echo __('Your city is $city', 'espw-plugin');</span>

Explication du code Le code ci-dessus est composé de ces trois fonctions - printf, _n et numéro_format_i18n.

Pour une assimilation facile, le code de fonction sera disséqué avec chaque composant de fonction expliqué.

<span><span><?php
</span></span><span><span>/*
</span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget
</span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/
</span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget
</span></span><span><span> Author: Agbonghama Collins
</span></span><span><span> Version: 1.2
</span></span><span><span> Author URI: http://w3guy.com
</span></span><span><span> Text Domain: espw-plugin
</span></span><span><span> Domain Path: /languages/
</span></span><span><span> */</span></span>

Le premier argument transmis à la fonction _n est le texte à afficher lorsque le nombre de commentaires est singulier.

Le second est le texte affiché lorsque le nombre de commentaires est supérieur à un.

L'ensemble d'espace réservé contiendra la valeur de numéro_format_i18n (get_comments_number ()) qui sera expliqué sous peu.

Le troisième argument get_comments_number () est supposé être une fonction qui renvoie le nombre de commentaires.

S'il retourne 1, le premier argument un commentaire est sorti par printf sinon le deuxième argument% des commentaires s est retourné s'il est supérieur à 1.

Veuillez noter: l'espace réservé% s est remplacé par l'entier renvoyé par numéro_format_i18n (get_comments_number ()) qui est le deuxième argument transmis à la fonction printf.

Enfin, le quatrième argument est la traduction Domaine de texte .

La fonction numéro_format_i18n () convertit le nombre de commentaires au format basé sur les paramètres régionaux. Voir la documentation pour plus d'informations.

similaire au numéro_format_i18n () est la date_i18n qui récupère la date au format localisé, basé sur l'horodatage.

Toujours sur la fonction _n (), ci-dessous est une autre démonstration du fonctionnement de la fonction.

<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>

Si le nombre de dollars de variable renvoie 1, le texte que nous avons supprimé un message de spam sera affiché; Mais s'il est supérieur à 1, nous avons supprimé% d des messages de spam s'affichent avec l'espace réservé% D remplacé par la valeur entière de $ Count.

5. Désambiguïté par contexte

Parfois, un terme est utilisé dans plusieurs contextes, bien qu'il soit un seul et même mot en anglais, il doit être traduit différemment dans d'autres langues.

Par exemple, le message Word peut être utilisé à la fois comme verbe comme dans "Cliquez ici pour publier votre commentaire" et comme un nom "Modifier ce post".

dans de tels cas, la fonction _x ou _Ex doit être utilisée.

Il est similaire à __ () et _e (), mais il a un argument supplémentaire - $ context.

<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>

En utilisant cette méthode dans les deux cas, nous obtiendrons le commentaire de la chaîne pour la version originale, mais les traducteurs verront deux chaînes de commentaires pour la traduction, chacune dans le contexte différent.

Lorsque les chaînes rendues translatibles par la fonction _x () sont analysées par un outil de traduction tel que PoEdit, l'argument de contexte fournit un indice au traducteur sur le contexte que la chaîne / le texte a été utilisé.

En allemand, le poste en tant que nom est Beitrag tandis que comme un verbe est verbuchen.

Vous trouverez ci-dessous une capture d'écran de Poedit traduisant le poste de chaîne en allemand avec le contexte carré.

WordPress I18N: préparez votre traduction au plugin tandis que _x () récupérer la chaîne traduite, _ex () l'affiche.

6. Échappement des chaînes de traduction

WordPress a un certain nombre de fonctions pour valider et désinfecter les données.

Parmi la liste figurent des fonctions d'échappement des textes de traduction - ESC_HTML (), ESC_HTML_E (), ESC_HTML_X (), ESC_ATTR (), ESC_ATTR_E () et ESC_ATTR_X (). Vous pouvez obtenir plus d'informations sur chacune de ces fonctions sur WordPress Codex.

Je n'ai pas besoin d'expliquer chacun d'entre eux, mais ce qu'ils font est d'échapper aux textes traduisibles.

enveloppent

L'un des objectifs de WordPress est de permettre aux utilisateurs du monde entier de publier facilement du contenu. En tant que développeur de plugin, vous pouvez aider à soulager davantage le processus de publication pour les utilisateurs lorsque vous internationalisez vos plugins.

La première partie de ce tutoriel concernait essentiellement tout ce que vous devez savoir sur le plugin i18n.

La partie finale sera une procédure sur la façon de préparer une traduction de plugin et d'apprendre à localiser un plugin sur une nouvelle langue.

J'espère que vous avez appris quelque chose de nouveau à partir de ce tutoriel.

codage heureux!

Questions fréquemment posées (FAQ) sur WordPress I18N et la traduction du plugin

Quelle est l'importance de rendre une traduction du plugin WordPress prête pour la traduction?

La fabrication d'une traduction de plugin WordPress est cruciale pour atteindre un public mondial. Tous les utilisateurs de WordPress ne sont pas des anglophones. En internationalisant votre plugin, vous le rendez accessible aux utilisateurs qui parlent différentes langues, augmentant ainsi votre base d'utilisateurs. Il améliore également l'expérience utilisateur car les utilisateurs peuvent interagir avec votre plugin dans leur langue maternelle, ce qui le rend plus convivial.

Comment fonctionne WordPress I18n?

WordPress I18n, ou l'internationalisation, fonctionne par Rendre les chaînes de texte de votre plugin traduisibles dans d'autres langues. Ceci est réalisé en emballant ces chaînes de texte dans une fonction spéciale qui leur permet de traduire. WordPress utilise le framework de localisation GNU GetText à cet effet, qui fournit un ensemble d'outils pour traduire le texte.

Quelles sont les étapes pour créer une traduction de plugin WordPress-PRODATION?

Faire un WordPress WordPress La traduction du plugin prêt pour la traduction implique plusieurs étapes. Tout d'abord, vous devez internationaliser votre plugin en enroulant toutes les chaînes de texte dans la fonction __ () ou _e (). Ensuite, vous devez créer un fichier .pot (modèle d'objet portable) qui contient toutes les chaînes traduites de votre plugin. Ce fichier est utilisé comme modèle pour créer des fichiers .po (objet portable) et .mo (objet machine), qui contiennent les chaînes traduites.

Quelle est la différence entre __ () et _e () WordPress i18n?

Les fonctions __ () et _e () sont toutes deux utilisées dans WordPress I18n pour rendre les chaînes de texte traduites. La principale différence entre eux est que __ () renvoie la chaîne traduite, tandis que _e () fait écho ou publie directement la chaîne traduite. Par conséquent, vous utiliseriez __ () lorsque vous souhaitez stocker la chaîne traduite dans une variable, et _e () lorsque vous souhaitez afficher la chaîne traduite en utilisateur.

Comment puis-je traduire mon plugin WordPress en différentes langues?

Pour traduire votre plugin WordPress en différentes langues, vous devez créer des fichiers .po et .mo pour chaque langue. Ces fichiers contiennent les chaînes traduites et sont nommés selon le code de langue ISO-639 (par exemple, en_us pour l'anglais, FR_FR pour le français). Vous pouvez utiliser un outil comme PoEdit ou Loco Traduire pour créer et gérer ces fichiers de traduction.

Quels outils puis-je utiliser pour WordPress I18n?

Il existe plusieurs outils disponibles pour WordPress I18N. Poedit et Loco Traduction sont des outils populaires pour créer et gérer des fichiers de traduction. Gotpress, un outil de traduction sur le Web, est également utilisé par la communauté WordPress pour traduire WordPress Core, Plugins et Thèmes.

Comment puis-je tester mon plugin WordPress pour la préparation à la traduction?

Vous Peut tester votre plugin WordPress pour la préparation de la traduction en modifiant la langue dans vos paramètres WordPress et en vérifiant si les chaînes de texte du plugin sont correctement traduites. Vous pouvez également utiliser un outil comme le plugin de damier WordPress I18N, qui vérifie votre plugin pour les erreurs i18n courantes.

Comment puis-je contribuer aux traductions du plugin WordPress?

Vous pouvez contribuer aux traductions du plugin WordPress WordPress à travers l'équipe WordPress Polyglots. Ils sont chargés de localiser WordPress dans différentes langues. Vous pouvez rejoindre l'équipe et commencer à traduire des plugins et des thèmes dans votre langue maternelle.

Quel est le rôle des fichiers .pot, .po et .mo dans WordPress i18n?

.pot, .po et .mo Les fichiers jouent un rôle crucial dans WordPress I18n. Le fichier .pot est un modèle qui contient toutes les chaînes traduites de votre plugin. Le fichier .po est un fichier lisible par l'homme qui contient les chaînes traduites, et le fichier .mo est un fichier lisible par machine qui est utilisé par WordPress pour afficher les chaînes traduites.

Comment puis-je faire mon wordPress WordPress La traduction du thème prêt pour la traduction?

La fabrication d'une traduction de thème WordPress est implique un processus similaire aux plugins. Vous devez internationaliser votre thème en enroulant toutes les chaînes de texte dans la fonction __ () ou _e (). Ensuite, vous devez créer un fichier .pot et l'utiliser comme modèle pour créer des fichiers .po et .mo pour chaque langue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn