2012-04-22 8 views
5

यह here कहा गया है कि बेबेल पायथन और जावास्क्रिप्ट फ़ाइलों के लिए गेटटेक्स्ट संदेश निकाल सकता है।बैबेल सीएलआई निकालने का उपयोग कर जावास्क्रिप्ट गेटटेक्स्ट संदेशों को निकालने

कोलाहल में कुछ builtin एक्सट्रैक्टर्स साथ आता है: अजगर (जो अजगर स्रोत फ़ाइलों से संदेशों के अर्क), जावास्क्रिप्ट, और उपेक्षा (जो अर्क कुछ भी नहीं)।

कमांड लाइन निकालने वाला here दस्तावेज किया गया है - लेकिन उपयोग पर कोई उदाहरण नहीं है।

ऊपर same pointer में, निष्कर्षण के साथ उपयोग करने के लिए कॉन्फ़िगरेशन फ़ाइल का कुछ उल्लेख है, लेकिन अधिक विस्तारित नहीं है।

जब मैं जेएस फाइलों के साथ एक डीआईआर पर निकालने के लिए मूल आदेश चलाता हूं, तो मुझे केवल पीओ हेडर उत्पन्न होता है लेकिन कोई संदेश नहीं मिलता है। मैं इसकी सराहना करता है, तो कोई सटीक CLI विकल्प और config सेटिंग्स निकासी बनाने के लिए प्रदान कर सकते हैं होगा

else if(data.status == "1"){ 
    var follow_html = gettext('Follow'); 
    object.attr("class", 'button follow'); 
    object.html(follow_html); 
    var fav = getFavoriteNumber(); 
    fav.removeClass("my-favorite-number"); 
    if(data.count === 0){ 
     data.count = ''; 
     fav.text(''); 
    }else{ 
     var fmts = ngettext('%s follower', '%s followers', data.count); 
     fav.text(interpolate(fmts, [data.count])); 
    } 
} 

:

$ pybabel extract /path/to/js-dir 

# Translations template for PROJECT. 
# Copyright (C) 2012 ORGANIZATION 
# This file is distributed under the same license as the PROJECT project. 
# FIRST AUTHOR <[email protected]>, 2012. 
# 
#, fuzzy 
msgid "" 
msgstr "" 
"Project-Id-Version: PROJECT VERSION\n" 
"Report-Msgid-Bugs-To: [email protected]\n" 
"POT-Creation-Date: 2012-04-22 19:39+1000\n" 
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
"Last-Translator: FULL NAME <[email protected]>\n" 
"Language-Team: LANGUAGE <[email protected]>\n" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"Generated-By: Babel 0.9.6\n" 

$ 

यहाँ एक js फ़ाइल से एक नमूना खंड मैं के लिए संदेशों को निकालने के लिए कोशिश कर रहा हूँ है काम, या इस तरह के एक सूचक।

+3

आपके जेएस में उपयोग कर रहे गेटटेक्स्ट/एनजेटेक्स्ट फ़ंक्शंस क्या हैं? मैं अब एक ही चरण में हूं - मेरे पास एचटीएमएल और पायथन के लिए काम कर रहा है लेकिन जेएस – fastmultiplication

+0

असल में यह एक ओएस प्रोजेक्ट (Askbot) है - आप इसे यहां देख सकते हैं https://github.com/ASKBOT/askbot-devel –

+0

I मेरी समस्या का पता लगाया, वैसे: http://stackoverflow.com/questions/10647449/serving-i18n-js-using-babel-django-jinja2 – fastmultiplication

उत्तर

6

निम्नलिखित सामग्री के साथ एक फ़ाइल (babel.cfg) बनाएँ:

[javascript:*.js] 
encoding = utf-8 

फिर, कार्य करें: यदि आप कुछ संदेश स्ट्रिंग के लिए के लिए

pybabel extract -F babel.cfg /path/to/js-dir 

कि पर्याप्त होना चाहिए।

BTW, आप ऐसा करके extract आदेश के लिए मदद से परामर्श कर सकते हैं:

pybabel extract --help 
+0

जवाब देने में देर के लिए खेद है। मैं वही कर रहा हूं जो आपने रेखांकित किया है और मेरे प्रश्न में दिखाए गए सटीक परिणाम प्राप्त कर रहा हूं। क्या आपने बड़े उदाहरणों पर कमांड का परीक्षण किया है। –

+1

मुझे एक ही समस्या थी। फिर मैंने इसमें एक babel.cfg फ़ाइल बनाई: '' [जावास्क्रिप्ट: **। जेएस] extract_messages = _ '' '' और अब यह काम कर रहा है! –

+0

और एक तरफ इस तरह के बहुवचन कीवर्ड को परिभाषित करते हैं: '-k" ngettext: 1,2 "'। –

3

मैं ने वही समस्या थी और कोलाहल के साथ डिफ़ॉल्ट कीवर्ड को अक्षम करके उसके चारों ओर पाने के लिए कर रहा था।

pybabel extract -k __ -F babel.cfg --no-default-keywords /path/to/js-dir 

जब आप डिफ़ॉल्ट (-k [keyword]) अक्षम करते हैं तो आपको कमांड में कम से कम एक कीवर्ड निर्दिष्ट करना होगा। मैंने -k __ चुना क्योंकि "__" एक पैटर्न था जिसे मैं ढूंढ रहा था।

बस इस कमांड का उपयोग करें और अपनी babel.cfg फ़ाइल से एक के बाद "__" को प्रतिस्थापित करें।

संपादित करें: यह आपके gettext()

0

आप में कुप्पी के रूप में वैश्विक एक वस्तु बना सकते हैं के बजाय अपने स्वयं के कीवर्ड का उपयोग करें और gettext के साथ इसका अनुवाद

g.i18n = { 
    'Casa' : lazy_gettext('Home'), 
    'Auto' : lazy_gettext('Car'), 
    'Persona' : lazy_gettext('Person') 
} 

फिर एक चर के रूप में जोड़ने के लिए अनुमति देता

<script> 
    var i18n = {{ g.i18n | tojson }} 
</script> 

और जे एस में इसका इस्तेमाल करते हैं:

var labelTranslate = { 
        Casa: i18n.Casa, 
        Persona: i18n.Persona, 
        Auto: i18n.Auto 
       }; 
0

आप वास्तव में जावास्क्रिप्ट में gettext का उपयोग कर सकते हैं।

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

यह पीओ/एमओ फाइलें पढ़ सकता है या आप इसके बजाय कस्टम जेएसओएन फाइल आयात कर सकते हैं।

this filethis project का एक पूर्ण उदाहरण के लिए देखें।

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