2010-09-26 5 views
6

फेसबुक के पास अपनी साइट के स्थानीयकरण के लिए यह अद्वितीय और चालाक दृष्टिकोण है: अनुवादक (उनके मामले में उपयोगकर्ता जो स्वेच्छा से साइट का अनुवाद करने में मदद करते हैं) बस अभी तक अनुवादित तारों पर क्लिक नहीं कर सकते हैं - जो एक हरे रंग की तल सीमा के साथ चिह्नित हैं - साइट पर उनके प्राकृतिक संदर्भ में। http://www.facebook.com/translations/ देखें।i18n à la फेसबुक के लिए ओपन सोर्स प्रोजेक्ट्स

अब, यदि आपको कभी किसी वेबसाइट के अनुवाद से निपटना पड़ा है, तो आप इस बारे में अच्छी तरह से अवगत होंगे कि इन अनुवादों में से कुछ अजीब और हास्यास्पद कैसे हो सकते हैं, जैसे कि अनुवादक को पूरी तरह से अवगत नहीं है स्पॉट अनुवादित स्ट्रिंग वेबसाइट पर दिखाई देगी।

उदाहरण: कृपया "होम" का अनुवाद करें। उदाहरण के लिए, जर्मन में, वेबसाइट का प्रारंभ पृष्ठ "होम" होगा जबकि आप जिस घर में रहते हैं वह "हेम" है। अब, आप अनुवादक के रूप में मूल रूप से अनुमान लगाते हैं कि यह शब्द वेबसाइट पर कौन सा संदर्भ दिखने की संभावना है और तदनुसार अनुवाद करें। संभावना है, आप घर के फर्नीचर पर नई वेबसाइट हैं अब "होम-एइन्रिचटंग" के रूप में अनुवाद करती है जो कि किसी भी जर्मन के लिए हास्यास्पद लगता है।

तो, मेरे सवाल करने पर निर्भर करता:

आप किसी भी खुला स्रोत पीएचपी परियोजनाओं है कि कुछ इस तरह पर काम पता है? मैं मूल रूप से एक ढांचे की तलाश में हूं जो आपको अपनी अंतर्राष्ट्रीय वेबसाइट को "अनुवाद मोड" में रखने की अनुमति देता है और तारों को क्लिक करने योग्य और अनुवाद योग्य बना देता है। एक जावास्क्रिप्ट मोडल के माध्यम से।

मैं पूरी तरह से तैयार और तैयार किए गए समाधान की तलाश में नहीं हूं, लेकिन इसी तरह की परियोजनाओं के बारे में जानना अच्छा लगेगा जिनसे मैं कोड का योगदान कर सकता हूं।

अग्रिम धन्यवाद!

+0

यह एक अच्छा सवाल है और शायद अधिक से अधिक प्रासंगिक हो जाएगा क्योंकि वेबसाइटें अधिक से अधिक वैश्विक हो रही हैं! – Ryan

उत्तर

1

यदि आप jquery & jquery ब्राउज़र भाषा के साथ अपना खुद का रोल करना चाहते हैं, तो यह आपको जा सकता है।

टैग सभी अनुवाद पाठ के class="i18n" साथ तत्व होते हैं, और jQuery, jQuery BrowserLanguage, और अपने i18n स्क्रिप्ट शामिल हैं।

अंतर्राष्ट्रीयकरण जावास्क्रिप्ट

- यह अपने सर्वर से ajax के माध्यम से अनुवाद को स्वीकार करने की जरूरत है, जैसे:

var i18n = {}; 
i18n.bank = new Array(); 
i18n.t = function (text, tl=$.browserLanguage) { 
    var r = false; 
    $.ajax({ 
     url: "/i18n_t.php?type=request&from="+ escape(text) +"&tl="+ tl, 
     success: function(){ i18n.bank[text] = this; r = true; } 
    }); 
    return r; 
}; 

php i18n अनुवाद सेवा

- अब हम अनुवाद सेवा, और उन्हें

डेटाबेस तालिकाओं का एक समूह, प्रत्येक भाषा के लिए एक तरह दिखेगा स्वीकार करना होगा।

// SCHEMA for each language: 
CREATE TABLE `en` 
(
`id` INT PRIMARY KEY AUTO INCREMENT NOT NULL, 
`from` VARCHAR(500) NOT NULL, 
`to` VARCHAR(500) NOT NULL 
) 

PHP को कुछ कनेक्शन और डीबी मैनिपुलेशन की आवश्यकता होगी ..अब के लिए ऐसा कर सकते हैं:

//Connect to the database 
$connection = mysql_connect('host (usually localhost)', 'mysql_username' , 'mysql_password'); 
$selection = mysql_select_db('mysql_database', $connection); 

function table_exists($tablename, $database = false) { 
    if(!$database) { 
     $res = mysql_query("SELECT DATABASE()"); 
     $database = mysql_result($res, 0); 
    } 

    $res = mysql_query("SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_schema = '$database' AND table_name = '$tablename' 
    "); 

    return mysql_result($res, 0) == 1; 
} 

कोड बस है:

<?php  
// .. database stuff from above goes here .. 
$type=$_GET["type"]; 
$from=$_GET["from"]; 
$to=$_GET["to"]; 
$tl=$_GET["tl"]; 

if (! table_exists($tl)) { 
... 
} 

if ($type == "request") { // might want to set $tl="en" when ! table_exists($tl) 
    $find = mysql_query("SELECT to FROM `'$tl'` WHERE from='$from'"); 
    $row = mysql_fetch_array($find); 
    echo $row['to']; 
} elsif ($type == "suggest") { 
    $find = mysql_query("SELECT COUNT(*) AS count FROM `'$tl'` WHERE from='$from'"); 
    if (!(mysql_result($res, 0)) == 0) { 
     $ins = mysql_query("INSERT INTO `'$tl'` (from, to) VALUES ('$from','$to')"); 
    } 
} 
?> 

पेज अनुवाद यांत्रिकी

- अंत में हम उन्हें एक साथ अपने वेबपेजों में कुछ और jQuery के साथ टाई कर सकते हैं:

i18n.suggest = function (from) { // post user translation to our php 
    $.ajax({ 
     url: "/i18n_t.php?type=suggest&from='+from+'&to="+ escape($('#i18n_s').contents()) +"&tl="+ $.browserLanguage, 
     success: function(){ $('#i18n_t_div').html('<em>Thanks!</em>').delay(334).fadeOut().remove(); } 
    }); 
}; 

$(document).ready(function() { 
    i18n.t("submit"); 
    i18n.t("Thanks!"); 
    $('.i18n').click(function(event) { //add an onClick event for all i18n spans 
     $('#i18n_t_div').remove; 
     $(this).parent().append(
'<div id="i18n_t_div"><form class="i18n_t_form"> 
    <input type="text" id="i18n_s" name="suggestion" value="+$(this).contents()+" /> 
    <input type="button" value="'+ i18n.bank[ "submit" ] +'" onclick="i18n.suggest('+$(this).contents()+')" /> 
</form></div>' 
     ); 
    }).each(function(){ 
     var c = $(this).contents(); //now load initial translations for browser language for all the internationalized content on the page 
     if (i18n.t(c)){ 
      $(this).html(i18n.bank[c]); 
     } 
    }); 
}); 

मन आप मैं पर इस परीक्षण करने के लिए एक सर्वर की जरूरत नहीं है ... और मैं वास्तव में php कोड नहीं है। : डी यह कुछ डीबगिंग लेगा लेकिन मचान सही होना चाहिए।

संबंधित मुद्दे