Ignore:
Timestamp:
03/17/2009 09:07:25 AM (3 years ago)
Author:
ofer
Message:

Initial commit of auto-translate feature

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/WordPress/plugin/transposh/transposh.php

    r67 r68  
    4242 
    4343//Database version 
    44 define("DB_VERSION", "1.01"); 
     44define("DB_VERSION", "1.02"); 
    4545 
    4646//Constant used as key in options database 
     
    221221 * Fetch translation from db or cache. 
    222222 * Returns the translated string or NULL if not available. 
     223 * TODO: // will an array work? 
    223224 */ 
    224225function fetch_translation($original) 
     
    230231    if(ENABLE_APC && function_exists('apc_fetch')) 
    231232    { 
    232         $cached = apc_fetch($original . $lang, $rc); 
     233        $cached = apc_fetch($original .'___'. $lang, $rc); 
    233234        if($rc === TRUE) 
    234235        { 
     
    243244    if($row !== FALSE) 
    244245    { 
    245         $translated = $row->translated; 
    246         $translated = stripslashes($translated); 
    247  
    248         logger("db result for $original >>> $translated ($lang)" , 3); 
     246        $translated_text = stripslashes($row->translated); 
     247        $translated = array($translated_text, $row->source); 
     248 
     249        logger("db result for $original >>> $translated_text ($lang) ({$row->source})" , 3); 
    249250    } 
    250251 
     
    260261 
    261262        //update cache 
    262         $rc = apc_store($original . $lang, $cache_entry, 3600); 
     263        $rc = apc_store($original .'___'. $lang, $cache_entry, 3600); 
    263264        if($rc === TRUE) 
    264265        { 
     
    298299    $js .= "\n<script type=\"text/javascript\" src=\"$overlib_dir/overlibmws_shadow.js\"></script>"; 
    299300 
    300     $js .= "\n<script type=\"text/javascript\" src=\"$plugin_url/js/transposh.js\"></script>\n"; 
    301     $js .= "\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></script>\n"; 
    302     $js .= "\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>\n"; 
    303     $js .= "\n<script type=\"text/javascript\">google.load(\"language\", \"1\");</script>\n"; 
     301    $js .= "\n<script type=\"text/javascript\" src=\"$plugin_url/js/transposh.js\"></script>"; 
     302    $js .= "\n<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></script>"; 
     303    $js .= "\n<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>"; 
     304    $js .= "\n<script type=\"text/javascript\">google.load(\"language\", \"1\");</script>"; 
     305    global $lang, $home_url; 
     306    $post_url = $home_url . '/index.php'; 
     307    $js .= "\n<script type=\"text/javascript\">var transposh_post_url='$post_url';var transposh_target_lang='$lang';$(document).ready(function() {do_auto_translate();});</script>"; 
    304308 
    305309    echo $js; 
     
    313317         placed within the img tag for use on client side operation (jquery) 
    314318 */ 
    315 function get_img_tag($original, $translation, $segment_id, $is_translated = FALSE) 
     319function get_img_tag($original, $translation, $source, $segment_id, $is_translated = FALSE) 
    316320{ 
    317321    global $plugin_url, $lang, $home_url; 
     
    330334    } 
    331335 
     336    if ($source == 1) { 
     337        $add_img = "_auto"; 
     338    } 
     339 
    332340    $img = "<img src=\"$plugin_url/translate$add_img.png\" alt=\"translate\" id=\"" . IMG_PREFIX . "$segment_id\" 
    333            onclick=\"translate_dialog('$original','$translation','$lang','$url', '$segment_id'); return false;\" 
     341           onclick=\"translate_dialog('$original','$translation','$segment_id'); return false;\" 
    334342           onmouseover=\"hint('$original'); return true;\" 
    335343           onmouseout=\"nd()\" />"; 
     
    395403    $translation = $_POST['translation']; 
    396404    $lang = $_POST['lang']; 
     405    $source = $_POST['source']; 
    397406 
    398407    if(!isset($original) || !isset($translation) || !isset($lang)) 
    399408    { 
    400         logger("Enter " . __FILE__ . " missing params: $original , $translation, $lang," . 
    401                $ref, 0); 
     409        logger("Enter " . __FILE__ . " missing params: $original , $translation, $lang," . $ref, 0); 
    402410        return; 
    403411    } 
     
    413421    $translation = $wpdb->escape(htmlspecialchars(stripslashes(urldecode($translation)))); 
    414422 
    415     $update = "REPLACE INTO  $table_name (original, translated, lang) 
    416                 VALUES ('" . $original . "','" . $translation . "','" . $lang . "')"; 
     423    //TODO: Check more escaping... 
     424 
     425    $update = "REPLACE INTO  $table_name (original, translated, lang, source) 
     426                VALUES ('" . $original . "','" . $translation . "','" . $lang . "','" . $source . "')"; 
    417427 
    418428    $result = $wpdb->query($update); 
     
    420430    if($result !== FALSE) 
    421431    { 
    422         update_transaction_log($original, $translation, $lang); 
     432        update_transaction_log($original, $translation, $lang, $source); 
    423433 
    424434        //Delete entry from cache 
    425435        if(ENABLE_APC && function_exists('apc_store')) 
    426436        { 
    427             apc_delete($original . $lang); 
     437            apc_delete($original .'___'. $lang); 
    428438        } 
    429439        logger("Inserted to db '$original' , '$translation', '$lang' " , 3); 
     
    443453 * 
    444454 */ 
    445 function update_transaction_log(&$original, &$translation, &$lang) 
     455function update_transaction_log(&$original, &$translation, &$lang, $source) 
    446456{ 
    447457        global $wpdb, $user_ID; 
     
    458468        } 
    459469 
    460     $log = "INSERT INTO ".$wpdb->prefix.TRANSLATIONS_LOG." (original, translated, lang, translated_by) 
    461                 VALUES ('" . $original . "','" . $translation . "','" . $lang . "','".$loguser."')"; 
     470    $log = "INSERT INTO ".$wpdb->prefix.TRANSLATIONS_LOG." (original, translated, lang, translated_by, source) 
     471                VALUES ('" . $original . "','" . $translation . "','" . $lang . "','".$loguser."','".$source."')"; 
    462472 
    463473    $result = $wpdb->query($log); 
     
    465475    if($result === FALSE) 
    466476    { 
    467         logger("Error !!! failed to update transaction log:  $loguser, $original ,$translation, $lang" , 0); 
    468     } 
    469  
    470 } 
    471  
     477        logger("Error !!! failed to update transaction log:  $loguser, $original ,$translation, $lang, $source" , 0); 
     478    } 
     479} 
    472480 
    473481/* 
     
    510518} 
    511519 
    512  
    513520/* 
    514521 * Page generation completed - flush buffer. 
     
    518525    ob_flush(); 
    519526} 
    520  
    521527 
    522528/* 
     
    580586    return $qvars; 
    581587} 
    582  
    583588 
    584589/* 
     
    609614        dbDelta($sql); 
    610615 
     616                // TODO: remove this? 
    611617        //Verify that newly created table is ready for use. 
    612618        //$insert = "INSERT INTO " . $table_name . " (original, translated, lang) " . 
     
    634640                                                  translated VARCHAR(256), 
    635641                                                  translated_by VARCHAR(15), 
     642                                                  source TINYINT NOT NULL, 
    636643                                                  timestamp TIMESTAMP, 
    637644                                                  PRIMARY KEY (original, lang, timestamp)) "; 
Note: See TracChangeset for help on using the changeset viewer.