---
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.

E.g. to extend `Plume` with default names in French:

```{r}
PlumeFr <- R6::R6Class(
  classname = "PlumeFr",
  inherit = Plume,
  private = list(
    plume_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 overwrite the default arguments of some methods to match your language. I recommend doing it in the `public` argument of the class definition. For the purpose of this example, I'll use the `set()` method instead. For example, to change `divider` and `sep_last` to ` : ` and ` et ` in `get_contributions()`:

```{r}
PlumeFr$set("public", "get_contributions", function(
  roles_first = TRUE,
  by_author = FALSE,
  alphabetical_order = FALSE,
  dotted_initials = TRUE,
  literal_names = FALSE,
  divider = " : ",
  sep = ", ",
  sep_last = " et "
) {
  super$get_contributions(
    roles_first, by_author, alphabetical_order, dotted_initials,
    literal_names, divider, sep, sep_last
  )
})
```

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