2010-07-19 22 views
1

Je travaille sur un projet de site Web d'entreprise Zend Framework, MVC. Je voudrais développer un système de traduction amical avec la capacité de traduire chaque mot selon son contexte (parfois le même mot a une traduction différente).Comment construire un système de traduction en ligne similaire à celui de Magento

Zend Framework utilise Zend_Translate pour i18n et la localisation. Nous avons également vu le système de traduction en ligne de Magento (qui utilise ZF), où les utilisateurs peuvent translate pages directly.

Nous voulons savoir comment fonctionne ce système de traduction en ligne, afin que nous puissions construire un système similaire avec des améliorations.

  1. Où sont stockées les traductions: dans la base de données ou dans des fichiers CSV?

  2. Comment le système sait-il extraire des traductions pour le même mot lorsqu'il est traduit différemment par l'utilisateur sur des pages différentes?

  3. Comment devrions-nous construire une page pour soutenir la traduction en ligne?

  4. Comment le système gère-t-il le texte statique par rapport au texte dynamique (piloté par la base de données)?

  5. La traduction en ligne semble rendre le site très lent. Comment Magento résout-il ce problème?

S'il vous plaît, si vous avez plus de points qui devraient être expliqués, écrivez-les. Merci

+1

Quand tout est écrit en gras, rien. –

Répondre

3

A partir du début ici (à l'avenir, ce qui est probablement plus d'une question logique):

  1. magasins Magento traductions de base (fournies par le programmeur) dans des fichiers CSV, mais les traductions inline sont stocké dans la base de données.

  2. Les traductions de Magento fonctionnent sur des chaînes entières, pas des mots. En fournissant une phrase entière de valeur de contexte pour les traductions, les traductions idiomatiques sont réalisables. Le compromis est évidemment que chaque phrase doit être traduite, plutôt que chaque mot.

  3. La réponse de Magento à ceci est d'emballer toutes les chaînes localisables dans un appel au localisateur. modèles de Magento recherchent habituellement quelque chose comme ça (la fonction double underscore cartes à la fonction « traduire dans la configuration locale »):

    print $this->__("Please translate this string");

  4. texte dynamique (comme dans les descriptions de produits) dans Magento est souvent traduit , mais si vous voulez le faire, il est aussi simple que passer la chaîne de droite au traducteur, comme ceci:

    print $this->__($someString);

  5. il est peu probable que la traduction va faire ou défaire votre site (regardez vos requêtes DB pour la plupart problèmes de performance), mais il s'agit néanmoins d'une question légitime. Magento fait quelques choses pour aider. Tout d'abord, il stocke les versions sérialisées des fichiers CSV dans un cache, de sorte que la lecture des fichiers CSV soit rendue plus efficace. Deuxièmement, Magento offre la mise en cache des pages afin que la sortie d'une page entière puisse être stockée (en supposant que le rendu soit identique), ainsi que la mise en cache au niveau du bloc pour les petits morceaux d'une page.Entre ceux-ci, vous êtes en bonne forme pour la plupart.

Hope that helps!

Merci, Joe

+0

Merci beaucoup Yosef – Yosef