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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Помогите найти ошибку.

Сообщения:  [1-10]   [11-19] 

 
 автор: psychomc   (23.11.2009 в 10:20)   письмо автору
 
   для: tavila2009   (23.11.2009 в 07:56)
 

Бог помощь )))

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 07:56)   письмо автору
 
   для: sim5   (23.11.2009 в 07:45)
 

всё правильно вы говорите. Я займусь этим. Спасибо большое. Оказывается это у меня еще одно белое пятно которое надо победить. Спасибо большое.

  Ответить  
 
 автор: sim5   (23.11.2009 в 07:45)   письмо автору
 
   для: tavila2009   (23.11.2009 в 07:15)
 

Миледи, идите на кухню, приготовьте чашечку кофе, и порассуждаем маленько.

"я вообще-то сделала. Работает" - похвально, но не рационально, и почему. Допустим, что сейчас ваш мультиязычный сайт только и может выдать на нескольких языках пункты меню, и может даже этого и достаточно. Хотя в ваших переменных среди других языков почему-то есть русское, что для инстранца может оказаться непреодолимой проблемой. Ну это так, прелюдия.

Ваш скрипт, это автомат, причем автомат который совсем не знает кто им пользуется, немец, русский или иной басурман. Ваш автомат один для всех. Его главная задача, это выдать контент, причем выдать как можно быстрее, а быстрее будет подключить готовое и его использовать, чем заниматься ненужными вычислениями.

Ваши пользователи возможно захотят что-то у вас скачать, при этом немцу будет понятна ссылка с текстом "Гитлер капут", англичанину "Плиз, сэр", а русскому кроме "Валяй..." ничего не надо. И вы опять будете писать скрипт, в теле которого будете вычислять нечто, определять что это нечто должно выдавать.... А через неделю у ваших пользователей настроение измениться, им захочется другого, и вам придется опять вычислять, изменять....

"я вообще-то сделала. Работает" - забыть. Нельзя так делать, трудно вам будет потом вносить добавления и изменения. Вы можете привносить в свой автомат новые функции, видоизменять логику его работы, а вот поток данных, которые имеют одну и ту же суть, но разные значения, должны определяться загодя, и в нужном месте автомата только указывать на них ссылку, а не вычислять их имена, и не держать в теле автомата их значения. При этом вы можете спокойно добавлять любой язык, достаточно только описать все используемые автоматом констаны в новом языковом файле.

Я не знаю, что и как у вас на сайте, возможно для интерфейса удобнее будет иметь именно языковые файлы. Если ваши запросы идут через индексный файл, то вам достаточно подключить его в одном месте. Если же сайт имеет сложную структуру, возможно тогда будет удобнее воспользоваться базой. От этого сама суть не измениться - подключение необходимого языкового ресурса. Именно на это вы и должны обратить внимание, именно это и понять, а уж как сделать, это вторичный вопрос.

Вместо многих условий if, которыми вы определяте язык в скрипте, удобнее использовать условную операцию, которую я вам привел, и она означает следующее:

Переменная $lang равна (=), если пришел запрос языка (isset($_GET['lang'])), то равна значению этого запроса (тому, что после ?) $_GET['lang'], иначе она равна тому, что после (:) - значению по умолчанию 'ru'.

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 07:15)   письмо автору
 
   для: sim5   (23.11.2009 в 07:00)
 

? $_GET['lang'] : 'ru';вот эта часть кода не понятна.
я вообще-то сделала. Работает
http://iisus-hristos.com/paleh/index.php?lang=fr
но хотелось бы конечно с базой попробовать как вы советовали. Не знаю с чего там начать

  Ответить  
 
 автор: sim5   (23.11.2009 в 07:00)   письмо автору
 
   для: tavila2009   (23.11.2009 в 06:53)
 

То что вы делаете, вообще не рационально. Если все языковые различия, это четыре записи, то стоит ли давать "громкое определение" мультиязычный, для вашего сайта? Не думаю, чтобы на этих четыре записях все мультиязычность и закончилась. Значит ваш подход в корзину и забыть о нем.

Вы пытаетесь сделать примерно следующее - вместо использования CSS, который дает самое главное, это описание стилей всех страниц в одном "месте", и позволяющий оперативно их изменять, Вы используете встроенный стиль для каждого тега на странице, чтобы в последствии долго карпеть, дабы изменить всего лишь цвет на их небольшом участке.

Если вы изначально делаете для себя неудобства, то в дальнейшем это выльется в серьезную проблему.

PS. Вы понимаете, что делате вот эта строка кода?:
<? 
$lang 
= isset($_GET['lang']) ? $_GET['lang'] : 'ru';

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 06:56)   письмо автору
 
   для: tavila2009   (23.11.2009 в 06:53)
 

не понимаю почему сейчас-то берет только французский, т.е. последний в if
http://iisus-hristos.com/paleh/index.php?lang=ru

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 06:53)   письмо автору
 
   для: sim5   (23.11.2009 в 06:43)
 

я вот так сделала. Не совсем получается. Не рационально при больших меню. Согласна.
<?
if(isset($_GET["lang"]) and $_GET["lang"]=="eng"){$language="eng";}
elseif(isset($_GET["lang"]) and $_GET["lang"]=="ru"){$language="ru";}
elseif(isset($_GET["lang"]) and $_GET["lang"]=="de"){$language="de";}
elseif(isset($_GET["lang"]) and $_GET["lang"]=="fr"){$language="fr";}
else{$language="eng";}
echo $language;

if ($language="ru"){
$st1="home";
$st2="каталог икон";
$st3="как купить";
$st4="контакт";}

if ($language="eng"){
$st1="home";
$st2="catalogue of icons";
$st3="how to buy";
$st4="контакт";}

if ($language="de"){
$st1="home";
$st2="der katalog der ikonen";
$st3="wie zu kaufen";
$st4="der kontakt";}

if ($language="fr"){
$st1="home";
$st2="le catalogue des icones";
$st3="comme acheter";
$st4="le contact";}

?>

<table width="180" border="1" align="left" cellpadding="0" cellspacing="0">
<tr><td height="16">&nbsp;</td></tr>
<tr><td height="16">&nbsp;</td></tr>
<tr><td><a href="index.php?m=home&lang=<?=$language;?>"><?=$st1;?></a></td></tr>
<tr><td><a href="index.php?m=catalog&lang=<?=$language;?>"><?=$st2;?></a></td></tr>
<tr><td><a href="index.php?m=buy&lang=<?=$language;?>"><?=$st3;?></a></td></tr>
<tr><td><a href="index.php?m=contact&lang=<?=$language;?>"><?=$st4;?></a></td></tr>
<tr><td></td></tr>

  Ответить  
 
 автор: sim5   (23.11.2009 в 06:43)   письмо автору
 
   для: tavila2009   (23.11.2009 в 06:24)
 

Дело не в кнопках или еще чем-то, дело в самом подходе. Чтобы вам что-то изменить или добавить в интерфейсе, вам придется перековыривать все ваши скрипты, это разве разумно?
Вся идея проста как тапочки, например:
1. Готовите языковые файлы:
а) ru.php
<?
define
('CHARSET''windows-1251');
define('OBJECT''Женщина');

б) en.php
<?
define
('CHARSET''windows-1252');
define('OBJECT''Woman');

Получаете запрос на язык:
<?
$lang 
= isset($_GET['lang']) ? $_GET['lang'] : 'ru';
//подключаете необходмый языковый файл
include($lang.'.php');
//используете его
echo OBJECT;

Вот таков принцип. Не обязательно именно так, не обязательно именовать файлы по переменной запроса, главное - это постоянные переменные (константы), а их значение "безболезненно" для скрипта можно редактировать. Просто будет добавлять новые значения - в скрипт переменные (константы), в соответствующий языковый файл - значения.

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 06:24)   письмо автору
 
   для: sim5   (23.11.2009 в 06:18)
 

из-за четырех пунктов меню не хочется огород городить. Нельзя ли как-то всётаки склеить эти 2 части?

  Ответить  
 
 автор: tavila2009   (23.11.2009 в 06:21)   письмо автору
 
   для: sim5   (23.11.2009 в 06:18)
 

у меня было с ява кнопками. Вот ещё остался кусок. Но я решила сделать без кнопок. И запуталась. С кнопками всё работало прекрасно http://iisus-hristos.com/paleh/index.php?m=catalog&lang=de

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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