![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Igor_CH |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Пожалуйста объясните, как работают многоязычные сайты?
Например есть страница 1.php, на которой выбор языка:
Т.е. $yaz соответствует языку. На следующей странице 2.php:
Т.е. если $yaz = 1 Русский язык, $yaz = 2 Английски, … Но почему то так не работает, почему? |
||||
|
|||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
register_globals off ?
И если писать if ($a = 1), то это означает, что Вы присваиваете переменной $a значение 1, а не проверяете, равно ли оно 1. Надо писать if ($a == 1). Это сообщение отредактировал(а) Mace - 27.6.2005, 16:58 |
|||
|
||||
| Igor_CH |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
спасибо
а как делать остальные страницы, что бы переменная не проподала, например на следующей странице 3.php: делаем страницу 2.php вот такой:
а на третьей странице 3.php (и т.д. хоть 30 страниц) опять:
|
||||
|
|||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Igor_CH
ставь куку. http://www.php.net/setcookie далее проверяй 1) Есть ли yaz в строке адреса, если да - ставим новую куку. 2) Если нету, то берем значение языка из куки. |
|||
|
||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
А если куки блокируются?
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
То в сессию.
|
|||
|
||||
| Igor_CH |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
можно по подробнее как сделать оба варианта?
1 вариант: в начале каждого файла должны быть строки:
Потом идет содержание файла
Но почему то не выходит. Как реализовать второрй вариант? |
||||
|
|||||
| Opik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
зачем тебе буферизация?
и подумай, обоснованно ли писать функцию, которая вызывается только 1 раз?
не вижу оного.
далее берешь значение из куки и с ним работаешь - вместо ГЕТ параметра. |
||||
|
|||||
| kelt |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 172 Регистрация: 21.6.2005 Репутация: нет Всего: 0 |
Я могу предложить такой вариант, проверенный, рабоает через сессии.
На страницах ставлю ссвлки для выбора языка, потом передаю через сессии название языка, а в папке с языками, языковые файлы. В начале каждой странице ставлю проверку на язык и потом подключаю файл с соответсвующим я зыком. У меня получается что макет один и тот же, а значения переменных изменяется в зависимости от языка! --------------------
Timeo danaos et dona ferentes |
|||
|
||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Kelt очень интересно!
Подскажи как этот правильно сделать? |
|||
|
||||
| kelt |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 172 Регистрация: 21.6.2005 Репутация: нет Всего: 0 |
В общем я делаю, так создаю несколько языковых файлов в них пишу переменные и присвиаваю им в зависимости от языка. В название файла я ставлю название языка. А на страницах я просто использую переменные, и когда идет выбор языка я вставляю в начало страницы include-дом языковой файл, и у меня выходит на странице ставиться выбранный язык.
--------------------
Timeo danaos et dona ferentes |
|||
|
||||
| Igor_CH |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
kelt можешь подсказать кодом?
Что у меня не так: файл lib.php
файл 0.php
файл 1.php, 2.php, ...
Это сообщение отредактировал(а) Igor_CH - 28.6.2005, 09:25 |
||||||
|
|||||||
| kelt |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 172 Регистрация: 21.6.2005 Репутация: нет Всего: 0 |
А что конкретно не работает?
--------------------
Timeo danaos et dona ferentes |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
kelt
а ты код посмотри, и подумай. что код делает, и что хочет программист, совершенно 2 разные вещи |
|||
|
||||
| kelt |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 172 Регистрация: 21.6.2005 Репутация: нет Всего: 0 |
Да именно. А любые файлы, это те которые отображаются пользователям!
--------------------
Timeo danaos et dona ferentes |
|||
|
||||
| Wolf1994 |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 5.10.2004 Репутация: 7 Всего: 29 |
Предлагаю два варианта решения данной ситуации.
1. "Не в тему" - как у меня. На русскоязычной странице есть ссылка на English. С одной англоязычной страницы ссылка ведёт на другую англоязычную страницу и тд. То есть все страницы на одном языке связаны. Получается несколько версий сайтов. Минус - отсутствие "модульности". Плюс - более гибкая настройка под каждый язык - некоторые объекты можно не отображать, некоторые, наоборот, добавить. 2. Передавать номер языка:
Создаётся файл со списком подключаемых файлов:
В index.php подключается выбранный файл:
Как я уже упомянул я использую первый вариант, второй применяю для других функций, поэтому не вполне уверен, что он подходит для данного случая. Но, надеюсь, работать будет. |
||||||
|
|||||||
| Opik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Вообщем финиш:
lib.php:
rus.php
script.php
Это сообщение отредактировал(а) Opik - 5.7.2005, 15:51 |
||||||
|
|||||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Opik топик сверху не работает, вообще не переходит с языка на язык.
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Исправил, очепятка была, нет ошибок 100%
|
|||
|
||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Тоже проверил не работает. Берется перевод только с файла rus.php, на английский не перейти.
Это сообщение отредактировал(а) Igor_CH - 5.7.2005, 16:04 |
|||
|
||||
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: 8 Всего: 22 |
Igor_CH, это называется отладка. Если ты до сих пор не понял, что именно тебе, а никому-нибудь другому, придется ей заниматься, то это клинический случай... За тебя никто ничего делать не будет, потому что это нужно тебе. Тебе написали уже столько кода, что по одному нему можно во всем разобраться. Жаль, что Opik почистил тему и удалил ту ссылку, тебе было бы полезно почитать что там написано... И пойми наконец, что если за тебя все будут делать, то это приведет к твоей деградации, ты будешь просто "никаким" специалистом... Возможно, я высказал это в несколько резкой форме, но других слов у меня уже нет... P.S. Если где палку перегнул, модераторы подправят Это сообщение отредактировал(а) Bikutoru - 5.7.2005, 18:20 -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Igor_CH
А имена файлов точно совпадают? Этот код я проверил, работает на ура.
Эту? http://phpfaq.ru/debug |
|||
|
||||
| Igor_CH |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
да не деградирую, неделю бьюсь уже сил нету, неполучается.
после твоего поста почти получилось вот оканчательный код:
как ни покажется странным он приводился, с одним но строоки:
были вот такими:
почему из заглавной буквы такая ошибка? И последний вопрос уже по рабочему коду. Если сылка имеет вид 1.php?lang=eng то выводится одна буква "H", а если простот 1.php то "HELLO"? |
||||||
|
|||||||
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: 8 Всего: 22 |
Opik, да именно про нее я и говорил
Igor_CH, честно говоря, не очень понял, что ты имеешь в виду. Поробуй ту переменнную с "HELLO" переименовать. Мне кажется проблема в этом: $_GET['lang'] = "eng"; ... $lang["hello"] = "Hello";//Здесь происходит преобразование $lang к массиву и из-за него возникает баг Других мыслей нет -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Я поднимал подобный вопрос, поиск рулит.
|
|||
|
||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Aliance просмотрел кучу тем, ответа в них нет.
Вот эта тема: http://forum.vingrad.ru/index.php?showtopi...60&unread=1&hl= и вот твой ответ:
|
|||
|
||||
| Igor_CH |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 20.3.2005 Репутация: нет Всего: нет |
Ну все таки вернусь к вопросу выше, почему если в url есть переменная слова не выводятся полностью?
Можно ли в таком случае выводить их в таком виде: Файл eng.php $h = “hello”; А потом выводить как echo “$h”; ? |
|||
|
||||
| Aliance |
|
||||||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Я сделал просто. В файле, где нужна многоязычность я сделал так.
Был:
Стал:
Затем, в нем же определяю, что стоит в параметрах (см. код в моем топике), если русский - то подгружаю конфиг www.ya.ru/rus/conf.php если англ. - www.ya.ru/eng/conf.php а в них храню такое:
|
||||||||
|
|||||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |