ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (2): « 1 [2]   

> Без описания
Светлана
Отправлено: 14 ноября 2010 — 10:29
Post Id



Забанен


Покинул форум
Сообщений всего: 240
Дата рег-ции: Июнь 2009  
Репутация: 8

[+]


Светлана пишет:
Сделала довольно примитивную, но работающую систему мультиязычности.
Как оказалось, системка работает как часы и у отличного от моего хостера. Всё чётко, без сбоев. Не устраивает только, что блок нужно располагать в каждой странице сайта. Как разместить блок единожды?

(Отредактировано автором: 14 ноября 2010 — 10:29)

 
 
yura3d
Отправлено: 15 ноября 2010 — 00:59
Post Id


Пользователь
ExBB Team
ExBB Developer
ExBB Mods Author


Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009  
Откуда: Минск, Беларусь
Репутация: 353




Светлана пишет:
Не устраивает только, что блок нужно располагать в каждой странице сайта. Как разместить блок единожды?

Ваш алгоритм мультиязычности - по сути это первая функция будущего ядра Вашего проекта. Чтобы не усложнять всё умными концепциями и фразами, предложу вариант попроще, на котором проще учиться.

Создайте в Вашем проекте папку 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']

Постарался ответить максимально доступно. Не знаю, получилось ли Однако
 
 
Светлана
Отправлено: 15 ноября 2010 — 16:24
Post Id



Забанен


Покинул форум
Сообщений всего: 240
Дата рег-ции: Июнь 2009  
Репутация: 8

[+]


Хм... Однако Радость Мой вариант:

CODE:
function multilang()
{
global $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;
}
...

Но мой вопрос, который я уточнила в личке, касался размещения блока в файле логос. Это возможно?
yura3d пишет:
Постарался ответить максимально доступно. Не знаю, получилось ли
Вполне Улыбка
(Добавление)
Как быть с дополнительными языковыми файлами? Ведь для большого сайта одного файла явно недостаточно. Для каждого из них создавать функцию? Или?
 
 
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« PHP/Perl »

> Похожие темы: Портал на файлах
Темы Форум Информация о теме Обновление
Сохранение данных БД в файлах форума.
MySQL Ответов: 3
Автор темы: Sugar
29 декабря 2011 — 08:32
Автор: Davinchi
Нужен скрипт галереи на файлах
Скрипты Ответов: 5
Автор темы: Astral_
5 марта 2011 — 16:01
Автор: BON
Какой блоговый движок на файлах порекомендуете?
Нужен блоговый движок на файлах с перспективой
Движки Ответов: 2
Автор темы: ercopav
3 марта 2013 — 15:40
Автор: igrok54
Поиск строковых переменных в языковых файлах
Обсуждение Ответов: 6
Автор темы: spirit
31 июля 2009 — 18:31
Автор: yura3d
Кодировка в скачанных файлах с сервера
кодировка
Общие вопросы Ответов: 6
Автор темы: alexx
21 февраля 2010 — 21:15
Автор: yura3d
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0537]     [ ]