За последние 24 часа нас посетили 18872 программиста и 1632 робота. Сейчас ищут 857 программистов ...

многоязычный сайт

Тема в разделе "Вопросы от блондинок", создана пользователем sashkanar, 15 июл 2010.

  1. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    здравствуйте, делаю страничку, которая должна поддерживать несколько языков, как это делается правильно?

    на данном этапе, текст, который не меняется (не тянется из базы) сделал с помощью define и вывожу по ключам, в зависимости от выбранного языка, а как быть с контентом, что тянется из базы? делать для каждого языка свою таблицу или существует какой-то более адекватный способ?

    спасибо.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    добавить в БД поле "язык" =)
    А в случае, если подходящего языка нет - открывать дефолтным
     
  3. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    омг, точно)))) спасибо :)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Если сделать поле как unsigned tinyint это даст возможность иметь 255 языков =)
    выши крыши
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Если планируется полная многоязычность, то их разделяют по различным базам данных.
    Т.е там входят разные категории (внешняя связь), контент и так далее.
    Выходит, что гораздо выгоднее под это дело вести две отдельных базы данных, нежели таблицу или поле.
    Для перевода - GetText Extension
     
  6. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    в смысле? я думал это делается так, есть строчка с, например, именем, фамилией, ид и язык (енг или ру), и потом по енг или ру тянешь нужную?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    обычно пишут енг или ру. я люблю все формализованное переводить в числа. =) Операции с тиниинтом быстрые и удобные. Размер - один байт =) Пустячек, а приятно. Лучше, чем текстовое поле заводить. Но в 2010 по большому счету похрен.
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Magento смотрит на тебя как на гавно
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Неуж-то наши чувства стали наконец взаимными
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я встречал очень много разных реализаций мультиязычности.
    Первое, что используется очень часто, — столбик с постфиксом языка, text_rus, text_fr, text_en.
    Второе заключается в создании отдельного столбика с дескриптором языка. Этот столбик содержится во всех реализациях таблиц, где предполагается многоязычность. Там же выборка проходит по одному дополнительному условию.
    Третье - использование отдельной таблицы с постфиксом. Похоже на первое.
    Четвертое - разделение по отдельным базам данных.

    Для меня наиболее удобен последний вариант по множеству причин.
    Разные бэкапы, вынесение, очень гибкая настраиваемость для каждого языка и другие прелести.
    Последний вариант сопоставим со вторым, каждый из которых имеет свои преимущества, причем взаимовытесняющие.

    Первый и третий варианты я даже не рассматриваю как реальные, потому что ими чего-то добиваться жуть как.
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    ок, давайте усложним задачку. Добавим многосайтовость.

    сайт1, 2 языка (префиксы в урлах)
    сайт2, 3 языка (на поддоменах)

    Все из одной админки управляется. Сколько баз нужно, говоришь? 5?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а что плохого в базах? хоть сто. или это плохо? о_О
     
  13. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    у меня есть товар, который должен присутствовать на нескольких магазинах одновременно. И когда я редактирую его - изменения должны применяться на тех магазинах, где он есть.
     
  14. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я не рассматриваю вольных реализаций, только "под ключ".
    Приведенная выше схема решается одной языковой базой данных, в которой используются дескрипторы при выборке с таблиц. В данном случае это наиболее рациональный вариант. Но при этом появляется дополнительное условие выборки с объединением для огромных по размеру страниц с общим товаром. Опять-таки, можно редложить вынести общие детали в отдельную таблицу.

    Я не занимаюсь универсальными решениями, чтобы всем и сразу угодить.
    У меня есть задача, решаю её наиболее подходящим для этой задачи способом.
    Мне нравится вариант с дополнительным полем, да. Но не менее нравится вариант с разными БД.
     
  15. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    это значит дополнительное поле в каждой таблице с ключем языка или я не правильно понял?
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  17. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    а в чем тогда разница между первым и вторым способами?
     
  18. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Второй способ нормально расширяется, в отличие от первого.
     
  19. sashkanar

    sashkanar Активный пользователь

    С нами с:
    15 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    но ведь если и там и там отдельный столбик с идентификатором языка, то ээти два способа идентичны О_о. наверное я не очень понимаю, можно пример таблиц с первым и вторым вариантами?

    спасибо.
     
  20. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    он наверное имел ввиду введение столбика в каждую таблицу в первом случае и отдельной таблицы во втором случае
     
  21. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    ок, сейчас поймешь разницу. Покажи мне выборку статей (таблица articles) для эстонского языка.

    Apple, напомни, как правильно: et или ee? et вроде бы.
     
  22. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
  23. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    ee. Кстати, теперь он стал доступен для регистрации всем, не только юридическим лицам.
     
  24. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  25. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Koc
    Тогда да, et.
    Ты уточняй.