Здравствуйте, для начала расскажу начало истории, чтобы было понятно то, что я хочу сделать. Вот решил перевести свой сайт на разные языки... В каждый языковой файл я поместил функцию с массивом, вот примерно таким(для рус): Код (Text): function lang($str) { $lang = array( 'main' => 'Главная', 'categories' => 'Категории', 'relatedVideos' => 'Похожие видео', 'categories' => 'Категории', ); $str = $lang[$str]; if(in_array($str, $lang)) return $str; else return false; Там где был текст, я подставлял вывод массива Код (Text): <?=lang('имя любого из элемента массива lang')?> В зависимости от выбранного языка, выбирается массив с определённым языком, а там уже выбирается определённый элемент массива, который я указал... Ну, думаю здесь всё понятно, я не стал придумывать велосипед. Проблемы начались после того, как мне пришлось выводить язык не из статического текста, а с динамического, к примеру выборкой из базы данных, поясню: если я указывална странице так Код (Text): <?=lang('main')?> , то выводилось или "Main" или "Главная", в зависимости от языка, но если элемент массива я указываю не на прямую, а через переменную Код (Text): <? $example = main; =lang('$example') ?> , то почему-то сама переменная не подставляется в массив и массив дальше выбирает элемент из файла, а наоборот ничего не подставляет, то есть переменную $example считает просто тестом и ищет в массиве lang элемент "$example". Уважаемые господа программисты, подскажите как сделать так, чтобы переменная в массив подставлялось и всё работало. Бился над этой задачей весь вечер, но увы и ах, хотя может быть я просто туплю, и сдесь ничего нет сложного, заранее спасибо.
Нене, ну я так пробовал, сейчас вот опять попробовал - Не работает, выводит просто текстом: "lang(young)", ну без кавычек конечно, и ничего нет дальше...
$resultTR = mysql_query("SELECT id, cat, link_en FROM categories ORDER BY view DESC LIMIT 0,17",$db); if (!$resultTR) { echo "<p class='errorMesseg'>Запрос на выборку данных из базы не прошел</p>"; exit(mysql_error()); } if (mysql_num_rows($resultTR) > 0) { $myrowTR = mysql_fetch_array($resultTR); do { $result10 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$myrowTR[id]'",$db); $sum = mysql_fetch_array($result10); $e = $myrowTR[link_en]; printf ("<li> <a href='$SERVER/category/%s' title='%s'>lang($e)</a></li>",$myrowTR["link_en"],$myrowTR["cat"]); } while ($myrowTR = mysql_fetch_array($resultTR)); } else { echo "<p 'class='errorMesseg'>Информация по запросу не может быть извлечена в таблице нет записей.</p>"; exit(); } Добавлено спустя 3 минуты 2 секунды: вот код языкового файла на всякий случай, но думаю тут проблем не должно возникнуть Код (Text): <? function lang($str) { $lang = array( // навигация 'main' => 'Главная', 'categories' => 'Категории', 'relatedVideos' => 'Похожие видео', 'categories' => 'Категории', 'best_for' => 'Лучшее за', 'all_the_time' => 'Всё время', 'month' => 'Месяц', '3days' => '3 дня', 'added' => 'добавлено', 'young' => 'Молоденькие', //Дни недели 'Monday' => 'Понедельник', 'Tuesday' => 'Вторник', 'Wednesday' => 'Среда', 'Thursday' => 'Четверг', 'Friday' => 'Пятница', 'Saturday' => 'Суббота', 'Sunday' => 'Воскресенье', ); $str = $lang[$str]; if(in_array($str, $lang)) return $str; else return false; } //'' => '', ?>
Код (PHP): printf ("<li> <a href='$SERVER/category/%s' title='%s'>lang($e)</a></li>",$myrowTR["link_en"],$myrowTR["cat"]); ==> Код (PHP): printf ("<li> <a href='$SERVER/category/%s' title='%s'>" . lang($e) . "</a></li>",$myrowTR["link_en"],$myrowTR["cat"]);
Добавлено спустя 1 минуту 28 секунд: Чёрт, как же я тупил, о боги, какое счастье, у меня уже 4 часа ночи, чёрт, какое наслаждение, когда несколько часов бился, сидел тупил, а тут блин... ох-ох... Огромное спасибо!!) Блин, какая радость, спасибо вам огромное) Добавлено спустя 1 минуту 7 секунд: нормальные бюджеты, надо же ведь всё самому разобрать)