Мультиязычный интерфейс

  • Автор темы Автор темы yrtimD
  • Дата начала Дата начала
Автор оригинала: yrtimD
makRo:
..
Это универсальный вариант для любого кол-ва языков, новостей, топиков, стилей, юзеров и т.п.
но не эффективный ИМХО
 
вот назрела необходимость создавать этот велосипед
сегодня родил алгоритм, предложенный makRo чуть выше :)))

проблема - избыточность....

сегодня на форуме все что нашел перечитал, вот здесь дельное предложения как от избыточности избавиться...
http://phpclub.net/talk/showthread.php?s=&threadid=3221

я к чему? все это обсуждалось даавно... может, прогресс за этот год родил что-нить типа gettext для СУБД, никто из уважаемых участников не в курсе?
есть у кого практические реализации многоязычного сайта на БД?
а то писать 2 дня этот велосипед - время жалко, если он уже ржавый....

Заране благодарю за помощь.
 
остановился на вот этом варианте, предложенном в
http://phpclub.net/talk/showthread.php?s=&threadid=3221:

таблица структуры
----------------------------------
Таблица 1: id, parent

языковые таблицы
----------------------------------
Таблица 2: id, message
Таблица 3: id, message
Таблица 4: id, message

пусть кода для обработки больше, зато все очень оптимально и универсально :)
сегодня утром написал код для консоли и клиента новостей, действительно - очень удобно.
 
у меня для этого(и не только) писан свой класс,
очень простой..
1. берет язык интерфейса из профиля пользователя
2. если пользователь не зареген берет язык по умолчанию
3. подгружает все файлы из диры:
PHP:
"/lang/".$lang."/"
В каждой такой дире несколько файлов, для каждого модуля к сайту соответственно, типа:
main.inc
gb.inc
forum.inc
etc.
4. делает глобальный массив со всеми элементами
аля
PHP:
$GLOBALS['langpack']['clickme']="нажмика";
5. если массив создан - то больше к фалам не обращается, а берет все из него..
ну и вытаскивается все функцией:
PHP:
$msg->textMsg("clickme");
Есть ряд других функций для оформления текста и т.п.
 
Я сделал проще...
сайт: http://www.gold-valley.academ.org

есть директории:
lang/eng/
lang/rus/

в них лежит набор файлов с одинаковыми именами:
navigation.ttx

в каждой дире - на своем языке.

а в коде уже:
PHP:
$page = new Template();
$vars = VARS::LV_fromfile( '/lang/' . $lang . '/filename.ttx' );
$page->load_vars( $vars );

Как видите - работает. ;-))
 
попробовал для данных которые не в БД gettext - все классно
только кешируется сильно, обновление .mo не видит...
может кто подскажет, как побороть?
 
to DiMA
Вопрос-то был не в том как производить замену на нужный язык( простите корявость языка, но смысл понятен). Вопрос в том ГДЕ хранить языки. У тебя как я понял вариант 4. Хотя идея мне понравилась. Вот буду делать мультиязыковую поддержку и всуну это туда!

>Вариант с вызовом функции m() не подходит, так как я не одобряю использование php-кода в HTML-шаблонах.

А не кто и не использует PHP в html!
 
Сверху