Question

J'ai une application PHP qui utilise intensivement Javascript du côté client. J'ai un système simple du côté de PHP pour fournir aux traducteurs un moyen simple de fournir de nouvelles langues. Mais il existe des cas dans lesquels javascript doit afficher des éléments de langue à l'utilisateur (par exemple, un bouton OK ou un bouton Annuler ou un "chargement" ou autre chose).

Avec PHP, je n'ai qu'un fichier texte mis en cache côté serveur qui contient les codes de phrase d'un côté et leur traduction de l'autre. Un traducteur doit simplement remplacer l'anglais par sa propre langue et m'envoyer la version traduite que j'intègre dans l'application.

Je veux quelque chose de similaire du côté client. Il m'est apparu que l'inclusion javascript n'était qu'un ensemble de constantes traduites, mais chaque chargement de page télécharge un fichier potentiellement volumineux, dont la plupart sont inutiles.

Quelqu'un a-t-il eu à gérer cela? Si oui, quelle était votre solution?

MODIFIER : Pour être clair, je ne fais pas référence à "à la volée". traductions ici. Les traductions ont déjà été préparées et sont prêtes à être utilisées. J'ai besoin qu'elles soient mises à la disposition du client de manière efficace.

Était-ce utile?

La solution

Pourquoi ne pas utiliser le javascript depuis PHP? Donc, au lieu de hausser:

  <script type='text/javascript' src='jsscript.js'></script>

faire

 <script type='text/javascript' src='jsscript.php'></script>

Ensuite, dans le fichier php, remplacez tout le texte généré par les constantes associées.

Assurez-vous de générer les en-têtes de mise en cache appropriés à partir du code PHP.

EDIT

Ce sont les en-têtes que j'utilise:

header('Content-type: text/javascript');
header('Cache-Control: public');
header('expires: '. date("r", time() + ( 7 * 24 * 60 * 60 ) ) ); // 1 week
header("Pragma: public");

Autres conseils

Je charge généralement les valeurs de langage appropriées en tant qu'objet JavaScript dans un fichier séparé auquel le reste de mon code peut faire référence:

var messages = {
    "loading": "Chargement"
}

alert(messages.loading);

La bibliothèque de langues sera mise en cache côté client après le premier chargement et vous pouvez améliorer l'efficacité du chargement en fractionnant les valeurs dans des fichiers séparés chargés en fonction du contexte: par exemple. une petite bibliothèque pour les opérations publiques, une autre derrière un login, etc.

Ce que vous recherchez semble être AJAX (échange de clients et de serveurs). requêtes asynchrones utilisant Javascript).

Si vous cherchez quelque chose de prêt à l'emploi, allez voir Google. API de traduction AJAX .

Je n'ai jamais eu à le faire personnellement, mais ma première hypothèse serait de faire référence à une bibliothèque tierce. Je pense que l’API Google AJAX pourrait avoir tout ce qu’il faut pour faire cela. Etant donné que la bibliothèque utilise Google, le fichier javascript ne sera pas téléchargé à partir de votre site.

Essayez de fouiller un peu le site suivant: http://code.google. com / apis / ajaxlanguage / documentation /

Faites-moi savoir si cela vous aide. Je souhaiterais peut-être mettre en œuvre quelque chose de similaire pour le site Web que je gère.

Bonne chance, C

J'aime la réponse de Pim Jager et je l’ai fait moi-même. Si vous ne souhaitez pas que PHP génère le code JavaScript pour vous (par exemple, pour des raisons de performances), vous pouvez obtenir une copie maître des bibliothèques JavaScript. Lorsqu'elles changent, exécutez un programme de traduction pour générer une version de chaque bibliothèque. pour chaque langue. Ensuite, il suffit que PHP mette la bonne version pour l’utilisateur actuel dans la balise script qu’il envoie.

J'ai travaillé sur un système nécessitant à la fois une localisation et une stratégie de marque lourdes pour différents clients. Ce que nous avons fait, c’est que tout ce qui était envoyé à l’écran avait une macro unique, telle que [ 3027 ] (ou quelque chose comme ça). Ensuite, nous avons eu un ensemble de fichiers de paramètres régionaux et de marques comportant des entrées pour chaque code de macro et le texte à remplacer pour chaque macro. Un programme passerait en revue tous les fichiers sources et toutes les langues et effectuerait les substitutions.

Nous avons constaté que nous avions également besoin de certaines fonctions pour la localisation, les montants, les dates, les heures, etc. Tout fonctionnait plutôt bien.

Nous avons constaté que nous avions besoin d’une dernière chose importante: un outil permettant de parcourir tous les fichiers de langue et de s’assurer qu’ils avaient tous les codes nécessaires. Grand gain de temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top