मैं एक ही कमांड के साथ PHP फ़ाइलों के साथ xgettext का उपयोग कर .po
फ़ाइल को संकलित कैसे कर सकता हूं?रिक्यूसिव xgettext?
मेरी PHP फाइलें पदानुक्रम में मौजूद हैं, और सीधे xgettext
कमांड को कम करने के लिए प्रतीत नहीं होता है।
मैं एक ही कमांड के साथ PHP फ़ाइलों के साथ xgettext का उपयोग कर .po
फ़ाइल को संकलित कैसे कर सकता हूं?रिक्यूसिव xgettext?
मेरी PHP फाइलें पदानुक्रम में मौजूद हैं, और सीधे xgettext
कमांड को कम करने के लिए प्रतीत नहीं होता है।
मिल गया:
find . -iname "*.php" | xargs xgettext
मैं -exec
से पहले उपयोग करने के लिए कोशिश कर रहा था, लेकिन वह केवल एक समय में एक फ़ाइल को चलाने होगा। यह उन्हें गुच्छा पर चलाता है।
ये Google!
यहां विंडोज के लिए एक समाधान है। सबसे पहले, गेटटेक्स्ट इंस्टॉल करें और GnuWin32 टूल्स संग्रह से खोजें।
आप निम्न आदेश बाद में चला सकते हैं:
find /source/directory -iname "*.php" -exec xgettext -j -o /output/directory/messages.pot {} ;
आउटपुट फ़ाइल से पहले अस्तित्व में है आदेश चला रहा है, इसलिए नई परिभाषाओं को इसके साथ विलय किया जा सकता है।
शायद सिगविन स्थापित और उपयोग कर रहे हैं? मुझे पता है कि यह मूल समाधान नहीं है, लेकिन आपको एक ही परिणाम मिलना चाहिए। – neezer
WINDOWS कमांड लाइन के लिए एक simpe समाधान है:
xgettext -o translations/messages.pot --keyword=gettext `find . -name "*.php"`
फ़ाइलें जिसका में विधि gettext के सभी उपयोगों के लिए प्रविष्टियों उत्पन्न करता है:
@echo off
echo Generating file list..
dir html\wp-content\themes\wpt\*.php /L /B /S > %TEMP%\listfile.txt
echo Generating .POT file...
xgettext -k_e -k__ --from-code utf-8 -o html\wp-content\themes\wpt\lang\wpt.pot -L PHP --no-wrap -D html\wp-content\themes\wpt -f %TEMP%\listfile.txt
echo Done.
del %TEMP%\listfile.txt
कुछ चेतावनी सिर्फ मामले में: 'pygettext.py' विकल्प '-f' का समर्थन नहीं करता है। – Morwenn
यह समाधान मैं मैक पर पुनरावर्ती खोज के लिए मिला है विस्तार phf है, सबफ़ोल्डर सहित और उन्हें अनुवाद/संदेशों.pot में सम्मिलित करता है।
थोड़ा वर्णनात्मक पाठ छोड़ दें –
आप इसे एक ही कमांड से प्राप्त नहीं कर सकते हैं। Xgettext विकल्प --files-from
आपका मित्र है।
find . -name '*.php' >POTFILES
xgettext --files-from=POTFILES
आप सकारात्मक है कि आप भी कई स्रोत फ़ाइलों आप भी find
उपयोग कर सकते हैं xargs
साथ की जरूरत नहीं है कर रहे हैं:
find . -name "*.php" -print0 | xargs -0 xgettext
हालांकि, अगर आप भी कई स्रोत फ़ाइलें है, xargs
xgettext
कई लागू करेगा कई बार ताकि आपके प्लेटफ़ॉर्म की अधिकतम कमांड-लाइन लंबाई पार न हो।
rm -f messages.po
echo >messages.po
find . -name "*.php" -print0 | xargs -0 xgettext --join-existing
साथ कि तुलना करें: आदेश अपने आप को उस मामले के खिलाफ की रक्षा करने के लिए आपको, xgettext विकल्प -j
, --join-existing
उपयोग करने के लिए बासी संदेशों पहले फाइल निकालने के लिए, और एक खाली एक के साथ प्रारंभ करें ताकि xgettext जमानत नहीं करता है POTFILES
में स्रोत फ़ाइलों की सूची के साथ पहले दिया गया सरल समाधान!
find
का उपयोग --exec
के साथ बहुत अक्षम है क्योंकि यह xgettext -j
को प्रत्येक स्रोत फ़ाइल के लिए अनुवाद करने योग्य तारों की खोज के लिए एक बार बुलाएगा।xgettext -j
के विशेष मामले में यह और भी अक्षम है क्योंकि xgettext को प्रत्येक आमंत्रण (जो प्रत्येक इनपुट स्रोत फ़ाइल के साथ है) के साथ मौजूदा मौजूदा आउटपुट फ़ाइल messages.po
को पढ़ना है।
अच्छी तरह से यह मेरे लिए काम नहीं कर रहा है, लेकिन आपने मुझे संभावना के लिए एक रास्ता दिखाया है अन्यथा स्वीकार किया जाएगा और इसके साथ रहेंगे जैसे कि –
हाय, अच्छा काम है, लेकिन अंत में जोड़ने के लिए becarefull आदेश, जब तक यह – Ata
काम नहीं करेगा यह गलत है, क्योंकि यदि एक कमांडलाइन पर फिट करने के लिए बहुत सारी फ़ाइलें हैं, तो xargs कई बार xgettext चलाएगा, जिससे पहले के आक्रमणों को गिरफ्तार किया जा सकता है। बस जोड़ना -j सही नहीं है, या तो, क्योंकि आपको पहले फ़ाइल को हटाने की आवश्यकता है या आप पुराने डेटा से जुड़ जाएंगे। –