Перевод веб-сайта в php или mysql?

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

database : translation
tables:  language
column: id, english, french, german, italian, spanish

Или я думал о php-решении вроде:

english.php
french.php
german.php
italian.php
spanish.php

поэтому вы просто включаете файл, который вам нужен.

теперь, я могу видеть плюсы и минусы для обоих, то, что я хочу знать, является тем, что считается стандартом в отрасли, чтобы сделать что-то вроде этого?

Ответ 1

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

Вторым вариантом использования файла PHP с большим массивом (действительно большим для каждой строки) является наиболее распространенное решение.

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

Ответ 2

Нет промышленного стандарта. Я видел (и реализовал) решения, используя плоские файлы, XML, PHP-код, базу данных и gettext файлы для хранения локализованных строк. Это вопрос того, что более подходит для вас.

Мой метод go для PHP - это просто файлы, содержащие массивы строк, например

В файле En.php

return array (
    'How are you?' => 'How are you?',
    'Goodbye' => 'Goodbye',
);

de.php

return array (
    'How are you?' => 'Wie gehts?',
    'Goodbye' => 'Auf wiedersehen',
);

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

Моя любимая фреймворк PHP (Yii) и гигантский проект с открытым исходным кодом, над которым я работал (Moodle) также используют этот подход.

Ответ 3

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

Что делать, если вы решите перевести свой веб-сайт на другие языки, отличные от тех, которые считались русскими или китайскими? В первом случае вам нужно добавить все больше и больше столбцов, во втором вы должны создать все больше и больше файлов. Другими минусами является то, что, если вы переводите страницу на итальянский и испанский, но еще не на французский?

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

  • Создайте таблицу 'page' (id, title,...), где вы сохраните страницу на основном языке и где у вас будет информация о переведенной странице.
  • Создать таблицу 'translation' (idsource, idtranslation, language)
  • Каждый раз проверяйте доступные переводы и отдавайте их пользователям

Ответ 4

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

http://www.sisulizer.com/localization/software/server-desktop-database.shtml

Есть две основные идеи, которые вы хотите быть уверенными в реализации. Во-первых, убедитесь, что вы интегрируете некоторую форму памяти переводов. Поставщик языка должен проинструктировать вас о том, как это сделать и, возможно, сделать это для вас.

Во-вторых, для каждого дополнительного языка, на который вы нацеливаетесь, ваши данные будут как минимум вдвое сложнее. Помните об этом, двигаясь вперед. Не только ваши данные, но и ваши наборы файлов, управление и т.д.

Надеюсь, что это поможет. Дайте мне знать, если у вас возникнут дополнительные вопросы. Рассел