Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сайт на несколько языков.
 
 автор: Zilog   (21.11.2008 в 22:59)   письмо автору
 
 

ВОт призадумался, если делать сайт с поддержкой нескольких языков - каким образо надо планировать движок сайта? Как вообще принято это реализовывать?

  Ответить  
 
 автор: DEM   (21.11.2008 в 23:22)   письмо автору
 
   для: Zilog   (21.11.2008 в 22:59)
 

Имеется ввиду интерфейс с разными языками? Ну я делал так в одном проекте: есть выпадающий список с языками, когда там что-то выбираешь это значение заносится в куки, иначе ставится по дефолту, ну а в каждом модуле (находитсяв папке modules/NAME_MODULES/) есть папочка lang в которой есть файлы типа ru.php, eng.php и т.д. Ну а там уже текст типа:
<?
$name 
"Название модуля";
$button_add_news "Добавить новость";
$button_edit_news "Редактировать новость";
.............
?>


Ну что-то вроде такого...

  Ответить  
 
 автор: Zilog   (21.11.2008 в 23:43)   письмо автору
 
   для: DEM   (21.11.2008 в 23:22)
 

ну как хранить переменную о текущем выборе языка, я думаю, и самому можно ;)

вопрос в следующем: страница состоит из множется элементов, это титл, ключевые слова, название разделов, заголовки, тект, подписи к фоткам и т.д. дохрена короче.
как быть со всеми эти данными?

мне на ум пришло только одно решение, но я не думаю что оно верное не в полной мере - создать для текстовых значений дополнительные языковые поля, куда вставлялись бы текста в админке. А выввод сделать несложно...

Но этот способ просто кошмарит, если представить сколько полей разного толка разведется...

  Ответить  
 
 автор: Николай2357   (21.11.2008 в 23:58)   письмо автору
 
   для: Zilog   (21.11.2008 в 22:59)
 

Ну чего Вы изобритаете велосипед. Ведь для этого давно придуманы константы. Пишите не
<?
echo "<b>".$text:."</b>";

a
<?
echo "<b>".TEXT."</b>";
к примеру.
а константу определяйте в отдельном файлее.

PS объяснил путанно, но как сумел. если сложно - готов проще.

  Ответить  
 
 автор: Zilog   (22.11.2008 в 00:41)   письмо автору
 
   для: Николай2357   (21.11.2008 в 23:58)
 

Николай, спасибо.
Только речь идет скорее не о выводе, а о способе хранения текста на разных языках. Учитывая, что таблиц много, куча полей разного толка...


На ум пришло ещё одно решение - все поля, в которых сейчас храниться текст, сделать ссылками (id) на другую таблицу, которая хранит все (и только) текстовые значения. А её уж сделать в три колонки, соответственно для трех языков. И выводить удобно, и админку будет несложно сделать. И поля любые можно привинтить, в т.ч. из разных таблиц и модулей.

помоему это самое красивое решение.

  Ответить  
 
 автор: Valick   (22.11.2008 в 01:01)   письмо автору
 
   для: Zilog   (22.11.2008 в 00:41)
 

Да это и есть два основных решения либо базы либо константы. (с константами проще, но с базами гибче можно разные части на разных языках выводить)

  Ответить  
 
 автор: Zilog   (22.11.2008 в 02:38)   письмо автору
 
   для: Valick   (22.11.2008 в 01:01)
 

так, ну уже ближе к делу.
может кто скажет, как правильно структуру баз сделать?
вот я описал два своих варианта, мне по духу ближе последний. что скажете вы?

  Ответить  
 
 автор: Николай2357   (22.11.2008 в 03:04)   письмо автору
 
   для: 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 ");
// И ДАЛЕЕ ПО ТЕКСТУ

  Ответить  
 
 автор: Zilog   (22.11.2008 в 13:45)   письмо автору
 
   для: Николай2357   (22.11.2008 в 03:04)
 

Ну да, только вернее получается держать в одной таблице. Ибо если поле тогда будет ссылаться только на одну таблицу (!), где по колонкам доступен нужный перевод. иначе пришлось бы хранить для поля не только ссылку, но и имя таблицы с переводом...

думаю, структура таблицы должны быть такой:
id, lang_rus, lang_eng, lang_mars

соответственно по полям будет идти сслыка на поле в таблице текстовых значений.

  Ответить  
 
 автор: Valick   (22.11.2008 в 07:54)   письмо автору
 
   для: Zilog   (22.11.2008 в 02:38)
 

может кто скажет, как правильно структуру баз сделать?
я бы сделал так как вы сказали.. таблица с полями на разных языках.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования