2012-05-26 15 views
9

का उपयोग कर आर स्क्रिप्ट का अनुवाद आर आर स्क्रिप्ट का अनुवाद करने के लिए गेटटेक्स्ट जैसे कुछ का उपयोग करना संभव है। यदि हां, तो कैसे? यदि नहीं, तो मेरे पास अन्य विकल्प क्या हैं?गेटटेक्स्ट

+0

"अनुवाद" से आपका क्या मतलब है? – Subs

+0

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

+1

'gettext' – Andrie

उत्तर

10

आप आधार :: gettext/ngettext, base :: bindtextdomain और tools :: xgettext2pot फ़ंक्शंस का उपयोग कर सकते हैं।
उदाहरण के लिए: tools::xgettext2pot("/my/dir", "/my/translation/dir/pot/R-myProgram.pot") तो msginit उपयोग करते हैं, msgfmt, आदि एक बनाने के लिए:

myFunction <- function() 
{ 
    bindtextdomain("R-myProgram","/my/translation/dir") 
    gettext("Hello",domain="R-myProgram") 
} 

फिर, इस समारोह मान एक फ़ाइल जिसका पथ "/my/dir/R/myfile.R" इस्तेमाल होता है अंदर है .mo फ़ाइल /my/translation/dir/fr/LC_MESSAGES/R-myProgram.mo। अगर आपका लोकेल फ्रेंच है तो myFunction() को "हैलो" के बजाय "बोनजोर" प्रिंट करना चाहिए।

अन्य बिंदुओं के एक जोड़े:

  • ऐसा लगता है xgettext2pot मान लिया गया है अपनी परियोजना के लिए एक मानक आर पैकेज है और केवल * आर आर/उपनिर्देशिका अंदर फ़ाइलों के लिए लगता है कि।
  • domain तर्क डिफ़ॉल्ट रूप से फ़ंक्शन को कॉल gettext()
  • स्टॉप(), संदेश(), चेतावनी() और packupStartupMessage() भी xgettext2pot द्वारा पता लगाया जाता है की नाम स्थान हो रहा है। Gettextf() फ़ंक्शन भी gettext() के स्प्रिंटफ-जैसी संस्करण के रूप में उपलब्ध है।
  • चूंकि मानक xgettext उपयोगिता आर वाक्यविन्यास का समर्थन नहीं करती है, और चूंकि किसी को उपकरण :: xgettext2pot का उपयोग करना पड़ता है, इसलिए कुछ चीजें मानक दृष्टिकोण से चूक जाएंगी, जैसे संदेश संदर्भ (pgettext()), झंडे printf-like स्ट्रिंग्स और अनुवादकों के लिए इन-कोड टिप्पणियों को लिखने की संभावना (xgettext -c द्वारा निकाला गया) हाथ से .pot फ़ाइल को संशोधित किए बिना।
+0

यदि मैंने अपना लोकेल 'sys.getlocale ("LC_All", "fr")' फ्रेंच 'के साथ सेट किया है। अभी अनुवादित 'msstr' वापस नहीं मिलता है। अभी भी सभी नमस्ते। ऐसा क्यों है? –