10

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

4

1 に答える 1

12

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()を呼び出す関数の名前空間のようです。
  • stop()、message()、warning()、packupStartupMessage()もxgettext2potによって検出されます。gettext()のsprintfのようなバリアントとして利用可能なgettextf()関数もあります。
  • 標準のxgettextユーティリティはR構文をサポートしていないようであり、tools :: xgettext2potを使用する必要があるため、メッセージコンテキスト(pgettext())、printf-を示すフラグなど、いくつかの点が標準のアプローチから外れます。文字列のように、.potファイルを手動で変更せずに翻訳者(xgettext -cによって抽出)のコード内コメントを書き込む可能性があります。
于 2012-07-22T22:32:57.200 に答える