Мультиязычность как лучше сделать

Тема в разделе "PHP Pro", создана пользователем muzshura, 2 окт 2009.

Статус темы:
Закрыта.
  1. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Мультиязычность интерфейса как лучше сделать:

    какой вид должен иметь ленг-файл? например ini, csv или класс или массив или дефинед константы?
    в самом коде страниц что писать? <?php echo $g['txt']; ?> или {tpl_lng_txt} или что-то другое?

    помогите отсеять заранее плохие варианты.
     
  2. Zogr

    Zogr Постоялец

    Регистр.:
    6 июн 2008
    Сообщения:
    96
    Симпатии:
    7
    ТС, с такими краткими вводными ничего толкового сказать невозможно.
    Как минимум, опишите проект, с какой целью создавался, кем поддерживается и будет поддерживаться, планируется ли расширение, в сколько этапов планируется перевод и кем, и т.д.?
     
  3. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Zogr, не флуди, ладно?
     
  4. MrScruff

    MrScruff

    Регистр.:
    9 сен 2008
    Сообщения:
    278
    Симпатии:
    66
    как по мне, так лучше всего с помощью define делать в отдельных lang-файлах. А в код вставлять эти переменные. То, что в скобках "{}" это SMARTY. Юзать, конечно, желательно. Но немного больше гемора возникнет с настройкой вывода переменных.
    Кстати, немаловажный вопрос: Как будет проходить переключение между языками для юзеров. И как ты собираешься реализовывать перевод материалов из админки (если вообще таковая планируется).
    Что-то мне кажется, что ТС взвалил на себя неподъемную задачу. Сделать локализацию просто. Гораздо сложнее всё спроектировать так, чтобы это было удобно для посетителя :)
     
  5. Zogr

    Zogr Постоялец

    Регистр.:
    6 июн 2008
    Сообщения:
    96
    Симпатии:
    7
    Ничего себе не флуди.
    Если интерфейс будет переводить сам программер - это одно решение, если интерфейс будет переводить сторонний переводчик - это совершенно другое решение, если требуется производительность - третье, если будет подключаться со временем другие языки - четвертое и ещё полно тонкостей. Везде свои нюансы, а в том виде, что вы спрашиваете - это теория сферического коня в вакууме, "сделайте мне красиво" (с).
    Ну, успеха.
     
  6. waldicom

    waldicom Создатель

    Регистр.:
    15 мар 2009
    Сообщения:
    41
    Симпатии:
    3
    Плохо себе представляю, что на каждый из вышеописанных вариантов нужен свой вариант реализации многоязычности.
    Можно примером показать реализацию на каждый из вышеописанных условий?
     
  7. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    Самый простой вариант автоматически инклюдящие по структуре файлы с define константами или перемеными. Пример можно глянуть в битриксе.

    Либо юзать все тот же .po. Пример в вордпрессе. Тут сложнее.
     
  8. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    Вариантов масса. Тут ведь все зависит не только от интерфейса. Его можно в отдельные языковые файлы покидать и подключать соответственно, а там определить массивы переменных, вывод же делать функцией, которая по текущему выбранному языку выводит нужное значение, либо просто инключить сразу нужный файл, если язык известен.
    Можно хранить все в базе. С интерфейсом будет непросто, придется создать нечто вроде словаря. Все зависит от того, насколько богат словарь на страницах. т.к. на производительность будет сильно влиять.
    А что планируете делать с контентом? Его как переводить? Где хранить? откуда выводить? Вот тут много вопросов...
     
  9. muzshura

    muzshura Постоялец

    Регистр.:
    27 фев 2008
    Сообщения:
    74
    Симпатии:
    3
    Остановился на файлах с define объявлением констант
     
Статус темы:
Закрыта.