8
votes

GetText est-il le meilleur moyen de localiser un site Web en PHP? (Seule une seule localisation nécessaire)

GetText est le meilleur moyen de localiser un site Web en PHP? Je n'utilise aucun cadre, et il n'y a pas beaucoup de mots à traduire, juste deux versions légèrement différentes en anglais.


0 commentaires

4 Réponses :


1
votes

Pour le contenu statique qui ne changera jamais / extrêmement rarement change, sûr.

Pour le contenu dynamique, pas dans le moindre. Compiler les fichiers .po, etc., c'est bien sur le dessus et je suggérerais une sorte de solution JSON ou XML et de modèles, avec des modèles compilés en cache.


2 commentaires

Pourriez-vous développer ce que vous entendez par «la compilation des fichiers .po est un chemin sur le dessus»?


Pour moi, c'est très un cas de contenu statique.



3
votes

performance-wise, gettext extension est plus rapide que d'utiliser une chaîne -Array qui mappe comme des identifiants de chaîne sur le texte localisé (par exemple "welcometext" => "Bienvenue sur notre page d'accueil." serait inclus à l'aide de quelque chose . La mise en oeuvre PHP pure de GetText est plus lente et non recommandée si vous pouvez utiliser l'extension PHP. Plus de détails ici localisant les sites Web PHP à l'aide de GetText et Benchmarking PHP Localisation - est assez rapide GetText?


2 commentaires

FYI, les deux liens inférieurs sont cassés à partir de 2019 en raison de l'extension manquante mysql dans la WordPress Installation ...


@ War10CK Merci de me faire savoir, j'ai mis à jour les liens pour utiliser la machine de navigagerie



12
votes

Vous pouvez simplement utiliser un lang_xx.php et l'inclure dans votre application. xxx

pour d'autres langues, dites lang_fr.php , il suffit de faire quelque chose comme: xxx

pour un petit cas d'utilisation, cela devrait être bien et il n'est pas nécessaire d'aller avec les fichiers .po . En outre, vous pouvez le définir de cette façon: xxx


7 commentaires

+1 bonne solution pour un site simple


Bien que la solution soit bonne, je recommanderais toujours d'aller à la route GetText. Vous ne savez jamais où votre site va aller. Cela peut devenir plus rapide et vous devrez peut-être ajouter des langues supplémentaires. GetText ne va pas prendre beaucoup plus de temps à mettre en œuvre que cette solution proposée


Même plus agréable que @natlsgleek comme cela, les fichiers de traduction pourraient être envoyés à d'autres personnes à compléter


J'ai sélectionné cette réponse comme je n'ai besoin que de localiser quelques mots ici et là. Pour les plus grands emplois, j'explore l'itinéraire GetText.


J'ai conseillé qu'ils devraient aussi venir de fichiers séparés, mais je ne l'ai pas fait dans l'exemple de lisibilité. J'ai dit que le tableau vient d'un fichier JSON. En toute honnêteté, Json est probablement plus lisible par l'homme qu'un tableau PHP ...


Vous pouvez utiliser PHP2PO pour obtenir rapidement les avantages de l'utilisation de tableaux PHP, mais j'ai toujours accès à Les données des fichiers PO pour une utilisation ultérieure GetText et plus important encore pour faciliter la tâche de vos traducteurs. PHP pourrait être le pire format pour un traducteur, de sorte que vous pouvez également donner aux traducteurs les fichiers PO et utiliser un outil de traduction réel.


+1 parce que c'est ce à quoi il est demandé ici. J'ai ajouté un peu pour que cela renvoie la clé d'origine au cas où il n'existe pas.



10
votes

GetText est le meilleur moyen. Pour un petit site avec peu de chaînes qui ne devraient pas augmenter beaucoup de mettre en œuvre quelque chose de similaire aux solutions publiées peut déjà être plus rapide que d'apprendre à utiliser GetText et de la configurer.

TL; DR:

Les gens ont réfléchi pendant de nombreuses années pour créer un système de traduction qui fonctionne, vous pourriez passer des âges à réinventer cette roue ou que vous pourriez passer un peu tout en apprenant à utiliser GetText.

Dans le monde open source, GetText est pratiquement une norme de facto.

Voici quelques raisons pour lesquelles GetText est meilleur que l'alternative habituelle du maintien de grandes listes de matrices de traduction

  1. il est plus rapide
  2. Il ne nécessite pas de chargement de chaque chaîne en mémoire une fois par fil
  3. Il possède beaucoup de support d'outils pour les traducteurs, tels que POEDIT, vous ne dépendez pas de vos traducteurs de comprendre comment modifier le code PHP.
  4. Il dispose d'une prise en charge des outils pour vous, Msgmerge, etc., vous pouvez envoyer votre fichier à traduire tout en travaillant et en ajoutant de nouveaux textes traductrables et de les fusionner facilement ensemble
  5. Besoin de donner un commentaire au traducteur sur le contexte d'une chaîne? GetText prendra un commentaire du code où il est utilisé et la copiera sur le fichier de traduction
  6. Les clés de traduction sont le texte anglais, s'il n'a pas encore été traduit, le texte est toujours affiché en anglais clair, aucune des solutions ne compte sur cette réponse à ce jour obtenez ce droit.
  7. Il prend en charge les pluriels, si une chaîne dépend d'un entier, en anglais il n'y a que deux formulaires si n! = 1 "Il y avait une personne" sinon "il y avait n peuple" . Pour d'autres langues, la règle n'est pas aussi simple que si (n! = 1), le russe a 3 variantes différentes et la règle est n% 100/10 == 1? 2: N% 10 == 1? 0: (N + 9)% 10> 3? 2: 1;

3 commentaires

Pour de grandes traductions, je pense que c'est la meilleure option, mais dans mon cas, il est surchargé.


Vous tenez-vous toujours à votre recommandation à compter d'aujourd'hui (février 2015)? Quelque chose d'autre a émergé depuis 2012?


Le composant de traduction Symfony semble très bien pensé, je ne l'ai jamais utilisé.