home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / AvantBrowser / asetup.exe / _data / webkit / chrome.dll / 0 / BINDATA / 602 < prev    next >
Encoding:
Text File  |  2013-04-03  |  3.4 KB  |  124 lines

  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4.  
  5. // This code is used in conjunction with the Google Translate Element script.
  6. // It is injected in a page to translate it from one language to another.
  7. // It should be included in the page before the Translate Element script.
  8.  
  9. var cr = {};
  10.  
  11. cr.googleTranslate = (function() {
  12.   // Internal states.
  13.   var lib;
  14.   var libReady = false;
  15.   var error = false;
  16.   var finished = false;
  17.   var checkReadyCount = 0;
  18.  
  19.   function checkLibReady() {
  20.     if (lib.isAvailable()) {
  21.       libReady = true;
  22.       return;
  23.     }
  24.     if (checkReadyCount++ > 5) {
  25.       error = true;
  26.       return;
  27.     }
  28.     setTimeout(checkLibReady, 100);
  29.   }
  30.  
  31.   function onTranslateProgress(progress, opt_finished, opt_error) {
  32.     finished = opt_finished;
  33.     // opt_error can be 'undefined'.
  34.     if (typeof opt_error == 'boolean' && opt_error) {
  35.       error = true;
  36.       // We failed to translate, restore so the page is in a consistent state.
  37.       lib.restore();
  38.     }
  39.   }
  40.  
  41.   // Public API.
  42.   return {
  43.     /**
  44.      * Whether the library is ready.
  45.      * The translate function should only be called when |libReady| is true.
  46.      * @type {boolean}
  47.      */
  48.     get libReady() {
  49.       return libReady;
  50.     },
  51.  
  52.     /**
  53.      * Whether the current translate has finished successfully.
  54.      * @type {boolean}
  55.      */
  56.     get finished() {
  57.       return finished;
  58.     },
  59.  
  60.     /**
  61.      * Whether an error occured initializing the library of translating the
  62.      * page.
  63.      * @type {boolean}
  64.      */
  65.     get error() {
  66.       return error;
  67.     },
  68.  
  69.     /**
  70.      * The language the page translated was in. Is valid only after the page
  71.      * has been successfully translated and the original language specified to
  72.      * the translate function was 'auto'. Is empty otherwise.
  73.      * @type {boolean}
  74.      */
  75.     get sourceLang() {
  76.       if (!libReady || !finished || error)
  77.         return '';
  78.       return lib.getDetectedLanguage();
  79.     },
  80.  
  81.     /**
  82.      * Translate the page contents.  Note that the translation is asynchronous.
  83.      * You need to regularly check the state of |finished| and |error| to know
  84.      * if the translation finished or if there was an error.
  85.      * @param {string} originalLang The language the page is in.
  86.      * @param {string} targetLang The language the page should be translated to.
  87.      * @return {boolean} False if the translate library was not ready, in which
  88.      *                   case the translation is not started.  True otherwise.
  89.      */
  90.     translate: function(originalLang, targetLang) {
  91.       finished = false;
  92.       error = false;
  93.       if (!libReady)
  94.         return false;
  95.       lib.translatePage(originalLang, targetLang, onTranslateProgress);
  96.       return true;
  97.     },
  98.  
  99.     /**
  100.      * Reverts the page contents to its original value, effectively reverting
  101.      * any performed translation.  Does nothing if the page was not translated.
  102.      */
  103.     revert: function() {
  104.       lib.restore();
  105.     },
  106.  
  107.     /**
  108.      * Entry point called by the Translate Element once it has been injected in
  109.      * the page.
  110.      */
  111.     onTranslateElementLoad: function() {
  112.       try {
  113.         lib = google.translate.TranslateService({});
  114.       } catch (err) {
  115.         error = true;
  116.         return;
  117.       }
  118.       // The TranslateService is not available immediately as it needs to start
  119.       // Flash.  Let's wait until it is ready.
  120.       checkLibReady();
  121.     }
  122.   };
  123. })();
  124.