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

makRo

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

Rynor

stay hungry
вот назрела необходимость создавать этот велосипед
сегодня родил алгоритм, предложенный makRo чуть выше :)))

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

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

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

Заране благодарю за помощь.
 

Rynor

stay hungry
остановился на вот этом варианте, предложенном в
http://phpclub.net/talk/showthread.php?s=&threadid=3221:

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

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

пусть кода для обработки больше, зато все очень оптимально и универсально :)
сегодня утром написал код для консоли и клиента новостей, действительно - очень удобно.
 

GL

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

Bee

Guest
Я сделал проще...
сайт: 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 );
Как видите - работает. ;-))
 

Rynor

stay hungry
попробовал для данных которые не в БД gettext - все классно
только кешируется сильно, обновление .mo не видит...
может кто подскажет, как побороть?
 

Iron

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

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

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