|
|
|
| Подскажите пожайлуста как реализовать сайт на 2-х языках при помощи РНР?
а именно, я хочу создать 2 языковых файла для русски и английский, соответственно в зависимости от того какой язык выбрал человек подгружается тот или иной файл. И что при переходе а другую страницу сохранялся выбранный язык, а по умолчанию стоял русский.
Например:
Выбран язык или нет
если нет, то подключается русский языковой файл и страница грузится на русском
если происходит выбор при помощи нажатия кнопки, то проверяется какой выбор сделан и подгружается выбранный языковой файл
При переходе на другую страницу, проверяется был ли до этого выбор
если да, то подгружается нужный языковой фал
если нет, то подгружается по умоляанию русский
Ну итак далее
Просто неохота делать зеркало сайта, вот решил начать осваивать РНР, т.е. пока "чайник",
насколько я понял это реализуется с помощью суперглобальных массивов и форм, но как пока полностью не разобрался.
БД не используются. | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 21:42)
| | >БД не используются.
А данные то откуда берутся? | |
|
|
|
|
|
|
|
для: AcidTrash
(07.05.2008 в 21:56)
| | з языковых файлов, через константы | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 22:01)
| | >языковых файлов
Стесняюсь спросить, а что такое языковые файлы ?
P.S. рентабельнее использовать DB. | |
|
|
|
|
|
|
|
для: AcidTrash
(07.05.2008 в 22:17)
| | в котором хранятся константы, или информация на русском и английсском языке, а на станице материал не отображается, просто публикуется, та или иная константа | |
|
|
|
|
|
|
|
для: AcidTrash
(07.05.2008 в 22:17)
| | в чем рентабельность выражается? | |
|
|
|
|
|
|
|
для: AcidTrash
(07.05.2008 в 22:17)
| | можно просто так сделать
index.php
<body>
текст
</body>
а можно так
ru.php
<?php
define ( 'TEKST' , 'текст');
?>
index.php
<?php
require_once( '/lang/ru.php');
<?php echo TEKST;?>
?>
а когда появляется второй язык
en.php
<?php
define ( 'TEKST' , 'text');
?>
то просто ножно выбрать нужный язык для подгрузки
index.php
<?php
выбрать и запомнить выбор между require_once( '/lang/ru.php'); и require_once( '/lang/ru.php');
<?php echo TEKST;?>
?> | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 21:42)
| | 2AcidTrash: Я вот тоже надолго задумался)
По сабжу:
<?php
session_start();
if(!isset($_SESSION['lang'])) $_SESSION['lang']='ru';
if(!empty($_GET['lang'])) $_SESSION['lang']=$_GET['lang'];
$lang = $_SESSION['lang'];
if($lang=='ru'){
// ....
}
if($lang=='en'){
// ....
}
if($lang=='de'){
// ....
}
?>
|
Да, кстати, напомню, что лучше проверять $lang, если он напрямую будет использоваться в запросе к БД или файловой системе. Это потенциальная дыра. | |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 22:28)
| | но БД не будет использована, спасибо, пошел изучать сессии, а lang где берется? | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 22:37)
| | На всяк пожарный "разжую" три строчки:
Если в сессии не установлена языковая переменная, устанавливаем русский по умолчанию.
if(!isset($_SESSION['lang'])) $_SESSION['lang']='ru';
|
Если GETом был передана переменная языка, сохраняем ее в сессию; предыдущее значение, перезапишется.
if(!empty($_GET['lang'])) $_SESSION['lang']=$_GET['lang'];
|
Для простоты вводим переменную $lang, которая берется из сессии.
$lang = $_SESSION['lang'];
|
А GETом (на всякий, опять таки, случай) передать можно так:
<a href="index.php?lang=ru">Русский</a><br />
<a href="index.php?lang=en">English</a><br />
<a href="index.php?lang=de">Deutsch</a><br />
|
| |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 22:57)
| | ты гений!, а при нажатии на ссылку. будет переход на index.php, правильно? | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 23:01)
| | Да, будет переходить на index.php | |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 23:05)
| | сделал, все работает, гениально и просто, а могу я еще одну переменную использовать, для реализации еще одной функции? | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 23:01)
| | здорово, я же могу не только lang задавать , но и другие переменные при переходе по другим ссылкам для других целей, и потом эту переменную вставить в код. здорово когда по человечески объяснять!
еще пару вопрсов можно,
1. а вот переменная QUERY_STRING наскоько уместна в использовании?
2. насколько уместно использование языковых файлов?
3. сессии и передача данных через url в чем различие или сходство? | |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 22:28)
| | >2AcidTrash: Я вот тоже надолго задумался)
И в чем задумались? С проектированием таблиц БД?
P.S.
В вашей конструкции, я бы воспользовался конструкцией switch. | |
|
|
|
|
|
|
|
для: AcidTrash
(07.05.2008 в 22:47)
| | >>2AcidTrash: Я вот тоже надолго задумался)
>И в чем задумались? С проектированием таблиц БД?
>
>P.S.
>В вашей конструкции, я бы воспользовался конструкцией switch.
Задумался насчет языковых файлов.
Да, абсолютно справедливое замечание. Со свитчом, конечно, лучше. Я в данном случае исходил из того, что с IFами пример более нагляден. | |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 22:28)
| | можно ещё если сессия не установлена посмотреть $_SERVER['HTTP_ACCEPT_LANGUAGE'], чтоб пользователю у кого английский по умолчанию получал английский сайт без лишних нажатий | |
|
|
|
|
|
|
|
для: Гончий пёс
(07.05.2008 в 22:28)
| | а в чем потецеильноть дыры? | |
|
|
|
|
|
|
|
для: Bvz
(07.05.2008 в 21:42)
| | делал это с помощью XML в зависимости от языка подгружается определенный файл с языковыми данными... | |
|
|
|