Сайт на 2-х языках, как реализовать?

Bvz

Новичок
Сайт на 2-х языках, как реализовать?

Подскажите пожайлуста как реализовать сайт на 2-х языках при помощи РНР?
а именно, я хочу создать 2 языковых файла для русски и английский, соответственно в зависимости от того какой язык выбрал человек подгружается тот или иной файл. И что при переходе а другую страницу сохранялся выбранный язык, а по умолчанию стоял русский.

Например:

Выбран язык или нет
если нет, то подключается русский языковой файл и страница грузится на русском
если происходит выбор при помощи нажатия кнопки, то проверяется какой выбор сделан и подгружается выбранный языковой файл
При переходе на другую страницу, проверяется был ли до этого выбор
если да, то подгружается нужный языковой фал
если нет, то подгружается по умоляанию русский
Ну итак далее

Просто неохота делать зеркало сайта, вот решил начать осваивать РНР, т.е. пока "чайник",
насколько я понял это реализуется с помощью суперглобальных массивов и форм, но как пока полностью не разобрался.
БД не используются.
 

solaris

Новичок
примерно так загружать:
PHP:
<?
  session_start();
  include $_SESSION['lang'].".html";
?>
 

Bvz

Новичок
Апокалипсися не нашел нужного решения для себя
 

crocodile2u

http://vbolshov.org.ru
solaris

Не давай глупых советов. С таким подходом по одному УРЛу могут выдаваться разные страницы, это плохо (например, нельзя послать ссылку другу).
 

Bvz

Новичок
triumvirat а как, дайте подсказку, я только начинаю осваивать данный язык, а при этом будет запоминаться при переходе на другие страницы?
 

Духовность™

Продвинутый новичок
Bvz
Искренне не советую начинать изучение PHP с реализации данной задачи. Будите отвлекаться на "язык" и путаться.
 

Bvz

Новичок
triumvirat я понимаю, но очень надо неоходо делать зеркало, хотя можно обойтись и зеркалом ))
в любом случае спасибо, отложу до лучших времен ))
а можно через сессии?
 

Духовность™

Продвинутый новичок
а можно через сессии?
нельзя. сессии тут вообще не пришей кобыле сникерс.

обычно язык передают в URL:

www.server.ru/ru/ - русский
www.server.ru/en/ - англицкий
www.server.ru/ - по умолчанию
www.server.ru/?lang=ru - русский, тоже самое что и www.server.ru/ru/

и т.д.
 

Bvz

Новичок
я делал так, все работает

Код:
<?php
session_start();

if(!isset($_SESSION['lang'])) $_SESSION['lang']='ru';
if(!empty($_GET['lang'])) $_SESSION['lang']=$_GET['lang'];
$lang = $_SESSION['lang'];

if($lang=='en'){
require_once( 'lang/english.php');
}
else {
require_once( 'lang/russian.php');
}
?>
Код:
<p><a href="index.php?lang=ru" title="<?php echo RU;?>"><img src="images/ru.jpg" alt="<?php echo RU;?>" width="33" height="21" /></a></p>
    <p><a href="index.php?lang=en" title="<?php echo EN;?>"><img src="images/en.jpg" alt="<?php echo EN;?>" width="33" height="21"  /></a></p>
 

igortik

Новичок
url: www.site.ru/index.php?lang=ru
www.site.ru/index.php?lang=en

Выборка из базы:
if (!$_GET['lang']) {$lang='ru';} else {$lang = mysql_real_escape_string($_GET['lang']);}
//Если не получили через $_GET $lang, то $lang = 'ru', если получили, то получаем реальное значение, переданное браузером.
//Далее выборка из базы, учитывая, что есть поля в таблице field_ru и field_en
$query = "SELECT * FROM `table` WHERE `field`='field'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$text = $row["field_$lang"]; //вносим в $text либо field_ru, либо field_en
 

crocodile2u

http://vbolshov.org.ru
igortik
1. Включай нотисы прежде чем постить код в форум
2. Какая-то сомнительная структура. А для третьего языка field_** добавлять? И запрос какой-то странный, в нем ввобще твоих этих field_ru и field_en - нету...

-~{}~ 10.05.08 17:34:

Bvz
я делал так, все работает
Кто ж говорил, что работать не будет? Говорили о том, что ты пользователям своим свинью подкладываешь. И они не смогут нормально, допустим, ссылку другу послать - если у них язык выбран не умолчательный. Помедитируй над этими словами часок - все станет на свои места. А лучше попробуй. В одном браузере открой свой проект на русском языке, а во втором - на аглицком. И попробуй ссылку из одного открыть в другом.
 

Bvz

Новичок
crocodile2uВы здесь абсолютно правы, но с моими небольшими знаниями РНР это единственное, что я смог найти. можете подкинуть направление в котором искать?
 

crocodile2u

http://vbolshov.org.ru
дык эта... уже подкинули тут много хороших мыслей. выбирай на вкус:

www.server.ru/ru/ - русский
www.server.ru/en/ - англицкий
www.server.ru/ - по умолчанию
www.server.ru/?lang=ru - русский, тоже самое что и www.server.ru/ru/
ru.wikipedia.org
en.wikipedia.org
Или эти варианты по каким-то причинам не устраивают?
 

AmdY

Пью пиво
Команда форума
А мне нравится вариант Bvz, только стоит заменить дефолтный язык на атоопределение. приятно получить ссылку на статью на своём языке, а не на языке отправителя.
Bvz что за странная конструкция <?php echo RU;?> или у тебя отключены нотисы или это действительно константа
 

crocodile2u

http://vbolshov.org.ru
AmdY
По-моему, ты не совсем понял, о чем речь. Пример из личной практики: индексная пага сайта на русском в корне отличается от индексной паги на английском (сайт турагенства: русская страница рассчитана на тех, кто уезжает из России за границу, а английская - на иностранцев, приезжающих к нам). Посмотри опять же википедию или dev.mysql.com... И вообще - УРЛ страницы должен ее идентифицировать, а здесь получается разный контент по одному УРЛу. С поисковиками полная засада - короче, плюс только в быстрой и беспроблемной реализации.
 
Сверху