web-dev-qa-db-fra.com

Comment i18n texte venant de la base de données ou d'une source externe

J'écris un plugin et je voulais i18n correctement le texte que je stocke dans la base de données ou dans un fichier externe. Comment dois-je faire cela? À partir de maintenant, nous générons des fichiers pot avec WordPress, de sorte que tout le texte traduisible est dans les appels.

__( 'text', 'plugin_name');

Mais il y a du texte que je voudrais stocker dans la base de données ou dans un autre format et que je ne sais pas comment mettre dans les fichiers POT.

La seule chose qui me vienne à l’esprit est d’utiliser des tableaux pour ces structures de données afin que je puisse traduire les valeurs, mais existe-t-il d’autres options?

1
Nicola Peluchetti

Réponse courte: vous ne le faites pas. Pas avec les fonctions I18N. Les données de la base de données sont des données qui peuvent changer et doivent être traduites par des moyens distincts. Les données dans le code sont codées en dur et ne changent pas. Elles peuvent être traduites via les fonctions I18N.

Si vous souhaitez stocker tout votre texte traduisible dans un seul fichier PHP sous forme de tableau, puis le référencer ailleurs dans le code, cela fonctionne correctement.

2
Otto

Mais il y a du texte que je voudrais stocker dans la base de données ou dans un autre format et que je ne sais pas comment mettre dans les fichiers POT.

Si le texte est dans la base de données, vous ne pouvez pas le traduire à l'aide d'un fichier POT. Le point entier de la traduction est de mettre en place une recherche sur les chaînes statiques utilisées dans votre code. Si le texte est dans la base de données, il n'est pas statique et ne peut pas être traduit.

Eh bien, du moins pas avec la fonctionnalité i18n standard que vous essayez d'utiliser.

2
EAMann