ФорумПрограммированиеPHP для идиотов → Поддержка мультиязычности в веб-проектах, варианты реализации

Поддержка мультиязычности в веб-проектах, варианты реализации

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 21 августа 2014 г. 8:49

    Столкнулся с необходимостью реализовать поддержку нескольких языков на сайте, как грамотно сделать структуру бд?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 9:15, спустя 25 минут 49 секунд

    как нравится)

    Сапожник без сапог
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 21 августа 2014 г. 9:50, спустя 34 минуты 42 секунды

    не подходит)
    нужно сделать так чтобы потом не ауеть все переделывать, понятно что учимся на своих ошибках, но все же))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 10:13, спустя 22 минуты 57 секунд

    у нас дубль полей просто в таблице с постфиксами

    title_ru, title_en, title_it и тп. много проблем решает. в принципе давно делал архитектуру, на уровне модели все автоматически читается/пишется в нужные колонки. не надо следить за синхронизацией переводов и тп. стер строку и нет дублей под перевод :)

    выборки в 1 запрос без джойнов что тоже немаловажно.

    вообще по факту путей немного:
    1. extra columns в той же таблице
    2. m2m связь с отдельной таблицей
    3. одна большая таблица под все переводы с id model type, id model row, column name.

    первое самое простое судя по всему и по производительности тоже.
    второе добавляет join по таблице
    третье вообще пиздец. гдето видел такое, мудаки разрабы производительность там в районе 0

    Сапожник без сапог
  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 21 августа 2014 г. 10:31, спустя 18 минут 18 секунд

    mongo рулит
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 10:32, спустя 25 секунд

    mongo рулит

    @Ivan., )))))

    Спустя 25 сек.

    а пруфы?)

    Спустя 39 сек.

    кстати как вариант - поле делать longtext например и хуярить в него json data - вот тебе и монга. только пара проблем с этим есть конечно, например поиск по нему будет непросто сделать)

    Сапожник без сапог
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 21 августа 2014 г. 10:39, спустя 7 минут 50 секунд

    сэнкс дуд)
    на хабре нашел несколько вариантов, ближе всего все же твой, более гибкий все же + поиск легко по такой сделать))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 10:49, спустя 10 минут

    сэнкс дуд)

    на хабре нашел несколько вариантов, ближе всего все же твой, более гибкий все
    же + поиск легко по такой сделать))

    @malaba, ну он как самый простой. хотя конечно многое зависит от обстоятельств. ворпресс вон вообще просто ебошат посты отдельные с ингл названием, но там хитрее все, у них можно остальную логику привязать к этим постам, там это было специально сделано, мне такого не надо, поэтому легкий путь, как всегда :)

    Сапожник без сапог
  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 21 августа 2014 г. 11:01, спустя 12 минут 3 секунды

    поле делать longtext например и хуярить в него json data - вот тебе и монга

    ебать ты извращенец
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 11:03, спустя 1 минуту 32 секунды

    @Ivan., обоснуй?

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 12:42, спустя 1 час 39 минут 13 секунд

    @malaba, ты бы сначала пояснил что именно имеешь в виду. Потому что «интернационализировать интерфейс» и «управлять контентом на нескольких языках» это принципиально разные вещи.

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

    С контентом только одно стопудовое правило: локаль должна задаваться в URL. Иначе будут проблемы.

    ιιlllιlllι унц-унц
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 21 августа 2014 г. 13:43, спустя 1 час 58 секунд

    да я про контент имел ввиду) Почему локаль через урл? Ссылкой в куку если загнать и проверять потом если?
    gettext - отдельная утилита, реализовать все на пыхе можно попробовать, в этом будет толк?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 14:05, спустя 21 минуту 31 секунду

    С контентом только одно стопудовое правило: локаль должна задаваться в URL. Иначе будут проблемы.

    ну да

    Сапожник без сапог
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 21 августа 2014 г. 14:07, спустя 2 минуты 41 секунду

    ОЙойой)
    Почему локаль через урл? Ссылкой в куку если загнать и проверять потом если?


  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2014 г. 14:46, спустя 38 минут 17 секунд

    @malaba, почитай что такое seo клоакинг. это как раз то о чем ты говоришь. лучше не делать так можно фильтров хапнуть от поисковиков.

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!