---
title: "Translations"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{translations}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

## Verbs

Not all dplyr verbs are implemented within duckplyr.
For unsupported verbs, duckplyr automatically falls back to dplyr.
See `?not-supported` for a list of verbs for which duckplyr does not provide a method.

See the [reference index](https://duckplyr.tidyverse.org/reference/index.html) for a list of verbs with corresponding duckplyr methods.

Refer to [our contributing guide](https://duckplyr.tidyverse.org/CONTRIBUTING.html#new-translations-for-functions) to learn how to suggest the addition of a new verb.


## Functions within verbs

For all functions used in dplyr verbs, translations must be provided. 

As of now, here are the translations provided:

- Parentheses: `(` (`?Paren`)

- Comparison operators: `==`, `>`, `!=`, `<`, `>=`, `<=` (`?Comparison`)

- Basic arithmetics: `+`, `/`, `-`, `*` (`?Arithmetic`)

- Math functions: `log10()`, `log()`, `abs()`

- Logical operators: `!`, `&`, `|`

- Branching and conversion: `is.na()`, `dplyr::if_else()`, `as.integer()`, `strftime()`

- String manipulation: `grepl()`, `substr()`

- Date manipulation: `lubridate::hour()`, `lubridate::minute()`, `lubridate::second()`, `lubridate::wday()`

- Aggregation

    - `sum()`, `dplyr::n()`, `dplyr::n_distinct()`
    - `mean()`, `median()`, `sd()`
    - `min()`, `max()`
    - `any()`
    - `dplyr::first()`, `dplyr::last()`, `dplyr::nth()`

- Ranking

    - `dplyr::row_number()`
    - `rank()`, `dplyr::min_rank()`, `dplyr::dense_rank()`
    - `dplyr::percent_rank()`, `dplyr::cume_dist()`
    - `dplyr::ntile()`

- Shifting: `dplyr::lag()`, `dplyr::lead()`

- Special cases

    - `$` (`?Extract`) is implemented if the LHS is `.data` or `.env`
    - `%in%` (`?match`) is implemented if the RHS is a constant with up to 100 values
    - `dplyr::desc()` is only implemented in the context of `dplyr::arrange()`
    - `suppressWarnings()` is a no-op

Refer to [our contributing guide](https://duckplyr.tidyverse.org/CONTRIBUTING.html#new-translations-for-functions) to learn how to contribute new translations.
