2011-06-17 16 views
11

कुछ गेटटेक्स्ट कुंजी मेरे लिए काम नहीं कर रही हैं - वे अनुवाद के बजाए कुंजी दिखाते हैं, हालांकि एक है। मैं PHP File_Gettext नाशपाती पुस्तकालय के साथ mo फ़ाइल बना रहा हूं, और यह ठीक काम कर रहा है, तो मैं बाहर की कोशिश करने के निम्न स्क्रिप्ट कर दिया है, जो कुंजी ठीक काम नहीं कर रहे:मैं php gettext को डीबग कैसे कर सकता हूं?

$locale = 'en_GB'; 
$domain = 'messages'; 

setlocale(LC_ALL, $locale); 
putenv("LC_ALL=".$locale); 
bindtextdomain($domain, "D:/_gt"); 
bind_textdomain_codeset($domain, 'UTF-8'); 
textdomain($domain); 

$mocreator = new File_Gettext_MO(); 
$mocreator->load('D:/_gt/en_GB/LC_MESSAGES/messages.mo'); 

foreach ($mocreator->strings as $key => $value) { 
    if ($value == gettext($key)) { 
     var_dump("ok"); 
    } else { 
     var_dump($key, $value, gettext($key)); 
    } 
} 

से मैं ok रों का एक बहुत देखते हैं - - इसके बाद के संस्करण के उत्पादन में मुझे लगता है कि कुछ सुझाव दिए गए काम को देखते हैं और कुछ नहीं करते हैं, उपज निम्नलिखित:

string 'Cancelled' (length=9) 
string 'Storniert' (length=9) 
string 'Cancelled' (length=9) 

तो वहाँ फ़ाइल में अनुवाद है, लेकिन gettext उन्हें इस्तेमाल करने में विफल रहता है किसी कारण के लिए।

+0

अनुवाद फ़ाइल की जांच करें। मुझे लगता है कि gettext 'File_Gettext_MO' से अधिक सटीक है। इसमें 'cacnelled' स्ट्रिंग की तलाश करें, शायद यह कुछ ऐसा है जिसे आप देख सकते हैं। आप अपनी एमओ फ़ाइल से भी प्रश्न में भाग जोड़ना चाह सकते हैं। – hakre

+0

@ हकर, मैं वहां 'कैनसेल' और 'स्टोर्नियर्ट' दोनों देख सकता हूं। मुझे फाइल का कौन सा हिस्सा जोड़ना चाहिए? – Fluffy

+0

यह पुस्तकालय क्या है? File_Gettext नाशपाती? मुझे कहीं भी File_Gettext_MO नहीं मिल रहा है। – Gazzer

उत्तर

1

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

D:/_gt मुझे यह इंप्रेशन देता है कि आप किसी प्रकार के विंडोज का उपयोग कर रहे हैं, और यदि मैं गलत नहीं हूं तो सभी विंडोज संस्करण डिफ़ॉल्ट रूप से लैटिन -1- "विशेष-लोकेल" का उपयोग करते हैं। मेरा मानना ​​है कि यह समस्या एन्कोडिंग से संबंधित हो सकती है क्योंकि आप फ़ाइल को utf8 के रूप में निर्दिष्ट कर रहे हैं लेकिन मैं .mo फ़ाइल के बिना वहां आपकी सहायता नहीं कर सकता। लेकिन putenv और setlocale कथन के स्थानों को स्विच करने का प्रयास करें।

या रिक्त स्थान गायब हैं? क्या सही कुंजी " Cancelled" हो सकती है?

लेकिन जैसा कि किसी ने टिप्पणियों में कहा था, यह .mo फ़ाइल के बिना अनुमान लगाया गया है।

यदि आपको पहले से ही अपना उत्तर मिल गया है, तो कृपया इसे बाकी के इंटरनेट की सहायता के लिए जोड़ें! : डी

+0

यह एक विंडोज़ समस्या प्रतीत नहीं होता है, क्योंकि एक ही व्यवहार के साथ सर्वर पर एक ही स्क्रिप्ट है। जैसा कि आप आउटपुट में देख सकते हैं, रिक्त स्थान ठीक हैं। असल में, मुझे इसके लिए कोई समाधान नहीं मिला - मैं अभी डीबी + मेमकैच का उपयोग कर रहा हूं, जो काफी अच्छी तरह से काम करता है। – Fluffy

+0

इसके अलावा, मैंने कुछ पैटर्न खोजने की कोशिश की जिसमें चाबियां काम नहीं कर रही हैं - जैसे, मल्टीबाइट चरित्र प्रकट होता है और सभी बाद की कुंजियां टूट जाती हैं। लेकिन जब कुंजी में फ़ाइल में वर्णमाला वर्णित हैं, जो काम नहीं करते हैं वे यादृच्छिक स्थानों में हैं। – Fluffy

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