Блог программиста Еремина Вячеслава Викторовича
(SOFT) SOFT (2010 год)

GoogleTranslate - англо-русский онлайн переводчик

Эта небольшая step-by-step инструкция задумана мною для тех, кто уже развился до такого уровня, что способен осознать полезность выхода за рамки секты мазохистов-любителей платежей Биллу Гейтсу. И продолжить программировать на своем любимом .NET, VB.NET и ASP.NET уже вне рамок этой секты мазохистов.

Общую технологию MONO (в применении к ASP.NET) я подробно описал в топике - Low cost and platform independent ASP.NET - be free with MONO - здесь я повторяться не буду, а опишу подробнее технологию построения консольных приложений.

Если вы пока туго ориентируесь в продвинутых и полностью бесплатных технологиях, то поробуйте начать с прочтения топика Установка и начальное конфигурирование OpenSuse Linux. Вообще Линукс является более продвинутой технологией и позволяет делать некоторые диковатые с точки зрения мазохистов вещи, например вполне полноценно работать ВООБЩЕ без инсталяции (и даже без жесткого диска) - для этого попробуйте прочитать топик Загрузочные компакты и флешки (bootable LiveCD and bootable USB).

Итак, для дальнейшего чтения этой странички я полагаю, что вы уже настолько развились, что можете уже самостоятельно кликнуть на иконке на рабочем столе LINUX и запустить OpenSource студию NET-программирования:

Далее пишем вот такой простенький код онлайновой ГУГЛ-трансляции:


   1:  Option Explicit On
   2:  Option Strict On
   3:  Imports System
   4:   
   5:   
   6:  Public Class Application
   7:      Public Shared Sub Main()
   8:          While True
   9:              Dim SourceStr As String = System.Console.ReadLine()
  10:              System.Console.WriteLine(Translate(SourceStr))
  11:          End While
  12:      End Sub
  13:   
  14:     Shared Function Translate(ByVal Source As String) As String
  15:          'Dim InputString As String = Web.HttpUtility.HtmlEncode(Source)
  16:          Dim InputString As String = Source.Replace("&", "").Replace("""", "")
  17:          Dim JSON As String '{"sentences":[{"trans":"привет слово","orig":"hello word","translit":"privet slovo"}],"src":"en"}
  18:          JSON = GetContents("http://translate.google.ru/translate_a/t?client=t&text=" & InputString & "&hl=ru&sl=en&tl=ru&otf=1&pc=0")
  19:          Dim Target As String = ""
  20:          If JSON IsNot Nothing Then
  21:              If JSON.StartsWith("{""sentences"":[{""trans"":") Then
  22:                  Dim Pos1 As Integer, Pos2 As Integer
  23:                  While Pos2 < Len(JSON) And Pos2 < Len(JSON)
  24:                      Pos1 = JSON.IndexOf("{""trans"":""", Pos2)
  25:                      If Pos1 > 0 Then
  26:                          Pos2 = JSON.IndexOf(""",", Pos1)
  27:                          If Pos2 > Pos1 + 10 Then
  28:                              Target &= JSON.Substring(Pos1 + 10, Pos2 - Pos1 - 10)
  29:                              Pos1 = Pos2 + 1
  30:                          Else
  31:                              Exit While
  32:                          End If
  33:                      Else
  34:                          Exit While
  35:                      End If
  36:                  End While
  37:              End If
  38:          End If
  39:          Return Target
  40:      End Function
  41:   
  42:      'считывает HTML-странички с подавлением ошибок
  43:      Shared Function GetContents(ByVal URL As String) As String
  44:          Try
  45:              'запрос по HTTP
  46:              Dim PageRequest As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(URL), System.Net.HttpWebRequest)
  47:              PageRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
  48:              PageRequest.Headers.Add("Accept-Language", "ru,en-us;q=0.7,en;q=0.3")
  49:              PageRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7")
  50:              'Отправлен запрос
  51:              Dim PageResponse As System.Net.HttpWebResponse = PageRequest.GetResponse
  52:              'Получен ответ
  53:              Dim Reader As New System.IO.StreamReader(PageResponse.GetResponseStream(), System.Text.Encoding.UTF8)
  54:              Dim HTML As String = Reader.ReadToEnd
  55:              Reader.Close()
  56:              'Загружено в память
  57:              Return HTML
  58:          Catch x As System.Exception
  59:              'пусть молча идет дальше при ошибках
  60:          End Try
  61:      End Function
  62:   
  63:  End Class

Разумеется в жизни таких простеньких задачек не будет. Но это ОСНОВА всего. В жизни вам придется скорее всего работать с СУБД - для этого надо прочитать хотя бы вот этот топик Используем PostgreSQL вместо MS SQL в проектах на .NET и ASP.NET. Но в этом простеньком примерчике мы не будет работать с базой.

Итак, добавляем к проекту нужную сборку в ссылки и указываем стартовый класс проекта:

Нажимаем RUN и насладаемся работающим в Линуксе приложением на бейсике. В моем случае чудо произошло и сразу. Но у вас, особенно поначалу - чуда может и не произойти. Тогда вам поможет подробный разбор компиляции кода и просмотр листинга компиляции и созданного IL-кода.

Если чудо все же случилось, то остается только сделать пакет с исполняемым файлом LINUX и развернуть его где-нибуть на удаленном сетевом ресурсе:

Теперь берем какой-нибудь совсем другой линукс (даже на другой аппаратной платформе) и запускаем созданный байт код в JIT-компиляторе MONO:

МONO устроено так, что на совсем другой аппаратной платформе (а сейчас кроме X86 поддерживаются как минимум процессорные архитектуры s390, s390x (32 and 64 bits), SPARC (32), PowerPC, AMD64, IA64, ARM, MIPS) можно из байт-кода .NET создать бинарный исполняемый файл (слинковав его со всеми библиотеками):

При этом на всех этих различных аппаратных платформах можно создать не только исполняемый файл, но и Загрузочные компакты и флешки (bootable LiveCD and bootable USB) с вашей собственной программой на .NET (или сайтом на ASP.NET). Надеюсь вы понимаете насколько порядков эта совершенно бесплатная технология превосходит технологии микрософтовских сектантов с платформы X86. Но даже если бы на тех сектантах не пытался наживаться Билл Гейтс (и мусора)- у них там нет ничего и близко настолько развитого.

Эту программу я не стал оформлять в виде GUI - если вы хотите увидет пример с GUI, то смотрите в разделе SNMP-тестер сетевых устройств. GUI-программа на Windows.Forms для Linux.

Родственную по смыслу программу вы можете увидеть в топике - SoundCreator - пакетная озвучка английского текста.

http://www.mono-project.com/Main_Page


Комментарии к этой страничке ( )
ссылка на эту страничку: http://www.vb-net.ru/GoogleTranslate/index.htm
<Назад>  <На главную>  <В раздел ASP>  <В раздел NET>  <В раздел SQL>  <В раздел Разное>  <Написать автору>  < Поблагодарить>