Самый быстрый способ хранения и извлечения переведенного текста - база данных или плоский файл? - PullRequest
3 голосов
/ 07 апреля 2010

Я работаю над обновлением нашего сайта для работы на разных языках.

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

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

Требования

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

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

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

ID, brief, en, de, es

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

ID, brief

ID, language, translation

На каждой странице я собираюсь сделать ....

echo $ page-> translate ($ language, $rief);

Несколько раз, чтобы вывести требуемый фрагмент текста .... будет ли медленно вызывать базу данных с:

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 В настоящее время я не рассматриваю возможность использования Zend Translate ... Полагаю, что это обходится?

1 Ответ

3 голосов
/ 07 апреля 2010

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

Вы можете взглянуть на WordPress, чтобы посмотреть gettext в действии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...