Светлана пишет:Не устраивает только, что блок нужно располагать в каждой странице сайта. Как разместить блок единожды?
Ваш алгоритм мультиязычности - по сути это первая функция будущего ядра Вашего проекта. Чтобы не усложнять всё умными концепциями и фразами, предложу вариант попроще, на котором проще учиться.
Создайте в Вашем проекте папку
include, а в ней файл
lib.php. Этот файл и будет представлять собой основное ядро Вашего проекта (заумно сказано, на самом деле этот файл будет просто содержать набор функций, которые мы условно назовём ядерными и сам файл - ядром). Почему называется именно "ядро"? Потому что именно оно будет содержать все основные функции,
необходимые для работы проекта.
В файле
include/lib.php создайте функцию (я назвал её
applyLang, Вы можете переименовать):
CODE:<?php
function applyLang() { // Объявление функции applyLang
global $lng; // Будем работать с массивом $lng в глобальной области видимости
$lang='en';
if (isset($_COOKIE['lang'])) $lang=$_COOKIE['lang'];
if (isset($_POST['lang']))
{
$lang=$_POST['lang'];
setcookie('lang',$lang,mktime(3,0,0,1,1,2015));
}
switch($lang)
{
case 'ru':
require 'lang/russian/all.php';
break;
default:
require 'lang/english/all.php';
break;
}
}
?>
Функция содержит Ваш алгоритм выбора языка (т.е. фактически я добавил всего 2 строки для объявления Ваших строк функцией)
Далее во всех Ваших исполняемых файлах (
index.php,
partner.php) вместо Вашего алгоритма:
CODE:$lang='en';
if (isset($_COOKIE['lang'])) $lang=$_COOKIE['lang'];
if (isset($_POST['lang']))
{
$lang=$_POST['lang'];
setcookie('lang',$lang,mktime(3,0,0,1,1,2015));
}
switch($lang)
{
case 'ru':
require 'lang/russian/all.php';
break;
default:
require 'lang/english/all.php';
break;
}
Вам достаточно будет разместить всего 2 строки:
CODE:include('include/lib.php'); // Подключаем ядро
applyLang(); // Применяем выбранный пользователем язык (all.php)
Для того, чтобы это работало, Вам нужно все языковые строки представить в языковых файлах в виде массива, а не заводить для каждой новой строки новую переменную. Вот пример файла
all.php:
CODE:$lng['boardname'] = 'Чемпионат АВС по трейдингу';
$lng['Chmp_A'] = 'Главная';
$lng['Chmp_B'] = 'Проект';
$lng['Chmp_C'] = 'Партнёры';
Соответственно, обращаться к этим языковым строкам в скриптах и шаблонах Вам нужно будет тоже как к элементам массива. Т.е. вместо
$boardname нужно будет писать
$lng['boardname']
Постарался ответить максимально доступно. Не знаю, получилось ли