Давно хотел поделиться данным скриптом. В копилку идей не смог вложить. Думаю будет полезна данная функция для многих.
Сразу оговорю скрипт не мой, в таких вещах не силен, откуда спёр не помню. Для перевода используется Google переводчик, Пример формул: Если требуется определить код языка, допустим хочу перевести с анг. на китайский традиционный. заходим в http://translate.google.ru/ выбираем язык с "английского" на "китайский традиционный" в браузере возникает ссылка http://translate.google.ru/?hl=ru&tab=wT#en|zh-TW| код соответственно для английского будет "en", для китайского традиционного "zh-TW" и формула соответственно =translate(A1;"en";"zh-TW"), где A1 переводимая ячейка.
Сам код:
Public Function translate(textToBeTranslated As String, resultLanguageCode As String, Optional sourceLanguageCode As String = "") As String
Dim objhttp As Object Dim URL As String
Dim i As Integer Dim iAsc As Long Dim sAsc As String Dim sTemp As String
Dim objStream As Object Dim data() As Byte Dim ByteArrayToEncode() As Byte
For i = 0 To UBound(ByteArrayToEncode) iAsc = ByteArrayToEncode(i) Select Case iAsc Case 32 'space sTemp = "+" Case 48 To 57, 65 To 90, 97 To 122 sTemp = Chr(ByteArrayToEncode(i)) Case Else Debug.Print iAsc sTemp = "%" & Hex(iAsc) End Select textToBeTranslated = textToBeTranslated & sTemp Next
А если, как у меня, в 99% требуется перевод с английского на русский, есть смысл записать Public Function translate(textToBeTranslated As String, Optional resultLanguageCode As String = "ru", Optional sourceLanguageCode As String = "en") As String
после первой попытки помогло, но некоторые слова не перевелись. Попробовала применить замену еще раз и... все, все оказалось не переведено. Все дальнейшие попытки ничего не меняют - несколько слов переводится, а остальное - вручную.
RAN, спасибо, поменяла. Практически все перевелось автоматом, но несколько слов - не перевелось. Опять решила применить "замену" и опять практически везде пишет "не переведено". The Prist, простите ради бога за тугомыслие. У других, похоже, таких проблем не возникает, хочется понять, что же я не так делаю.
Вряд ли в гугле, так как одно и то же слово то переводится, то не переводится. Вот сейчас пробовала перепротягивать формулу с последнего переведенного слова, так постепенно все и перевела:))). Спасибо за помощь! А скрипт классный, время экономит здорово!
{quote}{login=чайник}{date=27.03.2011 10:36}{thema=}{post}Вряд ли в гугле, так как одно и то же слово то переводится, то не переводится. Вот сейчас пробовала перепротягивать формулу с последнего переведенного слова, так постепенно все и перевела:))). Спасибо за помощь! А скрипт классный, время экономит здорово!{/post}{/quote}
Вы создаете слишком много запросов и это идет от Google, Пока решение нашел только одно переводит не все ячейки, а несколько и если уж не переводит, то подождать , скопировать и вставить формулу обратно
Public Function Translate2(textToBeTranslated As String, Optional resultLanguageCode As String = "ru", Optional sourceLanguageCode As String = "en") As String Dim objhttp As Object, URL As String
Попробовал дома. Отлично работает. А на работе интернет кастрирован проксёй и файерволлами - не идёт. Выдаёт ошибку "A connection with the server could not be established" на попытке objhttp.send ("") Обидно... Как раз на работе-то эта фенечка и пригодилась бы... Вот как бы её заставить настройки сети у броузера по умолчанию брать...
С уважением, Алексей(ИМХО: Excel-2003 - THE BEST!!!)
{quote}{login=Windows 7}{date=29.03.2011 12:01}{thema=}{post}А что ты думаешь, чтобы убрать один из массивов, например, data(){/post}{/quote} Я уже итак убрал из кода почти всё лишнее - там нет никаких масcивов data...