2010-05-25 11 views
6

मुझे एक ऐसी वेबसाइट मिली है जो वर्तमान में सभी अंग्रेजी में है। यह एक ऑनलाइन गेम है, इसलिए इसमें स्थिर टेक्स्ट के साथ-साथ डेटाबेस में बहुत सारी सामग्री वाले विभिन्न पृष्ठों का समूह भी है।डायनामिक साइट लोकलाइजेशन को कैसे संभालें?

मैं अधिक वैश्विक रूप से विस्तार करने की कोशिश कर रहा हूं और साइट के कुछ स्थानीयकरण को जारी करने के लिए तैयार हूं। हालांकि, मुझे यह सुनिश्चित करने के लिए सबसे अच्छा तरीका नहीं है कि यह मेरे लिए प्रबंधित करना और उपयोगकर्ताओं के उपयोग के लिए सबसे आसान होगा।

क्या मुझे डेटाबेस में अनुवादित ग्रंथों को संग्रहित करना चाहिए, या इसे पूरी तरह से अलग तरीके से किया जाना चाहिए? यदि यह बिल्कुल मायने रखता है, तो साइट PHP में लिखी गई है और MySQL का उपयोग करती है।

उत्तर

1

मेरे अनुभव में सभी अनुवाद कर मैन्युअल रूप से एक असली बुरा सपना हो सकता है द्वारा समर्थित है किया जा सकता है का उपयोग करें! % -)

मुझे लगता है कि आपको नेविगेशन मेनू और अन्य सभी उपयोगकर्ता प्रोफ़ाइल सेटिंग्स, और साइट के चारों ओर बटन और उस तरह की चीजों जैसे डैशबोर्ड कमांड साइट पर अपना अनुवाद केंद्रित करना होगा!पूर्व नामक एक फ़ाइल में

include "./includes/languages/english.php"; 

.: english.php italian.php पर इस पूर्व की तरह डाल

define('LAN_USER_LOGIN' , 'User Logged In'); 
define('LAN_USER_LOGOUT' , 'User Logged Out'); 
..... 

और हां, तो स्पेनिश:

आपके पृष्ठों में शामिल करके ऐसा करते हैं इस तरह दाखिल .php, french.php ect ... और इनमें से प्रत्येक फाइल में एक ही परिभाषित चर है लेकिन अनुवादित है!

तो आप उपयोगकर्ता को देशों की सूची से चुनने दे सकते हैं! इस बीटीडब्ल्यू करने का कई तरीका!

एक तरह से अन्य सभी सामग्री के लिए सत्र

// if the user haven't selected a language before!! 
if (empty($_SESSION['language'])) { 
$_SESSION['language'] = "EN"; 
} else { 
$_SESSION['language'] = YOUR_LANG ; 
} 

का उपयोग करके किया जा सकता है मैं की तरह

http://code.google.com/intl/it-IT/apis/ajaxlanguage/


नोट उपकरणों का उपयोग करने की सलाह देते हैं: मैं की सलाह देते हैं आप एक ऑटो मान्यता प्रणाली का उपयोग नहीं करते हैं , क्योंकि इसका परिणाम बहुत ही परेशान अनुभव हो सकता है खासकर यदि आप किसी अन्य देश से साइट देख रहे हैं !! या सिर्फ आप से चुनना चाहते हैं, संक्षेप में उपयोगकर्ता को अंतिम विकल्प दें! ;-)

ऑटोकंपलेटेशन पंजीकरण उद्देश्य के लिए स्वत: पहचान का उपयोग करें! ;-)

इस सहायता की आशा करें!

1

मैं एक केंद्रीकृत भंडारण का उपयोग करने का सुझाव दूंगा (यह एक कॉलम "भाषा" के साथ एक MySQL डेटाबेस तालिका हो सकती है जो अनुवाद करता है कि अनुवाद किस भाषा में है)। यह एक्सएमएल फाइल भी हो सकती है, प्रति भाषा एक फाइल।

आप और भी अधिक संभव फ़ाइल स्वरूपों के लिए देख रहे हैं, Zend फ्रेमवर्क से इस दस्तावेज़ पृष्ठ पर देखते हैं: यदि आप एक रूपरेखा का उपयोग नहीं कर रहे हैं, http://framework.zend.com/manual/en/zend.translate.adapter.html

अनुवाद मैं या तो एक कस्टम समारोह या कस्टम वर्ग पैदा करेगा के लिए जिसमें पहले से ही अनुवाद शामिल है।

एक और विकल्प मानक PHP फ़ंक्शंस का उपयोग करना है। बस "_()" फ़ंक्शन की तलाश करें। मैंने इन कार्यों के साथ काम नहीं किया है और केवल उन्हें ही मिला है, यह सुनिश्चित नहीं है कि वे कितनी अच्छी तरह से काम करते हैं।

1

मैं gettext का उपयोग ऐसे ढांचे के साथ करने की अनुशंसा करता हूं जो (उदा। ज़ेंड) को एकीकृत करता है और .po फ़ाइल प्रारूप में संग्रहीत करता है। .po प्रारूप में संपादक हैं जो अनुवाद को काफी काम करते हैं। यह भी काफी पोर्टेबल (इस प्रकार नाम) है और आप अन्य खेलों पर आपके साथ आगे बढ़ सकता है।

1

हम ज़ेंड फ्रेमवर्क के साथ मिश्रित दृष्टिकोण का उपयोग करते हैं। पृष्ठ सामग्री (WYSIWYG पृष्ठ) डीबी में संग्रहीत है (प्रति भाषा एक रिकॉर्ड, गैर-स्थानीय डेटा को स्थानीय डेटा से अलग किया जाता है और लिंक किए गए विभिन्न तालिकाओं में संग्रहीत किया जाता है), लेकिन फ़ील्ड लेबल और मानक त्रुटि/प्रतिक्रिया संदेश XML में संग्रहीत हैं या गेटटेक्स्ट फ़ाइलें (प्रति भाषा एक फ़ाइल)।

1

हम एक मिश्रित दृष्टिकोण का उपयोग करें: के लिए सीएमएस पृष्ठों अनुवाद शब्द/वाक्य अनुवाद के लिए

  • एक्सएमएल (स्थिर ग्रंथों, लेबल, त्रुटि संदेश, आदि)
  • डेटाबेस के लिए

    • डाटाबेस हम सामान्य सामग्री के लिए 2 टेबल: 1 का उपयोग करें, अन्य फॉर्म अनुवादों के लिए, इसलिए हम यह चुन सकते हैं कि अनुवाद उपलब्ध नहीं है या नहीं: सामग्री को अपनी मूल भाषा में प्रदर्शित करें, या इसे छुपाएं।

      एक्सएमएल के लिए, हम XLIFF प्रारूप, जो आसानी से कई व्यवस्थाएं और सॉफ्टवेयर

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