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

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
а где ключ? api key от яндекса
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
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);
 

Вложения

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Для данных вещей должен быть безлимитный ключ
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Для данных вещей должен быть безлимитный ключ
С ключем все впорядке, причем ключ на 1 млн. символов в день, и легко обойти это ограничение. Заводишь три четыире аккаунта на yandex и берешь ключи, а потом Split и все.

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

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Все работает)
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28

deksi

Пользователь
Регистрация
20.08.2015
Сообщения
37
Благодарностей
1
Баллы
8

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Ну что с переводом через get так ничего и не выяснилось?
Пока нет, но мне советовали сделать urlencode для url и потом попробовать для текст. Но я не пробовал, нет времени пока на это.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Сейчас попробовал через GET, все отлично работает, в ответе никаких кракозябр.
 

deksi

Пользователь
Регистрация
20.08.2015
Сообщения
37
Благодарностей
1
Баллы
8
Сейчас попробовал через GET, все отлично работает, в ответе никаких кракозябр.
У меня в ответе получается вот что {"code":200,"lang":"ru-uk","text":["Ð�еÐ�Ð�- -Ð¾Ð�Ð�кÐ�"]}
Покажи свой запрос может у меня где-то ошибка?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113

Вложения

deksi

Пользователь
Регистрация
20.08.2015
Сообщения
37
Благодарностей
1
Баллы
8
Все равно ответ тот же! Неужели никто не знает как решить эту проблему?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Все равно ответ тот же! Неужели никто не знает как решить эту проблему?
Откуда берёте текст для перевода? Если из txt, то файл должен быть в кодировке UTF-8.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Только что проверил твой шаб, у меня тоже крякозябры!!!!!
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
:bk:У меня норм! ZP v5.9.0.1
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28

deksi

Пользователь
Регистрация
20.08.2015
Сообщения
37
Благодарностей
1
Баллы
8
Откуда берёте текст для перевода? Если из txt, то файл должен быть в кодировке UTF-8.
Я прописывал в самом get запросе и с файла в кодировке utf8 результат одинаковый!
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113

deksi

Пользователь
Регистрация
20.08.2015
Сообщения
37
Благодарностей
1
Баллы
8
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.5/tr.json/getLangs?&key=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 ключ и текст вставлялись в сниппет из переменной?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Код:
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;
}
 

Lighthouse

Client
Регистрация
09.09.2013
Сообщения
11
Благодарностей
1
Баллы
3
Код:
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


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

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
project.Variables["text2"].Value
"" - кавычки лишние.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Я так понимаю, что в данном случае - 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

Lighthouse

Client
Регистрация
09.09.2013
Сообщения
11
Благодарностей
1
Баллы
3
И правда.
Заработало.
Спасибо большое за ответ и за скорость)
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
И правда.
Заработало.
Однако вместо перевода я получил - {"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

Lighthouse

Client
Регистрация
09.09.2013
Сообщения
11
Благодарностей
1
Баллы
3
Еще раз спасибо)

А как кто решает проблему с ограничением в 10к символов?
Делите файл на части, а потом склеиваете?
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Теоретически надо подсчитать количество символов контента. Сделать условия if или switch если количество символов до 10000 потом между 10000 и 19999 символов тогда делить контент на две части и так далее.

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

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