Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многоязычные сайты 
:(
    Опции темы
Wolf1994
Дата 2.7.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



Предлагаю два варианта решения данной ситуации.
1. "Не в тему" - как у меня. На русскоязычной странице есть ссылка на English. С одной англоязычной страницы ссылка ведёт на другую англоязычную страницу и тд. То есть все страницы на одном языке связаны. Получается несколько версий сайтов. Минус - отсутствие "модульности". Плюс - более гибкая настройка под каждый язык - некоторые объекты можно не отображать, некоторые, наоборот, добавить.
2. Передавать номер языка:
Код

<a href="index.php?lang=1">Русский</a>
<a href="index.php?lang=2">Английский</a>
<a href="index.php?lang=3">Немецкий</a>


Создаётся файл со списком подключаемых файлов:
Код

<?php
$lib [1]="russian.php";
$lib [2]="english.php";
$lib [3]="deutch.php";
?>


В index.php подключается выбранный файл:
Код

include $lib [$lang];


Как я уже упомянул я использую первый вариант, второй применяю для других функций, поэтому не вполне уверен, что он подходит для данного случая. Но, надеюсь, работать будет.
PM MAIL WWW   Вверх
Opik
Дата 4.7.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Вообщем финиш:
lib.php:
Код

<?php
error_reporting(E_ALL);
session_start();

$lang_name = isset($_GET['set_lang'])? basename($_GET['set_lang']): false;
if($lang_name && file_exists("lang/" . $lang_name . ".php"))
{
        $_SESSION['setLang'] = $lang_name;
}
elseif(!isset($_SESSION['setLang']))
{
$_SESSION['setLang'] = "rus";
}

include("lang/" . $_SESSION['setLang'] . ".php");

?>

rus.php
Код

<?php
  $lang['hello'] = 'Привет';
?>

script.php
Код

<?php
include('lib.php');
print $lang['hello'];
?>


Это сообщение отредактировал(а) Opik - 5.7.2005, 15:51
PM MAIL Skype   Вверх
Igor_CH
Дата 5.7.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Opik топик сверху не работает, вообще не переходит с языка на язык.
PM MAIL   Вверх
Opik
Дата 5.7.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Исправил, очепятка была, нет ошибок 100%
PM MAIL Skype   Вверх
Igor_CH
Дата 5.7.2005, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Тоже проверил не работает. Берется перевод только с файла rus.php, на английский не перейти.

Это сообщение отредактировал(а) Igor_CH - 5.7.2005, 16:04
PM MAIL   Вверх
Bikutoru
Дата 5.7.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 8
Всего: 22



Код

<?php
error_reporting(E_ALL);
session_start();

$lang_name = isset($_GET['set_lang'])? basename($_GET['set_lang']): false;

echo "Lang_name: {" . $lang_name . "}<BR>\n"; #DEBUG

if($lang_name && file_exists("lang/" . $lang_name . ".php"))
{
echo "Choise #1<BR>\n"; #DEBUG
$_SESSION['setLang'] = $lang_name;
}
elseif(!isset($_SESSION['setLang']))
{
echo "Choise #2<BR>\n"; #DEBUG
$_SESSION['setLang'] = "rus";
}
else
{
echo "Choise #3<BR>\n"; #DEBUG
}

echo "SESSION[setLang]: {" . $_SESSION['setLang'] . "}<BR>\n"; #DEBUG

include("lang/" . $_SESSION['setLang'] . ".php");

?>


Igor_CH, это называется отладка. Если ты до сих пор не понял, что именно тебе, а никому-нибудь другому, придется ей заниматься, то это клинический случай... За тебя никто ничего делать не будет, потому что это нужно тебе. Тебе написали уже столько кода, что по одному нему можно во всем разобраться. Жаль, что Opik почистил тему и удалил ту ссылку, тебе было бы полезно почитать что там написано...

И пойми наконец, что если за тебя все будут делать, то это приведет к твоей деградации, ты будешь просто "никаким" специалистом...


Возможно, я высказал это в несколько резкой форме, но других слов у меня уже нет...
P.S. Если где палку перегнул, модераторы подправят smile


Это сообщение отредактировал(а) Bikutoru - 5.7.2005, 18:20


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Opik
Дата 5.7.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Igor_CH
А имена файлов точно совпадают? Этот код я проверил, работает на ура.
Цитата
Жаль, что Opik почистил тему и удалил ту ссылку, тебе было бы полезно почитать что там написано...

Эту? http://phpfaq.ru/debug

PM MAIL Skype   Вверх
Igor_CH
Дата 5.7.2005, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



да не деградирую, неделю бьюсь уже сил нету, неполучается.
после твоего поста почти получилось smile

вот оканчательный код:
Код

<?php
error_reporting(E_ALL);
session_start();

$lang_name = isset($_GET['lang'])? basename($_GET['lang']): false;

if($lang_name && file_exists("lang/" . $lang_name . ".php"))
{
$_SESSION['Lang'] = $lang_name;
}
elseif(!isset($_SESSION['Lang']))
{
$_SESSION['Lang'] = "rus";
}

include("lang/" . $_SESSION['Lang'] . ".php");

?>

как ни покажется странным он приводился, с одним но строоки:
Код

$_SESSION['Lang'] = $lang_name;
и
elseif(!isset($_SESSION['Lang']))

были вот такими:
Код

$_SESSION['lang'] = $lang_name;
и
elseif(!isset($_SESSION['lang']))

почему из заглавной буквы такая ошибка?
И последний вопрос уже по рабочему коду.
Если сылка имеет вид 1.php?lang=eng то выводится одна буква "H", а если простот 1.php то "HELLO"?

PM MAIL   Вверх
Bikutoru
Дата 5.7.2005, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 8
Всего: 22



Opik, да именно про нее я и говорил

Igor_CH, честно говоря, не очень понял, что ты имеешь в виду. Поробуй ту переменнную с "HELLO" переименовать. Мне кажется проблема в этом:
$_GET['lang'] = "eng";
...
$lang["hello"] = "Hello";//Здесь происходит преобразование $lang к массиву и из-за него возникает баг

Других мыслей нет


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Aliance
Дата 5.7.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Я поднимал подобный вопрос, поиск рулит.
PM MAIL WWW ICQ Skype   Вверх
Igor_CH
Дата 7.7.2005, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Aliance просмотрел кучу тем, ответа в них нет.
Вот эта тема: http://forum.vingrad.ru/index.php?showtopi...60&unread=1&hl=
и вот твой ответ:
Цитата
Все, все настроил, но как и ожидал, не работает если в ссылке есть еще параметры

PM MAIL   Вверх
Igor_CH
Дата 8.7.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 20.3.2005

Репутация: нет
Всего: нет



Ну все таки вернусь к вопросу выше, почему если в url есть переменная слова не выводятся полностью?
Можно ли в таком случае выводить их в таком виде:
Файл eng.php
$h = “hello”;
А потом выводить как echo “$h”; ?

PM MAIL   Вверх
Aliance
Дата 8.7.2005, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Я сделал просто. В файле, где нужна многоязычность я сделал так.
Был:
Код

Привет. Это моя страница.

Стал:
Код

<?=$hello;?>


Затем, в нем же определяю, что стоит в параметрах (см. код в моем топике), если русский - то подгружаю конфиг www.ya.ru/rus/conf.php если англ. - www.ya.ru/eng/conf.php а в них храню такое:
Код

// rus
$hello = 'Привет. Это моя страница.';

Код

// eng
$hello = 'Hello. This is my page.';

PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.