2012-05-26 31 views
9

Bir R betiğini çevirmek için gettext gibi bir şey kullanmak mümkün mü? Öyleyse nasıl? Değilse, başka seçeneklerim var mı?gettext kullanarak R betiğinin çevirisi

+0

"Çevir" ile ne demek istiyorsun? – Subs

+0

Demek istediğim İngilizcede yazılmış dizelerim var. Bunları bir şekilde işaretlemem, ayrı dosyaya çıkarmam, Rusçaya çevirmem gerekiyor. Ve bir parametre ile betik çalıştırarak - ingilizce mesajları ve diğer - Rusça olanları görüntülerdi. Sadece gettext çalıştığı gibi :) – Shark

+1

'? Gettext' – Andrie

cevap

10

Temel :: gettext/ngettext, base :: bindtextdomain ve tools :: xgettext2pot işlevlerini kullanabilirsiniz. Örneğin
: tools::xgettext2pot("/my/dir", "/my/translation/dir/pot/R-myProgram.pot") sonra msginit kullanın msgfmt, vb oluşturmak için:

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

Sonra bu işlevi supposing olan yolu "/my/dir/R/myfile.R" kullanımıdır bir dosya içinde bulunmaktadır .mo dosyası /my/translation/dir/fr/LC_MESSAGES/R-myProgram.mo. myFunction(), yerel ayarınız Fransızca ise "Merhaba" yerine "Bonjour" yazmalıdır.

diğer noktaları bir çift: xgettext2pot proje standart R paketidir varsayar ve sadece R/alt dizin içindeki * .R dosyaları arar gibi

  • görünüyor.
  • domain argüman varsayılan olarak işlev çağırarak gettext()
  • durağı(), mesaj(), uyarı() ve packupStartupMessage() ayrıca xgettext2pot tarafından tespit edilir ve ad gibi görünüyor. Ayrıca gettext() 'in sprintf benzeri bir varyantı olarak mevcut gettextf() işlevi de vardır.
  • Standart xgettext yardımcı programı R sözdizimini desteklemediğinden ve araç gereçlerinden birini kullanması gerektiğinden, :: xgettext2pot, ileti bağlamları (pgetxt()), bayraklar gibi standart yaklaşımdan birkaç şey özlenecektir. printf-benzeri dizeleri ve çeviricilerin (xgettext-c ile ayıklanan) in-code yorumlarını el ile değiştirmeden yazabilir.
+0

Yerel ayarlarımı 'sys.getlocale ("LC_All", "fr") 'ile Fransızca olarak ayarlarsam sadece çeviri 'msstr' geri almak yok. hala hepiniz merhaba. Neden? –