Il y a quelques années, j'ai écrit sur le processus d'internationalisation des projets WordPress. Bien que je pense qu'il y a des moments où les tutoriels n'ont pas nécessairement besoin d'être mis à jour, actualisé ou revisité, il y a d'autres moments où nous pouvons tous tirer avantage de la revisitation du sujet..
Après tout, les logiciels changent d'année en année et nous gagnons également en expérience en continuant de travailler avec un logiciel donné. WordPress n'est pas différent.
En commençant par cet article et en passant à la série d'articles suivante, nous allons examiner les éléments suivants:
Nous allons même construire un petit plugin WordPress, bien que fonctionnel, qui nous aidera à démontrer concrètement les points énumérés ci-dessus..
Avant de commencer, cependant, il est important de comprendre ce qu'est l'internationalisation et ce que WordPress propose pour le faire. De plus, quelques pièges peuvent vous surprendre, surtout si vous êtes un programmeur expérimenté..
Ceci étant défini comme les grandes lignes de cette série, commençons à bien comprendre l’internationalisation de notre travail dans WordPress..
WordPress Codex est toujours l’un des meilleurs endroits pour commencer lorsque vous souhaitez en savoir plus sur un sujet donné. Voici ce qu'il propose en termes d'internationalisation (que nous abrégerons également par i18n au cas où vous le verriez écrit de cette façon):
L'internationalisation est le processus de développement de votre plugin afin qu'il puisse être facilement traduit dans d'autres langues..
En outre, le Codex décrit ensuite en quoi cela est important:
WordPress étant utilisé dans le monde entier, il est judicieux de préparer un plugin WordPress afin qu'il puisse être facilement traduit dans la langue de votre choix. En tant que développeur, vous aurez peut-être du mal à fournir des localisations à tous vos utilisateurs; Vous ne pouvez pas parler leur langue après tout. Cependant, tout développeur peut internationaliser avec succès un thème afin de permettre aux autres utilisateurs de créer une localisation sans avoir à modifier le code source lui-même..
C'est logique, non? WordPress représente environ un quart du Web et est utilisé dans le monde entier. Pourquoi le travail que nous fournissons devrait-il rester dans la langue maternelle de notre langue??
Cela ne veut pas dire qu'il n'y a pas de moments où tout va bien. Par exemple, si vous construisez une solution pour quelqu'un et que vous savoir qu'ils vont utiliser l'application avec un petit groupe, alors il est logique de le laisser dans la langue maternelle de ce client.
Mais si vous construisez quelque chose pour une large distribution, il ne fait aucun doute que vous devriez internationaliser votre travail.
En bref, l'internationalisation est le processus par lequel nous nous assurons que notre travail peut être traduit dans une autre langue..
Plus loin dans cet article, nous allons examiner les fonctions de l'API WordPress pour nous assurer que nos chaînes PHP sont correctement internationalisées. Mais il y a une mise en garde extrêmement importante que vous devez vous rappeler.
Vous souvenez-vous quand vous avez appris la première fois sur les variables dans n'importe quel langage de programmation quand? C'était génial, non? Vous pouvez définir une variable une fois, puis la réutiliser à la place de la chaîne (ou de toute autre valeur) à tous les autres endroits du code, de sorte que vous n'ayez pas à vous répéter..
En fait, cela fait partie des principes de base de la programmation, n'est-ce pas??
Le principe DRY est formulé ainsi: "Chaque élément de connaissance doit avoir une représentation unique, non ambiguë et faisant autorité dans un système".
Je suis absolument, presque sans équivoque, d'accord avec cette définition. Mais lorsqu'il s'agit d'internationaliser des chaînes dans WordPress, nous devons faire une exception. Vous verrez pourquoi dans un instant, mais j’ai choisi d’inclure cette section ici afin d’éviter toute erreur future. J'ai également choisi de le mentionner pour que vous ne posiez pas la question d'utiliser des variables dans le contexte de l'API d'internationalisation dans les futurs points de contact..
Si vous vous en souvenez maintenant, vous éviterez cet obstacle plus tard.
À ce stade, nous sommes prêts à examiner les fonctions fournies par WordPress. Nous ne les mettrons pas en pratique dans cet article, mais nous examinerons les noms des fonctions, leur utilisation et leur utilité dans un contexte plus large..
À partir du prochain article, nous commencerons à les utiliser. Pour l'instant, regardons ce qui est disponible.
__ ()
est sans doute la fonction d’internationalisation la plus populaire ou la plus courante que vous trouverez dans les travaux WordPress. Cette fonction accepte qu'une seule chaîne soit traduite et le domaine de texte auquel elle appartiendra. Il ne devrait jamais inclure n'importe quoi sauf une chaîne (c'est-à-dire, pas de HTML, pas de JavaScript, etc.)._e ()
est similaire à la fonction ci-dessus, mais plutôt que de simplement récupérer la version traduite de la chaîne, le résultat de la traduction sera également répercuté à l'écran._X()
: malheureusement, il sont fois où une chaîne donnée retournera la mauvaise traduction. Lorsque cela se produit, l’utilisation de cette fonction est utile, en particulier lors de la spécification du contexte de la traduction de la chaîne. Cela garantira le retour de la version souhaitée de la chaîne._ex()
, juste comme _e ()
et _X()
répertorié ci-dessus, s'assurera que la traduction correcte de la chaîne est renvoyée à l'écran en fonction du contexte spécifié afin que la version incorrecte ne soit pas sélectionnée pendant l'exécution._n ()
est une fonction utile, car elle permet à WordPress de sélectionner la version unique ou plurielle du nombre spécifié en fonction de la version utilisée. Cela signifie que nous, en tant que développeurs, devons fournir des chaînes pour la version unique et la version plurielle afin que les traducteurs puissent la traduire, ainsi que le nombre réel. Mais il est beaucoup plus facile de travailler avec des numéros internationalisés que sans._nx ()
devrait être, à ce stade, clair quant à la façon dont cela fonctionne. C'est une combinaison de _n ()
que nous venons de partager et _X()
qui était couvert ci-dessus. Cela signifie que si vous avez correctement spécifié la forme singulière et plurielle du nombre spécifié ainsi que le domaine de texte approprié, la traduction apparaîtra comme prévu.._n_noop ()
devrait sembler un peu familier à ceux qui sont familiers avec la science informatique ou le génie informatique. Un NOP est l'abréviation de "no operation" et, dans ce cas, il a l'habitude de traduire des chaînes au pluriel que nous ne voulons pas nécessairement utiliser à un moment donné, mais que nous souhaitons peut-être extraire ultérieurement. En bref, le traducteur peut fournir la traduction et nous pouvons choisir quand les utiliser._nx_noop ()
est une combinaison de la fonction ci-dessus et de la _X()
fonction que nous avons vu tant de fois auparavant. Cela nous permettra d’avoir accès à une traduction pour un domaine de texte particulier sans avoir à les traduire..translate_noop_plural ()
lit un peu différemment des fonctions que nous avons examinées jusqu’à présent, mais la mise en oeuvre est assez simple: cette fonction fournit une traduction du résultat de _n_noop ()
et _nx_noop ()
. La chose essentielle à noter à propos de cette fonction est qu’elle s'attend à ce que le premier argument soit un tableau avec les clés singulière et plurielle qui proviennent des fonctions susmentionnées..esc_html __ ()
est très similaire à __ ()
, mais il est destiné à être utilisé dans les balises HTML. C'est, ce n'est pas destiné à Traduire Les balises HTML, mais elles sont destinées à récupérer la traduction et à l'échapper pour une utilisation en toute sécurité dans le contexte de HTML.esc_html_e ()
est comme la fonction ci-dessus et presque exactement comme le _e ()
fonction que nous avons examinée ci-dessus; cependant, il est destiné à être utilisé pour continuer et faire écho au résultat de la traduction à l'écran.esc_html_x ()
devrait être clair à ce stade compte tenu du nombre de fois que nous avons vu _X()
utilisé dans d'autres fonctions. En bref, cela fera la même chose que _X()
, mais il fournira le texte dans le contexte gettext et le préparera pour une utilisation sûre en HTML.esc_attr __ ()
est utilisé pour prendre la chaîne spécifiée et l'échapper correctement afin qu'elle puisse être utilisée en toute sécurité en tant qu'attribut tel que Titre
attribut d'une image.esc_attr_e ()
affichera le texte traduit avec un codage supplémentaire de tous les caractères tels que supérieur à, inférieur à, des esperluettes et des guillemets. C'est une autre fonction destinée à être utilisée dans le contexte d'un attribut d'un autre élément.esc_attr_x ()
va récupérer la traduction, l’échapper, puis la rendre dans le contexte d’un attribut d’élément. Si aucune traduction n'a été fournie, la chaîne par défaut fournie pendant le développement sera utilisée..nombre_format_18n ()
est une fonction puissante, en particulier lorsque vous travaillez avec une variété de paramètres régionaux. Par exemple, si vous travaillez avec un nombre et que vous souhaitez restituer "1 000", vous ne devez pas spécifier de second paramètre pour cette fonction. toutefois, si vous utilisez des valeurs en monnaie ou en décimales, vous voudrez alors passer «2» comme second argument, de sorte que deux chiffres soient ajoutés après une virgule..date_i18n ()
est une autre fonction puissante qui vous permettra de récupérer la date dans un format localisé basé sur l’horodatage spécifié. Pour en savoir plus sur cette fonction, ses paramètres et des exemples d'utilisation, veuillez consulter sa page Codex..Rappelez-vous dans la section ci-dessus où j'ai parlé d'éviter l'utilisation de variables? C'est là que cela est utile. Comme vous l'avez sans doute remarqué, chacune des fonctions ci-dessus prend en compte deux paramètres:
Le domaine de texte fait référence à une relation unique entre le plugin WordPress ou le thème WordPress, WordPress et le traducteur. En fin de compte, c’est pour s’assurer que le traducteur est en mesure de fournir une traduction de la chaîne sans remplacer la traduction de un autre chaîne ailleurs dans WordPress (ou une autre solution tierce).
En fin de compte, votre meilleur choix est d’utiliser le slug du plugin en tant que domaine de texte. De plus, ce paramètre devrait toujours être une chaîne, pas une variable. Ainsi, quel que soit le nombre de fois où vous finirez par le saisir, ne le stockez pas dans une variable. Il suffit de taper le domaine de texte comme deuxième paramètre de la fonction.
Cela a à voir avec le fonctionnement des outils de traduction, et nous examinerons cela plus en détail dans un prochain article..
Et c'est l'amorce sur les fonctions d'internationalisation. Si vous ne savez toujours pas comment en appliquer certaines dans votre travail, ne vous inquiétez pas. Il y a plus à couvrir à la fois en termes d'explication et en termes de démonstrations pratiques.
Par exemple, nous avons brièvement abordé le concept de gettext, non? Et qu'en est-il de JavaScript? De plus, qu'en est-il des outils dont nous disposons pour permettre aux autres de traduire nos chaînes? Comment savons-nous qu'ils fonctionnent correctement?
Tout cela va être couvert dans cette série. Mais avant d'y arriver, nous devions commencer par les bases. C'est ce que nous avons fait. Dans le prochain article, nous reprendrons en parlant un peu de gettext et de certains des outils disponibles..
Après cela, nous nous concentrerons sur l'écriture de code (y compris JavaScript) et sur la manière dont tout cela s'intègre dans le contexte de nos propres plugins WordPress..
En attendant, si vous recherchez d'autres utilitaires pour vous aider à développer votre ensemble croissant d'outils pour WordPress ou, par exemple, du code pour étudier et mieux maîtriser WordPress, n'oubliez pas de voir ce que nous avons disponible Marché Envato.
Si vous souhaitez en savoir plus sur WordPress du point de vue du développement, sachez que je travaille exclusivement avec WordPress et que j'écris souvent à ce sujet. Vous pouvez voir tous mes cours et tutoriels sur ma page de profil, et vous pouvez me suivre sur mon blog et / ou Twitter à @tommcfarlin où je parle de développement logiciel dans le contexte de WordPress..
N'hésitez pas à laisser des questions ou des commentaires dans le flux ci-dessous, et je tenterai de répondre à chacun d'entre eux..