2010-07-04 2 views
0

Возможные Дубликаты:
Create a webpage with Multilanguage in PHP
PHP - how to translate a website into multiple languages?Как я могу сделать многоязычный сайт?

Я хочу сделать сайт, который будет иметь 3-х языках - например, Английский, арабский и итальянский; уверен, что контент будет отличаться от одного языка к другому.

Должен ли я сделать другую таблицу для каждого языка, например:

en_articles 
ar_articles 
it_articles 

друг с одной и той же статье в другом языке,

или сделать один стол articles как это:

article_id 
article_en_title 
article_ar_title 
article_it_title 

Пожалуйста, посоветуй мне.

+1

Я предполагаю, что я пошёл бы с несколькими таблицами для каждого языка и имел бы таблицу со всеми доступными языками или те же централизованные в массиве или что-то подобное. – Prix

+1

Это было задано в нескольких вариантах. Поиск SO для «php i18n» и «php multilanguage» должен дать некоторые результаты. –

+0

См. Также: http://stackoverflow.com/questions/954160/php-how-to-translate-a-website-into-multiple-languages ​​ – Piskvor

ответ

1

Если вы очень уверены, что вы собираетесь работать только с 3-х языках, лучшим вариантом является использование одной таблицы с тремя столбцами, один для языка:

article_id 
article_en_title 
article_ar_title 
article_it_title 

Если в конце концов, вам нужно добавить другой язык, добавьте только другой столбец.

Если вы считаете, что собираетесь добавлять другие языки, o хотите использовать код для других веб-языков с разными языками, я считаю, что лучшим решением является использование 3 таблиц, один для языков, один для статьи и другая таблица для связи Them

стола "языки"

language_iso 
language_name 

стола "статьи"

article_id 
article_name (Internal name for the article) 

стола "articles_x_languages"

article_id 
language_iso 
article_title 
article_text 

Я предполагаю, что у вас будет каждая статья на трех языках. Пример:

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

Я хотел бы предложить вам создать только одну таблицу для статей и поставить колонку для языка. Так что, если вам нужно добавить новый язык вам не нужно ничего менять в своем дб

+0

как, если я хочу добавить новый, это потребует изменения в таблице, чтобы добавить новое поле с этим lang, если я использовал ваш метод –

+0

В вашем первом методе вам нужно было бы создать новую таблицу, а во втором методе вам нужно было бы создать новый столбец. В представленном мной методе, когда вы добавляете новую запись, поместите в столбец языка значение нового языка –

3

Создать таблицу со списком языков, таблицу статей со столбцом языка. Таким образом, если вы добавляете новый язык, вам нужно только добавить его в таблицу языков.

Пример:

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! | 

Таким образом, вам не нужно будет изменить схему базы данных при добавлении языков. Как вы можете видеть, есть одна таблица articles с одним столбцом content - значительно проще в использовании, чем несколько таблиц статей или несколько столбцов контента.

Смежные вопросы