Fancy Worpress Translations

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

К счастью,, WordPress имеет множество переводов Plug-Ins и два из них привлекло мое внимание: Глобальная Переводчик на Davide Pozza и по Transposh Команда Transposh.

Оба отличные Plug-Ins, но они также страдают от недостатка: он заполняет на боковой панели (Виджет) с 40-Некоторые флаги, или у вас есть глупо выпадающего списка. Я хотел более элегантного варианта, И вот как мне удалось это сделать.

Что она делает?

По правую сторону, Вы найдете “Перевести эту” Кнопка. Когда вы щелкните на нем, коробочку с СОЗ все имеющиеся варианты перевода. Просто выберите один из национальных флагов, соответствующих вашей стране / Язык предпочтения и “Рано!”.

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

И как?

Она участвует удивительно минимальная сумма, об изменениях в теме, конкретно sidebar.php файл, Добавление Некоторые JavaScript магии и, конечно, некоторое CSS, чтобы украсить вещи вверх немного.

PHP Порция

Код PHP таки:

<?php if(function_exists("gltr_build_flags_bar") || function_exists("transposh_widget")) { ?>
  <div id="translate_btn">
    <span title="<?php _e('Translate this page into another language','monochrome'); ?>">
      <?php _e('TRANSLATE THIS','monochrome'); ?>
    </span>
  </div>
  <div style="clear: both;"></div>
  <div id="translate_post">
    <?php if (function_exists("gltr_build_flags_bar")): gltr_build_flags_bar(); else: transposh_widget(array()); endif;?>
  </div>
  <div style="clear: both;"></div>
<?php } ?>

Этот код будет работать либо Глобальной переводчик или Transposh плагина. Она будет проверить, если одна из двух установлен и оказать виджет внутри <Div></ DIV> Теги. Если установлен ни, ничего не случится. Таким образом можно отключить плагин, и т.д..

Вы можете вставить этот код по существу нигде вы хотите. В моем случае, Я положил его в sidebar.php файла, включенного в “монохромный” Theme From моно-Lab. Конкретно, Она находится почти сразу же после <улица класс =”ext_meta”> день.

CSS Порция

Часть УС могут быть добавлены к вашей темы style.css файла и действительно зависит от вашей собственной темы, за исключением следующих разрядные:

#translate_post {
  display:none;
  padding:5px;
  position:absolute;
  width:200px;
  z-index:10;
  margin-top:4px;
}
#translate_btn span {
  cursor:pointer;
}

Как можно видеть из предыдущей части PHP, оказанных код для флагов заворачивается внутрь <Div> тега с идентификатором “translate_post”. Мы не хотим, чтобы показать это, чтобы пользователь просто еще, такой набор отображать:никакой опции.

Другие варианты, чтобы убедиться, что окно не стал капризно долгого (200 пикселов), не двигается другие вещи вокруг При отображении (позиции:абсолютные) и не покрываются с помощью встроенных такие объекты, как видео (Z-INDEX:10).

Определенный артикль # translate_btn Часть помогает понятия конечного пользователя в этом что-то может быть нажата, когда мышь находится над вашей “Перевести эту” Текст.

Вы можете добавить другие ценности, а, Например, чтобы добавить цвет фона или границы. Снова, Это зависит от вашего вкуса и темы вы используете.

JavaScript части

Часть JavaScript Jquery требует, чтобы уже загружены WordPress. В некоторых случаях этого не происходит по умолчанию, поэтому вам нужно включить следующее в ваш header.php Тема файл шаблона, прежде <?PHP wp_head(); ?> день:

wp_enqueue_script('jquery');

Большинство из более сложных темах, уже включает JavaScript, который инициализирует несколько переменных или встроенный в скриптах. Как правило, называют Init.js или script.js. Вы можете использовать это, чтобы добавить необходимые для этого JavaScript, или вы можете создать новый файл, который вызывается из header.php тема шаблон. Например,:

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/my-fancy-translation-box.js"></script>

О фактическом JavaScript:

jQuery(document).ready(function( $ ){
    /* Translate Box */
    var _translate_box_vars = {
        init_timeout: 3000,
        timeout: 1500,
        button: '#translate_btn',
        window: '#translate_post',
        _timer: 0
    };

    /* What follows does not need editing */
    $(_translate_box_vars.button).click(function (e) {
        if (!$(_translate_box_vars.window).is(':visible')) {
            leftVal=e.pageX-($(_translate_box_vars.window).width()/2)+"px";
            topVal=(e.pageY+4)+"px";   

            $(_translate_box_vars.window).css({left:leftVal,top:topVal}).fadeIn(300);

            _translate_box_vars._timer = setTimeout("jQuery(function($){$('"+_translate_box_vars.window+"').css({left:leftVal,top:topVal}).fadeOut(300)});", _translate_box_vars.init_timeout);
        }

        e.stopPropagation();
    });

    $(_translate_box_vars.window).hover(
        function () {
            clearTimeout(_translate_box_vars._timer);
        },
        function () {
            _translate_box_vars._timer = setTimeout("jQuery(function($){$('"+_translate_box_vars.window+"').css({left:leftVal,top:topVal}).fadeOut(300)});", _translate_box_vars.timeout);
        }
    );

    $('body').click(function(e) {
        if (!$(e.target).is(_translate_box_vars.window)) {
            $(_translate_box_vars.window).fadeOut(300);
            clearTimeout(_translate_box_vars._timer);
        }
    });
});

Код не оптимизированы, чтобы помочь вам понять, что происходит. Если вас не устраивает с JavaScript, Вам просто необходимо обратить внимание на дальнейшем Перевести Box как, Конкретно:

    /* Translate Box */
    var _translate_box_vars = {
        init_timeout: 3000,
        timeout: 1500,
        button: '#translate_btn',
        window: '#translate_post',
        _timer: 0
    };

Она устанавливает небольшое число переменных, которые будут использоваться в остальной этого скрипта. Определенный артикль init_timeout переменная определяет, как долго окно перевода (содержащие флаги) должен оставаться открытым, и пользователь еще не поставил свой мыши внутри этого окна. В приведенном выше примере, это 3 секунд (3000 миллисекунды).

Определенный артикль таймаут переменная определяет, как долго же окно должно оставаться открытым, если пользователь поставил свои мыши внутри этого окна (т., завис мыши на один из флагов). В приведенном выше примере, Это половина времени от первоначальных ожиданий – 1500 миллисекунды или 1.5 секунд. Их можно изменять как угодно.

Следующие две переменные, Кнопка и окна, указать, какие <Div ID> содержит кнопки (Текст) Чтобы открыть окно перевода, и перевод самого окна. Если вы не изменили части PHP, предоставленную ранее, Вы не должны изменить эту.

Остальная часть JavaScript обрабатывает три вещи в таком порядке:

  • Что происходит, когда пользователь нажимает на кнопку (открыть окно и установить таймер для init_timeout миллисекунды)
  • Что произойдет, когда пользователь перемещает его мышью внутри окна (таймер остановится, и начать ее с таймаут миллисекунды, если она еще раз налево)
  • Что произойдет, когда пользователь щелкает где-либо еще (закрыть открытые окна перевода)

Вы почти у цели

Есть несколько вещей, которые вам нужно помнить на вилке в сторону. Если вы в данный момент с помощью Глобальной переводчик или Transposh виджетов в боковой панели, Настоятельно рекомендуется отключить эти (удалить их из боковой панели).

Глобальный Translator использует только флагов, который является достаточным для этой цели. Однако, Вы должны уменьшить количество флагов в строке максимум 10. Альтернативы, Вы можете увеличить ширину окна в части CSS.

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

Лично я рекомендую позволило “SEO Friendly” ссылок в любой из плагинов, URL, который предусматривает такие как HTTP:/ / Www.myatus.co.uk / I для переводов.

В противном случае, Вы должны быть готовы предоставить эту попытку! Позвольте мне знать, если у вас возникли любые вопросы – просто оставьте комментарий ниже, или Контактная информация со мной напрямую.

Соответствующие должности:

  1. РГ Приветствуйте Box Autohide функцию
  2. РГ Flickr фона в альфа-тестировании
  3. Добавить Firefox стиль поиска в Opera 10
  4. Myatu является мобильным
  5. РГ Flickr Справочная