Traductions AngularJS dans un environnement WordPress

Izza WP _ localize script () imprime à lrsquoécran les variables JavaScript qui contiennent les données dont jrsquoai besoin dans lrsquoapplication, y compris les traductions, ainsi que les URL de lrsquoAPI rest et nonce.
La fonction WP _ localize script () a été créée pour passer la chaîne de traduction en javascript. Il est également largement utilisé pour obtenir drsquoautres données dynamiques, comme lrsquoURL du paramètre API dans le Dom. Crsquoest comme ça que je lrsquoutilise: Define (lsquoangtrex _ URLrsquo, plugin Dir URL (File u)
Définition (lsquoangtrex _ dirrsquo, nomedir (file)
Ajouter une action (lsquoWP _ enqueue scriptsrsquo, fonction () {
WP _ enqueue script (lsquoAngularrsquo, lsquocdnjs.cloudflare.com ajax libs angular.js 1.4.8 angular.min.jsrsquo)
Le script WP _ enqueue script (lsquoAngular Resourcersquo, lsquoajax.google apis.com ajax libs Angular js 1.4.8 Angular resource.jsrsquo,rsquo Angular lsquo)
WP _ enqueue script (lsquoAngular trans exprsquo, angtrex URL. lsquoapp.jsrsquo, [lsquo Angular lsquo])
WP _ localize script (lsquoAngular trans exprsquo, lsquoangtrexrsquo, lsquo]

lsquorest _ noncersquo = gt WP create nonce (lsquorest APIrsquo),

« title» = gt ESC _ HTML U (lsquotitlersquo, lsquoangtrexrsquo),
lsquoauthorrsquo = gt ESC _ HTML U (lsquoauthorrsquo, lsquoangtrexrsquo),
« View» = gt ESC _ HTML U (lsquoRead morersquo, lsquoangtrexrsquo)
[1]
[1]
)
}) Comme pouvez le voir, lrsquoobjet que placez est appelé angtrex. Jrsquoai un index appelé Translations avec trois chaînes. Ces chaînes sont échappées et prêtes à être converties en utilisant la fonction ESC _ HTML U ().
Rien de tout cela nrsquoest unique ou nouveau, crsquoest ce que jrsquoaime. Tout est normal. Jrsquoai donc créé HTML: Add _ shortcode (lsquoangtrexrsquo, lsquoangtrexrsquo) dans une fonction de code court standard pour une application de coin très simple
Angtrex () {fonction
Ob _ Start ()
? gt

{{traduction, titre}}: {{post titre, présentation}}

{{traduction, auteur}}: {{article, auteur}}

(Code Postal)
Otorhinolaryngologie. Rendu}}

lt? Php
Retourner Ob _ get Clean ()
} comme pouvez le voir, le modèle utilise des balises pour appeler les messages et les données de la traduction. Le défi consiste à passer des variables locales aux modèles et à les rendre universellement applicables à tous les modèles et contrôleurs.
Dans mon exemple de code, je n039ai qu039un seul Contrôleur, donc les objections que je vais faire aux deux options que je considère ne sont pas très pertinentes. Mais dans un scénario réel, il y a beaucoup de contrôleurs, et cela peut changer avec le temps, et je pense que mon opposition est tenable. Avant de choisir ma solution, j039ai envisagé de faire de la traduction un service de coin. Au début, c039était logique. Mais ensuite, je dois injecter le service dans chaque Contrôleur. Ce n039est pas le cas, donc je devrais définir $Scope. Traduction égale service. C039est douloureux. Dans chaque Contrôleur, il est beaucoup plus facile de faire ce qui suit:
$range. Traduction = anxiété. Traduction Dans ce cas aussi, mais pas très sec. Il est sujet aux erreurs. Vous pouvez oublier de le faire dans le Contrôleur, ou quelqu039un peut supprimer la ligne plus tard. De plus, si je change le code source traduit plus tard, c039est un bon remaniement. La variable $scope est unique à la portée de chaque Contrôleur d039angle. C039est le but. Mais Angular a aussi $rootscope, qui est une portée globale. Je l039ai injecté dans tous mes modules, alors j039ai décidé de l039utiliser. Oui, il est important de ne pas contaminer rootscope avec beaucoup de choses supplémentaires. Mais dans ce cas, nous parlons de quelque chose qui est nécessaire dans chaque Contrôleur et qui existe toujours dans les variables avec des fenêtres de plage.
Pour que ça marche, je l039ai utilisé. Exécution lors de la création du module d039application primaire (). Comme pouvez le voir ici: anxiété. App = angle. Module (039angtrex039)
« ngresource»
)). Exécution (fonction ($rootscope) {
Ajouter une traduction à
Le chemin
$root range. Traduction = anxiété. Traduction
}) Dans le rappel. Exécuter () pour ajouter une traduction à $rootscope. Il est maintenant disponible sur tous mes contrôleurs. Passer au JavaScript MVC, mais maintenir l039accessibilité Angular et d039autres cadres JavaScript MVC offrent certainement une bonne expérience utilisateur. Cependant, la création de bonnes expériences pour les anglophones ayant une vision normale ne devrait pas se faire aux dépens des autres.
La facilité de traduction est une étape importante, mais pas la seule, vers l039accessibilité. À moins que le marquage Aria ne soit correctement utilisé, il est difficile pour les utilisateurs qui utilisent un lecteur d039écran d039obtenir une interface très dynamique. Tout cela est dû à la forte dynamique et à la popularité soudaine des interfaces WordPress basées sur JavaScript. Mais nous devons garder à l039esprit la question de l039accessibilité. J039espère que cet article aidera à éviter que l039internationalisation ne devienne un obstacle.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

ContactPress Supported By WordPress Plugins