|
|
|
| ВОт призадумался, если делать сайт с поддержкой нескольких языков - каким образо надо планировать движок сайта? Как вообще принято это реализовывать? | |
|
|
|
|
|
|
|
для: Zilog
(21.11.2008 в 22:59)
| | Имеется ввиду интерфейс с разными языками? Ну я делал так в одном проекте: есть выпадающий список с языками, когда там что-то выбираешь это значение заносится в куки, иначе ставится по дефолту, ну а в каждом модуле (находитсяв папке modules/NAME_MODULES/) есть папочка lang в которой есть файлы типа ru.php, eng.php и т.д. Ну а там уже текст типа:
<?
$name = "Название модуля";
$button_add_news = "Добавить новость";
$button_edit_news = "Редактировать новость";
.............
?>
|
Ну что-то вроде такого... | |
|
|
|
|
|
|
|
для: DEM
(21.11.2008 в 23:22)
| | ну как хранить переменную о текущем выборе языка, я думаю, и самому можно ;)
вопрос в следующем: страница состоит из множется элементов, это титл, ключевые слова, название разделов, заголовки, тект, подписи к фоткам и т.д. дохрена короче.
как быть со всеми эти данными?
мне на ум пришло только одно решение, но я не думаю что оно верное не в полной мере - создать для текстовых значений дополнительные языковые поля, куда вставлялись бы текста в админке. А выввод сделать несложно...
Но этот способ просто кошмарит, если представить сколько полей разного толка разведется... | |
|
|
|
|
|
|
|
для: Zilog
(21.11.2008 в 22:59)
| | Ну чего Вы изобритаете велосипед. Ведь для этого давно придуманы константы. Пишите не
<?
echo "<b>".$text:."</b>";
|
a
<?
echo "<b>".TEXT."</b>";
| к примеру.
а константу определяйте в отдельном файлее.
PS объяснил путанно, но как сумел. если сложно - готов проще. | |
|
|
|
|
|
|
|
для: Николай2357
(21.11.2008 в 23:58)
| | Николай, спасибо.
Только речь идет скорее не о выводе, а о способе хранения текста на разных языках. Учитывая, что таблиц много, куча полей разного толка...
На ум пришло ещё одно решение - все поля, в которых сейчас храниться текст, сделать ссылками (id) на другую таблицу, которая хранит все (и только) текстовые значения. А её уж сделать в три колонки, соответственно для трех языков. И выводить удобно, и админку будет несложно сделать. И поля любые можно привинтить, в т.ч. из разных таблиц и модулей.
помоему это самое красивое решение. | |
|
|
|
|
|
|
|
для: Zilog
(22.11.2008 в 00:41)
| | Да это и есть два основных решения либо базы либо константы. (с константами проще, но с базами гибче можно разные части на разных языках выводить) | |
|
|
|
|
|
|
|
для: Valick
(22.11.2008 в 01:01)
| | так, ну уже ближе к делу.
может кто скажет, как правильно структуру баз сделать?
вот я описал два своих варианта, мне по духу ближе последний. что скажете вы? | |
|
|
|
|
|
|
|
для: Zilog
(22.11.2008 в 02:38)
| | Ну если Вы храните текст в разных переводах, и хотите вывести его именно тогда, когда нужно, то и записывайте его в разных вариантах. И скорее всего верно держать его в разных таблицах. Правда не ясна структура базы данных...
А вывести его можно, определяя эту таблицу, к примеру так:
<?
switch($language)
{
case "ru":
$table = "my_table_ru";
break;
.
.
.
case "kaz":
$table = "my_table_kaz";
break;
default:
$table = "my_table_ru";
}
$result = mysql_query("SELECT `text` FROM $table ");
// И ДАЛЕЕ ПО ТЕКСТУ
|
| |
|
|
|
|
|
|
|
для: Николай2357
(22.11.2008 в 03:04)
| | Ну да, только вернее получается держать в одной таблице. Ибо если поле тогда будет ссылаться только на одну таблицу (!), где по колонкам доступен нужный перевод. иначе пришлось бы хранить для поля не только ссылку, но и имя таблицы с переводом...
думаю, структура таблицы должны быть такой:
id, lang_rus, lang_eng, lang_mars
соответственно по полям будет идти сслыка на поле в таблице текстовых значений. | |
|
|
|
|
|
|
|
для: Zilog
(22.11.2008 в 02:38)
| | может кто скажет, как правильно структуру баз сделать?
я бы сделал так как вы сказали.. таблица с полями на разных языках. | |
|
|
|