Здравствуйте! Нашел код для локализации сайта: "XML + PHP локализация сайта: интерфейс", но чего-то не хват. Что здесь нужно добавить ? Исходники на сайте так и не нашел.
Мне не понятно как должен выглядеть файл ajaxCore.php. В какой файл вставить Код (PHP): <div id="langReset"> <ul><a href="index.php"> // $localizatorTypes создает в init.php - это xml-объект <? echo $localizatorTypes; if($localizatorTypes){ foreach($localizatorTypes->lang as $lang){ $tmp=''; if($lang->id==$localType){$tmp='active';} echo '<li lang="'.$lang->id.'" '.$tmp.'><img src="'.$localizator->route.$lang->id.'/ico.png" title="'.$lang->name.'" weight="10px" height="10px"/></li>'; } } ?></a> </ul> </div> какие дополнительные файлы jQuery подключить чтобы заработал: Код (PHP): $(function(){ $('#langReset > ul > li').click(function(){ if(typeof $(this).attr('active')==='undefined'){ var id=$(this).attr('lang'); if(id && typeof id==='string'){ $.ajax({ type: "POST", url:"ajaxCore.php", data:({get:'change','i':id}), dataType:"html", async:true, success:function(e){ if(e=='OK'){ window.location.reload(); } } }); } } }); }); Куда подключить файл info.xml
обычно родная документация такие вопросы освещает. какой-нибудь step-by-step или quick start поищи. удачи!
Там такого нет. Добавлено спустя 48 секунд: Я даже пытался на этом сайте найти исходники, их тоже нет. Добавлено спустя 58 секунд: http: // www . devbattles . com /sand/post-204-XML++PHP+%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D1%81%D0%B0%D0%B9%D1%82%D0%B0+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81 [ кому надо, уберет пробелы. — ваш модераторъ ]
Моя цель - локализация сайта. Добавлено спустя 1 минуту 58 секунд: Если Вы знаете, как сделать локализацию сайта то расскажите. Если б Вы вникли в проблему никто ссылку не оставил.
Статья вроде годная и полный набор исходников в ней есть. Просто читайте внимательно. Было бы логично личные непонятки выразить в каментах к самой статье. Лично я не согласен с автором статьи в плане выбора средств: XML для хранения переводов, jquery для переключения языка, но это дело вкуса. Могу показать свой рецепт. Танцуем от вывода (шаблон): Код (PHP): <p class="exclamation"><?= t('Show must go on!') ?></p> Функция t() должна поискать перевод фразы на "текущем языке пользователя". А если он не найден, то тупо вывести оригинальную фразу. Логично, что верстальщик шаблона может вставлять такие фразы на языке по умолчанию не парясь о наличии переводов на текущий момент. Это не должно вызвать ошибку. Надо решить две подзадачи: 1. выбор "текущего языка" 2. подгрузка переводов 1. Выбор языка Пусть язык хранится в куке. Сессия тоже сгодится, я без фанатизма подхожу, просто большинство известных мне сайтов использует куку для этого. Я буду использовать процедурный стиль для краткости. Код (PHP): function t($str) { static $lang; if (!isset($lang)) { $lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'en'; // let the English be default lang } // ... use current lang to translate ... } Переменная $lang статическая. Это значит, что она сохранит значение к следующему вызову функции. Но при следующем обращении к скрипту она конечно снова окажется пустой — тогда она получит значение из куки. Откуда в куке возникнет это значение? Надо завести обработчик ссылки переключения языка. Пусть так выглядит ссылка переключения: <a href="/index.php?lang=ru">RU</a> вот обработчик Код (PHP): if (isset($_GET['lang'])) { setcookie('lang', $_GET['lang'], 0, '/'); // сделали дело, возвращаемся на исходную страницу $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '/'; header('Location: '.$ref); exit(); } 2. Подгрузка переводов Дописываем нашу функцию: Код (PHP): function t($str) { static $phrases; // get language + dictionary and do it only once. if (!isset($phrases)) { // just paranoia: avoid odd characters $lang = (isset($_COOKIE['lang']) && preg_match('/^[a-z][a-z]$/', $_COOKIE['lang'])) ? $_COOKIE['lang'] : 'en'; $filename = __DIR__."/i18n/{$lang}.php"; $phrases = file_exists($filename) ? include($filename) : array(); } // get translation or original phrase return isset($phrases[$str]) ? $phrases[$str] : $str; } Готово! Я выбрал для переводов формат массива PHP. Это не требует никакой дополнительной обработки, достаточно просто заинклудить файл. Вот так может выглядеть файл с русскими фразами: /i18n/ru.php Код (PHP): <?php return array( 'Show must go on!' => 'Шоу должно продолжаться!', 'My site' => 'Мой сайт', 'Select language' => 'Выберите язык', ); убери пробелы чтобы скачать: https:// www . dropbox . com /s/seae6jx5xh8uanu/l10n.zip?dl=0 добавочка от 2015-03-18: Пример с предпочтениями браузера, выбором языка в куку и подгрузкой переводов: https:// www . dropbox . com /s/fydsnaojpr4rdb1/l10n-2.zip?dl=0 пробелы убрать