За последние 24 часа нас посетили 54212 программистов и 1728 роботов. Сейчас ищут 889 программистов ...

Многоязычний сайт

Тема в разделе "Прочие вопросы по PHP", создана пользователем bruno, 1 апр 2007.

  1. bruno

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

    С нами с:
    9 дек 2006
    Сообщения:
    122
    Симпатии:
    0
    Есть допустим сайт на 2-3 языках. Переход между ними осуществляетса кликом мыши на соответствоющему линке(флагу-картинке). В этот момент в куки заносится название выбраного языка. Потом на каждой странице идет проверка языка и инклудитса соответствуещий файл, который содержит определения констант-заголовков и т. д. на соответствующем языке.
    Вся динамическая инфа хранитса в базе даных, которая модифицыруетса через СMS-админку. К этой инфе относитса: содержание страниц(заголовок, название в меню и собственно контент), новости(название, анонс, собственно новость), статистика...
    Задача стоить сделать с одноязычного сайта 3-х язычний. Со статической инфой на мой взгляд оптимальным будет инклудить соответствуещий файл (первый абзац). А от с динамической у меня есть пока 2 варианта:
    1. Создавать отдельние таблицы для новостей - news_ru, news_en, news_cz, аналогично для страниц - pages_ru, pages_en, news_cz. Со статистикой вообще интересно выходит - для 3 языков 3 статистики?!
    2. Создавать отдельние поля в 1 таблице - в страницах title_ru, title_en, title_cz; menu_name_ru, menu_name_en, menu_name_cz; content_ru, content_en, content_cz. Аналогично для новостей. Статистика тогда одна для всех (как в одноязычном варианте). - Но громоздкии таблицы выходят, и модифицыровать все таблицы в базе нужно+функцыи виборки MySQL.
    Какой подход лучше? Какие замечания вообще?
    Заранее спасибо!
     
  2. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    две таблицы:
    page: page_id, page_stat
    content: content_id, page_id, content_text, content_lang
     
  3. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    Что-то здесь не так ;)
    Допустим, у тебя есть 2 перевода для данной страницы page_id, соответственно 2 записи в таблице content.
    Что указывать странице в качестве content_id?
     
  4. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    тьфу, сорри, поправил :)
     
  5. bruno

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

    С нами с:
    9 дек 2006
    Сообщения:
    122
    Симпатии:
    0
    Мои 2 варианта мне больше нравлятса:)
    Больше даже 1. Не вижу ни каких "против" в этом подходе:)
     
  6. Mavir

    Mavir Guest

    Попробуй добавить динамически еще один язык.
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    bruno

    а если языков будет десятка два, а на подавляющем большинстве - 1-2 странички?

    имхо, лучше всего сделать так:

    page_id
    language_id
    title
    ...


    в этом случае количество языков перестанет играть значение)
     
  8. bruno

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

    С нами с:
    9 дек 2006
    Сообщения:
    122
    Симпатии:
    0
    DarkElf
    да нет смисла. Количество языков от 2 до 3.
    3-максимум
     
  9. ONK

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

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    bruno, единственный проект, который я делал за деньги, был сразу на 4-х языках, так что раз на раз не приходится и ситуация может быть совершенно не предсказуемой.

    Однако я бы сущность "page" заменил бы на сущность "content", т.к. на одной странице может быть несколько независимых блоков с данными, редактирование которых может быть никак не связано или связано слабо. Но тут всё зависит от принципов используемых средств автоматизации разработки.