Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мультиязыковая поддержка, реализация 
V
    Опции темы
feosr
Дата 12.11.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



вобщем срочно надо сделать подобное. Схема действй пользователя:

он нажимает на кнопку соответсвующего языка и к адресу добавляется &lang=de. При этом куда бы он потом по сайту не отправился доложно добавляться это к адресу. ну вы поняли. + нужна проверка на то есть ли такая переменная, если есть то равна ли она de или чемуто еще...

пытался сделать через isset но увы ничего дельного невышло. Помогите, очень прашу.

мне хотябы примерчик маленькай...
PM MAIL WWW ICQ   Вверх
feosr
Дата 12.11.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



вопрос решен частично. $_REQUEST cbkf
PM MAIL WWW ICQ   Вверх
skyboy
Дата 12.11.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



надо делать через механизм сессий($_SESSION). в противном случае, тебе в каждe. ссылку придется вставлять это lang=de. А если через сессию, то ?lang=de цепляешь только на ссылку смены языка. По-моему, намного удобнее.
PM MAIL   Вверх
sw04
Дата 12.11.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



лучше на $_SESSION вешать..или в куки забивать.


--------------------
<удалено администрацией>
PM   Вверх
Alukard
Дата 12.11.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Начинаешь сессию, записываешь переменную $lang в суперглобальный массив $_SESSION, потом в каждом файле в начале записываешь проверку переменной типа:
Код

if(isset($_SESSION['lang']))
{
if($_SESSION['lang']=='de')
{
//То-то то-то действие
}
else
{
//Случай если язык другой
}
}
else
{
//если отсутствует переменная
}

--------------------
Блог блогу рознь: Алукардные РецептыPHP, Операционные системы, Россия & США...etc.
PM MAIL   Вверх
skyboy
Дата 13.11.2007, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Alukard, и если 5 языков - делать 5 if'ов на каждый  текстовый блок? F когда добавляем поддержку ещё одного языка - лопатить уйму кода в поисках этих "вилок"? Нет уж. Гораздо лучше занести данные в БД, так, чтоб каждый блок был связан с конкретным языком. Тогда мы можем унифицировать работу с текстом. Вместо:
Код

if($lang = 'de')
 echo 'Was ist das?';
if($lang = 'en')
 echo 'What is it?';
if($lang= 'ru')
 echo 'Что это?';

создаем таблицу textblocks из трех полей: target - идентификатор "назначения" блока(чтоб разноязычные блоки одного назначения различать), language - идентификатор языка и textblock - сам блок текста(кодировку таблицы, естественно, ставим utf-8 или utf-16). Конечно, намного лучше будет создать ещё ключ(суррогатный - автоинкремент или естественный - некий код назначения блока + идентифкатор языка), но на суть это не повлияет.
После чего работа выглядит следующим:
Код

echo loadBlock('full_text',$_SESSION['currentLang']);

И все!
функция же загрузки совсем невелика и выглядит примерно так:
Код

function loadBlock($identifier, $language) {
 $result= '';
 if($query= database_query('SELECT textblock` FROM `textblocks` WHERE `target`="'.$identifier.'" AND `language`="'.$language.'"'))
  if($row= get_next_row($query)) {
    $result= $row['textblock'];
  }
 return $result;
}

Разве что абстрактные в моем примере функции database_query и gt_next_row  будут заменены на функции работы с конкретной БД.
И что самое главное - для добавления нового яызка надо будет всего лишь забить данные в БД. И никакой переработки кода!
PM MAIL   Вверх
MoLeX
  Дата 13.11.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



skyboy, правильно гришь и неполохой пример привел smile 
Alukard, сам попробуй воспользоваться своей конструкцией, через 2 дня кодинга взвоешь... 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
BuShaRt
Дата 13.11.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



(!empty), а не (isset)
PM MAIL   Вверх
feosr
Дата 14.11.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



буду знать, уже сделал через request Но.....
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.