Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery и много язычность / 25 сообщений из 26, страница 1 из 2
30.04.2013, 22:05
    #38245812
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
Доброго времени суток.

В новом проекте на php нужна много язычность.
Нашел у буржуев пример (мне понравился) и решил его до пилить select-ом с JQuery.
К сожалению проблемма в том, что я JQuery только начал (неделю) ковырять.
По логике вещей то, что я навоял, должно работать - НО (это поскудное "НО") не работает.
Вот код:
index.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<?php include_once 'common.php'; ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
        <script src="js/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#sel [value='index.php?lang=<?php echo $_GET["lang"]; ?>']").attr("selected", "selected");
                $("#sel").change(function(){
                    var selected = $("#sel option:selected");		
                    var output = "";
                    if(selected.val() != 0){
                        output = selected.val();
                        document.location.href=output;
                    }
                }); 
            });
        </script>
    </head>
    <body>
        <?php echo $_GET['lang']; ?>
        <hr>
            <div>
                <select id="sel" name="sel">
                    <option value="index.php?lang=eng">Eng</option>
                    <option value="index.php?lang=rus">Rus</option>
                </select>
            </div>
            <hr>
                <?= $lang['HELLO']; ?>
                <p style="color: goldenrod; size: 15pt;">
                    Hello test text
                </p>
      </body>
</html>



... далее common.php ...

... ну и на конец rus.php и eng.php ...
Модератор: Код на ПэХаПэ постят в разделе ПэХаПэ.
[IDV]

А вот теперь проблема - проблема в том, что собственно это и не работает:
- не меняется текст в <?= $lang['HELLO']; ?>
- и не выбирается select языка

Помогите плиз.
За ранее спасибо.

P.S. подскажите может есть способ заменя языка без перезагрузки страницы?
...
Рейтинг: 0 / 0
30.04.2013, 22:32
    #38245835
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
Нашел для jQuery такой вариан:
Код: javascript
1.
$(location).attr('href', 'http://url');


но увы эффект тот-же((
...
Рейтинг: 0 / 0
30.04.2013, 23:33
    #38245871
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomadподскажите может есть способ заменя языка без перезагрузки страницы?
Контент на странице меняется двумя способами:
- перезагрузка страницы
- чтение контента с сервера и замена его в ДОМ модели

Сам контент ну никак не поменяется от того, что ты что-то выбрал в селекте.

По-мне так дешевле страницу перегрузить...
...
Рейтинг: 0 / 0
30.04.2013, 23:35
    #38245874
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomad... ну и на конец rus.php и eng.php ...
Файл на каждый язык? Это сильно...
...
Рейтинг: 0 / 0
30.04.2013, 23:44
    #38245878
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
krvsaHunterNomad... ну и на конец rus.php и eng.php ...
Файл на каждый язык? Это сильно... Хм. И чего такого сильного в отдельном текстовом файле со строковыми ресурсами?
...
Рейтинг: 0 / 0
01.05.2013, 09:00
    #38245944
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANAИ чего такого сильного в отдельном текстовом файле со строковыми ресурсами?
Если нет БД - тогда останутся только файлы...
В моем случает БД есть всегда, т.о. нет смысла поддерживать в актуальности несколько файлов с разными языками.
...
Рейтинг: 0 / 0
01.05.2013, 09:59
    #38245952
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
В базу хорошо, но кэш нужен, которого в php нет, нужно отдельно мемкашеды, редисы и прочее ставить на vps. А дёргать базу при каждом клиентском запросе на получение ресурсов, как-то не то, поэтому с файлами для сайтов-визиток проще, хотя и каменный век это.
...
Рейтинг: 0 / 0
01.05.2013, 10:15
    #38245959
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
Модеру: код на пыхпыхе был частью объяснения проблемы с кодом (возможно это помогло знатокам подсказать мне способ рещения проблемы). с таким успехом можно было накуй пост весь убрать. модер - бог (можно просто было предупредить :))

krvsa: бд есть, но ей и так в проекте достанится, потому я и решил, что с файлами будет проще. За DOM спасибо, не подумал раньше.

для всех: вопрос открыть для конструктивных предложений ))))
...
Рейтинг: 0 / 0
01.05.2013, 10:22
    #38245962
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
krvsaskyANAИ чего такого сильного в отдельном текстовом файле со строковыми ресурсами?
Если нет БД - тогда останутся только файлы...
В моем случает БД есть всегда, т.о. нет смысла поддерживать в актуальности несколько файлов с разными языками.Что-то я не пойму, Вы предлагаете строковые ресурсы для GUI (ТС же надпись локализует, а не данные) хранить в БД? А в одной базе с данными, или разных?
...
Рейтинг: 0 / 0
01.05.2013, 10:25
    #38245963
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
st_stВ базу хорошо, но кэш нужен, которого в php нет, нужно отдельно мемкашеды, редисы и прочее ставить на vps. А дёргать базу при каждом клиентском запросе на получение ресурсов, как-то не то, поэтому с файлами для сайтов-визиток проще, хотя и каменный век это.А какие есть современные альтернативы .Net resx-ам, Android String Resources и т.п.?
...
Рейтинг: 0 / 0
01.05.2013, 10:29
    #38245965
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomad, не пойму, что у Вас конкретно не работает? Событие change происходит? В обработчик Вы попадаете? Что возвращает selected.val()?
...
Рейтинг: 0 / 0
01.05.2013, 10:31
    #38245966
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANAkrvsaпропущено...

Если нет БД - тогда останутся только файлы...
В моем случает БД есть всегда, т.о. нет смысла поддерживать в актуальности несколько файлов с разными языками.Что-то я не пойму, Вы предлагаете строковые ресурсы для GUI (ТС же надпись локализует, а не данные) хранить в БД? А в одной базе с данными, или разных?

А, в принцыпе, что лучше - хранить локали в бд или как у меня в файлах?
...
Рейтинг: 0 / 0
01.05.2013, 10:33
    #38245969
JQuery и много язычность
Sqlite + Memcache (по необходимости!)
...
Рейтинг: 0 / 0
01.05.2013, 10:38
    #38245973
JQuery и много язычность
...
Рейтинг: 0 / 0
01.05.2013, 10:41
    #38245974
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANAHunterNomad, не пойму, что у Вас конкретно не работает? Событие change происходит? В обработчик Вы попадаете? Что возвращает selected.val()?

- change происходит, но переход не срабатывает, в select постоянно висит eng (не меняясь)
- selected.val() возвращает index.php?lang=rus
- $("#sel [value='index.php?lang=<?php echo $_GET["lang"]; ?>']").attr("selected", "selected"); не выбирает нужный option

кажется я понимногу стал понимать причу трабла ... если бы пых-код не убрали возможно былобы понятно что и к чему
...
Рейтинг: 0 / 0
01.05.2013, 10:51
    #38245980
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANA,

Есть база данных.

Хорошо, ресурсы лежат в файле. Менеджер говорит - у вас ошибка в переводе, хочу поправить. Программист по ftp лезет на сайт, скачивает себе локализационный файл с конкретным языком и отдаёт его менеджеру. Менеджер открыв его в блокноте и офигивая от увиденного xml возвращает файл обратно программисту со словами "я ничего не понял", тот сам правит и закачивает файл на сервер.

Улучшаем ситуацию - создаём на сайте админку, в которой можем править файлы ресурсов, пишем код - считать ресурсы из файла такого-то (распарсить xml) и отобразить в админке, при изменении запарсить обратно в xml и отправить на сервер/сохранить, вылезает конкурентный доступ к файлам и прочие прелести.

Касаемо asp.net, придётся перекомпиливать приложение на каждую правку ресурса, а это приводит к недоступности сайта какое-то время, в php всё проще в этом плане.

Вариант 3 - просто храним в базе, никаких перекомпиляций, парсинга xml, проблем с доступом и прочего, показал в админке и сохранил конкретные изменённые данные в бд, не мешая остальным работать с этим же самым ресурсом.

Для php-шных сайтов визиток обычно require_once() php-файла с нужным языком, внутри которого можно константами прописать значения (define), чтоб не глобалить (global $lang) каждый раз, либо в массив.
...
Рейтинг: 0 / 0
01.05.2013, 10:52
    #38245982
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomad, то есть страница перегружается?
...
Рейтинг: 0 / 0
01.05.2013, 10:58
    #38245984
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANAHunterNomad, то есть страница перегружается?
судя по <?php echo $_GET['lang']; ?> да, но <?= $lang['HELLO']; ?> при этом не меняется, и привет!!! так и весит
...
Рейтинг: 0 / 0
01.05.2013, 11:04
    #38245985
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomadskyANAHunterNomad, то есть страница перегружается?
судя по <?php echo $_GET['lang']; ?> да, но <?= $lang['HELLO']; ?> при этом не меняется, и привет!!! так и весит

Может в php нужно файл с языком подключить в зависимости от get-параметра?
...
Рейтинг: 0 / 0
01.05.2013, 11:36
    #38245996
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
st_stHunterNomadпропущено...

судя по <?php echo $_GET['lang']; ?> да, но <?= $lang['HELLO']; ?> при этом не меняется, и привет!!! так и весит

Может в php нужно файл с языком подключить в зависимости от get-параметра?+1

ТС, покажите код, что цепляет те, или иные ресурсы.
...
Рейтинг: 0 / 0
01.05.2013, 12:41
    #38246024
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
skyANAst_stпропущено...


Может в php нужно файл с языком подключить в зависимости от get-параметра?+1

ТС, покажите код, что цепляет те, или иные ресурсы.
я выкладывал, но модер его удалил.
болшая процьба - модер не лютуй

common.php

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?php

session_start();
header('Cache-control: private'); // IE 6 FIX

if (isSet($_GET['lang'])) {
    $lang = $_GET['lang'];
    if (isSet($_POST['lang'])) {
        $lang = $_POST['lang'];
        $_SESSION['lang'] = $lang;
        setcookie("lang", $lang, time() + (3600 * 24 * 30));
    } else if (isSet($_SESSION['lang'])) {
        $lang = $_SESSION['lang'];
    } else if (isSet($_COOKIE['lang'])) {
        $lang = $_COOKIE['lang'];
    } else {
        $lang = 'eng';
    }
}

include_once 'languages/' . $lang . '.php';
?>


eng.php и rus.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
//eng
$lang = array();
$lang['HELLO'] = 'Hello!!!';
?>
<?php
//rus
$lang = array();
$lang['HELLO'] = 'Привет!!!';
?>



спасибо братцы
...
Рейтинг: 0 / 0
01.05.2013, 13:20
    #38246041
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
Если для двух языков, то по смыслу как-то так -

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?

$lang = "en"; // по умолчанию

if ($_GET['lang'] == "ru") { // пользователь сам меняет язык, поэтому никакие бывшие куки и сессии нам не интересны
  $lang = "ru";
  setcookie("lang", $lang, time() + (3600 * 24 * 30)); // ставим куку с новым языком
} else { // смену языка никто не нажимал, поэтому проверяем куки, может меняли ранее
  if ($_COOKIE['lang'] == "ru") $lang = "ru";
}

require_once('languages/'.$lang.'.php');

?>
...
Рейтинг: 0 / 0
01.05.2013, 13:29
    #38246047
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
пы.сы., недоглядел, при обратной смене куку сменить надо, а то так и будет висеть на одном языке, короче под себя заделать как там надо и всё.
...
Рейтинг: 0 / 0
01.05.2013, 13:29
    #38246048
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
st_st,
А разве
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
if (isSet($_GET['lang'])) {
    $lang = $_GET['lang'];
    if (isSet($_POST['lang'])) {
        $lang = $_POST['lang'];
        $_SESSION['lang'] = $lang;
        setcookie("lang", $lang, time() + (3600 * 24 * 30));
    } else if (isSet($_SESSION['lang'])) {
        $lang = $_SESSION['lang'];
// =======================
    else if (isSet($_COOKIE['lang'])) { //<
        $lang = $_COOKIE['lang'];       //<
// =======================
    } else {
        $lang = 'eng';
    }
}
include_once 'languages/' . $lang . '.php';


не делает тоже самое?
...
Рейтинг: 0 / 0
01.05.2013, 13:53
    #38246059
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery и много язычность
HunterNomadне делает тоже самое?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<?

$langs = "eng"; // по умолчанию

$change_lang = $_GET['lang'];
if ($change_lang == "rus" || $change_lang == "eng") { // пользователь сам меняет язык, поэтому никакие бывшие куки и сессии нам не интересны // проверяем на eng и rus, а то проинклудим не то
  $langs = $change_lang;
  setcookie("lang", $langs, time() + (3600 * 24 * 30)); // ставим куку с новым языком
} else { // смену языка никто не нажимал, поэтому проверяем куки, может меняли ранее
  if ($_COOKIE['lang'] == "rus") $langs = "rus";
}

require_once($langs.'.php');

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
        <script src="jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#sel [value='index.php?lang=<?php echo $_GET["lang"]; ?>']").attr("selected", "selected");
                $("#sel").change(function(){
                    var selected = $("#sel option:selected");		
                    var output = "";
                    if(selected.val() != 0){
                        output = selected.val();
                        document.location.href=output;
                    }
                }); 
            });
        </script>
    </head>
    <body>
        <hr>
            <div>
                <select id="sel" name="sel">
                    <option value="index.php?lang=eng" <?=($langs=="eng" ? "selected" : "")?>>Eng</option>
                    <option value="index.php?lang=rus" <?=($langs=="rus" ? "selected" : "")?>>Rus</option>
                </select>
            </div>
            <hr>
                <?= $lang['HELLO']; ?>
                <p style="color: goldenrod; size: 15pt;">
                    Hello test text
                </p>
      </body>
</html>
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery и много язычность / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]