दिलचस्प पोस्ट
क्या इवेंट एक <इनपुट प्रकार = "संख्या" /> आग जब यह मूल्य बदल जाता है? स्थिर कन्स्ट्रक्टरों का क्या उपयोग है? एंड्रॉइड – आवधिक पृष्ठभूमि सेवा – सलाह 64-बिट एंड्रॉइड पर 32-बिट जेनी लाइब्रेरी का उपयोग करें पूरे पृष्ठ लोड होने से पहले क्या मैं जावास्क्रिप्ट चला सकता हूँ? वेक्टर अनुक्रम के भीतर एक वेक्टर अनुक्रम कैसे इंडेक्स करें मैं दैनिक कार्य को करने के लिए C # Windows सेवा का शेड्यूल कैसे कर सकता / सकती हूं? सर्विस ओरिएंटेड आर्किटेक्चर – एएमक्यूपी या एचटीटीपी पृष्ठभूमि-आकार का अनुकरण कैसे करें: <img> पर कवर करें? क्यों द्रुतशीर्ट रेडिक्स-सॉर्ट से अधिक लोकप्रिय है? मैं सी # रेगेक्स में कब्जा किए गए समूहों का नाम कैसे प्राप्त करूं? पृष्ठभूमि संगीत एंड्रॉइड जामा लैंग असमर्थित क्लास Xamarin स्टूडियो में संस्करण त्रुटि पायथन उपप्रोसेड वाइल्डकार्ड उपयोग Mod_rewrite के साथ .php एक्सटेंशन को निकालना

PHP स्थानीयकरण सर्वोत्तम व्यवहार? gettext?

हम अपनी वेबसाइट को अंतरराष्ट्रीय बनाने की प्रक्रिया में हैं, जिससे कई भाषाओं की अनुमति मिलती है।

मैं php के "gettext" हालांकि, अगर मैं इसे सही समझ में देखा है, मैं एक बड़ा दोष देख रहा हूँ:

यदि मेरे वेबपेज ने "हैलो वर्ल्ड" को एक स्थिर पाठ के रूप में बताया है मैं स्ट्रिंग को <?php echo gettext("Hello World"); ?> रूप में रख सकता हूँ <?php echo gettext("Hello World"); ?> <?php echo gettext("Hello World"); ?> , एक उपकरण का उपयोग करते हुए पीओ / एमओ फ़ाइलों को उत्पन्न करते हैं। फिर मैं एक फाइल करने के लिए अनुवादक को फाइल दूंगा।

कुछ दिन बाद हम "हेलो स्माल वर्ल्ड" कहने के लिए अंग्रेजी में पाठ बदलना चाहते हैं? क्या मैं gettext में मान बदल सकता हूँ? क्या मैं एक अंग्रेजी पीओ फ़ाइल बना सकता हूँ और वहां इसे बदलूं? यदि आप गेट टेक्स्ट को बदलते हैं तो इसे इसे एक नई स्ट्रिंग मानेंगे और आप तुरन्त वर्तमान अनुवाद को ढीले करेंगे …

मुझे लगता है कि धीरे-धीरे, पीएचपी फाइल की सामग्री को हर जगह पुराना पाठ मिलेगा। या अनुवाद करने वाले लोगों को "जब आप हैलो वर्ल्ड देखते हैं, बजाय, हैलो स्माल वर्ल्ड" का अनुवाद करने के लिए कहा जा सकता है

मुझे नहीं पता कि मैं भ्रमित हो रहा हूँ

अन्य प्रोग्रामिंग भाषाओं में, मैंने देखा है कि वे web.home.featured.HelloWorld जैसे कीवर्ड का उपयोग करते हैं

PHP में अनुवाद को संभाल करने का सबसे अच्छा तरीका क्या है?

धन्यवाद

Solutions Collecting From Web of "PHP स्थानीयकरण सर्वोत्तम व्यवहार? gettext?"

आपने मूल रूप से पूछा और अपने प्रश्न का उत्तर दिया, तो उत्तर में शायद थोड़ी बेहतर समझ हो कि पीओ फाइल कैसे काम करती है

पीओ फाइल में आपको एक और। यह मान है जो स्थानीयकरण के आधार पर PHP फ़ाइल के भीतर संदेश के साथ प्रतिस्थापित किया जाता है।

अब आप उनको बना सकते हैं, जो कुछ भी आप चाहते हैं, आप इसे अच्छी तरह से बना सकते हैं:

 <?php echo _("web.home.featured.HelloWorld"); ?> 

और फिर आप इस स्ट्रिंग को स्रोत में फिर से कभी नहीं स्पर्श करेंगे, आप केवल पीओ फाइलों के माध्यम से स्ट्रिंग को संपादित करेंगे।

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

मुझे लगता है, यह स्पष्ट है।

मुझे पता है कि एक उत्तर स्वीकार किया गया है, और उपर्युक्त उत्तर अच्छा है लेकिन thing.stuff.widget साथ काम करते समय thing.stuff.widget जैसी स्थायी मशीन-शैली की कुंजी का उपयोग करने के साथ एक अन्य समस्या है।

स्थायी कुंजी का उपयोग करते समय विकास के लिए एक बेहतर तरीका है, गेटटेक्स्ट को उस कार्यप्रणाली के लिए सेट नहीं किया गया है और यह आपके वर्कफ़्लो को मुश्किल कर सकता है

यदि आप स्रोत पाठ के स्थान पर कुंजी के साथ पॉपुलर फाइल के साथ एक अनुवादक प्रस्तुत करते हैं, तो उन्हें पता नहीं होगा कि अंग्रेज़ी कैसे होना चाहिए। तो आपको उन्हें दूसरी फ़ाइल प्रदान करनी होगी जिसमें उनके लिए स्त्रोत भाषा में अनुवाद की तुलना की जा सकती है। दुनिया का अंत नहीं है, लेकिन उनके लिए और अधिक निपुण है और न कि गेटटेक्स्ट कैसे तैयार किया गया था। (वर्ग खूंटी, गोल छेद आदि ..)

मुझे लगता है कि पीओ पूरी तरह से PHP में अनुवाद के लिए एक फ़ाइल स्वरूप के रूप में ठीक है, और विशेषकर अनुशंसित है कि यदि आप एक ढांचे के साथ काम नहीं कर रहे हैं जिसमें एक अच्छा एल 10 एन मॉड्यूल है, लेकिन इसका मतलब यह नहीं है कि यह वर्कफ़्लो और आपकी अनुवाद प्रक्रिया के लिए अच्छा है।

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

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

वर्तमान में, मैं एक ही मुद्दे के साथ काम कर रहा हूँ गेटटेक्स्ट के साथ सामान्य अभ्यास अंग्रेजी पाठ को कुंजी के रूप में उपयोग करना है। हाल ही में, हमारे कॉपी संपादक ने अंग्रेजी पाठ का पूरी तरह से अनुवाद किया (अन्य भाषाओं को मुश्किल से छुआ) तो हमें सभी स्रोत कोड को सभी पीओ फाइलों में बदलना होगा।

हम एक तटस्थ कुंजी पर स्विच कर रहे हैं चूंकि हमारे पास जावा पर कुछ साइटें हैं हम उसी गुण नाम प्रारूप का उपयोग करेंगे।