2010-04-07 4 views
3

Я работаю над обновлением нашего сайта для работы на разных языках.Самый быстрый способ сохранить и получить переведенный текст - базу данных или плоский файл?

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

Пример
ID => '1'
краток => 'welcome_paragraph'
еп => 'Добро пожаловать на наш сайт!
de => 'Willkommen auf unserer Website!'

Требования

  • быстро извлекаемые
  • отредактирован с помощью CMS в любое время
  • легко добавлять новые языки

Так является лучшим решением для хранения этого в таблице базы данных? И если да, то какие из следующих лучше настройки таблицы:

Одна таблица, столбец для каждого языка и строк для каждого вкратце:

ID, brief, en, de, es 

Или две таблицы, одна с breifs, один с переводами :

ID, brief 

ID, language, translation 

в каждой странице, я намерен сделать ....

эхо $ PAGE-> перевести ($ язык, $ краткое);

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

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

несколько раз на каждой странице? Есть ли лучший способ сохранить это как flatfile? Или файл PHP, который генерируется при обновлении, содержащий большой массив переводов?

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


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

Многое, как например, на Zend Translate page Я не рассматриваю возможность использования Zend Перевести на это время ... Я предполагаю, что есть расходы на это?

+0

Почему «генерируется на лету»? Вы не ожидаете, что переводы будут меняться во время выполнения, не так ли? Почему бы не просто включить обычный статический PHP? – bobince

+0

«Я не понимаю, используя Zend Translate в это время ... Я предполагаю, что для этого есть стоимость?» Если вы имеете в виду стоимость, как в долларах, нет, нет никакой платы. Zend Framework является бесплатным и открытым исходным кодом под лицензией BSD. Это примерно так же свободно, как и получается. –

+0

Я изменил «на лету», должен быть на обновлении, спасибо за указание, что из bobince. –

ответ

3

http://php.net/manual/en/book.gettext.php является решения для сайта многоязычного

вы посмотрите на WordPress можно смотреть Gettext в действии.

+0

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