Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод языка из файла
 
 автор: frisst   (18.10.2009 в 12:19)   письмо автору
 
 

ребят! вопрос между жизней и смертью! У меня цель сделать сайт на двух языках !
я подсморел как сделано на движке phpbb! там сам язык в отдельном файле! код такой вот

<?php
if (!defined('IN_PHPBB'))
{exit;}
if (empty(
$lang) || !is_array($lang))
{
$lang = array();}
$lang array_merge($lang, array(
        
'ADMIN_CONFIG'                                        => 'Настройки администратора',
        
'ADMIN_PASSWORD'                                => 'Пароль администратора',
.......
));

?>



а как выносить язык из этого файла на нужные страницы совершенно не понял!
помогите кто чем может!....

  Ответить  
 
 автор: DJ Paltus   (18.10.2009 в 13:28)   письмо автору
 
   для: frisst   (18.10.2009 в 12:19)
 

в данном месте кода мы добавляем к уже готовому массиву lang (или создавая его заново, если его нету или он не массив) некоторое количество шаблончиков на нужном языке. А тчо потому делать с массивом?
В том месте сайта, где надо вставить слова "Настройки администратора", надо вставлять не их, а echo lang[ADMIN_CONFIG];

  Ответить  
 
 автор: frisst   (18.10.2009 в 14:12)   письмо автору
 
   для: DJ Paltus   (18.10.2009 в 13:28)
 

вы могли бы мне прислать маленький скриптик с примером?
просто я не могу до конца врубиться!
повторюсь... мне нужно вывести из файла слова(или фразы) на страницу...

заранее спасибо!

  Ответить  
 
 автор: frisst   (18.10.2009 в 16:50)   письмо автору
 
   для: frisst   (18.10.2009 в 14:12)
 

может не правильно сказал!?
попробую так!

Допустим создал я страницу, но мне нужно чтобы весь текст хранился в базе данных, и подгружался на страницу... но чтобы не писать для каждого вырожения команду выгрузки из БД! а чтоб в начале страницы открыть запрас, раскидать где нужно фразы и слова, а в конце закрыть...

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 17:07)   письмо автору
 
   для: frisst   (18.10.2009 в 16:50)
 

Мультиязычность поддерживает с использованием файлов, а не базы данных. По крайней мере, я не видел таких решений (с помощью бд)

Как сделать на файлах - выше уже показали (вы сами и показали, это и есть языковой файл)
Как вариант, хранить данные не в массиве, а с помощью констант

  Ответить  
 
 автор: frisst   (18.10.2009 в 17:12)   письмо автору
 
   для: neadekvat   (18.10.2009 в 17:07)
 

Значит буду на файлах делать!))
просто я не знаю как это сделать.. вот и спрашиваю...(((

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 17:25)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: frisst   (18.10.2009 в 17:38)   письмо автору
 
   для: neadekvat   (18.10.2009 в 17:25)
 

Извините за глупые вопросы, так то в общем я понял, но одно но! Нужно же указать, из какого файла мне нужно выгружать всё это?
помогите пожалуйста!...

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 18:07)   письмо автору
 
   для: frisst   (18.10.2009 в 17:38)
 

Сделайте где-нибудь ссылку на возможные языки. Видели ж на сайтах наверняка.
И по ссылке устанавливайте кукисы с языком. Ну и читайте их в начале каждого скрипта

  Ответить  
 
 автор: frisst   (18.10.2009 в 18:16)   письмо автору
 
   для: neadekvat   (18.10.2009 в 18:07)
 

спасибо.. сейчас буду пробовать!... надеюсь получится!... с куки редко работал!...

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 18:17)   письмо автору
 
   для: frisst   (18.10.2009 в 18:16)
 

Редко ли? Или вообще не работали?

  Ответить  
 
 автор: frisst   (18.10.2009 в 18:33)   письмо автору
 
   для: neadekvat   (18.10.2009 в 18:17)
 

можно сказать что почти ваще не работал!!! )))

знаю только
установка:

<?php
  setcookie 
('sweetness''шоколад');
?>


чтение:
<?php 
  
if (isset($_COOKIE['sweetness']))  {
print 
" этот  {$_COOKIE['sweetness']} горький.";
}
?>


чтото как то так! )))

но я щас думаю, как из файла в куки записать?

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 18:41)   письмо автору
 
   для: frisst   (18.10.2009 в 18:33)
 

Вы сначала подйумайте, а зачем вообще что-то из файла в куки записывать?
Записывать в кукисы надо не текст языка, а обозначение языка (rus или en и тп), а потом, если установлено rus показывать надписи из файла русского языка, если en то английского, если не определено, то (если сайт больше для русских) тоже русский файл.

  Ответить  
 
 автор: frisst   (18.10.2009 в 18:52)   письмо автору
 
   для: neadekvat   (18.10.2009 в 18:41)
 

ааа... вон как! говорю же, редко с куки работал!(точнее очень редко!)

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 18:58)   письмо автору
 
   для: frisst   (18.10.2009 в 18:52)
 

По-моему, опыт работы тут не так важен. Обычная логика

  Ответить  
 
 автор: frisst   (18.10.2009 в 19:01)   письмо автору
 
   для: 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');
?> 

(заранее вопрос, где мне нужно вставить это код? на самой странице?если да, то имеет значение где именно?)

всё дальше я ваще не знаю чё делать! ;(

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 19:50)   письмо автору
 
   для: 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>

Код советую прошерстить "от" и "до", т.к. писался на коленке, могут быть ошибки и недоработки. Если что-то не понятно – спрашивайте, но прежде почитав документацию

  Ответить  
 
 автор: frisst   (18.10.2009 в 19:57)   письмо автору
 
   для: neadekvat   (18.10.2009 в 19:50)
 

спасибо огромное!!! буду щас пробовать!

вы не могли бы мне дать номер ICQ?

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 20:04)   письмо автору
 
   для: frisst   (18.10.2009 в 19:57)
 

Нет, пишите сюда. Если будет что ответить - я отвечу :)

  Ответить  
 
 автор: frisst   (18.10.2009 в 20:07)   письмо автору
 
   для: neadekvat   (18.10.2009 в 20:04)
 

окей! по любому вопросы появятся! )))
но постараюсь теперь своим ходом!)))

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 20:10)   письмо автору
 
   для: frisst   (18.10.2009 в 20:07)
 

Если с английским языком не дружите, то можете пользоваться этим:
http://softtime.ru/bookphp/help.php

  Ответить  
 
 автор: frisst   (18.10.2009 в 20:09)   письмо автору
 
   для: neadekvat   (18.10.2009 в 19:50)
 

а файл setlang.php нужно в папке langs создавать?

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 20:11)   письмо автору
 
   для: frisst   (18.10.2009 в 20:09)
 

Нет, рядом с файлом index.php

  Ответить  
 
 автор: frisst   (18.10.2009 в 20:43)   письмо автору
 
   для: neadekvat   (18.10.2009 в 20:11)
 

Ура работает!!!
щас буду делать полный перевод!!!
ещё раз спасибо...

  Ответить  
 
 автор: frisst   (18.10.2009 в 20:47)   письмо автору
 
   для: frisst   (18.10.2009 в 20:43)
 

Ан нет! не усмотрел я!
по стандарту вы указали в коде русский.
я захожу всё верно! русский, когда перевожу на английский, тоже работает, но опять на русский не могу!
почуме?
только если полностью все куки удаляю, то работает, но опять же только один раз! может срок жизни куки нужно уменьшить?

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 21:14)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: Саня   (18.10.2009 в 19:59)   письмо автору
 
   для: neadekvat   (18.10.2009 в 17:07)
 

> Мультиязычность поддерживает с использованием файлов, а не базы данных.
> По крайней мере, я не видел таких решений (с помощью бд)
Очень часто так делают. Статьи пишут в админке на двух языках, которая попадёт в базу, а статичные элементы на страницах, вроде "написать комментарий", "перейти на главную" и т. п. выносят во внешний файл. Такая схема используется в битриксе.

  Ответить  
 
 автор: neadekvat   (18.10.2009 в 20:02)   письмо автору
 
   для: Саня   (18.10.2009 в 19:59)
 

Именно это я и имел в виду.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования