[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Смена языков
Эли4ка
Привет,помогите скрипт создать для переключения языков как его можно собрать?..



Спустя 1 час, 24 минуты, 9 секунд (16.04.2011 - 09:18) neadekvat написал(а):
Примерный алгоритм:
1. Создаем каталог lang, в нем записываем файлы ru.php, en.php и сколько еще хочешь. В них составляем словарь слов, которые есть на сайте и вывод которых надо менять в зависимости от языка.
Желательно (а точнее - обязательно), чтобы в файлах была абсолютно одинаковая структура, до строчки. Единственное различие - значения переменных.
Файл может выглядеть например так:
$lng = array(
'auth' => 'Авторизация',
'login' => 'Логин',
'password' => 'Пароль',
);

Если таких слов много, то лучше сделать многомерный массив:
$lng = array(
'auth' => array(
'form_title' => 'Авторизация',
'login' => 'Логин',
'password' => 'Пароль',
),

'footer' => array(
'contacts' => 'Контакты',
'copyright' => 'Я жлоб',
),
);


2. На сайте вывешиваем ссылки на возможные языки. Дальше код, надеюсь, поймете сами, о чем там речь. Если не поймете - значит, вы еще не ходили в документацию. Сходите и поймите.
/*
В начале главного файла (если одна точка входа) добавляем этот код.
*/

$lng_array = array('ru', 'en'); // Список доступных языков
if (isset($_GET['lng']) && in_array($_GET['lng'], $lng_array)) {
setcookie('lng', $_GET['lng'], time() + 3600 * 24 * 30, '/');
$lng_file = $_GET['lng'];
} elseif (isset($_COOKIE['lng']) && in_array($_COOKIE['lng'], $lng_array))
$lng_file = $_GET['lng'];
else
$lng_file = 'ru'; // Язык по умолчаннию.

include $_SERVER['DOCUMENT_ROOT'] ."lang/$lng_file.php";


3. Собственно, все. Теперь в шаблонах вместо "Логин" надо написать:
echo $lng['auth']['login'];


4. Писал сейчас, "на коленке" можно сказать. Не используйте этот код ни в коем случаи - хрен знает, какие дырки я с утра то пропустил. Вы же хотели принцип :rolleyes:

Спустя 1 час, 16 минут, 44 секунды (16.04.2011 - 10:35) Trianon написал(а):
else
$lng_file = 'ru'; // Язык по умолчаннию.

выбор языка по умолчанию лучше базировать на данных поля ACCEPT_LANGUAGE заголовка запроса.

Спустя 48 минут, 50 секунд (16.04.2011 - 11:24) neadekvat написал(а):
Цитата (Trianon @ 16.04.2011 - 11:35)
выбор языка по умолчанию лучше базировать на данных поля ACCEPT_LANGUAGE заголовка запроса.

Согласен. Но это уже пусть реализует ТС smile.gif

Спустя 2 часа, 3 минуты, 57 секунд (16.04.2011 - 13:28) Guest написал(а):
neadekvat
Цитата
Но это уже пусть реализует ТС
ТС эт кто?

Спустя 24 минуты, 24 секунды (16.04.2011 - 13:52) Эли4ка написал(а):
wink.gif wink.gif спасибо..а можно вас попросить об одной услуге?давайте я вам код исходника дам а вы мне вставите?а то я чет немного запуталась?

Спустя 6 минут, 56 секунд (16.04.2011 - 13:59) neadekvat написал(а):
Цитата (Guest @ 16.04.2011 - 14:28)
ТС эт кто?

Топик Стартер. Автор темы.

Цитата (Эли4ка @ 16.04.2011 - 14:52)
а то я чет немного запуталась?

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

Спустя 7 минут, 7 секунд (16.04.2011 - 14:06) Эли4ка написал(а):
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
$_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
}
}


if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>
<html>
<
head>
<
title>Главная страница</title>
</
head>
<
body>
<
h2>Главная страница</h2>


<?php
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<form action="testreg.php" method="post">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<p>
<label>Ваш логин:<br></label>
<input name="login" type="text" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}


print <<<HERE
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<label>Ваш пароль:<br></label>
<input name="password" type="password" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}

print <<<HERE
</p>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<p>
<input name="save" type="checkbox" value='1'> Запомнить меня.
</p>
<p>
<input name="autovhod" type="checkbox" value='1'> Автоматический вход.
</p>

<p>
<input type="submit" name="submit" value="Войти">
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
<br>
<!-- ссылка на регистрацию, ведь как-то же должны гости туда попадать -->
<a href="reg.php">Зарегистрироваться</a>

<br>
<!-- ссылка на восстановление пароля -->
<a href="send_pass.php">Забыли пароль?</a>

</p></form>
<br>
Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a>

HERE;
}

else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************



print <<<HERE
|<a href='page.php?id=$_SESSION[id]'>Моя страница</a>|<a href='index.php'>Главная страница</a>|<a href='all_users.php'>Список пользователей</a>|<a href='exit.php'>Выход</a><br><br>

<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->
Вы вошли на сайт, как
$_SESSION[login]<br>
<!-- выше ссылка на выход из аккаунта -->

<a href='http://tvpavlovsk.sk6.ru/'>Эта ссылка доступна только зарегистрированным пользователям</a><br>
Ваш аватар:<br>
<img alt='
$_SESSION[login]' src='$myrow[avatar]'>
<!-- Выше отображается аватар. Его адрес содержит переменная
$myrow[avatar] -->

<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->


HERE;


//************************************************************************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.

}

?>
</body>
</
html>
-скрипт реги и куда тут ставить помоги прошу..

Спустя 10 минут, 7 секунд (16.04.2011 - 14:16) Игорь_Vasinsky написал(а):
Во-первых, весь текст выводимый для пользователей нужно писать переменными, которые заранее определены в языковых файлах (ru.php и en.php, допустим)

Потом сделать либо select, либо иконки флажков, при клике определяется языковой файл который будет подключаться, ну и определиться с языком по default-у, скажем ru.

Спустя 5 минут, 18 секунд (16.04.2011 - 14:22) Эли4ка написал(а):
ohmy.gif ohmy.gif Игорь_Vasinsky
прошу помоги..я скрипт ведь вывалила а?

Спустя 18 минут, 12 секунд (16.04.2011 - 14:40) Игорь_Vasinsky написал(а):
blink.gif ВОт все так... сами учиться не хотят (всё для них рассжовано), зато все хатят : интернет - магазины, онлайн игры, социальные сети и чтоб деньги с нх ручьем....

Для начала:

Я про консультирую как необходимо сделать на примере этой страницы (Регистрация).

Использовать будем самый приметивный вариант.

Далее всё самостоятельно.

Если всё устраивает, то:

1. создать каталог language (к примеру
2. создать 2 файла: ru.php и en.php
3. На странице регистрации есть текст (который выводится пользователям), например название полей формы и т.д.
- не обходимо:
3.1. Создать определить переменные (сначала для русского языка, например)
3.2. Открыть файл language/ru.php
3.3. Определить все слова и фразы со страницы регистрации
По примеру формы:

$you_login = "Ваш логин";
$you_password = "Вш пароль";
$save_me = "запомнить меня";

и в этом духе заполнить весь ru.php - фразами и словами, которые встречаются на странице регистрации.


ОК?

Спустя 33 минуты, 38 секунд (16.04.2011 - 15:13) Игорь_Vasinsky написал(а):
Принято как отказ.

Спустя 11 часов, 40 минут, 41 секунда (17.04.2011 - 02:54) Эли4ка написал(а):
Игорь_Vasinsky,я не хочу чтобы деньги были ручьем мне просто помощь нужна,потому что я все сделала как ты сказал а у мя не работает..я тебе и код выложила ну подправь ты его ведь тебе это не сложно?

Спустя 8 часов, 40 минут, 47 секунд (17.04.2011 - 11:35) Dr.Mars написал(а):
помогу стучи в лс о цене договоримся

Спустя 6 минут, 23 секунды (17.04.2011 - 11:41) Эли4ка написал(а):
давай ты мне7
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.