2012-05-26 14 views
9

gettextのようなものを使ってRスクリプトを翻訳することは可能ですか?もしそうなら、どうですか?そうでない場合は、私には他にどのようなオプションがありますか?gettextを使ったRスクリプトの翻訳

+0

「翻訳する」とはどういう意味ですか? – Subs

+0

私はそれに英語で書かれた文字列があることを意味します。私はそれらを何らかの形でマークし、別のファイルに抽出して、ロシア語に翻訳する必要があります。また、1つのパラメータでスクリプトを実行することによって、英語メッセージを表示し、他のロシア語メッセージも表示します。 gettextと同様に:) – Shark

+1

'?gettext'を見てください – Andrie

答えて

10

base :: gettext/ngettext、base :: bindtextdomain、およびtools :: xgettext2pot関数を使用できます。例えば

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

そして、この関数を想定すると、そのパス「/my/dir/R/myfile.R」を使用することであるファイル内にある:tools::xgettext2pot("/my/dir", "/my/translation/dir/pot/R-myProgram.pot")は次に作成する等msginit、msgfmtを使用.moファイル/my/translation/dir/fr/LC_MESSAGES/R-myProgram.mo。あなたのロケールがフランス語の場合、myFunction()は "Hello"ではなく "Bonjour"を表示するようになりました。

他のポイントのカップル:xgettext2potプロジェクトは、標準的なRパッケージであり、唯一のR /サブディレクトリ内の* .Rファイルを検索を前提と似

  • に思えます。
  • domain引数はデフォルトでは機能の呼び出しのgettext()
  • 停止()、メッセージ()、警告()とpackupStartupMessageは()もxgettext2potによって検出されたの名前空間のようです。 gettext()のsprintfのような変形として利用可能なgettextf()関数もあります。
  • 標準のxgettextユーティリティはR構文をサポートしていないようで、tools :: xgettext2potを使用しなければならないので、メッセージコンテキスト(pgettext())、フラグprintfのような文字列を示し、.potファイルを手作業で変更することなく翻訳者(xgettext -cによって抽出された)のコード内コメントを書く可能性があります。
+0

私のロケールを 'sys.getlocale(" LC_All "、" fr ")'でフランス語Iに設定すると翻訳された 'msstr'を戻してください。まだすべてのこんにちは。何故ですか? –

関連する問題