[
https://issues.apache.org/jira/browse/ARROW-11700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Neal Richardson resolved ARROW-11700.
-------------------------------------
Resolution: Fixed
Issue resolved by pull request 9717
[https://github.com/apache/arrow/pull/9717]
> [R] Internationalize error handling in tidy eval
> ------------------------------------------------
>
> Key: ARROW-11700
> URL: https://issues.apache.org/jira/browse/ARROW-11700
> Project: Apache Arrow
> Issue Type: New Feature
> Components: R
> Reporter: Neal Richardson
> Assignee: Neal Richardson
> Priority: Minor
> Labels: pull-request-available
> Fix For: 4.0.0
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> We have
> {code}
> tryCatch(eval_tidy(expr, mask), error = function(e) {
> # Look for the cases where bad input was given, i.e. this would fail
> # in regular dplyr anyway, and let those raise those as errors;
> # else, for things not supported by Arrow return a "try-error",
> # which we'll handle differently
> msg <- conditionMessage(e)
> # TODO: internationalization?
> if (grepl("object '.*'.not.found", msg)) {
> stop(e)
> }
> if (grepl('could not find function ".*"', msg)) {
> stop(e)
> }
> invisible(structure(msg, class = "try-error", condition = e))
> })
> {code}
> and tests for this behavior, but the tests are skipped because they only
> match correctly in an English locale because these base R messages are
> translated.
> We can generate these regular expressions dynamically by triggering the R
> errors on a known nonexistent object:
> {code}
> > tryCatch(X_____X, error = function(e) conditionMessage(e))
> [1] "object 'X_____X' not found"
> > tryCatch(X_____X(), error = function(e) conditionMessage(e))
> [1] "could not find function \"X_____X\""
> > sub("X_____X", ".*", tryCatch(X_____X, error = function(e)
> > conditionMessage(e)))
> [1] "object '.*' not found"
> {code}
> And this will respect i18n:
> {code}
> > Sys.setenv(LANGUAGE="FR_fr")
> > sub("X_____X", ".*", tryCatch(X_____X, error = function(e)
> > conditionMessage(e)))
> [1] "objet '.*' introuvable"
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)