---
title: "Working in other languages"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Working in other languages}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

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

If you work in a language other than English, you can extend plume classes with default names in your desired language. plume provides `set_default_names()` to help you set new default names.

For example, to extend `Plume` with default names in French:

```{r}
PlumeFr <- R6::R6Class(
  classname = "PlumeFr",
  inherit = Plume,
  private = list(
    names = set_default_names(
      initials = "initiales",
      literal_name = "nom_complet",
      corresponding = "correspondant",
      given_name = "prénom",
      family_name = "nom",
      email = "courriel",
      phone = "téléphone"
    )
  )
)
```

```{r}
PlumeFr$new(encyclopedists_fr)
```

You can also override the default arguments of some methods to match your language. Expanding on the example above, we can add a new `get_contributions()` method to replace the default arguments of the `divider` and `sep_last` parameters:

```{r}
PlumeFr <- R6::R6Class(
  classname = "PlumeFr",
  inherit = Plume,
  private = list(
    names = set_default_names(
      initials = "initiales",
      literal_name = "nom_complet",
      corresponding = "correspondant",
      given_name = "prénom",
      family_name = "nom",
      email = "courriel",
      phone = "téléphone"
    )
  ),
  public = list(
    get_contributions = function(
      roles_first = TRUE,
      by_author = FALSE,
      alphabetical_order = FALSE,
      literal_names = FALSE,
      divider = " : ",
      sep = ", ",
      sep_last = " et "
    ) {
      super$get_contributions(
        roles_first = roles_first,
        by_author = by_author,
        alphabetical_order = alphabetical_order,
        literal_names = literal_names,
        divider = divider,
        sep = sep,
        sep_last = sep_last
      )
    }
  )
)
```

```{r}
aut <- PlumeFr$new(
  encyclopedists_fr,
  roles = c(supervision = "Supervision", rédaction = "Rédaction")
)
aut$get_contributions()
```
