Перевод веб-сайта в 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
Есть две основные идеи, которые вы хотите быть уверенными в реализации. Во-первых, убедитесь, что вы интегрируете некоторую форму памяти переводов. Поставщик языка должен проинструктировать вас о том, как это сделать и, возможно, сделать это для вас.
Во-вторых, для каждого дополнительного языка, на который вы нацеливаетесь, ваши данные будут как минимум вдвое сложнее. Помните об этом, двигаясь вперед. Не только ваши данные, но и ваши наборы файлов, управление и т.д.
Надеюсь, что это поможет. Дайте мне знать, если у вас возникнут дополнительные вопросы.
Рассел