Jusqu'à présent, j'ai géré quelques traductions dans Wordpress et j'ai essayé de lire la documentation officielle de gettext, mais je n'obtiendrai pas le point d'une chose peut-être simple: quelles sont les différences entre ces débuts comme __ (, _e (, etc.? Et même plus: quels autres sont là à côté? Merci d'avance!
Franc
localization
Circuit Circus
la source
la source
Réponses:
__
(double soulignement) est la fonction de traduction de base. Il traduit une chaîne et la renvoie sous forme de chaîne._e
fait la même chose__
, mais résume le résultat immédiatement._x
est la fonction de traduction contextuelle. Il a une deuxième option pour fournir un contexte aux personnes qui font la traduction._ex
est le même que_x
, mais l'écho est le résultat.Exemple d'utilisation
_x
:Parfois, la même chaîne peut être différente dans d'autres langues. Fournir un contexte aux traducteurs peut les aider à choisir les bons mots.
Fonctions de raccourci:
esc_attr__
: Équivaut à__
mais exécute également le résultatesc_attr
.esc_html__
: Équivaut à__
mais exécute également le résultatesc_html
.esc_attr_e
: Équivaut à_e
mais exécute également le résultatesc_attr
.esc_html_e
: Équivaut à_e
mais exécute également le résultatesc_html
.esc_attr_x
: Équivaut à_x
mais exécute également le résultatesc_attr
.esc_html_x
: Équivaut à_x
mais exécute également le résultatesc_html
._n
est le gestionnaire de pluralisation. Exemple:Dans cet exemple, il y a deux façons de dire le nombre de tacos, selon qu'il est singulier ou non. La première utilisation de $ number indique à la
_n
fonction la version à utiliser. La deuxième utilisation de $ number se produit dans le sprintf, pour remplacer le% d par le nombre réel dans la chaîne.Il n'y a pas de fonction d'écho équivalente à
_n
, mais il y a une fonction nommée_nx
. C'est une combinaison de_n
et_x
. Pluralisation et contexte._n_noop
est spécial. Il est utilisé pour traduire des chaînes pluralisées, mais pas pour effectuer la traduction immédiatement. Ceci est utile si vous souhaitez centraliser les chaînes mais effectuez le travail ailleurs. La fonction qui fait réellement le travail ailleurs esttranslate_nooped_plural
.Exemple:
Ce n'est pas beaucoup utilisé, mais peut être utile pour l'organisation. Si vous mettez toutes vos chaînes dans un fichier, par exemple, puis les référencez ailleurs, ce ne serait pas possible avec juste
_n
, vous avez besoin de quelque chose comme_n_noop
ça._nx_noop
est identique à_n_noop
, mais peut également prendre un contexte pour les traducteurs, identique à_x
.Notez que vous pouvez placer le domaine dans l'appel de fonction noop ou dans l'appel de fonction translate_nooped_plural. Selon ce qui est le plus logique pour votre organisation. Si les deux ont un domaine, celui transmis à l'appel noop l'emporte.
number_format_i18n
est l'équivalent du nombre_format intégré de PHP , mais il ajoute dans la gestion des choses comme les décimales et ainsi de suite, qui sont différentes dans d'autres paramètres régionaux.date_i18n
est l'équivalent de la date intégrée de PHP , avec également toute la gestion pertinente. Noms de mois, noms de jours, etc.Aussi, ne violez jamais les lois . Juste un rappel. :)
la source
__ (), _e () et _x (), _ex ()
__()
et_e()
sont essentiellement à la fois un wrapper detranslate()
(ne pas utiliser directement) et presque les mêmes.La différence réside dans le fait que
__()
renvoie la chaîne traduite et l'_e()
écho. Les deux doivent être alimentés par une chaîne en tant que paramètre obligatoire et généralement, bien que facultatif, également par un domaine de texte.De façon analogue, il y a
_x()
et_ex()
, qui vous permettent de spécifier un contexte qui peut décrire où la chaîne apparaît. Si votre projet comprend plus de quelques dizaines de chaînes traduisibles, l'utilisation du contexte a beaucoup de sens.Notez également l'existence de
_n()
et_nx()
pour les pluriels.Exemple d'utilisation courante
Paramètres
Tous les paramètres
$number
sont des chaînes. Tous mais$domain
sont obligatoires.Plus de flexibilité avec les variables et sprintf ()
Si vos chaînes contiendront des nombres ou des mots variables, utilisez
sprintf()
:Ressources additionnelles
Quelques ressources supplémentaires pour le prochain WordPress I18n Ninja:
la source
Je ne suis pas un expert des traductions, mais la page Codex WordPress a une bonne documentation et explique la raison d'utiliser chaque instance.
Depuis les pages du codex:
__()
Est utilisé lorsque le message est passé en argument à une autre fonction;
_e()
est utilisé pour écrire le message directement sur la page. Plus de détails sur ces deux fonctions:__('message')
Recherche dans le module de localisation la traduction de «message» et transmet la traduction à l'instruction de retour PHP. Si aucune traduction n'est trouvée pour «message», elle renvoie simplement «message».
_e('message')
Recherche dans le module de localisation la traduction de «message» et transmet la traduction à l'instruction d'écho PHP. Si aucune traduction n'est trouvée pour «message», elle fait simplement écho à «message».
Notez que si vous internationalisez un thème ou un plugin, vous devez utiliser a
"Text Domain"
.Le framework gettext prend en charge la plupart de WordPress. Cependant, il y a quelques endroits dans la distribution WordPress où gettext ne peut pas être utilisé:
Lien vers la page du Codex
Informations supplémentaires concernant le moment où gettext ne fonctionne pas
J'espère que cela répond à votre question, sinon faites-le nous savoir et peut-être que quelqu'un d'autre peut vous aider ou que je peux faire d'autres recherches.
la source