Check for cracked messages in C/C++ sources
Source:R/check_untranslated_src.R
check_untranslated_src.Rd
Diagnose the C/C++ messages in a package to discover untranslated messages
Value
A data.table
with columns call
, file
,
line_number
, and replacement
summarizing the results.
replacement
is NA
at this time, i.e., no replacement is
provided.
Details
This diagnostic looks for literal char
arrays passed to messaging
functions (as identified by translate_package()
) which are not
marked for translation (by tagging them for translation with _
or
N_
macros). These strings cannot be translated until they are so
marked.
See also
translate_package()
, update_pkg_po()
Examples
pkg <- file.path(system.file(package = 'potools'), 'pkg')
# copy to a temporary location to be able to read/write/update below
tmp_pkg <- file.path(tempdir(), "pkg")
dir.create(tmp_pkg)
file.copy(pkg, dirname(tmp_pkg), recursive = TRUE)
#> [1] TRUE
# first, extract message data
message_data = get_message_data(
tmp_pkg,
custom_translation_functions = list(src = "ReverseTemplateMessage:2")
)
#> Getting R-level messages...
#> Getting src-level messages...
# now, diagnose the messages for any untranslated messages in C/C++
check_untranslated_src(message_data)
#> call
#> <char>
#> 1: ReverseTemplateMessage(n, "Reversing a vector with %d elements\\n")
#> file line_number replacement
#> <char> <int> <char>
#> 1: reverse_int.c 19 <NA>
# cleanup
unlink(tmp_pkg, recursive = TRUE)
rm(pkg, tmp_pkg, message_data)