Гугл переводчик в excel

  • Перевод в Excel с помощью API Deepl
  • Перевод текста через Google Translate
    • Бесплатный перевод с Google Translate
    • Платный API Google Translate
    • Бесплатная Функция GTranslate
    • Таблица обозначений языков для перевода Google
  • F. A. Q.

Excel-переводчик пригодится всем, кто производит локализацию сайтов, интерфейсов приложений и прочих больших массивов текста.

В Excel есть встроенный переводчик от Microsoft, но со своими причудами. Например, перевести можно только одну ячейку, а что делать, когда их сотни?

Можно попытаться использовать возможности VBA для использования онлайн-переводчиков в Excel. Сервисы предоставляют API для подобных задач.

Deepl — это сервис перевода, основанный на глубоком (машинном) обучении и нейросетях. Нетрудно догадаться из названия (Deep Learning – глубокое обучение).

Deepl — заслуженно крутой переводчик, качество перевода точно не уступает и часто превосходит конкурентов (а это, на минуточку, Google, Microsoft и другие гиганты, чей бизнес изначально был построен на текстовом анализе). О том, что их перевод лучше остальных, основатели проекта не скромничают на своём сайте. И с ними нельзя не согласиться — качество переведенного текста и в самом деле практически не требует дополнительной редактуры.

Deepl популярен в среде SEO-специалистов, которые локализуют тексты с его помощью. Есть подозрения, что Google может пессимизировать тексты, переведенные им же самим, это еще один довод в пользу сторонних решений.

Deepl позволяет выбирать формальность перевода (в языках где это есть, например, в русском яркий пример Ты-Вы).

К сожалению, сейчас Deepl доступен далеко не во всех странах – нужна карточка, выпущенная банком стран EU, US, Японии и еще нескольких стран.
Но если вам нужен действительно качественный перевод – вас это вряд ли остановит.

Поддержка перевода с помощью бесплатного и платного API Deepl появилась в !SEMTools 17 февраля 2023г.

переводим текст с русского на английский в Excel с помощью Deepl

Переводим в Excel с русского на английский текст документации Deepl

Перевод текста через Google Translate

Google Translate — замечательный продукт. Перевод с его помощью довольно качественный и при этом моментальный. Но у веб-интерфейса есть свои недостатки. Например, ограничения по количеству знаков.

А что, если бы можно было пользоваться Google Translate прямо в Excel?

Это было бы просто замечательно! Поэтому я и реализовал в !SEMTools функции и процедуры для перевода текста на популярные языки.

Бесплатный перевод с Google Translate

Использовать процедуры несколько удобнее, чем функции, т.к. все действия осуществляются парой кликов мыши. Доступен перевод с русского на 6 популярных языков и обратно. Здесь используется бесплатная веб-версия переводчика, подходит для перевода небольших объемов текста.

Для редких случаев перевода с иностранного на иностранный можно воспользоваться отдельной процедурой с выбором языка. Она поддерживает выбор 12 наиболее популярных языков и доступна в полной версии !SEMTools.

Инструменты перевода текста в Excel (!SEMTools)

Перевод текста в Excel

Платный API Google Translate

У многих при использовании бесплатной версии переводчика возникают проблемы с превышением бесплатных лимитов. Разумеется, Google не готов абсолютно бесплатно делиться столь сложным в разработке и полезным инструментом, поэтому ограничивает “недобросовестное” использование бесплатной версии сервиса.

Альтернатива – это возможность пользоваться сервисом через платный API.

Но на текущий момент (2023 г.) Google предоставляет перевод первых 500.000 знаков бесплатно! Нужно только подключить платежный профиль, но первые 500.000 знаков деньги расходоваться не будут.

Для тех, кому нужно переводить многие сотни строк текста и многие тысячи знаков, инструмент будет очень полезен. Поддержка платного API доступна с версии 10.23.14 (февраль 2023 г.), только в полной версии надстройки.

Если вы еще не прописали ваш персональный API-токен, процедура уведомит вас о его отсутствии (и перевод, конечно же, не сработает).

Для активации токена в меню присутствует отдельная процедура:

процедура активации Google Translate API токена

После активации токена процедуры будут переводить текст в любых объемах, но будьте внимательны и следите за превышением начальной квоты в 500.000 знаков, и дальнейшим расходом средств (хотя расценки Google вполне скромные). Вся информация доступна на дашборде Google Cloud.

Как получить токен

Чтобы получить токен API Google Translate, вам потребуется:

  • Зарегистрировать Google аккаунт
  • Перейти в Google Cloud Console: https://console.cloud.google.com/apis/dashboard
  • Создать там аккаунт и подключить биллинг (потребуется зарубежная карта)
  • Активировать Cloud Translation API
  • Найти токен на вкладке Credentials: https://console.cloud.google.com/apis/api/translate.googleapis.com/credentials

Бесплатная Функция GTranslate

Функция доступна всем бесплатно – нужно только скачать !SEMTools и подключить надстройку к вашему Excel.

Синтаксис функции аналогичен таковому в Google Spreadsheets:

=GTranslate(A1;"en";"ru")

Преимущество перед самими “гуглодоками” в том, что Spreadsheets зависнут и перестанут отдавать перевод раньше.

С функциями можно использовать любой язык из предложенных на сервисах. Используется “бесплатная” версия перевода, что означает небольшие лимиты на количество строк и знаков.

Таблица обозначений языков для перевода Google

Afrikaans af Galician gl Latin la Sesotho st
Albanian sq Georgian ka Latvian lv Shona sn
Amharic am German de Lithuanian lt Sindhi sd
Arabic ar Greek el Luxembourgish lb Sinhala (Sinhalese) si
Armenian hy Gujarati gu Macedonian mk Slovak sk
Azerbaijani az Haitian Creole ht Malagasy mg Slovenian sl
Basque eu Hausa ha Malay ms Somali so
Belarusian be Hawaiian haw (ISO-639-2) Malayalam ml Spanish es
Bengali bn Hebrew he or iw Maltese mt Sundanese su
Bosnian bs Hindi hi Maori mi Swahili sw
Bulgarian bg Hmong hmn (ISO-639-2) Marathi mr Swedish sv
Catalan ca Hungarian hu Mongolian mn Tagalog (Filipino) tl
Cebuano ceb (ISO-639-2) Icelandic is Myanmar (Burmese) my Tajik tg
Chinese (Simplified) zh-CN or zh (BCP-47) Igbo ig Nepali ne Tamil ta
Chinese (Traditional) zh-TW (BCP-47) Indonesian id Norwegian no Telugu te
Corsican co Irish ga Nyanja (Chichewa) ny Thai th
Croatian hr Italian it Pashto ps Turkish tr
Czech cs Japanese ja Persian fa Ukrainian uk
Danish da Javanese jv Polish pl Urdu ur
Dutch nl Kannada kn Portuguese (Portugal, Brazil) pt Uzbek uz
English en Kazakh kk Punjabi pa Vietnamese vi
Esperanto eo Khmer km Romanian ro Welsh cy
Estonian et Korean ko Russian ru Xhosa xh
Finnish fi Kurdish ku Samoan sm Yiddish yi
French fr Kyrgyz ky Scots Gaelic gd Yoruba yo
Frisian fy Lao lo Serbian sr Zulu zu

F. A. Q.

Можно ли сделать собственный переводчик в Excel?

Можно составить словарь слов и их аналогов на другом языке – по тому же принципу, как это сделано в моей процедуре лемматизации. Но пословный перевод редко получается корректным.
Например, фразовые глаголы в английском языке уже приносят страдания тем, кто их учит, т.к. два слова рядом переводятся совсем не так, как по отдельности.
Словоформы глаголов в русском языке зависят от рода субъекта, а в английском – нет.
Нужно переводить не только слова, но и фразы, определяя контекст и взаимоотношения слов. Более того, одни и те же сочетания могут по разному переводиться в зависимости от пунктуации – ее тоже нужно учитывать.
Все это делает задачу составления собственного переводчика очень сложной. Гораздо проще воспользоваться готовыми решениями.

Подходит ли бесплатный функционал для объемов в тысячи строк?

Нет. Если попытаться перевести сотни строк и тысячи-десятки тысяч слов одновременно, Google наложит временный бан на IP. Как правило, это несколько часов.
Для перевода в промышленных масштабах нужно использовать платный API.

Будет ли в !SEMTools включена поддержка других API (например, Deepl)?

Да, другие API также планируются.

Нужно перевести текст в Excel? Установите надстройку !SEMTools и переводите любые объемы текста на нужный вам язык!

Хитрости »

7 Сентябрь 2013              101498 просмотров


Внимание: периодически Google вводит ограничение и изменяет алгоритмы автоматического перевода (так же иногда для получения перевода необходимо вводить каптчу). Поэтому временами функция может не работать. Некоторое время назад можно было наблюдать это. Сейчас функция работает.

На днях проводил ревизию кодов и различных примеров в файлах и нашел довольно много интересного. В том числе функцию перевода текста из ячейки Excel на разные языки при помощи сервиса Google. Посмотрел и решил её переработать и оптимизировать, т.к. в том виде, в котором она была у меня она никуда не годилась: переводила коряво, т.к. Google поменял алгоритм в формат выходных данных. Плюс надо было решить вопрос некорректной замены различных символов внутри текста. Подозреваю, что и сейчас функция далеко не идеальна. Поэтому если у кого-то возникнут ошибки — пишите комментарии, попробуем разобраться.

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : GoogleTranslate
' DateTime  : 04.09.2013 22:55
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : 
'     Функция переводит текст, используя сервис переводов Google Translate
'     Аргументы:
'          sText       - текст для перевода. Непосредственно текст или ссылка на ячейку.
'          sResLang    - код языка, на который осуществлять перевод
'          sSourceLang - код языка, с которого переводить.
'                        Если не указывать, Google автоматом определяет язык введенного текста
'                        Доступно 74 кода языков.
'---------------------------------------------------------------------------------------
Dim objRegExp As Object
Function GoogleTranslate(ByVal sText As String, ByVal sResLang As String, _
                         Optional ByVal sSourceLang As String = "")
 
    Dim sGoogleURL As String, sAllTxt As String, sTmpStr As String, sRes As String, sTextToTranslate As String
    Dim lByte As Long, alByteToEncode, li As Long
    Dim asTmp, lPos As Long
    'раскомментировать при необходимости пересчета функции при любом изменении в книге
    'Application.Volatile True
    If objRegExp Is Nothing Then
        Set objRegExp = CreateObject("VBScript.RegExp")
        With objRegExp
            .MultiLine = True: .ignorecase = True: .Global = True
            .Pattern = "[n;]"
        End With
    End If
    sTextToTranslate = Application.Trim(objRegExp.Replace(sText, " "))
 
    With CreateObject("ADODB.Stream")
        .Charset = "utf-8": .Mode = 3: .Type = 2: .Open
        .WriteText sTextToTranslate
        .Flush: .Position = 0: .Type = 1: .Read 3
        alByteToEncode = .Read(): .Close
    End With
 
    'переводим текст в кодировку, понятную Google
    For li = 0 To UBound(alByteToEncode)
        lByte = alByteToEncode(li)
        Select Case lByte
        Case 32: sTmpStr = "+"
        Case 48 To 57, 65 To 90, 97 To 122: sTmpStr = Chr(alByteToEncode(li))
        Case Else: sTmpStr = "%" & Hex(lByte)
        End Select
        sAllTxt = sAllTxt & sTmpStr
    Next li
 
    'формируем ссылку для Google
    sGoogleURL = "http://translate.google.com.ua/translate_a/t?client=json&text=" & _
                 sAllTxt & "&hl=" & sResLang & "&sl=" & sSourceLang
    sGoogleURL = Replace(sGoogleURL, "", "/") '"
    'получаем ответ от Google
    With CreateObject("Microsoft.XMLHTTP")
        .Open "GET", sGoogleURL, "False": .send
        If .statustext = "OK" Then
            sTmpStr = .responsetext
            'отбираем только переведенный текст
            asTmp = Split(sTmpStr, "{""trans"":""")
            For li = LBound(asTmp) To UBound(asTmp)
                lPos = InStr(1, asTmp(li), """,""orig"":", 1)
                If lPos Then sRes = sRes & Mid(asTmp(li), 1, lPos - 1)
            Next li
            If sRes = "" Then sRes = "Не удалось перевести"
        End If
    End With
    GoogleTranslate = sRes
End Function

Выложенный выше код является функцией пользователя для вызова из ячейки листа.

Синтаксис функции:
с английского на русский A1 записан текст на английском — Google автоматом определяет язык):
=GoogleTranslate(A1;»ru»)
с английского на русский — текст задан константой:
=GoogleTranslate(«translation»; «ru»)

sText — текст для перевода. Непосредственно текст или ссылка на ячейку.
sResLang — код языка, на который осуществлять перевод.
sSourceLang — Необязательный аргумент. Указывается код языка, с которого переводить. Если не указывать, Google автоматом определяет язык введенного текста.

Всего доступно 74 языка:

  • en — английский
  • ru — русский
  • az — азербайджанский
  • sq — албанский
  • en — английский
  • ar — арабский
  • hy — армянский
  • af — африкаанс
  • eu — баскский
  • be — белорусский
  • bn — бенгальский
  • bg — болгарский
  • bs — боснийский
  • cy — валлийский
  • hu — венгерский
  • vi — вьетнамский
  • gl — галисийский
  • nl — голландский
  • el — греческий
  • ka — грузинский
  • gu — гуджарати
  • da — датский
  • iw — иврит
  • yi — идиш
  • id — индонезийский
  • ga — ирландский
  • is — исландский
  • es — испанский
  • it — итальянский
  • kn — каннада
  • ca — каталанский
  • zh-TW — китайский (традиционный)
  • zh-CN — китайский (упрощенный)
  • ko — корейский
  • ht — креольский (Гаити)
  • km — кхмерский
  • lo — лаосский
  • la — латынь
  • lv — латышский
  • lt — литовский
  • mk — македонский
  • ms — малайский
  • mt — мальтийский
  • mr — маратхи
  • de — немецкий
  • no — норвежский
  • fa — персидский
  • pl — польский
  • pt — португальский
  • ro — румынский
  • ru — русский
  • ceb — себуанский
  • sr — сербский
  • sk — словацкий
  • sl — словенский
  • sw — суахили
  • tl — тагальский
  • th — тайский
  • ta — тамильский
  • te — телугу
  • tr — турецкий
  • uk — украинский
  • ur — урду
  • fi — финский
  • fr — французский
  • hi — хинди
  • hmn — хмонг
  • hr — хорватский
  • cs — чешский
  • sv — шведский
  • eo — эсперанто
  • et — эстонский
  • jw — яванский
  • ja — японский

Добавил функцию перевода, которая получает текст перевода через Internet Explorer. Получается медленнее и не у всех сможет работать исключительно потому, что IE капризный и очень чувствителен к тому, какая его версия на какой ОС установлена. Но это больше исключение — в подавляющем большинстве случаев работать должно без проблем:

Option Explicit
'---------------------------------------------------------------------------------------
' Procedure : GoogleTranslate_IE
' DateTime  : 12.04.2018 22:55
' Author    : The_Prist(Щербаков Дмитрий)
'             Профессиональная разработка приложений для MS Office любой сложности
'             Проведение тренингов по MS Excel
'             http://www.excel-vba.ru
'             info@excel-vba.ru
'             WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
' Purpose   :
'     Функция переводит текст, используя сервис переводов Google Translate
'     Аргументы:
'          sText       - текст для перевода. Непосредственно текст или ссылка на ячейку.
'          sResLang    - код языка, на который осуществлять перевод
'          sSourceLang - код языка, с которого переводить.
'                        Если не указывать, Google автоматом определяет язык введенного текста
'                        Доступно 74 кода языков.
'---------------------------------------------------------------------------------------
Dim IE As Object
Function GoogleTranslate_IE(ByVal sText As String, _
                         Optional ByVal sResLang As String = "en", _
                         Optional ByVal sSourceLang As String = "auto") As String
    Dim isIEOpen As Boolean
    'подключаемся к InternetExplorer
    On Error Resume Next
    Set IE = GetObject(, "InternetExplorer.application")
    'IE еще не запущен - запускаем
    If IE Is Nothing Then
        Set IE = CreateObject("InternetExplorer.application")
        'делаем окно IE скрытым
        IE.Visible = False
    End If
    'переходим на страницу перевода и указываем параметры
    IE.navigate "https://translate.google.com/#" & sSourceLang & "/" & sResLang & "/" & sText
    'ждем отклика от IE
    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    'получаем текст перевода
    GoogleTranslate_IE = IE.Document.getElementById("result_box").innerText
    'если IE не был запущен до вызова функции - закрываем
    If Not isIEOpen Then
        IE.Quit
        Set IE = Nothing
    End If
End Function

Функция будет работать быстрее, если перед переводом запустить InternetExplorer. Это заставит функцию использовать уже запущенный экземпляр IE, а не запускать для каждой ячейки новый(что отнимает немало времени).

Скачать пример:

  Tips_Macro_GoogleTranslate.xls (53,5 KiB, 6 462 скачиваний)

Так же см.:
Транслит — Перевод с транслита и обратно


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Переводит текст с одного языка на другой.

Пример использования

GOOGLETRANSLATE("Hello World"; "en"; "es")

GOOGLETRANSLATE(A2; B2; C2)

GOOGLETRANSLATE(A2)

Синтаксис

GOOGLETRANSLATE(текст; [язык_оригинала; язык_перевода])

  • текст – текст, который нужно перевести.

    • Значение параметра текст должно быть заключено в кавычки или представлять собой ссылку на ячейку, содержащую соответствующий текст.
  • язык_оригинала[ НЕОБЯЗАТЕЛЬНО – "auto" по умолчанию ] – двухбуквенный код языка оригинала (например, «en» для английского языка, «ko» – для корейского, «auto» – для автоматического определения языка).

    • В случае, если параметр язык_оригинала опущен, язык_перевода также не должен применяться.
  • язык_перевода[ НЕОБЯЗАТЕЛЬНО – по умолчанию язык, установленный в операционной системе ] – двухбуквенный код языка перевода («en» для английского языка, «ja» – для японского).

См. также:

DETECTLANGUAGE: Определяет язык указанного текста или текста в определенном диапазоне.

Примеры

Переводит текст в заданном диапазоне ячеек с одного языка на другой.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

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

Получение двухбуквенного кода стран

Начну статью с разбора одной особенности. Для использования описанной ниже функции в Google Таблицах понадобится знать двухбуквенные коды стран (Россия – RU и так далее). Для этого вы можете открыть соответствующую страницу на Википедии и получить интересующую вас информацию.

Поиск двухбуквенных обозначений стран для перевода текста в Google Таблицах

Однако важно отметить, что некоторые названия Гугл берет не по системе ISO 3166-1, которая отображается первой в выдаче поисковика, и на официальном сайте у меня не получилось найти информацию о замене кодов. Путем перебора удалось выяснить, что нужно применить ISO 639-1, поэтому при проблеме с переводом на конкретные языки отыщите их коды в этом формате на Википедии или любом другом сайте. Об этом я еще расскажу в инструкции, чтобы у вас не возникло вопросов по данной теме.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Использование функции перевода текста в Google Таблицах

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

  1. Создайте диапазон с текстовыми данными, которые собираетесь переводить. Выделите для них пустой столбец справа, где будет отображаться переведенный вариант.Ввод содержимого ячеек для перевода текста в Google Таблицах

  2. После этого объявите формулу =GOOGLETRANSLATE(A1;»RU»;»EN»), где A1 – ячейка с текстом для перевода, RU – язык оригинала, а EN – для перевода.Объявление функции для перевода текста в Google Таблицах

  3. Нажмите Enter и ознакомьтесь с результатом. Растяните формулу, чтобы перевести все остальные слова (номера ячеек будут заменены автоматически).Растягивание функции для перевода текста в Google Таблицах

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

Однако знайте, что Google Переводчик не всегда справляется со сложными словосочетаниями и чувствителен к ошибкам в словах. Всегда проверяйте важные документы на правильность перевода.

Расширение функции перевода текста

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

Создание вспомогательной стройки для перевода текста в Google Таблицах

После этого выполните ряд простых действий:

  1. Объявите функцию =GOOGLETRANSLATE() и укажите первую ячейку с текстом. Обязательно закрепите столбец, чтобы при растягивании функции не произошел случайный сдвиг. Для этого перед буквой ячейки поставьте знак $.Объявление первой ячейки для перевода текста в Google Таблицах

  2. После этого напишите язык оригинала в кавычках. Ввод языка оригинала для перевода текста в Google Таблицах

  3. В качестве языка для перевода укажите ячейку с уже готовым кодом и закрепите строку, поставив знак $ между буквой и цифрой.Ссылка на указанный код для перевода текста в Google Таблицах

  4. Растяните формулу вправо и вниз. Дождитесь отображения результатов и убедитесь в том, что перевод выполнен правильно. Если вы задали не тот код, появится ошибка #ЗНАЧ!.Ошибка при использовании функции для перевода текста в Google Таблицах

  5. В случае успешного перевода все слова отображаются корректно.Успешное заполнение таблицы для перевода текста в Google Таблицах

Вот полная формула с закрепленными ячейками для удобного растягивания на неограниченное количество столбцов и строк: =GOOGLETRANSLATE($A2;»RU»;C$1). Соответственно, поменяйте язык оригинала и номера ячеек на свои.

Как уже было сказано выше, для корректного распознавания кодов нужно использовать систему обозначений ISO 639-1, иначе можно получить ошибку #ЗНАЧ!, что вы и видели на одном из предыдущих скриншотов. В остальном же никаких трудностей с переводом в Google Таблицах нет, и вы можете всегда обратиться к этой удобной функции.

В Google Таблицах есть занятная функция, позволяющая переводить текст прямо в ячейках:

1

В этой статье расскажу, как ей пользоваться и как автоматически определять язык текста в ячейке.

Синтаксис функции следующий:

GOOGLETRANSLATE(text,[source_language],[target_language])

text — это текст, который нужно переводить. Можно, конечно, взять текст в кавычки и записать прямо в формулу, а можно сослаться на ячейку, в которой он содержится.

[source_language] — язык, с которого мы переводим;

[target_language] — соответственно, язык, на который мы переводим.

Второй и третий аргументы задаются двухзначным кодом: es, fr, en, ru. Их тоже можно указать в самой функции, но можно брать из ячейки, а язык исходного текста и вовсе можно автоматически определять.

Обратите внимание, что оба аргумента необязательные — если их не указать, перевод будет осуществляться на английский. Язык исходного текста будет определяться автоматически:

2

А как быть, если мы все-таки хотим переводить не на английский, а на разные языки? И при этом не хотим каждый раз указывать язык исходника вручную?

Тут пригодится функция DETECTLANGUAGE. У нее единственный аргумент — текст, язык которого нужно определить:

3

Осталось ее «внедрить» в функцию TRANSLATE. Укажем справа от текста, на какие языки хотим переводить исходный текст (в столбце B). В столбец C введем формулу GOOGLETRANSLATE. Первым аргументом будет текст в столбце A, вторым — функция DETECTLANGUAGE, которая определит, с какого языка переводить, а третья — код языка из столбца B.

4

Как и с любой другой функцией, прелесть здесь в автоматизации. Можно быстро поменять текст или язык; быстро перевести одну фразу на 10 языков и так далее. Конечно, мы понимаем, что это текст онлайн-переводчика — качество будет соответствующим.

Quel merveilleux tableau!

Функция Translate

Переводит содержимое указанной ячейки с одного языка на другой, используя онлайн-переводчик Google

Функция Translate

Синтаксис

=Translate(Text; FromLang; ToLang)

где:

  • Text – исходная ячейка с текстом для перевода
  • FromLang – текстовый двухбуквенный код языка, с которого производится перевод (т.е. язык исходного текста), например «ru», «en», «es», «fr» и т.д.
  • ToLang – текстовый двухбуквенный код языка, на который нужно перевести.

Подсмотреть необходимые коды языков можно на странице Google Переводчика в адресной строке после выбора нужных языков в форме:

Языковые коды

Примечания

Естественно, данная функция требует подключения к интернету и при его отсутствии выдает ошибку.

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

Полный список всех инструментов надстройки PLEX

Данная VBA функция позволяет перевести текст с любого языка на другой
Язык исходного текста можно не указывать — Google распознает его самостоятельно.
(т.е. вызовы res$ = Translate(txt$, «en», «ru») и res$ = Translate(txt$, «en») равнозначны)

Добавлено 17.10.2011
В данный момент функция не работает для большого числа запросов — Google недавно ввёл ограничение.
Решение для обхода этого ограничения сложное, потому пока мной не реализовано (не было необходимости)

Добавлено 07.03.2012
Исправленный вариант функции вы можете найти в конце статьи. (теперь снова можно выполнять автоматизированный перевод любого количества фраз на любые языки)
Алгоритм функции немного изменился — но это и не важно, главное, что перевод снова работает.
Пример использования перевода на листе Excel — во втором прикреплённом файле

Sub ПримерИспользованияФункцииПеревода()
    txt$ = "Привет! Это функция перевода текста на иностранный язык"
    res$ = Translate(txt$, "en", "ru")
    MsgBox "Результат перевода на английский:" & vbNewLine & res$, vbInformation, txt$
    res$ = Translate(txt$, "de")
    MsgBox "Результат перевода на немецкий:" & vbNewLine & res$, vbInformation, txt$
End Sub

Список кодов доступных языков для перевода:
(используются в качестве параметров функции Translate)

ar — арабский; bg — болгарский; cs — чешский;
da — датский ; de — немецкий; el — греческий;
en — английский; es — испанский; fi — финский;
fr — французский; hi — хинди; hr — хорватский;
it — итальянский; ja — японский; ko — корейский;
nl — голландский; no — норвежский; pl — польский;
pt — португальский; ro — румынский; ru — русский;
sv — шведский; zh-cn — китайский упрощенный; zh-tw — китайский традиционный

Код функции перевода:

Function Translate$(ByVal TextToBeTranslated$, ByVal resultLanguageCode$, Optional ByVal sourceLanguageCode$ = "")
    ' переводит текст TextToBeTranslated$ с языка sourceLanguageCode$ на язык resultLanguageCode$,
    ' используя сервис переводов Google Translate
    With CreateObject("ADODB.Stream")
        .Charset = "utf-8": .Mode = 3: .Type = 2: .Open
        .WriteText TextToBeTranslated: .Flush: .Position = 0
        .Type = 1: .Read 3: ByteArrayToEncode = .Read(): .Close
    End With
 
    For i = 0 To UBound(ByteArrayToEncode)
        iAsc = ByteArrayToEncode(i)
        Select Case iAsc
            Case 32: sTemp$ = "+"    'space
            Case 48 To 57, 65 To 90, 97 To 122: sTemp$ = Chr(ByteArrayToEncode(i))
            Case Else: sTemp$ = "%" & Hex(iAsc)
        End Select
        txt$ = txt$ & sTemp$
    Next
 
    Set objhttp = CreateObject("MSXML2.ServerXMLHTTP")
    URL$ = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" & _
           txt$ & "&langpair=" & sourceLanguageCode$ & "%7C" & resultLanguageCode$
    objhttp.Open "GET", URL$, False
    objhttp.setTimeouts 1000000, 1000000, 1000000, 1000000: objhttp.send ("")
 
    Translate$ = objhttp.responseText
    Translate$ = Right(Translate$, Len(Translate$) - InStr(1, Translate$, "translatedText") - 16)
    Translate$ = Left(Left(Translate$, InStr(1, Translate$, Chr(34)) - 1), 255)
    Translate$ = Replace(Translate$, "quot;", Chr(39))
    If Translate$ = " null, " Then Translate$ = "Не переведено"
End Function

(добавлено позже)
Видоизменил функцию — теперь перевод снова работает
(пример использования — во втором прикреплённом файле)

Function Translate$(ByVal TextToBeTranslated$, ByVal resultLanguageCode$, _
                    Optional ByVal sourceLanguageCode$ = "")
    ' переводит текст TextToBeTranslated$ с языка sourceLanguageCode$
    ' на язык resultLanguageCode$, используя сервис переводов Google Translate
    Application.Volatile True
    Set ADOStream = CreateObject("ADODB.Stream")
    With ADOStream
        .Charset = "utf-8": .Mode = 3: .Type = 2: .Open
        .WriteText TextToBeTranslated: .Flush: .Position = 0
        .Type = 1: .Read 3: ByteArrayToEncode = .Read(): .Close
    End With
 
    For i = 0 To UBound(ByteArrayToEncode)
        iAsc = ByteArrayToEncode(i)
        Select Case iAsc    ' переводим текст в кодировку, понятную Google
            Case 32: sTemp$ = "+"    'space
            Case 48 To 57, 65 To 90, 97 To 122: sTemp$ = Chr(ByteArrayToEncode(i))
            Case Else: sTemp$ = "%" & Hex(iAsc)     'Chr(iAsc)
        End Select
        txt$ = txt$ & sTemp$
    Next
 
    ' формируем ссылку, по которой Google выдаст нам файл с переводом
    URL$ = "http://translate.google.com.ua/translate_a/t?client=json&text=" & _
           txt$ & "&hl=" & resultLanguageCode$ & "&sl=" & sourceLanguageCode$
 
    Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")    ' скачиваем файл
    XMLHTTP.Open "GET", Replace(URL$, "", "/"), "False": XMLHTTP.send
 
    If XMLHTTP.statustext = "OK" Then
        LocalPath$ = Environ("TMP") & "google.txt"
        With ADOStream    ' перекодировка файла
            .Type = 1: .Open: .Write XMLHTTP.responseBody
            .SaveToFile LocalPath$, 2
            .Close: .Type = 2: .Charset = "utf-8": .Open:
            .LoadFromFile LocalPath$    ' загружаем данные из файла
            Translate$ = .ReadText   ' считываем текст файла в переменную Translate$
        End With
 
        On Error Resume Next    ' вырезаем нужный текст из ответа
        Translate$ = Split(Translate$, """trans"":""")(1)
        Translate$ = Split(Translate$, """,""orig")(0)
        Translate$ = Replace(Translate$, "quot;", Chr(39))
        If Translate$ = " null, " Then Translate$ = "Не переведено"
    End If
    Set XMLHTTP = Nothing: Set ADOStream = Nothing
End Function

Like this post? Please share to your friends:
  • Группировка объектов в word это
  • Группировка объектов в word для чего
  • Группировка объектов в excel
  • Группировка на защищенном листе excel без макросов
  • Группировка книг в excel