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
cevap
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.
Yerel ayarlarımı 'sys.getlocale ("LC_All", "fr") 'ile Fransızca olarak ayarlarsam sadece çeviri 'msstr' geri almak yok. hala hepiniz merhaba. Neden? –
"Çevir" ile ne demek istiyorsun? – Subs
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
'? Gettext' – Andrie