---
title: "Translations"
output: rmarkdown::html_vignette
description: > 
  If your documentation is written in a language other than English, you can 
  automatically translate the text generated by pkgdown by setting the `lang`
  field. If your language isn't currently supported, we'll show you how you can
  provide translations.
vignette: >
  %\VignetteIndexEntry{Translations}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

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

If your documentation (`.Rd` and `.Rmd`) is written in a language other than English, declare it by setting setting `lang` to the [language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language:

``` yaml
lang: fr
```

This will be used to set the language of the web page and to translate the English words that pkgdown generates on your site.
Current available translations are:

-   `ca`: Catalan
-   `de`: German
-   `dk`: Danish
-   `es`: Spanish
-   `fr`: French
-   `ko`: Korean
-   `pt`: Portuguese
-   `tr`: Turkish
-   `zh_CN`: Chinese (simplified)

As you can see, most language codes are two letters, but if a language has multiple variants, it gets a longer form which can be used to disambiguate the options. For example, Chinese can use one of two forms: simplified (used in China and Singapore) or traditional (used in Taiwan and Hong Kong). Another example would be providing specific French Canadian translations by using code `fr_CN`.

## Translations

Translations are contributed by community members so if your language is not currently available, you could be the one to add it! 

To get started, first check the [pkgdown issues](https://github.com/r-lib/pkgdown/issues) to see if anyone has filed an existing issue. If so, the person who filed the issue might make for a great collaborator 😀.

Next, install [potools](https://michaelchirico.github.io/potools/) and [usethis](https://usethis.r-lib.org):

```{r}
#| eval: false
install.packages(c("potools", "usethis"))
```

You'll then need to familiarise yourself with the basics of [translations with potools](https://michaelchirico.github.io/potools/articles/translators.html) and [creating pull requests](https://usethis.r-lib.org/articles/pr-functions.html) with usethis.

If you don't already know it, you'll need to look up the ISO 639-1 abbreviation for [your language](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). In the examples below, I'll pretend I'm providing translations for Zulu, which has code `zu`.

Start by initialising a pull request:

```{r}
#| eval: false
usethis::pr_init("translation-zu")
```

Then create the translation file by running `potools::po_create("zu")`, open `po/R-zu.po`, and starting filling in the translations. 

If you have access to chatGPT or similar, you can try prepopulating the translations, with a prompt something like thii:

> You are an R developer who is fluent in English and Zulu. You love to do careful, high quality translations in your spare time. Complete the following po file for the R pkgdown package (which creates websites for R packages) by supplying translations for Zulu. Use inclusive gender forms where possible.

Then copy and paste the complete contents of the `.po` file .

You can check your work by adding `lang: zu` to your `_pkgdown.yml` then running:

```{r}
#| eval: false
potools::po_compile()
devtools::load_all()
build_site("~/path/to/your/site")
```

Once you're happy with your work, make sure to compile the changes:

```{r}
#| eval: false
potools::po_compile()
```

Then commit your changes to Git and submit your pull request for review:

```{r}
#| eval: false
usethis::pr_push()
```
