|
|
|
| ребят! вопрос между жизней и смертью! У меня цель сделать сайт на двух языках !
я подсморел как сделано на движке phpbb! там сам язык в отдельном файле! код такой вот
<?php
if (!defined('IN_PHPBB'))
{exit;}
if (empty($lang) || !is_array($lang))
{$lang = array();}
$lang = array_merge($lang, array(
'ADMIN_CONFIG' => 'Настройки администратора',
'ADMIN_PASSWORD' => 'Пароль администратора',
.......
));
?>
|
а как выносить язык из этого файла на нужные страницы совершенно не понял!
помогите кто чем может!.... | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 12:19)
| | в данном месте кода мы добавляем к уже готовому массиву lang (или создавая его заново, если его нету или он не массив) некоторое количество шаблончиков на нужном языке. А тчо потому делать с массивом?
В том месте сайта, где надо вставить слова "Настройки администратора", надо вставлять не их, а echo lang[ADMIN_CONFIG]; | |
|
|
|
|
|
|
|
для: DJ Paltus
(18.10.2009 в 13:28)
| | вы могли бы мне прислать маленький скриптик с примером?
просто я не могу до конца врубиться!
повторюсь... мне нужно вывести из файла слова(или фразы) на страницу...
заранее спасибо! | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 14:12)
| | может не правильно сказал!?
попробую так!
Допустим создал я страницу, но мне нужно чтобы весь текст хранился в базе данных, и подгружался на страницу... но чтобы не писать для каждого вырожения команду выгрузки из БД! а чтоб в начале страницы открыть запрас, раскидать где нужно фразы и слова, а в конце закрыть... | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 16:50)
| | Мультиязычность поддерживает с использованием файлов, а не базы данных. По крайней мере, я не видел таких решений (с помощью бд)
Как сделать на файлах - выше уже показали (вы сами и показали, это и есть языковой файл)
Как вариант, хранить данные не в массиве, а с помощью констант | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 17:07)
| | Значит буду на файлах делать!))
просто я не знаю как это сделать.. вот и спрашиваю...((( | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 17:12)
| | В теме уже все написано..
Либо так:
lang_ru.php
<?php
$lang = array(
'ADMIN_SETTINGS' => 'Настройки администратора',
'ADMIN_PASSWORD' => 'Пароль администратора',
);
|
lang_en.php
<?php
$lang = array(
'ADMIN_SETTINGS' => 'Admin`s settings',
'ADMIN_PASSWORD' => 'Admin`s password',
);
|
А на сайте будет выводится так:
<?php
echo $lang['ADMIN_SETTINGS'];
|
Либо так:
lang_ru.php
<?php
define('ADMIN_SETTINGS', 'Настройки администратора');
defing('ADMIN_PASSWORD', 'Пароль администратора');
|
lang_en.php
<?php
define('ADMIN_SETTINGS', 'Admin`s settings');
defing('ADMIN_PASSWORD', 'Admin`s password');
|
И на сайте выводится так:
<?php
echo ADMIN_SETTINGS;
|
| |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 17:25)
| | Извините за глупые вопросы, так то в общем я понял, но одно но! Нужно же указать, из какого файла мне нужно выгружать всё это?
помогите пожалуйста!... | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 17:38)
| | Сделайте где-нибудь ссылку на возможные языки. Видели ж на сайтах наверняка.
И по ссылке устанавливайте кукисы с языком. Ну и читайте их в начале каждого скрипта | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 18:07)
| | спасибо.. сейчас буду пробовать!... надеюсь получится!... с куки редко работал!... | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 18:16)
| | Редко ли? Или вообще не работали? | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 18:17)
| | можно сказать что почти ваще не работал!!! )))
знаю только
установка:
<?php
setcookie ('sweetness', 'шоколад');
?>
|
чтение:
<?php
if (isset($_COOKIE['sweetness'])) {
print " этот {$_COOKIE['sweetness']} горький.";
}
?>
|
чтото как то так! )))
но я щас думаю, как из файла в куки записать? | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 18:33)
| | Вы сначала подйумайте, а зачем вообще что-то из файла в куки записывать?
Записывать в кукисы надо не текст языка, а обозначение языка (rus или en и тп), а потом, если установлено rus показывать надписи из файла русского языка, если en то английского, если не определено, то (если сайт больше для русских) тоже русский файл. | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 18:41)
| | ааа... вон как! говорю же, редко с куки работал!(точнее очень редко!) | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 18:52)
| | По-моему, опыт работы тут не так важен. Обычная логика | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 18:52)
| | фуууххх.... ваще запутался!!!)))
так я по порядку!
1)
нужно мне сперва создать файл lang_ru.php с содержимым:
<?php
$lang = array(
'ADMIN_SETTINGS' => 'Настройки администратора',
'ADMIN_PASSWORD' => 'Пароль администратора',
);
|
и lang_en.php с содержимым:
<?php
$lang = array(
'ADMIN_SETTINGS' => 'Admin`s settings',
'ADMIN_PASSWORD' => 'Admin`s password',
);
|
потом в нужном мне месте на странице установить код:
<?php
echo $lang['ADMIN_SETTINGS'];
echo $lang['ADMIN_PASSWORD'];
|
это кукис с записанным значение русского языка!
<?php
setcookie ('lang', 'ru');
?>
|
(заранее вопрос, где мне нужно вставить это код? на самой странице?если да, то имеет значение где именно?)
всё дальше я ваще не знаю чё делать! ;( | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 19:01)
| | Создаем папку langs. В ней языковые файлы хранятся с названиями ru.php, en.php и тд.
Это в начало каждого скрипта:
<?php
if (isset ($_COOKIE['lang']) ) {
switch ($_COOKIE['lang']):
case 'ru': include ('langs/ru.php'); break;
case 'en': include ('langs/en.php'); break;
endswitch;
} else {
include ('langs/ru.php'); // язык по умолчанию
}
|
Создаем файл setlang.php
<?php
if (isset ($_GET['lang']) ) {
switch ($_GET['lang']):
case 'ru': setcookie('lang', 'ru', time() + 2592000, '/');
case 'en': setcookie('lang', 'en', time() + 2592000, '/');
endswitch;
}
if (empty ($_SERVER['HTTP_REFERER']) ) $_SERVER['HTTP_REFERER'] = 'index.php';
header('location: '. $_SERVER['HTTP_REFERER']);
|
Ссылка на установку языка будет выглядеть так:
<a href='"setlang.php?lang=ru">Русский</a><br>
<a href='"setlang.php?lang=en">English</a>
Код советую прошерстить "от" и "до", т.к. писался на коленке, могут быть ошибки и недоработки. Если что-то не понятно – спрашивайте, но прежде почитав документацию | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 19:50)
| | спасибо огромное!!! буду щас пробовать!
вы не могли бы мне дать номер ICQ? | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 19:57)
| | Нет, пишите сюда. Если будет что ответить - я отвечу :) | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 20:04)
| | окей! по любому вопросы появятся! )))
но постараюсь теперь своим ходом!))) | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 20:07)
| | Если с английским языком не дружите, то можете пользоваться этим:
http://softtime.ru/bookphp/help.php | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 19:50)
| | а файл setlang.php нужно в папке langs создавать? | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 20:09)
| | Нет, рядом с файлом index.php | |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 20:11)
| | Ура работает!!!
щас буду делать полный перевод!!!
ещё раз спасибо... | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 20:43)
| | Ан нет! не усмотрел я!
по стандарту вы указали в коде русский.
я захожу всё верно! русский, когда перевожу на английский, тоже работает, но опять на русский не могу!
почуме?
только если полностью все куки удаляю, то работает, но опять же только один раз! может срок жизни куки нужно уменьшить? | |
|
|
|
|
|
|
|
для: frisst
(18.10.2009 в 20:47)
| | Исправь
<?php
switch ($_GET['lang']):
case 'ru': setcookie('lang', 'ru', time() + 2592000, '/');
case 'en': setcookie('lang', 'en', time() + 2592000, '/');
endswitch;
|
на это:
<?php
switch ($_GET['lang']):
case 'ru': setcookie('lang', 'ru', time() + 2592000, '/'); break;
case 'en': setcookie('lang', 'en', time() + 2592000, '/'); break;
endswitch;
|
| |
|
|
|
|
|
|
|
для: neadekvat
(18.10.2009 в 17:07)
| | > Мультиязычность поддерживает с использованием файлов, а не базы данных.
> По крайней мере, я не видел таких решений (с помощью бд)
Очень часто так делают. Статьи пишут в админке на двух языках, которая попадёт в базу, а статичные элементы на страницах, вроде "написать комментарий", "перейти на главную" и т. п. выносят во внешний файл. Такая схема используется в битриксе. | |
|
|
|
|
|
|
|
для: Саня
(18.10.2009 в 19:59)
| | Именно это я и имел в виду. | |
|
|
|