2010-07-04 6 views
0

Doublons possibles:
Create a webpage with Multilanguage in PHP
PHP - how to translate a website into multiple languages?Comment puis-je créer un site Web multilingue?

Je veux faire un site qui aura 3 langues - par exemple Anglais, arabe et italien; le contenu sera certainement différent d'une langue à l'autre.

Dois-je faire table différente pour chaque langue, par exemple:

en_articles 
ar_articles 
it_articles 

chacun avec le même article dans différentes langues,

ou faire une table articles comme ceci:

article_id 
article_en_title 
article_ar_title 
article_it_title 

Conseillez-moi, s'il-vous-plaît.

+1

Je suppose que je voudrais aller avec plusieurs tables pour chaque langue et avoir une table avec toutes les langues disponibles ou la même centralisée dans un tableau ou quelque chose de semblable. – Prix

+1

Cela a déjà été demandé dans un certain nombre de variantes. La recherche de SO pour "php i18n" et "php multilanguage" devrait donner quelques résultats. –

+0

Voir aussi: http://stackoverflow.com/questions/954160/php-how-to-translate-a-website-into-multiple-languages ​​ – Piskvor

Répondre

1

Si vous êtes sûr que vous allez travailler uniquement avec 3 langues, la meilleure option est d'utiliser une table, avec trois colonnes, une pour la langue:

article_id 
article_en_title 
article_ar_title 
article_it_title 

Si finalement vous devez ajouter autre langue, ajoutez seulement une autre colonne.

Si vous pensez que vous allez ajouter d'autres langues, o vous voulez utiliser le code pour d'autres langues avec différentes langues, je pense que la meilleure solution est d'utiliser 3 tables, une pour les langues, une pour le articles et autres tables relation eux

table "langues"

language_iso 
language_name 

table "articles"

article_id 
article_name (Internal name for the article) 

table "articles_x_languages"Je suppose que vous allez avoir chaque article dans les trois langues. Exemple:

Languages 
language_iso | language_name 
      en | English 
      ar | Arabic 
      it | Italian 

Articles 
article_id | article_name 
     1 | Sample 1 
     2 | Sample 2 

Articles_x_languages 
article_id | language_iso | article_title | article_text 
     1 |   en | english title | Lorem ipsum .. 
     1 |   ar | arabic title | Lorem ipsum .. 
     1 |   it | italian title | Lorem ipsum .. 
     2 |   en | english title | Lorem ipsum .. 
     2 |   ar | arabic title | Lorem ipsum .. 
     2 |   it | italian title | Lorem ipsum .. 
1

Je suggère que vous créez une seule table pour les articles et mettre une colonne pour la langue. Donc, si vous avez besoin d'ajouter une nouvelle langue que vous n'avez pas besoin de changer quoi que ce soit dans votre db

+0

comment si je veux ajouter un nouveau ce que vous voulez un changement dans la table pour ajouter un nouveau champ avec ce lang si j'ai utilisé votre méthode –

+0

Dans votre première méthode, vous devez créer une nouvelle table et dans votre seconde méthode, vous devez créer une nouvelle colonne. Dans la méthode que j'ai présentée, lorsque vous ajoutez une nouvelle entrée, mettez dans la colonne de langue la valeur de la nouvelle langue –

3

Créer une table avec une liste des langues et une table d'articles avec une colonne de langue. Ainsi, si vous ajoutez une nouvelle langue, vous n'avez qu'à l'ajouter à la table des langues.

Exemple:

table `languages`: 
| id | name | 
================ 
| 1 | English | 
| 2 | Arabic | 
| 3 | Italian | 

table `articles` (only relevant columns): 
| language_id | title  | content         | 
======================================================================= 
|   1 | Some title | Some content in English     | 
|   3 | Ascia  | Dio mio! C'e' un' ascia nella mia testa! | 
|   1 | Axe  | Oh my god! There's an axe in my head! | 

De cette façon, vous ne serez pas besoin de changer le schéma de base de données lors de l'ajout des langues. Comme vous pouvez le voir, il existe une table articles avec une colonne content - nettement plus simple à utiliser que plusieurs tables d'articles ou plusieurs colonnes de contenu.