здравствуйте, делаю страничку, которая должна поддерживать несколько языков, как это делается правильно? на данном этапе, текст, который не меняется (не тянется из базы) сделал с помощью define и вывожу по ключам, в зависимости от выбранного языка, а как быть с контентом, что тянется из базы? делать для каждого языка свою таблицу или существует какой-то более адекватный способ? спасибо.
Если планируется полная многоязычность, то их разделяют по различным базам данных. Т.е там входят разные категории (внешняя связь), контент и так далее. Выходит, что гораздо выгоднее под это дело вести две отдельных базы данных, нежели таблицу или поле. Для перевода - GetText Extension
в смысле? я думал это делается так, есть строчка с, например, именем, фамилией, ид и язык (енг или ру), и потом по енг или ру тянешь нужную?
обычно пишут енг или ру. я люблю все формализованное переводить в числа. =) Операции с тиниинтом быстрые и удобные. Размер - один байт =) Пустячек, а приятно. Лучше, чем текстовое поле заводить. Но в 2010 по большому счету похрен.
Я встречал очень много разных реализаций мультиязычности. Первое, что используется очень часто, — столбик с постфиксом языка, text_rus, text_fr, text_en. Второе заключается в создании отдельного столбика с дескриптором языка. Этот столбик содержится во всех реализациях таблиц, где предполагается многоязычность. Там же выборка проходит по одному дополнительному условию. Третье - использование отдельной таблицы с постфиксом. Похоже на первое. Четвертое - разделение по отдельным базам данных. Для меня наиболее удобен последний вариант по множеству причин. Разные бэкапы, вынесение, очень гибкая настраиваемость для каждого языка и другие прелести. Последний вариант сопоставим со вторым, каждый из которых имеет свои преимущества, причем взаимовытесняющие. Первый и третий варианты я даже не рассматриваю как реальные, потому что ими чего-то добиваться жуть как.
ок, давайте усложним задачку. Добавим многосайтовость. сайт1, 2 языка (префиксы в урлах) сайт2, 3 языка (на поддоменах) Все из одной админки управляется. Сколько баз нужно, говоришь? 5?
у меня есть товар, который должен присутствовать на нескольких магазинах одновременно. И когда я редактирую его - изменения должны применяться на тех магазинах, где он есть.
Я не рассматриваю вольных реализаций, только "под ключ". Приведенная выше схема решается одной языковой базой данных, в которой используются дескрипторы при выборке с таблиц. В данном случае это наиболее рациональный вариант. Но при этом появляется дополнительное условие выборки с объединением для огромных по размеру страниц с общим товаром. Опять-таки, можно редложить вынести общие детали в отдельную таблицу. Я не занимаюсь универсальными решениями, чтобы всем и сразу угодить. У меня есть задача, решаю её наиболее подходящим для этой задачи способом. Мне нравится вариант с дополнительным полем, да. Но не менее нравится вариант с разными БД.
но ведь если и там и там отдельный столбик с идентификатором языка, то ээти два способа идентичны О_о. наверное я не очень понимаю, можно пример таблиц с первым и вторым вариантами? спасибо.
он наверное имел ввиду введение столбика в каждую таблицу в первом случае и отдельной таблицы во втором случае
ок, сейчас поймешь разницу. Покажи мне выборку статей (таблица articles) для эстонского языка. Apple, напомни, как правильно: et или ee? et вроде бы.
так я ж не про домен а про стандарт ISO для language codes http://www.loc.gov/standards/iso639-2/php/code_list.php