Переводчик в каждый ZennoPoster!

  • Автор темы Автор темы Radzhab
  • Дата начала Дата начала
C#:
Развернуть Свернуть Копировать
            string strUrl = "https://translate.yandex.net/api/v1.5/tr.json/translate?";
            strUrl += "key=trnsl.1.1.20150624T044522Z.904fd838812ba867.80102829f6e81c4e6644da5342680bc8dbeff88f";
            strUrl += "&lang=ru-uk";
            strUrl += "&text=" + "Привет";
            WebClient wc = new WebClient { Encoding = Encoding.UTF8 };
            string strJson = wc.DownloadString(strUrl);
 

Вложения

  • Безымянный.png
    Безымянный.png
    25,3 KB · Просмотры: 646
Для данных вещей должен быть безлимитный ключ

С ключем все впорядке, причем ключ на 1 млн. символов в день, и легко обойти это ограничение. Заводишь три четыире аккаунта на yandex и берешь ключи, а потом Split и все.

Дело не в ключах либо в чем то, через webclien работает все как часы, а вот через get запрос херня какая-то приходит в ответе.
 
Ну что с переводом через get так ничего и не выяснилось?

Пока нет, но мне советовали сделать urlencode для url и потом попробовать для текст. Но я не пробовал, нет времени пока на это.
 
Сейчас попробовал через GET, все отлично работает, в ответе никаких кракозябр.
 
Сейчас попробовал через GET, все отлично работает, в ответе никаких кракозябр.
У меня в ответе получается вот что {"code":200,"lang":"ru-uk","text":["Ð�еÐ�Ð�- -Ð¾Ð�Ð�кÐ�"]}
Покажи свой запрос может у меня где-то ошибка?
 

Вложения

Все равно ответ тот же! Неужели никто не знает как решить эту проблему?
 
Все равно ответ тот же! Неужели никто не знает как решить эту проблему?
Откуда берёте текст для перевода? Если из txt, то файл должен быть в кодировке UTF-8.
 
Только что проверил твой шаб, у меня тоже крякозябры!!!!!
 
:bk:У меня норм! ZP v5.9.0.1
 
Откуда берёте текст для перевода? Если из txt, то файл должен быть в кодировке UTF-8.
Я прописывал в самом get запросе и с файла в кодировке utf8 результат одинаковый!
 
Yandex перевод через новый API 1.5:

Код:
Развернуть Свернуть Копировать
using (var translate = new System.Net.WebClient()){
translate.QueryString.Add("key", "trnsl.1.1.20150314T094513Z..............");
translate.QueryString.Add("lang", "ru-uk");
translate.QueryString.Add("format", "plain");
translate.QueryString.Add("text", "Пример перевода с Русского языка на Украинский язык");
translate.Encoding = Encoding.UTF8;
string result = translate.DownloadString("https://translate.yandex.net/api/v1.5/tr.json/translate");
return result;
}

&key - ключ API берем его - https://tech.yandex.ru/keys/get/?service=trnsl
&lang - ключ перевода, в данном варианте это с Русского на Украинский. Если надо узнать ключи перевода заходим https://translate.yandex.net/api/v1...y=trnsl.1.1.20150314T094513Z.f35761080d21af46......... и смотрим. Ключ key вставляем свой.
&format = plain|html - plain текст, ну и просто html.
&text - текст перевода.
return result - возвращает результат перевода в переменную которую Вы указали.

И получаем, вот такой результат в формате json:

Код:
Развернуть Свернуть Копировать
{"code":200,"lang":"ru-uk","text":["Приклад перекладу з Російської мови на Українську мову"]}

Кто не хочет извращаться со снипетами, то делаем очень просто через GET запрос:

Код:
Развернуть Свернуть Копировать
https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150314T094513Z.f35761080d21af46..........&lang=ru-uk&format=plain&text=Пример перевода с Русского языка на Украинский язык
Как сделать чтоб api ключ и текст вставлялись в сниппет из переменной?
 
Код:
Развернуть Свернуть Копировать
using (var translate = new System.Net.WebClient()){
translate.QueryString.Add("key", "project.Variables["Key"].Value");
translate.QueryString.Add("lang", "ru-uk");
translate.QueryString.Add("format", "plain");
translate.QueryString.Add("text", "project.Variables["Text"].Value");
translate.Encoding = Encoding.UTF8;
string result = translate.DownloadString("https://translate.yandex.net/api/v1.5/tr.json/translate");
return result;
}
 
Код:
Развернуть Свернуть Копировать
using (var translate = new System.Net.WebClient()){
translate.QueryString.Add("key", "project.Variables["Key"].Value");
translate.QueryString.Add("lang", "ru-uk");
translate.QueryString.Add("format", "plain");
translate.QueryString.Add("text", "project.Variables["Text"].Value");
translate.Encoding = Encoding.UTF8;
string result = translate.DownloadString("https://translate.yandex.net/api/v1.5/tr.json/translate");
return result;
}

Я так понимаю, что в данном случае - translate.QueryString.Add("text", "project.Variables["Text"].Value"); - Text это название переменной?
У меня переменная называется text2 и соответственно строка выглядит так - translate.QueryString.Add("text", "project.Variables["text2"].Value");
При попытке запустить появляются ошибки:
zenno error2.jpg


Что я делаю не так?
 
project.Variables["text2"].Value
"" - кавычки лишние.
 
Я так понимаю, что в данном случае - translate.QueryString.Add("text", "project.Variables["Text"].Value"); - Text это название переменной?
У меня переменная называется text2 и соответственно строка выглядит так - translate.QueryString.Add("text", "project.Variables["text2"].Value");
При попытке запустить появляются ошибки:
Посмотреть вложение 9264

Что я делаю не так?

translate.QueryString.Add("text", project.Variables["text2"].Value);
 
  • Спасибо
Реакции: Lighthouse
И правда.
Заработало.
Спасибо большое за ответ и за скорость)
 
И правда.
Заработало.
Однако вместо перевода я получил - {"code":200,"lang":"ru-uk","text":["project.Variables[text2].Value"]}
Может я как-то не правильно подаю данные в переменную?
Там должен быть текст примерно на 2к символов.

Код:
Развернуть Свернуть Копировать
var text2 = project.Variables["text2"].Value;

using (var translate = new System.Net.WebClient()){
translate.QueryString.Add("key", "trnsl.1.1.20150314T094513Z..............");
translate.QueryString.Add("lang", "ru-uk");
translate.QueryString.Add("format", "plain");
translate.QueryString.Add("text", text2);
translate.Encoding = Encoding.UTF8;
string result = translate.DownloadString("https://translate.yandex.net/api/v1.5/tr.json/translate");
return result;
}
 
  • Спасибо
Реакции: xatabich10
Еще раз спасибо)

А как кто решает проблему с ограничением в 10к символов?
Делите файл на части, а потом склеиваете?
 
Теоретически надо подсчитать количество символов контента. Сделать условия if или switch если количество символов до 10000 потом между 10000 и 19999 символов тогда делить контент на две части и так далее.

Делишь на части, добавляешь их в массив и циклом прогоняешь через переводчик. Потом как цикл закончиться тогда склеиваешь массив. Ну и все!!!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)