Смена языка

Статус
В этой теме нельзя размещать новые ответы.

6matko

Старейшина
Репутация
15 / 1 164
И так, вопрос всем у кого есть хоть какие идеи по поводу этих скрина, по скрину что можно сказать ? Как такое реализовать можно ? Типо: Жмёш на флаг какой-то страны и язык игры меняется на тот язык, который у этого флага, опять таки в скрине русский, жму допустим на американский флаг, язык игры меняется на англ...




И ещё раз вопрос крупным планом :)

Как такое можно реализвоать ? Статьи по пхп, личные мысли, советы и.т.д. В СТУДИЮ!
 
Достаточно не сложно, весь текст который видит пользователь должен содержаться в отдельных файлах (можно и в текстовом и в php и в базе хранить кому что ближе) разбитых по языкам. Ну вот к примеру храним весь текст в пхп файле, каждой строке присваиваем элемент массива, и там где должен текст выводиться просто выводим определенное поле массива. А чтобы языки можно менять мы делаем условие по которому конект к файлу с языком будет на разные файлы, к примеру:
Код:
switch ($language) {
case "ru":
    include("language/ru.php");
    break;
case "en":
    include("language/en.php");
    break;
Вот и все, массивы в каждом файле должны быть одинаковые, это достаточно простой вариант. Единственная проблема будет с кодировкой, тебе нужно будет тогда переписывать игру на utf8
 
хммм... а ещё способы есть ? а лучше статейку(название или линк) на эту тему с примерами, а то я не очень догадываюсь чё писать в файлах languages/ru.php и в самом файле(может где в паблике уже что-то приблезительное делали ?)
 
В паблик не делали,рассказываю как сделать.
создаешь 2 файла ru.php eng.php
в них
ru.php
$lang['logo']='лого';
$lang['reg']='регистрация';

eng.php
$lang['logo']='Logo';
$lang['reg']='Registration';

суть должна быть понятна,далее лезем в файл где есть эти слова и делаем такую проверку
Код:
if(empty($lng) or $lng=='0'){$lng='ru';}
if($lng(например) == 'ru'){
include_once('ru.php');
}esle{
include_once('eng.php');
}
или так
Код:
if(!empty($lng) and $lng!='0'){
include_once('".$lng.".php');
}
создаём картинки которые нажимаются и прописываем ссылки в них: lng=ru и lng=eng аналогично.
А в те места где должны быть слова вписываем переменные.
У меня сделано на сессиях так как вся игра практически переведена на 2 языка,и я просто инклужу файлы с определением языка.
 
так ну с сесиями я вроде разобрался, напиал так:

Код:
session_start(); 
session_register($language="eng");

и заинклюдил

Код:
<?
if(!empty($language) and $language!=""){
include("$language.php");
}
?>

у меня сразу вопросы:

1) Можно эту сессию запихнуть в конфиг, или это не желательно ?
2) Приблезительный вопрос, Можно этот инклуд сувать в конфиг ?
3) Как зделать кнопку смены сессии... пробовал что-то мутить, нечё не получилось, нужно чтоб session_register($language="МЕНЯЛОСЬ ВОТ ТУТ");

Особенно прошу помочь с 3 пунктом =|
 
так ну с сесиями я вроде разобрался, напиал так:

Код:
session_start(); 
session_register($language="eng");

и заинклюдил

Код:
<?
if(!empty($language) and $language!=""){
include("$language.php");
}
?>

у меня сразу вопросы:

1) Можно эту сессию запихнуть в конфиг, или это не желательно ?
2) Приблезительный вопрос, Можно этот инклуд сувать в конфиг ?
3) Как зделать кнопку смены сессии... пробовал что-то мутить, нечё не получилось, нужно чтоб session_register($language="МЕНЯЛОСЬ ВОТ ТУТ");

Особенно прошу помочь с 3 пунктом =|

с 1,2 не стал разбираться, а вот на счет третьего отвечу:
Сделай кнопку с параметром
Код:
onclick="location.href='?act=change'"
.
И проверочку в начало файла:
Код:
if ($_GET['act']==change){
session_register($language="МЕНЯЛОСЬ ВОТ ТУТ");
}
.
Впринципе должно работать:)
 
да впринцыпи я вот так и пробовал делать =) неполучалось, возможно кнопку неправильно делал =\


Так, спс всем, вроде как получилось, буду пробовать, химичить, темку пока не буду закрывать!
 
Это просто писец :)

как нажимаю кнопка смена (смена языка) проподает форма регистрации и практически язык не меняется =(

вот кнопка
Код:
<input type=button value=Смена onclick=location.href='?action=lang' style=border: 1px solid #ffdead; background-color: #460e0e; color: #ffdead;>

и вот код смены
Код:
if ($_GET['action']==lang){
session_register($language="ru");
}

ну скажите, что я делаю не так или что не зделал ?) куда эту кнопку вобще запихнуть ? Кстати, игра состоит из header/footer/head .php

кнопку сувал прямо в файл с регистрацией! =\
 
"практически" - это значит меняется часть? или вообще ничего не меняется.
 
ну это значит, я для теста поставил текст который меняется в header.php это у меня меню, когда жму на кнопку, то отоброжается язык какой нужно в этом файле, а форма регистрации где вводить информацию и title не меняются, форма регистрации вобще скрывается куда-то =\
 
ну это значит, я для теста поставил текст который меняется в header.php это у меня меню, когда жму на кнопку, то отоброжается язык какой нужно в этом файле, а форма регистрации где вводить информацию и title не меняются, форма регистрации вобще скрывается куда-то =\
Значит ты что-то намудрил у себя в скриптах)))
 
Посмотри как в икснове сделано, там же стоит поддержка мульти ленга,
стоит инклюд, а все слова или блоки текста записаны например {ver}, что из папки ленгов берёт себе текст =)
Только какой язык хранится в БД, тоесть в куки записывается выбор языка индекса, а сам портал уже из БД тянет.
 
Код:
<?php 
session_register($language="eng");


if(!empty($language) and $language!=""){
include("$language.php");
}

$title = $lang['title']; 
include("head.php"); 
?>

<?php
if ($_GET['action']==lang){
session_register($language="ru");
}
if (!$action == 'register') {
?>
<input type=button value=Смена onclick=location.href='?action=lang' style=border: 1px solid #ffdead; background-color: #460e0e; color: #ffdead;>


<table cellpadding="3" cellspacing="3" width="95%" align="center" class="tab">
<tr align="center" class="trhead"><td colspan="2">
<?php

$nump = mysql_num_rows(mysql_query("select * from players where varified='Yes'"));
print "Всего игроков: [b]$nump[/b]
";
?>
</td></tr>
<tr align="center" class="tr"><td colspan="2">Поля отмеченные знаком * - обязательны к заполнению.</td></tr>

<form method=post action=register.php?action=register>
<tr class="tr"><td>* Логин:</td><td><input type=text name=new_user></td></tr>
<tr class="tr"><td>* Пол персонажа:</td><td>
<select size="1" name="sex" id="sex">
<option value="Мужской">Мужской</option>
<option value="Женский">Женский</option>
</select>
</td>
</tr>

<tr class="tr"><td>* <?= $lang['password'] ?>:</td><td><input type=password name=new_pass></td></tr>
<tr class="tr"><td>* Ещё раз пароль:</td><td><input type=password name=var_pass></td></tr>
<tr class="tr"><td>* Email:</td><td><input type=text name=new_email></td></tr>
<tr class="tr"><td>* Ещё раз Email:</td><td><input type=text name=var_email></td></tr>
<tr class="tr"><td>* Контрольный вопрос:</td><td><select name=sec_question id=type>
<option value="Ваш любимый фильм?">Ваш любимый фильм?</option>
<option value="Дата вашего рождения?">Дата вашего рождения?</option>
<option value="Кличка вашего питомца?">Кличка вашего питомца?</option></select>
</td>
</tr>
<tr class="tr"><td>* Ответ:</td><td><input type=text name=sec_pass></td></tr>
<?php
print "<tr class=\"tr\"><td>ID номер реферала:</td><td><input type=text name=ref value=$ref>[i]Не обязательно[/i]</td></tr>
<tr bgcolor=\"#E1C99A\"><td></tr><td><input type=submit value=\"Регистрация\"></td></tr>
</form></table>
";
}
?>

<?php
if ($action == 'register') {
$new_user = htmlspecialchars($new_user);
$new_user = strip_tags($new_user);
$skill = htmlspecialchars($skill);
$new_pass = htmlspecialchars($new_pass);
$var_pass = htmlspecialchars($var_pass);
$new_email = htmlspecialchars($new_email);
$var_email = htmlspecialchars($var_email);
$sec_question = htmlspecialchars($sec_question);
$sec_pass = htmlspecialchars($sec_pass);
$ref = htmlspecialchars($ref);
if (ereg("^([a-zA-Z0-9_\.]*)@([A-Za-z0-9_]*)\.([A-Za-z_\.]*)$", $new_email)) {
if(eregi('[/@*#%{}()=<>-]', $new_user)) {
print "Логин содержит не допустимые знаки!";
include("foot.php");
exit;
}
if(eregi('[/@*#%{}()=<>]', $sec_question)) {
print "'$sec_question' содержит не допустимые знаки!

";
include("foot.php");
exit;
}
if(eregi('[@*#%{}()=<>-]', $sec_pass)) {
print "'$sec_pass' содержит не допустимые знаки!

";
include("foot.php");
exit;
}
if(strlen($new_user) < 3) {
print "Логин $new_user меньше чем 3 знака.

"; 
include("foot.php");
exit;
}
if(strlen($new_user) > 15) {
print "Логин $new_user больше 15 знаков.

"; 
include("foot.php");
exit;
}
if(strlen($new_pass) < 3) {
print "Пароль $new_pass меньше чем 3 знака.

"; 
include("foot.php");
exit;
}
if(strlen($new_pass) > 15) {
print "Пароль $new_pass больше 15 знаков.

"; 
include("foot.php");
exit;
}
if (!$new_user || !$new_email || !$sec_question || !$sec_pass || !$new_pass || !$var_pass) {
print "Вы должны заполнить все поля.

";
include("foot.php");
exit;
}
$dupe1 = mysql_num_rows(mysql_query("select * from players where user='$new_user'"));
if ($dupe1 > 0) {
print "Этот логин уже используется в игре.

";
include("foot.php");
exit;
}
$dupe2 = mysql_num_rows(mysql_query("select * from players where email='$new_email'"));
if ($dupe2 > 0) {
print "Этот E-mail уже используется в игре.

";
include("foot.php");
exit;
}
if ($new_email != $var_email) {
print "E-mail введён неверно.

";
include("foot.php");
exit;
}
if ($new_pass != $var_pass) {
print "Пароль введён неверно.

";
include("foot.php");
exit;
}
if ($sex == "Мужской") {
$charsex = "Мужской";
}
if ($sex == "Женский") {
$charsex = "Женский";
}
$email_pass = ($new_pass);
$db_pass = md5($new_pass);
$db_pass2 = md5($db_pass);
$db_pass3 = md5($db_pass2);
$db_pass4 = md5($db_pass3);
$db_pass5 = md5($db_pass4);
mysql_query("insert into players (user, email, pass, question, answer, avatar, profile, gender) values('$new_user','$new_email','$db_pass5','$sec_question','$sec_pass','m1.gif','Пусто','$charsex')") or die("Проблема с регистрацией №1.");
$randomver = rand(1000 , 9000);
$info = mysql_fetch_array(mysql_query("select * from players where user='$new_user' and pass='$db_pass5'"));
mysql_query("insert into register (userid, refid, random) values('$info[id]','$ref','$randomver')") or die("Проблема с регистрацией №2.");
$register = mysql_fetch_array(mysql_query("select * from register where userid='$info[id]'"));
$message = "Добро пожаловать в $site_com\nВы должны активировать ваш аккаунт кликнув на ссылку ниже\n<a href=$email_link/verify.php?action=verify&id=$info[id]&pass=$register[random]>Сюда</a>\nЛогин: $new_user\nПароль: $email_pass\nУдачной игры! \n\n\nНе отвечайте на это письмо, оно отправлено автоматически.";
mail("$new_email", "Welcome to $site_com", "$message","From: webadmin$end_of_email\r\n"."Reply-To: $admin_email\r\n"."X-Mailer: PHP/" . phpversion()) or die("Well bad news is, your user name is now taken, more bad news is that the e-mail could not be sent");
print "<table cellpadding=\"3\" cellspacing=\"3\" width=\"95%\" class=\"tab\" align=\"center\"><tr class=\"tr\"><td>";
print "Вы зарегестрировались в игре $gamename. Вам выслана ссылка подтверждения вашего аккаунта. Вы должны активировать вашу учётную запись в течении 24 часов - иначе она будет удалена.</td></tr></table>";
}else{
print "E-mail указанный вами - неверного формата.";
include("foot.php");
exit;
}}
?>
[b]Помощь при регистрации[/b]
[img]images/frame/horline.gif[/img]
<table cellspacing="3" cellpadding="3" width="95%" class="tab">
<tr class="tr"><td>[b]Логин[/b]
Логин не может состоять меньше чем из 3 и больше чем из 15 знаков.
Знаки [b]/@*#%{}()-<>[/b] запрещены.</td></tr>
<tr class="tr"><td>[b]Пароль[/b]
Новый пароль будет сформирован из указанного вами и выслан на почтовый адрес. Пароль не может состоять меньше чем из 3 и больше чем из 15 знаков.</td></tr>
<tr class="tr"><td>[b]E-mail[/b]
Важно указать действующий почтовый ящик, иначе вы не сможете войти в игру.</td></tr>
<tr class="tr"><td>[b]Контрольный вопрос и ответ[/b]
Запомните ответ на контрольный вопрос - он нужен будет для восстановления пароля.</td></tr>
<tr class="tr"><td>[b]ID номер реферала[/b]
Вы можете ввести ID номер игрока пригласившего вас в игру, таким образом он заработает дополнительные возможности.</td></tr>
</table>

<?php include("foot.php"); ?>

кнопка под названием Смена
 
мб session_start(); вверху самом дописать надо?Ты так не думаешь?)
 
мб session_start(); вверху самом дописать надо?Ты так не думаешь?)
я прописывал, ток в config.php и других файлах которые икнлюдились, кстати, пробовал и тут писать так

session_start();
session_register($language="eng");

тоже самое =) главное проподает форма регистрации куда вводить инфу =(
 
Код:
<?php
if ($_GET['action']==lang){
session_register($language="ru");
}
if (!$action == 'register') {
Вот здесь косяк я думаю ты переменную то через GET берёшь то проверка на форму вообще просто без GET попробуй REQUEST поставить вместо GET или включить rg и вообще убрать GET
 
До нажатия кнопки:



После нажатия кнопки:



Использованый код в момент нажатия кнопки:

Код:
<?php 
session_register($language="eng");


if(!empty($language) and $language!=""){
include("$language.php");
}

$title = $lang['title']; 
include("head.php"); 
?>

<?
if (!$action == 'lang'){
session_register($language="ru");
}
?>

<?php
if (!$action == 'register') {
?>
<input type=button value=Смена onclick=location.href='?action=lang' style=border: 1px solid #ffdead; background-color: #460e0e; color: #ffdead;>


<table cellpadding="3" cellspacing="3" width="95%" align="center" class="tab">
<tr align="center" class="trhead"><td colspan="2">
<?php

$nump = mysql_num_rows(mysql_query("select * from players where varified='Yes'"));
print "Всего игроков: [b]$nump[/b]
";
?>
</td></tr>
<tr align="center" class="tr"><td colspan="2">Поля отмеченные знаком * - обязательны к заполнению.</td></tr>

<form method=post action=register.php?action=register>
<tr class="tr"><td>* Логин:</td><td><input type=text name=new_user></td></tr>
<tr class="tr"><td>* Пол персонажа:</td><td>
<select size="1" name="sex" id="sex">
<option value="Мужской">Мужской</option>
<option value="Женский">Женский</option>
</select>
</td>
</tr>

<tr class="tr"><td>* <?= $lang['password'] ?>:</td><td><input type=password name=new_pass></td></tr>
<tr class="tr"><td>* Ещё раз пароль:</td><td><input type=password name=var_pass></td></tr>
<tr class="tr"><td>* Email:</td><td><input type=text name=new_email></td></tr>
<tr class="tr"><td>* Ещё раз Email:</td><td><input type=text name=var_email></td></tr>
<tr class="tr"><td>* Контрольный вопрос:</td><td><select name=sec_question id=type>
<option value="Ваш любимый фильм?">Ваш любимый фильм?</option>
<option value="Дата вашего рождения?">Дата вашего рождения?</option>
<option value="Кличка вашего питомца?">Кличка вашего питомца?</option></select>
</td>
</tr>
<tr class="tr"><td>* Ответ:</td><td><input type=text name=sec_pass></td></tr>
<?php
print "<tr class=\"tr\"><td>ID номер реферала:</td><td><input type=text name=ref value=$ref>[i]Не обязательно[/i]</td></tr>
<tr bgcolor=\"#E1C99A\"><td></tr><td><input type=submit value=\"Регистрация\"></td></tr>
</form></table>
";
}
?>

<?php
if ($action == 'register') {
$new_user = htmlspecialchars($new_user);
$new_user = strip_tags($new_user);
$skill = htmlspecialchars($skill);
$new_pass = htmlspecialchars($new_pass);
$var_pass = htmlspecialchars($var_pass);
$new_email = htmlspecialchars($new_email);
$var_email = htmlspecialchars($var_email);
$sec_question = htmlspecialchars($sec_question);
$sec_pass = htmlspecialchars($sec_pass);
$ref = htmlspecialchars($ref);
if (ereg("^([a-zA-Z0-9_\.]*)@([A-Za-z0-9_]*)\.([A-Za-z_\.]*)$", $new_email)) {
if(eregi('[/@*#%{}()=<>-]', $new_user)) {
print "Логин содержит не допустимые знаки!";
include("foot.php");
exit;
}
if(eregi('[/@*#%{}()=<>]', $sec_question)) {
print "'$sec_question' содержит не допустимые знаки!

";
include("foot.php");
exit;
}
if(eregi('[@*#%{}()=<>-]', $sec_pass)) {
print "'$sec_pass' содержит не допустимые знаки!

";
include("foot.php");
exit;
}
if(strlen($new_user) < 3) {
print "Логин $new_user меньше чем 3 знака.

"; 
include("foot.php");
exit;
}
if(strlen($new_user) > 15) {
print "Логин $new_user больше 15 знаков.

"; 
include("foot.php");
exit;
}
if(strlen($new_pass) < 3) {
print "Пароль $new_pass меньше чем 3 знака.

"; 
include("foot.php");
exit;
}
if(strlen($new_pass) > 15) {
print "Пароль $new_pass больше 15 знаков.

"; 
include("foot.php");
exit;
}
if (!$new_user || !$new_email || !$sec_question || !$sec_pass || !$new_pass || !$var_pass) {
print "Вы должны заполнить все поля.

";
include("foot.php");
exit;
}
$dupe1 = mysql_num_rows(mysql_query("select * from players where user='$new_user'"));
if ($dupe1 > 0) {
print "Этот логин уже используется в игре.

";
include("foot.php");
exit;
}
$dupe2 = mysql_num_rows(mysql_query("select * from players where email='$new_email'"));
if ($dupe2 > 0) {
print "Этот E-mail уже используется в игре.

";
include("foot.php");
exit;
}
if ($new_email != $var_email) {
print "E-mail введён неверно.

";
include("foot.php");
exit;
}
if ($new_pass != $var_pass) {
print "Пароль введён неверно.

";
include("foot.php");
exit;
}
if ($sex == "Мужской") {
$charsex = "Мужской";
}
if ($sex == "Женский") {
$charsex = "Женский";
}
$email_pass = ($new_pass);
$db_pass = md5($new_pass);
$db_pass2 = md5($db_pass);
$db_pass3 = md5($db_pass2);
$db_pass4 = md5($db_pass3);
$db_pass5 = md5($db_pass4);
mysql_query("insert into players (user, email, pass, question, answer, avatar, profile, gender) values('$new_user','$new_email','$db_pass5','$sec_question','$sec_pass','m1.gif','Пусто','$charsex')") or die("Проблема с регистрацией №1.");
$randomver = rand(1000 , 9000);
$info = mysql_fetch_array(mysql_query("select * from players where user='$new_user' and pass='$db_pass5'"));
mysql_query("insert into register (userid, refid, random) values('$info[id]','$ref','$randomver')") or die("Проблема с регистрацией №2.");
$register = mysql_fetch_array(mysql_query("select * from register where userid='$info[id]'"));
$message = "Добро пожаловать в $site_com\nВы должны активировать ваш аккаунт кликнув на ссылку ниже\n<a href=$email_link/verify.php?action=verify&id=$info[id]&pass=$register[random]>Сюда</a>\nЛогин: $new_user\nПароль: $email_pass\nУдачной игры! \n\n\nНе отвечайте на это письмо, оно отправлено автоматически.";
mail("$new_email", "Welcome to $site_com", "$message","From: webadmin$end_of_email\r\n"."Reply-To: $admin_email\r\n"."X-Mailer: PHP/" . phpversion()) or die("Well bad news is, your user name is now taken, more bad news is that the e-mail could not be sent");
print "<table cellpadding=\"3\" cellspacing=\"3\" width=\"95%\" class=\"tab\" align=\"center\"><tr class=\"tr\"><td>";
print "Вы зарегестрировались в игре $gamename. Вам выслана ссылка подтверждения вашего аккаунта. Вы должны активировать вашу учётную запись в течении 24 часов - иначе она будет удалена.</td></tr></table>";
}else{
print "E-mail указанный вами - неверного формата.";
include("foot.php");
exit;
}}
?>
[b]Помощь при регистрации[/b]
[img]images/frame/horline.gif[/img]
<table cellspacing="3" cellpadding="3" width="95%" class="tab">
<tr class="tr"><td>[b]Логин[/b]
Логин не может состоять меньше чем из 3 и больше чем из 15 знаков.
Знаки [b]/@*#%{}()-<>[/b] запрещены.</td></tr>
<tr class="tr"><td>[b]Пароль[/b]
Новый пароль будет сформирован из указанного вами и выслан на почтовый адрес. Пароль не может состоять меньше чем из 3 и больше чем из 15 знаков.</td></tr>
<tr class="tr"><td>[b]E-mail[/b]
Важно указать действующий почтовый ящик, иначе вы не сможете войти в игру.</td></tr>
<tr class="tr"><td>[b]Контрольный вопрос и ответ[/b]
Запомните ответ на контрольный вопрос - он нужен будет для восстановления пароля.</td></tr>
<tr class="tr"><td>[b]ID номер реферала[/b]
Вы можете ввести ID номер игрока пригласившего вас в игру, таким образом он заработает дополнительные возможности.</td></tr>
</table>

<?php include("foot.php"); ?>
 
6matko прочти вот это и посмотри после этого чего ты написал:
Код:
if(!empty($language) and $language!=""){
include("$language.php");
}
Немного не потеме, но думаю тебе пригодится)

А по теме: выложи код кнопки и файлик с языком(на котором не работает регистрация)
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Сверху