Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Языковой переключатель с помощью <select>
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Языковой переключатель с помощью <select>

Страниц (1): [1]
 

1. vsll - 16 Марта, 2011 - 19:36:58 - перейти к сообщению
Привет всем!
Как приклеить вот это:
PHP:
скопировать код в буфер обмена
  1. $result = dbquery("SELECT REPLACE('Russian', 'Russian', 'English') FROM ".DB_SETTINGS." WHERE settings_name=slocale ");

вот сюда:
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<td class='w30_9'>&nbsp;&nbsp;<select name='localeset' class='ctextbox' onchange='this.form.submit();'>\n";
  2. echo "<option value='rus'>Russian</option>\n";
  3. echo "<option value='eng'>English</option>\n";
  4. echo "</select></td>\n";


Если такое вообще возможно. Нужно с помощью select изменить язык на странице поиска
(Добавление)
Извиняюсь, разобралась, здесь проблема доступа (короче только через функции создателей движка будет работать)
-------------------------------- -------------------
Через изменение значения в настройках не получается, а если изменяет, то на всём сайте - полное зло...

Кто-нибудь, если есть поделитесь переключателем на php на основе переключения с одной дирректории на другую:
Например, с RLOCALE."search.php"; на ELOCALE."search.php";
где
PHP:
скопировать код в буфер обмена
  1. define("RLOCALE", BASEDIR."locale/Russian/");
  2. define("ELOCALE", BASEDIR."locale/English/");
2. vsll - 17 Марта, 2011 - 19:19:03 - перейти к сообщению
Код для смены локалей только для search.php через кнопку submit работает:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['search'])) {
  2. $error = 0;
  3. $localeset = stripinput($_GET['localeset']);
  4. if (!$result) { $error = 1; }
  5.         $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='$localeset' WHERE settings_name='slocale'");
  6. }
  7. $settings3 = array();
  8. $result = dbquery("SELECT * FROM ".DB_SETTINGS);
  9. while ($data = dbarray($result)) {
  10.         $settings3[$data['settings_name']] = $data['settings_value'];
  11. }
  12. $locale_files = makefilelist(LOCALE, ".|..", true, "folders");
  13. ...
  14. echo "<form id='searchform' name='searchform' method='get' action='".FUSION_SELF."'>\n";
  15. ...
  16. echo "<td class='w30_9'>&nbsp;&nbsp;<select name='localeset' class='ctextbox'>\n";
  17. echo makefileopts($locale_files, $settings3['slocale'])."\n";
  18. echo "</select></td>\n";


Как изменять локали не через кнопку, а простым выбором пункта в select?

P.S. Эта тема уже на первом месте в гугл на предмет поискового запроса: языковой переключатель на php
3. ALEN - 17 Марта, 2011 - 20:11:18 - перейти к сообщению
Vasiliya пишет:
Как изменять локали не через кнопку, а простым выбором пункта в select?

любой метод передачи данных подойдет
4. vsll - 17 Марта, 2011 - 20:20:11 - перейти к сообщению
ALEN Спасибо за внимание, но это не ответ
5. ALEN - 17 Марта, 2011 - 20:40:57 - перейти к сообщению
Vasiliya
Ну например почему бы не отправлять на сервер даже GET запрос со сменой локали, потом после ее смены и сохранении в сессии не возвращать клиента на нужную страницу?
6. vsll - 17 Марта, 2011 - 20:48:36 - перейти к сообщению
ALEN посмотрите пожалуйста моё второе сообщение, именно это я и делаю...
только через кнопку submit (она же поиск, пока временно чтобы протестировать сам скрипт), а мне нужно простым выбором в select чтобы с первого клика по нужной <option> страница перезагрузилась и была на выбранном языке (если не верите в то, что мой скрипт работет, могу дать ссылку для теста)
7. ALEN - 17 Марта, 2011 - 20:54:41 - перейти к сообщению
Vasiliya
Есть такая штука в javascript:
onChange="window.location.href='http://php.su/'"
8. vsll - 17 Марта, 2011 - 20:59:00 - перейти к сообщению
ALEN пишет:
Есть такая штука в javascript:
window.location.href
И что с ней делать? Я тоже знаю что есть такая штука onchange='this.form.submit();' в js... Как приклеить к ним запрос в db, без которого кроме перезагрузки страницы никакого чуда больше не произойдёт?
Сам запрос:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['search'])) {
  2. $error = 0;
  3. $localeset = stripinput($_GET['localeset']);
  4. if (!$result) { $error = 1; }
  5.         $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='$localeset' WHERE settings_name='slocale'");
  6. }

search - name кнопки
(Добавление)
Может кому пригодиться (тем, кто использует php-fusion):
PHP:
скопировать код в буфер обмена
  1. include LOCALE.LOCALESSET."search.php";

во всех дополнительных includes изменить LOCALESET на LOCALESSET
в db создать столбец slocale с тем же значением что и в locale
соответственно
PHP:
скопировать код в буфер обмена
  1. define("LOCALESSET", $settings['slocale']."/");


PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['localeset']) && !isset($_GET['search'])) {
  2.     $localeset = stripinput($_GET['localeset']);
  3.     $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='$localeset' WHERE settings_name='slocale'");
  4.     redirect(FUSION_SELF);
  5. }
  6. $settings3 = array();
  7. $result = dbquery("SELECT * FROM ".DB_SETTINGS);
  8. while ($data = dbarray($result)) {
  9.         $settings3[$data['settings_name']] = $data['settings_value'];
  10. }
  11. $locale_files = makefilelist(LOCALE, ".|..", true, "folders");
  12.  

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<form id='searchform' name='searchform' method='get' action='".FUSION_SELF."'>\n";

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<td class='w30_9'>&nbsp;&nbsp;<select name='localeset' class='ctextbox' onchange='this.form.submit();'>\n";
  2. echo makefileopts($locale_files, $settings3['slocale'])."\n";
  3. echo "</select></td>\n";

Работает от переключения в select
9. LOL - 19 Марта, 2011 - 12:33:01 - перейти к сообщению
Vasiliya,смотрю вы тоже горите желанием создать свою поисковую систему?но я думаю в Вашем варианте сделать так...создаете файл js например rus.js и eng.js и далее пишете скрипт(думаю под себя переделаете)
CODE (javascript):
скопировать код в буфер обмена
  1. function switchStyleSheet(title) {
  2.          document.cookie = 'stylesheet=' + title;
  3.         var links = document.getElementsByTagName('link');
  4.  
  5.         for (var i = 0, len = links.length; i < len; i++) {
  6.                 var rel = links[i].getAttribute('rel');
  7.                 var linkTitle = links[i].getAttribute('title');
  8.  
  9.                 if (/(^| )stylesheet( |$)/.test(rel) && linkTitle != null && linkTitle != '') {
  10.                         links[i].disabled = true;
  11.                         if (linkTitle == title)
  12.                                 links[i].disabled = false;
  13.                 }
  14.         }
  15. }
  16.  
  17. <link href="style.css" type="text/css" rel="stylesheet" />
  18. <link href="style_alt_white.css" type="text/css" rel="alternate stylesheet" title="white style" />
  19. <link href="style_alt_red.css" type="text/css" rel="alternate stylesheet" title="red style" />
  20. <link href="style_alt_green.css" type="text/css" rel="alternate stylesheet" title="green style" />
  21. <link href="style_alt_blue.css" type="text/css" rel="alternate stylesheet" title="blue style" />
  22. <ul>
  23. <li><a href="#" onclick="switchStyleSheet('red style')">Красный</a></li>
  24. <li><a href="#" onclick="switchStyleSheet('green style')">Зеленый</a></li>
  25. <li><a href="#" onclick="switchStyleSheet('blue style')">Синий</a></li>
  26. <li><a href="#" onclick="switchStyleSheet('white style')">Белый</a></li>
  27. </ul>
  28.  
  29.  
  30.  
  31.  
  32. //IE
  33. function switchStyleSheet(title, media) {
  34.         if (typeof media == "undefined" || media == "") {
  35.                 media = ".*";
  36.         }
  37.  
  38.         var mediaPattern = new RegExp("(^|,)\s*" + media + "\s*(,|$)");
  39.  
  40.         var links = document.getElementsByTagName("link");
  41.         for (var i = 0; i < links.length; i++) {
  42.                 var rel = links[i].getAttribute("rel");
  43.                 var linkTitle = links[i].getAttribute("title");
  44.  
  45.                 if (/(^| )stylesheet( |$)/.test(rel) && linkTitle != null && linkTitle != "") {
  46.                         var styleMedia = links[i].getAttribute("media");
  47.                         if (styleMedia == null || styleMedia == "" || styleMedia == "all" || mediaPattern.test(styleMedia)) {
  48.                                 links[i].disabled = true;
  49.                                 links[i].rel = "alternate stylesheet";
  50.  
  51.                                 if (linkTitle == title) {
  52.                                         links[i].disabled = false;
  53.                                         links[i].rel = "stylesheet"
  54.                                 }
  55.                         }
  56.                 }
  57.         }
  58.  
  59.         document.cookie = "stylesheet=" + title;
  60. }
-переделаете,т.к этот скрипт для смены темы оформления сайта(как на апорте..)
если я вам помог отблагодарите...
(Добавление)
Vasiliya забыл приписать в файлах яваскрипт ты в переменных пишеш названия файлов например rus.js
[1]=веб,а в eng.js [1]=web....
(Добавление)
и вот вам пример реализации переключателей...Yahoo! найдено
10. ALEN - 19 Марта, 2011 - 15:39:24 - перейти к сообщению
Vasiliya пишет:
И что с ней делать?

Вот не нравятся мне такие вопросы... )))
Слышала о AJAX , вот если тебе нужно делать запрос и получать ответ используй его, но AJAX - это не более чем JavaScript - в общем отправила, запрос сделал необходимые действия и вернула, что нужно, если, что перезагрузила элементы страницы или всю страницу.
11. DlTA - 19 Марта, 2011 - 15:54:41 - перейти к сообщению
Vasiliya, а в чем проблма перегрузить всю страницу при смене языка?
12. vsll - 19 Марта, 2011 - 16:12:59 - перейти к сообщению
LOL Уменя для поиска 5 локалей и 10 скриптов (js switcher не подходит)
ALEN, DITA я уже давно решила свою проблему
CODE (htmlphp):
скопировать код в буфер обмена
  1. (Добавление)
  2. Может кому пригодиться (тем, кто использует php-fusion):

 

Powered by ExBB FM 1.0 RC1