gettextのようなものを使用してRスクリプトを翻訳することは可能ですか?もしそうなら、どのように?そうでない場合、他にどのようなオプションがありますか?
質問する
1338 次
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 に答える