Skip to content

Commit 3d62dc3

Browse files
committed
translation links knitr compatible
1 parent de27098 commit 3d62dc3

File tree

1 file changed

+33
-20
lines changed

1 file changed

+33
-20
lines changed

vignettes/_translation_links.R

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,36 @@
11
# build a link list of alternative languages (may be character(0))
22
# idea is to look like 'Other languages: en | fr | de'
3-
.write.translation.links <- function(fmt) {
4-
url = "https://rdatatable.gitlab.io/data.table/articles"
5-
path = dirname(litedown::get_context("input"))
6-
if (basename(path) == "vignettes") {
7-
lang = "en"
8-
} else {
9-
lang = basename(path)
10-
path = dirname(path)
11-
}
12-
translation = dir(path,
13-
recursive = TRUE,
14-
pattern = glob2rx(litedown::get_context("input"))
15-
)
16-
transl_lang = ifelse(dirname(translation) == ".", "en", dirname(translation))
17-
block = if (!all(transl_lang == lang)) {
18-
linked_transl = sprintf("[%s](%s)", transl_lang, file.path(url, sub("(?i)\\.Rmd$", ".html", translation)))
19-
linked_transl[transl_lang == lang] = lang
20-
sprintf(fmt, paste(linked_transl, collapse = " | "))
21-
} else ""
22-
litedown::raw_text(block)
3+
.write.translation.links <- function() {
4+
url = "https://rdatatable.gitlab.io/data.table/articles"
5+
# this guard is needed because pkgdown::build_article does not use litedown
6+
# https://github.com/yihui/knitr/issues/926#issuecomment-68503962
7+
knitr = isTRUE(getOption('knitr.in.progress'))
8+
if (knitr) {
9+
path = knitr::current_input(TRUE)
10+
i18n_msg = knitr::opts_current$get("i18n_msg")
11+
} else {
12+
path = litedown::get_context("input")
13+
i18n_msg = litedown::reactor("i18n_msg")
14+
}
15+
path_dir = dirname(path)
16+
if (basename(path_dir) == "vignettes") {
17+
lang = "en"
18+
} else {
19+
lang = basename(path_dir)
20+
path_dir = dirname(path_dir) # might be "vignettes"
21+
}
22+
translation = dir(path_dir, recursive = TRUE, pattern = glob2rx(path))
23+
transl_lang = dirname(translation)
24+
transl_lang[transl_lang == "."] = "en"
25+
if (any(transl_lang != lang)) {
26+
link_path = file.path(url, sub("(?i)\\.Rmd$", ".html", translation))
27+
linked_transl = sprintf("[%s](%s)", transl_lang, link_path)
28+
linked_transl[transl_lang == lang] = lang
29+
block = sprintf(i18n_msg, paste(linked_transl, collapse = " | "))
30+
} else {
31+
block = ""
32+
}
33+
#if (knitr) block else litedown::raw_text(block)
34+
cat(block)
2335
}
36+
.write.translation.links()

0 commit comments

Comments
 (0)