Уроки PureBasic

Categories

Other Sites

Other Sites

Other Sites



             Поиск по сайту

     

                


    Оставить мне сообщение:



Онлайновый перевод текста

Уроки PureBasic Фото программы:







Скачать архив

Уроки PureBasic
Для перевода текста используем AJAX API от Google.

http://code.google.com/intl/ru-RU/apis/ajaxlanguage/documentation/

На сайте много примеров (не только по переводу текста) и достаточно понятное и подробное описание на русском языке принципа работы.

Используем  AJAX по автоматическому определению языка оригинала и переводу.
Заменяем в скрипте все двойные кавычки на одинарные.
Удаляем все не нужные теги (наша программа будет на компьютере, а не на сервере в сети)
Так как в коде, скрипт прийдется записывать в одну строку, в скрипте добавляем ; в конце команд.
Добавляем стиль отображения страницы (фон, шрифт,цвет шрифта)
На сервере ограничение по объёму  переводимого текста ~1300 знаков.

<script type='text/javascript' src='http://www.google.com/jsapi'> </script><script type='text/javascript'> google.load('language', '1'); function initialize() { var text = ' PureBasic is an "high-level" programming language based on established "BASIC" rules '; google.language.detect(text, function(result) { if (!result.error && result.language) { google.language.translate(text, result.language, 'ru', function(result) { var translated = document.getElementById('translation'); if (result.translation) { translated.innerHTML = result.translation; } }); } }); google.language.detect(text, function(result) { if (!result.error) { var language = 'unknown'; for (l in google.language.Languages) { if (google.language.Languages[l] == result.language) { language = l; break; } } var container = document.getElementById('detection'); container.innerHTML = '<b>' + language + '</b>'; } }); } google.setOnLoadCallback(initialize); </script> <div id="detection"></div> <div id='translation'>Переводим, ожидайте ! </div> </plaintext> </div> <P><BR clear=left><IMG alt="Уроки PureBasic" src="img/lin.jpg" width=700 height=20><BR clear=left>Фото переводчика:</P> <P><BR></P> <P align=center><img src="img/script_translate.png" width="492" height="355" alt="PureBasic"></P> <P><BR><!-------------------------------------------------------------><BR clear=left>Для работы с утилитой, выделить нужный текст и нажать клавишу <b>Shift</b>.<br> Меняем горячию клавишу по своему усмотрению, коды кнопок смотрим в <a href="http://mirashic.narod.ru/HotKeyAdd.htm">таблице</a>.<BR> Скачать <a href="fail/google_translate.rar">архив</a>.<BR> <IMG alt="Уроки PureBasic" src="img/lin.jpg" width=700 height=20><BR> Для перехвата нажатия кнопок используем <FONT color=#008000>HotKeyAdd()</FONT> из библиотеки <STRONG>Droopy Library<BR clear=left></STRONG>Эмуляция нажатия кнопок Ctrl+C&nbsp; используем APi функции :<BR><FONT color=#008000>keybd_event_( кнопка, 0,0,0)</FONT>&nbsp;&nbsp;&nbsp; -&nbsp; нажать<BR clear=left><FONT color=#008000>keybd_event_( кнопка,&nbsp;0,#KEYEVENTF_KEYUP,0)</FONT>&nbsp;&nbsp;- отжать<BR clear=left><BR clear=left>Скрипт переводит только в одну строку, поэтому заранее форматируем текст для перевода:<BR clear=left>1.&nbsp; заменяем переход на новую строку&nbsp; <FONT color=#008000>Chr(13)+ Chr(10)</FONT>&nbsp;&nbsp;&nbsp;&nbsp;( <FONT color=#008000>#CRLF$</FONT> константа )&nbsp;&nbsp; на тег <FONT color=#008000>br<BR clear=left></FONT>2.&nbsp; заменяем&nbsp; в тексте одинарные кавычки на двойные&nbsp;&nbsp;&nbsp; (а в скрипте наоборот)<BR clear=left><BR clear=left></P> <IMG alt="Уроки PureBasic" src="img/lin.jpg" width=700 height=20><BR><BR> Вариант кода для версии 4.41:<br> <DIV class=con3><PLAINTEXT id=PureBasic> ;==================================================== ; 26 сентября 2010 ; Google.translate ; Перевод с использованием скрипта и WebGadget ; При нажатии на кнопку SHIFT ; Олег Мирошниченко ; Ограничение на обьем переводимого текста ~2000 символом ;===================================================== Enumeration #Window_0 #Web #tray #icon ;#img EndEnumeration ;UseJPEGImageDecoder() ;CatchImage(#img, ?Im1, ?Im1End -?Im1 ) Procedure.s Script() ;-------2 в 5 степени =32 раза пробел-------- probel.s="&nbsp;" For a=0 To 4 probel.s+probel.s Next ;Debug probel.s ;-------------------------------------------- keybd_event_(#VK_CONTROL, 0,0,0) ; нажали Ctrl keybd_event_(67, 0,0,0) ; нажали C Delay(100) ; пауза между нажали/отпустили keybd_event_(#VK_CONTROL, 0,#KEYEVENTF_KEYUP,0) ; отпустили Ctrl keybd_event_(67, 0,#KEYEVENTF_KEYUP,0) ; отпустили C ;---------форматирование текста---------------------------------------------------------- text.s=GetClipboardText() ; вывод текста из буфера text= ReplaceString(text,#CRLF$,"<br>",1) ; записываем всё одну строку (скрипт понимает одну строку) text= ReplaceString(text,"'",Chr(34),1) ; меняем запрещенный символ ' на " ;-------------изображение для фона-------------------------------------- ;FileName$="body_bg0.jpg" ;Buffer$=Space(512) ;GetFullPathName_(FileName$,Len(Buffer$),@Buffer$,@FilePart) ;img$ = PeekS(@Buffer$) ;----------скрипт--------------------------- Html.s Html.s + "<style>" Html.s + "body {padding:2; font: normal 11px Verdana, Arial, Helvetica, sans-serif;color: #444444; background-color: #FFFFCC; }" ; background: url("+img$+") ; background-color: #FFFFCC Html.s + "a{color: #7f0708;}a:hover{color: #7f0708;}a:active{color:#7f0708;}" Html.s + "</style>" Html.s + "<script type='text/javascript' src='http://www.google.com/jsapi'>" Html.s + "</script><script type='text/javascript'>" Html.s + "google.load('language', '1');" Html.s + "function initialize() {" Html.s + "var text = '"+text+"';" Html.s + "google.language.detect(text, function(result) {" Html.s + "if (!result.error && result.language) {" Html.s + "google.language.translate(text, result.language, 'ru'," Html.s + "function(result) {" Html.s + "var translated = document.getElementById('translation');" Html.s + "if (result.translation) {" Html.s + "translated.innerHTML = result.translation;" Html.s + "}" Html.s + "});" Html.s + "}" Html.s + "});" Html.s + "google.language.detect(text, function(result) {" Html.s + "if (!result.error) {" Html.s + "var language = 'unknown';" Html.s + "for (l in google.language.Languages) {" Html.s + "if (google.language.Languages[l] == result.language) {" Html.s + "language = l;" Html.s + "break;" Html.s + "}" Html.s + "}" Html.s + "var container = document.getElementById('detection');" Html.s + "container.innerHTML = 'Язык оригинал:&nbsp;&nbsp;&nbsp;'+ '<b>'+language+'</b>'+'"+probel+"'+'<a href=http://mirashic.narod.ru/ target=_blank;>Посетить сайт</a>';" Html.s + "}" Html.s + "});" Html.s + "}" Html.s + "google.setOnLoadCallback(initialize);" Html.s + "</script>" Html.s + "<div id='detection'></div><br>" Html.s + "<div id='translation'>Переводим, ожидайте ! &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Долго не переводит - выбери меньше текста )</div>" ;-------------скрипт-------------------------------------- SetGadgetItemText(#Web, #PB_Web_HtmlCode, Html.s) ; изменяет html код в WebGadget HideWindow(#Window_0,0) ; показать окно EndProcedure ret=CatchImage(#icon,?icon) ; иконка If OpenWindow(#Window_0,0,0,500,250,"Онлайн переводчик. Выдели текст и нажми Shift",#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget) StickyWindow(#Window_0, 1) ; окно всегда сверху WebGadget(#Web, 0,0,500,250,"") AddSysTrayIcon(#tray,WindowID(#Window_0),ret) ; Добавляет значок в Systray HotKeysInit() ; Инициализация библиотеки HotKeys из Droopy Library HotKeyAdd(WindowID(#Window_0), #VK_SHIFT, @Script(), "SkrinAll", 1,0,0) ; Перехват кнопки SHIFT CreatePopupMenu(0) ; Контекстное меню для трея MenuItem(0,"Выход") EndIf ;-------------------------------------- Repeat Event=HotkeyWaitWindowEvent() Window= EventWindow() Gadget= EventGadget() Select Event Case #PB_Event_SizeWindow ResizeGadget(#Web,#PB_Ignore,#PB_Ignore,WindowWidth(#Window_0),WindowHeight(#Window_0)) Case #PB_Event_SysTray If EventType()=#PB_EventType_RightClick DisplayPopupMenu(0,WindowID(#Window_0)) EndIf Case #PB_Event_Menu If EventMenu()=0 Break EndIf EndSelect If Event = #PB_Event_CloseWindow HideWindow(#Window_0,1) ; скрыть окно EndIf ForEver ;---------------------------------------- DataSection icon: IncludeBinary "iconka.ico" EndDataSection </plaintext> </div><br><br><br><br> <IMG alt="Уроки PureBasic" src="img/lin.jpg" width=700 height=20><BR><BR> Простая альтернатива:<br><br> <center><img src="img/20_52_01.png" width="482" height="459" alt="PureBasic"></center><br><br><br> Код:<br><br> <TABLE class=xrom cellSpacing=0> <TBODY> <TR><TD> <FONT color=#008000>OpenWindow(0,0,0,476,430,"Переводчик",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)<BR>&nbsp;WebGadget(0, 0, 0, 495, 495, "http://translate.imtranslator.net/")<BR><BR>Repeat<BR>&nbsp;Event = WaitWindowEvent()<BR>&nbsp; Select Event<BR>&nbsp;&nbsp; Case #PB_Event_CloseWindow<BR>&nbsp;&nbsp;&nbsp; EventWindow = EventWindow()<BR>&nbsp;&nbsp;&nbsp;&nbsp; If EventWindow = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseWindow(0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Break<BR>&nbsp;&nbsp;&nbsp;&nbsp; EndIf<BR>&nbsp; EndSelect<BR>ForEver</FONT> </TD> </TR> </TBODY> </TABLE><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br> </div> </div> <!-- copyright (t4) --><div align="center">Используются технологии <a href="http://www.ucoz.ru/" title="Создать сайт бесплатно"><b>uCoz</b></a><br /></div><!-- /copyright --> </body> </html>