2010-04-07 17 views
3

Je travaille sur la mise à niveau de notre site pour travailler dans différentes langues.Le moyen le plus rapide pour stocker et récupérer du texte traduit - base de données ou fichier plat?

Mon plan est de stocker des paragraphes de texte dans plusieurs langues et de donner un identifiant à chaque paragraphe.

Exemple
id => '1'
bref => 'welcome_paragraph'
en => 'Bienvenue sur notre site!
de => 'Willkommen auf unserer Website!'

Exigences

  • rapidement Récupéré
  • modifié via le CMS à tout moment
  • facile d'ajouter de nouvelles langues

Ainsi est la meilleure solution pour le stocker dans une table de base de données? Et si oui, ce qui suit est la meilleure configuration de la table:

Une table, une colonne pour chaque langue et ligne pour chaque brève:

ID, brief, en, de, es 

Ou deux tables, l'une avec breifs, une avec les traductions :

ID, brief 

ID, language, translation 

Dans chaque page, je compte faire ....

echo $ page-> traduire (langue $, bref $);

plusieurs fois pour faire ressortir le besoin morceau de texte .... cela sera lent à continuer à appeler une base de données avec:

SELECT translation FROM translations 
WHERE language = 'es' AND brief = 'welcome_paragraph' 
LIMIT 1 

plusieurs fois sur chaque page? Y a-t-il donc une meilleure façon de stocker cela comme fichier plat? Ou un fichier PHP qui est généré sur la mise à jour contenant un large éventail de traductions?

$english = array(
'message1' => 'message1', 
'message2' => 'message2', 
'message3' => 'message3'); 


$german = array(
'message1' => 'Nachricht1', 
'message2' => 'Nachricht2', 
'message3' => 'Nachricht3'); 

Tout comme l'exemple sur la Zend Translate page Je ne suis pas envisage d'utiliser Zend Traduire en ce moment ... Je suppose qu'il ya un coût à cela?

+0

Pourquoi «généré à la volée»? Vous ne vous attendez pas à ce que les traductions changent au moment de l'exécution, n'est-ce pas? Pourquoi pas juste dans un PHP statique normal? – bobince

+0

"Je ne pense pas utiliser Zend Translate en ce moment ... je suppose qu'il y a un coût pour ça?" Si vous voulez dire le coût en dollars, non, il n'y a pas de coût. Le framework Zend est gratuit et open source, sous licence BSD. C'est à peu près aussi libre que possible. –

+0

J'ai changé "à la volée", devrait être sur la mise à jour, merci de signaler que bobince. –

Répondre

3

http://php.net/manual/en/book.gettext.php est la solution pour le site en plusieurs langues

vous pouvez jeter un oeil à regarder gettext wordpress en action.

+0

Je suis d'accord c'est la meilleure solution. Si vous allez dans la base de données, vous aurez besoin de mettre en place un cache, sinon c'est un énorme gaspillage de ressources. –