2017-10-04 7 views
2

の出力を複数の自然言語で出力できる文書を作成しようとしています。 data.frameからの翻訳。knitr/rmarkdownを使用して複数の自然言語(data.frameから)で出力を生成する

data.frameには、各言語の列と各行の同じテキストの翻訳が含まれている必要があります。

EN <- c('title', 'author', 'a sentence') 
FR <- c('titre', 'auteur', 'une phrase') 
translation <- data.frame(EN, FR, stringsAsFactors = FALSE) 

抽出されたテキストをフォーマットする必要があります。

# [desired code here] 

タイトルとrmarkdownタイトルを生成する必要があります。

EDIT:理想的には私たちが

答えて

1

次のようにあなたはこれを行うことができます。(もっとラテックスのオプションのためのPSを参照してください)

はなぜ? YAMLヘッダは:)行ずつ評価さ - here

--- 
params: 
    lang: EN 
lang: "`r switch(params$lang, DE = 'de-DE', EN = 'en-US')`" 
output: pdf_document 
toc: 1 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = FALSE) 
lswitch <- function(lang, ...){ 
    switch(lang, ..., stop("No translation privided")) 
} 
``` 

# `r lswitch(params$lang, DE = "Dies ist der Titel", EN = "this is the title")` 

`r lswitch(params$lang, 
DE = "Die folgende Abbildung zeigt die Funktion $f(x) = x^2$", 
EN = "The following plot shows the function $f(x) = x^2$" 
) 
` 

```{r plot1_cap, include=FALSE} 
plot1_cap <- lswitch(params$lang, DE = "Tolle Abbildung", EN = "Great plot") 
``` 
```{r plot1, fig.cap= plot1_cap} 
plot(seq(-5, 5, length.out = 50), seq(-5, 5, length.out = 50)^2, 
    type = "l", xlab = "x", ylab = "f(x)") 
``` 

# `r lswitch(params$lang, DE = "Zweiter Titel", EN = "Second Title")` 

`r lswitch(params$lang, 
DE = "Zweiter Abschnitt", 
EN = "Second paragraph" 
) 
` 

これは、あなたが

--- 
params: 
    lang: DE 
lang: "`r switch(params$lang, DE = 'de-DE', EN = 'en-US')`" 
output: pdf_document 
toc: 1 
--- 

にYAMLヘッダを変更する場合は、

を得る

enter image description here

での結果を見ます

enter image description here

PS:もっとラテックスオプション

あなたがあなたのYAMLヘッダに以下を追加することができ、特定の言語パッケージを使用する場合は:例えばのために

--- 
header-includes: 
    - \usepackage[ngerman]{babel} 
--- 

https://stackoverflow.com/a/29163496/3301344を参照してください) http://felixfan.github.io/RMarkdown-Chinese-PDF/

+0

私は実際に線のことを理解しましたが、これを「rownames」と組み合わせて使用​​する考えは非常にエレガントです –

+0

YAMLフロントエンドで言語を定義できるとすばらしいことでしょう。問題、これを行う方法に関するアイデア? –

+0

ここでそれを行う方法を見てください:http://rmarkdown.rstudio.com/developer_parameterized_reports.html – Rentrop

-1

あなたはここに質問を開いたとして、私はまた、あなたに私の答えを追加YAMLの事項前で言語を指定することができるだろう。チャンク内のcatresults='asis'で使用して、翻訳された言語の表とフォーマットされたチャンクの内容を比較できます。
この方法では、元のテキストがチャンク(rstudio)で強調表示され、長いコードで簡単にテキストを見つけることができます。インラインRcodeを使用すると、すべてが同じ色になり、見やすくなります。

```{r TransRef} 
# Translation reference 
tr.orig <- translation[,"EN"] 
``` 


```{r MyFirstParagraph, results='asis', verbatim=TRUE} 
cat(' 
# ', translation[tr.orig == "title", lang], ' 

', translation[tr.orig == "a sentence", lang], ' 

- ', translation[tr.orig == "author", lang], ' 
', sep = "") 
``` 
関連する問題