А давайте попереводим

В прошлом году в составе команды энтузиастов собрались и сделали вот этот перевод. Было весело, получилось неплохо.

Сейчас есть желание сделать еще переводов важных статей про Друпал. Более актуальных – про семерку. Соответственно, вопрос: кто хочет поучаствовать?

Перевести можно, например, вот эту серьезную документацию: http://drupal.org/developing/api/database. Также будет здорово, если желающие увидеть перевод тех или иных статей про Друпал (желательно, 7) накидают в этот топик ссылок.

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

Пока отозвались:
Softovick
heap.ster
q2_faith
Ch
iHappy
Shift-Web
G.A. Vinogradov
LeopART
ingumsky@drupal.org
ZanaDLucTyc
P.Selfin@drupal.org
Clarion
kyky
Dock@drupal.org
mak-vardugin

Предложено к переводу:
http://drupal.org/node/360052 – Standards, security and best practices
http://drupal.org/developing/api/database – Drupal 7 Database API
http://drupal.org/theme-guide/6-7 – Theming Guide

Источник: http://drupal.ru/node/57373

А давайте попереводим

В прошлом году в составе команды энтузиастов собрались и сделали вот этот перевод. Было весело, получилось неплохо.

Сейчас есть желание сделать еще переводов важных статей про Друпал. Более актуальных – про семерку. Соответственно, вопрос: кто хочет поучаствовать?

Перевести можно, например, вот эту серьезную документацию: http://drupal.org/developing/api/database. Также будет здорово, если желающие увидеть перевод тех или иных статей про Друпал (желательно, 7) накидают в этот топик ссылок.

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

Пока отозвались:
Softovick
heap.ster
q2_faith
Ch
iHappy
Shift-Web
G.A. Vinogradov
LeopART
ingumsky@drupal.org
ZanaDLucTyc
P.Selfin@drupal.org
Clarion
kyky
Dock@drupal.org
mak-vardugin
NovoKain
likin
alexart79

Предложено к переводу:
http://drupal.org/node/360052 – Standards, security and best practices
http://drupal.org/developing/api/database – Drupal 7 Database API
http://drupal.org/theme-guide/6-7 – Theming Guide

Источник: http://www.drupal.ru/node/57373

Select to Translate – помощник в переводе сайта

На днях пришла в голову идея простого, но полезного модуля, реализации которого я еще для Друпала не встречал (кстати, если нечто подобное уже имеется – прошу указать). Select to Translate – несложный модуль, позволяющий перевести выделенный мышью текст. Фактически, модуль просто передает выбранный текст стандартному механизму поиска строк для перевода, включенному в базовый набор Друпал. Соответственно для его функционирования должны быть включены такие модули как Locale и Content translation.
В двух словах, модуль действует следующим образом: после выделения текста, фрагмент отправляется с помощью метода jQuery $.ajax() обработчику, который генерирует всплывающий блок со ссылкой на поиск фразы для перевода.

Перейдем к коду.

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

; $Id$ name = Select to Translate description = Allows you to translate text by mouse selection. dependencies[] = locale dependencies[] = translation package = Multilanguage core = 6.x

Далее, собственно, основное тело модуля:

<?php //реализация hook_menu() function select_to_translate_menu() { $items = array(); $items['transelect'] = array( 'access arguments' => array('access select_to_translate content'), //указываем, чтобы можно было позволять/запрещать модуль ролям 'title' => t('Select to Translate'), 'page callback' => '_select_to_translate', 'type' => MENU_CALLBACK, ); return $items; }   function select_to_translate_perm() { return array('access select_to_translate content'); }   function select_to_translate_theme() { return array( 'select_to_translate_javascript' => array( 'arguments' => array(), ), ); }   function select_to_translate_init() { //добавляем css с правилами для нашего блока drupal_add_css(drupal_get_path('module', 'select_to_translate'). '/select_to_translate.css'); theme('select_to_translate_javascript'); }   function theme_select_to_translate_javascript() { global $language; $thelang = $language->language; //добавляем переменную с активным языком для использования в js-файле модуля $js_variables = array('thelang' => $thelang); drupal_add_js(array('select_to_translate' => $js_variables), 'setting'); //добавляем файл скриптов drupal_add_js(drupal_get_path('module', 'select_to_translate'). '/select_to_translate.js'); }   //функция-обработчик function _select_to_translate($text){ //генерируем ссылку на искомую строку для перевода $res = l(t('Translate'), 'admin/build/translate/search?string='. $text, array('attributes' => array('title' => t('Translate selected text')))); return drupal_json(array('link' => $res)); exit; }

Javascript:

// $Id$ //переменные для сохранения координат мыши после выделения текста var mouseX = 0; var mouseY = 0; Drupal.behaviors.select_to_translate = function (context) { if(!window.Drupal){ Drupal = {}; }   Drupal.Selector = {}; //кросс-броузерный код получения выделенного текста Drupal.Selector.getSelected = function(){ var t = ""; if(window.getSelection){ t = window.getSelection(); }else if(document.getSelection){ t = document.getSelection(); }else if(document.selection){ t = document.selection.createRange().text; } return t; } //обработчик события отпускания левой кнопки мыши Drupal.Selector.mouseup = function(e){ if (e.which == 1) //проверка, что была нажата ЛКМ { var st = Drupal.Selector.getSelected(); //сохраняем координаты указателя мыши mouseX = e.pageX; mouseY = e.pageY; if (st != ""){ //отправляем запрос на получение ссылки $.ajax({ type: 'POST', url: Drupal.settings.basePath + Drupal.settings.select_to_translate.thelang + '/transelect/' +st, success: showTransBlock, dataType: 'json', data: 'js=1' }); } } }   $(document).ready(function(){ //назначаем обработчики событий $(document).bind("mouseup", Drupal.Selector.mouseup); //убираем блок со ссылкой при клике по свободному месту документа $(document).bind("click", function() { $('#translate-it').remove(); }); }); }   //Показываем блок со ссылкой var showTransBlock = function (data) { uri = data.link.replace('%3F','?').replace('%3D','='); $('body').append('<div id="translate-it">' + uri + '</div>'); var transblock = $('#translate-it'); //убираем блок, когда мышка покидает его суверенные границы transblock.bind("mouseleave", function() { transblock.remove(); }); transblock.css({left:mouseX+15, top:mouseY-30}); }

Файл стилей:

#translate-it { background-color:#8C9ED8; border:1px solid #fff; -moz-border-radius:5px 5px 5px 5px; -webkit-border-radius:5px 5px 5px 5px; border-radius:5px 5px 5px 5px; padding:3px; color:#fff; font-size:.8em; text-align:center; position:absolute; z-index:999; left:-9999px; }   #translate-it a { color:#fff !important; }

Вот и все, спасибо за внимание.
Все необходимые файлы прикреплены.

Прикрепленный файл Размер select_to_translate.zip 2.12 кб

Источник: http://www.drupal.ru/node/50552

© 2009 Обзор CMS