Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   использование API Google Translate (https://javascript.ru/forum/misc/16812-ispolzovanie-api-google-translate.html)

Raz0r 23.04.2011 18:03

использование API Google Translate
 
здравствуйте.
хочу сделать некий userjs, который берет текст с сайта передает его на гугл, производит транслиретацию и возвращает результат.

http://code.google.com/intl/ru-RU/ap...g_started.html
почитал доки, вроде бы просто.


вот даже пример есть
http://code.google.com/intl/ru-RU/ap...sliterate.html

но как userjs не хочет работать, пока делал в простейшем варианте(просто статическую строку)
var head=document.getElementsByTagName('head')[0]; 
var elem=document.createElement('script'); 
var oScript=head.appendChild(elem); 
oScript.setAttribute("src","https://www.google.com/jsapi"); 
oScript.setAttribute("type","text/javascript");


var elem1=document.createElement('script');
var oScript1=head.appendChild(elem1); 
oScript1.setAttribute("type","text/javascript");
oScript1.text='google.load("language", "1"); function initialize() { google.language.transliterate(["привет"], "ru", "en",  function(result) { if (!result.error) { var m; if (result.transliterations && result.transliterations.length > 0 && result.transliterations[0].transliteratedWords.length > 0) 
{
 m = result.transliterations[0].transliteratedWords[0]; } 

}}); } google.setOnLoadCallback(initialize); ';

затем пытаюсь вывести переменную m с результатом по событию document.addEventListener("DOMContentLoaded",funct ion() {}

а в консоли: m - undefined.
подскажите как реализовать правильно?

Raz0r 27.04.2011 11:54

неужеле никто не сталкивался с подобным.
мне кажется ошибка моя глупая какая-то.
подскажите плиз :-?

melky 27.04.2011 13:38

зачем так сложно создавать скрипты?

var head=document.getElementsByTagName('head')[0]; 


var elem=document.createElement('script'); 
elem.type = "text/javascript";

// а ключ писали? key=INSERT-YOUR-KEY
elem.src = "https://www.google.com/jsapi";

head.appendChild(elem); 

var elem1=document.createElement('script');

elem1.type= "text/javascript";

head.appendChild(elem1); 

// а ЭТО что такое???
oScript1.text='google.load("language", "1"); function initialize() { google.language.transliterate(["привет"], "ru", "en",  function(result) { if (!result.error) { var m; if (result.transliterations && result.transliterations.length > 0 && result.transliterations[0].transliteratedWords.length > 0) 
{
 m = result.transliterations[0].transliteratedWords[0]; } 

}}); } google.setOnLoadCallback(initialize); ';



см пример гугла

<script type="text/javascript" src="http://www.google.com/jsapi?key=ТВОЙ_КЛЮЧ"></script>


    <script type="text/javascript">


    google.load("language", "1");

    function initialize() {

    // google.language.transliterate( ARRAY STRING слова, STR из какого,  STR в какой, FUNCTION колбек)

      google.language.transliterate(["Namaste"], "en", "hi", function(result) {

        if (!result.error) {

          var container = document.getElementById("transliteration");

          if (result.transliterations && result.transliterations.length > 0 &&
            result.transliterations[0].transliteratedWords.length > 0) 

            container.innerHTML = result.transliterations[0].transliteratedWords[0];

          
        }
      });
    }
    google.setOnLoadCallback(initialize);

    </script>
  </head>


    <div id="transliteration"></div>

Raz0r 27.04.2011 17:24

Цитата:

Сообщение от melky
зачем так сложно создавать скрипты?

я видел этот пример, мне не нужно выдавать результат в div, я хочу запомнить его в переменную и потом использовать.

melky 27.04.2011 17:36

читайте внимательней тот пример


google.load("language", "1");

    function initialize() {

    // google.language.transliterate( ARRAY STRING слова, STR из какого,  STR в какой, FUNCTION колбек)

      google.language.transliterate(["Namaste"], "en", "hi", function(result) {

        if (!result.error) {

          var container = document.getElementById("transliteration");

          if (result.transliterations && result.transliterations.length > 0 &&
            result.transliterations[0].transliteratedWords.length > 0) 

// ВОТ ваш текст!!--------------
           container.innerHTML = *!* result.transliterations[0].transliteratedWords[0];*/!*
// ------------------
          
        }
      });
    }
    google.setOnLoadCallback(initialize);



я не буду регаться там

не стоит же?

Raz0r 27.04.2011 17:54

Цитата:

Сообщение от melky
я не буду регаться там

не стоит же?

там и без регистрации работает.

Цитата:

Сообщение от melky
result.transliterations[0].transliteratedWords[0];

да, вот я хочу этот готовый 'текст' запихнуть в переменную, чтобы потом использовать, а в консоли ругается на эту переменную как undefined

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

melky 27.04.2011 18:01

а с сервера что приходит???


посмотрите

может он пишет пустое место тем, кто не берет API по ключу

Raz0r 27.04.2011 18:16

Цитата:

Сообщение от melky
а с сервера что приходит???

посмотрите

может он пишет пустое место тем, кто не берет API по ключу

проверил пример с гугла на лок компе, т.е без ключа api, все работает, резульат получает, но в див через innerhtml.

если тоже самое, но сохранять в переменную, пишет
Uncaught exception: ReferenceError: Undefined variable: m :-?

Raz0r 27.04.2011 18:34

вообщем, если я не ошибся, то причина в этом:
Цитата:

Currently, English is the only supported source language.
я попробовал и действительно: с англ на рус транслиритирует, а уже с рус на англ нет :(

melky 27.04.2011 18:57

вот тебе и ошибка))


Часовой пояс GMT +3, время: 08:02.